00:00
好,那接下来我们就继续来讲我们的思链,大家已经构建出来,我们已经知道怎么样去搭建一个自己的思链,而且也知道就是初始化之后怎么样去启动,那接下来我们就要说一说这个启动之后到底怎么样用它去,就是跟它去交互。那我们的这个链起是起来了,但是我们就能看到输出的这么一些一堆信息,这这也没法玩嘛,所以接下来就得给大家就是详细的讲一下,当然我这里边因为没有配环境变量,大家可能看着这个就是命令,可能会有点奇怪啊,就是每一次的这个盖都要前面加这么长的这个,呃,就是目录,目录的这个路径,大家自己配环境变量就会非常舒服了,呃,我这边。刚才启动的时候,大家记得我应该就是这条命令get,刚刚data DR指定当前的这个目录,然后后面跟上我们在那个创创世创世区块的状态配置文件里面给定的network network id15给上就可以了,如果说我们还要在启动节点的同时。
01:14
去跟他做一些交互的话。我们后面可以跟一个命令参数叫。这个就是控制台嘛,前面其实我们在编译源码的时候,看到它有一个部件,一个组件,其实就是叫控制台,所以这个时候我们如果加上conso这个参数,就相当于我们启动gas节点的时候,同时打开一个控制台,看一下这个状态啊,还是一样的启动对吧?然后大家看,诶,后面它就会有welcome to the gas。JS。所以大家就会看到这个console这个控制台其实就是用JA script写的一个东西,所以在里边我们就可以直接用drscript跟这个盖来做交互了,呃,之前也就是跟大家说嘛,就是说熟悉JS的话,就很多东西可能就会觉得特别简单,因为到这儿的话,这个就是你懂JS,这里面的东西都都非常简单啊,现在进了这个控制台之后,我们就可以看很多东西了,比如说。
02:24
可以告诉大家,就是在这个里边最基本的一个对象,这个控制台里边内嵌了很多抓那个抓script的对象,最基本的一个对象叫做。万森是个非常大的一个对象啊。它几乎就是在这里边所有东西都涵盖了,甚至可以认为整个的这个控制台就是它的核心,就是一个WEB3对象。大家可以看到它大概分成哪几部分。Me?这是一个。
03:01
然后有个BZZ,然后这是一些方法了,就是current provider之类的东西啊,有DB有d bug。有ETH,这是非常重要的一个它的子对象,之后我们会详细的看,就是我们跟区块链去交互的很多命令都跟ETH有关,先这么简单的过啊,大家可能看不太清楚。Minor矿工,那就是如果说咱们现在有链了,但是上面一个块都没有啊,怎么样才能出块呢?那得有矿工,得挖矿,所以这个就是跟挖矿相关的一个。Net,那一看就知道这肯定是p twop网络相关的一些命令了,Personal personal这个里边主要是控制用户账户的。所以大家可以看到它下面的这些方法,什么list accounts啊,List wallet啊,就是钱包账户,跟这个相关的全部都在下面。
04:01
然后还有是provider provider,这个就是,呃,直接的翻译的话叫叫提供者,好像好像不是特别的恰当啊,就是大家可以看它下面是什么,Provider http provider IPC provider,所以它相当于是什么,相当于就是相相当于是什么。相当于是什么,就相当于我们可以把它理解成这就是一个服务的提供商,它就是一个服务器一样的一个东西,当然就是可以简单的理解成这样的东西啊,然后下面是RPC。SSH还有settings,下面还有一个重要的对象叫transaction po t po,这就是交易池,对,我们可以看到,就是如果我们想要发交易的话,发出来的交易很多就会进到这里来。等一下我们给大家可以就是咱们做一些测试,做一些实验,呃,当然了,这个version这就不用说了,这肯定就是它基本的一个对象了,保留一些基本的信息。
05:10
最下面大家看到还有一堆乱七八糟的东西,它都是些什么呢?什么big number。Create batch。From from decimal都都是这些东西,所以大家一看可能这些就都是跟呃数据类型转换呀,或者说是一些就是单位转换呀,其实都是通用的一些,就是相当于是通用的一些类类库,所以通用的一些方法,所以我们现在就这么匆匆匆的一扫,就可以大概看到整个这里边我们可以做哪些事情。Din主要就是跟这个就是权限相关的一些东西了,包括管理,就是节点的这种连接,跟跟外部节点的连接和发现都是命相关的。好,下面我们就一个一个来看,首先我们先看一下命吧。
06:05
一敲的命,发现它下面又这又是一个对象,又是一个JS对象,它里面又分好多东西,诶,Data DR,前面我们设定好的那个DDR原来是写在这里的,大家看到这个路径了,对吧?这是这是我这里的这个完整路径,Project my。然后他有no的音符。这个no INF就是我们自己启动的,现在已我们是不是已经启动的一个节点,我们思恋的一个节点,对吧?所以这就是我们启动的这个节点的一个完整的信息,如果说之后我们想要还要组网的话。那就需要用这些信息去去组网,但是这里大家又看到了他监听的地址,又是30303。下面里边还有一个叫P尔S。
07:01
皮尔,就是说他发现周围的这些就是一起的这些节点,当然对于我们现在而言的话,他其实只有自己周围是没有节点的,所以大家看这个P其实是没有用的。就是看到这里的这个,诶,我们可以看到有两个不同的这个remote address,这个应该是默认就会连接的这个以太坊官方给定的一些一些这个远程的地址,因为假如说我们一开始什么东西都不配的话,启动一个节点去连接以太以太坊的主网,那会连接到哪里呢?那首先它就会写定两个给定,你可以去从这里去发现节点,去去获取数据,还是会有这样的一个一个配置啊下面其实就是有一些我们需要等一会儿可能会用到的一些东西了,我们看一下这个ETH。
08:02
ETH里面有很重要的东西,Accounts。这不用说,大家知道了,账户对吧,Block number,然后base,所有的这些我们平常可能最关心的东西都在这里面。呃,所以ETH本身也就是相当于核心的一个子对象。来,再往下看的话,可以看到GA price。我们设定的GA price,呃,这是默认的price啊,因为我们在创世区块里面没有设,我们只设GA limit对吧。下面我们可以看到有rate呀,有mining的参数啊,还有thinking的。参数所有的这些其实就是就是都是比较全局的,而且就是说我们经常会用到的跟链上数据相关的一些命令都在这里,等一下我们用到的时候再详细去说,这是ETH,还有一个我们经常用到的是personal personal就稍微简单一些了,前面我说了它主要跟账户相关。
09:08
我们一看这个list counts list wallet,然后什么import。还有new account,大家看到new account,那其实就是要创建账户。这个就是等一下,我们如果要是现在没有账户的话,那我们用这个就可以创建账户。另外还有就是存在破,大家可以看一下,现在全是空的对吧,内容也是空的,然后它队列也都是空的,状态也都是零,所以因为现在什么东西都没有了,还有一个mine就是矿工,它也比较简单,就是跟挖矿相关的一些东西都是。就是哈哈希律呀,它的呀,还有这个extra,这就是我们说的它这个写字区块那个附加的信息啊,还有就是它可以start或者stop,这就是开始挖矿或者是停止挖矿的一个选项,好,这基本上就是。
10:07
已经几乎把我们能用到的东西都已经说了个遍了,就是当然这么匆匆一过,大家觉得可能这个就很枯燥,其实没什么意思,我说的这些命令其实都在这个文档里边,就是都都列出来了啊,前面我们主要的这几个对象。就是ETH net admin minor personal,还有WEB3,然后后面我们常用的这些命令。都在这里列出来了,接下来我们就是用这些命令,我们要串起来一个完整的流程,让大家看一看我们这个东西到底是怎么用,怎么跑的。首先我们先来看一下,就是当前这个区块的基本信息吧,就我们现在这不是有一个链吗?来我们看一下Eth.accounts大家还记得刚才能看这个对吧?空的什么都没有。
11:03
诶,大家说为什么,诶我我记得我一开始不是把我自己的账户加进去了吗?为什么这里好像是没有没有我的账户在里面的。呃,大家不知道是吧,就是,呃,其实这里的accounts它这里能查出的accounts一定是存在外面,我们看到过就是有一个key文件夹对吧,一定是存在key store文件夹里边的account,所以基本上。这里的counts就是在我们这个整个用盖这个客户端去创建出来的counts,我们才会有私钥,然后才会存到它对应的那个P文件夹里面,所以才会加到这里的这个ETH accounts这个数组里面去。而我们在初始的时候,Alo给的那个账户分配了那么多钱,只是指定了那个账户里边有这么多钱而已,那个账户的私钥并不在这里存着,所以说我们这里的账户里面没有它,那我们可能就会想了,那那我们就得看看那个账户到底有没有钱啊,就是我我自己的那个账户,对吧?大家还记得我们是分配了钱的,好,我再copy一下。
12:21
如果我们想查一个账户有多少钱,怎么查呢?ETh.get balance就非常简单非常直白的这个函数调用,对吧?大家一看这个,这这就相当于API嘛,大家一看这个,其实一看命名已经知道是怎么调用了,后面直接给上参数,就是一个地址,大家注意这是一个字符字符串。诶,大家看是不是,就是一开始我们给定的那个,我我敲了很多个零,也没注意是多少,但是反正是前面给的是三对吧,确实是写进去了别的,现在连账户都没有,什么都没有,都是零,但是我的这个地址居然就有钱,这是因为我们在创世区块的配置里边都已经写死了。
13:08
所以这就相当于我自己的思恋,一开始就给自己,相当于是众筹的时候就发了奖金,就发了这么多。那这个单位当然还是尾了,大家可能看着这个单位有点有点难受啊,有点这个这个每次如果都要去数的话,非常的别扭,那当然就是在这个控制台里边,它会有相应的工具类去把它做转换,大家还记得WEB3那个大对象最后都是工具类吗?所以我们可以用一个WEB3的。一个转换工具叫做fromway,然后我把上面的这个balance再重新的写一遍啊好,这是我们上面的这一个,这个数值括号里面就是上面这个数值,然后这是第一个参数,第二个参数给一个,我们要把它转换成什么样子E,所以就是说from way,然后把EA作为一个参数传进去,就是要把前面第一个参数代表的这么大数量的一个尾转换成1ER,咱们看一下结果,哦,原来我敲了这么多个零,也就是0.03个以态,呃,这个就不用我们去一次一次数了,对吧?有这样的工具类还是会方便一些,好,这是我们做了一个简单的查询,就是我们的现在的区块链上到底有哪些账户啊,我们现在这个客户端管理的账户是没有的,但是呢,我自己的账户里边一查,确实有钱。
14:43
开始初始的分配都在里面,那我们看一下现在的区块的信息,比如说block number block number就是当前的区块数,那肯定就是区块的高度了,对吧。零。因为我们是初始的一个状态,创世区块,它的区块高度就是零,所以我们现在高度就维持在零上,没有任何的变化。好,那接下来我们就看一看,既然我们已经有了这样的,有了这样的节点,有了有了这样的,呃,我们只有自己的这个账户,就是充进去钱了,但是我们其实控制不了他,因为这里没有他的私钥,对吧。
15:26
所以我们还是得创建自己真正能够控制的账户才可以。那怎么创建真正能够控制的账户呢?可以调personal下面的。New account大家还记得吗?我可以直接就这样,你然后发现它会提醒我们输入一个密码,所以大家就想起来了k store文件,它是加密存储之后的私钥,用什么来加密存储呢?就是这里的这个密码。那我们是为了测试了,当然就就不考虑安全性了,我这里就简单一点,怕忘记吗?123456啊,需要repeat一下。
16:07
然后大家看到下面就出现了一个地址,这就是我们新成新生成的账户地址,这个时候大家可以想到,那我现在去看一下Eth.accounts是不是会有东西了呢?果然里面就有了一个地址。这个时候大家还可以到外面去看一下啊。我们重新启动一个bash,然后进到呃,不是叫麦是吧,我们可以进到我们的K文件里面去看,果然多了一个文件,大家可以看一下创建时间啊,创建时间04:28,应该就是刚才。刚刚创建的这个文件,这个文件里面的内容是什么呢?你简单的可以看一下address是不是就是刚才我们创建的这个地址的。
17:05
对吧,明显就是这样的,5B23,然后后边是一个C的对象。所以它是加密之后的,前面头里边写出了它的加密,加密的这个算法,加密加密算法是什么,然后后面就是加密的text,加密的内容。然后后面还有这个加密的一些参数,我们可以看到整个的这一个结构就是这样的。所以这就是我们的K2文件,有这个文件,我们还有刚才我们设定的密码。就能解出我们的饲料来。所以呃,本身guess里边它存我们私钥的方式,就是用这个P2这种形式来存着的,只要是我们在这里创建出来的账户都在这里存。呃,那我们已经有了一个账户了,那现在肯定我们就在想了,那这个账户里面有没有钱呢?看一下大家觉得有没有钱,肯定没有是吧,简直都不用说,哎,大家可能会想到我每次都去粘这个地址,是不是有点麻烦?
18:13
如果是我们在本身在gas里边创建的账户,有一个简单的调用方式,就是我们可以用JS语法GS对象来调用,比如说它是TH啊count这个数组里边的元素,那么我们就可以用Eth.CO0来指代这个地址,我们看一下它里面有多好。我们发现。嗯。哦,Get accounts是写错了啊,大发现这个打错了之后就会发现出现一个不合,就是我们我们觉得他应该是没有钱,也应该是零,不应该是犯,对吧,所以我们刚才写错了balance。看一下,好,果然是零。那。我们自己的那个账户里面有钱,但是这里面没有私钥,那肯定是转不出来的。
19:05
那如果要这样的话,这个怎么办呢?我们现在先先试一下看看能不能转啊,比如说要转账的话,应该怎么转。ETH点。应该不是应该应该叫散的。呃,我好像忘记了这个具体的这一个API的名称。我们直接可以在这里看一下,可以散transction对吧,去看一下散TRANSCTION3次传单是里边给的这个参数应该是个什么东西呢?是一个交易的对象体。那交易的对象包包括什么东西呢?它需要包括from,比如说我们from,就我刚才的这个地址,咱们试一下。因为只有它里边有钱。
20:07
From。有from,当然就应该有to,对,呃,这个我们就不去复制啊,就还是Eth.ACCOUNT0。然后还有一个重要的东西,就是value给多少。随便写一个吧。好,我们看看这一笔交易能不能成功。他说这是一个unknown account,所以大家发现在这个盖里边,如果要是起到像这个钱包一样的作用去发送交易的话,必须得是他自己管理的账户才能去发,他意思就是说我是你,如果把我当一个钱包的话,你这个账户都没有加到我这个钱包里面来,我怎么能用这个账户去发,就是把它作为我的账户去发,发交易,给别人发钱呢?所以这是一个unknown,好,就好比我们的ma mask,如果要是有一个账户不是自己的账户,你把别人的地址拿过来说我要发钱,那肯定是发不出去的嘛,所以这是很合理的一个状态啊,那现在这个就有点尴尬了那。
21:14
那我们反过来行不行,看一下。我们把to写成刚才我们这一个地址from,然后写成eth.com0,大家看一下哦,发现了他是说。没有权限。Password or unlock,所以大家会发现要转账,诶,这个确实是自己的这个账户了,可以转了,但是要转账之前呢,你还不能直接转,因为他觉得这个不安全。你要转账之前必须先去做一个操操作,叫做解锁unlock,那unlock的这个方式,这又是跟账户相关,对吧?咱们前面创建账户用的是哪个对象呢?用的是personal这个对象,personal.new new account,那现在要解锁也是点unlock account ETh.ACCOUNTS0。
22:22
诶,现在它就提示我们输入密码,输入密码好,现在它返回了一个处,说明我们解锁这个账户成功,我们再试着去发送这个交易试一下。哦,然后他说了,这这这个类型错,这个错误类型是不是有些同学觉得很熟悉。之前我们在麦里边发送交易,有些交易失败的时候,报的就是这个类型,对,就是没有足够的钱,呃,你就不能发,所以这是很正常的,我们里面就没钱。那那这个这个怎么办,这真是好尴尬了,我们一开始又没一开始创世的时候,我们又没有办法在里面去创建,创建一个这个呃账户,然后现在创建了账户呢,里边又没钱,那怎么办呢。
23:14
大家说我们怎么办,怎么怎么给这个账户里面加钱。大家一下想不到是吧,有两种办法,一种是从别的账户去转,现在有钱的只有我自己的这个外部账户,对吧?而如果要想要从这个账户去转钱的话,那就必须把这个账户加到现在我们这一个guest管理来。对,那这个操作可能会比较麻烦,因为我们这个账户在ma mask里边,当时我们是呃,没有存私钥,是直接用注基词来做的,对吧?那这个时候我们要导入的话,他刚才的这些方法里面好像没有看到有用注基词导入的,但是你要有私钥的话,可以直接导入,因因为前面我们看到personal里边是有一个方法叫做import。
24:11
对吧,就可以直接把原始的这个私钥直接导进来。但是现在就比较可惜,那我们只有注介词的话,这个这个方法就尴尬了,而且大家可能会想到,如果说我们这是一开始给这个地址分配了1.1泰吗。那我要一开始就没分配呢,我就是一个干干净净的区块链的,难道起来之后就真的是一点钱都没有吗?那那太尴尬了吧,你这个起来之后有什么用啊。那我们还是应该想到以太币的产生,除了一开始预分配之外,还能怎么产生以太币?对,没错,挖矿了。挖矿我们就能产生以太币了,那现在一样,我们去挖矿,挖矿,大家还记得有一个什么对象来着,叫minor,对,Minor。
25:03
呃,这个咱们还是再看一下这个manner是是这个有哪些东西啊,但有看到有一个东西大家会觉得可能会有点意思,叫做set。这是什么意思?这其实就是说,你现在启动了这个挖矿进程之后,挖出来的钱归谁?现在咱们是只有一个账户,所以说可能还不存在这个问题啊好,咱们先启动manner试一下,Manner启动方式非常简单,就是manner里边传个一的话,就是表示,就是相当于你一直不用听,然后一直一直在这。写错了啊,Manager刚才说错了,Manager本来是一个对象,所以直接传一个,就是把它当函数去调用,肯定是没有用的,所以我们要调的是它的这个start方法,这上面有start。好,Start one,好,大家可以看到,现在这个manner就已经成功的启动了它,Commit new min work。
26:07
然后numberone开始开始这个,但是现在大家发现我们看不到他具体出块的这个信息,对吧?啊,这个还是比较尴尬,所以那我们也没有别的好方法,就是只能之前这样看吧,我们还记得有一个block number不是。看下现在是还是。这个。这个说明什么情况,是是这个挖矿是不是没挖出来还是怎么样,嗯。没设置没没设置旷工是吧,好,我们看一下minor。ETH点靠贝,大家看一下,其实靠贝是有的,就是我们第一个创建的账户就是靠贝。那为什么这个这个大家看到有问题呢,挖不出来呢。
27:06
这个其实就会跟我们的。就会跟我们一开始设置的这个挖矿难度有关了。刚才我们大家还记得我一开始设置的那个difficulty是多少吗?两两千对吧,好像是对2000,所以我们看一下诶,现在这个状态好像即使是2000,我觉得这应该好像也过了好多秒了啊。诶诶,大家看这里好像。哦,他其实不是。刚才好像是就是他自己有一点卡顿,好像是来看这个状况啊,他突然一下子出来这么多块大,看到吗。就是一开始启动的时候,这个过程稍微的有点耗时。当时只是启动了,但是其实这个块没有挖出来,现在大家可以看到它的块在不停的出现,在已经挖到了第第12个块,对吧,这个其实其实也非常的明确啊,就是就是commit new min work,然后已经挖到了一个潜在的一个块儿,然后他然后紧接着就去就去commit。
28:19
然后这一块就在不停的增长了,那我们现在看一下这个。ETh.block number18,现在已经到18了,当然这个大家可可能会发现这个东西很烦啊,他会不停的去刷这个挖矿的信息,好我们觉得他烦的时候,当然我们既然可以start,就可以stop,对吧,买点stop好先把它关了,关了之后它不再刷了,现在我们再重新看一下,现在的Eth.block number是是25。他最后的这一个commit new work的时候还没有确认完成,然后就已经结束了,所以就已经停掉了,所以他最后的停在25上。
29:04
那大家想一想,现在是不是应该有钱了?呃,大家猜一下有多少钱。哎,先说这个钱应该归谁吧,矿工,矿工是谁哪哪个地址吧,就说哦对,现在其实咱们这个整个这里边建到的地址就两个,一个是我自己madma的那个地址,那都没有被这个这里管理起来,另外就是我们刚刚创建的那个地址,而且刚刚我们还看到了con base con base就是它。那当然现在的挖矿所得所得就应该给他,那我们来查一下他的余额。大家觉得应该有多少?猜25个块啊,大家觉得有75个是吧?对这这是想到就是觉得咱们现在一个块三个以太是吧?对,所以你挖了25个块,应该给你75,你这个又没有没有什么交易,也没有手续费,然后也没有数块,那肯定应该就是75了,对吧?那咱们看看是不是啊。
30:18
诶,大家觉得这个是多少看不太清楚,我们还是外文3FROM尾,再注意后面的这个书写啊意思加上括号。125个仪态,哎,为什么125个,这是这是平均一个块是给了多少个,是给了五个,为什么。对,因为最开始的设置,我们什么都没设置,那所以它默认的就是以太坊最初的状态,那以太坊最初的状态不是三个。
31:02
我们知道一开始的时候是一个块是给五个的,所以到现在为止,这个矿工已经挖了125个块,当然了,这个整个这个链都是归咱们自己管的,所以这个挖出来的125个以态也是咱们自己的,呃,尽管他不值什么钱,但是确实还挺多,对吧?咱们要做测试是是足够用了,呃,哦,我看到这会儿已经是04:40多了啊,可能前面这一块讲的东西也稍微有点多,那大家是不是要先练习一下,好,那我们就先讲到这里,然后大家先练习一下刚刚讲过的这些,比方说创建一个账户。然后去查询它的余额,然后开启一个矿工的挖矿进程,然后我们去查看现在的区块的高度,然后查看他的余额,然后之后当然了就还会有发送交易啊,还会有之之后的一些东西,我们可以领到之后再再来讲啊。
我来说两句