一.区块链的技术:
1. 分布式账本:交易是由分布式系统中多个节点共同记录的,数据安全性和有效性。
2. 加密技术和授权技术 :区块链技术很好地集成了当前对称加密、非对称加密、哈希算法的许多优点,并使用了数字 签名技术来保证交易的安全性,其中最具代表性的是使用椭圆曲线加密算法生成用户的公私钥对 和使用ECDSA(椭圆曲线数字签名算法)来保证交易安全。
3. 共识机制 :共识机制是区块链系统中各个节点达成一致的策略和方法。共识机制既是 4 数据写入的方式,也是防止篡改的手段。 常用的共识机制主要有PoW、PoS、DPoS、Paxos、PBFT等 。
4. 智能合约 :智能合约是可以自动化执行预先定义好的规则的一段计算机程序代码,它自己就是一个系统参与者。它能够实现价值的存储、传递、控制和管理,为基于区块链的应用提供了创新性的解决方案。
二.区块链的分类:
1.按照节点参与方式的不同:公有链(Public Blockchain)、联盟链 (Consortium Blockchain)和私有链(Private Blockchain)。
2.按照权限的不同,区块链技术可以分为:许可链(Permissioned Blockchain)和非许可链(Permissionless Blockchain)。
联盟链和私有链属于许可链,公有链属于非许可链。
1.公有链:全公开,完全去中心化。所有人都可以作为节点而不需要被授权。在公有链中,每个节点都可以自由加入或者退出网络,参与链上数据的读写、执行交易,还可以参与网络中共识达成的过程,即决定哪个区块可以添加 到主链上并记录当前的网络状态。
公有链通常适用于虚拟加密货币和面向大众的一些金融服务以及电子商务等。
2.联盟链:部分去中心化或者是多中心化。联盟链属于一种许可链,意味着不是任何人都能自由加入网络中,而是需要一定的权限许可, 才可以作为一个新的节点加入。在区块链系统 运行时,它的共识过程可能会受某些指定节点的控制 。
联盟链账本上的数据与公有链的完全公开是不 同的,只有联盟成员节点才可以访问,并且链上的读写权限、参与记账规则等操作也需要由联盟 成员节点共同决定。由于联盟链场景中的参与者组成一个联盟, 参与共识的节点相对公有链而 言会少很多,并且一般是针对某个商业场景,所以共识协议一般不采用与工作量证明类似的挖矿 机制,同时也不一定需要代币作为激励机制,而是采用PBFT、RAFT这类适用于多中心化且效率 较高的共识算法。同时,联盟链对交易的时间、状态、每秒交易数等也与公有链有很大区别,所 以它比公有链有更高的安全和性能要求。
3.私有链:私有链,是指整个区块链上的所有写入权限仅仅掌握在一个组织手里,而读取权限可以根据 情况对外开放或者任意进行限制。 私有链的价值主要体现在它 可以提供一个安全、可追溯、不可篡改的平台,并且可以同时防止来自内部和外部的安全攻击。
三.区块链的发展:
1.区块链1.0--数字货币:在2009年比特币上线 之后,由于比特币区块链解决了“双花问题”和“拜占庭将军问题”,真正扫清了数字货币流通 的主要障碍,因而获得了极大的追捧,狗狗币、莱特币之类的“山寨”数字货币也开始大量涌现。 在区块链1.0阶段,基于区块链技术构建了很多去中心化数字支付系统,很好地解决了货币 和支付手段的去中心化问题,对传统的金融体系有着一定的冲击。
2.区块链2.0--智能合约:在比特币和其他山寨币的资源消耗严重、无法处理复杂逻辑等弊端逐渐暴露后,业界逐渐将 关注点转移到了比特币的底层支撑技术区块链上,产生了运行在区块链上的模块化、可重用、自 动执行脚本,即智能合约。
以太坊是这一阶段的代表性平台,它是一个区块链基础开发平台,提供了图灵完备的智能合 约系统。通过以太坊,用户可以自己编写智能合约,构建去中心化的DAPP。基于以太坊智能合 约图灵完备的性质,开发者可以编程任何去中心化应用,例如投票、域名、金融交易、众筹、知 识产权、智能财产,等等。
在区块链2.0阶段,以智能合约为主导,越来越多的金融机构、初创公司和研究团体加入了 区块链技术的探索队列,推动了区块链技术的迅猛发展。
3.区块链3.0--超越货币、经济和市场:或许将来当区块链技术发展到一定程度时,整个社会中的每一个人都可作为一个节点,连接到一 个全球性的去中心化网络中,整个社会进入区块链时代,然后通过区块链技术来分配社会资源, 或许区块链将成为一个促进社会经济发展的理想框架。
四.区块链的关键技术:
1.基础模型 :区块链基本架构可以分为数据层、网络层、共识层、激励层、合约层和应用层。
数据层封装了区块链的链式结构、区块数据以及非对称加密等区块链核心技术;
网络层提供点对点的数据通信传播以及验证机制;
共识层主要是网络节点间达成共识的各种共识算法;
激励层将经济因素引入到区块链技术体系之中,主要包括经济因素的发行机制和分配机制;
合约层展示了区块链系统的可编程性,封装了各类脚本、智能合约和算法;
应用层则封装了区块链技术的应用场景和案例。
在该架构中,基于时间戳的链式结构、分布式节点间的共识机制和可编程的智能合约是区块 链技术最具代表性的创新点。一般可以在合约层编写智能合约或者进行脚本编程,来构建基于区 块链的去中心化应用。
1.1数据层:数据层是区块链的核心部分,区块链本质上是一种数据库技术和分布式共享账本,是由包含 交易信息的区块从后向前有序连接起来的一种数据结构。该层涉及的技术主要包括:区块结构、 Merkle树、非对称加密、时间戳、数字签名和哈希函数。时间戳和哈希函数相对比较简单,这里 重点介绍一下区块结构、Merkle树、非对称加密和数字签名。
1.1.1区块结构:每个区块一般都由区块头和区块体两部分组成。如图1.4所示,区块头部分包含了父区块哈希值、时间戳、Merkle根等信息,而区块体部分则包含着此区块中所有的交易信息。除此之外, 每一个区块还对应着两个值来识别区块:区块头哈希值和区块高度。
每一个区块都会有一个区块头哈希值,这是一个通过SHA256算法对区块头进行二次哈希计 算而得到的32字节的数字指纹。 区块头哈希值可以唯一标识一个区块链上的区 块,并且任何节点通过对区块头进行简单的哈希计算都可以得到该区块头的哈希值。区块头哈希 值并没有包含在区块的数据结构中,而是可能作为区块元数据的一部分存储在一个独立的数据库 中,以便于索引和更快地从磁盘检索区块。
除了通过头哈希值来识别区块,还可以通过区块高度来对区块进行识别。 例如高度为0和前 面000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f所索引的区块都是第一 个区块。但是与头哈希值不同的是,区块高度并不能唯一地标识一个区块。由于区块链存在着分 叉情况,所以可能存在2个或以上区块的区块高度是一样的。
谈完了头哈希值和区块高度,下面介绍区块头的构造。以比特币为例,区块头是80字节,其 详细结构如表1.1所示[7]。
区块头由三组元数据组成,一组是引用父区块的哈希值数据,用于同前一区块进行相连。第 二组即难度值、时间戳和Nonce,这些都与挖矿竞争相关。第三组是Merkle根,是区块体中Merkle 树的根节点。
1.1.2 Merkle树
区块体存储着交 易信息,在区块中它们是以一棵Merkle树的数据结构进行存储的,而Merkle树是一种用来有效地 总结区块中所有交易的数据结构。Merkle树是一棵哈希二叉树,树的每个叶子节点都是一笔交易 的哈希值。
同样以比特币为例,在比特币网络中,Merkle树被用来归纳一个区块中的所有交易, 同时生成整个交易集合的数字指纹即Merkle树根,且提供了一种校验区块是否存在某交易的高效 途径。生成一棵Merkle树需要递归地对每两个哈希节点进行哈希得到一个新的哈希值,并将新的 哈希值存入Merkle树中,直到两两结合最终只有一个哈希值时,这个哈希值就是这一区块所有交 易的Merkle根,存储到上面介绍的区块头结构中。
图1.5是一棵只有4笔交易的Merkle树, 即交易A、B、C和D。
第一步,需要使用两次SHA256算法对每笔交易数据进行哈希运算,得到每笔交易的哈希值,
这里可以得到HA、HB、HC、HD这4个哈希值,也就是这棵Merkle树的叶子节点。 HA = SHA256(SHA256(交易A))
第二步,对两个叶子节点HA、HB的哈希值同样使用两次SHA256进行组合哈希运算,将会得 到一个新的哈希值HAB,对HC、HD进行同样的操作将获得另一个哈希值HCD。 HAB = SHA256(SHA256(HA+HB))
第三步,对现有的两个哈希值HAB、HCD进行第二步中的组合运算,最后将得到一个新的哈 希值HABCD,此时我们已经没有了其他同高度节点,所以最后的HABCD就是这一棵Merkle树的 Merkle根。之后将这个节点的32字节哈希值写入到区块头部Merkle根字段中。Merkle树的整个形 2 成过程结束。
HABCD = SHA256(SHA256(HAB+HCD))
因为Merkle树是一棵二叉树,所以它需要偶数个叶子节点,也就是偶数笔交易。但是在很多 情况下,某个区块的交易数目会出现奇数笔。对于这种情况,Merkle树的解决方案是将最后一笔 交易进行一次复制,以此构造成偶数个叶子节点,这种偶数个叶子节点的二叉树也成为平衡树。
当需要证明交易列表中的某笔交易存在时,一个节点只需计算log2(N)个32字节的哈希值,就可以形成一条从Merkle树根到特定交易的路径,
1.1.3 非对称加密和数字签名:与对称加密算法不同的是,非对称加密算法需要两个秘钥: 公开秘钥(public key)和私有秘钥(private key)。基于非对称加密算法可使通信双方在不安全的 媒体上交换信息,安全地达成信息的一致。公开秘钥是对外公开的,而私有秘钥是保密的,其他 人不能通过公钥推算出对应的私钥。每一个公开秘钥都有其相对应的私有秘钥,如果我们使用公 开秘钥对信息进行了加密,那么则必须要对应的私有秘钥才能对加密后的信息进行解密;而如果 是用私有秘钥加密信息,则只有对应的公开秘钥才可以进行解密。在区块链中,非对称加密主要 用于信息加密、数字签名等场景。 在信息加密场景中,如图1.7所示,信息发送者A需要发送一个信息给信息接收者B,需要先 使用B的公钥对信息进行加密,B收到后,使用自己的私钥就可以对这一信息进行解密,而其他 人没有私钥,是没办法对这个加密信息进行解密的。
而在数字签名场景中,如图1.8所示,发送者A先用哈希函数对原文生成一个摘要(Digest), 然后使用私钥对摘要进行加密,生成数字签名(Signature),之后将数字签名与原文一起发送给 接收者B;B收到信息后使用A的公钥对数字签名进行解密得到摘要,由此确保信息是A发出的, 然后再对收到的原文使用哈希函数产生摘要,并与解密得到的摘要进行对比,如果相同,则说明 收到的信息在传输过程中没有被修改过。
1.2网络层:网络层是区块链平台信息传输的基础,通过P2P的组网方式、特定的信息传播协议和数据验 证机制,使得区块链网络中的每个节点都可以平等地参与共识与记账。
1.2.1 p2p架构:区块链网络架构一般采用的是基于互联网的P2P(peer-to-peer)架构,在P2P网络中,每台计 算机每个节点都是对等的,它们共同为全网提供服务。
区块链网络中,所有的节点地位均等且以扁平式拓扑结构相互连通和交互,每个节点都需要承担网络路由、验证区块数据、传播区块数据等功能。在比特币网络中,存在着两类节点,一 类是全节点,它保存着区块链上所有的完整数据信息,并需要实时地参与区块链数据的校验和记 录来更新区块链主链。另一类是轻节点,它只保存着区块链中的部分信息,通过简易支付验证
(SPV)方式向其他相邻的节点请求数据以便完成数据的验证[2]。
1.2.2传输机制:
(1) 比特币交易节点将新生成的交易数据向全网所有节点进行广播;
(2) 每个节点都将收集到的交易数据存储到一个区块中;
(3) 每个节点基于自身算力在区块中找到一个具有足够难度的工作量证明;
(4) 当节点找到区块的工作量证明后,就向全网所有节点广播此区块;
(5) 仅当包含在区块中的所有交易都有效且之前未存在过,其他节点才认同该区块的有效性;
(6) 其他节点接收该数据区块,并在该区块的末尾制造新的区块以延长链,而将被接收的区 块的随机哈希值视为新区块的前序区块哈希值。
1.2.3验证机制:
在区块链网络中,所有的节点都会时刻监听网络中广播的交易数据和新产生的区块。在接收 到相邻节点发来的数据后,会首先验证该数据的有效性,若数据有效则按接收顺序为新数据建立 存储池来暂存这些数据,并且继续向临近节点转发;若数据无效则立即废弃该数据,从而保证无 效数据不会在区块链网络中继续传播。验证有效性的方法是根据预定义好的标准,从数据结构、 语法规范性、输入输出和数字签名等各方面进行校验。对于新区块的校验同理,某节点产生出新 区块后,其他节点按照预定义的标准对新区块的工作量证明、时间戳等方面进行校验,若确认有 效,则将该区块链接到主区块链上,并开始争取下一个区块的记账权。
1.3共识层:区块链的共识层的作用 就是在不同的应用场景下通过使用不同的共识算法,在决策权高度分散的去中心化系统中使得各 个节点高效地达成共识。
1.3.1. PoW(工作量证明机制) :在该机制中,网络上的每一个节点都 在使用SHA256哈希算法运算一个不断变化的区块头的哈希值。共识要求算出的值必须等于或者 小于某个给定的值[30]。在分布式网络中,所有的参与者都需要使用不同的随机数来持续计算该哈 希值,直到达到目标为止。当一个节点得出了确切的值,其他所有 的节点必须相互确认该值的正 确性。之后,新区块中的交易将被验证以防欺诈。然后,用于计算的交易信息的集合会被确认为 认证结果,用区块链中的新区块表示。
总的来说,工作量证明就是对于工作量的证明,每个区块加入 到链上,必须得到网络参与者的同意验证,矿工对它完成了相对应的工作量。
pow的优点:完全的去中心化和分布式账簿。pow的缺点:消耗资源且共识周期较长。
1.3.2. PoS(股权证明机制) :该机制只需要证明人提供一定数量数字货币的所有权即可。在股权证明机制中,每当创建一个区 块时,矿工需要创建一个称为“币权”的交易,这个交易会按照一定的比例预先将一些币发给矿 工。然后股权证明机制根据每个节点持有代币的比例和时间,依据算法等比例地降低节点的挖矿 难度,以加快节点寻找随机数的速度,缩短达成共识所需的时间[31]。
pos的优点:与PoW相比,PoS可以节省 更多的能源,更有效率。 pos的缺点:由于挖矿成本接近于零,因此可能会遭受攻击。且PoS在本质上 仍然需要网络中的节点进行挖矿运算,所以它同样难以应用于商业领域。
1.3.3DPoS(股份授权证明机制) :DPoS由比特股(Bitshares)项目组发明[32]。股权拥有者选举他们的代表来进行区块的生成和 验证。DPoS类似于现代企业董事会制度,比特股系统将代币持有者称为股东,由股东投票选出 101名代表,然后由这些代表负责生成和验证区块。持币者若想成为一名代表,需先用自己的公 钥去区块链注册,获得一个长度为32位的特有身份标识符,股东可以对这个标识符以交易的形式 进行投票,得票数前101位被选为代表。代表们轮流产生区块,收益(交易手续费)平分。如果 有的代表不老实生产区块,很容易被其他代表和股东发现,他将立即被踢出“董事会”,空缺位 置由票数排名102的代表自动填补 。
DPoS的优点:大幅减少了参与区块验证和记账的节点数 量,从而缩短共识验证所需要的时间,大幅提高了交易效率。从某种角度来说,DPoS可以理解 为多中心系统,兼具去中心化和中心化优势。
1.3.4PBFT(实用拜占庭容错算法) :该算法可以应用于吞吐量不大但需要处理大量事件的数字资 产平台。 它允许每个节点发布公钥,任何通过节点的消息都由节点签名,以验证其格式。验证过 程分为三个阶段:预备,准备,落实。如果已经收到超过1/3不同节点的批准,服务操作将是有 效的。使用PBFT,区块链网络N个节点中可以包含f个拜占庭恶意节点,其中f =(N-1)/ 3。 换句话 说,PBFT确保至少2 * f + 1个节点在将信息添加到分布式共享账簿之前达到共识。
1.4激励层:发行机制+分配机制
1.5合约层:合约层封装了各类脚本、算法和智能合约,是区块链可编程性的体现。 如果把比特币看成是全球账本的话,以太坊可以看作一台“全球计算机”,任何人都可以上 传和执行任意的应用程序,并且程序的有效执行能得到保证。 如果说数据、网络和共识三个层次 作为区块链底层“虚拟机”,分别承担数据表示、数据传播和数据验证功能,合约层则是建立在 区块链虚拟机之上的商业逻辑和算法,是实现区块链系统灵活编程和操作数据的基础。
当预定的条件发生时,就会发送一笔交易(transaction)到该合约地址, 全网节点都会执行合约脚本编译生成的操作码,最后将执行结果写入区块链[28][36][37]。
智能合约与区块链的结合,丰富了区块链本身的价值内涵,其特性有以下3点[38][39]:
1.用程序逻辑中的丰富合约规则表达能力实现了不信任方之间的公平交换,避免了恶意方 中断协议等可能性;
2. 最小化交易方之间的交互,避免了计划外的监控和跟踪的可能性;
3. 丰富了交易与外界状态的交互,比如可信数据源提供的股票信息、天气预报等。
原文地址:https://www.cnblogs.com/sanshengsanshi/p/8830286.html