00:00
然后接下来我们考虑这个。好比这个,然后。增加。是签证。好,然后这个里面的话,我们先改什么呢?先改个函数吧。交易签名实现这个地方,我们的一个什么样总账是实现这个交易的签名,对吧?好然后接下来啊,在实现交易签名之前,因为我们刚才简单的去说了一下,我们这个签名的一个基本东西,对不对,好接下来是什么,接下来啊是我们对呃这个比特币里面,或者是对我们这个链里面的一个什么讲的一个交易讲去进行讲,去进行一个具体的一个分析,好这里面的话,大家注意一个问题,这里面大家注意一个问题,我们在做这个交易签名的时候,就单纯的从什么西从我们的代码层面上来说,注意下啊,这个地方单纯的从代码层面上来,我们有一些问题需要去考虑,这个地方注意下有一些问题啊需要去考虑,比如说。我们现在已经知道了整个签名的流程对吧?然后我们在这个地方,呃,你去怎么样去进行挖矿对吧?然后就在你发起转账的时候,有甚至一笔的交易对吧?然后生成一笔新的交易的时候,还就是什么样啊,包括我们的这个外矿功能对吧?然后还有就是什么西,还有就是你转账之后,他的这个什么样,他这个结果的一个展示,那我们这个地方要考虑第一个问题是在什么地方对交易对吧?是我们第一个要考虑东西,就在整个交易的一个流程当中啊,我们到底啊,应该在他的哪一个步骤上面去对交易进行签名对吧?好,那同样的呢,我们就得去考虑什么,在什么地方对交易进行验证,对吧?这个是我们要考虑的第一个问题,就是签名和验证啊,他们应该放在哪的问题,对吧,第二个问题是什么呀,第二个问题啊,啊,这你看第三个了吧,就是我们是否需要对整个交易当中的。
01:53
好,这一块注意下是否需要对交易当中所有的属性进行什么样进行这个签名和验证,这一块的话是什么意思,大家想一想啊,这个地方大想什么意思,就如果说当你可以什么样,你你是可以对这个所有的消息啊,这个就交易里面东西去进行什么去进行签名和验证的,这个不会有任何问题,对这个不会有任何问题,但是我们想要知道的是到底有没有这个必要,对吧,有没有这个必要去对我们所有的属性进行些面和验证,也就是说这个地方它做一个简单的影算,就是哪些属性是。
02:22
必须要进行下面的。对吧?签名是为了确保安全对吧?我们呢,把这个交易里面,我们看一下这个交易结构啊,交易里面对吧,它的一些东西,包括这个呃,应付的列表,然后out列表这里面我们啊需要考虑的是把这个呃,包括哈希对吧,然后还有就是这个input里面的东西,还有这个out里面东西去做一个筛选,我们对这个里面哪些事情啊,做了签名就能够确保确实啊这个就要就只要签,签完这些属性之后,他就已经安全了,对其他的东西你签不签都怎么样都无所谓,对吧?这个是我们要去考虑的一个问题,到这里的话,接下来啊。从什么呀,从我们的output层面上来重塑一下我们的交易的基本概念,注意下,在这个我们写了这么长时间的代码之后啊,我们来重塑一下这个交易的基本概念,好这个地方首先我们一些什么理论相关的知识,我们要把它再搞清楚一点啊,理论相关第一个就是什么东西交易的一个什么东西交易记本概念,好在前面我们说这个东西它就是一个转账,对吧,包含我们的输入输出以及交易的话系对不对,好什么叫做从我们的这个当前的代码产面上来重复,大家注意下。
03:30
这里面的话,我们写到这个地方,UGXO相关的所有东西我们都已经知道了,对不对,也就是说我们可以怎么去总结,大家注意下,怎么样去总结我们这个地方的交易啊,它实际上就是怎么样,大家看一下我们这个output里面对吧,它有什么样,它有这玩意儿对吧?它实际上就是去解锁我们指定地址output,对吧,然后怎么样,然后重新分配他们的什么东西,重新分配他们的这个value值对不对,重新分配这个值,然后再怎么样,再加到我们新的out里面去,对不对,然后这个地方我们看一下啊。从这张图啊,我们能看出来交易的所有东西,把这个out解锁,解锁之后重新分配它的这个什么西,重新分配它的这个value对吧,还有就是什么,还有就这个东西对不对,然后再把它加锁到什么西,加缩到新的这个out里面来,这个是它一个什么呀,这就是我们从代码层面上啊,写完代码之后啊,对它的一个重塑啊,然后我们把这句话写下来,然后交易实际上就是将指就是解锁指定地址的out对吧,然后重新分配它们的值。
04:32
再怎么样,再加索道行的的通对吧,这个的话应该没有什么难度,对不对,我为什么要在这个地方把这句话单独要强调对吧?还有就是把它写出来,因为我们其实通过这一句话,这个东西它实际上是它的本质,对不对,把这个基本概念改一下,改成了本质对吧?好,然后这个地方我们可以通过这一句话来怎么样来确,就是来判断到底有哪些数据是一定要我们去进行,怎么样去进行签名的,对不对,所以说我们接下来看一下啊,这个里面有两个很重要的东西,对不对。
05:04
原有的什么东西,原有的这个out的对吧,然后还有一个什么呀,新的这个的对不对,好这里面的话,它就涉及到什么呀,我们为了这个交易安全,必须要加密的数据,包括哪些东西好看一下啊,那为了数据安全或者交易安全,然后必须加密,我们这个地方的话,加密就是什么样,因为你这里你这个签名实际上就是对他怎么样对它进行加密,对不对,然后必须要签名对吧的数据。好,第一个我们这里面的话,你这个地方啊,通过这种方式去怎么样去进行签名,首先啊,你得确保怎么样确保你这个发送者是对的,对不对,也就是说我们需要什么东西呢?我们需要签名指定地址,所谓的什么东西啊,这个地址对吧,然后这里这个地址啊,在我们这个地方是用这个哈希来给你表述的,对不对,所以我们在这一步需要怎么样。第一个,然后保存在什么样,已解锁的,就是发送的这一块已解锁的output。
06:02
中的公钥发息,它代表什么东西啊,代表交易的发送者,注意啊,这个地方代表交易的发送者,好那同样的发送者是我们必须要锁定去的一个东西,另外一个就是什么样对应的好所在怎么样新生成的奥的同氧化西,它代表什么东西啊,代表交易的接收者对吧?这两个东西我们必须要怎么样,必须要去签名对吧,为什么样?因为我们这个地方你要去怎么样交易,我们签名是为了防止什么样,为了防止来自于黑客的什么东西,来自于黑客的攻击对吧?我们这个地方看一下啊,然后这个地方有这样一个对吧,然后这是原输出,这是什么样,这是目标输出对吧?啊,然后这个地方是什么样A,对吧,然后这个地方是什么东西,这个地方是B对吧,如果说你不去怎么样,你不去保存它的这个发送者,他可以怎么样,他可以修改你这个发息,修改这个哈希,就把什么样,就把你整个交易的发送者给你改掉了,对不对?好另外一个就是什么西,如果你不去把这个接触者的公钥哈希啊给他保存过,他就有可能怎么样,有可能用他自己的哈希值,用他自。
07:02
自你的这个地址啊,甚至他就是来进行怎么样来进行替换,这样你原本应该转给谁呀,原本应该转给B的这个什么这个货币对吧,你转给谁了,你转给C了对不对,这一块,那还有一个就是角,还一个比较重要的就是我们新生的这个output,它里面所包含的这个value生成的out所包含的传染,好这一个也是怎么样,也是我们要啊去怎么样要去啊进行一个怎么样进行一个加锁的东西,或者是什么样,或者是我们要去进行这个签名的东西,对不对,好这一块我们呢,对他的怎么样,对他的这个加锁数据,也就是我们刚才在这个ECD上面所讲的这个对吧。这个地方哦不对啊哦呃,对对,就是这个对吧,这个里面它需要去加锁的一些数据啊,我们把它怎么样把它拿出来对不对,我拿出来之后,我们接下来啊,注意一下,在我们的这个什么下,在我们的这个代码层面上啊,在我们代码层面上,我们这个交交易的签名上,它需要解锁这个output的公钥化器,我们看一下啊output对吧,它的什么样,它的公钥化器好这个里面的话,我们在前面说过,它需要访问的是我们已解锁,已解锁它是就已解锁这个outut,它代表的这种东西啊,它代表的就是我们音input的所引用的这个输出,对不对,我们音input的会去引用其他的输出,同样还是这张图啊,然后还是一样的,打开我们刚才的这个,还是还是这张图啊,还是这张图,大家看一下我们刚才所说的什么东西,已解锁的这个out对不对,它的相关东西,它的这个东西,毕竟这个outut本身它不在你这个交易里面对不对,比如说比如说我们接下来啊,要对当前的这个区块二里面的这个交易,六个二的这笔交易啊,去进行怎么样进行签名,对吧,他要怎么样,他要签名的一些数据啊,我们刚才已经分析出来了,对不对,刚才我们已经分析出来他要签名的数据,那这里面的话,他要去签名这一个数数据的话,他应该怎么办?
08:40
他要的其实就是什么样,就是我们这个input里面所引用的这个东西对不对,他要的就是我们这个input里面所引用的这个就是out里面的相关知识对不对,和相关的这个什么相关的这个属性啊,另外一个就是什么讲另外一个就是这个的本身对不对,这里有两个什么样,有两个的,所以说他需要什么样,他需要对这个去进行什么样去进行签名,好这样的话我们都知道,我们知道什么样,我们知道链它不需要怎么样,不需要对所所有的交易啊去进,哦对这个交易中的所有属性去进行签名,对不对,好然后接下来我们来看一下我们这个代码,然后我们呢,在这个里面去怎么样去想办法把我们的代码给他,怎么样给他搞出来对吧,好然后看一下啊,这里的话应该是在里面对吧。
09:15
好然里面哦,还有一个就什么东西,还有一个刚才没有去说的东西,我们应该在哪个地方去怎么样,在哪个地方去进行签名,对不对啊,这里的话我们需要对某一笔交易去进行签名,至少你需要怎么样,你需要你的交易已经生成了,对吧?这个倒是很简单,在交易生成的时候。对交易进行签名对吧?这一块在我们交易生成的时候,对交易进行下面,好,那在什么地方去进行验证的话,这个是我们需要注的东西啊,这个是我们需要注意的,大家看看啊,我们在这个里面对吧?然后呃,交易生成的时候去进行签名,那很简单,因为我们交易在这生成的对吧,比如说在这个地方对吧,我们生成一笔新的交易啊,接下来我们在这个里面签名,在这地方去进行签名啊,然后我们在什么时候去进行验证对不对,这里的话我们交易啊生成之后对吧,他签名,然后他要怎么样,他要打包到我们这个区块里面去,对不对,一旦你把交易打包到区块中去之后,你这个交易就怎么样,就不可更改了,对吧?那我们得在什么样,得在他打包到区块之前进行验证。
10:14
在交样费打包进入区块之前进行验证,好这一块就是我们要考虑的三个问题,对不对,好这三个问题啊,搞清楚之后,对啊,这三个问题搞清楚之后,我们的什么东西,我们的这个基本的流程应该也知道了,对吧,我们在这个地方简单的写一下好流程。然后这里面的话,第一个什么东西啊。生成交易,然后第二个是什么呀,我们这个地方只是说什么呀,只是说生成交易对不对,然后第二个对交易进行签名,第三个然后这里面的话应该是怎么样交易签名对吧?完成之后我们就怎么样验证对吧,这地方验证交易,然后第四步怎么样打包对吧?让打包这个的话,我呢,因为之前已经怎么样已经写完了对不对?好,然后它具体的什么东西,它具体的这个流程我们得到把代码实现了之后再来看这个地方,我们再把代码实现之后再来看,好那接下来我们去看一下点go对不对,这个地方trans.go好,然后这个里面我们要在哪个地方去添加这个签名的功能,刚才我刚我跟大家说了,我们是在这个地方去进行签名,对不对,但是大家注意一个问题,我们这一块大家注意下我们这一块,它实际上这个单纯的这个GX啊,注意下单纯这个symbol对不对,然后他真的第一时间可以去怎么样可以去啊,进行这个签名的样应该是在哪个里面,他应该是在这个里面对不对,应该是在这个里面,我们只有在什么样啊,当前生成之后就马上对他去做一个什么样,去做一个交易签名,也就是说不要把它放到那边去。
11:38
放到这个地方来好,然后这里面生成哈希对不对,这个地方生成完哈希之后,就相当于生成一笔完整的交易。
我来说两句