精华内容
下载资源
问答
  • 区块链共识算法

    2020-11-18 17:31:41
    区块链中大多数节点都认可一条交易的过程,就是区块链对这条交易达成共识的过程。 为什么会出现达不成共识的情况 系统中的恶意节点会给不同的节点发送不同的信息。 比如,系统中有A,B,C三个节点 ,

    什么是共识

    一个系统想要正常运行,就必须要有一个系统成员都认可的规则来说明如何分工、谁来领导、奖罚机制等问题。
    在中心化系统中,所有节点都只需要询问超级节点就能得到一致的结果。
    而区块链是去中心化的数据库,且区块链实行少数服从多数的机制,所以区块链中的节点只能通过相互通信得知哪些规则(即区块中的交易)被大多数节点认可。区块链中大多数节点都认可一条交易的过程,就是区块链对这条交易达成共识的过程。

    为什么会出现达不成共识的情况

    系统中的恶意节点会给不同的节点发送不同的信息。
    比如,系统中有A,B,C三个节点 ,其中C是恶意节点。C给A发送交易“小明给小黄转5元”,C给B发送交易“小明给小黄转50元”。A节点会在账本中记载“小明-5元,小黄+5元”,B节点会在帐本中记载“小明-50元,小黄+50元”。最后,A,B节点会在小黄到底有多少钱这个问题上达不成共识。(这就是著名的拜占庭将军问题)

    未达成共识的体现

    区块链分叉。可分为正常的分叉和恶意的分叉攻击

    正常分叉

    因为网络的延迟导致的分叉

    硬分叉

    大部分节点进行了软件升级(new node),少数节点没有进行软件升级(old node)。new node发布的区块在old node处验证不通过。
    硬分叉是永久性分叉【old node的本地区块链中只有old node生成的区块,new node的本地区块链中由new node发布的区块所在的链成为最长合法链】

    软分叉

    大部分节点进行了软件升级(new node),少数节点没有进行软件升级(old node)。old node发布的区块在new node处验证不通过。
    软分叉是暂时性分叉【new node的本地区块链只有new node生成的区块,old node的本地区块链中会出现分叉(new node发布的区块和old node发布的区块),因为new node占大多数,最终new node发布的区块所在的链会成为最长合法链】

    分叉攻击

    在这里插入图片描述
    在这里插入图片描述

    区块链不可能三角问题

    区块链不可能在scalabilitysecuritydecentralization这三个方面同时达到最优。

    • scalability高效可扩展【对标用户体验感】
      ----高效:每秒能够处理的交易数量多(交易吞吐量高),单个交易能在很短的时间内被处理(交易时延短)
      ----可扩展:很多个节点加入系统后,系统仍然能够提供良好的服务
    • security安全
    • decentralization区块生成者的去中心化程度
      ----区块生成者的数量
      ----区块生成者的地理位置分布
      ----区块生成者是否是同一利益共同体

    突破区块链不可能三角问题的方向

    • 共识算法
    • 区块结构
      DAG
    • 系统实现
      侧链技术、分片技术、多链并行……

    最基础的共识算法

    PoW(Proof of Work)

    1.所有节点通过挖矿争夺记账权。
    2.争到记账权的节点将交易打包进区块并广播区块,其他节点验证区块并将验证通过的区块加入本地区块链中。

    挖矿的实质

    先看比特币系统中区块的块头结构【PoW在比特币系统中使用】
    比特币中区块块头结构
    挖矿就是节点使用穷举法暴力寻找nonce的值使得
    H(block head)<target
    这个不等式成立的过程(target就是难度目标)

    分析

    PoW牺牲了scalability

    优点

    PoW是目前使用时间最长、最安全、去中心化程度最好的共识算法

    缺点

    1.PoW效率低
    2.PoW费电。每个节点都在通过寻找nonce值来争夺记账权

    实现

    随着矿池和算力优于CPU的ASCI的出现,PoW的去中心化程度和安全性受到阻碍

    PoS(Proof of Stake)

    1.节点交押金,成为验证者。系统通过节点提交的押金给节点分配权益。【权益= 押金 * 币龄】
    2.每一轮中,权益最大的验证者拥有记账权,其余验证者验证区块并将验证通过的区块加入本地区块链中。
    3.一轮过后,生成区块的节点提交的押金的币龄清零。

    PoW中节点通过算力竞争记账权,PoS节点通过权益争夺记账权

    分析

    PoS牺牲了scalability
    decentralization:PoS会导致“富人越富”的现象出现,“区块生成者是否是同一利益共同体”的去中心化程度低

    优点

    效率高于PoW【nonce值的计算难度低于PoW】

    缺点

    1.效率低
    2.鼓励节点离线和囤积货币。币龄仅随着天数增长,和节点是否在线无关,所以某些节点会先离线囤积币龄后再上线。
    3.nothing-at-stake attack

    实现

    目前还没有实现很优秀的纯PoS算法的区块链平台

    PBFT(Practical BFT)

    在这里插入图片描述

    分析

    PBFT牺牲了decentralization和security
    decentralization:PBFT只适用于联盟链和私有链,“区块生成者是否属于同一利益共同体”和“区块生成者的地理位置”的去中心化程度低
    security:恶意节点m个,系统中总结点n > 3m 时安全
    scalability:通信复杂度O(N*N),节点数少时效率高,系统可扩展性差

    优点

    系统中节点数少时效率高

    缺点

    不适用于节点数量多、恶意节点多、网络易丢包的情况
    可扩展性差

    实现

    可以实现

    改进的共识算法

    我将我了解到的共识算法根据改进的方向分为两部分:

    • 降低挖矿难度(target) + 随机选择出块节点
    • 部分节点代替全部节点达成共识

    降低挖矿难度(target) + 随机选择出块节点

    PoA(Proof of Activity)

    1.节点竞争生成区块块头【区块块头仅包括version、time、preHash、target、nonce,没有和交易相关的MerkleRoot】
    2.最先生成区块块头的节点广播块头,其他节点接收块头,使用一系列计算导出N名幸运股权节点
    3.前N-1名幸运股权节点将自己的签名发给第N名幸运股权节点,第N名幸运股权节点打包交易和N名幸运股权节点的签名,广播区块(N个签名缺一不可)
    4.所有节点验证区块

    分析

    牺牲了scalability
    PoW+PoS的改进算法

    优点

    1.效率高于PoW和PoS
    2.解决了PoS的鼓励节点离线问题(幸运股权节点是随机选的)

    缺点

    1.效率低
    2.费电。所有节点竞争生成块头

    实现

    可以实现

    Ouroboros

    通过可验证随机函数VRF(Verifiable Random Function)选择出块节点

    分析

    Ouroboros是第一个具有严格安全证明的共识算法
    PoS改进算法
    牺牲了scalability

    优点

    安全
    分叉概率极低

    缺点

    效率低

    实现

    可实现


    部分节点代替全部节点达成共识

    DPoS

    1.节点交押金进入系统,系统分配权益
    2.节点通过投票选出一个委员会,委员会中的节点成为见证人(票的权重和投票节点的权益相关)
    3.见证人轮流发布区块,见证人一起验证区块

    分析

    牺牲了decentalization和security
    decentralization:不是所有节点都参与共识过程
    seciruty:攻击者可以通过攻击见证人来赶走好的见证人
    PoS改进算法

    优点

    效率高

    缺点

    较其他算法不安全:

    • 好的见证人容易遭受诸如DDoS攻击等攻击,从而被取消见证人身份
    • 比赛造假:恶意节点为了成为见证人讨好诚实节点骗取票数

    实现

    可以实现

    Algorand

    1.通过可验证随机函数VRF选择委员会(委员会中的节点分为leader和verifier)
    2.委员会中的leader发布区块
    3.委员会中的verifier通过BA*算法验证区块(第一阶段GC算法对候选区块达成共识,第二阶段BBA算法对是否写候选区块达成共识)

    分析

    牺牲了scalability和decentralization
    PoS+BFT改进算法

    优点

    分叉概率极低
    效率优于PoS

    缺点

    效率较低

    实现

    可实现

    dBFT

    1.节点交押金进入系统,系统分配权益
    2.根据权益选择一部分节点组成委员会
    3.委员会中的节点使用BFT算法达成共识

    分析

    牺牲了decentralization

    优点

    效率高
    一般不分叉

    缺点

    中心化程度高
    不适用于网络易丢包的情况

    实现

    可实现

    共识算法应对各种攻击

    sybli attack女巫攻击

    定义:一个节点模拟多个身份进行攻击
    例子:一台计算机利用多个ip地址刷赞
    PoW:获得记账权的概率仅取决于算力,和身份数量无关【不会遭受该攻击】
    PoS:获得记账权的概率仅取决于权益(押金量,币龄),和身份数量无关【不会遭受该攻击】
    PBFT:投票时“一身份一票”【可能遭受该攻击
    PoA:同PoW和PoS【不会遭受该攻击】
    Ouroboros:系统决定产生区块的节点【不会遭受该攻击】
    DPoS:同PoS【不会遭受该攻击】
    Algorand:同PoS【不会遭受该攻击】
    dBFT:成为委员会的概率取决于节点权益【不会遭受该攻击】

    nothing-at-stake attack无权益攻击

    定义:在遇到分叉时,矿工同时在多条分叉链上挖矿
    PoW: 在多条链上挖矿会分散算力,使得节点挖矿成功的概率降低,所以节点在遇到分叉时会选择一条链并在该链上挖矿【不会遭受该攻击】
    PoS: 节点将权益分配在多条链上就可以在多条链上同时挖矿【可能遭受该攻击
    PBFT: 强一致性,一般不会分叉【不会遭受该攻击】
    PoA: 同PoS【可能遭受该攻击
    Ouroboros: 系统决定产生区块的节点【不会遭受该攻击】
    DPoS: 参与共识阶段的节点少,一般不会分叉【不会遭受该攻击】
    Algorand: 一般不分叉【不会遭受该攻击】
    dBFT: 一般不分叉【不会遭受该攻击】

    long range attack长程攻击

    定义:恶意节点发布一条从创世区块开始的链取代当前的最长合法链

    long range attack理论上可实现,实际中还未碰见

    PoW: 需要很大的算力才能实现【不会遭受该攻击】
    PoS: 需要很大的权益才能实现【可能遭受该攻击
    PBFT: 强一致性,一般不会分叉【不会遭受该攻击】
    PoA: 出块者随机选择【不会遭受该攻击】
    Ouroboros: 系统决定产生区块的节点【不会遭受该攻击】
    DPoS: 参与共识阶段的节点少,一般不会分叉【不会遭受该攻击】
    Algorand: 一般不分叉【不会遭受该攻击】
    dBFT: 一般不分叉【不会遭受该攻击】

    各共识算法总体比较

    在这里插入图片描述

    展开全文
  • 区块链共识机制解析

    2018-08-09 16:40:09
    共识机制是区块链网络运转的核心,区块链上不同节点的副本要保持一致,都需要通过共识算法来达成。但是为了保证安全和去中心...用PoS或者DPoS共识算法,也有可能产生一些小概率事件,比如私钥被盗取、超级节点合谋导...

    共识机制是区块链网络运转的核心,区块链上不同节点的副本要保持一致,都需要通过共识算法来达成。但是为了保证安全和去中心化,目前区块链技术很难实现性能、安全和去中心化同时兼得。

    不同的算法都有各自优势和不足。用PoW作为公链共识算法,很难实现扩展性,很难在它的基础上构建DApp的生态基础,很难向主流人群扩展。

    用PoS或者DPoS共识算法,也有可能产生一些小概率事件,比如私钥被盗取、超级节点合谋导致中心化趋势等。在兼顾性能同时,可能在去中心化和安全上出现了一些不足。

    未来的区块链发展来看,由于要达成共识,肯定会牺牲效率。但要走向大规模人群的采用,没有性能又是不行的。这里的悖论需要解决,要么,采用更加均衡的架构和共识机制,做一个平衡的取舍。要么,采用非区块链的数据结构或者中心化的方式来解决问题。

    可以预见,未来除了PoW、PoS、DPoS、Pool、PBFT……之外,还会有更多层出不穷的共识算法,这对于区块链发展的探索都是有益的。

    很多人觉得,我们眼前是一个人工智能的时代。
    没错,AI为王,AI很重要。很多科技巨头们的AI军备竞赛打得火热,打得人尽皆知。但是这不意味着人工智能就会颠覆科技行业的格局。更有可能的是,人工智能只是互联网时代格局的延续,能吃掉AI红利只有那么几个寡头。人工智能的红利已经被上一代人捏在手里了,最大的果实已经注定会被上一代的互联网巨头吃掉。

    所谓的共识机制,就好比大家在开一次“会议”,最后达成一个一致,但是达成一致的途径有很多种,这也就是后续区块链的主链有各种各样的共识机制。那么这次“会议”都达成什么共识了呢?比如说有人做好事了,大家都知道了;有人做坏事了,大家也都知道。所以这就是共识机制的最大的好处,就是解决了彼此不认识的人的互相不信任的问题;同时,在这个“会议”里谁不管谁做了什么,大家都是知道的。

    PBFT:Fabric使用的经典算法(拜占庭容错)
    PBFT是Practical Byzantine Fault Tolerance的缩写,意为实用拜占庭容错算法。

    拜占庭容错能够容纳将近1/3的错误节点误差,Hyperledger就是使用了该算法作为可插拔的共识算法之一。

    这里写图片描述

    展开全文
  • hyperledger fabric是区块链中联盟链的优秀实现,主要代码由IBM、Intel、各大银行等贡献,目前v1.1版的kafka共识方式可达到1000/s次的吞吐量。本文中我们依次讨论:区块链的共通特性、fabric核心概念、fabric的交易...

    hyperledger fabric是区块链中联盟链的优秀实现,主要代码由IBM、Intel、各大银行等贡献,目前v1.1版的kafka共识方式可达到1000/s次的吞吐量。

    架构说明
    Hyperledger Fabric带来如下优势:

    链码信任灵活性。架构将对链码(区块链应用程序)的信任假设与对排序的信任假设相分离。换种说法,排序服务可以由一组节点(排序者)提供并容忍其中一部分失败或腐化,每个链码可以有不同的背书者。
    可扩展性。由于负责特定链码的背书者与排序者不相交,系统可以比由相同节点完成背书和排序这两个功能更易扩展。特别是,当不同的链码指定不同的背书者时,导致了不同背书者之间的链码的分区,并且允许并行执行链码。此外,执行链码的资源消耗可能很大,于是让其与关键的排序服务分开单独部署。
    保密。架构有助于部署对交易的内容和状态更新有保密要求的链码。
    共识模块化。架构是模块化的并允许可插拔的共识(比如排序服务)实现。
    第一部分:Hyperledger Fabric v1系统架构元素
    1. 系统架构
    2. 交易背书的基本工作流
    3. 背书策略

    第二部分:V1后版本的架构元素
    4. 账本检查点(修订中)

    1. 系统架构
      区块链是一个由许多节点互相通信组成的分布式系统。区块链运行称为链码的应用程序,保存状态和账本数据,执行交易。因为交易是在链码上调用的操作,因而链码是区块链结构的中心元素。交易必须被“背书”而且只有背书过的交易才可以被承认和对状态造成影响。有一个或多个用于管理功能(函数)和参数的特殊的链码,它们统称为系统链码。

    1.1. 交易
    交易有两种类型:
    - 部署交易 创建新链码并以一个程序作为参数。当一个部署链码成功执行以后,链码被安装在区块链“上”。
    - 调用交易 在之前部署的链码的上下文中执行操作。一笔调用交易指的是一个链码和他提供的若干功能中的一个功能。如果调用交易成功,链码执行了特定的函数,这个函数可能涉及修改相应的状态,然后返回一个输出。

    备注:本文档目前假定一笔交易要么创建新链码要么调用一个由一个已经部署的链码提供的操作。本文档尚未阐述关于:a) 请求(只读)交易的优化(V1版本),b) 跨链码交易的支持(V1后版本)

    后面会讲到,部署交易是调用交易的一种特例,部署交易创建新的链码,对应于一个系统链码上的调用交易。

    1.2. 区块链数据结构
    1.2.1. 状态(state)
    区块链的最新状态被建模为一个版本化的键值存储(KVS),键是名字,值是任意二进制大对象(blobs)。这些键值对被运行在区块链上的链码(应用程序)通过put和getKVS操作来操纵。状态被持久化存储并且状态的更新被记录为日志。请注意状态模型采用的是版本化的KVS,具体实现可以使用实际的KVS存储,但是也可以用关系数据库系统或其他的解决方案。

    更正式地说,状态s被建模为一个字典元素K -> (V X N),其中:

    K是一个键集合
    V是一个值集合
    N是一个版本号的无穷有序集合。映射函数next: N -> N取N中的一个元素并返回下一个版本号。
    V和N都包含一个特别的元素⊥ (空类型),是N的最小元素。初始是所有的键都映射为(⊥, ⊥),对于s(k)=(v,ver)我们通过s(k).value表示v,用s(k).version表示ver。

    KVS操作被如下建模:
    - put(k,v) for k ∈ K and v ∈ V, 取得区块链的状态s然后转换为s`,这样对于所有的k’!=k,s’(k)=(v,next(s(k).version)),s’(k’)=s(k’) (后面这个等式没有太明白)
    - get(k)返回s(k)

    状态由对等点维护,而不是order节点和客户端。

    状态分区。KVS中的键可以从它们链码的名字识别,在这个意义上,只有一个特定链码的交易可以修改属于这个链码的键。原则上,任何链码都可以读取属于其他链码的键。为了支持跨链码交易,修改属于两个或更多个链码的状态作为一个V1后的功能点。

    1.2.2 账本
    账本提供一份可验证历史信息,记录所有在系统操作中发生的成功的状态改变(即有效交易)和未成功的对改变状态的尝试(即无效交易)。

    账本由排序服务构建为一个完整排序的交易(有效的和无效的)区块的哈希链。哈希链强制要求账本中的区块是完全排序的并且每个区块内包含的交易是完全排序的。

    账本存储在所有的对等点里,也可以选择保存在一部分排序者里。存在排序者节点内的账本我们叫排序者的账本(OedererLedger),而存在对等点的账本我们叫对等点账本(PeerLedger)。对等点账本与排序者账本不同之处在于对等点账本本地维护一个比特掩码来区分有效交易和无效交易(更多细节见XX部分)

    对等点可以像XX节(V1后功能)阐述的那样修订对等点账本。排序者维护排序者账本用于容错和(对等点账本的)可用性并可以随时决定修订对等点账本,前提是排序服务的属性(见1.3.3)保持不变。

    账本允许对等点重播所有交易的历史来重构状态。因此,1.2.1节谈到的状态是一个可选的数据结构。

    1.3. 节点(Nodes)
    节点是区块链的通讯实体。一个“节点”只是一个逻辑功能,这样多个不同类型的节点可以运行在一台物理服务器上。重要的是节点如何组成“信任域”和如何与控制它们的逻辑实体相关联。

    有三种节点类型:
    1. 客户端(client)或提交客户端(submitting-client):一个客户端向背书者提交一笔实际发生的交易调用,并将交易提案广播给排序服务。
    2. 对等点(peer):确认交易和维护账本的状态、保存账本的副本(Sec,1.2)。除此之外,对等点有一个特别的背书者角色。
    3. 排序服务节点(Ordering-service-node )或者排序者(orderer):运行保证送达(deliver)的通信服务,如原子广播或完全排序广播。

    下面将详细解释节点的类型。

    1.3.1. 客户端
    一个客户端是一个代表最终用户的实体。它必须与一个对等点连接以实现同区块链的通信。客户端自己选择连接到任意的对等点。客户端创建然后调用交易。

    详见第2节,客户端与对等点和排序服务都通信。

    1.3.2. 对等点
    一个对等点从排序服务接收以区块形式更新的有序状态,并且维护状态和账本。

    对等点可以额外承担一个特殊的背书节点(endorsing peer)的角色,或者称为背书者(endorser)。背书节点的特殊功能发生在特定的链码上,在一笔交易确认前为这笔交易背书。每一个链码可以指定一个关联一组背书节点的背书策略。这个策略定义了一个有效交易背书的充要条件(一般是一组背书者的签名),在第2节和第3节会详述。对于安装新链码来部署交易的情况,(部署)背书策略被指定为系统链码的背书策略。

    1.3.3. 排序服务节点(排序者)
    排序者构建排序服务,即一个提供保证送达(deliver)的通信结构。排序服务可以由不同的方法实现:从一个中心化的服务排序(例如在部署和测试时)到针对不同的网络和节点故障模型的分布式协议。

    排序服务为客户端和对等点提供一个共享的通信通道,和一个交易信息的广播服务。客户端连接到通道(channel)上,然后可以在通道内广播信息传送(deliver)到全部的对等点上。通道支持全部信息的原子传递,即消息通信是可靠(针对特定实现方法)的完全排序(total-order)传递。换种说法,通道输出相同的信息到所有连通的对等点,并且按照相同的逻辑顺序输出。这个原子通信保证也称为完全顺序广(total-order broadcast),原子广播,或分布式系统上下文中的共识。发送的消息是将要包含在区块链状态中的候选交易。

    分区(排序服务通道)。排序服务可以支持多通道,这个通道就类似于发布/订阅消息系统里的主题(topic)。客户端可以连接到一个给定的通道发送消息和接收消息。通道可以被理解为分区——连接到一个通道的客户不知道其他通道的存在,不过客户端可以连接到多个通道。即便Hyperledger Fabric的一些排序服务支持多通道,为了简化表达,本文档后续阐述将假定排序服务由一个单通组成。

    排序服务API。对等点通过排序服务提供的接口连接到排序服务提供的通道上,排序服务API由两个基本操作组成(通常为异步事件):

    TODO添加用于获取客户端或对等点指定序号的特定区块的API。

    broadcast(blob):广播,客户端调用这个操作在通道内广播任意信息blob。在拜占庭容错问题中向一个服务发送一个请求的时候也被称为request(blob)。
    deliver(seqno, prevhash, blob):传递,排序服务在对等点调用这个操作传递包含指定的非负整数序列号(seqno)和前一个传递的blob(prevhash)的哈希值的信息blob。(此处原文的格式比较清晰)换种说法,它是排序服务的一个输出事件。deliver()在发布-订阅系统中有时也被称为notify(),在拜占庭容错系统中被称为commit()。
    个人理解:类比比特币区块链,广播就是将交易向全网广播,传递像是将交易顺序打包成区块。

    账本和区块编队。账本(另见1.2.2节)包括排序服务输出的全部数据。简言之,它是一个deliver(seqno, prevhash, blob)的序列,依据计算前面提到的prevhash
    来构建一条哈希链。

    大多数时候,为了提高效率,排序服务会将交易(blob)打包,在一个deliver事件中输出多个区块,而不是每一笔交易单独输出。在这种情况下,排序服务必须对每一个区块里的交易强加一个确定的顺序。一个区块里的交易数量可以由一个排序服务的具体实现动态选择。

    接下来,为了表达简便,我们基于每次deliver一个blob的假设定义了排序服务属性并且解释了交易背书(第2节)的工作流。这个概念可以轻松扩展到区块,基于上面说的一个block里面的blob有确定的顺序,我们假定一个block的deliver事件对应一个block里的每一个blob的一系列deliver事件。

    排序服务属性
    排序服务(或原子广播通道)的保证规定了广播消息会发生什么和完成传递的消息之间存在什么关系。这些保证如下:

    安全性(持续保证):只要对等点连接上通道足够长的时间(他们可以断开连接或者宕机,但是会重启和重连),他们会看到唯一一串完成传递的(seqno, prevhash, blob)的信息。这意味着输出(deliver()事件)在所有对等点以相同的顺序发生,并且输出(output)依据序号为同一个序号携带相同的内容(blob和prehash)。注意这仅仅是一个逻辑顺序,而且一个对等点上的delever(seqno, prevhash, blob)不要求与在其他对等点上输出相同消息的delever(seqno, prevhash, blob)实时发生。换句话说,给定一个特定的seqno,没有两个对等点传递不同的prevhash或blob值。此外,除非某个客户端(对等点)实际调用了broadcast(blob),没有blob值会被传送,每个广播过的blob只传递一次。

    此外,deliver()事件包含了前一个deliver()事件(prevhash)的加密哈希值。当排序服务实施原子广播保证时,prevhash是序列号为seqno-1的deliver()事件的哈希值。这样建立了一条跨deliver()事件的哈希链用于校验排序服务输出的正确性,后面的4、5节还会谈到。作为特例的第一个deliver()事件,prevhash有一个默认值。

    活跃度(传递保证):排序服务的活跃度保证由一个具体的排序服务实现来指定。精确地保证依赖于网络和节点故障模型。
    原则上,如果正在提交的客户端没发生故障,排序服务应该保证连接到排序服务的每个正确的对等点最终传递每一个提交的交易。

    总的来说,排序服务保证如下属性
    - Agreement。对于在正确的对等点的任意两个seqno相同的事件::deliver(seqno, prevhash0, blob0) 和 deliver(seqno, prevhash1, blob1),prevhash0==prevhash1 and blob0==blob1;
    - 哈希链的完整性。对于正确对等点的任意两个事件:deliver(seqno-1, prevhash0, blob0) 和 deliver(seqno, prevhash, blob), prevhash = HASH(seqno-1||prevhash0||blob0).
    - 无跳跃。如果一个排序服务在一个正确的对等点p输出
    deliver(seqno, prevhash, blob),这个seqno>0,那么p已经传递过事件deliver(seqno-1, prevhash0, blob0);
    - 无创建。正确的对等点的任何事件deliver(seqno, prevhash, blob) 必须被某些对等点(可能不同)的broadcast(blob)事件处理。
    - 无复制(可选,但是可取)。对于任意两个事件broadcast(blob) 和 broadcast(blob’), 当两个事件deliver(seqno0, prevhash0, blob) and deliver(seqno1, prevhash1, blob’)在对等点发生并且blob == blob’,那么seqno0==seqno1 并且 prevhash0==prevhash1
    - 活跃
    如果一个正确的客户端调用了broadcast(blob)事件,那么每一个正确的对等点最终发出一个deliver(, , blob)事件,*代表任意值。

    1. 交易背书的基本工作流
      下面我们概述一笔交易的高层请求流程。

    备注:注意下面的协议不假定所有的交易都被确认,它允许未确认的交易。

    2.1. 客户端创建一笔交易发送给它选择的背书节点

    客户端向它选定的一组背书节点发送一个PROPOSE消息(可能不是同时发送,见2.1.2和2.3节)来调用一笔交易。这一组给定chaincodeID的背书节点通过对等点对客户端提供服务,对等点通过背书策略认同一组背书节点。(见3节)。举个例子,交易可以被发送到给定chaincodeID的所有背书者。也就是说,某些背书者可以是离线的,其他背书者可以拒绝为这笔交易背书。提交的客户端尝试满足所有背书者的策略要求。

    接下来,我们先详细介绍PROPOSE信息的格式然后讨论客户端和背书者之间可能的交互方式。

    2.1.1. PROPOSE信息格式

    PROPOSE信息的格式是

    2.1.2 信息模式
    客户端决定与背书者交互的顺序。比如,客户端一般发送

    2.2. 背书节点模拟交易执行并生成背书签名
    从客户端收到一个

    2.3. 提交客户端为一笔交易收集一套背书然后通过排序服务广播给其他对等点
    提交客户端等待收集“足够”的信息以及对(TRANSACTION-ENDORSED, tid, , )声明的签名以得出交易提案被成功背书的结论。如2.1.2节所讨论的,这可能涉及一轮或多轮与背书者的交互。

    “足够”的精确数字取决于链码的背书策略(另见3节)。如果满足了背书策略,交易就完成背书;注意并不是确认。从背书节点收集到的签过名的TRANSACTION-ENDORSED信息被称为背书endorsement。

    如果提交客户端不想为一个交易提案收集背书,它可以丢弃这笔交易,并可以选择稍后重试。

    对于得到有效背书的交易,我们现在开始用到排序服务。提交客户端使用broadcast(blob)来调用排序服务,其中blob=endorsement。如果客户端没有直接调用排序服务的能力,它可以通过它选择的对等点来代理广播。客户端必须信任对等点不会删减任何背书信息,否则交易被认定为无效。注意,无论如何,一个代理对等点不可以捏造一份有效的背书。

    2.4. 排序服务向对等点传送一笔交易
    当一个事件deliver(seqno, prevhash, blob)发生并且一个对等点已经更新了序号小于seqno的blobs的状态,一个对等点会做如下事情:

    它通过链码(blob.tran-proposal.chaincodeID) 的策略检查blob.endorsement是有效的。
    一般情况下,他同时验证没有违反依赖关系(blob.endorsement.tran-proposal.readset) 。在更复杂的用例中,背书中的tran-proposal字段可以不同,这时背书策略(3节)指定状态如何改变。

    依赖关系的验证可以通过不同的方法实现,这依据为状态更新选择的一致性属性或“隔离保证”。序列化是一种默认的隔离保证,除非链码的背书策略指定了其他方式。可序列化性可以由要求读集中的每一个键的版本等于这个键在状态中的版本来提供,并且拒绝不满足这个要求的交易。

    如果所有这些检查都通过了,交易被认定为有效的或者确认的。此时,对等点标记PeerLedger中这笔交易的比特掩码为1,将blob.endorsement.tran-proposal.writeset应用于区块链状态(仅当tran-proposals相同时,否则背书策略逻辑定义了函数使用blob.endorsement)。
    如果背书策略认证blob.endorsement失败了,交易是无效的,对等点标记PeerLedger的比特掩码为0.重要的是无效交易不改变状态。
    请注意,这足以让所有(正确的)对等点在处理完传递给定序号的事件(区块)后达到相同的状态。亦即,借助排序服务的保证,所有正确的对等点会收到一串相同顺序地deliver(seqno, prevhash, blob)事件。因为对于背书策略的评估和读集中版本依赖关系的评估都是确定的,所有正确的对等点也会得出对于一个blob里的一笔交易是否有效的相同的结论。因此,所有的对等点承认和应用相同的交易序列,所有的对等点用相同的方式更新状态。

    展开全文
  • 7月27日,在北京举行的“区块链共识”大会上,BNET创始人刘建军就了目前最热的两个话题“区块链”和“通信网络”发表了演讲,并针对当前通信网络的几大痛点提供了解决方案。BNET项目也借此机会在大会上首次精彩亮相...

    7月27日,在北京举行的“区块链共识”大会上,BNET创始人刘建军就了目前最热的两个话题“区块链”和“通信网络”发表了演讲,并针对当前通信网络的几大痛点提供了解决方案。BNET项目也借此机会在大会上首次精彩亮相,揭开神秘面纱。

    刘建军,BNET创始人,北京大学硕士研究生,国家权威系统分析师,互芯、邦讯前CTO,华为上海项目负责人,北京华友会企业家协会副会长,全球首次提出超级自主,致力打造BNET生态圈。

    刘建军认为,在信息技术发展的今天,通信网络行业迎来新的发展机遇,也感受着前所未有的压力。通讯行业主要面临以下三大难题亟需解决。

    极度不安全

    信息泄露·可偷窥

    这几年通信网络安全的问题层出不穷,中国多家互联网巨头10亿条数据被抛售,个人信息买卖已形成产业链,这些都引起了人们的广泛关注及担忧。中心化服务器一旦被黑客攻破,数据隐私泄密给人们生活方方面面带来困扰,让我们随时随地可能处在一种被偷窥、被关注、被轰炸的境地。

    脆弱

     

    随着设备连接增多,数据信息越来越海量,中心化网络承载也越来越多,带宽减少,计算运力越来越慢……一旦中心化网络承载负荷超重,将会影响着无以计数的设备,甚至导致瘫痪,极度影响着生活。比如我们现在比较好的自动驾驶技术,一旦中心化网络出现故障,则会导致汽车无法驾驶,出现的后果不堪设想。

    带宽不足

     

    这几年移动互联网的快速发展让无线数据需求迅猛增加,从2007 年到2017 年十年间,无线网络数据就增加了1000 倍,3G、4G 网络已经成为用户获取信息的主要渠道。而随着物联网、人工智能时代的到来,用户对高负载、高质量应用需求的不断增加,现在的中心网络数据传输100Gbps,边缘传输10Gbps,已经很难承载未来十年间网络数据流量。

    BNET的技术解决方案

    基于以上种种问题以及对未来通信物联网络的构想,BNET将采用去中心的区块链技术、AI技术、动态MESH技术和基于感知的切换技术构建人工智能多节点分布式网络。连接各类不同设备,建立一张由用户自己控制的高速、安全、私密友好的网络。

    BNET技术除了采用分布式组网技术,在全球拥有海量的数据节点,创造指数级的网络传输路径,并组织一张新的网络,这些路径形成的网络,具有自由的联通性和极大带宽,高速有效的运用带宽。也运用区块链技术将去中心化的节点组织起来,通过区域自治的技术方案,实现真正网络的私密和安全。同时也基于采用链路层的创新技术,链路层以上的IP层、传输层和应用层都不用做任何改变,可无缝接入这张网络。BNET技术具有无与伦比的易用性,超越现有任何解决方案。

    BNET的生态也会出政策激励第三方开发,并在生态建设中根据贡献获取BNET的激励。第三方开发者可以是应用开发,软件开发,插件开发,也可以是硬件开发,比如矿机的研发、制造和销售,更可以是布道者,推广和宣传BNET的核心通信协议,以促进网络更加健壮。比如,依据BNET网,可以做一个更也安全的Telegram,币用,也可以做出全球无障碍访问的浏览器插件,当然也可以各种私密组网,满足各种机构组织的私密办公,私密通讯。

    在这个人类越来越注重隐私,社会信息网络越来越高效的时代,BNET技术可以显著提高现有通信网络速度,安全以至于私密性的网络,人人都可以在BNET里轻松创建自主的专属网络,实现安全、高效、可靠的网络体验生活。

     

    BNET官网:https://b.network

    官方电报群:https://t.me/BNETchat_CN

    BNET论坛:https://community.b.network

    BNET官方微信:BNETofficial

     

    展开全文
  • 百度超级链学院第一期微访谈来咯~ 10月14日18-19点,百度超级链高级工程师 郑旗(小X姐姐),就在本社群与大家一起聊聊“区块链共识”那点事儿,欢迎大家一起来交流、互动~ ...
  • 区块链实战超级账本视频教程网盘地址:...区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。所谓共识机制是区块链系统中实现不同节点之间建立信任、获取权益的...
  • 吐槽 原以为EOS的“做事”这块比较简单,看了源码后,这块代码写的真是...中篇介绍了eos的 dpos选举部分,通过投票选举出21个超级节点,这篇主要是说这些超级节点“如何做事”。 投票结果 中篇到最后提到投票结果...
  • 区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。所谓共识机制是区块链系统中实现不同节点之间建立信任、获取权益的数学算法 。 区块链(Blockchain)是比特币的一个重要概念...
  • 我们在前文讲述了许多区块链这几年发展演进过来的共识机制。在之前的内容中,我们讲述的共识多属于区块链1.o与2.0的知识。这次,我们着重讲述下区块链3.0时代的HyperLedger Fabric中的共识机制以及相关特性。而今,...
  • 超级账本应用场景的目标是企业级的区块链平台,网络节点一般是需要授要加入的,所以超级账本是不支持标准的Pow算法的。 2。Hyperledger Fabric1.0的共识机制 超级账本是把共识分为3个阶段,如图6-1所示: (1...
  • 一、超级账本(hyperledger) 超级账本(hyperledger)是Linux基金会于2015年发起的推进区块链...项目采用独立的开放协议和标准,通过框架方法和专用模块,如各区块链共识机制、存储方式,以及身份服务、访问控制和智
  • 解读区块链区块链框架分析+超级账本(Hyperledger Fabric)基础 写了几篇区块链基础知识点的文章,自己也在尝试搭建环境,本人不是区块链从业者、区块链技术只是出于个人兴趣,现在开始文章分两部分,一部分继续...
  • 区块链解读

    千次阅读 多人点赞 2018-06-29 17:02:48
    区块链解读3-共识机制 区块链解读4-密码学 区块链解读5-名词解释 区块链解读6-区块链框架+超级账本(Hyperledger-Fabric)基础 区块链解读7-区块链1.0(比特币技术) 区块链解读8-区块链2.0+智能合约 区块链...
  • 区块链的火热引发了人们对于区块链技术的各种关注。...随之各大知名区块链项目方如EULO、波场等,也相继提出了自己的区块链超级节点的社区治理玩法。 那么,超级节点是什么?它在区块链项目中的社区治理...
  • NGK公链采用了DPOSS共识算法,基于原有DPOS算法的基础上进行提升,采用这种机制性能更高,实测能达到5000+TPS,同时采用超级节点机制,能达到闪电交易速度,在发起交易请求后,通过广播1.5秒即可完成交易.
  • 三、区块链学习-区块链的技术平台1、比特币2、以太坊3、瑞波4、区块链商用平台:超级账本5、技术平台的对比 参考书籍:《深度探索区块链:Hyperledger技术与应用》 @著 张增骏 董宁 朱轩彤 陈剑雄 1、比特币  比特币...
  • EOS 目前采用DPoS+Pipelined BFT 共识机制。 DPoS共识 - 如何成为出块节点 DPoS(Delegated Proof of Stake)是权益委托证明机制。相比于比特币的PoW机制,DPoS不用浪费算力资源争夺记账权,而是通过赋予通证持有人...
  • 区块链笔记

    2019-01-14 13:24:00
    1.区块链是什么?... 区块+链表结构 数据层 分布式的p2p网络 网络层 比特币:POW 以太币:POW将转POS 共识层 (PBFT性能高,POW参与的人多) 超级账本:PBFT 挖矿奖励 激励层 以太坊:EV...
  • 区块链技术现状

    2021-01-20 13:51:53
    文章目录区块链技术现状(重点研究了EOS和DAG的共识机制和体系设计)EOS区块链2.0的痛点:EOS的相关特性:EOS的共识机制:超级节点的竞选:持币者投票:超级节点的治理:EOS的账户体系:基于角色的多层级账户体系:...
  • 百度区块链白皮书

    2018-11-24 16:36:20
    百度的区块链白皮书: 百度区块链秉持自主研发,打造关键核心技术上的独有优势:运用超级节点无限扩容 区块链的计算和存储能力,彻底突破区块链的性能瓶颈,独创立体网络技术(包括:链内 DAG并行技术、可回归侧链技术...
  • hyperledger fabric是区块链中联盟链的优秀实现,主要代码由IBM、Intel、各大银行等贡献,目前v1.1版的kafka共识方式可达到1000/s次的吞吐量。本文中我们依次讨论:区块链的共通特性、fabric核心概念、fabric的交易...
  • 区块链学习

    2018-02-08 11:20:17
    这几个月,技术出身的人都想去了解技术底层的东西,所以就搞了几个虚拟机,把比特币的官方客户端和以太坊的官方客户端(go-ethereum),那个超级账本还没有去看,现在这里备一下(fabric)。 看起来没有多大难度,...
  • 区块链殿堂之路

    2018-12-05 19:13:08
    这里是区块链的完整技术栈; 为区块链爱好者提供一站式的完整技术解决方案; 内容包括: 区块链开发第一语言——Go语言基础与实战;... 前沿框架系列:超级账本+EOS,这里是区块链3.0; 我们的征途,是星辰大海!
  • Hyperledger Fabric(超级账本)使用诸如单节点共识、分布式队列共识共识方式,并支持智能合约和外部组件扩展。但Ethereum和Fabric部署困难相对困难。EOS区块链采用DPOS共识机制,生成区块速度快、延迟低,能支持...
  • 区块链知识点

    2018-10-09 14:42:00
    1 比特币 2 以太坊 3 超级账本 共识机制 密码学相关 go语言相关 4. 区块链游戏 僵尸学习https://cryptozombies.io/zh/lesson/1/chapter/15 hyperleder fabric 中文翻译 : ...
  • 文丨互链脉搏编辑部未经授权,不得转载!9月6日下午,由工信部电子五所指导,互链脉搏联合超级账本、FISCO BCOS开源社区、迅雷链、重庆区块链测试中心主办的2019全球...
  • 一个具有大饼气质的神级项目,可以称得上是2019年区块链超级黑马。目前处于测试阶段,手机零成本免费挖矿。你可以把Pi想象成2019年bit币的新版本,允许人们利用现有的社交关系在手机上挖掘加密货币,经济成本低,不...
  • 今日区块链技术头条 1.通告 | 每周以太坊 2.以太坊2.0:什么是区块验证者? 3.干货 | 理解去中心化...7.清华大学区块链中心康烁:区块链共识到底牛逼在哪? 8.LinkedIn:区块链开发人员在过去 4 年增长了 33 ...

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 154
精华内容 61
关键字:

区块链超级共识