arnezt / binancephpsdk
此仓库包含用于与Binance DEX交互的PHP-SDK。它主要由纯PHP代码支持。
Requires
- php: >=7.0
- bitwasp/bitcoin: ^1.0
- bitwasp/buffertools: ^0.5.7
- brick/math: ^0.8.14
- google/protobuf: ^3.11
- graze/guzzle-jsonrpc: ^3.2
- guzzlehttp/guzzle: ~6.0
- ramsey/uuid: ^4.0
This package is auto-updated.
Last update: 2024-09-29 05:49:01 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 精度库。请考虑在使用基于区块链的数字时使用此库或基于bcmath或gmp的其他解决方案。
示例
注意:请参阅 问题跟踪器 以了解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的Amino编码/解码。如果您在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 提供了原始源代码。