00:00
好,那么接下来我们再给大家介绍一个,就是种子区块链的一个一个东西,这个是什么呢?就是前面我们这是把我们这个index简单的搭起来了,然后我们真正要去使用的时候,大家就会发现,呃,我们区块链上其实什么数据都没有。那我们区块链上如果什么数据都没有的时候,我们现在如果去加载页面,那是不是就发现空空如也对吧,什么东西都没有,真正我想要去添加的那些信息什么都没有,所以这个时候我怎么办呢?我先去可以去写一个脚本。所以这样的一个种子区块链,就是说我们通过travel的脚本系统去提前去让一个JS脚本,然后就把我们想要的测试数据,或者说我们预设的。用户数据,用户数据全部写到里面去啊,所以大家可以看到啊,我们就是用这个窗口控制台,如果我们要去添加这个用户信息的话,大家肯定就是一行一行命令的去输,对吧,假如说我们现在没有脚本,我们肯定就是想要。
01:11
预设一些用户数据的话,我们是不是要启动呃,窗口控制台,然后一行一行命令往里添加,对吧?我们就去写1COM store,然后呃,点deployed,点赞,然后拿到合约实例之后ADD product to stop,就是我们之前的这种写法,对吧?一行一行的敲,那我们肯定不希望就是这么麻烦,我们如果要是经常要快速做测试的话,一行一行敲显然是没有效率的,那我们怎么做呢?那之前我们其实讲过,我们自己可以跑脚本,对吧,那这里窗口也是提供了非踌速非常方便的,就是一些脚本的这个过程,大家可以看到我们这里要写一个脚本,什么样的脚本呢?其实非常简单,就是把我们要做的添加的这些产品的数据直接就写到里边来。
02:01
好,那这里的话,我就不单独的再去添加这个了,我看看啊,我这里还没有写是吧,没有写的话,那就还是写一个吧。我们在外层添加一个文件,这个。叫做C的点JS,就是表示我们一个种子区块链的一个文件,对吧,那这个文件里边我们要做的事情其实没有什么特别的,就是把我们想要在控制台里边一行一行敲的命令在这里边实现一遍就可以了啊,那大家肯定想到我一上来是不是就应该呃,直接去。1ME1ME store对吧?看这个哦,它上面是还写了这个引入我们这个,呃,Eerrim JS点呃杠U这个其实要用那个杀三方法对吧?然后我们这里如果不用杀三方法的话,大家不用管它就可以了,所以大家看到我们下面其实就是直接把这个我们的solid文件这个require进来就可以了,那这个写法其实是我们的,呃,就是之前大家会看到就是在这个呃传统的写法里边,它的框架写法里边是import的那种写法,我们在这里是可以直接用JS的这种写法,对吧?啊,当然这里其实还是travel是有artifacts.require的,对吧?啊,这个是用到了artifact.require之前我们写那个T的测试脚本的时候也是用这个方法写的,对不对?大家还记得我们之前写的JS的测试脚本吗?啊,里边也是这种。
03:42
方法,所以大家可以认为这就是跟测试脚本类似的一个东西,只不过这是不是在做测试了,而是直接要上面去添加数据。好,那么我们直接定义一个E,这个确实不好拼啊,我们让它等于r t facts。
04:04
点require,我们把对应的那个文件要引入进来,对吧?那个文件是1MOR store.solidity文件,好,引入进来之后,相当于我们就已经获取了它的一个实例,对吧?那呃,接下来我们就可以直接用它了,In commerce store.deploy的。大家肯定都已经想到了deployed点赞,然后在这个过程当中,大家就会想到我们直接拿到这个合约实例,然后就可以i.ADD product to product to stop对吧,就可以直接把我们的数据往里添加了,对不对?那这里我就直接复制我们这里的数据啊,IPHONE5是吧。
05:06
好,直接把它添加进来,大家可以看到这里还定义了一个AMOUNT1和current time,所以我们这里是不是还得就是按照我们之前在pencil里边控制台里边写的那种方式定一下这两个变量呀?啊,所以大家看到这个我们的AMOUNT1就等于Y3.from尾啊,兔尾对吧,这个是要把以太转成尾对吧,一一个仪态,然后另外我们还有一个叫做current time的一个变量,这个变量我们要用到这个me round对吧?做四舍五入里面是要做什么样的四舍五入呢?Date,创建一个当前的时间除以除以1000,拿到当前以秒计的时间戳。
06:00
然后把它四舍五入对吧?啊,因为这个除下来这是一个浮点数在小数里,好,那么我们用了有了这个current time之后,大家就可以看到我们已经插入了对应的这样的一个变量,那我们这里看一下后边应该还要点赞的,对吧。应该是在。这里点赞是不是这个括号一多就有点看不清楚啊。好,我们这里应该是在这里去点。然后我们可以直接拿到它的结果对吧,然后我们直接看点log就可以了,诶这里为什么一直报错,看一下肯定就是我们在敲这个的时候。我们把它先回车一下,看一下啊。但是大家知道JS里边我们是最好是不要回车的,对吧,JS里边回车会有问题。
07:03
来判判断一下,这个哪有问题啊。呃,这个好像有问题对吧,这个是花括号。所以这里应该还有一个画括号,把外面来括住对吧?诶应该是这样是不是对吧?前面这个是ADD的这个点赞,然后这里是画括号,后边是这个点赞的大括号对吧?好,刚才顺序有点乱啊,好,所以大家看到这就是我们现在添加的一个,就是添加了一个产品了,对不对,那大家会想到我们如果到时候真要把它显示出来的话,这里是不是不能用这个写死的这个假的呀,我们还得用之前我们上传的那个东西对吧?所以这里就牵扯到我们还要去把我们的。IPFS给打开了对吧,好,还是去到我的IPFS那里,大家IPFS都装好了吗?装好了是吧,下不了。
08:11
呃,我我是说昨天大家那个IPFS节点的那个程序都装好了吗?装好了是吧。网不好是吧,好,那今天这个IPFSAPI可能装也得装一会儿的,那大家这个可能等一会儿就还会卡在这里啊,不过没关系,我们可以这部分可以直接往后走啊IPFS,呃,我们装在了这个里边,对吧,IPFS大家还记得那个启动命令吗?对吧,直接启动它的这个守护进程,嗯,直接。IPFS。我们去启动一个DIA。
09:10
刚才这个error报的有点奇怪啊,我们我们看一下这个能不能访问文件就可以了,对吧。好。呃,我们还是到对应的这个目录下面来。IPFS。IPFS,我们比方说我还是艾特一下昨天那个,因为我忘记那个他的。他的哈希是什么忘记了。所以我在这里还是。把这个路径去copy一下。重新,大家如果忘记哈希的话,其实就重新艾特一下那个文件也就能拿到了,对吧,IPHONE6看一下这个哈希啊。好,我们拿到这个哈希,大家会想到我如果要是在local host能够把它找到的话,那应该是可以就可以可以访问了,对吧,大家这里注意啊,我启动的时候大家会看到我这个是改了它的配置文件了。
10:15
所以本地启动不是8080,呃,我这里启动的是9001端口啊,大家因为之后我们肯定启动别的一些8080是一个常用端口对吧?考虑到这个问题的话,大家可以去做一个更改啊,9001访问的时候IPFS对吧?然后把这个复制过来好可以访问,所以看起来我这边是正常启动了对吧?好,那么我们现在IPFS既然正常启动,那我是不是就可以直接把这个替换过去了,对吧?就直接把这个切换了,等一下就能直接看到我这里的真正的这个信息了,好那么我这里还保存了一个其他的一些这个。
11:01
这些哈希啊,我就直接我已经上传的文件,就直接把这个哈希替换一下好了,好那么大家可以看到这就是我们种子区块链。能够上传的一个。我们自己直接添加的一个产品对吧,那大家当然可以把这个再再复制一遍,呃,就是我们在添加一些别的对吧,比方说我这里边啊,当然我这个是IPHONE6啊,这个就无所谓了,对吧。比方说我这里IPHONE6S吧。把这两个哈希复制过来,大家自己可以先用IPFS上传文件,然后把自己的这个哈希都copy进去,好,我们看一下这个课件里边其实是给了这个大家不同的这个设置的实例的,对吧?比方说第二个这个设置的它的起拍金额就是三,然后它的这个结束竞价的时间是400秒,对吧?大家在设置的时候最好也是把这些做一些不同的设置,比如说就是呃,如果完全一样的话,这个我们添加这个种子数据就没意义了,对吧?啊,所以这肯定也是一样的,呃,所以那接下来呢,这个我就不详细敲了啊,大家可以直接把把这边就是自己设置好之后,自己都就是敲一遍,然后把它都放上去,我这里的话就直接复制过来,大家会看到就会生成这么多个自己的产品,对吧,上架这么多产品,那大家注意最后这一步。
12:39
其实不是上架产品了,最后这一步,这是干嘛?对,有多少个产品,因为我们我们当时定义了一个计数器的对吧,叫product index,这是一个全局变量,所以它是直接去调用了全局状态变量的这个get函数,对,直接就拿它来call,然后直接把它打印出来,所以看一下现在到底添加了几个产品,那我们这里添加之后呢,大家可以看一下效果啊,我们怎么样去运行。
13:09
呃,要运行的时候,大家会想到我们肯定还是需要需要起自己的节点,对吧?所以我们现在做做这个测试的话,可能就还是用gash,当然大家如果习惯用这个,呃,就是自己的思链的话,我觉得也很好,因为思链上的行为可能会更复杂一点,然后就是呃,大家遇到的问题可能会更多,那能解决更多的问题,其实也是挺好的啊。好,我们进入到这个GA纳SH目录下面,把GA纳起起来。好,呃,那我们这里大家会想到我们是不是应该先要migrate一下,对吧,因为假如你不migrate的话,我们现在兴起的这个GA上是不是还没有这个东西啊。啊,我这里大家会看到我不停的在在谈这个,那因为我这里起着ma mask,所以呃,大家觉得这个简便方法是什么?其实我可以直接把它切一个网络,是不是他就不会去访问我的本地了?好,现在这里就不谈了,对吧?好,我在这里做一个MT。
14:22
呃,大家那边可以先把就是我们这个IPFS相关的东西先装一下,要不然之后确实还是比较麻烦,呃,首先我们看一下现在这个目录下边,诶,这个目录下边好像又是没有这个。我们的那个C的文件啊,这里已经添加在这里了,但是这里又没有看到,呃,确实是我这个虚机的环境经常会遇到这个问题,所以我们先退一下,然后看看进去是不是可以看到了。
15:01
好,现在可以看到这个C的文件了,对吧,但是看起来这个C的文件好像。大家看我这边创建之后C的文件是完全没有任何权限的啊,所以我们甚mode一下666,好,现在应该我们可以可以直接访问它可以用了,对吧?啊,但是这我们就还得重启一下galash了,这个就是自己的虚机环境,毕竟还是不如实体机对吧。大家如果要是有更好的这个实体机环境的话,当然还是更好,直接装一个Linux系统的一个电脑啊,直接用那。好,那我们这里就travel。
16:05
好,现在已经migrate成功,那大家看我们在窗口里边怎么样去执行我们那个脚本的,其实非常简单,直接exe exc执行的意思对吧?所以窗口执行脚本的话,就这么,就是用这么一条命令去执行就可以了,好,我们现在就在执行这个CCGS的脚本,我们看一下这边的状态啊,啊大家可以看到,诶这里有问题了,对吧。看到find artifact for这里写错了对吧?这个这里写错了对吧?对,就是这个自己试一下的话就会发现,不细心的话到处是坑。大家可以看到这边啊,这里又有这个type error啊,Fn is not a function,我们哪里又定义了FN了。
17:08
好,这这里大家注意啊,我们忘记写什么了,就是我们整个的这个脚本写的模式是什么呢?是要用travel脚本的方式,就是大家还记得之前我们测试脚本怎么写吗?对这个确实是疏忽了,对吧?大家可能没有注意到,这里给大家说一下,这里我们要用travel框架去做这个脚本调用的时候,它不是我们直接写那个note脚本的时候,大家直接照着这个顺序写就完了,对吧?大家发现travel要调用这个脚本的时候,你必须要让travel去执行,所以他必须是把我们的这个执行作为一个函数,然后export出来。然后travel才能够去去,就是把我们这一块东西能够认出来,然后去做执行的,所以这个这个我们确实刚才没有注意到啊,我也是疏忽了这一步,好,所以我们加上export.module啊modu.xport对吧。
18:16
module.exports呃,然后我们可以直接输出一个,大家会发现直接输出一个函数对不对。然后这里边的这个call back,其实我们这里边是没有用到的,对吧,所以说大家这个call back可以写也可以不写,Export直接等于。方式,然后我们把这个括在里面,我们要。输出的东西就是这里边大家写好的这串东西,好现在大家可以看到,就是我们用这样的模式,它会输出一个函数,这个函数的执行是我们定义好的,对吧,就是我们真正的这个步骤,所以这个脚本其实大家会想到,它其实不是像node那样去直接执行的,Node这一个CD就执行了,对吧。
19:16
如果我们写noe脚本的话,就直接noe sit,那我们就不用写这么复杂,直接把这个流程定义好就可以了,但是如果我们用travel这个框架的话,它的定义是我们必须要要mo.export把它,把它暴露出来,然后才可以去调用的让travel的模块,再用note方法去调用这个模块,对不对?来能够想到这个trouble底层怎么去做这件事情啊,所以是这样啊,好,现在我们已经改完了之后再来执行一下,看一下结果。好,这里大家看到我们生成了几个交易对吧,五六七八九十有六笔交易,然后还会看到这里拿到了好几个,应该是六个收据,对不对,最前面还有一个big number,这是什么东西。
20:03
这这个是我们大家还记得最后一句吧,我们去查了一下product inexs对吧,所以大家会发现他们都是异步执行的,所以这个好像最快对吧,查的最快,因为别的是要添加嘛,这个它是直接读,所以确实快一点,这几个都要发送交易的,所以它最先返回的是我们查出来的这个已经有六个产品了,好,所以大家可以看到现在我们就把这个区块链上的产品信息都已经添添加进来了。
我来说两句