00:00
接下来这个还得再回顾一下啊,这这就是相当于我们要做项目之前给大家再回顾一下之前的基础知识,如果我们想要刚才说的是我们连接自己的撕链,如果想要连接测试网络,那那怎么办呢?那我们之前其实说过,如果要去直接连测试网络或者主网的时候,我们本地没有数据,那首先我们要做的其实是去同步数据,对吧?所以大家可以看到我这里边启动的时候命令就不一样了啊,当然我这里面没有指定那个刚刚Di data DR I对吧?如果没有指定data DR I,它会把我们的数据放在哪里,大家知道吗?它会放在我们的用户,就是如果在Linux系统里面,它会放在我们的用户的默认文件夹,就是这这是我们这个用户的默认文件夹,对吧,下面会有一个叫做。
01:00
呃,当然我这里边没有没有去启动过,所以说没有这个文件,大家如果不加刚刚对待D的话,在自己的这个用户默认的目录下面应该会找到一个。盖文件夹,呃,大家能看到是吧,所以它的默认启动目录就会是自己的这个用户目录,用户的主目录,所以这里如果没有加的话,他就直接会把这个数据同步到那里去啊,当然最好建议大家还是加上那个目录,指定目录在这里大家看有一个参数叫做杠杠test net。这是什么意思呢?好,这是表示我们要启动盖,要启动,而且连接到我们的测试网络,对吧?那这里所说的测试网络就是主测试网络,也就是我们所说的roster啊,就是network ID是三的那个网络啊,这是测试网络啊,后面还有一个参数叫杠杠s mode fast,这是什么呢?
02:02
这指的是我们可以用快速模式去同步我们的测试网网络,之前跟大家提过一句,这个模式是什么意思呢?那在我们给大家详细的讲过这个黄皮书,呃,也不算详细啊,就是给大家介绍过这个黄皮书,还有一些底层知识之后,那大家就会知道整个区块链系统,它的这个数据是非常庞大的,整个的一个区块,它是包括区块头,然后还有就是所谓的区块体,对吧?区块体里边是有所有的交易记录和书块的信息的,那所有这些信息如果我们全要去下载下来的话,这个非常的耗时间,所以就有另外一种方式啊,就是如果大家用所有完整的启动一个全节点的方式去启动的时候,他会下载什么东西呢?他会把所有的完整的区块头和区块体全下下载下来。而且要。一步一步的把所有的交易去做验证,那这个过程非常非常的耗时间,就也就是说他会把整个的区块链历史在你本地的机器上去重新的重演一遍,重新跑一遍,那这个当然就非常时间了,那为了不这么耗时间,我们就有另外一种方式,就是杠杠s mode fast这种方式,它就是我只下区块头和区块体和交易的收据。
03:27
Receipt,然后我不用去执行每一步,每一个交易,不用去把它的状态转换,每一步状态转换一个一个重演一遍,然后最后只要拿到一个最终状态就可以了,这是刚刚fast的模式啊。呃,这样的话就会稍微快一点,大家看到下面给了一个这个数据啊,就是呃,这个下载这个大概要多长时间呢?当然这个下载的时间主要是取决于你这个网速,内存,硬盘这些硬件和这个网络环境的一些配置啊,这里面给了一个数据,大家可以参考一下,一台8G内存,SSD硬盘和十兆网速电脑,大概七到八个小时这个。
04:10
如果你用快速模式fast模式去同步的话,呃,需要的硬盘空间大概是六到七个G。呃,这个我没有专门同步过robsten啊,但是我估计可能不止这个数,因为robsson现在已经是有400多万个区块了,所以呃,我的这个数据可能是比较滞后,因为我是在这个就是一些那个官方文章里边去,去文章里去看的这个数据,所以这个可能数据比较滞后,有可能是半年一年前的,对吧?呃,所以大家如果要下的话,应该还是会比较这个会比较慢啊。呃,另外就是说我们为什么要连这个roson呢?它有一个好处,其实就是你可以在ER上去查,对吧,我们自己的这个思链,你在ER上不好查,没有这种可视化的查询方式,所以这也是就是说,如果大家有时间的话,建议大家还是去步一下节点,就是同步一个测试网络,主主网可能太慢了啊,那个就是测试网络,可以去同步一个试试。
05:13
啊,另外就是我这里边建议呢,如果大家想去同步的话,可以用riby来替换rosson,因为robson其实还是比较慢的,呃,大家可以知道,因为它是真正的这种我们的测试主网就是相当于是官方测试网络嘛,呃,它上面的区块也是足够多,而且就是我们去发交易的时候可能也会比较慢,因为它同样也是pow的这种确认方式,所以我们可以切换到rink y rink y的这个方式呢,呃,我专门这个同步啊,就是直接去同步下载区块,大概是一个多小时,然后同步所有的状态大概是四到五个小时,呃,最后显示到这个imported new train settlement的时候,就是完成同步的一个状态,那大家可以尝试一下,这个大概也就是你起上一个晚上,如果你的这个电脑还够给力,网速够给力的,呃,你睡一晚上基本上它肯定同步好了,呃,当然这个就是一个同步。
06:13
的命令啊,就是把这个杠刚test test net,然后改成刚刚RI就可以了,对吧?当然大家最好还是要指定刚刚data DR,这个我们就不详细说了,这里边给大家再回顾一下它三种模式,在同步的时候有三种模式,一个叫for s,也就是默认的时候,大家如果呃不加这个S的话,默认应该是这个模式啊,它会从中文节点获取什么呢?获取所有的区块头和区块体。而且从初始区块开始重演每一笔交易,然后去算我们当前的状态,验证每一个状态,那我们刚才说的这个fast mode呢,就是快速同步模式呢,它也会拿到所有的东西,但是不会重演交易,这就是区别,呃,当然最后fast mode同步下来之后,其实它也是一个全节点,因为所有的交易信息都有了,对吧?只不过就是你之后要去算的时候,你再重新去算一遍就可以了,数据是都拿下来了,另外还有一个清洁点模式,清洁点模式呢就是light light啊,就杠杠杠杠simplepo light,这个就是我之前试的时候这个模式好像还不太好使。
07:29
呃,大家可以想试的时候可以去拿这个模式试一试啊,它是只拿当前状态的,没有历史数据,也就是说它是只下载区块头不下载区块体的,这个理论上会会快很多,但是你如果要去验证一笔交易的时候,你就还得去从其他的全节点那里去拿相对应的这个交易数据,呃,所以大家可以看到就是这个清洁点,我们说过就跟比特币里边的PV是差不多的,对吧,这种方式交易方式是差不多的。好,我们再说一下这个工作流啊,呃,大家如果要是说我们现在真正要做一个这样的项目,真正到工作当中去做一个实际项目的话,我们的工作流应该是什么样子的呢?首先开发自己的合约,那开发完合约之后,我们肯定要自己随时去测嘛,对吧,一边开发一边做这个单元测试,那这个一般是在什么地方呢?开发环境一般就是开那啊这个基本上就是。
08:30
是不会有什么问题啊,然后还会有一个叫做sta environment,或者叫testing environment,这个就相当于我们已经是有一些比较完整的功能了,要去做一些综合测试的时候,对吧,或者说就是有一个阶段性测试的时候,这个时候往往我们就需要去真正部署到测试环境里面,或者这个就是大家我一个产品已经开发完了,那你肯定不能开发完直接就上去主网啊,那自己在本地GA纳测试测,测试完这个肯定不算数,肯定你还需要去布到测试网络当中,让别人都一起玩一玩,然后看看他的行为是什么,所以这个时候要测试的时候,一般就是rosster riby,还有coen,或者你自己的这个思链也是可以的啊,因为大家可以看到,就是自己的思链上面的话,你的历史数据都可以留存,只不过就是跟别人的交互会少一点,但它也是可以,就是总比Galaxy这个每次启动的时候都重新。
09:30
账户都都会重重置,比这个要好一点啊,啊,所以这个模拟环境可以用思链来替代,最后生产环境那没有什么好说的,肯定就是主网了,对吧?所以这是我们工作流的一个部署的阶段,那之前我们在做测试的时候,肯定就是开发完了之后都放到GA纳上了,所以接下来我们给大家的例子就是要把它放到自己的丝链上去,至少进行到这一步,我们可能不会去直接放主网,对吧,毕竟那个是真金白银的发译态的。好了,前面这个相当于也是一个回顾,也是一个我们就是基础环境的一个一个讲解,让大家先有一个概念,我们应该要整个的工作流程会会是怎么样,接下来我们就去安装travel travel呢我们已经说了,它是一个以太坊上的开发框架,Di开发框架,那它的安装方式非常非常的简单,就是。
10:30
带有NTM的话,NTM in install,这是我这里用了一个全局安装NTM in install g,呃,这个就不多说了啊,大家安装完毕之后可以把就是啊,当然大家如果之前已经配过这个全局安装,肯定它就是默认在自己的环境变量pass下面的对吧,那大家安装完了之后,如果已经加到环境变量里边,可以直接用trouble命令了,大家可以测试一下,就是大家如果要是正常的话,应该能够。啊,窗口下边的所有命令对吧,可以看到,那么我们在这里给大家简单的说一下,大家可以看到一开始就有一个窗Le in it,这就是大家可以在一个空的目录下边去创建一个新的,而且是空的一个,呃,就整个DF项目对吧?它这里就就叫以太坊项目,所以大家可以就是直接用travel in,这个非常简单,我这里就不给大家去去做啊,可可以去看一下这里去到project下面去。
11:37
新建一个test目录里面是空的,那么我可以直接travel in,大家可以看到在in的时候,它其实还是会去下载一些东西的,但是这个东西非踌,大家可以看到,它下载完了之后,自己的目录下面会有这么几个东西。一个是travel.js这是其实就是我们的一些配置文件了,当然它还有一个就是原配置文件叫做con.js,这个我们往往都不用啊,直接用travel.js就可以,那下面还有几个目录,一个叫contract,那大家知道这肯定就是放我们的合约了,对吧?还有一个叫test,那肯定这就是测试,我们的测试的一些文件放在里面,还有一个叫做migrations啊,这个可能比较特殊一点,它是什么东西呢?对他说是迁移,那这个其实是我们在做部署的时候要用到。
12:36
啊,它在trouble里边所谓部署的概念,它全归集到迁移这一步里边,迁移,所谓迁移就是什么呢?就是把我们从原先的版本再重新部署一下,这就好像是一个迁移的过程一样,对吧?所以说这是这个迁移的概念,好,我们就先简单的说一下,之后我们再详细说啊好,那么我们这里给大家推荐的方式呢,就是不直接去in了,我们直接去下载一个,呃,这这里叫就是下载一个travel box啊什么是travel box呢?呃,就是大家可以看到这条命令,Travel on box one pack。
13:18
首先on Bo是什么意思呢?我们在这里看一下前面的这个介绍啊,我们看一下on box的意思是去下载一个box。什么叫travel box呢?Travel box是一个预构建好的travel project,也就是说这是已经别人已经给我们创建好的一个travel项目,我们不需要再去重新edit创建一个空的窗项目了,直接拿别人已经下就是创建好的就可以了,所以一个travel box就相当于大家之前是不是也学过这个docker之类的东西,学过是吗?没有啊,没学过哦,那之后有可能有机会的话,可能就是再再给大家找时间去介绍,就是大家可以认为这个刷boxx也是像一个容器之类的东西一样,我们直接下下来就可以用,但是它跟docker还不一样,它不是那样的容器啊,就是它没有包的那么沙盒,沙盒化没有那么那么那么强,但是大家可以认为它就是像一个盒子一样,封装好的拿下来直接用,所以我们这里需要的是就是travelle on box啊,这里先要跟他这个是必须是一个空目录才能够去直。
14:35
行这个超on box命令的,所以我们这里给大家推荐,比方说新建一个目录叫simple VO by travel d,然后CD进去,这里先给大家推荐是全局安装一下外派。然后我们去on box这个we pack,这里的we pack呢是一个名字,就是官方给我们推荐出来的,叫做we pack这个名字的一个travel box,它里边就相当于内嵌了一个外PE组件,那本身外PE是什么东西呢?大家之前如果做过前端开发的话,可能也会有所了解,对吧,可能也会比较熟,外pad其实就是一个啊,大家现在可以先把这个,就是把这几个命令先执行完啊,因为trouble home box这个下一个这个wipad的时候可能时间会比较长,因为它那个,呃,本身这个里边是打包了很多东西的。
15:31
所以大家如果想要去下一个travel box,就是自己先先去把它执行,执行完了,然后就先在那儿停一下,我自己在家里边下的时候,这个一般情况下十分钟左右啊,啊,大家可以先去先去下一下,好,大家一边下着我就一边说啊,什么是wipa呢?呃,这里先给大家说一下,就是这个on box完了之后,它这个成功的一个页面是什么呢?就还是这个,就跟刚才大家那个trouble那个看到的差不多,它这个页面就是,呃,有这个什么on box successful successful,然后sweet有这么一句,然后下面给出这些命令,这就是正常的把它下载好了,呃,那这个外PE是什么呢?这是一个基于。
16:20
呃,就是这里边travel on box web pack,我们这里的这个one pack,这是基于web pack的一个travel box了,那本身travel box是什么呢?这是一个非常流行的前端。管理,管理这个模块依赖和进行打包的一个管理工具。呃,所以这个就是我们如果要是去真正构建一个前端项目的时候,往往都会用到外派D,所以这里边就是给大家一起也都融合进来,一起来说一下,那等会儿怎么用呢?大家就把这个先下下来,我们看看它里面是什么东西,然后再给大家讲,呃,这里边我们看一下这个好,就我们继续来给大家介绍一下这个窗口吧,窗口这个东西啊,就是,呃,这里给大家这个介绍,就是说它是目前最流行特异太坊低焊开发框架,呃,这这是这是官方说法的话,它是一个世界级的开发环境和测试框架啊。呃,就是大家如果要是之后出去去构建自己的项目,去做一些应用的话,可能基本上就是直接上手用这个了,不会像我们之前那样自己去去写脚本啊,去自己去那个用GA做部署啊,呃,基本上不会那么做啊,都都用travel就可以了。
17:40
所以这里我们也是肯定会给大家介绍一下,那它呢是基于JS的,所以这也就是为什么之前跟大家说这个JS比较重要啊,当然就是说其实之后给大家讲的这个trouble里边的一些组件和它一些流程之后,大家就会发现它其实就是跟我们之前讲的差不多,它里边的工作机制就差不多好,那么trouble有哪些功能呢?我们看一下吧,内置的智能合约编译、连接部署和二进制文件的管理。
18:11
那大家看到这其实我们之前自己也已经能干这个事儿了,对吧,我们自己有这个,呃,编译脚本,有部署脚本,呃,还有测试脚本,它第二第二个这个就是什么合约自动测试,对吧?我们能想到他肯定也得自己去写测试文件嘛,只不过就是他给我们统一管理起来而已,呃另外就是本化的可扩展的部署于发布框架,当然这个东西就是我们可能稍微没它这么复杂,没它这么就是不会像它这么完善,呃,到时候我们再看啊,另外它还有就是可部署到任意数量公网或私网的网络环境管理功能啊,也就是说它还可以自动去配置我们要部署的网络,那这个其实大家可以想到,那它肯定就是改一个端口号嘛,对吧,我们相当于gas起不同的端口,这个其实我们要如果要脚本化的话,也肯定也是可以做到的啊啊,接下来就是它还基于这个NPM和ETHPM的包包管理,这就是基于E。
19:11
也基于NPM,大家熟悉NPM,这个都不是什么问题,ERC190标准,另外它还有与合约直接通信的交互式的这个控制台,呃,也就是所谓的叉Le cons,等一会儿我们装好了之后进去看一下,其实这个也都非常简单啊,呃,然后可配的构建流程支持紧密集成,那这个东西其实就是说大家可以把这个整个构建发布,整个这个流程都可以把它集成在一起,比方说我们这里用了wepad,那当时我们在做自己D简单投票这个D的时候,大家还记得我们还自己写了那个server.js,对吧,我们还自己去把那个J,呃,JS和这个GML全全自己写好,然后写了一个server note写了一个server,然后去跑这样一个server,那基于外pad呢,它其实就非常非常简单,它内置的还有这个测试的server的环境,我们这些东西都不要。
20:11
去考考虑都可以,直接把它打包好之后就可以丢到服务器上去了,这个就都非常简单啊,最后就是穿环境里面,它支持这个执行外部脚本,当然这是一些扩展功能了,我们暂时可能不会用那么多。好接下来给大家说一下,就是穿里边用到的客户端,我们写的智能合约要部署到链上做测试。其实travel呢,他也不会给我们自动起以太坊的客户端,对吧,他不会给我们做这件事情,所以说这个事情还是我们要去做的,所以这就是为什么一开始我们要自己先把自己的丝链先起起来,所以呃,大家可以看到啊,就是部署丝链,呃,一方面就是我们可以自己去用gas去启动,另外一方面,如果是一开始做这个就是单元测试的时候,那travel它在开发阶段通常起的四链呢,就是感纳是一类的东西。
21:10
Travel官方推荐的客户端思恋做客户端就是这两种形式,一个是gatch,一个是travel develop travel develop的这个其实啊,大家可以认为它就是一个travel内置的一个GALA,它的行为跟GALA非常非常的像,呃,等一下我们去去敲一下就知道了啊就是大家可以看到这个穿Le BA下面敲这个穿Le develop,呃,Develop就可以进入,就可以启动一个travel口的develop环境,然后就可以看到它会自动给我们生成十个账户,然后默认里边有100个以态跟GALA完全一样,然后呢,它会自动就进入到一个pencilo一个界面里面去,那这里边唯一要注意的就是如果在里边去执行trouble命令的话,就要就省略,就是trouble执行命令的时候,前面那个trouble就可以了,比方说刚才我们看到那个trouble in,前面人trouble对吧,同样。
22:11
然后还有很多命令,我们这里看到可以comp migrate deploy build testbug,很等等等等,如果要在cons troublele develop里边去执行的话,那直接省略前面的trouble就可以。好,我们来看一眼啊,说这么多,我这里边是已经哦,但是这里边应该已经起了,对吧?来看travel怎么拼来着,开了是一是吧?那大家看这个跟GA纳完全一样是不是对吧?上面这个accounts,然后下面是private case,所以其实trouble的内置的这个develop,它其实就是内嵌的一个galash,或者是内嵌的一个test rpc,就是大家知道GA纳SH以前叫test rpc嘛,所以在里边大家可以看到,我看这个有没有WEB3呢?大家看里面就是WEB3对吧,有没有web3.eth大家看都有对吧?web3.version大家看一下。
23:24
0.20.6,哎,这就是之前我记得好像群里面大家问说我们用哪个版本对吧?穿里边内嵌的版本就是0.20.6,当然这是我这个版本的trouble啊,大家先装,装完了之后看看这个版本是什么,大家可以进去看一下,所以这也就是说为什么我们一开始给大家举的例子都是用这个0.2几来做的,因为他现在直接用窗口去做的时候,它默认里面的WEB3版本也是0.2几,因为1.0还没有正式发布嘛,所以我们前两个项目用插口来做,大家看接口的这些调用方式也都是0.2几的这种方式,最后一个项目到时候我们可能就是用1.0给大家来做一个介绍,那那个时候我们可能就就不用插走了,我们用自己构建的那一套脚本去做这个部署编译,编译部署什么的,然后到时候我们用1.0的这种方式去写好,那这个是这个就是题外话算是啊,这个里。
24:24
大家注退出也是点啊啊,这里说一个这个一个题外的一个小背景啊,就是大家知道该纳和穿是什么意思吗?这里给大家介绍一下啊GA纳SH是奶油巧克力,然后穿uff是松露巧克力的意思,所以大家可以知道就是松露巧克力一般就是以奶油巧克力作为内核的,本来就是一个奶油巧克力,然后上面加了松露之类的东西构建出来的,所以为什么它叫trouble呢?它就是以改纳什为盒的,所所以就是上面的它以这个奶油巧克力为盒,然后撒上可可粉是吧?所以这两个产品名字就挺贴切这样一个东西,呃,它里边内嵌的这个develop就是一个干纳SH对吧,基本上没什么区别,我们已经熟悉改纳SH了,这个就完全没有什么难度啊好,那这是这个tle的这个环境和客户端。
我来说两句