区块链,按照时间为节点,按顺序将同一时间段内产生的为区块以链条的方式组合成特定的数据结构。
利用加密链式区块结构来验证与存储数据。
区块链数据全部基于分布式系统结构,采用纯数学方法建立信任关系。
比特币是区块链的主要应用。
比特币
PoW(Proof of work)的共识过程(挖矿)是各节点竞争解决一个数学问题。比特币系统同时发行一定数量的比特币奖励解决问题的矿工。
当前时间段的所有比特币交易打包计入一个新的区块,并按照时间加入主链。
区块链技术解决了双重支付问题和拜占庭将军问题。
双重支付问题:两次或多次使用“同一笔钱”完成支付。通过分布式节点的验证和共识机制解决。
拜占庭将军问题:缺少可信任的中央节点时,如何达成共信。通过数字加密和分布式共识,实现了软件定义的信用。
数据层封装了底层数据区块,时间戳等技术
网络层包括分布式组网机制
共识层
激励层包括了经济因素,经济激励
合约层主要是区块链可编程的基础,包含各种脚本
数据层
默克尔树(Merkle Tree)
图中是一棵二叉默克尔树(MT),它的每一个叶子节点都是一个数据块。和hash list类似,但是比hash list 更灵活。在从可信的源获得文件的MT树根(Top Hash)后,就可以从其他不可信的源获取MT。通过可信的树根来检查MT。如果MT是损坏的,就从其他源获取MT。
MT主要用于数据校验,在分布式系统中,数据存储于多个不同的机器上,如果更新了一台机器上的数据,则必须保证所有机器上数据的一致性。而只发送文件的hash值则能高效进行数据校验。校验过程中,如果树根不对,则检验树根对应的两个子节点的hash值,直到找到hash值不同的一个或几个数据块。
在区块链中,每次当用户试图添加一个新的区块(代表交易)时,这一改变就将被其他用户采用基于MT的方法验证。
数据区块
链式结构:如果有两个矿工同时挖出两个新的区块链接的话,区块主链可能会出现暂时的“分叉”现象,解决方法是约定矿工总是选择在累计工作量最大的区块后链接。所以后续区块的矿工将通过计算和比较,链接到累计工作量证明最大化的链上,形成更长的新主链。
如图所示,比特币一般通过调用操作系统底层的随机数生成器来生成256位随机数作为私钥。先生成65字节的随机数,该公钥用于产生比特币交易时使用的地址(33字符)。现有的比特币和区块链系统中,根据实际应用需求已经衍生出多私钥加密技术,满足多重签名。
网络层
组网方式
区块链系统的节点一般具有分布式、自治性、开放可自由进出等特性。一般用P2P组织节点。
按照节点存储数量可以分为全节点和轻量级节点。全节点保存了创世区块到目前的完整数据。
数据传播协议
生成一个区块后,将传播到全网其他所有节点验证。“幽灵协议”解决因区块数据确认速度快而导致的高区块作废率和随之而来的安全性风险。
当交易时,只要足够多的节点作出相应即可整合进区块账本中。
数据验证机制
比特币的矿工节点会收集和验证P2P网络中的尚未确认的交易数据,并对照预定义的标准清单,从各方面校验交易数据的有效性并整合到当前区块。
区块链和云存储,前者是完全的“去中心化”,后者是基于中心化结构的多重存储和备份的“多中心化”。
共识层
早期的比特币采用PoW机制保证分布式记账的一致性。后来又提出PoS和DPOS共识机制。
PoW:引入分布式节点的算力竞争来保证数据一致性和共识的安全性。各矿工共同解决一个求解复杂但验证容易的SHA256数学难题(挖矿)。该数学难题可表示为:根据当前难度值,通过搜索求解一个合适的随机数使得区块头各元数据的双SHA256哈希值小于或等于目标哈希值。
PoW步骤:1.搜索未完成交易,增加一个用于发行新比特币奖励的Coinbase交易。2.计算区块体交易集合的Merkle根计入区块头,随机数置零,并填写除随机数以外的区块头元数据。3.随机数加1,计算当前双SHA256哈希值,如果小于或等于目标哈希值,则成功。4.如果一定时间内未成功,则更新时间戳并重新计算Merkle根继续搜索。
一般目标哈希值有多个前导零,前导零越多哈希值越小计算越困难。比特币的控制生成时间平均10分钟左右。
PoS:PoS使用权益证明代替PoW中的工作量证明来获得区块记账权。权益体现为节点对特定数量货币的所有权,称为币龄或币天数。币龄=特定数量的币与其最后一次交易的时间长度的乘积。每次交易都会消耗币龄。10币×10天=100币龄
PoS共识过程中难度与消耗币龄成反比,币龄消耗最多的区块会被链接到主链。所以PoS解决了PoW消耗大量算力的问题。
DPOS:选票机制,获得最多票数且愿意成为前101个节点进入“董事会”,按照既定的时间表轮流对交易进行打包结算并生产一个新区块。每个区块被签署之前,必须先验证前一个区块已经被信任的节点签署。授权的代表可以从每笔交易的手续费中获得收入,同时要缴纳相当于生产一个区块收入100倍的保证金。如果代表错过签署,可以被收回选票并投票取消代表。DPOS大大较少了参与的节点数量,实现快速共识验证。
激励层
比特币PoW中的经济奖励有两部分:新发行比特币奖励和交易流通过程中的手续费。
发行机制:比特币系统每个区块发行比特币数量是递减的。创世区块起的每个区块发行50个,后来每隔4年(21万个区块)每区块发行数量降低一半。一直到比特币总数稳定在2100万。
目前比特币交易的手续费默认是万分之一个比特币,这会奖励给记账者。
分配机制:目前已存在13中不同的分配机制(Bitcoinmining.com)。主流矿池通常采用PPLNS、PPS、PROP等机制。
合约层
合约层封装区块链系统的各类脚本代码、算法以及由此生成的更为复杂的智能合约。
现存问题
安全问题
基于PoW的区块链的主要问题是51%问题,即节点通过掌握全网超过51%的算力就有能力篡改和伪造数据(美剧硅谷中有发生)。
基于PoS的区块链一定程度上解决了51%问题,但也引入了N@S问题。
区块链的隐私保护,是通过类似电子邮件地址的地址标识实现数据传输,而区块链数据都是公开的。
效率问题
区块链每个节点都要保存一份数据备份,对于庞大的数据存储很困难。
比特币的交易速度最快每秒7笔,限制了应用。
比特币区块生成时间10分钟左右,交易确认时间一般也为10分钟。
资源问题
PoW共识过程的算力没有任何实际价值,这些算力都被“浪费”了。