00:00
好,那么接下来的话,我先简单的给大家说一下,我们怎么样去用控制台跟我们已经部署好的合约去做交互,前面我们已经知道,Comp直接编译,呃,Migrate直接部署,对吧?那这个东西就非常的方便,非常快捷,我们什么东西都不需要考虑,那接下来呢,大家就会想到我们已经部署上去的这些合约怎么样去交互呢?首先tle conso这个控制台里边我们可以去做交互,好,那么接下来我们就打开一个conso。Pencil,大家知道我们这个pencil连接到的是什么地方呢?就是我们在窗点GS里面配好的那个网络环境,所以进到这里边来之后,大家其实就会看到WEB3点ETH block number,肯定就是自己哦,我这边一直在挖矿,所以已经1000多了,肯定就是我们自己已经呃配好的那条丝链上啊,接下来我们来看一下,就是在这个上面我们怎么去怎么去,就是找到我们之前那个合约,要交互的话,肯定先得找到我们那个合约,对吧,那我们本身这个链上根本就我们看不到这个合约地址啊,我们怎么样去交互呢?
01:20
我们之前的方法是知道地址的话,我们把API传进去,对吧?用APP3找创建一个WEB3里面的抽象和约的对象,然后艾一个地址,就创建了具体的一个实例,对吧?这过程很麻烦,但是我们很明确,在trouble里边所有的这一切都不用去麻烦他,比如说大家可以发现我们在这里边直接有一个对象,就叫voting,能看到吗?我刚才敲的是什么?就叫voting,这里面直接就有这个对象,它就叫voting,所以说别的东西大家都不用去不用去考虑,它直接就可以用啊,这个对于我们来讲简直就是太方便了,对吧?所以这就是叉把这个一个很重要的东西给我们包起来了,这个相当于我们在用的时候就就是省了很多步骤啊,特别的方便,那大家注意它用的时候会怎么样呢?用的时候得这样啊,voting.deployed也就是说相当于我们得定义出来,它相当于是。
02:32
我们已经部署好的一个一个合约对象,对吧,Voting这样的一个东西,然后大家可以看啊,这个命令其实就在我们这里啊,就在这一个,可能这个是相相对后边的一部分,大家可以直接往后面拖,看到这里的命令,然后大家可以看到在travel里边,他给我们把这个。本来我们都都在这个0.20.1的版本里面,我们都得用回调去处理的,对吧?它这里面相当于又给我们包成promise了,对,大家看到,所以这个用法其实跟1.0里面的用法已经很接近了,对吧?大家可以看它是voting.deployed,然后点赞,但是呃,稍微麻烦一点的是点赞里边它还得定义这个,呃,就是定义我们的这个回调。
03:24
所以说它相当于是什么呢?是deploy的,这个是它定义出来的一个promise。在这个promise的回调结果里边,我们可以拿到当前这个voting合约的instance它的一个实力,所以它是用这种方式去拿到我们的合约实力的,好那么大家可以看到下面的调用这个就很简单了,对吧,就就直接还是跟我们在那个0.20.1里面的这种回调的方式一样,直接合约合,他这里的合约名称是合约实例,对吧,这里传进来的这个合约实例,然后去调我们的这个方法。
04:04
就可以去做函数调用了,好那么我们看一下它的效果是怎么样的啊,Deploy的点赞,然后里面其实我们可以直接就是比方说定义一个该做叫voting instance对吧,我们可以用这个对尖头函数的方式去定义对不对?呃,然后在这里边我们拿到了这个voting instance就可以直接那个方法叫什么来着。叫vote for,这个我得看合约啊,不能直接在这里看,这大家一定确确认一下,大家实现的时候可能不一定一样,对吧。好,这个看起来还是对的,叫vote for candidate对吧?好,我们这里直接复制过来vote for candidate,然后比方说我们是Alice,好然点赞对吧,用一个回调把它输出,呃,Result。
05:17
咳嗽点老哎,我们看一下这个他应该是啊,大家可以看到这里边它包好了之后呢,跟我们之前的这个方式还是有所区别的,因为我们之前的方式是错优先的那种两个参数对吧,回调是应该拿到两个参数的,一个error,一个result,那在这个呃插里边它包好了之后,可以直接就是一个拿到这个result就可以了,好,那么我们来看一下它的结果是怎么样的,诶康迪饭。哪里定义错了吗?看一下这边。
06:03
挖矿是不是还正常,哎哟,天呐。哦,大家看到刚才因为我们发的一个义务请求,这边还没有挖矿挖出来对吧?所以等我们挖出来的时候,就看到这里真正的返回了这个result对吧?所以大家可以看到这个详细的一些信息,可以看到这个transaction的一个哈西,可以看到这个它的收收据receipt对吧?在哪个block上面这些东西全是可以收到的啊,这就是我们,呃,在这个travel consol里面的调用跟我们之前确实不太一样,但是似乎是更好用了,对吧?我们之前的话,光这个创建voing的这个对象,我们就得它的这个合约实例,我们就得忙活半天,得有API,然后还得有它的地址,对吧?如果要不知道地址的话,我们重新部署,那那就更麻烦了,所以在窗口里面大家可以看到,部署完了之后,Trouble就会记住我们的合约对象的名称和地址,我们在调用的时候只要用这种方式load点。
07:14
Loed,然后点赞,接下来我们就可以直接拿到它的这个CE,我们也可以把它写成两行,就是就是我前面这一步,我不要这么多对吧?我把这里的这个VO instance把它附给一个,比方说我叫就叫做instance对吧,把它附附出来,然后再用instance去点对外面调用,是不是就是它这种写法,所以我只是把这个都写在一起了,对吧?当然大家可以就是感觉一下怎么样去方便,我觉得刚才就是给的这个方法,可能大家看起来可以更明确一点,就是每一步到底拿到的是什么东西,对吧?呃,我觉得这个方法其实也挺好的,都写在一起,可能大家会有点有点绕,感觉好像这个就不太明确,那这个大家拿到这个instance之后,呃,确实是可以,这个可能大家就看起来更方便一点,对吧,Instance点那个。
08:14
Wonderful大家可以看到直接就可以调这个方法了,对吧,我直接table都可以补全出来,所以这种方式可能更舒服一点,可以用这种方法,好那大家还是自己来试一下这这一块,呃,Travel本身用travel其实很简单,但是可能就是一开始接触的时候呢,他这个migratet的这个机制,还有就是哪些东西在哪里,还有他的那个migratet脚本,这些可能稍微有点不太好理解,但我觉得大家之前已经自己写过自动编译和自动部署的脚本,我觉得这些都不是问题啊。好,那么我们看一下在用它的时候,调用合约的方法去查询一些东西,或者说发送交易的时候,我们的用法很简单,是需要先写上这个voing.deployed,那这个方法就相当于会一步的给我们返回一个当前合约的实例反。
09:14
回来之后我们可以直接用than来去拿到它的实例,对吧,Instance instance,我们用这个箭头函数的写法在里边就可以直接用这个instance去调用了,Instance,那么我们有一个给这个查看。看到有一个查看当前这个候选人有多少票的这个方法,对吧,叫total votes for total votes for,那么我们后面就可以直接给一个人的名字就可以拿到了,对吧?当然了这个也可以直接在后边去扔在穿里边,把我们这些所有方法的返回都包成了一个promise,所以我们不需要再用,当时我们在这个note控制台里边用两个返回参数,然后写到那个呃,回调里边,对吧?大家还记得当时我们都是error,呃,Result,然后两个回调去做先判断error这种处理的,那在这里的话就它非常简单的,我们把这个打印出来就可以了,呃,当然这个查到的这个应该是一个。
10:36
Big number对吧,我们把它做一个to string的处理,所以大家可以看到这是一个异步调用,它直接返回了一个一,对吧,正常的就是它直接返回是一个奥范,但是稍等一下之后就可以拿到这个结果一,那我们看一下这边的log。好,所以大家可以看到就是这边,因为我们这只是一个调用,所以说这边没有就不需要这个出块对吧,也不需要去做任何的操作,这里边好像把挖矿给停了啊,好,那么大家肯定想到,如果我们要是去做一个真正投票动作的话,那就需要发送交易了,对不对?大家可以看到刚才我的这个操作,直接调用这个方法,然后加它的参数,这个方式就是我们之前提到的,如果本来应该有两种方式,一种是send,一种是call,对吧?那么如果我们什么都不加的话,它就会自动判断应该用哪种方式去调用这个函数,所以大家如果是方便去写的话,就直接这么写就可以,当然大家也可以直接,呃,就是在这个total goes for后面点call,对吧,然后再调,我们这个方法也是一样的,好,那么我们在这里可以在。
11:55
再把我们的投票动作做一下instance点投票叫什么来着,看一眼啊,Root for candidate对吧?Root for candidate,那来家看这个我们直接写的话,那当然这里也是就是判定,由他自己来判定对吧?自动判定,如果说这个是一个需要发送交易的方法的话,那它其实就是调用了我们的三好点赞误点,当然这个返回会比较多对吧,前面我们都已经发送过的啊,这里为什么没有返回呢?大家在log,在我们的这个GA这里的log已经发现这个交易已经提交了,因为我没有没有拉泡,所以说还没有出块,对吧。
12:55
所以我们还是进去启动一下这个挖矿,大家当然如果要是用了我们的杠杠div开发环境,或者是直接用了galach的话,这个就不需要考虑这个问题了,对吧?随时都可以出块,好我们看一下现在的这个状况,好这里已经挖出来了,那这里就已经拿到了一个返回,对吧?所以这个时候我们肯定就想知道,那他到底投上没有呢?我们再用刚才的这个total VO for再去查一下。
13:27
大家可以看到现在就是二了,对吧,所以这就是一个很简单的控制台的交互验证,所以可以看到我们的这这一套方式部署和这种调用都是没有任何问题的,这就是我们用travel整个构建起了我们之前的这个D的一个简单的一个一个交互啊。
我来说两句