我区块链笔记的整理

1 初识区块链

1.1 区块链的各类定义

(没有统一的定义,下面的定义五花八门,分别来源于不同的文献资料)

定义1:区块链是一种按照时间顺序将数据区块以链条的方式组合形成的特定数据结构,并以密码学方式保证其不可篡改和不可伪造的去中心化、去信任化的分布式共享总账系统。

定义2:区块链是以比特币为代表的数字加密货币体系的核心支撑技术。区块链技术的核心优势是去中心化,能够通过运用数字加密、时间戳、分布式共识和经济激励手段,在节点无需互相信任的分布式系统中实现基于去中心化信用的点对点交易、协调与协作,从而为解决中心化机构普遍存在的高成本、低效率和数据存储不安全等问题提供了解决方案。

定义3:区块链是一种去中心化、不可篡改、可追溯、多方共同维护的分布式数据库。区块链通过集成P2P协议、非对称加密、共识机制、块链结构等多种技术,解决了数据的可信问题。

定义4:区块链是一种分布式数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一次比特币网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。

定义5:区块链技术是一项新技术,但不是一种创新技术。它是将许多已有的跨领域的学科整合到一起,涉及数学、密码学、计算机科学等领域,从而形成的一种技术。比特币是第一个采用区块链技术作为底层技术构建的系统,它是一个实现了去中心化、去信任化、安全、可靠的电子现金系统。

定义6:区块链是一种多方共同维护,使用密码学保证传输和访问安全,能够实现数据一致存储、难以篡改、防止抵赖的记账技术,也称为分布式账本技术。

定义7:区块链技术是一种去中心化、去信任化的分布式数据库技术方案。该数据库由参与系统的所有节点集体维护,具有去中心化化、不可篡改、透明、安全等特性。

定义8:区块链是利用加密链式区块结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用自动化脚本代码(智能合约)来编程和操作数据的一种全新的去中心化基础架构与分布式计算范式。

1.2 三种类型的区块链

基于时间戳的链式区块结构、分布式节点的共识机制、基于共识算力的经济激励和灵活可编程的智能合约是区块链技术最具有代表性的创新点。

区块链有三种类型,分为公有链、私有链和联盟链。

1.2.1 公有链

公有链为来自不同组织和背景的人们提供了一个开放平台,任何人都可以加入、交易和挖矿,没有限制。只要接入公有链就可以在链上发送交易,并且交易能获得该区块链的有效确认,任何人都可以参与共识过程,每个参与者都有权阅读和编写交易,或随时查看区块链的任何部分。公有链是开放透明的,并没有特定的验证节点。所有用户都可以收集交易并从挖矿开始以获得挖矿奖励。公有链是完全去中心化的。

1.2.2 私有链

建立私有链以促进单个组织或多个组织之间的私人共享和数据交换,其中挖矿由一个组织或选定的个人控制。私有链仅仅使用区块链技术进行记账操作,不对外公开。私有链使得网络更倾向于集中化,一旦节点成为网络的一部分,它们就有助于运行分布式网络,每个节点都维护账本并协作更新数据。使用私有链的对象可以是一个公司也可以是个人,而公司或个人单独拥有该私有链的写入权限(或者会对外开放有一定限制的读写权限)。

现在有众多企业在研究自己的私有区块链,既应用到区块链的特性,又能保证安全。私有链有完全限制的写入权限和高度受限的读写权限,很适合用于保护个人隐私的应用。

1.2.3 联盟链

联盟链由一组预设节点负责共识和区块验证,预选节点决定哪些节点可以成为网络的一部分以及哪些节点可以挖矿。对于区块验证,使用多重签名方案,其中区块仅由这些节点签名时才被视为有效。

联盟链指共识过程受到某些预选节点控制的区块链。由使用联盟链的行业集体内部首先指定多个预选节点作为记账节点,区块的生成由所有的预选节点共同决定(即由预选节点决定区块链的共识),其他节点只能进行交易,不参与共识。联盟链被认为是部分去中心化的,它结合了公有链的完全开放和私有链的高度集中,提供了一种混合折中的模式。联盟链结合了公有链的完全开放和私有链的高度集中,提供了一种混合折中的模式。

1.3 区块链的数据结构

区块链系统由数据层、网络层、共识层、激励层、合约层和应用层组成。

网络层封装了区块链系统的组网形式、网络传播协议和数据验证机制等要素。

按照节点存储数据量的不同,可以分为全节点和轻量级节点。前者保存有自创世区块到当前最新区块为止的完整区块链数据,并且通过实时参与区块数据的校验和记账来实时更新主链。全节点的优势在于不依赖其他节点而能独立实现任意区块数据的校验、查询和更新,劣势是维护全节点的空间成本很高。轻节点仅保存一部分数据,通过简易支付验证方式向其相邻节点请求所需的数据来完成数据校验。

区块是一种数据结构,包含两部分——区块头和区块体。前者记录的是区块的相关元数据信息,后者记录的是从上一区块产生到此区块创建之间所发生的所有交易。区块元数据包含区块大小、区块头和交易计数器3部分。如下图:

我区块链笔记的整理_第1张图片

1.3.1 区块头结构

区块头由两组元数据组成,一组与挖矿有关,包括时间戳、难度目标及Nonce值;另一组与区块本身有关,包括链接父区块的字段、版本号及Merkle树的根。

将区块中所有交易记录都进行两次哈希运算之后,将结果作为Merkle树的叶子节点,然后递归两个相邻节点的哈希值,直到得到最后一个哈希结果,这个结果就是Merkle根。难度目标Bits是一种特殊的浮点编码类型,占4Byte,首字节是指数,仅用其中的最低5位,后3个字节是尾数,它能够表示256位的数。一个区块头的SHA256哈希值必须小于或等于Bits难度目标,这样才能被其他节点认可,难度目标Bits越小,产生一个新区块的难度就越大,即目标值越小,得到正确结果的区间就越小,难度就越大。Nonce字段是指随机数,各个区块头的值往往不同,但它是从0开始严格按线性方式增长的随机数,每次计算都会增长。挖矿就是寻找一个满足难度目标的Nonce值。

比特币网络可以动态调整PoW共识过程的难度值,【最先找到正确随机数解Nonce并且经过其他所有矿工验证】的矿工将获得当前区块的记账权。区块体包括当前区块的交易数量以及经过验证的、区块创建过程中生成的所有交易记录,这些交易记录通过Merkle树的哈希过程后生成唯一的【Merkle根】并计入区块头。

1.3.2 区块标识符

每个区块都有两种标识符:区块头哈希值和区块高度。但是这两个字段都没有被真正记录下来,因为这两个字段可以直接被计算出来。

1.4 区块链的编程语言

比特币平台提供了处理交易的简单脚本,这些脚本是基于栈的一组指令,为了避免可能的漏洞与攻击,所以没有设计循环指令和系统函数,因而比特币脚本不是图灵完备的程序语言,比特币平台不存在严格意义上的智能合约。

以太坊自定义了solidity,serpent等图灵完备的脚本语言来开发智能合约,自定义脚本语言是为了实现特殊的合约功能。

Hyperledger fabric可基于go和java高级语言开发智能合约,这些高级语言不但图灵完备,编译技术成熟,而且也可以减轻合约编程者的学习门槛。

1.5 区块链进化过程

  1. 区块链1.0——【数字货币】:以可编程数字加密货币体系为主要特征
  2. 区块链2.0——【数字资产与智能合约】:以可编程金融系统为主要特征
  3. 区块链3.0——【从DAO,DAC(分布式自治组织、分布式自治公司)到区块链社会(科学、医疗、教育等)】:以可编程社会为主要特征

1.6 区块链特性

区块链技术的核心优势是能够在决策权高度分散的去中心化系统中使得各节点高效地针对区块数据的有效性达成共识。

  • 可靠开放性
  • 信息透明性(任意节点都可以查看整个区块链账本)
  • 不可更改性
  • 不可逆转性
  • 开放共识
  • 去中心化
  • 去信任
  • 匿名性
  • 可追溯性
  • 可编程性

2 区块链基础技术

2.1 哈希算法

哈希(也称为散列)算法将任意长度的输入值映射为较短的固定长度的二进制值。如SHA256算法将任意长度的输入映射为长度为256的固定长度输出,这个二进制值称为哈希值(或称为散列值),事实上,产生的结果为16位进制的一个值,它的长度为64位。数据的哈希值可以检验数据的完整性,一般用于快速查找和加密算法。

哈希算法广泛应用于区块链中,区块链通常不保存原始数据,而是保存该数据的哈希值,Merkle树中的叶子节点是由交易信息的两次SHA256哈希运算得到的。签名频繁应用于区块链中,由私钥和需要被签名的数据经哈希运算而成。

区块链通常并不直接保存原始数据或交易记录,而是保存其哈希函数值,即将原始数据编码为特定长度的由数字和字母组成的字符串后计入区块链。通过哈希输出几乎不能反推输入值(单向性),不同长度输入的哈希过程消耗大约相同的时间(定时性)且产生固定长度的输出(定长性),即使输入仅相差一个字节也会产生显著不同的输出值(随机性)等。比特币使用双SHA256哈希函数,即将任意长度的原始数据经过两次SHA256哈希运算后转换为长度为256位(32字节)的二进制数字来统一存储和识别。SHA256算法还具有巨大的散列空间(2256)和抗碰撞(避免不同输入值产生相同的哈希值)等特性,可以满足比特币的任何相关标记需要而不会出现冲突。

2.2 Merkle树

Merkle树是一种基于数据的哈希值所构建的树:其数据结构是一颗树,一般为二叉树,也可以是多叉树;叶子节点是数据块(如文件或文件集合)的哈希值;非叶子节点是其所有子节点的哈希值。

Merkle树在验证、文件对比中应用较多,特别是在分布式环境下,Merkle树会大大减小数据的传输量和计算的复杂度。

区块链中的每个区块都包含了记录于该区块的所有交易,区块链系统采用二叉树型的Merkle树对这些交易进行归纳表示,同时生成该交易集合的数字签名。Merkle树支持快速地归纳和校验区块中交易的完整性与存在性。

Merkle树通常包含区块体的底层交易数据库、区块头的根哈希值(即Merkle根)以及所有沿底层区块数据到根哈希的分支。Merkle树运算过程一般是将区块体的数据进行分组哈希,并将生成的新哈希值插入到Merkle树根中,如此递归直到只剩最后一个根哈希值并记为区块头的Merkle根。

Merkle树有诸多优点:首先是极大地提高了区块链的运行效率和可扩展性,使得区块头只需包含根哈希值而不必封装所有底层数据,这使得哈希运算可以高效地运行在智能手机甚至物联网设备上;其次是Merkle树可支持简化支付验证协议,即在不运行完整区块链网络节点的情况下,也能够对交易数据进行检验。

2.3 时间戳

区块链要求获得记账权的节点必须在当前数据区块头中加盖时间戳,表明区块数据的写入时间。因此,主链上各区块是按照时间顺序以此排列的。时间戳技术在区块链中的应用是具有主要意义的创新:时间戳可以作为区块数据的存在性证明(proof of existence),有助于形成不可篡改和不可伪造的区块链数据库,从而为区块链应用于公证、知识产权注册等时间敏感的领域奠定了基础。更为重要的是,时间戳为未来基于区块链的互联网和大数据增加了时间维度,使得通过区块链数据和时间戳来重现历史成为可能。

2.4 P2P网络技术

P2P网络技术又称为点对点技术,它是一个没有中心服务器、依靠用户群交换信息的互联网体系。P2P网络由于没有中心化服务器,使得它具有耐攻击、高容错的优点;并且各个节点地位平等,服务分散在各个节点上进行,因此部分节点或网络遭到攻击对整个系统几乎没有影响。比特币系统应用P2P技术,使各个节点独立地参与系统,每一个节点都是一个独立的个体,单独节点宕机或者遭到攻击都不会对系统造成影响。

2.5 非对称加密技术

非对称加密中有一对密钥——私钥和公钥。公钥公开,私钥保密。私钥加密的信息只有对应的公钥才能解开,公钥加密的信息只有对应的私钥才能解密,即公钥加密,私钥解密;私钥签名,公钥验证。在比特币中,公钥由私钥通过椭圆曲线加密算法生成;交易信息中必须要有正确的数字签名才能验证交易有效。

非对称加密是为了满足安全性需求和所有权验证需求而集成到区块链中的加密技术。常见的算法包括RSA、ECC(椭圆曲线加密算法)等。非对称密钥对具有两个特点:1、用其他一个密钥(公钥或私钥)加密信息后,只有用另外一个对应的密钥才能解开;2、公钥可向他人公开、私钥则不公开,无法通过该公钥推算出相应的私钥。

非对称加密技术在区块链的应用场景主要包括信息加密数字签名登录认证等。下面是对三种应用场景的简单叙述:1、信息加密:由信息发送者(记为A)使用接受者(记为B)的公钥将信息加密后再发送给B,B可以利用自己的私钥将信息解密;2、数字签名:由发送者A采用自己的私钥加密信息后发送给B,B使用A的公钥(A的公钥是公开的)将信息解密,从而可确保信息是由A发送的;3、登录认证:由客户端使用私钥加密登录信息后发送给服务器,服务器接收后采用该客户端的公钥解密并认证登录信息。

2.6 共识机制

所有节点应该就该账本的共同内容更新协议达成一致,并且如果某个区块未经多数节点同意,则不能将此区块作为区块链的一部分接受。这就是共识机制,通过该机制创建新区块并将其添加到现有账本以供将来使用。区块链的共识算法必须运行于更复杂、开放和缺乏信任的互联网环境下,节点数量更多且可能存在恶意拜占庭节点。

区块链共识算法分为选举类、证明类、随即类、联盟类和混合类共5种类型:

1、选举类共识:矿工节点在每一轮共识过程中通过投票选举的方式选出当前轮次的记账节点,首先获得半数以上选票的矿工节点将会获得记账权。如,Paxos和Raft。
2、证明类共识:矿工节点在每一轮共识过程中必须证明自己具有某种特定的能力,证明方式通常是竞争性地完成某项难以解决但易于验证的任务,在竞争中胜出的矿工节点将获得记账权,共识算法是基于矿工的算力或者权益来完成随机数搜索任务,以此竞争记账权。如,PoW和PoS。
3、随即类共识:矿工节点根据某种随机方式直接确定每一轮的记账节点。如,Algorand和PoET。
4、联盟类共识:矿工节点基于某种特定方式首先选举出一组代表节点,而后由代表节点以轮流或选举的方式以此取得记账权。如,DPoS。
5、混合类共识:矿工节点采用多种共识算法的混合体来选择记账节点。

2.6.1 经典共识算法

1 工作量证明(POW)
工作量证明是中本聪为比特币实现一致性和安全性而提出的第一个分布式共识协议。比特币网络中的节点竞争计算下一个区块的哈希值,该哈希值应该小于由共识规则确定的动态变化的目标值。在将区块添加到现有区块链之前,完成计算的节点要等待其他节点的确认。
如果多个节点找到正确的计算结果,则可能会生成多个有效块,导致网络临时分叉。在这种情况下,这些区块都是可以接受的,矿工接受离他更近的节点,并将此计算的结果转发给其他节点。在任何时候接受最长链,可以避免后期的冲突。
比特币利用POW机制使系统各节点最终达成共识,进而得到新区块。工作量证明的“工作”是指找到一个合理的区块哈希值,它需要不断地进行大量的计算,计算时间取决于当前目标的难度和机器的运算速度。当一个节点找到这个值之后,就可以表明该节点确实经过了大量的计算。由于验证只需对结果值进行一次哈希运算,因此POW的验证效率很高。
POW共识的核心思想是通过引入分布式节点的算力竞争来保证数据一致性和共识的安全性。各节点基于各自的计算机算力相互竞争来共同解决一个求解复杂但是验证容易的SHA256数学难题(即挖矿),最快解决该难题的节点将获得区块记账权和系统自动生成的比特币奖励。该数学难题为:根据当前难度值,通过搜索求解一个合适的随机数(Nonce),使得区块头各元数据的双SHA256哈希值小于或等于目标哈希值。比特币系统通过灵活调整随机数搜索的难度值来控制区块的平均生成时间为10分钟左右。
不足之处:1、算力浪费,大量算力被用于无意义的hash计算。2、交易确认效率低,需要生成6个区块,即约1h后才能确认成交。3、性能瓶颈,每个区块大小限制在1MB,每秒最多处理15笔交易,效率太低。

2 权益证明(POS)
权益证明的提出克服了比特币中工作量证明过度耗电的缺点。以太坊利用权益证明来达成共识。权益证明不像工作量证明那样进行严格的哈希计算以获得资源,而是建议购买加密货币并使用其用作网络中的权益。权益的占比与能否进行区块验证的可能性成正比。为了达成共识,区块验证者是随机选择的,并且不是预先确定的。生成有效块的节点获得激励,但是,若节点生成的区块不包含在现有区块链中,那么这些节点也会损失一定数量的权益。
相比POW浪费大量的算力,权益证明仅仅需要少量的计算就能维持区块链的正常运转。这种机制根据货币持有量和时间来分配相应的利息。但是这种机制存在一点不足,即区块的产生没有消耗大量算力,导致这种机制下的货币价值来源难以确定,因为任何区块链系统都可以实现。
POS是为解决POW的资源浪费和安全性缺陷而提出的替代方案,是采用权益证明来代替基于哈希算力的工作量证明,是由系统中具有最高权益而非最高算力的节点获得新区块的记账权。权益体现为节点对特定数量货币的所有权,称为币龄。币龄是特定数量的币与其最后一次交易的时间长度的乘积,每次交易都会消耗掉特定数量的币龄。
缺陷:不确定性高,依赖代币,安全性脆弱。
POS共识算法中难度与交易输入的币龄

3 实用拜占庭算法(PBFT)
在区块链中,PBFT致力于在参与节点之间建立共识:节点保持其当前状态,当接收到新消息时,将当前状态和消息一起馈送(馈送???)进行计算以帮助节点做出决定,然后将该决定广播到网络。
PBFT对节点的数量有要求,系统需要最少3N+1个节点,N为允许失效节点个数,只要收到2N个节点确认就是交易确认。

4 委托权益证明(DPOS)
DPOS的思路类似于董事会决策,即系统中每个股东节点可以将其持有的股份权益作为选票授予一个代表,获得票数最多且愿意成为代表的前101个节点将进入董事会,按照既定的时间表轮流对交易进行打包结算并且签署(即生产)一个新区块。每个区块被签署之前,必须先验证前一个区块已被受信任的代表节点所签署。董事会的授权节点可以从每笔交易的手续费中获得收入,同时要成为授权代表节点必须缴纳一定量的保证金,其金额相当于生产一个区块收入的100倍。授权代表节点必须对其他股东节点负责,如果其错过签署相对应的区块,则股东将会收回选票从而将该节点投出董事会。因此,授权代表节点通常必须保证99%以上的在线时间以实现盈利目标。与POW共识机制必须信任最高算力节点和POS共识机制必须信任最高权益节点不同的是,DPOS共识机制中每个节点都能够自主决定其信任的授权节点且由这些节点轮流记账生成新区块,因而大幅减少了参与验证和记账的节点数量,可以实现快速共识验证。
DPOS将全网节点分为普通节点和中介代理节点,只有代理节点拥有记账权,普通节点投票选出固定数量的代理节点,由代理节点队列按顺序轮流产生区块,普通节点放弃挖矿奖励从而获得高效的交易处理能力,而代理节点在享受挖矿奖励利益的同时,需要付出大量工作以维护代理节点的信任和系统稳定的责任。
缺陷:逐渐抛弃了去中心化概念,但无法有效进行中介代理节点管理,难以用于商业领域。

2.6.2 新型共识算法

1 瑞波共识协议(RCP)
瑞波共识协议(Ripple Consensus Protocol,RCP)使一组节点能够基于特殊节点列表达成共识。初始特殊节点列表就像一个俱乐部,要接纳一个新成员,必须由一定比例的该俱乐部会员投票通过。
工作原理如下:
1.验证节点接收存储待验证交易。首先验证节点接收待验证交易,将其存储在本地;其次本轮共识过程中新到的交易需要等待,在下次共识时再确认。
2.活跃信任节点发送提议:首先,信任节点列表是验证池的一个子集,其信任节点来源于验证池的一个子集,其信任节点来源于验证池;其次,参与共识过程的信任节点须处于活跃状态,验证节点与信任节点存在保活机制,长期不活跃节点将被从信任节点列表删除;最后,信任节点根据自身掌握的交易双方额度、交易历史等信息对交易做出判断,并加入到提议中进行发送。
3.本验证节点检查收到的提议是否来自信任节点列表中的合法信任节点,若是则存储,否则丢弃。
4.验证节点根据提议确定认可交易列表的步骤如下:首先,令信任节点列表中活跃的信任节点个数为M(比如5个),本轮中交易认可阈值为N(百分比,比如50%),则每一个超过M*N个信任节点认可的交易将被本验证节点认可;其次,本验证节点生成认可交易列表。系统为验证节点设置一个计时器,如果计时器时间已到,本信任节点需要发送自己的认可交易列表。
5.账本共识达成的步骤如下:首先,本验证节点仍然在接收来自信任节点列表中信任节点,并持续更新认可交易列表;其次,验证节点认可列表的生成并不代表最终账本的形成以及共识的达成,账本共识只有在每笔交易都获得至少超过一定阈值(比如80%)的信任节点列表认可才能达成,如果账本中每笔交易都获得至少超过一定阈值的信任节点列表认可,则共识达成,交易验证结束,否则继续上述过程。
6.共识过程结束后,已经形成最新的版本。将上轮剩余的待确认交易以及新交易纳入待确认交易列表,开始新一轮共识过程。

2 行动证明(POA)
行动证明协议(proof of action)建立在比特币协议的基础上,将工作量证明与权益证明相结合。
基本流程是:类似于POW协议,矿工构造出一个符合难度要求的块头,根据块头计算衍生出N个币的编号,从区块链中追溯可以得到这几个币目前所述的参与者。矿工将这个块头发送给者N个参与者,其中前N-1个参与者对这个块进行校验和签名,最后第N个参与者校验并将交易加入到该块中,将这个区块发布出去,即完成新区块的出块。

2.6.3 共识算法的改进方向

1.去中心化能力。从比特币开始,针对共识算法的专业挖矿设备层出不穷,如何保障普通节点参与共识,防止中心化威胁是共识算法改进的重点方向。细分为:1)对POW的改进,增加计算量之外的限制条件,如以太坊共识算法增加了对内存空间的要求,增加专业设备成本,降低中心化挖矿收益;2)创新共识算法模式。突破POW基于工作量限制的创新如POS算法的权益证明模式,降低专业挖矿设备存在的必要性;3)多种共识算法融合,既保留POW共识算法的优势,又通过其他算法抵御专业挖矿设备。

2.激励机制。良好的激励机制可以保持区块链系统的参与度与节点的稳定性。1)激励内容创新。如激励普通用户挖矿奖励的创新,普通用户由于没有设备、算力的优势,通常参与挖矿也无法获得共识奖励,所以如何激励普通用户参与是未来共识机制的改进方向之一;2)激励方式创新。共识算法除挖矿代币奖励外,能否通过其他激励机制如广告权、优先交易权等方式激励也是吸引用户参与的创新方向;3)激励模式创新。改进共识算法奖励条件,对参与节点挖矿外其他行为如链解节点数量、在线时间等多种模式进行奖励,激励节点用户参与热情。

3.交易处理效率。区块链处理交易的效率限制了其应用场景,为了提高效率可在以下方面进行改进:1)提高出块速度,提升区块容量、提高单位时间内交易数量;2)限制节点数量,有限的共识节点可以不受限于公链网络同步时效性问题,可以快速达成共识;3)多种方案组合,平衡去中心化与交易效率的关系。

2.7 智能合约

智能合约是运行在区块链上的一段计算机程序,智能合约扩展了区块链的功能,丰富了区块链的上层应用,依照商业逻辑编写完智能合约代码后,需要将其发布到区块链网络节点上。这些智能合约的工作原理与编程语言中的if-then语句类似,当满足一个预先编好的条件时,智能合约就被触发执行相应的条款。其设计初衷是希望通过将智能合约内置到物理实体来创造各种灵活可控的智能资产。

区块链的出现重新定义了智能合约。智能合约是区块链的核心构成要素(位于合约层),是由事件驱动的、具有状态的、运行在可复制的共享区块链数据账本上的计算机程序,能够实现主动或被动的处理数据,接受、存储和发送价值,以及控制和管理各类链上智能资产等功能。智能合约作为一种嵌入式程序化合约,可以内置在任何区块链数据、交易、有形或无形资产上,形成可编程控制的软件定义的系统、市场和资产。智能合约不仅为传统金融资产的发行、交易、创造和管理提供了创新性的解决方案,同时能够在社会系统中的资产管理、合同管理、监管执法等事务中发挥重要作用。

智能合约是存储在区块链上的且能够自动运行的脚本,具有强制自动执行的特点。

3 区块链的应用

资产管理
该领域旨在安全地在商业网络中传输资产。资产可以是物理资产,如计算机或笔记本电脑;或无形资产,如软件和服务。区块链提供共享账本的功能,这意味着商业网络中端到端的完全可见性。区块链从序列化到部署都在底层使用,它只关注5个关键事件:制造资产序列化以启动区块链、资产的接受与确认、资产资本化、担保激活、资产安装。

房地产
房地产交易既繁琐又不透明,而且成本高昂,这主要是由于各种中间商的参与,如经纪人、政府财产数据库、产权公司等。区块链使任何地方的每一处房产都有一个对应的数字地址,该地址包含占用、财务、法律、建筑性能和永久传递并维护所有历史交易的物理属性。

金融
国际货币交易是一个非常重要的过程,由于存在不必要的中间人而变得相当昂贵和缓慢。在收取资金之前需要几家银行(和货币)的转运。区块链可以加快和简化这个过程,减少不必要的中间人,使汇款更实惠。区块链将成本降低到总金额的2-3%,并提供跨境保证的实时交易。

除此之外,还有:数字货币、跨境支付与结算、票据与供应链金融服务、证券发行与交易、客户征信与反欺诈、存在性证明、智能合约、身份验证、预测市场、电子商务、社交通讯、文件存储等。

4 区块链的挑战

4.1 可扩展性问题

共识和区块验证需要存储整个区块链,即所有发生的交易,因此需要大量存储。区块大小的限制在一些情况下会导致可扩展问题。由于限制了1MB的块大小和延迟的共识流程,一秒平均只能确认7笔交易,交易费用很高。但是增加块的大小会通过减慢块传播来产生额外的延迟。

4.1.1 解决方案

分片
以太坊应用了分片(sharding)的解决方案,以太坊依据账户地址将全网划分为多个相对独立的分片,每个分片内维护一条独立的子链,用户可自行选择在哪个分片执行自己的交易,每个节点根据自身的计算和存储能力选择加入一到多个分片,并处理和存储这些分片上的交易。

多通道
Hyperledger fabric1.0提出了多通道的方案,基于交易规则将整个区块链网络划分为多个逻辑上的通道,每个节点根据自己需要参与的交易来选择加入相应的通道。

4.2 安全问题

4.2.1 51%攻击问题

节点通过掌握全网超过51%的算力就有能力成功篡改和伪造区块链数据。虽然实际情况中掌握全网51%算力所需的成本投入远超成功实施攻击后的收益,但是51%攻击的安全性威胁始终存在。

随着量子计算机的发展,非对称加密算法具有一定的可破解性,是一个潜在的安全威胁。

4.2.2 女巫攻击

Sybil Attack是在对等网络中,单一节点具有多个身份标识,通过控制系统的大部分节点来削弱冗余备份的作用。

POW、POS解决了女巫攻击问题。(???)

4.2.3 双花(double spending attack)

双重支付问题又称为“双花”,即利用货币的数字特性两次或多次使用“同一笔钱”完成支付。

区块链解决了双花问题。区块链技术的贡献是在没有第三方机构的情况下,通过分布式节点的验证和共识机制解决了去中心化系统的双重支付问题。

你可能感兴趣的:(区块链,区块链)