1703878889
1703878890
·返回每个同步的日志、交易收据和交易哈希。
1703878891
1703878892
在学习truffle-contract之前,需要知道它不允许使用存储以太坊节点之外的账户签署交易,也就是说,它没有类似于sendRawTransaction的东西。truffle-contract API假设DApp中的每个用户各自运行以太坊节点,且其账户都存储在那个节点中。事实上,DApp应该这样运行,因为如果DApp的每个客户端开始让用户创建和管理账户,那么用户管理这么多账户就成了问题。开发人员为他们创建的每个客户端每次都要开发一个钱包manager也是很痛苦的。现在的问题是客户端怎样才能知道用户在哪里以及用什么格式存储了账户。所以从概率角度出发,优选假设用户将账户存储在个人节点上,而且为了管理账户,它们使用以太坊钱包应用的东西。因为以太坊节点中存储的账户由以太坊节点自身签名,所以就不再需要sendRawTransaction了。每个用户需要有各自的节点,而不能分享节点,因为解锁一个账户时,对使用它的所有人都是开放的,这将使用户能盗窃其他人的以太币和用他人的账户进行交易。
1703878893
1703878894
1703878895
如果所使用的App要求用户包含自己的节点,并在该节点中管理账户,那就需要确保只有本地应用才能对该节点进行JSON-RPC调用,而不能让所有人都能调用。还要确保用户不会长期解锁账户,只要不需要账户,就应当立即锁定。
1703878896
1703878897
如果应用要求有创建和签署原始交易功能,则可以使用truffle-contract开发和测试智能合约。在应用中可以与合约交互,就像我们之前做的。
1703878898
1703878899
1703878900
1703878901
1703878903
区块链项目开发指南 8.3.1 安装和导入truffle-contract
1703878904
1703878905
在写本书时,truffle-contract API的最新版本是1.1.10。在导入truffle-contract之前,需要先导入web3.js,因为需要创建一个提供方处理truffle-contract API,这样truffle-contract将内部使用该提供方进行JSON-RPC调用。
1703878906
1703878907
在Node.js app中安装truffle-contract,只需在app目录中运行如下代码:
1703878908
1703878909
1703878910
1703878911
1703878912
然后使用如下代码导入:
1703878913
1703878914
1703878915
1703878916
1703878917
在浏览器中使用truffle-contract时,会在https://github.com/trufflesuite/truffle-contract仓库发现dist目录中的浏览器分配。
1703878918
1703878919
在HTML中,可以使用如下命令将它存入队列:
1703878920
1703878921
1703878922
1703878923
1703878924
这样将会有一个可用的TruffleContract全局变量。
1703878925
1703878926
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
[
上一页 ]
[ :1.703878889e+09 ]
[
下一页 ]