00:00
好,我们剩下的最后一个内容其实就是监听合约事件,呃,这个其实就是我们除了调用合约函数之外,那合约里边定义的事件怎么办呢?那我们当然也要有相应的方法去能监听到它。那合约里边的事件其实就类似于我们前面讲过的过滤器filter,所以我们同样也是可以设置过滤选项来监听的,比如说大家看这里给的这个例子就是它可以比方说my contract instance.my event就是直接在。合约的实例后面点自己定义的那个事件名称,就可以点my event,然后后边就是设置我们所谓的这个过滤选项,当然它这里设置的是一个就是topic啊,就是value a是23,它它这样去设置。
01:00
那大家可以看到下面监听这个事件的时候,怎么去监听呢?其实也非常的简单,就是点watch。直接这样就可以,呃,那后面还是同样的,就是跟上一个回调,在回调里边获取到我们这个事件的一个结果,这样就可以了。呃,所以同样啊,跟我们前面讲到的那个filter一样,前面这个我们是把它分成了两步,先定义一个事件event,然后再去启动它的这个监听的状态,同样我们可以把它整合在一起,那就是event,等于my contract contract。点my event,这是我们的定义,然后在后边直接跟上一个回调,那就相当于就是直接启动了它的监听,所以这就是平常,呃,应该也是就是经常用到的一个一个方法。
02:00
好,那我们现在就来在我们自己的这个合约上面来监听一下,好,呃,首先我们刚才的合约名字叫什么?是叫Co contract是吗?Contract不是my contract是吗?My contract instance是吧?哦,这样啊,这个好,我们看一下。呃,我得确认一下,我们刚才那个是。啊,不过没关系,我们现在只要是确定它那个上面有钱就可以啊,我们来看一下balances balances web3点ETH0。呃,我们就直接看看哦,他这个上面是有钱的对吧?好,那么我们现在可以定义一个my contract instance点我们那个事件叫什么名称来着。
03:13
呃,事件应该就叫做cent对吧,这是我们的事件名称,好,那么我们就点set里边,我们可以设置它的选项,那我们这里其实不用设置太多了,我们就直接。就就好了,或者我们判定吧。好,然后后边我们可以跟上回调。我们把回调写进去,这样的话,我们就已经启动了一个我们事件的监听器。
04:06
然后我们来看一下,呃,在这里我们还需要去触发它,要触发我们这样一个send操作的话,我们肯定是需要去调我们的send函数,对吧,那我们的send函数是。我们看一下三函数定义了哪几个输入参数呢?函数在哪里?这里。它有一个receiver,有一个amount,啊也是receiver和amount对吧?好,那么我们就receiver就定成一吧。Amount,它有300万,我们给他。23万这个应该是够的啊好,那接下来我们定义一个,我们的交易对象一定要有一个from,对吧,上次我们就是因为没有from导致报错COUNT0从它转出来。
05:20
好,这个send我们就不要回调了,直接这么发出去,好大家看到这个交易哈希已经发出来了,Submitted transaction,对吧,这是我们刚刚调用的这个。方法散方法,但是大家看现在。呃,诶,大家看我们这里是有两条输出的,对吧。大家说这两条输出这是什么?为什么会有两条输出呢?
06:00
是不是就是因为我们刚才还定义了一个事件监听器对吧?这前面的一个我们是用同步调用的方式,直接返回一个它的交易哈希,那后边这个呢,就是因为我们定义了事件监听器之后,因为我们定义的是喷DY,所以我们这个不需要挖矿,直接发布这个交易的时候就被他检测出来了,然后他就把我们的这个交易哈希列在这里了,所以大家可以看到它的这个行为啊。呃,那我们这样的话确实有点判断不清楚,那我们再把它改一下吧。呃,这个我们首先要把之前的这个停掉,停的时候呢,也比较简单,应该就是诶。我们好像没有定义这个它叫什么名字是吧,我们直接在这个,刚才我们是直接这个方法里面就。
07:01
就写了回调了,所以说好我们再定义一个。你重新定义一下。好,现在相当于我们有了两个filter啊,这样可能会稍微有点麻烦。我们这里启动一下挖矿看一下。诶,大家看。这里启动挖矿之后。这边直接就返回了两个。这是什么?这应该是交易的信息对吧,直接返回了两个交易的信息,诶为什么是两个交易的信息呢。因为我们这个是合约函数里边的监听,所以它的latest其实不是监听latest的区块,它确实是区块进来的时候会触发它,但是它更重要的是要查这个区块里边有没有自己对应的那个事件,对吧?所以它还是跟交易相关的,它的这个事件一定是包含在一个事件,呃,交易里面的,所以它可以咱们可以看到。
08:24
他查出来的这个状态,其实就是我们的刚刚发布的这个交易对吧。我们从这个8148这个地址发出来的7B9C912这个交易,我们看一下刚刚是不是7B9C912,就是我们刚刚这个交易,所以这就是我们的事件监听那。在自己的这个d up里边呢,我们其实经常就会用到今天我们说到的这几样东西,一个是呃,当然D里边可能我们直接去做部署这样的操作可能会比较少,但是我们可能是在自己做运维管理的时候,做这种项目,就是初始初始部署上线的时候会用到我们今天讲到的这些部署的功能,另外就是我们之后讲的这些合约函数的调用,还有合约事件的监听,这些在我们真正部署DAPP的时候,其实都是非常有用过的。
我来说两句