arnezt/binancephpsdk

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

v1.0 2020-12-27 13:45 UTC

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)是否已安装phpizesudo 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的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 提供了原始源代码。