1703878927
1703878928
1703878930
区块链项目开发指南 8.3.2 建立测试环境
1703878931
1703878932
在开始学习truffle-contract API之前,需要建立测试环境,这将有助于我们在学习的同时测试代码。
1703878933
1703878934
首先,运行testrpc—networkId 10命令,即运行代表network ID 10的ethereumjs-testrpc节点。出于开发目的,我们随机选取了network ID 10,但是用户可以随意选择任何其他网络ID。只需要确保不是1,因为主网总是用于真实的App,而不是用于开发和测试。
1703878935
1703878936
然后创建一个HTML文件,放入如下代码:
1703878937
1703878938
1703878939
1703878940
1703878941
下载web3.min.js和truffle-contract.min.js。truffle-contract浏览器在https://github.com/trufflesuite/truffle-contract/tree/master/dist创建内容。
1703878942
1703878943
1703878944
1703878945
1703878947
区块链项目开发指南 8.3.3 truffle-contract API
1703878948
1703878949
现在来看truffle-contract API。基本上,truffle-contract有两个API,即合约抽象API和合约实例API。合约抽象API代表关于合约(或者库)的多种信息,例如ABI、未接入的字节码、在多个以太坊网络中的地址(如果合约已部署)、对于多个以太坊网络它所依赖的库地址(如果已部署)和合约事件。抽象API是对所有合约抽象都存在的一系列函数。合约实例代表一个特定网络中的已部署合约。实例API是对合约实例可用的API。它是以Solidity源文件中的可用函数为基础动态创建的。特定合约的合约实例是从代表同一合约的合约抽象中创建的。
1703878950
1703878951
1.合约抽象API
1703878952
1703878953
合约抽象API是truffle-contract与web3.js的不同之处。其特点如下:
1703878954
1703878955
·它将根据连接的网络自动抓取默认数值,例如库地址、合约地址等,因此用户不需要每次换网络时修改源代码。
1703878956
1703878957
·可以选择只在特定网络中监听特定事件。
1703878958
1703878959
·把库实时接入合约的字节码变得容易。在学习了如何使用API之后,用户会发现其他优点。
1703878960
1703878961
在学习如何创建合约抽象及其方法之前,先写一个样本合约(代表合约抽象)。示例样本合约的代码如下:
1703878962
1703878963
1703878964
1703878965
1703878966
该合约使用StringLib库把uint转换成bytes32,把bytes32转换成uint。String-Lib在主网络上的0xcca8353a18e7ab7b3d094ee1f9ddc91bdf2ca6a4地址可用,但是在其他网络上,我们需要部署它以测试合约。在进行下一步操作之前,使用Browser Solidity编译它,因为将需要ABI和字节码。
1703878967
1703878968
现在创建一个代表Sample合约的合约抽象和StringLib库。相关代码如下,将此段代码放入HTML文件中:
1703878969
1703878970
1703878971
1703878972
1703878973
1703878974
1703878975
1703878976
[
上一页 ]
[ :1.703878927e+09 ]
[
下一页 ]