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