——两大特性:
x
到H(x)
的映射是单向的——由数据计算出的哈希值,并且指向数据所在的位置(也就是说,哈希指针可以告诉我们数据存储位置及数据的哈希值)。
通过哈希指针,我们可以很容易地判断出数据是否有被篡改。
区块链中,每个块通过哈希指针指向前一个块(这个前一个块也就是当前块的父区块)
——区块链中的第一个区块。
创世区块(genesis block)没有父区块。
尽管每一个区块只能有一个父区块,但却可能短时间内拥有多个子区块——也就是说可能存在多个区块头部中存储的父区块的哈希值是一样的——不同的区块在同一时间被不同的矿工(miner)找到,这就造成了区块链的分叉。
但是区块链的分叉只是暂时的,系统会根据“最长链原则”来解决分叉
——通过“不断地递归计算节点的哈希值直到只有一个哈希值”地自底向上地构建,这个最后的哈希值也就是默克尔树的根。
当梅克尔树中有N个数据时,最多只需要 2 l o g 2 N 2log_2N 2log2N次计算就可以验证某个特定数据是否存在——所以默克尔树是相当高效的。
在区块链中用于组织和记录存储在区块中的交易,以便高效地验证某个交易是否存在区块中。
为了验证一笔交易是否包含在区块中,节点只需要计算 l o g 2 N log_2N log2N各哈希值,组成该交易到默克尔树树根的认证路径即可。
——用于控制区块的创建速度。一个有效区块的头部哈希值必须要小于目标值。
——一段可执行的计算机程序代码,它从外部对接可靠数据信息并加以判断识别,当所接收的信息达到程序设定的条件时,会触发系统自动执行合同条款。
——本质上是一个去中心化的分布式数据库。这个数据库中记录了所有提交的交易(all committed transactions)。
——实际上也是一个基于哈希指针构建的一个有序的,反向链接的交易块链表。
区块(block):一个一个的存储单元(包括block header和block body),记录了一定时间内各个区块节点全部的交易信息以及前一个区块的哈希值(通过SHA256加密哈希函数计算而得)。
其中,每个block header记录的信息包括:
——由一个交易计数器(transaction counter)和该区块中所有的交易(transactions)组成
(图源:Blockchain Challenges and Opportunities: A Survey)
链(chain):从创世区块开始(genesis block)开始,之后的每个区块通过哈希指针进行反向链接。每一个区块中都包含了父区块的哈希指针。
所以,后面的区块不仅可以查找到前面所有区块,也可以验证前面区块数据有没有被更改。
(图源:Blockchain Challenges and Opportunities: A Survey)
在传统的交易系统中,每一笔交易都需要经过一个值得信赖的、可靠的第三方中介代理来验证确认。这种中间代理显然带来了额外的资源耗用。此外,正如集中式系统那样,交易数目的增多必定造成中央服务器的成本和性能瓶颈。
而在区块链中,一笔交易可以在任意两个在网络中处于对等地位的客户端之间进行(P2P),而不需要经过中央服务器的认证。
由于在网络中进行的每一笔交易都会被确认、并记录在分布在整个网络中的区块中,因而几乎不可能对这些交易进行篡改。而且,每一个广播的块都会被其他的节点进行验证,所以任何的伪造数据都能轻易地被检测出来。
每一个用户在区块链中进行交易时可以使用一个生成的匿名地址,而且一个用户可以生成多个匿名地址进行交易,从而有效避免个人身份暴露。而且这时也不会有一个很可能存在信息安全隐患的中央机构存有用户个人的隐私信息。
但是由于存在内在约束(intrinsic constraint),区块链也并不能完美保证个人隐私安全性。
由于区块链中的每笔交易都用一个时间戳认证并记录,所以用户通过获得该分布式网络中的任意一个节点,便可以轻易地跟踪并求证该节点之前的记录。这便提高了区块链中存储的数据的可追踪性和透明度。
区块链保证数据安全、不可篡改以及透明性的关键技术包括两个方面:
在数据加密签名机制中,首先要有一个私钥。私钥是证明个人所有权的关键,比如证明某人有权从一个特定的钱包消费数字货币,是通过数字签名来实现的。其次,要使用哈希(Hash)算法。哈希散列可以把任意长度的输入通过哈希算法计算,变成固定长度的由字母和数字组成的输出,具有不可逆性。
共识算法是区块链中节点保持区块链数据一致、准确的基础,现有的主流共识算法包括工作量证明(PoW)、权益证明(PoS)、瑞波共识协议(RCP)等。以PoW为例,是指通过消耗节点算力形成新的区块,是节点利用自身的计算机硬件为网络做数学计算进行交易确认和提高安全性的过程。交易支持者(矿工)在电脑上运行比特币软件不断计算软件提供的复杂的密码学问题来保证交易的进行。作为对他们服务的奖励,矿工可以得到他们所确认的交易中包含的手续费,以及新产生的比特币。
区块链目前经历了三个发展阶段:
当前的区块链系统大致可以分为三类:公共区块链(public blockchain),私有区块链(private blockchain),共同体区块链(consortium blockchain)。
以下从七个角度比较这三类区块链:
公共区块链 | 共同体区块链 | 私有区块链 | |
---|---|---|---|
共识决定者 | 所有矿工(miners) | 指定的节点集合 | 一个组织(organization) |
读权限 | 公共(public) | 可以是公共的,也可以是受限的(restricted) | 可以是公共的,也可以是受限的(restricted) |
不变性 | 几乎不可能篡改 | 可以篡改 | 可以篡改 |
效率 | 低 | 高 | 高 |
中心的(centralized) | 否 | 部分的(partial) | 是 |
共识过程 | 不允许 | 允许的 | 允许的 |
[1] Zibin Zheng. Blockchain Challenges and Opportunities: A Survey[J]. Iderscience Enterprises,2017
[2] https://yemengying.com/2018/02/11/hash-blockchain/
[3] 邓建鹏,孙鹏磊. 区块链国际监督与合规应对[M]. 北京: 机械工业出版社,2019
[4] 长铗,韩锋. 区块链: 从数字货币到信用社会[M]. 北京: 中信出版社,2016
[5]井底望天,蒋晓军,相里朋,刘纯如. 区块链与产业创新[M]. 北京: 人民邮电出版社,2018