当先锋百科网

首页 1 2 3 4 5 6 7

基本概念

加密哈希函数(cryptographic hash function)

——两大特性:

  • collision resistance:输入空间足够大时,某些哈希函数难以人为地制造哈希碰撞
  • hiding:输入空间足够大时,xH(x)的映射是单向的

哈希指针

——由数据计算出的哈希值,并且指向数据所在的位置(也就是说,哈希指针可以告诉我们数据存储位置及数据的哈希值)。
通过哈希指针,我们可以很容易地判断出数据是否有被篡改。

父区块(parent block)

区块链中,每个块通过哈希指针指向前一个块(这个前一个块也就是当前块的父区块)

创世区块(genesis block)

——区块链中的第一个区块。
创世区块(genesis block)没有父区块。

分叉(Branch)

尽管每一个区块只能有一个父区块,但却可能短时间内拥有多个子区块——也就是说可能存在多个区块头部中存储的父区块的哈希值是一样的——不同的区块在同一时间被不同的矿工(miner)找到,这就造成了区块链的分叉。
但是区块链的分叉只是暂时的,系统会根据“最长链原则”来解决分叉

默克尔树(Merkle Tree)

——通过“不断地递归计算节点的哈希值直到只有一个哈希值”地自底向上地构建,这个最后的哈希值也就是默克尔树的根。

当梅克尔树中有N个数据时,最多只需要 2 l o g 2 N 2log_2N 2log2N次计算就可以验证某个特定数据是否存在——所以默克尔树是相当高效的。

在区块链中用于组织和记录存储在区块中的交易,以便高效地验证某个交易是否存在区块中。

为了验证一笔交易是否包含在区块中,节点只需要计算 l o g 2 N log_2N log2N各哈希值,组成该交易到默克尔树树根的认证路径即可。

目标哈希值

——用于控制区块的创建速度。一个有效区块的头部哈希值必须要小于目标值。

智能合约(smart contract)

——一段可执行的计算机程序代码,它从外部对接可靠数据信息并加以判断识别,当所接收的信息达到程序设定的条件时,会触发系统自动执行合同条款。

什么是区块链(Blockchain)

——本质上是一个去中心化的分布式数据库。这个数据库中记录了所有提交的交易(all committed transactions)。
——实际上也是一个基于哈希指针构建的一个有序的,反向链接的交易块链表。

区块(Block)

区块(block):一个一个的存储单元(包括block header和block body),记录了一定时间内各个区块节点全部的交易信息以及前一个区块的哈希值(通过SHA256加密哈希函数计算而得)。

block header

其中,每个block header记录的信息包括:

  • Block version:指明该区块要遵循的验证规则(validation rules) 集
  • Parent block hash:指向前一个区块的256位哈希值,也就是父区块的哈希指针
  • Merkle tree root hash:默克尔树树根值,相当于存储了该区块中所有交易的哈希值
  • Timestamp:按秒计数的当前时间戳(从1970-01-01 T 00:00 UTC开始算起)
  • nBits:压缩形式的当前目标哈希值
  • Nonce:一个4个字节的数据域,通常从0开始,每进行一次哈希运算则加一

block body

——由一个交易计数器(transaction counter)和该区块中所有的交易(transactions)组成

block
(图源:Blockchain Challenges and Opportunities: A Survey)

链(Chain)

链(chain):从创世区块开始(genesis block)开始,之后的每个区块通过哈希指针进行反向链接。每一个区块中都包含了父区块的哈希指针。
所以,后面的区块不仅可以查找到前面所有区块,也可以验证前面区块数据有没有被更改。

blockchain
(图源:Blockchain Challenges and Opportunities: A Survey)

区块链的关键特征

去中心化(Decentralization)

在传统的交易系统中,每一笔交易都需要经过一个值得信赖的、可靠的第三方中介代理来验证确认。这种中间代理显然带来了额外的资源耗用。此外,正如集中式系统那样,交易数目的增多必定造成中央服务器的成本和性能瓶颈。
而在区块链中,一笔交易可以在任意两个在网络中处于对等地位的客户端之间进行(P2P),而不需要经过中央服务器的认证。

持久性(Persistency)

由于在网络中进行的每一笔交易都会被确认、并记录在分布在整个网络中的区块中,因而几乎不可能对这些交易进行篡改。而且,每一个广播的块都会被其他的节点进行验证,所以任何的伪造数据都能轻易地被检测出来。

匿名性(Anonymity)

每一个用户在区块链中进行交易时可以使用一个生成的匿名地址,而且一个用户可以生成多个匿名地址进行交易,从而有效避免个人身份暴露。而且这时也不会有一个很可能存在信息安全隐患的中央机构存有用户个人的隐私信息。
但是由于存在内在约束(intrinsic constraint),区块链也并不能完美保证个人隐私安全性。

可审计性(Auditability)

由于区块链中的每笔交易都用一个时间戳认证并记录,所以用户通过获得该分布式网络中的任意一个节点,便可以轻易地跟踪并求证该节点之前的记录。这便提高了区块链中存储的数据的可追踪性和透明度。

区块链关键技术

区块链保证数据安全、不可篡改以及透明性的关键技术包括两个方面:

  • 数据加密签名机制
  • 共识算法

数据加密签名机制

在数据加密签名机制中,首先要有一个私钥。私钥是证明个人所有权的关键,比如证明某人有权从一个特定的钱包消费数字货币,是通过数字签名来实现的。其次,要使用哈希(Hash)算法。哈希散列可以把任意长度的输入通过哈希算法计算,变成固定长度的由字母和数字组成的输出,具有不可逆性。

共识算法

共识算法是区块链中节点保持区块链数据一致、准确的基础,现有的主流共识算法包括工作量证明(PoW)、权益证明(PoS)、瑞波共识协议(RCP)等。以PoW为例,是指通过消耗节点算力形成新的区块,是节点利用自身的计算机硬件为网络做数学计算进行交易确认和提高安全性的过程。交易支持者(矿工)在电脑上运行比特币软件不断计算软件提供的复杂的密码学问题来保证交易的进行。作为对他们服务的奖励,矿工可以得到他们所确认的交易中包含的手续费,以及新产生的比特币。

区块链发展阶段

区块链目前经历了三个发展阶段:

  • 区块链1.0阶段,又称“可编程货币”,是指应用分布式账本、块链式数据、工作量证明等技术,发行和交易“虚拟货币”。这一阶段以比特币为代表,解决了货币和支付手段去中心化问题
  • 区块链2.0阶段,又称“可编程资产”,是指应用智能合约、虚拟化、分布式应用等技术,对金融领域的使用场景和流程进行梳理、优化的应用,拓展至除了“数字货币”以外的其他领域。其中,以以太坊、瑞波为代表的第二代区块链技术开创了区块链商业应用的序幕
  • 区块链3.0阶段,又称“可编程社会”,是指在社会领域下的应用场景实现,将区块链技术拓展到金融领域之外,为各行业提供去中心化的解决方案。其中,以墨客、EOS为代表的第三代区块链技术开创了区块链社会化应用的序幕

区块链的分类

当前的区块链系统大致可以分为三类:公共区块链(public blockchain),私有区块链(private blockchain),共同体区块链(consortium blockchain)。

  • 公共区块链:全世界任何人都可读取、可发送交易进行有效性确认,任何人都能参与其共识过程的区块链。其典型应用包括比特币、以太坊等
  • 共同体区块链:又称联盟链,指参与区块链的节点是事先选择好的,节点间通常有良好的网络连接等合作关系,区块链的数据可以是公开的也可以是内部的,为部分意义上的分布式,可视为“部分去中心化”。其典型应用包括超级账本(Hyperledger)、区块链联盟R3CEV等
  • 私有区块链:参与的节点只有有限的范围,比如特定机构的自身用户等,数据的访问及使用有严格的权限管理。其典型应用如Eris Industries

以下从七个角度比较这三类区块链:

公共区块链共同体区块链私有区块链
共识决定者所有矿工(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