打字猴:1.703877276e+09
1703877276 其中,new方法的调用是异步的,所以如果成功创建和广播交易,回调函数将被调用两次。第一次,广播交易之后调用它;第二次,挖出交易之后调用它。如果不提供回调函数,则proof变量的address属性被设成undefined。挖出交易之后,address属性将被设置。
1703877277
1703877278 在proof合约中,没有构造函数,但是如果有构造函数,则构造函数实参应当放在new方法的开头。传送的对象包含from地址、合约字节码和使用的gas上限。这三个属性必须存在,否则无法创建交易。该对象可以有被传送给sendTransaction方法的对象所展示的属性,但是这里,data是合约字节码,且to属性被忽略。
1703877279
1703877280 可以用at方法引用一个已经部署的合约。相关代码如下:
1703877281
1703877282
1703877283
1703877284
1703877285 现在让我们看看如何发送交易以调用合约方法。相关代码如下:
1703877286
1703877287
1703877288
1703877289
1703877290 这里调用方法同名对象的sendTransaction方法。被传送给这个sendTransaction方法的对象属性与web3.eth.sendTransaction()相同,只是data和to属性被忽略了。
1703877291
1703877292 如果想调用节点本地的方法,而非创建交易并广播,则可使用call而非sendTransaction。示例如下:
1703877293
1703877294
1703877295
1703877296
1703877297 有时必须发现找到调用方法所需的gas,这样可以决定是否调用。web3.eth.estimateGas可用于此目的。然而,直接使用web3.eth.estimateGas()要求生成交易,因此可以使用方法同名对象的estimateGas()方法。示例如下:
1703877298
1703877299
1703877300
1703877301
1703877302
1703877303 如果只想发送一些以太币到合约,而不调用任何方法,则可以使用web3.eth.sendTransaction方法。
1703877304
1703877305
1703877306
1703877307
1703877308 区块链项目开发指南 [:1703875335]
1703877309 区块链项目开发指南 4.1.9 检索和监听合约事件
1703877310
1703877311 现在让我们看看如何监听一个合约事件。监听事件很重要,因为通过交易调用方法的结果通常是以触发事件的形式返回的。
1703877312
1703877313
1703877314 在了解如何检索和监听事件之前,我们需要学习事件的索引参数。一个事件最多有三个参数可以有被索引(indexed)属性。该属性用于提示节点对它进行索引,这样应用客户端可以用匹配返回值来检索事件。如果不使用indexed属性,则必须检索所有事件,并筛选出需要的那些事件。例如,可以这样编写logFileAddedStatus事件:
1703877315
1703877316
1703877317
1703877318
1703877319 下面是给出了监听合约事件的一个示例:
1703877320
1703877321
1703877322
1703877323
1703877324
1703877325
[ 上一页 ]  [ :1.703877276e+09 ]  [ 下一页 ]