——两大特性:html
x
到H(x)
的映射是单向的——由数据计算出的哈希值,而且指向数据所在的位置(也就是说,哈希指针能够告诉咱们数据存储位置及数据的哈希值)。
经过哈希指针,咱们能够很容易地判断出数据是否有被篡改。web
区块链中,每一个块经过哈希指针指向前一个块(这个前一个块也就是当前块的父区块)算法
——区块链中的第一个区块。
创世区块(genesis block)没有父区块。数据库
尽管每个区块只能有一个父区块,但却可能短期内拥有多个子区块——也就是说可能存在多个区块头部中存储的父区块的哈希值是同样的——不一样的区块在同一时间被不一样的矿工(miner)找到,这就形成了区块链的分叉。
可是区块链的分叉只是暂时的,系统会根据“最长链原则”来解决分叉编程
——经过“不断地递归计算节点的哈希值直到只有一个哈希值”地自底向上地构建,这个最后的哈希值也就是默克尔树的根。安全
当梅克尔树中有N个数据时,最多只须要 次计算就能够验证某个特定数据是否存在——因此默克尔树是至关高效的。服务器
在区块链中用于组织和记录存储在区块中的交易,以便高效地验证某个交易是否存在区块中。网络
为了验证一笔交易是否包含在区块中,节点只须要计算 各哈希值,组成该交易到默克尔树树根的认证路径便可。app
——用于控制区块的建立速度。一个有效区块的头部哈希值必需要小于目标值。分布式
——一段可执行的计算机程序代码,它从外部对接可靠数据信息并加以判断识别,当所接收的信息达到程序设定的条件时,会触发系统自动执行合同条款。
——本质上是一个去中心化的分布式数据库。这个数据库中记录了全部提交的交易(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