crypto-packages/binancephpsdk

此存储库包含与Binance DEX交互的PHP-SDK。它主要由纯PHP代码支持。

dev-master 2024-03-24 06:02 UTC

This package is not auto-updated.

Last update: 2024-09-22 08:12:17 UTC


README

(从 hammadtq/binance-php-sdk 分支,移植到composer) 此存储库包含与 Binance DEX 交互的PHP-SDK。它主要由纯PHP代码支持。Binance DEX支持的方法文档在这里:http://docs.binance.org

安装

目前,您需要克隆存储库并将其包含到项目中。将来,它将通过composer提供。(添加:通过composer可用)

composer require arnezt/binancephpsdk

SDK依赖于secp256k1-php。目前没有简单的安装secp256k1-php扩展的方法,您需要自己编译它。

安装步骤

(首先检查(Ubuntu/Debian) phpize 是否可用:sudo apt install php7.x-dev)

libsecp256k1

git clone git@github.com:bitcoin-core/secp256k1 && \
cd secp256k1 &&                                    \
./autogen.sh &&                                    \
./configure --enable-experimental --enable-module-{ecdh,recovery} && \
 make &&                                           \
 sudo make install &&                              \
 cd ../

secp256k1-php

git clone git@github.com:Bit-Wasp/secp256k1-php && \
cd secp256k1-php/secp256k1 &&                      \
phpize &&                                          \ 
./configure --with-secp256k1 &&                    \  
make && sudo make install &&                       \
cd ../../

(可选) - 默认启用扩展!

如果您是重度用户,可以将此行添加到您的php.ini文件中,用于php-cli、apache2或php-fpm。

extension=secp256k1.so

(添加:检查php配置文件(使用fpm时为php7.x-fpm),将x替换为您的php版本)

$ sudo nano /etc/php/7.x/mods-available/secp256k1.ini

添加:extension=secp256k1.so

$ sudo ln -s /etc/php/7.x/mods-available/secp256k1.ini /etc/php/7.x/fpm/conf.d/20-secp256k1.ini (用于fpm)

$ sudo ln -s /etc/php/7.x/mods-available/secp256k1.ini /etc/php/7.x/cli/conf.d/20-secp256k1.ini (用于cli)

此存储库是在Mac OSX上使用PHP版本 7.15.3 制作的。您也需要一个版本高于7。建议使用原生PHP安装,而不是使用XAMPP或WAMPP,以利用secp256k1-php。此外,您可能还需要gmp扩展。

为了处理大数字,SDK使用brick/math精度库。请考虑在处理基于区块链的数字时使用此库或其他基于bcmathgmp的解决方案。

示例

注意:请参阅 问题跟踪器 以了解SDK中目前可用的方法。

您可以在src文件夹中找到完整的 示例脚本

以下是一些与SDK交互的示例

密钥存储重新加载和获取私钥

$keystoreData = '{paste keystore data here or read from a file}';
$keystore= new Keystore();
$keystore->RestoreKeyStore($keystoreData, "{keystore-password}", "tbnb");
$privateKey = $keystore->getPrivateKey();

类似地,如果您想查看私钥的十六进制表示,只需使用此方法

$keystore->getPrivateKey()->getHex();

一个典型的转账请求看起来像这样

$bncClient = new BncClient('https://data-seed-pre-2-s1.binance.org');
$bncClient->initChain();
$bncClient->chooseNetwork("testnet"); // or this can be "mainnet"
$bncClient->setPrivateKey($privateKey);
$response = $bncClient->transfer("tbnb1yqyppmev2m4z96r4svwtjq8eqp653pt6elq33r", "tbnb1hgm0p7khfk85zpz5v0j8wnej3a90w709zzlffd", 0.001, "BNB", "3423423");

下单

$response = $bncClient->NewOrder("BNB_USDT.B-B7C", 1, 0.001, 1, 0, 1); //Symbol, side, price, quantity, sequence, timeinfore

Amino编码

SDK使用Google proto3生成器来支持Binance的aminor编码/解码。如果您向proto文件添加新消息,请在根目录下运行以下命令以运行生成器

protoc --proto_path=proto --php_out=./gen proto/dex.proto

密钥生成

密钥生成也通过secp256k1-php库支持。

一旦生成地址,请确保向其发送金额,因为Binance DEX在没有收到地址上的交易之前不会创建账户。

$keystore = new Keystore();
$privateKey = Byte::init($keystore->createPrivateKey());
$publicKey = $keystore->createPublicKey($privateKey);
$address = $keystore->publicKeyToAddress($publicKey, 'tbnb');

支持的方法

  • 密钥对生成
  • 带有助记词的密钥对生成
  • 密钥库重新加载
  • 获取JSON-RPC函数
  • 获取API函数
  • 交易:转账、新建订单、取消订单、冻结代币、解冻代币、发行、铸币、销毁、HTLT、HTLT存入、HTLT提取、HTLT退款、时间锁定、时间重锁定、时间解锁

非常感谢https://github.com/hammadtq/binance-php-sdk提供了原始源代码。