00:00
好,我们现在就准备开始先回顾一下,我们昨天的时候,咱们首先是把之前我们做的水龙头合约,然后做了一个完善和验证,相当于我们真正的已经发布了自己的第一个智能合约,而且我们实现了点一下就能获取一个币这样的一个功能。然后之后呢,昨天一个重点的内容,我们是在跟大家介绍控制台,呃,就是不是控制台啊,是在介绍客户端,先介绍了,跟大家说了,所有的客户端都是符合以太坊横批书里边的规范标准的,而我们的控就是我们所说的这个盖,就是客户端里边的一个代表。呃,跟大家说就是用户最多,最最有名的就是guess跟PARITY2个,而guess就是我们要重点去讨论和学习的一个工具一个,呃,以太坊可以说是官方实现的一个客户端,那昨天下午的时候我们开始就安装了GA,当然我们是从源码安装,很多同学可能也都遇到各种各样的问题,呃,我我觉得在咱们这个学习或者说做开发的过程当中,其实是,呃,不要怕遇到问题,因为肯定是坑会很多,肯定有各种各样的问题,遇到问题解决就可以,只不过是我们可能需要去稍微控制一下解决问题的时间,就是如果这个问题是我们的核心问题,那可能我们就需要投入大量的时间把它搞定,如果这个这个问题不是特别核心的话,比如说像我们遇到大家发现就是明明我跟别人的这个就是代码都完全一样,然后我我用的这个购版本也一样,但是就是为什么它。
01:43
就它就跑不起来呢,可能跟我们自己本身系统内的其他的一些配置可能会有关系,比如说就是呃,当然我不确定本身的这个盖大现在安装的版本系统配置要求到底还依赖哪些软件啊,有可能比如说GCCC大家的版本不一样,有可能Li Linux核心版本不一样,这个肯肯定这些环境都是有影响的,所以如果大家现在觉得这个东西就是搞了很久还是搞不定,而且也没有什么头绪,呃,我建议大家就是我们可以先放一放,先把它装上就好了,呃,这是就是跟刚才还还没有完全从源码安装成功的几个同学给大家一个一个建议啊,就是我们可以,当然在这个过程当中,我们肯定是会收获很多的,大家即使是没安装成功,去查很多资料,大家肯定也会学习很多东西啊,我们就是不不怕,遇到问题就好。
02:38
好,接下来我们就再回顾一下昨天跟大家讲过的盖S控制台命令,昨天我们安装好盖之后,首先就先用盖去布了一个自己的撕链。呃,不思链非常简单,直接在里边我们指定了一个叫做genesis Jason的创世区块的配置文件,创世状态的一个配置文件,大家还记得里边我们指定了一个清ID,就表示我们这个自己的单独网络,不要跟那个以太以太坊的主网测试网络,不要跟他们搞混,我们指定了一个ID,然后我们还配置了,就是我我的配置文件里面是给自己的账户定义了一笔钱,那大家自己配的时候肯定,呃,就不需要把我的账户放进去,对吧,可以可以设大家自己的账户,或者说lo那个参数,大家不设也是可以的。
03:30
但是另外两个参数我们应该是必须要设的,因为有一个是难度对吧,Difficulty的一个一个参数,还有一个是GA limit,就是我们在限制我们区块里边的交易数量,用来限制交易数量,好,那大家这些事情都做完之后,发现我们的思链很容易就启动了一个in命令,把它初始化,然后用GA把它启动。现在我们启动之后呢,后面加上一个console命令,我现在还是哦,这个打开的是get啊。
04:05
进入到我们昨天用的这个目录里边来。呃,大家觉得这个前面带目录的那种方式去调用盖命令不方便,大家应该是都把那个写到就是环境变量里面了,对吧,所以现在大家我这边也写进去了,所以大家肯定跟我一样,就是在这里直接敲盖version,肯定是可以看到这个我们现在的这个系统安装的盖版本的状态,那我们现在如果要去重新再启动一下自己昨天配置好的这个链。大家还记得是什么命令吗?启动我们的现现在我现在是一个退出的状态,那我自己的那条链,我们不好的链应该也是一个一个停止的状态,对吧,就是没有东西起着的,没有节点起着的,那现在要启动的话,我们应该用什么命令?
05:10
呃,对,其实启动不需要别的东西啊,就直接盖就可以启动,但是因为我们要连接自己的这条链子,所以我们后面有参数。杠杠,有个data DR,对,这个是指定我们的这条链的存储目录的数据目录的,我们已经配置好的目录,那一定是得连到这里拿到的才是我们配配置好的那些块,要不然数据是不对的,所以这个一定要跟我们当时配的目录一样,然后后边大家还记得我们指定了一个network ID,对吧?对,这个要跟我们当时写的那个ch ID一样,然后呢,如果我们后面什么参数都不加,那直接这样,其实就是把它提起来了,呃,我们大家应该自己自己这么也玩过对吧?这样看start p two p network网络提起来,然后IPC的这个连接点创建起来,这其实就已经提起来了,但是这个东西我们没有办法玩,没有办法跟他交互,所以昨天我们告诉大家后面可以加一个东西,加一个conso对吧,然后这个启动的时候还是哦,这是。
06:21
的MYSQL在自动更新啊,呃,大家可以看到用这样的一个conso的命令,我们就可以进入到一个JS写好的一个控制台的交互页面里面,在这个里面我们就可以随便敲任何的命令去调用里边的一些对象,一些方法,呃,大家现在都已经知道了,而且昨天我们是已经创建了一个账户的,现在里面已经有一个账户,然后大家还记得怎么查他的余额吗?Get balance,对,这是最常见的一个,然后后边相当于我们已经定义好的变量,它都定义好的这些对象,它都是可以调用的变量,所以直接都可以拿过来用的。呃,大家可以看到,看到我这个账户里面应该已经有75个,75个以态啊,呃,那大家可以。
07:12
有些同学是不是想到了,就是昨天我在挖矿的时候起了manager.start之后,整个那个挖矿的信息就在这里就在刷,对吧?有同学试过吗?是不是感觉这个这个观感非常的糟糕,就会很影响自己的操作,对吧?尽管它比较直观,所以在这里边我们还有另外一个方式,呃,另外还有一点就是有的同学发现就是我这里边minor start之后,有可能它真的是没有起起起来的,就manner有可能失败了。但是我也不知道它到底到底现在是什么状况啊,我只能是就是像我们昨天说的,看一下这个block number,发现这个好像没有涨,那好像是这个挖矿没有没有提起来,但是到底他的这些信息,他的这些log输出到哪里去了呢?我们什么都看不到,那所以我们遇到了这样的一个问题,有这样的一个问题的话,给大家推荐一个解决,就是推荐另外一种启动的时候的一种方式,就是我们不要很简单的就是这样的进入到一个咳嗽里面去,我们用另外一种方式把它的log输出重定向。
08:21
就是加一个这样的,比如说我就叫输出到一个叫output.log的。Output啊,点log的文件里面,呃,大家应该知道Linux里面的输入输出重定向的命令,呃,这个当然就是如果不常用的话,经常也就会忘我,也经常就会就会记混,呃,大家不知道的话就把它记住,然后要用到的时候把它这个查一查,找到就可以,这个的意思二是代表Li Linux环境,就是这个shell环境里边的输出的输出,然后一个大于号,这就是输出会重定向。后面这个文件是我们自己定义的,所以它就会把我们前面的这条启动命令,启动我们的控制台的命令之后,输出的所有的信息都重定向到这一个outputlo里面,好,我们现在启动看一下。
09:17
诶,大家发现好像这个信息就没有刚才那些就是带带绿颜色的那些in粉的信息了,对吧,直接就很简单的就起起来一个控制台,然后在这个控制台里边我们再看所有东西还是一样的,只不过我们有了另外一个选择,就是可以另外再启动一个bash。启动一个shell,进入到我们的自己的这个目录下面来,大家看到已经有了一个output.log,大家可以看它一下,可以看到里面其实已经有东西了,这就是我们启动的时候的信息。
10:00
但如果昨天已经自己试过很多次启动,肯定对这些其实已经有点熟悉了啊,就一开始的时候,它会有什么starting p two p node啊,然后什么就是初始化这个链的配置啊,大家看这个初始化链的配置这一行里边就有我们写写进来的这些参数。就有ID15。我写我当时写的就是15对吧,大家可以自己去改这个啊,再写五十五百都可以。它后面还有别的一些东西,Homestead,呃,Homestead大家应该记得这是以太坊里面的一个阶段,对吧,第二阶段家园那个阶段,所以他这其实是配置文件里面可以配,你是不是要指定家园的那个版本的,就是高度。你是在在什么位置去启用家园的一些配置,所以我们这里是什么都没配的,所以大家看到后面都是空,在这个这里的表示就是NINE就是空的意思。如果大家在网上去看一些别的文章或者视频的教程的话,有可能它会把后面的一些东西也配上,就比方说他在我们一开始的那个genesis.jason里边,一开始的那个config里边,我们是只写了一个ch ID等,呃,Chin id15对吧?有一些配置文件大家去看,有可能它还会写homete什么什么东西。
11:25
甚至还会写后面这个EIP150什么东西,EIP155什么东西,就这都是,就是对于初始的时候状态的一个配置,大家大概的知道一下就可以,就是这些东西其实都是呃一些主要的分叉的节点,所以说如果我们一开始有这个信息的话,他会按照分叉时候的那个配置去把我们的这个呃,就是资链去做一个更改。它上面的一些运行的参数就不一样了,所以是这样的啊,大家可以看它这里边有哪些有door,大家还记得door doors是就是受过受过攻击的那一次,对吧,当时丢了很多的以太,所以导致了跟以太经典分叉的那一次,所以他这里你可以配置这个配置了之后,那就是在那次分叉之后的以太坊。
12:15
可以用这样的啊,EIP,这都是,就是以太坊不同的提案,大家知道,就是有过改进之后的一些配置,还有后面这个这个B打头的BYZ这个词就是拜占庭,大家可以拼一下啊,它要读的话应该就是by then to,应该是这样,大概是这样啊,拜占庭的意思,那后面这是军事坦丁堡什么的,好,大概大家都看到了这样的信息,所以。我们如果要是,呃,我说一下我的习惯啊,我的习惯就是这边去开着这个log,大家怎么样去实时的看这个log的变化呢?我们用这个命令tell熟悉这个不是叫log啊,叫out.log熟悉Linux命令,或者说熟悉这个运维工作的同学,应该是对这个ta命令比较熟悉,它的一个特点是什么呢?就是直接可以动态的跟踪这个文件的变化,如果我们这个output.outlo它又有新的这个输出跟在后边的话,它会实时的变好,我们就把这个分屏放在这里。
13:24
呃,现在就比较羡慕有两个屏幕的同学了啊,就可以不用像我这样很窄的一个屏幕放在这里,大家可以一个屏看一个,好,现在呢,我们看一下启动一个manner点之后会出现什么状况。大家看右边是不是就有log输出了,然后就会看到,诶现在的他在哦,是在挖第17个块哦,很快就挖了几个,十八十九就出来了,现在是20,所以大家就看这个就不会影响到我们在这边的操作,对吧。这样看起来会比较舒服一点,呃,自己也能监控到现在系统的状况,也不会影响我们在控制台的操作啊,我们就先把它停掉了啊。
14:08
好,这边停掉之后他就不再输出了,那现在的这个块肯定就不仅仅是15了,我们看现在已经到了22,呃,大家这个有昨天试的时候有一些有别的问题吗?因为我在之前自己测试的时候曾经遇到过一些问题,就是会发现。我自己启动的四链录好了之后上去挖矿,然后如果我退出,下次登录进来的时候,有可能会没有之前的数据同步,同步不到之前的数据,呃,跟大家分享一下,大家可能遇不到啊,因为大家装的应该都是比较新新版本的这个盖的cons,所以我当时的问题就是出在了版本比较低,就是如果大家是比较低的版本,有可能会出现这样的状况,如果出现的话,大家把那个盖版本再升级的高一点,好,这是这些东西,然后我们昨天已经说了创建账户,然后查看账户的余额,然后启动了挖矿的节点,然后去查看现在的区块高度,呃,那现在我们就准备做一些跟交易相关的东西了,我们看看这个控制台,它是不是能实现像钱包一样的功能,是不是能跟给给别人去转一个币好。
15:32
我们在这边打开自己的这个ma的钱包,看一下自己的地址啊。复制一下这个地址,如果不出意外的话,我们当时。一开始给他分配了一些仪态,所以它里边本来就有零点,应该是0.03个以态的好,现在我们呢,想要做一件事情,就是我们的挖矿的这一个节点里面肯定是已经有很多以态了,我们看看它有多少啊,Get balance。
16:25
好,他这个很多啊,应该是已经有110个以太了,好,那我现在我想转十个以太给到我自己的这个账户里面来。大家看一下我会做什么样的操作,有ETH里边这个对象有一个方法叫做send transaction,对,大家还记得啊,这个应该昨天我们曾经就试过一次,但是大家应该还记得,我昨天直接试的时候是直接是失败的,对吧?呃,大家想这一次我能不能成功。
17:00
From from填谁,我现在是要用挖矿的这一个账号给我自己的那个地址去转变,那就是挖矿,这个应该就是Eth.ACCOUNTS0对吧。大家注意,就是整个一在我们的这个控制台里边管理的,Com,就是在我们本地K2文件里面,呃,K2。存储了的那些账户,那这些账户构成一个数组,它的零从零开始,大家都知道数组下标从零开始嘛,所以这就是我们默认的挖矿节点,它所有的仪态都会存到这里来,首先是from,然后to value value,这里是不是可以写。来六啊,是不是可以写十,还是应该写什么?如果我这里写十的话,这个转账的数目是十个,以态还是十个?
18:01
还是十个什么对,应该是十个尾啊,这个大家一定记住,所以如果说我们不想写那么多零的话,大家记得我们还有一个方法,叫做一个通用的工具方法,对WEB3点。当时我们是把一个很大的数,以尾为单位的数转成了以态,对吧?那同样我们还可以把一个比较小的数转成尾,这个方法叫兔尾,好比方说我们转十个仪态,大家发现一回车。又发生错误了,什么错误对这个账户需要解锁,大家,呃,我发现很多同学可能是不喜欢看英文对吧,但是我建议大家就是这些,特别是一些出错的信息,一定还是要去看的,还是要熟悉这些英文单词,它表示什么意思,因为在咱们这个,呃,至少是在以太坊的这个学习里面,很多资料也是英文的,很多我们的软件,我们的交互页面,它所有的报错信息都是英文的,那大家如果这个不去看的话,肯定还是对大家的这个操作会有会有很大的影响啊,这句话说的其实就是说我们没有权限去操作,为什么呢?因为呃,就是它是有有这个密码的,而且它没有被解锁,所以我们要做一个操作,叫做personal,第2UNLOCK account,我们希望去解锁ETH accounts0这个账户,对吧?
19:42
而这个时候就要输入咱们一开始输的那个密码了,我这里很简单,123456处,好,现在我们看看刚才这个是不是可以转了,诶大家看到。这里的这一串绿色的树是什么呢?这是对,这是我们这一次交易的哈希,就代表我们这笔交易已经生成,而且发布出去了。
20:07
哎,那我们觉得那这个交易应该已经生效了,对吗?是不是已经生效了呢?我们来看一下这个账转出去没有Eth.get balance,我们先看一下account account0里边有没有啊,有没有变110个还是110个,哎,对,大家肯定想到了,你这边没在挖矿,那这个交易广播出去他没进没进块啊,肯定这个是不生效的,好,我们。再启动一下挖矿,我们同时在这边监控一下啊,把这个log打开,点start。好,这边已经挖了,已经挖了,我们就可以把它停掉了,对吧?好,这边直接停掉,再来看一下这个账户余额,好,但现在发现这个账户余额好像看不出什么来,怎么还增加了五个呢?对,但是因为他又在挖,那这个他到底转了没转呢?
21:13
那我们看我们自己的那个账户那个可能比较好好明确一点啊,Get balance这个。大家可以看到我这个账户里边的余额,现在是原先应该就是30000什么的,对吧,现在前面加了一个100,那应该原先是0.03,现在加了十个就变成了10.03,但如果就是不放心这个零太多,不放心的话,我们还是调用我们那个组件啊,我们的那个工具类from way,这个就是还得敲一大串get balance,就大家不要嫌嫌烦,就是肯定是要一点一点去,至少要敲熟,然后我们再说就是去去粘啊,或者去怎么样,那现在大家一看,确实它有10.03个以态。
22:09
说明我们这笔转账已经成功了,好,那我们已经很方便的实现了一个,诶那大家看我这里怎么显示的,这个账户是16.949个。我们现在连的网络是大家可以看到上面对吧,我我连的根本不是自己的网络嘛,我们自己的网络大家都知道是跟主网还有测试网络相当于是平行的另外的一条一条链,一个网络,所以我们连接测试网络去看这个账户的余额,那当然不是一回事了,所以大家可以发现这些平行的链条之间,他们的账户可以就是可以说这个账户放到那条链上去也是一个账户,但是他的余额是不会带回去的,所以就是说账户大家都是认可的,都是符合以太坊标准的账户,但是它的余额,它的状态数据不会带过去,这些是不通用的。
23:04
那我们想我们能在mask里边去看到刚才我们充进去的这笔钱吗?诶,那我们就想到是不是应该去切换切换这个网络啊。它下面有一个选项叫local host8545,好,我们先点一下试试啊,好,当然这个就是remix,它会提示说要要去做一些这个更改,因为remix是实时在监控我们这个,呃,Ma max的插件的吧,这这边的这个设置改变了之后,他会他会改好,我们现在看一下。你看这个好像他一直都没连上。那我们发现这个可能会有问题,对吧,即使是我们这边网络很慢,即使是我们这边就是网速不给力,我连自己的local host都连不上,这个就说不过去了,对吧?一般情况大家知道访问自己local host的时候是不需要去去去,真正就是占用我们的带宽去去发这个网络请求的,直接访问本地就可以,所以这个看起来是我们这边配置的问题。
24:16
这边配置似乎没有起,这个就是可以通过8545端口访问的这些配置,那我们看一下一开始大家回顾一下一开始启动的时候这些啊。来看启动的这里边,它起了哪些端口呢。起了一个30303,这个我们说过这是它的,就是单WPP的这个,这个P网络的协议是用来做这个周围节点发现互相节点之间通信的,那好像我们看到它没有起别的啊,好像没有起8545对吧。那当然了,你这边没起,你想去访问那肯定是没戏的,所以我们得看重新再来退出,重新起一下,呃,大家看这边一退出的话,Log这里也会加上一句database close这边停了,好,那么我们刚才的启动命令,那肯定是需要加一些参数了,加什么参数就可以启动8545这个端口,让我mama去访问呢。
25:18
这里告诉大家,呃,在这个network,比方说network ID后面再跟一个参数,叫做杠杠RPC,这个先给大家放在这里啊,就是说RPC就是远程过程调用的意思,这个先放在这里,大家可能不太知道它是在干什么,我们先看看它它有什么效果吧。杠杠RPC这个参数加上之后,就相当于在本地的这个节点上启动了一个允许远程过程调用的这样的一个服务器,然后它的监听端口就是8545,默认的端口是8545,大家如果想要去指定自己的端口的话,也可以加另外一个参数,叫做rpc port。
26:02
可以加这个参数,但是一般情况我们就不改了,因为改了之后mama的那边他可能他的他是写死的8545,所以我们改了反而还没法用,加上这个,大家看一下这边的启动信息。诶,大家看到这个启动信息比刚才多了一点东西,大家看啊,就刚才多出来的这几行就是启动信息对吧。大家看一下这这几行里边哪一条是刚才没见过的,有可能带着端口的,大家看它后面的信息啊,不太方便看是吧,大家细心一点。对,Http and point open open,然后后边URLHTTP127.0.0.1,大家知道就是local host的一般情况我们这个回换地址对吧,就是自己后边启动了端口8545,诶现在。终于起来了。好,所以大家现在知道了,RPC的这个方式,其实是在本地用HTP的这个形式,协议形式,然后在本地启动了,相当于大家可以理解为启动了一个服务器,然后它的监听端口就是8545,我们在外边呢,通过8545这个端口,用HT的方式就可以访问到我们这里的这个开放节点,所以大家再切换到。
27:25
马这里来看一下。当然他现在可能这个有点没有切过来啊,我们先切回到外,呃,他一直在加载remix,我们先比较麻烦,好我们现在连接一下localo host8545,诶大家看现在连上了很顺利,一下就切换过来了,对吧,因为连接自己本地嘛,就是没有任何的网络的限制,而且大家可以看到在这个我们的地址上明确有10.03个ETH,诶所大家现在是不是有点感觉,就是ma mask和我们的GA。
28:09
其实是好像是一回事是吧,是某种意义上似乎他们有有通用的地方,大家如果有这种感觉就对了,因为是我们之前说过,Mama不光是一个浏量器钱包,而且我们可以认为它是一个远程客户端。那它既然是客户端嘛,我们的gas是我们本地的一个客户端,那当然它就可以有共同的功效,所以我们可以看到在GA那边配置好的信息,然后只要我们起了8545这个端口,在这里就可以连上我们的本地的私有的网络,我们可以用mad pass去监控我们的账户信息。然后就是我们这为什么是有人在给我转账吗,这是。这边应该没有起任何的东西对吧。
29:04
这个16.949,好像应该是我们那个测试网络的一个。一个余额。突然的这个跳变,我认为是,我认为是可能是ma的一个一个bug啊,我感觉是。就正常来讲的话,我们那这个账户里面不可能有,就是刚才那个刚好跟riby一样的一个数字,对吧,可能刚才是这个它的页面没有刷新,可能是麦的一个小bug,所以大家现在刷新之后一看还是10.03个一态。所以大家可以看到我们自己的私有网络跟公网,跟主网,跟这个测试网络是平级的,完全平级的,我们在这里一切切换过来之后,就能连自己的私有网络,而且能看到我们这个账户余额。好,就是这个事情大家可以先把它消化消化,然后接下来的时间就交给大家,大家可以去实际操作一下。
我来说两句