最近因为工作需要,后期会做区块链相关的底层测试。
而且随着 2017 年比特币的爆发式升值,也引起了大家对于区块链的关注。
随着不断的了解发现,区块链技术,并没有特殊创新的技术,而是有机组合了已有领域的已有成果,所以,了解区块链,重要的是从思路上理解它的运行机制和理念。
备注:写此文章,主要是为了记录所学当做笔记,肯定会有理解错误的内容,请大家多多指正。
感觉自己写的好差,有时间的可以多看看
阮大师的区块链科普文章http://www.ruanyifeng.com/blog/2017/12/blockchain-tutorial.html
从概念到底层技术架构:http://www.8btc.com/ebook-blockchain
官方学习资料:https://github.com/chaozh/awesome-blockchain-cn
用一句话说,区块链就是首个自带对账功能的数字记账技术实现。(其实就是一个分布式存储系统)
区块链的基本概念包括:
根据参与者的不同,可以分为公开 (Public) 链、联盟 (Consortium) 链、私有 (Private) 链。
在进行更深入的了解之前,先来大体了解一下区块链的运行过程,如下图所示:
从宏观到微观,区块链是由一个一个的区块组成的,每个区块又包含多笔交易信息,每笔交易又是由客户端发起的。
(1)合法的未确认交易是如何形成的?
节点 1 所做的事情就是一笔合法的未确认交易的形成过程。客户端发起交易信息到网络中,网络中的节点收到交易信息后,会进行如下检查:
检查都通过,则将交易标记为合法的未确认交易,并在网络内进行广播;
一笔完整的交易包含内容如下图所示:
(2)交易又是怎么变成区块的呢?
请看节点 2 所做的事情。节点将 10 分钟之内获取到的交易信息 (长度需要控制,每个区块不大于 1MB),打包生成 Merkle 树根的 hash 值,节点暴力尝试计算出 Nonce 串,然后加上其他信息,生成候选区块。然后判断候选区块头的 hash 值是否满足一定条件 (小于某个值),如果满足,就进行全网广播,候选区块变成了提案区块。
一个完整的区块数据结构如下图所示:
(3)区块如何上链?交易如何被最终确认?
请看节点 3 所做的事情。节点从网络中收到 提案区块后,对提案区块头的 hash 进行验证,如果符合条件,提案区块成为合法区块,添加到链上。然后再等待 6 个块的可信确认后,交易最终被确认,交易生效。
首先先来简单的一层一层进行了解: