00:00
大家看一下这边的实现还有一些什么东西啊,就是这边要一开始先把这个内容清空,然后呢把它,所以大家会想到我们每一次去查询的时候,你是不是不能直接在后面填呀,应该把之前的内容还得清空,对吧?因为之前可能就查过的,所以说每一次查询应该把之前的先清空,所以这个考虑还是非常对的啊呃,然后下面大家可能想到我是不是还应该去加一个这个,呃,说明性的文档啊,就像我们前面说你这个,这是对吧,Total total tokensport的一个东西,对吧?所以我们把这两行还是加上这个就是大家在设计页面的时候应该还是会用到的一些东西,Dollar。Bootscat。点value啊,我们直接就empty了,对吧,直接把它清空好,那么接下来Dollar vote past,我们先去END1串东西,那这个东西我就我就直接copy这边了啊,就是大家注意后面还跟了一个跟了一个换行对不对对,这也是方便我们在这个页面里边查看所引用的,所以大家看啊,这个下面还有一个换行的对吧?所以这个也是我们其实应该去用的一个东西啊,我们在这里也加一个换行吧,大家能够想象到,如果我们不加这个换行的话,它会有什么问题。
01:41
如果不加这个换行的话,那我们是不是就一个一个把这个元素都跟在我们当时的那个div后面了,如果不加换行,默认是不是我们这添加的这个只是一个文本内容,也没有添加成div,所以它是不是就是直接就在后面接着去了,所以那个可读性肯定就不好,对吧?所以大家注意一下这些细节啊,就是把这些呃,这个换行符啊什么的,我们也添加进去。
02:08
好,那么现在基本的这些功能我们都已经实现了,现在我们就来真正的看一下它到底长什么样子吧,呃,到了这个见证奇迹的时候啊。好,这边已经起来起来了,我们来看一眼。刷新一下,好,这里边我们先去拜一下吧,比方说我现在要去拜1000个token提交一下,诶大家看这个肯定就是报错了对吧。这个肯定就是。没有拿到,所以大家看这里面拜token就。Not,所以大家就知道为什么那里要写成window的一个。一个全局的函数对吧?因为经过WiFi打包之后,大家会发现它不像我们之前在就是简单投票里边写的,简单投票里面我们直接是把自己写好的index.js嵌入到我们页面里面去的,所以我们这里设计好的这个这个呃函数就直接都可以拿得到,但假如说我们是用了外派D打包的话,外派会给我们做很多压缩处理,所以在真正打包好的app.js里边其实是找不到这个函数的。
03:25
所以这个时候我们如果还想直接用这个函数这里点击的时候去调用,那怎么办呢?那就只好我们把它定义成全局了,所以这里的这个就是window.function就是它这个定义主要是出于这样的一个考虑,好那么我们这里也是啊,定义成一个。全局的函数,所以大家看一下这种这种定义方式对吧,就是要用一个window点它的一个属性,浏览器对象window的一个属性对吧?然后这个属性是什么呢?是它的一个方式,所以这样的话,我们直接到浏览器里边,它就永远只要加载了这个,我们就永远都能找到它的这个全局对象,好同样我们把上面vote for candidate也定义成这样的一个全局的函数,类似同样window by,对吧。
04:27
方式好,那么我们现在就可以再重新来启动一下,大家看到我这边修改完代码之后已经起起来了,好,现在我们再来看一眼啊,我这边页面就这么开着,这个F f12就这么看着了啊,我来买1000个对吧。拜,诶,直接有问题啊,应该的好,所以大家会发现前面我们去拜的时候还是得要加上一个交易对象,大家还记得吧,来遇到这个invalid遇到invalid dress的时候,这说明什么呢?说明我们在buy这个tokens的时候,发送交易的时候,大家看这个,这里我们只给了value,没有给from,对吧,所以我们指定一个from。
05:27
呃。这个应该得WEB3对吧,WE3ETH点零,好把它保存一下。这边看起来是每次都得重启啊,我这边确实不太给力,这边如果要是对它完了之后应该会自动刷新,好,这里已经刷新了,那我们接着来试验一下吧,1000BY一个好,果然弹出了mma对吧?诶好吧,现在咱不谈了,所以我们的mama就会有一个交易提醒,要我们自己去确认对吧?默认的是用我们这里的这个账户。
06:11
先发一下试试对吧,然后看看这个1000个能不能买进来。Confirm。好,现在判定啊,我这个没开挖矿,我们把这边开一下好。这边是起着的。这边还迟迟没有出块,所以等一下我们看看这个效果。呃,这个有时候大家如果要是觉得这个过程很很漫长的话,确实是就是还是拿GA或者是别的一些东西,诶大家看这里已经确认了,对吧,这里应该出块了,好,那么接下来我们,诶大家看我们写的应该是要自动给他更新了,对吧,这里好像没更新,我们刷新一下。
07:05
刷新是要重新查询的,还是没更新,所以。那大家可能会想到就是我们刚才这个交易是有问题的,对吧,但大家想刚才这个交易有什么问题啊。这个交易就没花钱对吧?对,你没花钱怎么可能能买到这个,能买到这个我们的token呢?所以这个过程当中肯定有问题,那那这个我们来来查查一下这个问题大概在哪,大家点开这个source,找到这个index.js,我们是可以在里边打断点的,对吧?好,那么BY这里我们诶大家发现这里直接就弹上来了。诶,大家他直接就指向了这个token price,大家能想到这里有可能的问题是什么吗?我们在这里好像投price就是nu是吧,好像一直没给赋值,好那我们代码里面是有bug的,我们已经知道问题在哪了,对吧?诶大家看大家觉得这个ton price应该在哪复制啊。
08:11
我们是不是一开始拿到这个数的时候就应该给这个ton price先把这个变量赋的值啊,我们这里只是在页面上显示出来了,忘记给这个变量赋值了,对吧?所以这里疏忽了一个很关键的一步啊,好,去找一下我们这个拿到它的值是在哪里呢?是一开始document ready的时候我们就去拿了,对吧?在这个token data这里。那大家可以看到,我们如果在这里已经拿到了这个token price,然后这里就直接Dollar,直接HTML去写了,对吧?没有把它保存成本地的变量,所以我们这里是不是应该把token price直接记录下来啊,对吧?我们直接就等于price.to string,当然大家这里看到可能我们还是希望记录的这个值是用它的这个以太的值,对吧?那我们就前面还是加上web3.from尾。
09:18
Token price意思好,这就是我们的token price,如果有了这个的话,下边我们这里乘的时候就可以直接算出来这个以的数量了,对不对?哎,这里大家还得注意,如果我们这里算出来的是以太的数量的话,那我们这里是不是给的这个value也得变成以态啊?呃,大家注意啊,就是这里我们给的,比方说我们这里转移个以态,这里的value是不是就变成一了呀。但是我们交易对象里边,这里是不是给的应该是以尾做单位的,那还不能是一,我们还得再转一下对吧,这就有点麻烦啊,大家当然不想转的话,那下面干脆就用尾来存也可以,对不对?我们这里既然统一转了,那就还得兔尾对吧?那兔尾的时候也是啊,这个过来之后,一它的单位是以太。
10:15
然后把它再转成尾给到这个Y,好,那现在我们看一下这个,这下好使不好使。启动之前,其实我们可以先查一下我们这个。当前的这一个地址里边到底有多少对吧?要不然我们到时候买了之后也不知道好copy一下他不要这会刷新啊,诶大家可以看到我这个地址里边已经买了,当然我这个页面布局有问题,就是下面没没留白对吧?这看着很难受,大家可以调这个样式啊,这个不重要,呃,可以看到现在已经买了3200个,然后呢,已经给爱丽丝投了300个,对吧,然后另外两个人没投,所以这是他的信息一下就全查出来了,这边还没有刷新啊。
11:04
真是好慢,好现在终于刷新了,好,那么我们现在就要用我们的账户去再购买1000个,诶大家可以看到1000个,这一下正常了,对吧,直接这里显示十个以太,我们不是单价是0.1吗?1000个就是十十个以态对吧,所以这下没问题,Confirm。好,Confirm了之后,我们那边应该是已经开了挖矿,我们等一下等他,诶这里已经confirm了,对吧?好,大家看这里是不是实时就已经改变了。这里我们已经变成了五千二对吧,下面这里已经是52个ETH,好,我们再把它COPY1下去,到这里去查询一下lookup,诶刚才是3200,现在变四千二了,对吧?好,这这两个功能都完全没问题,好那么我们再来一个关键功能,再去投个票吧,他给爱丽丝投了300票,Bob现在没有,我现在给Bob投个125票啊,上面是名字是吧,不要写写乱125票。
12:12
Vote,大家看我们的要求是一投了之后,这里就直接就是取消掉了,对吧,直接清空,大家看这里没有形成交易,所以肯定报错了in va的address,我们刚才只改了那个BY,没有没有改下面对吧?所以大家注意一下,就是我们在这里发起交易的时候,特别是嵌在浏览器里边的时候,默认的时候,它不会给我们ACCOUNT0的这个默认交易,如果我们在gas里边的时候默认是ACCOUNT0,对吧?所以在这里大家注意一下我们投票的时候在哪里掉了。这里对吧,Candidate,所以我们这里也得有一个from web3点ETH点零。
13:00
好,我这边刷新了,说明我们这边已经有这个信息了啊好,我还是刚才应该已经存了这个地址的剪切板,有的啊好,我们还是把这个先放在这里,然后我们现在去给Bob投125票。头。又报错了。看一眼。Cannot read property0好看一下这个是报在哪里啊?啊,这里明显是我们这个语法写错了对吧?哦,这个是。我们这个抗词写错了,这个太坑了啊。这个确实会会比较烦,对吧,总得总得去做这样的事情,好吧,他这边我这边总是不能实时更新的话,确实会比较麻烦一点,好,我们还是给Bob投125票啊,投了好几次。
14:08
好,这下终于看到这里提交交易了,至少我们的JS是没错的,对吧,然后看我们这个逻辑通不通啊,呃,大家可以看到这个时候我们投票是不转以态的对吧?所以这个零是正常的,但这个我们觉得没问题啊,好确认一下诶,这里又出错了。Cannot read property transaction,这里我们又是未定义的参数,我们来看一眼啊。所以我们在这里可以给一个断点,进去断一下,给一个爆。还是125,这投票我们会断在这里,对吧,看传进去的是什么东西,Bob tokens看起来都没问题对吧。
15:01
WEB3和康林也没有问题。Total was four。这里又去提交了一个交易。我们先有两个交易啊,我们先拒绝掉一个。好,这个我们去confirm一下,看一下。诶,可能刚才那个是我们之前点错的一个提交的交易对吧,所以这个就是现在已经是成功提交了,呃,那大家可以看到。诶,这里还是报了一个错啊。呃,这应该是我们前面拒绝交易的那个那个错对吧?诶,但是大家可以看到我们这里好像没有做这个实时刷新对不对,所以我们这里其实好,这里是我们这个断点断住了对吧?好,所以这个断点放开之后,大家看到这里还是做了一个实时刷新的125刷出来了,对吧?好,那么我们还是要去lookup一下这个东西,诶下面是不是这个125也查出来了,所以大家可以看到这个过程已经完整的跑通,这就没什么问题了。
我来说两句