1703877358
web3.js提供web3.eth.filter API以检索和监听事件。用户可以使用这个API,但是处理事件的Event方法更简便。要想学习更多内容,请访问https://github.com/ethereum/wiki/wiki/JavaScript-API#web3ethfilter。
1703877359
1703877360
1703877361
1703877362
1703877364
区块链项目开发指南 4.2 为所有权合约创建客户端
1703877365
1703877366
在前一章中,我们为所有权合约编写了Solidity代码;在前一章和本章中,我们学习了web3.js的有关知识和使用web3.js调用合约的方法。现在是时候为智能合约创建客户端了,这样方便用户使用。
1703877367
1703877368
创建一个客户端,用户从中选择一个文件,输入所有者细节,然后按下Submit按钮广播交易,用文件哈希和所有者的细节调用合约的set方法。一旦交易被成功广播,将显示交易哈希。用户还能够选择一个文件,并从智能合约中得到所有者的细节。客户端还将实时显示最新挖出的set交易。
1703877369
1703877370
我们将在前端使用sha1.js获取文件哈希,使用jQuery进行DOM操纵,并使用Bootstrap 4创建一个反应层(responsive layout)。在后端使用express.js和web3.js。我们将使用socket.io,这样不需要前端间隔相等的时间请求数据,后端就把最近挖出的交易推到前端。
1703877371
1703877372
1703877373
web3.js可以在前端使用,但对于应用是个安全漏洞。也就是说,我们在使用存储在geth中的账户,并把geth节点URL显示给前端,这将使存储在那些账户中的以太币面临风险。
1703877374
1703877375
1703877376
1703877377
1703877379
区块链项目开发指南 4.2.1 项目结构
1703877380
1703877381
在本章的练习文件中,将发现两个目录:Final和Initial。Final包含项目的最终源代码,而Initial包含可以用于迅速创建应用的空的源代码文件和库。
1703877382
1703877383
1703877384
为了测试Final目录,需要在其中运行npm install,并把app.js中硬编码的合约地址替换为在部署合约之后得到的合约地址。然后,使用Final目录中的node app.js命令运行该应用。
1703877385
1703877386
在Initial目录中,将发现一个public目录和两个文件(app.js和package.json)。package.json包含应用的后端相关内容,app.js包含应用的后端源代码。
1703877387
1703877388
public目录包含与前端相关的文件。在public/css中会发现bootstrap.min.css,它是Bootstrap库;在public/html中会发现index.html,所应用的HTML代码放在这里;在public/js目录中将发现jQuery、sha1和socket.io的JS文件。在public/js中还会发现一个main.js文件,应用的前端JS代码放在这里。
1703877389
1703877390
1703877391
1703877392
1703877394
区块链项目开发指南 4.2.2 创建后端
1703877395
1703877396
先创建App后端。首先,在initial目录中运行npm install,为后端安装所需相关内容。其次,在进行后端编码之前,确保geth运行时启用rpc。如果是在私有网络上运行geth,要确保启用mining。最后,确保账户0存在并被解锁。可以在私有网络上运行geth,这时需要启用rpc和mining,并解锁账户0:
1703877397
1703877398
1703877399
1703877400
1703877401
编码开始前最后需要做的一件事是,使用在前一章中见到的代码部署所有权合约,并复制合约地址。
1703877402
1703877403
现在创建一个单独的服务端,它将为浏览器提供HTML,并接收socket.io连接:
1703877404
1703877405
1703877406
1703877407
[
上一页 ]
[ :1.703877358e+09 ]
[
下一页 ]