兄弟连区块链培训课程体系设计架构包括了区块链的基础语言Go语言、区块链后端技术体系、区块链公链、区块链分布式应用开发等内容讲解,以及到最后的面试指导和项目实战。课程由清华微软谷歌名师团队精心打造,历时半年时间共同研发而出。
前面的文章我们已经提到了,分布式的传输所带来的致命问题,那就是难以保证时间顺序带来的恶意攻击。
比特币采用精巧的设计,来决定和保护交易顺序,这就是区块链的基础。比特币系统把交易集结成群,每一群称为一个区块。把区块串在一起,成为了区块链。
注意,这个之前讲解的交易链是不同的东西。区块链用来排序交易,而交易链用来追踪比特币所有权的变化。比特币设计,所有的交易都参照验证前一个交易,也就是说,区块按照时间的顺序来排列区块。由于后一个区块保留了前一个区块的id,因此新产生的区块可以一直追溯到初始的区块。同区块的交易被视为同时间产生的交易,还没有进入区块的交易则被视为未确认或未排序。任何节点都可将一群未确认的交易收进一区块,并发送告知其他节点,作为下一个区块的参考。由于同一时间可有多个人在同时创建区块,所以有很多的排序可能。那系统要如何决定下一个区块呢?我们不能靠区块出现的顺序决定,以为前面提过,不同节点收到的顺序不一样。比特币的做法是将区块加上特殊的数学题目,这是通过哈希函数来决定的。电脑会执行整个区块文本,并加上一个随机猜测。这道数学问题是F(block)<目标值。采用了当前最流行的SHA256哈希加密算法。如下图所示,任何一个微小的差距都会带来截然不同的输出,因此,解决问题的办法就是靠猜。
这道数学题目的解可能有多个。我们在区块中补增一个随机数(Nonce),这个随机数要使得该给定区块的随机散列值出现了所需的那么多个0。我们通过反复尝试来找到这个随机数,直到找到为止,这样我们就构建了一个工作量证明机制。只要该CPU耗费的工作量能够满足该工作量证明机制,那么除非重新完成相当的工作量,该区块的信息就不可更改。由于之后的区块是链接在该区块之后的,所以想要更改该区块中的信息,就还需要重新完成之后所有区块的全部工作量。
网友评论