作者 | 金戈
出品|数字掘金(技术开发:13006685996微电同号)
BscTool开发包适用于为PHP应用快速增加对币安智能链BNB/BEP20数字资产的支持能力, 即支持使用自有BSC区块链节点的应用场景,也支持基于BSC区块链官方节点API服务的 轻量级部署场景。
BscTool开发包主要包含以下特性:
- 支持BSC区块链原生BNB转账交易及余额查询
- 支持BSC链上智能合约的部署与交互,支持BEP20代币转账交易及到账跟踪
- 支持BSC链上交易的离线签名,避免泄露私钥
- 支持使用自有节点或第三方节点,例如BSC官方提供的公共节点
BscTool软件包运行在?Php 7.1+?环境下,当前版本1.0.0,主要类/接口及关系如下图所示:
bsctool uml
BscTool的主要代码文件清单如下:
代码文件说明bsc.php/src/Kit.phpBscTool开发包入口类bsc.php/src/Bep20.phpBEP20智能合约封装类bsc.php/src/SmartContract.phpBSC智能合约封装类bsc.php/src/Credential.phpBSC区链上身份标识类,用于交易签名bsc.php/src/NodeClient.phpBSC节点协议封装类bsc.php/src/Callback.phpPhp回调辅助类bsc.php/src/Helper.php杂项辅助函数集contracts/WizToken.sol示例BEP20代币合约bin/build-contracts.sh合约编译脚本工具demo/credential-demo.php演示如何创建新的BSC账号或导入已有私钥demo/bnb-demo.php演示BNB转账及余额查询demo/bep20-demo.php演示BEP20代币转账及余额查询demo/bep20-event-demo.php演示BEP20代币到账监听demo/deploy-contract-demo.php演示代码,智能合约的部署vendor第三方依赖包目录composer.jsoncomposer配置文件
在使用示例代码之前,请按照实际情况设置
demo/config.php
中的以下配置信息:
- NETWORK:要接入的区块链网络,可选:mainNet - BSC主链, testNet - BSC测试链
- ALICE_ADDR:demo程序使用的主测试账号,该账号将用于部署代币合约、执行BNB及BEP20代币转账交易等操作,因此 需要有一定数量的BNB余额。
- ALICE_SK:主测试账号对应的私钥
?
demo/credential-demo.php
演示了如何使用BscTool创建新的BSC链上地址,或者导入已有私钥重建账号。
在终端进入演示代码目录,执行如下命令:
<code class="hljs ruby" style="box-sizing: border-box; font-size: inherit; padding: 10px; font-family: Menlo, Monaco, Consolas, quotCourier Newquot, monospace; color: rgb(51, 51, 51); background: rgb(248, 248, 248); border-radius: 0px; white-space: pre-wrap; display: block; overflow-x: auto;">~$ cd ~<span class="hljs-regexp" style="box-sizing: border-box; color: rgb(0, 153, 38);">/bsctool/demo</span>~<span class="hljs-regexp" style="box-sizing: border-box; color: rgb(0, 153, 38);">/bsctool/demo</span>$ php credential-demo.php</code>
执行结果如下:
demo/bnb-demo.php
演示了如何使用BscTool实现BNB转账和余额查询。
在终端进入演示代码目录,执行如下命令:
<code class="hljs ruby" style="box-sizing: border-box; font-size: inherit; padding: 10px; font-family: Menlo, Monaco, Consolas, quotCourier Newquot, monospace; color: rgb(51, 51, 51); background: rgb(248, 248, 248); border-radius: 0px; white-space: pre-wrap; display: block; overflow-x: auto;">~$ cd ~<span class="hljs-regexp" style="box-sizing: border-box; color: rgb(0, 153, 38);">/bsctool/demo</span>~<span class="hljs-regexp" style="box-sizing: border-box; color: rgb(0, 153, 38);">/bsctool/demo</span>$ php bnb-demo.php</code>
执行结果如下:
demo/deploy-contract-demo.php
演示了如何使用BscTool部署EVM智能合约。
在终端进入演示代码目录,执行如下命令:
<code class="hljs ruby" style="box-sizing: border-box; font-size: inherit; padding: 10px; font-family: Menlo, Monaco, Consolas, quotCourier Newquot, monospace; color: rgb(51, 51, 51); background: rgb(248, 248, 248); border-radius: 0px; white-space: pre-wrap; display: block; overflow-x: auto;">~$ cd ~<span class="hljs-regexp" style="box-sizing: border-box; color: rgb(0, 153, 38);">/bsctool/demo</span>~<span class="hljs-regexp" style="box-sizing: border-box; color: rgb(0, 153, 38);">/bsctool/demo</span>$ php deploy-contract-demo.php</code>
执行结果如下:
demo/bep20-demo.php
演示了如何使用BscTool实现BEP20代币转账和余额查询等操作。
在终端进入演示代码目录,执行如下命令:
<code class="hljs ruby" style="box-sizing: border-box; font-size: inherit; padding: 10px; font-family: Menlo, Monaco, Consolas, quotCourier Newquot, monospace; color: rgb(51, 51, 51); background: rgb(248, 248, 248); border-radius: 0px; white-space: pre-wrap; display: block; overflow-x: auto;">~$ cd ~<span class="hljs-regexp" style="box-sizing: border-box; color: rgb(0, 153, 38);">/bsctool/demo</span>~<span class="hljs-regexp" style="box-sizing: border-box; color: rgb(0, 153, 38);">/bsctool/demo</span>$ php bep2<span class="hljs-number" style="box-sizing: border-box; color: teal;">0</span>-demo.php</code>
执行结果如下:
demo/bep20-event-demo.php
演示了如何使用BscTool的合约事件查询功能 实现BEP20代币的到账跟踪。
在终端进入演示代码目录,执行如下命令:
<code class="hljs ruby" style="box-sizing: border-box; font-size: inherit; padding: 10px; font-family: Menlo, Monaco, Consolas, quotCourier Newquot, monospace; color: rgb(51, 51, 51); background: rgb(248, 248, 248); border-radius: 0px; white-space: pre-wrap; display: block; overflow-x: auto;">~$ cd ~<span class="hljs-regexp" style="box-sizing: border-box; color: rgb(0, 153, 38);">/bsctool/demo</span>~<span class="hljs-regexp" style="box-sizing: border-box; color: rgb(0, 153, 38);">/bsctool/demo</span>$ php bep2<span class="hljs-number" style="box-sizing: border-box; color: teal;">0</span>-event-demo.php</code>
执行结果如下:
Kit类是BscTool开发包的入口,使用这个类可以快速实现如下功能:
- BNB转账与余额查询
- BEP20代币转账、授权、余额查询等
Kit实例化需要传入
NodeClient
对象和
Credential
对象,这两个 参数分别封装了BSC节点提供的API、以及进行交易签名的用户身份信息。
例如,下面的代码创建一个接入BSC主链的Kit实例,并使用 指定的私钥进行交易签名:
<code class="hljs php" style="box-sizing: border-box; font-size: inherit; padding: 10px; font-family: Menlo, Monaco, Consolas, quotCourier Newquot, monospace; color: rgb(51, 51, 51); background: rgb(248, 248, 248); border-radius: 0px; white-space: pre-wrap; display: block; overflow-x: auto;"><span class="hljs-comment" style="box-sizing: border-box; color: rgb(153, 153, 136); font-style: italic;">//use bsctool\Kit;</span><span class="hljs-comment" style="box-sizing: border-box; color: rgb(153, 153, 136); font-style: italic;">//use bsctool\NodeClient;</span><span class="hljs-comment" style="box-sizing: border-box; color: rgb(153, 153, 136); font-style: italic;">//use bsctool\Credential;</span>$kit=<span class="hljs-keyword" style="box-sizing: border-box; color: rgb(51, 51, 51); font-weight: 700;">new</span> Kit( NodeClient::mainNet(), <span class="hljs-comment" style="box-sizing: border-box; color: rgb(153, 153, 136); font-style: italic;">//接入主链</span> Credential::fromKey(<span class="hljs-string" style="box-sizing: border-box; color: rgb(221, 17, 68);">'0x87c12d....d435'</span>) <span class="hljs-comment" style="box-sizing: border-box; color: rgb(153, 153, 136); font-style: italic;">//使用指定私钥</span>);</code>
使用Kit对象的
transfer()
方法进行BNB转账,例如发送0.1 BNB:
<code class="hljs php" style="box-sizing: border-box; font-size: inherit; padding: 10px; font-family: Menlo, Monaco, Consolas, quotCourier Newquot, monospace; color: rgb(51, 51, 51); background: rgb(248, 248, 248); border-radius: 0px; white-space: pre-wrap; display: block; overflow-x: auto;"><span class="hljs-comment" style="box-sizing: border-box; color: rgb(153, 153, 136); font-style: italic;">//use bsctool\Kit;</span>$to=<span class="hljs-string" style="box-sizing: border-box; color: rgb(221, 17, 68);">'0x90F8bf6...0e7944Ea8c9C1'</span>; <span class="hljs-comment" style="box-sizing: border-box; color: rgb(153, 153, 136); font-style: italic;">//转账目标地址</span>$amount=bn(<span class="hljs-string" style="box-sizing: border-box; color: rgb(221, 17, 68);">'100000000000000000'</span>); <span class="hljs-comment" style="box-sizing: border-box; color: rgb(153, 153, 136); font-style: italic;">//转账金额,按最小单位</span>$txid=$kit-gttransfer($to,$amount); <span class="hljs-comment" style="box-sizing: border-box; color: rgb(153, 153, 136); font-style: italic;">//提交BNB转账交易</span><span class="hljs-keyword" style="box-sizing: border-box; color: rgb(51, 51, 51); font-weight: 700;">echo</span> <span class="hljs-string" style="box-sizing: border-box; color: rgb(221, 17, 68);">'txid=gt '</span> . $txid . PHP_EOL; <span class="hljs-comment" style="box-sizing: border-box; color: rgb(153, 153, 136); font-style: italic;">//显示交易ID</span></code>
注意:需要将金额转换为最小单位,由于BNB的小数位数是18, 因此 0.1 BNB=100000000000000000 最小单位。
使用
balanceOf()
方法查询指定地址的BNB余额,例如:
<code class="hljs php" style="box-sizing: border-box; font-size: inherit; padding: 10px; font-family: Menlo, Monaco, Consolas, quotCourier Newquot, monospace; color: rgb(51, 51, 51); background: rgb(248, 248, 248); border-radius: 0px; white-space: pre-wrap; display: block; overflow-x: auto;">$addr=<span class="hljs-string" style="box-sizing: border-box; color: rgb(221, 17, 68);">'0x90F8bf6...0e7944Ea8c9C1'</span>; <span class="hljs-comment" style="box-sizing: border-box; color: rgb(153, 153, 136); font-style: italic;">//要查询的BSC链上地址</span>$balance=$kit-gtbalanceOf($addr); <span class="hljs-comment" style="box-sizing: border-box; color: rgb(153, 153, 136); font-style: italic;">//查询BNB余额,按最小单位</span><span class="hljs-keyword" style="box-sizing: border-box; color: rgb(51, 51, 51); font-weight: 700;">echo</span> <span class="hljs-string" style="box-sizing: border-box; color: rgb(221, 17, 68);">'balance=gt '</span> . $balance . PHP_EOL; <span class="hljs-comment" style="box-sizing: border-box; color: rgb(153, 153, 136); font-style: italic;">//显示BNB余额</span></code>
使用Kit对象的
bep20()
方法获取指定BEP20代币合约实例,然后调用合约 的
transfer()
方法进行BEP20代币转账。例如,下面的代码 指定地址间转账123.4567 BUSD-T(代币合约地址:0x55d398326f99059ff775485246999027b3197955):
<code class="hljs php" style="box-sizing: border-box; font-size: inherit; padding: 10px; font-family: Menlo, Monaco, Consolas, quotCourier Newquot, monospace; color: rgb(51, 51, 51); background: rgb(248, 248, 248); border-radius: 0px; white-space: pre-wrap; display: block; overflow-x: auto;"><span class="hljs-comment" style="box-sizing: border-box; color: rgb(153, 153, 136); font-style: italic;">//use bsctool\Kit;</span>$to=<span class="hljs-string" style="box-sizing: border-box; color: rgb(221, 17, 68);">'TDN3QY85Jft3RwgyatjRNmrwRmwkn8qwqx'</span>; <span class="hljs-comment" style="box-sizing: border-box; color: rgb(153, 153, 136); font-style: italic;">//转账目标地址</span>$amount=bn(<span class="hljs-string" style="box-sizing: border-box; color: rgb(221, 17, 68);">'123456700000000000000'</span>); <span class="hljs-comment" style="box-sizing: border-box; color: rgb(153, 153, 136); font-style: italic;">//转账BEP20代币数量</span>$contractAddr=<span class="hljs-string" style="box-sizing: border-box; color: rgb(221, 17, 68);">'0x55d398326f99059ff775485246999027b3197955'</span> <span class="hljs-comment" style="box-sizing: border-box; color: rgb(153, 153, 136); font-style: italic;">//BUSD-T代币合约的部署地址</span>$txid=$kit-gtbep20($contractAddr) -gttransfer($to,$amount); <span class="hljs-comment" style="box-sizing: border-box; color: rgb(153, 153, 136); font-style: italic;">//转账BEP20代币</span><span class="hljs-keyword" style="box-sizing: border-box; color: rgb(51, 51, 51); font-weight: 700;">echo</span> <span class="hljs-string" style="box-sizing: border-box; color: rgb(221, 17, 68);">'txid=gt '</span> . $txid . PHP_EOL; <span class="hljs-comment" style="box-sizing: border-box; color: rgb(153, 153, 136); font-style: italic;">//显示转账交易ID</span></code>
使用
bep20()
方法获取指定的BEP20代币合约实例,然后调用合约 的
balanceOf()
方法查询代币余额。例如,下面的代码查询指定地址 的BUSD-T代币余额:
<code class="hljs php" style="box-sizing: border-box; font-size: inherit; padding: 10px; font-family: Menlo, Monaco, Consolas, quotCourier Newquot, monospace; color: rgb(51, 51, 51); background: rgb(248, 248, 248); border-radius: 0px; white-space: pre-wrap; display: block; overflow-x: auto;"><span class="hljs-comment" style="box-sizing: border-box; color: rgb(153, 153, 136); font-style: italic;">//use bsctool\Kit;</span>$contractAddr=<span class="hljs-string" style="box-sizing: border-box; color: rgb(221, 17, 68);">'0x55d398326f99059ff775485246999027b3197955'</span> <span class="hljs-comment" style="box-sizing: border-box; color: rgb(153, 153, 136); font-style: italic;">//BUSD-T代币合约的部署地址</span>$balance=$kit-gtbep20($contractAddr) -gtbalanceOf(<span class="hljs-string" style="box-sizing: border-box; color: rgb(221, 17, 68);">'0x90F8bf6...0e7944Ea8c9C1'</span>); <span class="hljs-comment" style="box-sizing: border-box; color: rgb(153, 153, 136); font-style: italic;">//查询地址0x90F8...的代币余额</span><span class="hljs-keyword" style="box-sizing: border-box; color: rgb(51, 51, 51); font-weight: 700;">echo</span> <span class="hljs-string" style="box-sizing: border-box; color: rgb(221, 17, 68);">'balance=gt '</span> . $balance . PHP_EOL; <span class="hljs-comment" style="box-sizing: border-box; color: rgb(153, 153, 136); font-style: italic;">//显示代币余额</span></code>
使用
bep20()
方法获取指定BEP20代币合约实例,然后调用 合约实例的
getTransferEvents()
方法查询指定条件的转账事件。
可以使用
getTransferEvents()
方法跟踪指定地址的到账状态。 例如查询地址0x90F8...在最新区块的BUSD-T代币到账事件:
<code class="hljs php" style="box-sizing: border-box; font-size: inherit; padding: 10px; font-family: Menlo, Monaco, Consolas, quotCourier Newquot, monospace; color: rgb(51, 51, 51); background: rgb(248, 248, 248); border-radius: 0px; white-space: pre-wrap; display: block; overflow-x: auto;"><span class="hljs-comment" style="box-sizing: border-box; color: rgb(153, 153, 136); font-style: italic;">//use bsctool\Kit;</span>$contractAddr=<span class="hljs-string" style="box-sizing: border-box; color: rgb(221, 17, 68);">'0x55d398326f99059ff775485246999027b3197955'</span> <span class="hljs-comment" style="box-sizing: border-box; color: rgb(153, 153, 136); font-style: italic;">//BUSD-T代币合约的部署地址</span>$events=$kit-gtbep20($contractAddr) -gtgetTransferEvents( <span class="hljs-comment" style="box-sizing: border-box; color: rgb(153, 153, 136); font-style: italic;">//查询到账事件</span> [], <span class="hljs-comment" style="box-sizing: border-box; color: rgb(153, 153, 136); font-style: italic;">//转出账号,空数组表示不要求特定的转出账号 </span> [<span class="hljs-string" style="box-sizing: border-box; color: rgb(221, 17, 68);">'0x90F8bf6...0e7944Ea8c9C1'</span>], <span class="hljs-comment" style="box-sizing: border-box; color: rgb(153, 153, 136); font-style: italic;">//接收账号,仅查询地址0x90F8...的到账事件</span> <span class="hljs-string" style="box-sizing: border-box; color: rgb(221, 17, 68);">'latest'</span>, <span class="hljs-comment" style="box-sizing: border-box; color: rgb(153, 153, 136); font-style: italic;">//查询起始区块号,latest表示使用最新区块</span> <span class="hljs-string" style="box-sizing: border-box; color: rgb(221, 17, 68);">'latest'</span> <span class="hljs-comment" style="box-sizing: border-box; color: rgb(153, 153, 136); font-style: italic;">//查询结束区块号,latest表示使用最新区块</span> ); <span class="hljs-keyword" style="box-sizing: border-box; color: rgb(51, 51, 51); font-weight: 700;">foreach</span>($events <span class="hljs-keyword" style="box-sizing: border-box; color: rgb(51, 51, 51); font-weight: 700;">as</span> $event){ <span class="hljs-keyword" style="box-sizing: border-box; color: rgb(51, 51, 51); font-weight: 700;">echo</span> <span class="hljs-string" style="box-sizing: border-box; color: rgb(221, 17, 68);">'block=gt '</span> . $event-gtblockNumber . PHP_EOL; <span class="hljs-comment" style="box-sizing: border-box; color: rgb(153, 153, 136); font-style: italic;">//事件发生区块号</span> <span class="hljs-keyword" style="box-sizing: border-box; color: rgb(51, 51, 51); font-weight: 700;">echo</span> <span class="hljs-string" style="box-sizing: border-box; color: rgb(221, 17, 68);">'from=gt '</span> . $event-gtparams[<span class="hljs-string" style="box-sizing: border-box; color: rgb(221, 17, 68);">'from'</span>] . PHP_EOL; <span class="hljs-comment" style="box-sizing: border-box; color: rgb(153, 153, 136); font-style: italic;">//转出账号</span> <span class="hljs-keyword" style="box-sizing: border-box; color: rgb(51, 51, 51); font-weight: 700;">echo</span> <span class="hljs-string" style="box-sizing: border-box; color: rgb(221, 17, 68);">'to=gt '</span> . $event-gtparams[<span class="hljs-string" style="box-sizing: border-box; color: rgb(221, 17, 68);">'to'</span>] . PHP_EOL; <span class="hljs-comment" style="box-sizing: border-box; color: rgb(153, 153, 136); font-style: italic;">//转入账号</span> <span class="hljs-keyword" style="box-sizing: border-box; color: rgb(51, 51, 51); font-weight: 700;">echo</span> <span class="hljs-string" style="box-sizing: border-box; color: rgb(221, 17, 68);">'value=gt '</span> . $event-gtparams[<span class="hljs-string" style="box-sizing: border-box; color: rgb(221, 17, 68);">'value'</span>] . PHP_EOL; <span class="hljs-comment" style="box-sizing: border-box; color: rgb(153, 153, 136); font-style: italic;">//转账金额</span>}</code>
getTransferEvents()
方法返回的结果是一个事件对象数组,每个成员对象的主要字段 说明如下:
- blockHash:事件触发的区块哈希
- blockNumber:事件触发的区块号
- transactionHash:触发事件的交易ID
- address:事件触发的合约地址
- name:事件名称,例如转账事件的名称为:Transfer
- params:事件参数数组,例如转账事件包含以下三个参数:
- from:转出账号
- to:转入账号
- value:转账数量
在BscTool中,使用
Credential
对象表征BSC区块链中的一个用户身份,使用普通的 字符串表征BSC区块链中的一个地址,这两者的区别在于Credential包含了用户 的私钥信息,可以用来签名交易,因此需要保护。
使用Credential类的静态方法
create()
创建新账户。例如,下面的代码创建一个 新的账户并显示其私钥、公钥和地址:
<code class="hljs php" style="box-sizing: border-box; font-size: inherit; padding: 10px; font-family: Menlo, Monaco, Consolas, quotCourier Newquot, monospace; color: rgb(51, 51, 51); background: rgb(248, 248, 248); border-radius: 0px; white-space: pre-wrap; display: block; overflow-x: auto;"><span class="hljs-comment" style="box-sizing: border-box; color: rgb(153, 153, 136); font-style: italic;">//use bsctool\Credential;</span>$credential=Credential::create(); <span class="hljs-comment" style="box-sizing: border-box; color: rgb(153, 153, 136); font-style: italic;">//创建新账号</span><span class="hljs-keyword" style="box-sizing: border-box; color: rgb(51, 51, 51); font-weight: 700;">echo</span> <span class="hljs-string" style="box-sizing: border-box; color: rgb(221, 17, 68);">'private key=gt '</span> . $credential-gtgetPrivateKey() . PHP_EOL; <span class="hljs-comment" style="box-sizing: border-box; color: rgb(153, 153, 136); font-style: italic;">//显示私钥</span><span class="hljs-keyword" style="box-sizing: border-box; color: rgb(51, 51, 51); font-weight: 700;">echo</span> <span class="hljs-string" style="box-sizing: border-box; color: rgb(221, 17, 68);">'public key=gt '</span> . $credential-gtgetPublicKey() . PHP_EOL; <span class="hljs-comment" style="box-sizing: border-box; color: rgb(153, 153, 136); font-style: italic;">//显示公钥</span><span class="hljs-keyword" style="box-sizing: border-box; color: rgb(51, 51, 51); font-weight: 700;">echo</span> <span class="hljs-string" style="box-sizing: border-box; color: rgb(221, 17, 68);">'address=gt '</span> . $credential-gtgetAddress() . PHP_EOL; <span class="hljs-comment" style="box-sizing: border-box; color: rgb(153, 153, 136); font-style: italic;">//显示地址</span></code>
可以使用静态方法
fromKey()
导入已有的私钥来实例化Credential。 例如下面的代码导入已有私钥并显示地址:
<code class="hljs php" style="box-sizing: border-box; font-size: inherit; padding: 10px; font-family: Menlo, Monaco, Consolas, quotCourier Newquot, monospace; color: rgb(51, 51, 51); background: rgb(248, 248, 248); border-radius: 0px; white-space: pre-wrap; display: block; overflow-x: auto;"><span class="hljs-comment" style="box-sizing: border-box; color: rgb(153, 153, 136); font-style: italic;">//use bsctool\Credential;</span>$credential=Credential::fromKey(<span class="hljs-string" style="box-sizing: border-box; color: rgb(221, 17, 68);">'0x7889...023a'</span>); <span class="hljs-comment" style="box-sizing: border-box; color: rgb(153, 153, 136); font-style: italic;">//导入已有私钥</span><span class="hljs-keyword" style="box-sizing: border-box; color: rgb(51, 51, 51); font-weight: 700;">echo</span> <span class="hljs-string" style="box-sizing: border-box; color: rgb(221, 17, 68);">'address=gt '</span> . $credential-gtgetAddress() . PHP_EOL; <span class="hljs-comment" style="box-sizing: border-box; color: rgb(153, 153, 136); font-style: italic;">//显示相应地址</span></code>
NodeClient类封装了BSC节点的RPC访问协议。实例化NodeClient时,需要指定要连接 的节点URL,例如使用本地的全节点:
<code class="hljs php" style="box-sizing: border-box; font-size: inherit; padding: 10px; font-family: Menlo, Monaco, Consolas, quotCourier Newquot, monospace; color: rgb(51, 51, 51); background: rgb(248, 248, 248); border-radius: 0px; white-space: pre-wrap; display: block; overflow-x: auto;"><span class="hljs-comment" style="box-sizing: border-box; color: rgb(153, 153, 136); font-style: italic;">//use bsc\NodeClient;</span>$client=<span class="hljs-keyword" style="box-sizing: border-box; color: rgb(51, 51, 51); font-weight: 700;">new</span> NodeClient(<span class="hljs-string" style="box-sizing: border-box; color: rgb(221, 17, 68);">'http://localhost:8545'</span>);</code>
当使用BSC官方节点时,NodeClient类也提供列两个静态函数
mainNet()
和
testNet()
,分别 用于接入官方提供的主链节点和测试链节点。
例如,下面的代码是等效的:
<code class="hljs php" style="box-sizing: border-box; font-size: inherit; padding: 10px; font-family: Menlo, Monaco, Consolas, quotCourier Newquot, monospace; color: rgb(51, 51, 51); background: rgb(248, 248, 248); border-radius: 0px; white-space: pre-wrap; display: block; overflow-x: auto;"><span class="hljs-comment" style="box-sizing: border-box; color: rgb(153, 153, 136); font-style: italic;">//use bsctool\NodeClient;</span>$client=<span class="hljs-keyword" style="box-sizing: border-box; color: rgb(51, 51, 51); font-weight: 700;">new</span> NodeClient(<span class="hljs-string" style="box-sizing: border-box; color: rgb(221, 17, 68);">'https://bsc-dataseed.binance.org/'</span>);$tc=NodeClient::mainNet(); <span class="hljs-comment" style="box-sizing: border-box; color: rgb(153, 153, 136); font-style: italic;">//与上面等效</span>$tc=<span class="hljs-keyword" style="box-sizing: border-box; color: rgb(51, 51, 51); font-weight: 700;">new</span> NodeClient(<span class="hljs-string" style="box-sizing: border-box; color: rgb(221, 17, 68);">'https://data-seed-prebsc-1-s1.binance.org:8545/'</span>);$tc=NodeClient::testNet(); <span class="hljs-comment" style="box-sizing: border-box; color: rgb(153, 153, 136); font-style: italic;">//与上面等效</span></code>
注册有任何问题请添加 微信:MVIP619 拉你进入群
打开微信扫一扫
添加客服
进入交流群
发表评论