本文摘自《2017年区块链行业年度特别报告》,允许转载、引用,但必须向本人申请。转载、引用时必须注明来源于“区块宝研究院行业分析师曹先亮,笔名:东方教主”。
这是笔者工作过程中产出的第三份区块链行业研究报告,也是2017年的年终大报告。一定程度上反映了笔者在2017年下半年以来,在区块链行业研究方面的研究成果。
1.1.1区块链概念
区块链本质上是一个对等网络(peer-to-peer)的分布式账本数据库。区块链本身其实是一串链接的数据区块,其链接指针是采用密码学哈希算法对区块头进行处理所产生的区块头哈希值。每一个数据块中记录了一组采用哈希算法组成的树状交易状态信息,这样保证了每个区块内的交易数据不可篡改,区块链里链接的区块也不可篡改。
狭义上讲,区块链技术是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构,并以密码学方式保证的不可篡改、不可伪造的分布式账本。
广义上讲,区块链技术是利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算范式。
1.1.2区块结构相关概念
区块链技术并不是单一信息技术,而是依托于现有技术,加以独创性的组合与创新,从而实现以前未实现的功能。其关键技术包括:P2P动态组网、哈希函数、非对称加密算法、共识机制、智能合约等。只是如果没有中本聪那一篇开创性的关于比特币的白皮书,这些强大的技术,都还只是埋藏在学术论文堆里。
因为这些技术单独使用,并不能解决商业问题,但这一系列技术的结合,出人意料地形成了一个系统的可实践的解决方案。但是,在探讨区块链行业的产业发展动态之前,在探讨区块链的整体架构之前,仍然有必要先探讨区块链的区块结构细节及一些细节技术。
P2P网络
P2P网络(peer-to-peer
network,对等网络)是一种在对等者(peer)之间分配任务和工作负载的分布式应用架构,是对等计算模型在应用层形成的一种组网或网络形式。
区块链系统是建立在IP通信协议和分布式网络的基础上的,它不依靠传统的电路交换,而是建立于网络通信之上,完全通过互联网去交换信息。网络中所有的节点具有同等的地位,不存在任何特殊化的中心节点和层级结构,每个节点均会承担网络路由、验证数据区块等功能。
图表1:P2P网络网络的节点根据存储数据量的不同,可以分为全节点和轻量级节点:
全节点——全节点存储了从创始区块以来的所有区块链数据,全节点的优点是进行数据校验时不需要依靠别的节点,仅依靠自身就可以完成校验更新等操作,缺点是硬件成本较高。
轻量级节点——轻量级节点只需要存储部分数据信息,当需要别的数据时可以通过简易支付验证方式(Simplified Payment Verification,SPV)向邻近节点请求所需数据来完成验证更新。
在比特币出现之前,P2P网络计算技术已被广泛用于开发各种应用,如即时通讯软件、文件共享和下载软件、网络视频播放软件、计算资源共享软件等。P2P网络技术是区块链技术架构的核心技术之一。
分布式数据库
比特币系统中的区块就像一个记账本一样,记录了比特币系统中发生的这段时间内的所有交易信息。每一个比特币用户的比特币收支情况都被永久地嵌入数据区块中以供别人查询。
这些数据区块中的交易数据存放在每一个比特币用户的客户端节点中,所有的这些节点组成了比特币及其坚韧的分布式数据库系统。任何一个节点的数据被破坏都不会影响整个数据库的正常运转,因为其他的健康节点中都保存了完整的数据库。
数据区块
比特币的交易记录会保存在数据区块之中,每个数据区块一般包含区块头(Header)和区块体(Body)两部分。如图2所示:
图表2:区块结构区块头——区块头封装了当前的版本号(Version)、前一区块地址(Pre-block)、时间戳(Timestamp)、随机数(Nonce)、当前区块的目标哈希值(Bits)、Merkle树的根值(Merkle-root)等信息;区块头的大小为80字节,由4字节的版本号、32字节的上一个区块的哈希值、32字节的Merkle根哈希值、4字节的时间戳(当前时间)、4字节的当前难度值、4字节的随机数组成。
区块体——区块体中主要包含交易计数和交易详情。交易详情就是比特币系统中的记账本,每一笔交易都会被永久地计入数据区块中,而且任何人都可以查询。区块体中的Merkle树会对每一笔交易进行数字签名,以确保每一笔交易都不可伪造且没有重复交易。所有的交易将通过Merkle树的Hash过程产生一个唯一Merkle根值记入区块头。
Merkle树
Merkle树是数据结构中的一种形式,可以是二叉树,也可以是三叉树,它具有树结构的所有特点。比特币区块链系统中采用的是Merkle二叉树,它的作用主要是快速归纳和校验区块数据的完整性。
它会将区块链中的数据分组进行哈希运算,向上不断递归运算产生新的哈希节点,最终只剩下一个Merkle根存入区块头中,每个哈希节点总是包含两个相邻的数据块或其哈希值。
图表3:区块中的Merkle树在比特币系统中使用Merkle树有诸多优点:
首先是极大地提高了区块链的运行效率和可扩展性,使得区块头只需包含根哈希值而不必封装所有底层数据,这使得哈希运算可以高效地运行在智能手机甚至物联网设备上;
其次是Merkle树可支持“简化支付验证协议”(SPV),即在不运行完整区块链网络节点的情况下,也能够对交易数据进行检验。所以,在区块链中使用Merkle树这种数据结构是具有重要意义的。
时间戳
时间戳是指从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数,通常是一个字符序列,唯一地标识某一刻的时间。在比特币系统中,获得记账权的节点在链接区块时需要在区块头中加盖时间戳,用于记录当前区块数据的写入时间。每一个随后区块中的时间戳都会对前一个时间戳进行增强,形成一个时间递增的链条。
时间戳本身并没有多复杂,但在区块链技术中应用时间戳却是一个重大创新,时间戳为未来基于区块链的互联网和大数据增加了一个时间维度,使得数据更容易追溯,重现历史也成为可能。同时,时间戳可以作为存在性证明(Proof of Existence)的重要参数,它能够证实特定数据必然在某特定时刻是的确存在的,这保证了区块链数据库是不可篡改和不可伪造的,这也为区块链技术应用于公证、知识产权注册等时间敏感领域提供了可能。
UTXO交易模式
UTXO(Unspent
Transaction Outputs)是未花费的交易输出,它是比特币交易过程中的基本单位。除创世区块以外,所有区块中的交易(Tx)会存在若干个输入(Tx_in,也称资金来源)和若干个输出(Tx_out,也称资金去向),创世区块和后来挖矿产生的区块中给矿工奖励的交易没有输入,除此之外,在比特币系统中,某笔交易的输入必须是另一笔交易未被使用的输出,同时这笔输入也需要上一笔输出地址所对应的私钥进行签名。
当前整个区块链网络中的UTXO会被储存在每个节点上,只有满足了来源于UTXO和数字签名条件的交易才是合法的。所以,区块链系统中的新交易,不必追溯整个交易历史,就可以确认当前交易是否合法。
这些技术并不是新技术,而是已有的技术,正是这些已有的技术,形成一个完整的区块链系统后,使得区块链在无中心的网络上形成了运转不息的引擎,为区块链的交易、验证、链接等功能提供了源源不断的动力。同时,也带来了提高社会效率、促进和谐发展的一种新的可能。
1.1.3区块结构的链接
区块链虽然是一个新兴的概念,但它依赖的技术都是很成熟的,正是这些已经非常成熟的技术组成了严谨的区块链。
区块链技术是一项新兴技术,不是指其组成技术新,而是其组合呈现的方式新;区块链技术的强大,不在于其单项基础技术的作用强大,而在于其配套形成的账本系统功能强大。比如:时间戳本身并没有多复杂,但在区块链技术中应用时间戳,就相当于为未来基于区块链的互联网和大数据增加了一个时间维度,使得数据更容易追溯,重现历史也成为可能;分布式账本、共识算法都是已经存在很久的技术,但是分布式账本和共识算法的结合,解决了集体维护分布式账本的历史难题;具有公钥和私钥体系的数字签名,也是一项很成熟的技术,将数字签名引入分布式账本中应用,则实现了去中心化身份管理,保障了区块链的隐私性和准匿名性;时间戳、UTXO和数字签名的组合使用,完美地避免了双重支付(双花)问题。
可以这么说,区块链更像是一门交叉学科,区块链技术是巧妙地结合了P2P网络、UTXO、数字签名、哈希函数、非对称加密算法、共识算法等等技术,构建成的一个新技术。
网友评论