00:00
呃,接下来我们看一下这个运行全节点的一个要求。这个要求,呃,我觉得我我之所以直接把它放在这里,是因为根据我的经验来讲,基本上还是靠谱的,没有没有差太多,因为呃,我是参考,跟大家已经说了,就是我主要参考精通以太坊的一本书上他给出的数据,他给出的数据这个应该是,呃,大概应该是今年18年上半年时候,他他测试的这样的一个数据的配置,现在的话可能会比这个要求更高一些,我也大概就是今今年上半年的时候,最后一次去配全节点,我感觉就是跟这个确实差不多,就是需要这样的一个一个配置要求,我们可以看一下啊,想要运行一个全节点要什么要求呢?最低是双核以上CPU。然后硬盘可用的存储空间至少80个G,然后如果是SSD,就固态硬盘的话,那内存是4G以上是如果不是固态硬盘,是我们的普通硬盘HTG,那就至少得8G。
01:14
这这个其实我当时体会还是很深的,就是呃,我去配全节点的时候,当时是申请了一个,呃,就是阿里云上的服务器,一个4G内存的一个服务器,然后就会发现跑起来之后很快。就是只要一一运行以太坊的这个全节点,很快它在同步区块的过程当中,就会把内存的都吃完,很快整个系统就没内存了,然后过一段时间之后就会发现因为内存耗尽,然后整个这个这个进程就崩掉了。所以下一次很烦的一点就是如果之后大家有时间想要去自己去同步一些区块,去构建一个全节点,或者是别的一些模式的节点的话,就是他很烦的一点就是区块。
02:02
的状态断了之后,我们重启的话,还可以继续去同步区块状态的话,下一次来了之后还得重新,就是如果我们同步了很多状态,这次没没同步完,下次来了之后就得重新来,所以当时真的是非常的痛苦,就是4G的内存根本是不够用的,当然阿阿里云的服务器那个肯定不是固态硬盘嘛,所以按他的这个说法,如果不是固态硬盘,那至少要8G内存,所以我觉得跟我当时的这个配置的体会是确实是很吻合的,然后他要求的这个带宽是至少八兆。下载带宽,所以这就是一个全节点的最低要求,那他推荐的配置大家可以看看,就是最好是达到什么样的配置啊,四核以上快速CPU 16g以上内存,500G以上可用空间,而且要SSD固态硬盘。呃,25兆以上的下载带宽,这如果能有这样配置的机器,其实呃,这应该已经能做一个非常性能非常的一个就是普通,咱们做普通应用的话,这这这做服务器已经是完全没有什么问题了,对吧,一般我们的个人电脑不可能根本不可能达到这样的配置,所以呃,不太建议大家去把自己的电脑想要去当一个全节点,但是大家如果想去尝试的话,可以先试试感受感受,呃前面也说了,就是正常来讲的话。
03:35
从头开始同步区块,一直到现在的600多万个块为止,一般是需要几天的时间。呃,我当时的经验也是,就是后来尽管就是4G的内存有点不够,但是呃,我们知道就是如果硬盘足够大的话,你可以设置一些swap分区,交换分区,然后相当于有一些虚拟内存把它扩充出来,就可以慢慢去同步了,我当时就发现那个之后那个同步的速度就会比较慢,我当时同步大概用了就是十天左右的时间,同步了一个全节点,所以大家如果自己想要去尝试,对自己的电脑也比较有信心,可以可以去尝试一下。
04:18
好,接下来我们就重点来介绍一下这个guess,它全称就是前面我们提到的gori guesss是由以太坊基金会积极开发的一个购言的以太坊客户端实现,所以往往被大家认为是这就是以太坊客户端的官方实现,所以如果我们去在网上找资料的话,关于盖的资料也是最多的,如果大家去网上去搜这个,呃,这个以太坊思链的搭建,或者说那个以太坊客户端的使用,一般搜出来的都是盖的文章,所以这一部分我们也就不讲太多理论了,就主要是咱们自己做一遍就知道了,对吧?就是包括如果大家下来想看这些理论性的东西的话,在网上其实有很多文章,大家可以充分利用。
05:10
好,接下来,呃,这里是这个以太网官方这个盖get get up的仓库链接,大家可以点开这个链接,我们来看一下,我把它copy一下啊,呃,希望今天get up可以给力一点。好,看起来至少还是可以上的,好,大家看RAGO,这就是get up上仓库的地址,呃,现在到现在目前为止,它已经有这个一万多个了,而且有24个分支,有141个release,已经是很完善的一个。
06:03
一个版本啊,然后有340多个贡献者,呃,这里就是他所有的源码,我们可以看到这个目录结构还是很很庞大。这个guess里面其实是实现了很多东西的,就是它不光是包含了就是我们所谓的以太坊的源码,而且就还有关于它这个客户端的一些实现,还有它的JS接口的一些实现,控制台的实现,但是从这些命名上其实也可以大概看出来啊,还有就是它的像SW啊,Whisper啊,一些别的一些插件,这些就是之后我们有时间去去做源码分析的时候,可以再跟大家去去介绍,现在我们就可以直接看一看后面这个就可以啊,Go Israel,这是它的一个read me文档,最直观的我们可以看到啊,它下面就是让我们用这个源码去做这个GA的安装,两个命令,一个make GA,一个maker。
07:06
好,那我们现在就一起来做一下这件事情,就是去把盖在我们的本地装起来,具体来讲。呃,我把这个文档打开,大家可以去参考啊,大家应该能在get up上看到我分享的这个应该是已经上传上去了,对吧?大家大家也可以就是一边看这个文档,然后一边来搭这个文档里面其实就是我们要做的操作很简单,我们是希望用gas来搭一个以太坊的撕列,那最先的一步当然就是安装gas,安装盖其实有很多种方法,呃,根据大家的系统版本不一样,可能就是如果大家用系统系统自带的这个包管理工具去安装的话,那可能命令会稍有所不同啊,我这里给出来的就是a AP get get就是无门图的一个标准的包包管理工具,所以大家如果系统版本跟我一样的话,可以用这种方式去安装,呃,如果大家是就是比方说呃,Centers或者是红帽之类的系统的话,那就。
08:17
就用用大家自己熟悉的这些RPM啊,或者是样M之类的东西去安装都是可以的,但在呃,在这里我给大家推荐的更家推荐的一种安装盖的方式是下面的这个源码安装的方式,呃,这就是说为什么我们说一定要大家装上gate,然后为什么要源码安装呢?源码安装也没有别的更好的东西,是一方面,我们直接就相当于可以把它的源码都克隆到本地,大家想看的时候可以随时看,这是一方面。另外一。另外一个原因就是因为呃,我直接拖到后面给大家看一下,他他最后这个执行的这个结果啊,大家可以看到在整个我们去make GA的时候,它会编译自己的各个组件,然后把这个结果直接会输出在屏幕上,所以我们可以在这个过程就可以看到整个这个gas里面它有多少个组件。
09:15
就像这个图里边,我们可以看到它这个一个hes u,这明显就是一个16进制,呃,数的一个一个处理的工具类,对吧,工具包,呃,下面这个maths,这明显就是跟数学相关的一些工具包,所以大家可以看到从这个里边也可以对它的源码稍微有一点初步的认识,所以这这是给大家推荐源码安装的一个原因。那至于具体的安装的命令,其实非常非常简单,如果是a apd get的话,核心其实就就一句,就是最后这一个大家熟悉的话就是APGAP,呃,Get in store,然后面ec real,但之前可能得先去指定一下它的那个下载仓库,因为这个是用这个PPA去去下载的,这是这一部分给大家推荐源码安装呢,其实这个我觉得还更简单一些,三步,呃,简单说应该就是两步,第一步get c,把我们刚才看到的这一个。
10:15
源码的这个仓库大家应该知道在哪里克隆对吧?对这这里我们可以看到它的这个克隆地址,大家不要直接去去点上面的这个链接啊,这个链接不是它的给克隆的链接,呃,我们在这里点点了这个链接之后,然后直接在命令行里边,呃,我我随便去去看一个。目录啊,我在这里比方说去新建一个文件夹叫test,哦,好,我们进到这一个目录里边来,那这个时候我要去下载源码的话,Get c,然后把刚才的我们复制的那一个。
11:05
Gate下载的那个链接,然后放在这里,这是用HTP的方式,大家如果要是呃用gate习惯配置的是SSH的方式的话,大家选另外一个SSH的链接啊哦,好吧,我的这个目录里边一直是需要打速度的啊。呃,哦,大家已经在下载了是吧?那那我现在先停掉吧,因为我这里已经下过了原版,我只是给大家演示一下,因为这个我们同时下载的话,因为网络的问题,可能会比较慢,可能会有一点慢,连都连不上是吧?哦,对,那那大家如果愿意的话,可以就是连一下自己的热点,呃,这个源码大概是有多大,我可以看一下啊,呃,我可以确认一下。
12:09
这个大概是100多兆,146兆,呃,所以所以大家如果觉得开热点自己的流量是可以扛得住的话,也可以用热点来下一下,呃,我已经有这个源码了,所以我在这里不跟大家抢占这个带宽资源,大家现在可以先把这一步先做完。大家应该找到这个链接了吧,在我们刚刚打开的这个get up仓库里边,不要直接复制上面地址栏的这个地址,而是点这里,它有一个绿色的按钮,克隆或者下载,然后点后面的复制。这里默认的是HTPS的方式,大家如果用SSH的话,点这里的它这里有一个柚子SSH,它就会切换成SSH的链接,当然如果大家觉得这个下载呃,就是在bit上面克隆的时候,这个速度太慢的话,也可以在这里直接当做它的这个内部文件,但是这个我估计如果本来咱们网慢的话,哪个都差不多,应该如果大家选用的是就是系统自带的包管理工具去去安装的话,那可能也是跟大家的这个语言配置的会有关系,如果大家没有就是比较好的源的话,可能下载也会很慢,所以我还是比较建议大家用这个源码方式去去安装下载啊,大家如果已经看着他在在下载的话,那我们就就先让他。
13:56
待一会儿我们直接把把后面的先讲一讲,大家已经开始下载了吗?有有速度吗?哦,有速度是吧,哦哦哦,自己那就行,因为昨天的时候那个gith upb1度是相当于是down掉的,然后昨天晚上我上gith up的时候就特别慢,所以所以我我也是比较担心,就是本来get up那边网络也可能也是有问题,咱们这边网络也不好,所今天这个可能确实是时间上会比较麻烦一点,好如果他已经在下载的话,我们就可以不管它了,这个就等着它下载,下载完就好了,我们现在跟大家就说一下,下载完之后我们干什么呢?非常简单,一条命令就是直接下载完了之后,我们会有一个GOE的文件夹,我们CD,呃,但大家应该知道Linux里面的。
14:56
一些命令吧,这基本的你肯定都知道对吧,对呃,而且像CD这样的话,就是在Windows里边的那个命令行里面也是CD对吧,去去切换目录嘛,进入到这个目录下面CD进去,然后就是一句make GA。
15:12
就就非常简单,就就这么一句,我们下面就可以看到它,就在构建每个组件之后,就可以看到它就生成了盖的可执行文件。就其实是非常简单的一个过程,呃,可能我们这里的这个瓶颈其实是放在了,就是前面下载这个地方对吧?呃,大家先让它下载着用,这这个这个时间我们来看一下它的这个目录里边的一些东西吧。呃,我们刚才看到下载源码之后,我们安装的方式是make GA,呃,那它这个是什么意思呢?其实对这是用了这个本身Li Linux里边的这个make命令,Make命令它可以直接去,相当于就作为一个构建工具,直接去构建运行我们设定好的构建脚本,呃,那它设就是运行的这个脚本的设置是在哪里设置的呢?是在本身当前它的这个目录下面有一个文件叫做makefi。
16:23
Make那条命令就是从相当于就是要执行这个make file里面的脚本命令,我们可以点开看一下这个里边的内容啊。好,这个里边大家可以看到啊,前面有一些这个预定义的一些一些东西,然后之后大家可以看到guess冒号,然后W冒号or冒号,这个表示什么意思呢?这其实就是说guess就是我们make后面跟的那个指令。Make death的时候,我们会做什么事情呢?就会执行下面这一句命令,所以这其实就是这是我们真正去构建整个以太坊这个节点的时候运行的这个命令,大家可以简单先这么看一看啊,呃,那我们还是继续来看一下我们这个文档里边跟大家说一下接下来我们要做什么啊,先先有一个大致的概念,我们这个文档主要是跟大家说要构建一个以太坊的私有链。
17:30
这个东西那那听起来这个很高大上,但实际上大家如果看完这个文档的话,就会发现我们要敲的命令其实非常的少,非常的简单,呃,前面是安装GA,假如说我们已经把这个源码已经下下来,然后执行了这个MGA之后,发现他已经安装成功之后,需要怎么做呢?啊,这个当然就是这里有一步就是说我们需要去查看一下gas version,确保就是啊,我们的GA真正的安装了,在这里给大家简单的说一下,就是这条命令啊,这条语句它执行的时候是前面加上了guess的路径的,因为这个guesss可执行文件生成的时候,它是放在了build目录的并下面,所以到时候大家如果如果看这个。
18:25
就是整个目录结构的话,可以在下面能找到这个文件,呃,所以我们执行这句命令的时候呢,是还是在我们本来这个仓库它的根目录下面执行的,所以得带上它前面的路径,要不然找不到这个文件吧。呃,那那有些同学可能就觉得这个很麻烦,如果要是有同学觉得这个很麻烦,我们可以把这个路径添加到自己的环境变量里面去,对大家这个应该都很熟悉啊,加到环境变量里边之后,那我们就直接可以get version就可以了,呃,像像我现在的话,其实就已经添加了环境变量,但是为了给大家演示,到时候我给大家还是按照这个目录来再去做啊,大家可以看到我这边的环境是盖装的版本是1.8.0,一个unstable的版本,然后gold version是1.9。
19:23
呃,这是我的一些这个go pass和go root的一个一个设置,这个大家学过够了,这些东西都都是很基本的东西,对吧。然后下面安装好了之后,其实就是可以启动这个节点同步了,这这这会儿我就先,呃,大家需要我先这个就是实际操作给大家看一下这些这些步骤嘛,我我觉得我先操作一下,然后之后大家下好了之后就可以可以自己做了,对吧?好,我们大家可以看着这个,一边看着我们的文档,然后一边看我这边的这个这个操作啊。
20:01
呃,这里我这里就把把这个整个以太网gas的源码下在了这个文件夹下面,Go easy,然后我们看一下。看一下现在它里边有什么东西,这就是我们刚刚在那个仓库里面看到的所有东西在这里边都有,我们看到这里有一个makefi对吧,那在这里我们直接make yes,好,他报报错了啊,看一下。哦,这个大家有可能到时候也会遇到这样一个问题,因为这个我之前是遇到过的啊,它下面的一个文件叫做叫做env点对SH,这个是它的这个启动脚本,它的文件格式是有问题的。
21:05
它的文件格式DOS大家看到了吗?大家看到我刚才的这个这个写什么吗?看我屏幕的左下左下角啊,它的file format就文件格式是等于do。它的文件格式如果是DOS的话,我们在Linux系统里边执行这个脚本肯定是有问题的,因为呃大家应该知道,就是我们Linux系统和Windows系统环境最大的一个差别,就是我们在就是编辑文本的时候,回车换行的命令是不一,就是回车换行的字符是不一样的,Windows里边回车换行是两个字符,对吧?CRCRLF嘛,就是一个是回车,一个是换行,杠R-N,杠是表示回车,杠N是表示换行,这是Windows里边的设定,这个也是一个历史包袱了,就是按道理说回车换行,呃,我这明明就是一件事情,用用一个字符就可以搞定的,他非要用两个字符,所以另字里边就就把这个做了简化,所以是只有一个杠N的,是没有杠二的。
22:14
所以如果说它的这个文件格式是DOS的话,那每一个换行其实都是杠二杠,杠二杠N,所以大家就会发现这个执行的时候肯定有问题,那怎么样让它没问题呢?Set f f等于unix,然后我们再再看一下我现在它的文件格式unix,好,我把它保存退出一下,现在去make guess啊,现在应该是可以执行了啊。呃,我不知道是不是我这一个源码下载版本的问题,大家到时候下载下来之后也先自己先试一下,看看有没有刚才我启动的时候发现的那个问题,如果要没有的话,那就没关系啊,没有是吧?哦,已经在启动了是吧?好,大家可以试一下,如果你是F的时候,就按一个模式配置那一个件模,如果没有的话查询,呃,对对对,后面如果没有等于什么的话,是查询当前的设置,后面等于了什么,就是写入了,大家可以看到所有的这些每一个组件在一个一个被编译出来,被构建出来,我们可以看到啊,里边这些东西非常的多,我们可以看到有vendor下面的很多go浪之类的东西,就是跟go语言相关的东西,我们可以看到accounts账户。
23:53
Account下面有peace,大家都看到了对吧,然后有call,然后这有共识,这个cons,这是共识。
24:01
呃,然后下面有p two p有dashboard,有ETH。啊,最后我们看到一个就是。Council就是一个控制台。这也是他的一个组件,所以整个在这一个编译的过程当中,这也作为一个组件都要去去编译出来的好。到了这一步,大家看到它显示说已经构建完成,当building这个时候就说明我们整个的这一个GA已经安装好了,我们到对应的目录下面去看一下build b,大家可以看到有一个,呃,我这里显示的是绿色啊,大家的系统设置如果不一样的话,可能显示不一样的颜色,这个绿色在我这里的话,大家可以看到它的这个文件类型就是是可读写可执行的一个文件,对吧?呃,所以这就是一个可执行文件,我们的。
25:01
最后要执行的命令其实就是源自这里,就是要引用这个文件,好,所以现在我们已经安装完完成了,那接下来就是启动我们的,启动我们的节点,启动我们的区块链,大家看啊,其实这个命令非常的简单,就是先找到这个目录,然后guess。当然前面我们忘了一一步啊,就是大家先确认一下对吧,是不是装好了,这个是不是有用盖version,大家可以看到这个version是1.8.0啊哦,这已经是一个table的版本了哦,那我那个截图是应该是之前截的一个图是是一个unstable的版本啊,之前是一个好,所以大家安装的版本可能跟我这边不一样,但是呃,只要是达到一定。就是足够,足够之后的版本应该还是可以的,应该就是最新的版本是肯定是可以的,关于够的版本应该是有一个要求是不能低于1.7,所以大家呃,之前安装go是不是低于1.7,这个大家可能再确认一下。
26:15
就是如果要是说低于1.7,有可能编译的时候会出错,好我们确认它已经安装好了,那启动的时候怎么样去启动呢?其实是不带任何参数,它直接就能启动,但是我这里至少带一个参数吧。呃,带一个参数叫做data,这就是directory,就是数据的呃路径,数据目录指定到当前文下面我建一个data的文件夹吧。大家可以看到它启动了之后就是这个样子,会看到他输出的信息,它会有一些这个,呃,Start p two p node p two p的一个节点会起来,然后下面他会说会给他分配一些这个存储缓存和这些文件的handle的。
27:11
呃,下面是他会去写一些这个初始的block,就主网的初始block,大家可以看到,现在我连接的是就是主网,对不对,就是我们不带任何参数,默认连接的就是就是主网,然后下面最下面大家可以看到啊,它已经starting p two p network p two p网络已经是启动了。然后它的udp。Listen up,然后呃,RLPX的listener up,然后大家可以看到后面它的这一个端口都是30303,这就是它的p two p网络,咱们前面其实也提到过一句,就deft p two p的协议里边,它的那个端口号,互相发现端口号,监听的端口号就是30303,最后还有一句叫IPC and point open,这个是它会打开一个IP,应该是叫做进程,进程间调用啊,应该叫进程间调用,所以这相当于是它就给我们外部访问提供了一个接口,提供了一个接入点,用进程电调用IPC的方式去去提供的,呃,这就是他启动之后的一个状态。
28:24
如果说就是我们现在这个呃网络网络正常,而且就是说呃比较给力的话,他现在应该就要开始同步区块,诶刚才我们好像看到弹出一个好,下面多了一句,对吧,Block synchronization started,也就是说区块的同步现在开始。所以大家可以看到,但是可能我们的网络太差了,我这个同步可能又会占大家的这个这个资源,而且我现在同步模式其实就是想要起一个全节点的模式,大家可以看到这个网络如果差的话,所以就是只是告诉他,告诉我你现在开始同步区块了。
29:05
网络差,我们是要找周围的全节点,然后去拿所有的区块数据嘛,所以现在可能周围都都连接不到,而且即使连接到了这个数据也下载不下来,好我就先把它停掉了啊,因为启动全节点确实对于我们来讲没有什么意义,但是大家可以先就是大概的看一下这个这个东西它是什么样的,其实就这么简单就可以起一个全节点,好呃,大家的源码都下下来了吗?好,那大家先做一下我们这一个安装,然后都已经做完了是吧?嗯,挂掉啊,挂掉了没没有下好是吗?下了那可能还是还是网络的问题是吧?呃,这个我我我还是就是先不要做这些区块同步的操作,这个多给大家一点时间,大家可以先就是看一看文档,先消化消化刚才说的这些东西,然后呃哦,现在可能还稍微早一点是吧,那我们再再多讲一点。
30:05
后面的东西,因为我这里如果要是直接去连接,连接我们的主网,连接公网的话,又会又会占这个带宽的资源,所以大家在一起抢这个带宽确实还是不行。这里。大家可以看到我这里给了另外一个命令,我刚才给的这个命令,大家还记得我是我是怎么写的吧,就是杠杠data DR,然后我设定了一个这个,呃,同步的去这这其实就是指定了我要同步数据的一个存储的位置。大家可以看,我在这里是不是就多了一个大家找一下啊,叫做data的一个一个目录,这个data大家如果仔细去观察的话,一开始我们下下来的源码里面是没有的,这其实就是我刚刚创建的,大家不信的话,我们可以去看一下它的创建时间贝。
31:09
啊,今天的下午02:38,就是刚才两分钟前,所以呃,我们可以看到就是前面的这一个命令,它到底是什么意思啊,Guess就是我们想要就是就是我们的命令了,对吧,已经生成了这个可执行文件,我们如果要执行跟客户端相关的所有的东西,肯定都是要先敲这个盖后面的杠杠data DR就是一个它的数据存储位置的一个配置参数,前面是参数,后面是值,这个值指定的就是一个目录,如果这个目录没有,就会直接在这里新建出来,好,我们看一下,但是现在可能我们这个里面没什么数据,没有同步到什么区块,但是它里边也应该会有一些东西。
32:00
我们看它里边有一个叫做guest的文件,呃,目录,还有一个叫做key store的目录,那大家肯定就知道了,Key store这里面什么都没有,因为我们没有账户嘛。之前我们说过就k store里边存储的就是加密过之后的私钥,对吧?呃,所以我们现在连账户都没有,肯定它里面是空的,另外我们再到这个盖目录下面去看一下,大家可以看到这个盖目录下面最前面最醒目的就是p data,这其实就是我们的区块数据,如果我们要是起一个全节点的话,之后这个目录会非常非常大,非常非常庞大,正常的话,我记得我今年早些年的时候,呃,不是那个早早些时候啊,今年早些时候同步全节点的时候,最后同步完了的时候,应该就是接近90G的样子,好像是我我记得应该是大概这个数量,但是之后它还会不停的增长,因为还还要不停的同步新的区块嘛,之后会越来越大,呃,在在后来我维护的时候,它已经到了120多个G。
33:13
呃,如果我现在还在维护他的话,肯定是现在已经更大了,所以大家可以想到这个残节点是一个什么样的状态啊,呃,后面的这个not key的话,这是这是我们节点的一个一个唯一的key,一个编号,如果要是我们跟周围的全节点去做这个节点发现的时候,可以把这个P值写进去,去做这个节点发现,呃,在后面有一个这个no的一个文件夹,它下下边的话,其实也是一些,就是基本的这些存储的数据,这个数据主要是跟noe信息有关的,就我们这个节点信息相关的一些东西。最后是一个transaction,呃,RLPRLP是这个应该叫呃电,呃,我一下有点想不起来这个这个缩写应该是应该叫变长编码前缀,呃具具体的可能我记得不是特别清楚啊,所以大家简单理解它就是一个一个编码的方式,以太方里边的很多东西都是用这样的一个编码方式来来去做做处理的。
34:31
好,这就是我们看到刚才同步区块之后发生的这些事情,他在我们的这个目录下面就写入了这么多数据,如果我们能一直同步区块的话,这个目录会越来越大,越来越大,现在这个目录其实对我们已经没有用了,我们直接把它可以把它删掉好。
我来说两句