00:00
我们就先写一个能够自动给指定地址转转币的一个脚本,那这个其实就是大家如果要是有这样应用的话,我们平常转币的话,必须得有自己的钱包,然后大家才会转,如果大家想要就是自己配置很多参数的话,那可能就需要我们自己就是在gas里边去构建一个交易对象,然后去set transaction,对吧?呃,或者说我们去启动noe之后去调用WEB3创建WE3对象,然后调用它的3TRANSACTION,那我们能不能把这个过程自动化呢?大家会发现我们刚才在这个控制台里边去做这些操作,其实一步一步是很麻烦的,对吧?好,那么我们现在就来把我们刚才。今天所列过的很多个这些步骤,看看能不能把它顺序的放在一起,做成一个脚本来做,首先我们这个脚本既然是要转B,那肯定我们先得用到WEB3对象对吧?那就也不用说别的了,我们上来先玩一个WEB3对吧?这跟我们一开始上来的那个做法是一样的,先我们require一个WEB3,然后WEB3等于new web3。
01:26
这个大家都已经很熟悉了啊,我们提供它的provider对吧?WEB3点prors http8545,呃,这就是我们最基本的这个provider,有了这个,呃,当然我们这里没有去检测,就是像mama的那些东西啊,那些东西我们先实现一个最基本的功能,那有了这个provider之后呢,我们就可以用WEB3对象了,对吧?但是我们要在转B的时候,首先我们还得知道我们的账户是什么,是不是那大家要要从哪个账户去转币呢?那我们就还是先定义一个from。
02:27
重吧,这样啊,带个下划线,这个不要跟别的去重了,From我们就直接定义成WEB3ETH点哦,这也不能自动补全了,呃,零这是我们的from账户。那兔账户应该是什么呢?啊,我们现在先就先把它写死吧,等一下我们到时候再我们直接就说是web3.1TH啊,或者我们这个我们直接指定一个two账户好了,对吧,让让他转给谁就转给谁,我们这边再拗一个账户。
03:16
你有哦,需要写两次,这个真是。好,我们把这个新创建的账户copy出来,我们就先hard code写在里边,当成我们的这个需要转币的账户。好,然后那当然还有value对吧,Value我们也先写死吧,就现在我们都没那么多,没那么多那个可以配置的东西,随便写一个value,那接下来我们要做的是什么事情呢?那其实很简单,就是做一个。
04:11
简单的转臂动作对吧?好,我们web3.eth,大家还记得转币怎么转吗?散的transaction对吧?散transaction。那send transaction呃,Send transaction,我们前面要给定一个transaction object,一个交易对象对吧?那它的from就是我们这里的from to就是我们这里的to value就是我们这里的value,这就是我们最基本的一个一个操作,呃,当然了,我们这里应该加一个回调的,对吧?
05:23
好在这里,那我们处理这一个,呃,艾那也就比较简单就可以了,我们就直接一辅一辅error。那我们就点log error else很点啊,当然大家如果要是想多写一点的话,那我们可以就是说至少让我们知道这是怎么回事,对吧?好,这是我们这不是另存为啊,这就是我们非常基本的一个转币的脚本对不对?大家可以看到在这个过程当中,就是我们直接先引入了一个web web3对象,然后我们指定了它provider连接到我们的local host85。
06:37
五之后我们是直接定死了from谁to谁,然后转转B转多少,然后最后呢,我们就是根据我们构建的这一个交易对象,然后去用WEB33TRANSACTION这个方法去发起一个异步的交易请求。好,那大家可以看到,就是我们这个过程当中,大家知道这个拿到的response应该是什么东西吗。
07:09
正常来讲这个response,那那我们先看看它能不能执行吧,好,那我们保存一下,好我这个保存。好吧,这个我们还是因为我这里边是Linux虚拟机,所以跟它的那个路径可能会比较难找一些。我就直接在这里我的我们新建一个文件,把它copy过来好了。我VI一个,我们这个叫什么吧,叫。Script,它应该是一个JS文件对吧?好,我们把它copy过来。
08:09
那我们这样的一个文件应该怎么样去,怎么样去用呢?呃,我们首先要看一下它的这一个属性,大家看到它不是一个可执行文件,我们最好把它转成可执行文件,因为直接note的时候,我们看看能不能啊,先看一下。啊,首先先告诉我们又是这个没有解锁对吧,这个确实是比较烦弄好吧,好我们再来弄一下,诶大家看这个result应该是一个什么东西。
09:07
对,应该就是我们的交易哈希对吧?对,所以我们其实就已经可以知道,在这个里边,我们其实可以写明这个就是一个交易发信。Transaction,呃,当,当然这就是result了啊,好,那么大家可以看到在这个过程当中其实是非常简单的,我们就实现了这个转币的脚本,就这么几行就已经把它搞定了,那我们来校验一下啊,它到底对不对,我们就直接在盖里面校验吧,现在应该是还没有挖矿,所以说还不知道,呃,它到底的状况是什么样的啊,我们Eth.get balance account0好,这个是好好多啊。
10:16
我们应该把它尾对吧。呃,1054,大概1055吧,然后我们再看看这个。啊,看起来很少的样子啊,这个为什么这么少十的负11次,那我们还是不要转了。啊,它是大概这么多尾,好,我们看一下如果要是开启挖矿之后,它的数字会不会变化。
11:18
啊,我们挖矿好像又遇到了,嗯,OK,现在是可以了。好100到,我们再来看一下。哎,好像他的胖子没有变化是吧?哦,我们这边确实比较蠢是吧?哎,大家看刚才我们是转了多少来着,是不是就是这么个数,我们看一下里边写的是多少对吧?就是五后边应该是九个零,所以我们转的就是5亿尾,所以大家看这里边是不是五一位。
12:04
也是九个零对吧,所以看起来是已经转过来了,那我们看一下ACCOUNT0里边是不是是不是少了。哦,因为他刚才挖矿了,所以说这个我们看不出来对吧?啊,这个确实会会比较麻烦一点啊,但是大家可以看到就是这个过程其实就是呃,很容还是很容易验证我们的币是正常的转过去了,所以呃,这其实就是代表我们已经完整的实现了一个一个转币的自动化的一个脚本,那大家可以想到,那我这个是不是还还可以有一点那个改进的空间呢?那比如说大家如果愿意改进的话,我们可以不把这个写死,对吧,就是from和from当然可以写死,我们就是说这个我们默认就是用这个ACCOUNTS0来发,那to的话,这个可能确实就不应该写死,那个value的话可能也不应该写死,那我们平常。
13:08
大家如果熟悉这个note编程的话,可能就知道可以有一些可以有一些方法,我们可以就是把它的这个参数截取出来,比如说我们要求他。这样啊,我们定义一个吧,呃,它可以等于process点。应该叫阿V吧,阿V点大家可以呃二这样的话,我们就可以截取到我们从node命令行去调用的时候,后边给他传递进来的参数,好,那接下来我们把这两个参数可以拿出来啊,Two我们就让它等于ARGUMENT1 argument0value我们就等于ARGUMENTS1。
14:23
好,这个其实就是一个很简单的一个处理啊,就是相当于呃,让我们一开始的时候不要这样,一开始的时候我们不要就是在里边哈扣扣直接把它写死,呃,而是让我们从外部去输入,那如果要是这样的话,我们看一下这个效果会是怎么样,他反而可能会相对来讲会麻烦一些啊,我先把这个删了。
15:00
好,这样的话,我们在调用的时候就不是简单的一个node transfer script这样去调用了,我们还得跟上我们的参数,那参数是什么呢?第一个参数是我们的to的地址,我们还是给第三个去转一遍。然后第二个参数是我们要转的数量对吧,好,我们这回转个3600000几个零了,差不多跟刚才那个数量级差不多,对吧,我们现在看一下哦。总在要求我们解锁unlock,呃,其实应该是可以直接给他指定时间的啊,但是我们刚才好像没有指定时间是吧。
16:22
这样应该是可以的,OK。好,我们现在发出这个,所以大家可以看到最后的结果已经写出来放到这里那。大家可以看到这就是按照应该是按照我们的要求去去发的这样的一个币是吧,我们现在不用去直接在那个。挖矿那里去看,我们直接在这里就可以WEB3点Eth.get transaction,我们有哈希就可以看它的参数,对吧?好,我们用一个同步的调用方式,我们看一下它里边的value是不是跟我们设置的一样。
17:06
哦,Value,我们看到十的九次,然后36000这么多零,这肯定是我们刚才设置的对吧,所以这就不是刚才我们写死的那个状态了啊,就是我们给多少就是多少,然后要发的地址呢,TWO89DFD5。89DF第五,也就是我们刚才给的这个好,那最后我们验证的话,那肯定就是到这儿再起个挖矿了,Start,好挖出来了。Stop,好,我们再来看一下,刚才我们转的那个应该还是还是COUNT2是吧,好大家看刚才是五号院九个零五亿,现在变成八亿六了,加了三三亿六,对吧,所以整个这个流程完全跑通是没有任何问题的,好大家可以先试着把这个最简单的这个转币脚本大家先实现一下,当然我们可以看到就是在这个模式里边,我们用0.20.1的这个模式。
18:21
我们只是拿到了它的存在是哈希对吧?交易哈希主要呃,一旦生成,我们这里其实就已经返回了,回调就已经回来了,而大家看到就是如果在1.0.0里边,我们是可以监听不同层级的事件的,是可以当它产生哈希的时候,我们去处理一下,然后当它真正进化的时候,有了receipt的时候再去处理一下,当他就是真正拿到permit的时候,我们还可以再去处理下,所以1.1.0.0版本确实是要比我们现在这个要强大很多啊啊,但是大家现在也就是只是熟悉一下这个过程,这就是我们最简单的一个转币脚本,大家先把它实现一下。
19:12
现在这脚本其实还是比较简陋,就是在从这个健壮性上来说,大家可以看到我这里呢,就是直接把输入参数,直接就就相当于就是呃,这是PLA2,其实就是说从第二个参数开始把它切掉,对吧,因为它前面是node,然后然后后面是这个我们的首先是脚本名称嘛,所以它要从后面第二个开始切,然后切出来的这两个参数呢,一个是to,一个是value,那大家可以看到,假如说我们乱出仪器的话,我们这里其实是没有校验的,那大家如果想要校校验的话,至少可以加上呃,比如说if,呃,比如说我这个arguments就没有拿到,比方说非arguments对吧。
20:12
或者说或者arguments.las.LAS它不等于二,我们要求它必须是两个参数,对吧,多了少了都不行,那如果是这样的话,那我们就conso.log,我们就给一个ter。然后我们就好了。这里应该得有。对,这就是一个简单的一个简单的一个错误处理,呃,当然就是大家可以看到我们如果真正保证它的这个一些安全性的话,我们可能还需要校验你给的这个地址是不是我们真正的地址呀,那大家可以用一个WEB3。
21:18
点is is address去判断一下对吧,或者说我们后面这个判断这个value,你是不是到底真的是一个数字啊,我们可能还需要用JS里边就是它is number啊,或者怎么样去判断它一下,所以大家可以任意的加各种各样的边界条件去控制它,所以我们本身这个现在是没有任何健壮性的,就是输入一定要要对才行啊,当然就是后边我们在发起交易的时候,肯定会你如果前面给的不对的话,交易肯定会出错,所以就是我们前面加一些条件,可以保证我们交易是能够正常正常完成的,大家先把这个完成一下,我们可能没有时间再写剩下的两个脚本。
22:04
因为就是直接发以太的这种交易,这其实就是最简单的一种交易了,那接下来可能稍微麻烦一点的,就是我们把我们自己的子子代币的那个合约,我们在子代币的合约里面。去给别人发币,我们用用那个实现一个就是相当于也是转币一样的,但是我们转的不是以太,转的是合约里边的token,这就相当于我们可以就是自己发了币之后,然后还给别人转,就是用脚本去转,另外就是我们还可以自己给自己设设置一个监听事件的脚本,就是每当我发现别人给我转币的时候,那我我可能要记一笔,因为我的地址里面有入账了,对吧,像这样的事件我们是应该记录下来的。
我来说两句