在上一篇文章中,我们已经知道了比特币通过所有钱转移而不是账户的方式来设计,
通过这样的设计,我们就可以知道每一笔交易的前世今生。追溯到历史的交易。这样就增加了造假的难度。如下图所示,每一笔交易都会追溯。比特币的所有权链传递如下:
也就是说,我们的每一笔交易都依赖于前面的交易。但是前面的交易一定就值得信赖吗?当然不是,所以我们仍然需要对交易的之前节点进行验证。也就是说,将交易链条的所有记录进行验证。实际上,当你安装比特币钱包时,就会下载历史所有的记录并逐渐回溯检验交易有效性,直到最初的节点。记住,你是和匿名对象进行交易,为自己验证每笔交易很重要。
交易支付后,就不能再重复的使用。也就是说,交易的链条只能是唯一的。否则有人就可能重复支付。例如,尹成给小郑支付后,又给小明支付了。这是绝对不允许的。
由于目前已经有了海量的交易数据,那么如何快速的找到之前的交易。其实很简单就像数据库一样,通过哈希索引值来快速实现。
尹成要把钱支付给唯一的用户小郑,需要在交易中发送地址,代表目的地。对于这一串地址来说,只有小郑的私密才能够打开。并且小郑已经解开了的信息会传播给比特币网络上的其他节点。其他节点正如前面讲到的数字签名,会很容易的得到验证,是小郑解开的。他是这笔钱的新主人。
发送报文时,发送方用一个哈希函数从报文文本中生成报文摘要,然后用自己的私钥对摘要进行加密,加密后的摘要将作为报文的数字签名和报文一起发送给接收方,接收方首先用与发送方一样的哈希函数从接收到的原始报文中计算出报文摘要,接着再用发送方的公钥来对报文附加的数字签名进行解密,如果这两个摘要相同、那么接收方就能确认该数字签名是发送方的。前面已经提到了,确定了发出者和交易金额的不可伪造性,那么如何支付给唯一的用户呢?
尹成要把钱支付给唯一的用户小郑,需要在交易中发送地址,代表目的地。对于这一串地址来说,只有小郑的私密才能够打开。并且小郑已经解开了的信息会传播给比特币网络上的其他节点。其他节点正如前面讲到的数字签名,会很容易的得到验证,是小郑解开的。他是这笔钱的新主人。
发送报文时,发送方用一个哈希函数从报文文本中生成报文摘要,然后用自己的私钥对摘要进行加密,加密后的摘要将作为报文的数字签名和报文一起发送给接收方,接收方首先用与发送方一样的哈希函数从接收到的原始报文中计算出报文摘要,接着再用发送方的公钥来对报文附加的数字签名进行解密,如果这两个摘要相同、那么接收方就能确认该数字签名是发送方的。如果你使用TOR网络进行操作比特币并且隐藏ip地址,那么你就能在放心的在只透露公密的情况下使用比特币。但是,交易是公开的存储在比特币网络中的。要避免有人可以的找出你的交易串。你可以对每一个将要进行的交易产生一个新公密。你可能会问,不同的公密为什么都可以进行数据签名的验证?其原理也是很简单的,正如之前提到的九宫格一样,其密码可能会有多个。不同的密码都可以验证九宫格的正确性。
网址:http://www.qukuailianxueyuan.io/
欲领取造币技术与全套虚拟机资料
区块链技术交流QQ群:756146052 备注:CSDN
尹成学院微信:备注:CSDN