文献名称:区块链技术与应用前瞻综述
作者:何蒲 于戈 张岩峰 鲍玉斌(东北大学计算机科学与工程学院 沈阳110819)
网址:http://www.cnki.com.cn/Article/CJFDTOTAL-JSJA201704002.htm
区块链技术是一种去中心化、去信任化的分布式数据库技术方案。该数据库由参与系统的所有节点集体维护,具有去中心化、不可篡改、透明、安全等特性。
作为比特币的底层技术支持
区块链技术是构建比特币系统的基础技术。区块链记录着所有元数据和加密交易信息,从而建立了一个完全通过P2P技术实现的电子现金系统,此系统使得在线支付的双方不用通过第三方金融机构而直接进行交易。
区块链技术不是一项创新的技术,是将许多已有的跨领域的学科整合到一起,涉及密码学,数学,计算机科学等领域。是最有潜力触发第五轮颠覆性革命浪潮的核心技术
哈希算法
哈希算法将任意长度的输入值映射为较短的固定长度的二进制的值。
数据的哈希值可以检验数据的完整性,一般用于快速查找和加密算法
默克尔树
默克尔树在验证、文件对比中应用比较多,特别是在分布式环境下,默克尔树会大大减少数据的传输量和计算的复杂度
默克尔树支持快速地归纳和校验区块中交易的完整性与存在性
时间戳
系统给交易盖上准确的时间戳,以验证交易确实发生,交易中的资金所属权已经转移,再次使用这笔资金就会报错,解决了重复支付问题
–
工作量证明
- 比特币系统使用POW机制使系统各节点最终达成共识,进而得到最终区块。工作量证明中的工作是指找到一个合理的区块哈希值,需要大量计算,时间取决于哈希难题的难度与机器的运算速度。
- 当一个节点找到这个值以后说明节点确实做了大量计算,即为工作量证明
由于验证只需要对结果值进行一次哈希运算,所以POW的验证效率很高 - 会浪费大量算力
权益证明机制
- 权益证明(pos)根据货币持有量和时间来分配相应的利息。
- 区块的产生没有消耗大量算力
P2P网络技术
具有耐攻击、高容错的优点
非对称加密技术
公钥加密,私钥解密
私钥签名,公钥验证
比特币系统中公钥由私钥通过椭圆曲线加密算法生成
交易中有正确的数字签名才能验证交易有效
区块链定义
1、区块链是一种分布式数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块包含一次比特币网络交易的信息,用于验证其信息的有效性和生成下一个区块
2、区块链由包含一系列加盖了时间戳的有效交易的区块组成。每一个区块都包含了前一个区块的哈希值,这样就把区块联系在一起。每一个随后的区块都是对之前区块的增强
3、区块链是由一串使用密码学方法产生的数据库组成的,每一个区块包含了上一个区块的哈希值。每一个区块都由时间顺序在上一个区块之后产生。
区块链具有去中心化、去信任化、开放、信息不可更改、匿名、自治的特性
区块链是一种电子记录形式的账簿,每一个区块算是账簿的一页。每个区块包含了当前一段时间内的所有交易信息和区块元数据
区块链的应用
- 文件存储系统Storj
- 预测市场系统Augur
- 电子商务系统OpenBazaar
- 智能合约系统
区块链分为三种
- 公有链
是指任何个体或者团体都公用一条区块链,只要接入此链都可以在上面发送交易,并且交易能够获得该区块链的有效确认,任何团体或者个人都可以参与其共识过程。是完全去中心化的。 - 行业链
是指共识过程受到某些预选节点控制的区块链。由该行业集体内部首先指定多个预选节点为记账人,每个区块的生成是由所有的预选节点共同决定的(预选节点决定区块链共识),其他节点只能接入区块链负责交易,但是不参与共识过程。是部分去中心化的 - 私有链
仅仅使用区块链技术记账,不对外开放。对象可以是一个公司也可以是个人,单独拥有此区块链的写入权限。既应用到了区块链的特性,又能保证安全。
行业链结合了公有链的完全开放和私有链的高度集中,提供了一种混合折中的模式。私有链由于完全限制的写入权限和高度受限的读取权限,对于保护个人隐私非常合适。
梅克尔树
将区块中所有交易记录都进行两次哈希运算,得到的结果作为默克尔树的叶子节点,然后递归两个相邻节点的哈希值,直到得到最后一个哈希结果,此哈希值即为默克尔树的根
挖矿就是寻找一个满足条件的Nonce值
区块标识符
每个区块有两个标识符:区块头哈希值和区块的高度。
区块的主标识符是它的区块头哈希值,通过对区块头6个字段进行两次SHA256哈希计算得到数字签名,产生的256位的值被称为区块头哈希值,简称为区块哈希值
第二个标识符是区块高度,创始区块的高度为0,通过识别该区块在区块链中的深度来确定一个区块。每一个之后产生的区块都比当前区块的高度高出一个位置。
区块链的特性
- 可靠开放性
区块链的设计使得能够有效预防故障与攻击(51%攻击除外) - 信息透明性
任意节点都可以查看整个账本 - 不可更改性
采用完全冗余的策略,所有节点都有一份完整数据,由于不可能保证所有节点的数据均被修改,因此降低了欺诈的风险 - 不可逆转性
交易不可撤销
区块链技术的瓶颈
- 过大的完整账本的存储空间
- 信息分发采用全网广播
是一种洪泛式,要求网络性能好 - 交易效率低下
比特币交易效率受到区块产生时间和区块大小的影响,比特币交易效率为7笔/秒,不适合处理实时交易 - 算力浪费
只有成功得到区块合法记账权的那部分算力得到奖励,其他算力都是无用功 - 节点升级成本高
区块链系统的运行原理
1、节点发送交易
2、输出
- 生成{Blocki}
- 广播Blocki
3、刷新节点:所有节点接收和验证交易:
- 验证交易
- if true
加入交易至缓冲区
4、创建区块:所有节点计算一个哈希值:
- 从缓冲区获取交易
- 构建新区块
- 计算区块头的哈希值hash{block header}
5、循环
if hash{block header} < Bits
转至步骤2
中本聪比特币白皮书介绍的区块链系统的建立过程
-
新的交易向全网节点广播
-
每个节点将交易都写到一个区块中
-
每个节点都在新的区块上进行计算,寻找一个工作量证明解
-
某个节点找到工作量证明解时,将所在区块向全网广播
-
其他节点收到广播的这个区块后对其进行验证,只有所有交易都被验证是有效的且未被使用的之后,该区块才能被认可
-
每个节点都将此区块的哈希值作为父哈希值来进行下一区块的计算,表示节点认可此区块有效
一般一笔交易需经过至少6次确认(在此区块之后产生一个区块就是一次确认),才能在区块链上认为是合法交易
挖矿
挖矿即为竞争区块的合法记账权,只有工作量证明可以得到该记账权。用计算机反复计算区块头,直到得到满足要求的解,即可得到这区块的记账权,也就是挖到了矿
具体方法:用SHA256算法不断对区块头和一个随机数字Nonce进行计算,直到计算出一个哈希值比预设值Bits小或者与其相等。第一个直到解的矿工会获得此区块的记账权,并且将此区块广播到系统中让其他节点进行验证
挖矿难度由比特币网络自动调整,实现每十分钟产生一个区块的平衡。
区块分叉:当下一个区块产生的时候,各个节点选择难度最长的链作为正确链,放弃难度较短的链,此时分叉消失。
以太坊
以太坊是一个平台和一种编程语言,使开发人员能够建立和发布下一代分布式应用
目的是为建立去中心化的应用创建一种可替代的协议,给一大类的去中心化的应用程序提供一组不同的平衡机制,这对需要快速开发、安全性要求低、很少使用的应用程序以及在不同的应用之间能有效互动很重要
在以太坊上创建应用的成本大大减少、速度大大提高
以太坊通过一种图灵完备的脚本语言(Ethereum Virtual Machine Code, EVM语言)来创建应用,类似于汇编语言,但是编写以太坊应用并不需要直接使用EVM,而是使用Solidity类编程语言,再通过编译器转换成EVM语言供以以太坊平台使用。
开发者可以通过以太坊这一平台创建自己的区块链应用
以太坊有三种应用:
- 金融应用:电子货币、金融衍生物、对冲交易合约、存储钱包、遗嘱、一些最终的完善就业合同
- 半金融应用:涉及金钱但是不是完全看重金钱,也有重要的非金钱应用,典型例子是为解决计算问题的自实施奖励
- 非金融应用:如在线投票和去中心化管理
Hyperledger
Hyperledger是Linux基金会于2015年发起的旨在推进区块链技术发展的开源项目。它领导全球各行业,包括金融,银行,物联网,供应链,制造以及技术领域等,在区块链技术上进行合作,建立一个开放平台,以满足来自各行各业的不同需求,并且简化业务流程
Blockchain Explorer旨在为Hyperledger创建一个用户友好型的Web应用程序,用以查看/查询区块、事务和关联数据、网络信息(名称、状态、节点列表)、链码/事务族(查看/调用/部署/查询)以及存储在账本中的任何其他相关信息。
基于区块链的智能合约
智能合约:一个智能合约是计算机协议,它促进、验证或者执行合约的协商或者履行,或使合约条款不必要。当满足一个预先编号的条件时,智能合约就被触发执行相应的条款
区块链重新定义了智能合约:智能合约是由事件驱动的、具有状态的、运行在一个可复制和可共享的账本上、且能够保管账本上资产的程序
Storj云存储,利用区块链搭建的去中心化云存储系统
区块链的应用前景:
区块链在金融应用的五大场景:
1. 数字货币:提高货币发行便利性
2. 跨境支付与结算:实现点对点交易,减少之间费用
3. 票据与供应链金融服务:减少人为介入,降低成本及操作风险
4. 证券发行与交易:实现实时资产转移,加速交易清算速度
5. 客户征信与反欺诈:降低法律合规成本,防止金融犯罪
区块链现有的其他应用场景:
1. 存在性证明:由于区块链的不可篡改性,可以应用在存在性证明,把过去的某一状态存在区块链上,未来就可以证明在过去确实存在
2. 智能合约:把智能合约部署在区块链上,合约内容实现定好,达到合约中的某个条件时合约自动触发,执行合约中的内容可以免去现实生活中合约执行的一些苛刻条件,能在不信任的环境下执行合约
3. 身份验证:智能合约可以存储个人的身份信息,可以保存现有的身份状态,一旦身份信息被篡改就会触发一定的条款,身份所有者就会知晓
4. 预测市场:例如Augur,它是一个基于区块链技术的去中心化的预测市场的平台,任何人都可以随时访问Augur,可以消除中心化服务器的风险
5. 电子商务:把比特币无监管模式应用到电商,应用这一模式不仅能免去之间冗余的环节,还能达到市场和谐。例如OpenBazaar直接利用比特币进行交易
6. 社交通讯:如去中心化通讯平台Gems,试图打破现有的社交媒体的模式,不仅社交公司可以赚钱,用户也能从中获利
7. 文件存储:基于区块链的存储技术将直接冲击甚至颠覆传统的云计算架构