打字猴:1.703877338e+09
1703877338
1703877339 4)每一个事件由一个包含下列属性的对象代表。
1703877340
1703877341 ·args。一个带有来自事件的实参的对象。
1703877342
1703877343 ·event。用一个字符串表示事件名。
1703877344
1703877345 ·logIndex。用一个整数表示区块中的日志索引位置。
1703877346
1703877347 ·transactionIndex。用一个整数表示日志最初的交易索引位置。
1703877348
1703877349 ·transactionHash。用一个字符串表示日志最初的交易哈希。
1703877350
1703877351 ·address。用一个字符串表示日志最初的地址。
1703877352
1703877353 ·blockHash。用一个字符串表示日志所在区块的哈希。如待定,则为null。
1703877354
1703877355 ·blockNumber。日志所在区块的序号。如待定,则为null。
1703877356
1703877357
1703877358 web3.js提供web3.eth.filter API以检索和监听事件。用户可以使用这个API,但是处理事件的Event方法更简便。要想学习更多内容,请访问https://github.com/ethereum/wiki/wiki/JavaScript-API#web3ethfilter。
1703877359
1703877360
1703877361
1703877362
1703877363 区块链项目开发指南 [:1703875336]
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
1703877378 区块链项目开发指南 [:1703875337]
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
[ 上一页 ]  [ :1.703877338e+09 ]  [ 下一页 ]