1、开发包概述
BscTool开发包主要包罗以下特征:
- 支持BSC区块链原生BNB转账买卖及余额查询
- 支持BSC链上智能合约的部署与交互,支持BEP20代币转账买卖及到账跟踪
- 支持BSC链上买卖的离线署名,制止泄露私钥
- 支持使用自有节点或第三方节点,例如BSC官方提供的公共节点
BscTool软件包运行在 Php 7.1+ 环境下,当前版本1.0.0,主要类/接口及关系如下图所示:
BscTool的主要代码文件清单见 http://sc.hubwiz.com/codebag/bsctool-php/
2、使用示例代码
在使用示例代码之前,请按照实际情况设置demo/config.php中的以下设置信息:
- NETWORK:要接入的区块链网络,可选:mainNet – BSC主链, testNet – BSC测试链
- ALICE_ADDR:demo程序使用的主测试账号,该账号将用于部署代币合约、执行BNB及BEP20代币转账买卖等操作,因此 需要有一定数目的BNB余额。
- ALICE_SK:主测试账号对应的私钥
2.1 BSC链上地址建立与回复
demo/credential-demo.php演示了如何使用BscTool建立新的BSC链上地址,或者导入已有私钥重修账号。
在终端进入演示代码目录,执行如下下令:
~$ cd ~/bsctool/demo~/bsctool/demo$ php credential-demo.php
执行效果如下:
2.2 BNB转账及余额查询
demo/bnb-demo.php演示了如何使用BscTool实现BNB转账和余额查询。
在终端进入演示代码目录,执行如下下令:
~$ cd ~/bsctool/demo~/bsctool/demo$ php bnb-demo.php
执行效果如下:
2.3 BSC智能合约部署
demo/deploy-contract-demo.php演示了如何使用BscTool部署EVM智能合约。
在终端进入演示代码目录,执行如下下令:
~$ cd ~/bsctool/demo~/bsctool/demo$ php deploy-contract-demo.php
执行效果如下:
2.4 BEP20代币转账及余额查询
demo/bep20-demo.php演示了如何使用BscTool实现BEP20代币转账和余额查询等操作。
在终端进入演示代码目录,执行如下下令:
~$ cd ~/bsctool/demo~/bsctool/demo$ php bep20-demo.php
执行效果如下:
2.5 BEP20代币到账跟踪
demo/bep20-event-demo.php演示了如何使用BscTool的合约事宜查询功效 实现BEP20代币的到账跟踪。
在终端进入演示代码目录,执行如下下令:
~$ cd ~/bsctool/demo~/bsctool/demo$ php bep20-event-demo.php
执行效果如下:
3、使用BscTool
Kit类是BscTool开发包的入口,使用这个类可以快速实现如下功效:
- BNB转账与余额查询
- BEP20代币转账、授权、余额查询等
3.1 Kit的实例化
Kit实例化需要传入NodeClient工具和Credential工具,这两个 参数划分封装了BSC节点提供的API、以及举行买卖署名的用户身份信息。
例如,下面的代码建立一个接入BSC主链的Kit实例,并使用 指定的私钥举行买卖署名:
//use bsctool\Kit;//use bsctool\NodeClient;//use bsctool\Credential;$kit = new Kit( NodeClient::mainNet(), //接入主链 Credential::fromKey('0x87c12d....d435') //使用指定私钥);
3.2 BNB转账及余额查询
使用Kit工具的transfer()方式举行BNB转账,例如发送0.1 BNB:
//use bsctool\Kit;$to = '0x90F8bf6...0e7944Ea8c9C1'; //转账目的地址$amount = bn('100000000000000000'); //转账金额,按最小单元$txid = $kit-gt;transfer($to,$amount); //提交BNB转账买卖echo 'txid =gt; ' . $txid . PHP_EOL; //显示买卖ID
注重:需要将金额转换为最小单元,由于BNB的小数位数是18, 因此 0.1 BNB = 100000000000000000 最小单元。
使用balanceOf()方式查询指定地址的BNB余额,例如:
$addr = '0x90F8bf6...0e7944Ea8c9C1'; //要查询的BSC链上地址$balance = $kit-gt;balanceOf($addr); //查询BNB余额,按最小单元echo 'balance =gt; ' . $balance . PHP_EOL; //显示BNB余额
3.3 BEP20代币转账
使用Kit工具的bep20()方式获取指定BEP20代币合约实例,然后挪用合约 的transfer()方式举行BEP20代币转账。例如,下面的代码 指定地址间转账123.4567 BUSD-T(代币合约地址:0x55d398326f99059ff775485246999027b3197955):
//use bsctool\Kit;$to = 'TDN3QY85Jft3RwgyatjRNmrwRmwkn8qwqx'; //转账目的地址$amount = bn('123456700000000000000'); //转账BEP20代币数目$contractAddr = '0x55d398326f99059ff775485246999027b3197955' //BUSD-T代币合约的部署地址$txid = $kit-gt;bep20($contractAddr) -gt;transfer($to,$amount); //转账BEP20代币echo 'txid =gt; ' . $txid . PHP_EOL; //显示转账买卖ID
3.4 BEP20代币余额查询
使用bep20()方式获取指定的BEP20代币合约实例,然后挪用合约 的balanceOf()方式查询代币余额。例如,下面的代码查询指定地址 的BUSD-T代币余额:
//use bsctool\Kit;$contractAddr = '0x55d398326f99059ff775485246999027b3197955' //BUSD-T代币合约的部署地址$balance = $kit-gt;bep20($contractAddr) -gt;balanceOf('0x90F8bf6...0e7944Ea8c9C1'); //查询地址0x90F8...的代币余额echo 'balance =gt; ' . $balance . PHP_EOL; //显示代币余额
3.5 BEP20代币到账跟踪
使用bep20()方式获取指定BEP20代币合约实例,然后挪用 合约实例的getTransferEvents()方式查询指定条件的转账事宜。
可以使用getTransferEvents()方式跟踪指定地址的到账状态。 例如查询地址0x90F8…在**区块的BUSD-T代币到账事宜:
//use bsctool\Kit;$contractAddr = '0x55d398326f99059ff775485246999027b3197955' //BUSD-T代币合约的部署地址$events = $kit-gt;bep20($contractAddr) -gt;getTransferEvents( //查询到账事宜 [], //转出账号,空数组示意不要求特定的转出账号 ['0x90F8bf6...0e7944Ea8c9C1'], //吸收账号,仅查询地址0x90F8...的到账事宜 'latest', //查询起始区块号,latest示意使用**区块 'latest' //查询竣事区块号,latest示意使用**区块 ); foreach($events as $event){ echo 'block =gt; ' . $event-gt;blockNumber . PHP_EOL; //事宜发生区块号 echo 'from =gt; ' . $event-gt;params['from'] . PHP_EOL; //转出账号 echo 'to =gt; ' . $event-gt;params['to'] . PHP_EOL; //转入账号 echo 'value =gt; ' . $event-gt;params['value'] . PHP_EOL; //转账金额}
getTransferEvents()方式返回的效果是一个事宜工具数组,每个成员工具的主要字段 说明如下:
- blockHash:事宜触发的区块哈希
- blockNumber:事宜触发的区块号
- transactionHash:触发事宜的买卖ID
- address:事宜触发的合约地址
- name:事宜名称,例如转账事宜的名称为:Transfer
- params:事宜参数数组,例如转账事宜包罗以下三个参数:
- from:转出账号
- to:转入账号
- value:转账数目
4、BSC区块链身份与地址示意
在BscTool中,使用Credential工具表征BSC区块链中的一个用户身份,使用通俗的 字符串表征BSC区块链中的一个地址,这两者的区别在于Credential包罗了用户 的私钥信息,可以用来署名买卖,因此需要珍爱。
使用Credential类的静态方式create()建立新账户。例如,下面的代码建立一个 新的账户并显示其私钥、公钥和地址:
//use bsctool\Credential;$credential = Credential::create(); //建立新账号echo 'private key =gt; ' . $credential-gt;getPrivateKey() . PHP_EOL; //显示私钥echo 'public key =gt; ' . $credential-gt;getPublicKey() . PHP_EOL; //显示公钥echo 'address =gt; ' . $credential-gt;getAddress() . PHP_EOL; //显示地址
可以使用静态方式fromKey()导入已有的私钥来实例化Credential。 例如下面的代码导入已有私钥并显示地址:
//use bsctool\Credential;$credential = Credential::fromKey('0x7889...023a'); //导入已有私钥echo 'address =gt; ' . $credential-gt;getAddress() . PHP_EOL; //显示响应地址
5、使用NodeClient
NodeClient类封装了BSC节点的RPC接见协议。实例化NodeClient时,需要指定要毗邻 的节点URL,例如使用内陆的全节点:
//use bsc\NodeClient;$client = new NodeClient('http://localhost:8545');
当使用BSC官方节点时,NodeClient类也提供列两个静态函数mainNet()和testNet(),划分 用于接入官方提供的主链节点和测试链节点。
例如,下面的代码是等效的:
//use bsctool\NodeClient;$client = new NodeClient('https://bsc-dataseed.binance.org/');$tc = NodeClient::mainNet(); //与上面等效$tc = new NodeClient('https://data-seed-prebsc-1-s1.binance.org:8545/');$tc = NodeClient::testNet(); //与上面等效
原文链接:http://sc.hubwiz.com/codebag/bsctool-php/
创新趋势看币安 这些年币安开创的行业先河
“创新趋势看币安”这句话已经被圈内公认了,2017年币安率先提出平台币模式、2019年币安引领了IEO潮流,作为第一个突出公链的交易所平台,引领了领域内的公链竞争,2020年币安更是不断突破着天花板:新币挖矿、币安智能链等均获得极大发展。 回顾币安三年来的
文章标题:币安智能链PHP开发包「BscTool」
文章链接:https://www.btchangqing.cn/198186.html
更新时间:2021年02月24日
本站大部分内容均收集于网络,若内容若侵犯到您的权益,请联系我们,我们将第一时间处理。