00:00
首先我们看一下常用的API,里边首先包含一部分就是基本信息的查询,那这里边最重要的有几个API是什么呢?一个就是我们可以查看WEB3的版本。然后我们还可以查看WEB3连接到的节点的版本,也就是我们所说的client version。对吧,然后还有一些基本的信息查询,比如我们可以获取到network ID,另外我们还可以拿到节点的以太坊协议的版本。还有我们还可以去检测一些网络的状态,比如说是否有节点现在在连接的状态,就前面其实我已经用过这个,就是这个操作了啊,就是is connect,大家刚才可能看到我敲这个命令,等一下我们每一个再再重新敲一下啊,然后还有就是说我们还可以查看当前连接的P节点,这个我们自己在起一个私有链,或者是就是只在自己本地开发环境里边,可能不存在这个P的这个问题啊,但是在供应链上的时候,可能我们经常就会希望去发现周围的节点,考虑清楚这个网络环境,最后就还有就是provider这些东西,我们可以等一下到这里的时候,我们再详细来说,好,我们从开始还是每一个都过一遍吧。
01:30
呃,在这里我觉得大家如果有有有同学已经把那个1.0装上了吗?已经装上了是吧?好,那么我们这里可以用两个不同的控制台。好,我在提公台n PM web3,看一下我的版本是什么,好,大家看到我这个装的是最新的web31.0.0beta点三六,这是一个最新的1.0的Beta版。
02:13
那我现在如果要在这里去去向我们做一个同样的动作的话,好,我们再一起过一遍啊,我这里启用的这个WEB3的版本就应该是1.0了,对吧?好,我们require。对,为什么这么慢哇,这个确实有点慢啊,看起来1.0的是一个WEB3还是比较好,我前面定义的是web啊,好吧,那我们这个没关系,只是一个名字而已,那我们就注意把它叫成web好了,web.provider.http provider对,写错了啊,大家很细心,看到了provider htp854。
03:26
看一下,这样的话,我们就已经把三的实例创建好了。那我们来三点不。WE3,我总总是打web啊,好,这是1.0.0,然后我们再看一下它现在是否已经连接上,呃,我们看这里已经没有enap的这个方法了,那到底是用什么样的方法,在1.00.0里边用什么样的方法能检查它现在是一个连接的状态呢?大家可以看到就是1.0.0里边是需要用这个net.is listening来做的,那大家可以看到我这里后面还有一个啊,为什么后面还有还有东西点赞的,因为它返回的是一个promise,对吧?我们如果要直接是WEB3点is.net.is listening,如果我们直接这么去敲的话,大家会看见只是一个promise。
04:34
什么别的什么都看不到,那我们就需要点赞把它做点烙出来,大家可以看到这里返回了一个处对吧,所以我们现在是连接上啊好,这是刚才我们只是先把它连上,那具体刚才打的这些命令。我们等一下,其实还是要再来过一遍的,我们先把这个屏幕先清掉,我还没有去查这个,诶刚才曾经有查,就是梦里边怎么清屏吗?你是CTRL加啊,CTRL加L是吧?啊我那那我随便敲一个,我看看是不是啊CTRL加L啊对好,我们看一下。
05:22
呃,首先我们看查看WEB3版本,大家其实看到了,我们前面,如果我左边的这个屏幕是0.20.1,右边这边是1.0.0对吧,我们看到在0.20.1里边,我们查看版本的时候,web3.version,这是我们的直就是直观的想法,它其实返回的是一个对象。所以我们具体查版本的时候,其实是WEB3点version.api啊,这里是API,不是API啊,这里返回的就是它的version0.2.0.20.1,那我们看在1.0里面。
06:09
web3.version,大家看它没别的东西了,那就直接敲一个web3.version就能看到1.0.0,细微的一个区别啊,一个调整,因为我们直观肯定都会想到三角version,你就应该直接打印出来它的版本信息嘛,确实是之前这个0.2.20.1,确实还是繁琐了一些啊,接下来我们再看下一个,这个很简单啊,这也不存在同步异步的问题,诶大家注意,就是为什么前面有些同学也发现我们明明那个节点就没有连上,节点还没有起,我这里好像直接敲外三角version就能看到了,为什么呢?啊,对,这就是我们纯粹本地的WEB3的版本吧,所以说我们只要引入了这个模块,我们自然就能检测出来它的版本是什么,不需要我们连接到以太坊节点上,所以这个其实就是没有发请求的,所以也不存在是同步还是异步的问题,对吧?就直接一条命令本地查询,查到这个版本就可以了。那接下来我们再看WEB3连接到节点版本,那么我们可以看到同步的方法,我们首先看这个0.20.1啊,是WEB3点,哦,诶不是不是noe吧。
07:36
哦,是version no,所以大家看就是前面他把这个note信息是全部都放在version里边的,这个确实也是有点反直觉,就是上面这个note,那我们看一下它是一个。哦啊。是我敲错了,好,这个不是一个方法直接敲动的就可以,所以大家可以看到就是同步的这个方法的话,其实就好像是在访问我们的一个一个本地变量一样,对吧,直接一敲这个名字就可以返回它的内容,那这个版本是不是我们这里起的这个GA的版本呢?
08:19
大家应该我们在这里去看11TH点多啊,我们这个应该是在外面去看,其实启动的时候大家已经看到这个instance的这个内容了,对吧?Gas为1.8.7stable,所以这里我们显示的这个内容version.note其实跟这里的这个内容是完全一样的,所以这就是我们当前这个节点的信息,那这里还给大家提供了一个叫做异步方法,这是什么呢?这就是大家在0.20.1里边其实可以看到它的这个方法啊,我们前面已经把它都打印出来了,我们除了get node,呃,除了node之外,还有一个方法叫get node。
09:11
那大家可以看到这node,它后面不就说这是个geter吗?那所以说这个node直接就可以访问到这个版本信息,那get node这不应该是一样的东西吗?它的区别就在于node是一个同步请求,而get node那就是一个异步请求了,对吧?大家看一下异步请求怎么调用呢?直接这么肯定不行,他说这个call back is not a function,所以我们必须要传大家注意,这种情况下它不是抛back可以可选的,像我们前面说那个get block的时候,后面可以可有可无,有的话是异步调用,没有的话就同步调用,这个不是这个它同步和异步的区区分是同步是一个node。而异步是一个方法叫get no,所以它的异步方法就必须得有一个回调,好,那我们看一下这个回调怎么写啊,首先大家可以这么写啊,就是就是传统的写法,肯定是这样啊,我们先写传统的写法,它必须要有两个参数,一个叫error,我简写了啊,一个叫做result,对吧,我就rest吧,然后后面是它的函数体。
10:25
啊,那就是大家肯定就是if error怎么样,如果要是else的话,我们就打印result对吧?我这里就简单的写一下of,直接打印result,好,大家可以看到这样就把我们刚才的这一个node,就是我们的版本节点,版本信息就打印出来了,或者大家还可以用,就是ES6里边的新写法,比如说我可以怎么写呢?就是看起来会更简单一些啊对,箭头函数大家应该学过,对吧?我们可以把函数参数放在前面,然后一个箭头函数后面就是函数体,我们只有一句那都不可以,就是不写,画括号都可以,对吧?直接这么就可以了,大家看就把它敲出来,就能显示我们当前的note节点。
11:18
那对应的,我们知道在1.0.0里面,它全是异步调用,而且它返回更变态,还是一个还是一个pro,那这个怎么用呢?它的方法其实就跟0.220.1里边的异步调用是一样的,也是叫做哎,应该不是罗了,再瞄一眼我也忘记是在哪里了。哦,它是在Eth.ETH里边有一个get no info,那这个跟这个还是不一样的啊,不是get no,是get not info ETh.get no info这个方法,这个方法我们在调用的时候,因为它是一个promise,所以我们一般是用链式调用比较方便,对吧?点赞那标准的写法呢,那应该是里边定义一个方式。
12:16
里边拿到它的result,然后我们把它打印出来log。这样大家就可以看到,除了上面这个promise,这是它的这个返回值,下面打印出了我们现在的版本信息,对吧?那同样我们为了简单起见,我们可以不写这么麻烦,点赞里边我们可以直接用箭头函数console.log result就可以,甚至我们还可以更简单,大家可以看到这就是我们在应该PPT里边用的是这个写法,还是还是哪个我忘记了啊,我们可以直接点赞,然后喷点log。
13:04
为什么呢?因为大家知道。Promise的点赞方法,它里边传递的给回调函数传递的参数。就是前面我们就是promise执行结果的那个参数,对吧,所以我们这样的话,就是把log直接当成我们的回调函数,那它的参数是什么呢?其实就是我们前面执行的结果对吧,所以直接这样就可以拿到拿到我们这个整个节点的。以太坊节点的版本信息。好,这就是大家可以比对一下我们在这个0.2.2 0.1和1.0.0里面这种不同的操作啊,这是最简单的,只是查看一下这个版本信息,那这个查看版本信息呢,给我们的以太网节点那边发送的RPC的请求,其实请求的那个命令,那个method,大家还记得我们当时用刻的形式去发过那个RPC请求吗?
14:07
对,Jason r PC对吧,他的那个method其实就是当时我们试验过的一个叫做client version的,就是那个method。WEB3-client version,它反馈的就是这样一个东西。好,这是我们这个节点这一部分内容啊,大家想要先试一下吗?是不是有同学这个没有把1.0装好是不是,呃,那那大家没有装好的话,就先试我们0.20.1就可以了,因为接下来我们主要的这个环境还还是先用这个啊。我们的guess里边内嵌的WEB3的版本也是0.20.1,所以所以大家就还是先用这个就好了啊,应该这个大家要先先等一下,大家先操作操作吗?还是我们继续往后讲。
15:02
继续讲是吧,应该应该这个不难啊好,那我们接下来就一个一个过啊,基本信息查询获取network ID,那这个就比较简单了,就是就是对于0.20.1来讲,大家看到这又是在version里面,它直接就有一个network,那我们就WEB3点version点。Network。大家可以看到我启动的network ID是15对吧,所以这里直接返回15,那这个是同步的请求还是异步的呢?这个是同步的还是异步的?嗯,这个应该是同步的方式是吧,因为大家看到这个好像就像一个读取了一个变量一样的这种调用对吧?对它跟刚才的那个note其实是类似的,所以类似的它还有一个异步调用叫做get,大家看到上面了吗?嗯,Network下面还有一个对get network,所以它的调方式跟我们前面也是完全一样啊,Error我们直接写电动函数了,方便一点,打打那个传统的写法太写太多东西了啊好,大家看到直接返回一个15,那那大家看到为什么它直接返回的先是一个on five,然后在下一行再返回15呢?
16:35
就是因为它同步返回的时候,返回的执行结果是一个奥迪范,然后15是异步调用过一会儿才回来的,对吧,尽管我们这里很快几乎就是同时回来的,所以大家可以看到这样就是同步和调异步的问题,那前面同步调用的时候是他先返回了15之后,我们才进入到下一个命令提示符的这里才能输的,而这里的话,我们还没有等15返回的时候,其实我们已经可以进入这个命令提示符输字数字了,对吧,只不过是他返回很快就占用我们这一行了,所以是这样啊。
17:12
那同样1.0.0这边呢,它又有一些变化,大概看一下这个我都已经列在就是就是PPT里面,教案里面,大家就是下来之后都可以去一点一点去试,所以我们这里就是很快速的跟大家过一下就可以,这个好像不是ETH了吧,啊还是ETH啊三点eth.net点。Get ID,这个应该就叫get ID对吧?好,我们同样用这种链式调用的方式点赞pencillo,所以大家看到它返回一个promise,然后下面异步的返回了一个事物,啊,这就是get network ID,大家如果起的那个,那ID不是15,是别的自己定义的数,应该看得很明显。
18:07
下面还有一个是获取节点的以太坊协议版本,这个什么叫做以太坊协议版本呢?好,我们看一下它的调用也是在这个WEB3VERSION里面,这都是基本信息,所以之前0.20.1它是就全放在这个WEB3VERSION里面了,确实也好找,但是我们这个现在1.0呢,他会认为这些东西它其实是分属不同的东西嘛,有些你这个是网络的特性,有些是note的特性,有些是以太坊的协议,所以它就完全分开了啊WEB3点呃,它应该就叫version.esri吧,看一下对,好,大家可以看到啊,这里的这个以太坊的版本是。协议版本是0X3F还是3F版本的协议,那同样我们可以看到这明显是一个同步调用的方式,第一步调用怎么调用呢?啊,那下面上面看的完全一样,对get s好实简单实现一下还是error,我们也就是看一下结果0X异步调用方式返回一个同样的值。
19:36
呃,那在1.0这边他会是哪一个方法呢?这个就就是他说的会更明确一点,因为前面我们这个get s其实是这个比较含糊的一个说法的,对吧?呃,那在这个以太,呃,获取以太网协议版本的这一个命令里边,1.0.0明显就写的更加的直观,它的命令就叫做get protocol version。
20:06
三点一点。好吧,开的是点Eth.ne.get是我敲错了吧,不是不是在哦,他不是在net下面,好吧,这不是网络协议,所以它是直接的ETH下面有一个方法叫get proion,那我们可以看到它的返回跟我们这边也是一样的,NXF这些就是都是一些基本信息,那接下来就是我们所说的这个网络状态查询,那前面已经给大家试验过一下了,就是在0.20.1里边,非常简单,它是WEB3这个全局对象。
21:12
它直接就包含了一个is connect的方法,呃,当然大家要注意这个就不是一个变量,对吧?这是一个方法,大家一敲的时候发会发现这是一个方式,所以一敲,但是它还是同步执行的,尽管是一个方式,它明显这是同步执行,所以是直接会返回一个处,然后进入到我们的命令提示符里面,如果要是用异步的方式,怎么样去调用呢?我们可以看到0.20.1里边,它的方式是在net下边,Net下面有一个方法叫做get listen,那我们可以把它打印出来,诶,是不是敲错了,没有把那个rest打印出来啊,所以大家看到还是处。
22:13
对吧,结果肯定是一样的,呃,同样在1.0.0里边,这边呢,它的定义其实也是叫做get listening,只不过它是放在了ETH简单下面,Get看来又不是我怎么总记错呢。eth.net.is listen对吧?eth.net.is listen没错,好,所以其实这个东西就是都是很确定的一些东西,大家即使是旺记的话,就查一查资料,或者说就是我们直接在这里去看这个,比方说在1.0.0里面,我们直接看这个ETH,它有什么东西也可以看得到,只不过会比较多,对吧,都会看的比较累而已,所以我们已经有整理出来的文档,大家就可以直接照这个敲就可以了。另外一个就是P节点这个连接,这个就就很简单啊,我们就简单的敲一下三点net点。
23:30
偏胖对吧,它是一个这样,我们现在没有连接,当然偏胖就是就是零,然后如果我们要去异步调用的话,还可以get PU po那里边完全一样,好,这个就是就是其实就是完全同样的东西,我们其实不需要再敲这么多了,大家只要知道它怎么用,我这个能带着大家一起敲一敲,其实就是让大家。
24:02
我一边敲的话,大家也跟着能过一遍,就是一遍一遍的敲,也就熟悉它到底是怎么用了,对吧,好1.0那边也能敲了,他就也是get片count跟这个完全一样啊,只不过是放在了eth.net下面。
我来说两句