1703877328
1703877329
1)调用一个合约实例的事件同名的方法获取事件对象。该方法用两个对象作为实参,用于筛选事件:
1703877330
1703877331
·第一个对象用索引返回数值筛选事件。例如,{‘valueA’:1,‘valueB’:[myFirstAddress,mySecondAddress]}。所有筛选数值都默认设置为null。这意味着它们将匹配该合约发出的任意类型事件。
1703877332
1703877333
·第二个对象可以包含三个属性,即fromBlock(搜索起始区块,默认为”latest”)、toBlock(搜索截至区块,默认为”latest”)和address(仅获取日志的地址列表;默认为合约地址)。
1703877334
1703877335
2)事件对象显示三种方法:get、watch和stopWatching。get用于获取区块范围内的所有事件。watch与get类似,但是它在获取事件后还监听变化。stopWatching可以用于停止监听变化。
1703877336
1703877337
3)合约实例的allEvents方法用于检索合约的所有事件。
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
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
[
上一页 ]
[ :1.703877328e+09 ]
[
下一页 ]