1703878583
主页的HTML代码如下。把这段代码放入index.html页面:
1703878584
1703878585
1703878586
1703878587
1703878588
1703878589
1703878590
1703878591
1703878592
1703878593
1703878594
上述程序代码无须解释说明。现在开始编写JavaScript代码,以真正地部署合约、投资合约和显示合约信息。全部相关代码如下。将这段代码放入main.js文件:
1703878595
1703878596
1703878597
1703878598
1703878599
1703878600
1703878601
1703878602
1703878603
1703878604
1703878605
1703878606
1703878607
1703878608
上述代码的执行过程如下:
1703878609
1703878610
1)分别在投注合约ByteCode和投注合约ABI变量中存储合约、字节码和ABI。
1703878611
1703878612
2)创建一个Web3实例,它连接到测试网节点。
1703878613
1703878614
3)定义getAJAXobject函数(一个跨浏览器兼容的函数),它返回一个AJAX对象。
1703878615
1703878616
4)向第一张表添加submit事件监听器(event listener),用于部署合约。在事件监听器的回调函数中,通过传送matchId向getURL终点发出请求,获得加密的查询字符串。然后生成数据部署合约。接着找出gasRequired。使用函数对象的estimateGas方法计算所需的gas,也可以使用web3.eth.estimateGas方法(它们的实参不同),即在前面的方法里不需要传送交易数据。记住,如果函数调用引发异常,estimateGas将返回区块gas上限。随后计算随机数。这里使用getTransactionCount方法,而非我们之前学习的实际过程。这样做是为了简化代码。最后创建原始交易,签名并广播。一旦挖出交易,就显示合约地址。
1703878617
1703878618
5)接下来向第二张表添加submit事件监听器,用于投注合约。这里生成交易的数据部分,计算所需的gas,创建原始交易,签名并广播。在计算交易所需的gas时,从账户地址和value对象属性传送合约地址,因为它是函数调用,而且gas随着value、from地址和合约地址的变化而变化。记住,在计算合约函数调用所需的gas时,可以传送to、from和value属性,因为gas取决于这些数值。
1703878619
1703878620
6)最后让第三张表上有submit事件监听器,即显示已投注合约的信息。
1703878621
1703878622
1703878623
1703878624
1703878626
区块链项目开发指南 7.4.4 测试客户端
1703878627
1703878628
至此,创建投注平台的操作就完成了,下面开始进行测试。测试之前,应确保测试网区块链已经被完全下载,并在寻找新进入的区块。
1703878629
1703878630
使用之前创建的钱包服务,生成三个账户。用http://faucet.ropsten.be:3001/在每个账户中添加一个以太币。
1703878631
1703878632
然后在Initial目录中运行node app.js,接着访问http://localhost:8080/matches,即可看到图7-1所示的界面。
[
上一页 ]
[ :1.703878583e+09 ]
[
下一页 ]