00:00
那接下来呢,我们就是会去介绍区块相关的一些API的用法,首先就是一些基本的查询了,那首先就是我们所熟悉的区块高度block number在。0.20.1的这个版本里边呢,大家其实已经比较熟悉了,就是WEB3点E点直接block number就可以返回它当前的区块高度,对吧?呃,那同样就是说这个大家很熟悉,这是一个同步的调用,我们如果要是异步调用的话也是可以的,那就是get block number,所以他到现在为止其实已经知道它的这些规律了。在0.20.1这个版本里边,很多相同的这种,呃,命令,或者说就是我们发出相同的这种请求,不同的请求形式它怎么区分呢?就是有一些它是直接就像一个变量这样的形式,比方说block number。
01:09
比比如说我们之前见到的就是像version啊这些东西对吧,像这样的东西,它一般就直接就是,呃,我们不需要把它当成方法来用,直接输直接回车,那这其实就是一个同步的调用。那与与它对应的另外一种请求的方式,就是前面加一个get,那你看这个明显就是一个方法了。像这样的方法是一个异步调用,而且它里边的回调是不能少的,一般情况这种这种异步调用,它里边默认都是没有参数的,所以说这个回调不能少,大家要记住这种这种用法就可以。我还是。快速的把它敲出来,大家看一下这个结果。
02:01
所以完全不出意料,就是我们想到的应该就是这个样子,对吧,好,这个是区块高度。下一个是GA price,这个gas price呢,呃,大家可能需要注意一下,就是它并不是我们习惯上在做交易的时候指定的那个GA price。这个相当于是整个我们区块链里面默认设置的一个GA price,所以呃,我在这里是把它归到区块相关的东西,但是事实上可能跟区块关系并不是很大,但它确实是一个全局,全局设置的一个值,所以我们在这里看WEB3点,ETh.GA price。直接敲,哎,大家发现这又是一个big number,那怎么看它呢?我上面讲过了,对吧,Two string就直接可以看到。
03:07
所以我们看现在设的这个GA price是多少啊。应该是后面啊一九,那应该是九个零对吧,一后面九个零,所以是1G,这是当前的这个GA price默认的设置,呃,同样就是我们当然知道这是一个同步的调用了,如果要是异步调用的话,当然就是get GA price。同样我们把上面这个再敲一遍。所以大家看到它返回的结果是完全一样的,这是GA price的查询区块相关的,其实更重要的可能是就是我们要通过一个数去查到对应的区块,这个可能是我更关心的东西,对吧,别的我们相对来讲它返回就是一个值,一个很简单的值,我们呃可能直接用这个同步调用的方式,其实是很方便获取的,但是本身区块的这个呃查询呢,它返回的内容可能就会多一些,首先我们看一下。
04:29
呃,我这里是不是写的有点问题啊,应该不是get block number对吧?应该就是get block,好,我们先直接敲一下啊,Web3.1TH,大家敲了get之后,一按table就能看到它所有的这个,呃,当前能够列出来的这些东西,对吧?呃,确实是有get block number的,但是这个get block number明显是我们前面。这这个明显是我们前面去拿到区块高度的这一个这个调用对吧。
05:06
我们先说一下,这个肯定应该是25,对,这是我们刚才就已经用过的,那现在我们要用的呢,其实是get block对吧。那get block这个大家应该能够想到。如果说我们。去想要去获取一个区块的信息的话,那显然我们应该先告诉以太坊或呃,告诉节点我们想要拿哪个区块的信息。那哪个区块的信息这个怎么给呢?当然了,我们就是需要有一个区块高度。所以大家可以看到,如果我前面给一个25的话,那这其实就是我们要查当前区块高度为25的这个块它的信息,所以直接get block,大家看这是一个同步调用还是异步调用。
06:03
对,这是一个异步的,它返回的是on DeFine对吧?然后下面才返回了整个这个block的信息,那刚才大家看到我在调用的时候,其实是在25后边又跟了一个参数,这个参数是我们的回调函数对吧?所以这是明显是一个异步的调用,而我们整个这个获取的区块信息是在回调函数里边pencil.lo把这个结果打印出来的,所以这是完全符合我们之前说的这种情况,那如果我要是不给后面的回调函数呢?可以吗?大家看其实是可以的,这就是我们的同步请求的方式,所以大家看在0.20.1这个版本里边,它的同步异步的差别呢,就是可以说是分成两种情况。一种情况就是。同步的时候就是Eth.block number,这是同步,然后Eth.get block number,这是异步。
07:04
一估请求的时候,它里边本来没有参数,那这个回调就是必须要放在里边,这才是一个异步请求。另外一种情况呢,就是像现在get block这样,它本来就应该传进一个参数去,那本身如果你不传回调的话,它就默认是一个同同步执行的一个消息调用,如果说我们在后边就是在函数参数的最后再加上一个回调函数的话,那它就变成了异步调用。所以说大家把这两种它的这个异步调用的方式搞清楚就可以了,呃,那我们还是就是简单的分析一下这个block里边的信息啊,呃,大家。别的应该我们之前都已经说过了,这个difficulty难度extra data,这是就是添加的这个附加信息盖limit是总总共的这个盖上限GA use也use的,这是在出块的时候交易到底消耗了多少GA,那大家看一下这个lobs bloom。
08:07
这是什么呢?对,这其实就是布隆过滤器对吧,Logs blue,所以就是在整个我们这个区块的信息里边,其实就是通过log,我们所记录的log来进行。事件的过滤的,所以这是在区块里边,但所以大家可以看到,就是整个的log是区块信息的一部分。所以它是会持久化在整个以太网系统里边的。呃,当然了,下面就还有这个minor,这是矿工,然后下边是mix hash,呃,Mix hassh和下边有一个叫做,呃,这里有那个parent哈,有有负节点的哈希对吧?呃,这个mix哈希呢和就是他自己的哈哈希和这个负节点的哈希又不一样,这mix mix哈SH其实是在挖矿的时候跟就是在做这个哈希计算相关的一个东西,所以这个其实是跟他那个计算相关的东西啊,另外这是有这个NUS啊,这是挖矿的时候会有一个随机数,所以其他的大家就基本上都已经知道对吧,它有三个,这个梅克树根。
09:29
收据数,状态数,还有交易数,所以基本上就是这些,嗯,这个里边大家可以看到这个块里边是没有交易的,所以交易是空的,好,这就是我们所说的这个区块信息。另外还有一个是可以查块中的交易数量,这个其实就就把咱们咱们要记得把这个改掉,我如果上传课件里面没改的话,大家自己改掉,查询块中的交易数量,其实也是非常的直白,就是get。
10:11
应该是get block是吧,Get block transaction大家看这个自动补全的话,其实就已经看的很明显了。所以我们在里边如果把它打印出来的话,大家看一下是什么东西。对,所以这个也是需要指定块的,对吧?好,我们指定一个,诶我们这里换一种方式吧,但是说我如果指定块的话,除了指定区块高度,还可以用别的方式指定一个块,对哈希就是它的代表对吧?这个就相当于跟他的ID一样,绝对不会变的一个东西,好,我们找一下这个25这个哈西在哪啊这。
11:00
好,我们把这个拿出来。好,我们把哈希传递进去,然后后面给你一个回调,这应该是一个异步调用方式,好看到。昂迪范这是异步,他先返回昂迪范对吧,然后给了一个零啊,因为这个里面没有交易嘛,我们其实是知道的啊,那同时我们也可以,假如不传这个参数的话,不传回调的话,我们看这就相当于是一个同步的调用方式了,直接返回力,这个很简单,我们就不详细说了,好接下来我们要看一个这一部分可能是用用的会更多一些,就是交易相关的。API,首先我们做余额查询,余额查询的时候呢,呃呃,我先跟大家多说一句啊,就是我这里边从区块开始啊,这个后边给大家列出的,这是它的这个参数的名字,大家调用的时候不要直接把这个就copy过去啊,就是大家可以看到我这个是斜体是表示这就是大家要读它的意思,然后按照自己的需要往往里填东西的啊,这个是一个has string,是一个哈希的字符串,或者是我们的block number区块高度,所以大家不要直接把这一串给复制进去啊,那后面这个中括号括起来的,方括号括起来的这一部分呢,是表示后面是可选的。
12:36
呃,所以这个东西是什么东西呢?多说一句。这是说?是否去把交易的对象返回?也就是说啊,我们这里边可能看的不是很明确啊。这里边因为没有没有交易,我们看一个,看看能不能找到一个有交易的啊,比如说一里边有有交易吗?这里边有没有啊。
13:10
这个就比较尴尬了,都没有交易,刚才我们说的这一个参数,它是跟在我们的,就是后边直接给一个true或者false的一个值,如果它为处的话,那么本来这里列出的交易应该都是一个哈希值的一个数组。那如果这里是true的话,下面哦,这是get transaction count了啊。那个get block给一个处,如果说这里是处的话,那么交易如果要有的话,他就不仅仅是一个哈希,是把整个交易对象都列出来,是交易整个交易对象的一个数组,所以这里给大家多提一句。好,那呃,像这个义务调用的话,我这里没有列这个啊,因为太长了,就是义务调用其实也是可选这个参数的,当然了就是最后是一定要跟一个call back,就是回调函数。
14:13
呃,就是大家这个看到斜体字的时候,这个是代表一定的含义,不是直接就是我们命令里面的一部分,所以大家把它当成一个变量来看啊。好,接下来是交易相关,交易相关最直观的就是余额查询,那就是该balance,这个大家其实已经很熟悉了,那那我们这个就不说了吧,对吧,这GA balance同样就是前面传一个值,那就是我们要查的地址了。传进地址来之后,如果后边不给回调的话,那就是同步,如果给了回调,那就是异步。这里需要说一句的是,它这里其实是还有一个。可选参数的叫做default block。这个是什么意思呢?好,我们还是,那这个我们还是来试一下吧,好,我们WEB3点ETH点,我们就查一下和康子林吧。
15:23
哦,这个有点太多了啊,我们可以看到这个应该是110。115个以态对吧?呃,那像它的这个数字,如果说我们后面跟上一个参数,大家可以看后边的这个参数是一个default block。所以这个是表示什么意思呢?就是这里可以指定。它在进行到哪个块的时候,它的balance是多少,我们来看一眼啊,假如说我给一。
16:04
诶。看一下这个是哪里出问题了啊,Missing。哦,他这里好像是没有那个节点啊,没有那个节点。这里的默认值其实应该是这个啊,Latest。就是default block的默认值应该是这个东西,所以大家看latest就是这样的一个状态,那这个应该是可以给一个交易号的啊,给一个20看一下,诶,好像我这个调用错了啊,这个调用。Default block,我们来查一下这个。官方的API吧。
17:00
呃,大家可以就是去看这个官方API,我这个打开的是get up上面的就是justscript API这个这个页面,所以大家如果要是想要去查完整的版本的话,其实可以在这个上面去查,我这上面的很多定义,也就是跟这个上面从这上面扒下来的,所以呃,我刚才要查的是get。嗯。好,我们看该balance。这个address。Default block,我们来看一下,它可以是一个number,也可以是一个string。哎,那为什么我们给number不行啊,这个这个确实有点奇怪,Will not use。
18:05
嗯,你说点这个是吗。这个default block。应该就是。我们现在ult block应该就是最新的一个block啊e block。大家看就应该是latest对吧,所以如果我们传这个latest这个字符串的话,是没有问题的。按它的定义的话,其实是除了字符串之外,还可以传一个数值,但是好像我们传这个数值的时候有问题。嗯,这样。是后面一定要用异步的方式吗?我试一下啊。
19:01
大家觉得这个有可能是什么问题?诶,这个是一个on方。嗯,觉得有可能是版本问题是吧。这个这个文档应该就是0.2几的一个文档啊,看一下大家看for0.2X减X对吧。所以这个文档应该是没有问题的。呃,所以我们看他的这个返回似乎是。看起来好像是就没有没有拿到这个balance对吧,在这个位置没有拿到balance。万人账户,看看24会有吗?哦,果然看起来我这个账户有点奇怪啊,康子林有点奇怪,他是在很后边的区块的时候才有了一,才有了余额,所以说在之前查不到。
20:16
这个是是有一点诡异,我不知道之前做过什么样的操作,所以我们直接这么查也是查得到的。呃,大家看到第24个块上,它是110个一台。所以大家可以看24~25的这个块,奖励的那五个以态应该是讲给他了,对吧,其实能看出它这个过程啊,刚才20不行,我看21也不行啊,其实我们就能。哇,好吧。还真的就是从二第24个块,我才把这个account加进来的,所以呃,这个就是之前如果做过很很多操作的话,就容易出现这种状况,就是不知道他之前的这个来龙去脉了,所以呃,大家可以看到他其实报的这个错是什么呢?他报的这个错就是我们看一下WEB3ETH点零,应该就是它的这个地址吧。
21:26
哦,这不是,这是他报的,这个是我们那个梅克尔树里边的一个节点是找不到,这个就是缺失的。某一个哈希值的,然后它的路径是缺失了的,所以在这个过程当中应该就是说。我们的区块数据可能在在在这个位置,就是从22个块开始会有问题,所以查不到之前的内容了,这个就是经经历过好几次这种操作之后,可能会产生的一些问题啊,大家可以自己试一试,看看给上这个参数之后是不是正常的,如果大家从一开始就就用这个账户在挖矿的话,那应该是正常的啊,就是应该是从从一开始就是一个一个能够看到它的余额是涨起来。
22:23
好了,我们这个也还是就先说到这里,除了余额之外,交易相关的,那肯定很重要的一个就是查交易了,那交易其实也很简单,我们之前也查过,就是get transaction。呃,这一个方法的话,那没有什么好说的,后面就是直接跟跟上我们的交易哈希,因为我们现在就是我们不知道这个,我我这里的环境可能还没有什么交易,所以说我们这里没法查,我们先看后边的这个,等到我们发出交易来之后,可以回过头来再查一下。呃,另外就是交易执行相关的话,那一个就是我们可以查这个已经尽快的交易它的收据,也就是我们前面所说的这个transaction receipt。
23:12
那它的操作其实就是get transaction rece,同样它的参数也是以交易的哈希。我们查他的话就是看看是不是已经进块了。呃,就像我们一开始说,如果要用1.0.0版本里边,如果要用链式调用去监听的话,它最后这个promise完成的状态,其实就是说收到收据的这个状态,对吧,所以这是代表他镜框,这是很重要的一个完成状态。同样异步的话,就是在后面会加上一个call back函数。呃,这里可以说一下,就是我们前面其实提到过有一个estimate gas的一个方法。那它呢,其实是要估计我们一个函数调用或者是一笔交易的get消耗量。
24:05
它这里的参数大家注意一下啊,这是一个Co object,大家可以认为就是跟我们平常发交易的时候。就是一样的那个参数。大家还记得吗?交易发交易的时候,交易是一个一个对象,里边会有from,有to,有value,好,等一下我们马上就看到这个怎么样发交易啊,所以如果我们把一个交易或者说一个消息调用的对象放到这里的话。直接调WEB3里面的这个方法,就可以估计出大概它消耗多少钙。呃,当时我们其实给大家估计过的啊,再来看一下怎么估计呢?WEB3点e.GA里面的一个交易对象是什么呢?比方说我们这样写。三点Eth.ACCOUNT0。
25:02
Two3.1.1。Value随便给一个。所以大家可以看到,他估计的就是我们这一笔交易需要花费的GA,那大家知道这是一个纯转账,所以说这笔GA就是2万亿,这跟我们平常用mama转账,或者说从别的地方转账消耗的GA都是一样的。那假如说我们这里面还有别的东西呢,如果有data的话,那就会复杂一点的,对吧,我随便敲一些数,这就当是一个有附言的一个交易。嗯。又出了什么状况,我们看一下。Invalid argument,零。好,所以这个data里面必须是16进制,不能乱敲BC,这些是没什么问题的。
26:10
所以大家看,如果要是加一点贝塔的话,那就会多消耗一点。啊,这个其实之前我们就已经给大家做过一次这样的实验,现在大家再再重新再来看一下,复习一下,这是盖消耗量的估计,接下来我们就看,这相当于是我们的一个重点,就是怎么样发送交易。发送交易呢,这个其实没什么好说的,就是ETH点3TRANSACTION。Send transaction后面跟着的是一个transaction object,就是我们所说的交易对象,交易对象又包括什么呢?就是刚才我们已经说到的这几项啊。首先,From发送的地址,To接收的地址。
27:00
Value交易的金额转多少钱?呃,当然它是以伪为单位的啊,不是以太。另外就还有就是我们可以指定guess guess,其实这里的GA指的是我们所说的GA limit,就是这一笔交易可以消耗的gas上限。另外当然还有GA price,这是我们的单价。最后就还有data,就是交易可以携带我们的字符串的一个,就是当然这这应该写上是X字串对吧,刚才我们看到必须0F打头的一个16进制的字符。这个data的话,如果要是普通交易,我们随便加上一个data,那其实就相当于是一个附言,如果要是说我们是给合约账户去发送的交易,他的data往往就是我们的对消息调用的那个paylo,对吧?我们所有的那个函数选择器和函数参数都会放在这个data里面传进去。
28:02
最后还有一个NUS,这是我们的一个整数值,就像计数器一样,对吧,每一次都会加一,所以这个NUS。本身我们是一般是不需要指定的,但是个别时候也可以去指定,就比如说我们想要去撤回一笔交易的时候,那我们指定之后发的这一笔交易跟上一笔的一样,那其实我们的目的就是要撤回上一笔交易,当然这个不一定成功,看谁先打包镜框。好,那我们还是来发一笔交易吧,要不然我们这个都没法看这个交易信息对吧,所以我们的发送就是P点3TRANS,然后其实跟上面这个一样,对吧,我们直接把上面复制下就好了。散的好,哎。
29:01
所以这笔交易大家看我们这样发出来,诶大家看这样发出来的话,嗯,ST美的是吧,这是。这是另外一个,我们就先不讲那个了。哦,大家看就会报一个错,对这个就是说我们在发送交易的时候,因为要消耗我们真正发送发送账户里边的以态因为要消耗盖,所以它必须是要先解锁的啊这个呃,大家还记得解锁怎么解吗?对personal.unlock count,那大家就会发现这个操作其实就跟我们在那个对该里边做的几乎是一样的,诶看这里有问题啊。
30:11
哦,我们这里没有这个操作,所以这个会比较尴尬。我们看一下刚才。在进行解锁的时候。他报了一个personallo account long exist,所以如如果要是这样的话,那那说明我们在这里是没有办法用这一个方法的,对吧?调用方法不可用,所以我们干脆就简单粗暴一点,对,我们直接在S里面把它解锁不就完了吗?还是person onlo0。
31:07
好,现在已经解锁完了,我们再来发送一下刚才这笔交易,诶大家说。我这个发出来之后,应该就可以生效了吗?我们把那个log打开啊MY去好好我们在这边把这个log打开。诶,大家看我们这里发送出来之后,马上就得到了一个对交易哈希,所以刚才我们的这个send transaction的这一个操作,其实是一个同步的操作,对吧,瞬间就得到一个哈希了,然后我们看到右边的log里边提交了一个对,大家看啊,呃,Submitted的transaction,然后他的哈希603B FC7,大家看是不是跟这边的交易还是一样的,所以这边是我们控制台,也就是我们以太坊节点这边的log,那这边是我们放,就是发出消息跟这边控制台节点交互之后得到的返回值,所以这两边肯定是一样的,那大家看这个应该能够找得到这个。
32:38
我们前面不是有get transaction吗?瞧一下,但说现在能拿得到吗?对,大家想到他是没有上链的,对吧,我们看一下他会在。诶,我现在是可以拿得到的。
33:00
对,现在的交易是会在我们的纯家铺里面对吧,大家还记得,所以这现在其实是一个判定状态的一个交易,好,那么我们还是在这边起一个框吧。大家看这边已经在在挖了,对吧。这边好像有点慢啊,已经成功了是吗。有点慢。他只是在commit一个新的,就是挖矿的一个一个work,其实这个现在他还他还没有挖出来对吧。
34:06
这时挖矿可能确实会遇到一些问题。还没有挖出来吗?我看一下。停掉一下。页面开的太多,有点骑不过来了。
35:05
嗯,我这边现在这个挖矿的进程好像被阻塞住了,好,我们现在先不用考虑太多这个事情了,就是大家应该之前已经啊,终于终于挖出来了,好吧,好,现在我们可以看一下,刚才我们在看到这个get transaction的时候。拿他的交易,哈希其实是可以看到这个,因为它已经已经是一个正式生成的交易了,已经广播出来了,所以我们当然先把挖矿停一下。所以我们当然是可以在这里查到的,即使他在我们的交易池里面也是可以查到的,对吧?也是相关信息都能查到,但是大家明显可以看到,就是它的block number是没有的,那我们现在已经挖矿之后,我们再来查一下,就可以看到他是进了第26个块,对吧?那现在我们再来看一下bth.get block里边的信息,大家还记得我们可以加后边一个参数吗?首先我们先GET26,我们看一下啊,Transaction里边就把这个刚刚挖出来这个,呃,就是我们提交的这个交易就放在里面了,对吧?假如说我们这个时候在后边再加一个true true是什么意思呢?
36:29
是让它里边的交易要显示一个交易对象,对吧,我们看看它有什么不同来看,就是整个交易的信息作为一个交易对象全部显示在这里。啊,大家看到就是这就是我们跟大家说的这些block帕西,Block number from two GA GA price,当然最后还有他签名,VRS3个是他签名,对吧?好,交易这一部分大家都熟悉了,我们也就是复习一下,接下来是是消息调用,消息调用其实跟交易是非常像的啊,对吧?所以呃,它的区别在什么地方呢?
37:12
它的区别其实是在于我们一般情况,如果说想要去给一个函数,呃,我们想要去给一个合约,去发起一个调用,去调用它的函数的话,这个时候我们一般是用靠这个方法的。当然如果说那什么时候我们用send transaction呢?我们给别人发币的时候肯定是send transaction对吧,那调用合约函数的时候。可以用3DU吗?也是可以的,那一般情况怎么区分它两这这两种呢?一般我们在做的时候是会把call应用在那些不需要提交交易的消息调用上面。
38:01
也就是比方说我们不做状态的改变,我们只是去做一个查询,或者说我们只是去做一个简单的纯计算,这样一般的消息调用我们都是去就是直接去用靠就可以了,而如果说我们引发了他的状态改变,那我们一定是要提交一个交易的,所以那个时候我们用set transaction。大家可以看一下,就是我们这里的这个例子啊,这里的这个例子其实就是。大家看后面的这个就是靠的这个对象,其实跟我们刚才说的交易对象是差不多的,只不过在这个刚才我们所说的交易对象里边呢,一般情况from。是需要有的。From是必须要有的,To呢就有可能没有,因为如果我们是创建合约的一个交易的话,那其实没有to的,因为它发送到的是零地址,对吧,所以就没有to,那交易金额其实也是有可能没有的,对吧?如果我们要是创建合约的话,或者说我们就不想给别人转转币是只是一个消息调用的话,那确实是没有的。
39:17
那另外就是GA GA price,这些都是可选的,都可以不加data,当然也是可选的,那也可以不写,所以在这个里边,其实就是from,从谁那里去发,这个是必须的。而在相继调用里边呢,其实就是from也是可选的。所以别的其实都一样,只是就是所有的都有可能,都有可能没有,都有可能是可选。让大家看一下这里的调用方式,它传进来的是什么东西,吐吐这里肯定就是向谁发出来的一个调用,对吧?那下面的这个data塔的话。那就是我们发送的一个pay漏,大家看看这个状态应该就是一个配漏的对吧,32位,32位的字节前面八对是函数的选择器,然后后面这个0003,这明显是一个函数参数,所以说这明显就是一个函数调用的,就是调用合约函数的一个方式。
40:26
所以大家我们现在没有合约,所以说试这个也没有用,所以呃,等一下就是到到我们之后去自己写这个,把合约布上去之后,就可以试这些具体的东西了。好,然后我们再说一下日志过滤,或者说其实我们知道在以太坊的系统里边,所谓的事件其实就是日志,整个日志机构里边的一部分,对吧?日志是作为以太坊基础架构存在的,提供了我们实事监听的这样的机制,那呃,在我们这个WEB3里边是怎么样去做这样的事件监听呢?
41:06
其实就是通过日志过滤去做的,那在WEB3里面提供了一个叫做filter的一个方法。啊,这个是比较特殊的一个方法,在这里可以跟大家多讲一下,就是WEB3的ETH里,这也是在ETH里面啊,有一个filter filter就相当于是我们可以定义一个过滤器。过滤器里边我们可以指定一个过滤器的选项。那当然大家一看这个既然是选项嘛,那你肯定在里边就可以指定我要过滤哪些东西了,对吧,那在这里面它可以指定过滤哪些东西呢?我们看首先它里边的参数可以是一个string。这个string就可以是latest或者是pending。
42:01
所以latest,呃,Latest是什么意思呢?假如说我们建立这样的一个过滤器,Y,一个filter,它等于3.1 filter里边给的是latest。那其实就代表着他总会去监听最新进来的。所以这就是latest的含义。那什么叫判定呢?判定其实就是他总会去监听当前正在判定状态的交易,所以这两个其实是一个是监听的是块,另外一个监听的交易,所以是这样的两个参数啊,呃,另外就是大家看它可以填入一个这个option,就是一个选项,这个选项这又是一个什么样的东西呢?呃,大家看啊,就是它它直接的这个传入的方式的话,其实就是直接把它传进去就好了,对吧,那在这个。
43:03
过滤器的甚至里面可以包含这么几个参数,比如可以有from block。从哪个块开始,从哪个块开始过滤,当然有from就有to,还有一个To Block,从到哪个块截止,就过滤指定的块之间的日子。所以这其实就有,这像就不像是一个事件监听了,这好像是一个事件追溯,一个日志查询的一个过程,对吧?所以确实我这里说成事件监听可能也不是完全的合适,就是往往它是用来做事件监听的,但事实上它是一个日志过滤的过程,另外它还可以加什么呢?还可以加address,还可以加地址。就是我们可以指定你要过滤哪些地址里面的日志,跟哪些地址相关的日志。最后就还可以过滤topics,就是我们所说的大家指定了呃,Indexs选项的那些那些事件的参数,那就可以定义在topics里面,我们可以在options里面去筛选对应的topics主题。
44:14
呃,那那下面就是它的监听了,前面我们是定义了这样一个过滤器,下面监听的时候怎么监听呢?大家看就是也很简单,filter.watch就是监听,监听变化得到的变化可以塞到里边的这一个回调函数里面。那回调函数也是一样的形式,就是前面是A,后面是result,那如果没有error的话,我们把它打印出来,就能看到当前的这个日志变化的过程。呃,当然了,下面就还给了另外一种方法,就是这是我们分两步来做了,先先定义一个filter,之后再给他一个监听watch,一个就是加一个watch的这个方法监听起来,那我们如果要是简单写的话,其实可以这么写啊,就直接web3.1.filter。
45:02
然后后面options,然后后面跟回调,那就是直接立刻开始监听日志,不用在后面点卧室去启动了。
我来说两句