CN112862490B - 一种异步网络下的输出共识方法 - Google Patents
一种异步网络下的输出共识方法 Download PDFInfo
- Publication number
- CN112862490B CN112862490B CN202110450866.2A CN202110450866A CN112862490B CN 112862490 B CN112862490 B CN 112862490B CN 202110450866 A CN202110450866 A CN 202110450866A CN 112862490 B CN112862490 B CN 112862490B
- Authority
- CN
- China
- Prior art keywords
- signature
- consensus
- state
- transaction
- node
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 54
- 238000013507 mapping Methods 0.000 claims abstract description 14
- 230000005012 migration Effects 0.000 claims abstract description 4
- 238000013508 migration Methods 0.000 claims abstract description 4
- 239000012634 fragment Substances 0.000 claims description 20
- 238000012545 processing Methods 0.000 claims description 10
- 238000013467 fragmentation Methods 0.000 claims description 8
- 238000006062 fragmentation reaction Methods 0.000 claims description 8
- 238000003860 storage Methods 0.000 claims description 7
- 230000007704 transition Effects 0.000 claims description 7
- 230000002776 aggregation Effects 0.000 claims description 6
- 238000004220 aggregation Methods 0.000 claims description 6
- 230000007246 mechanism Effects 0.000 claims description 6
- 238000013479 data entry Methods 0.000 claims 2
- 238000010276 construction Methods 0.000 claims 1
- 238000007726 management method Methods 0.000 abstract description 3
- 238000009826 distribution Methods 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 3
- 241000282346 Meles meles Species 0.000 description 2
- 241000282344 Mellivora capensis Species 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 239000003795 chemical substances by application Substances 0.000 description 2
- 238000012790 confirmation Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 241000406668 Loxodonta cyclotis Species 0.000 description 1
- 230000004931 aggregating effect Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000003999 initiator Substances 0.000 description 1
- 238000005304 joining Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3829—Payment protocols; Details thereof insuring higher security of transaction involving key management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3825—Use of electronic signatures
Landscapes
- Business, Economics & Management (AREA)
- Engineering & Computer Science (AREA)
- Accounting & Taxation (AREA)
- Computer Security & Cryptography (AREA)
- Finance (AREA)
- Strategic Management (AREA)
- Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请提供了一种异步网络下的输出共识方法,该方法在现有异步共识协议完成的原子广播基础之上,通过合约容器的预执行,将达成输入共识的本轮签名交易序列映射为状态写入指令集合,该集合决定了区块链账本状态的迁移,在下一轮原子广播对上述映射达成状态迁移共识,即输出共识,由于调用分布式不一致的合约方法会导致账本状态的不一致,以此来避免出现相同签名交易序列下账本状态的不一致。本发明还提供了一种基于合约共识的节点管理方法,该方法结合链上部署的共识节点管理合约和链下的门限签名密钥分发,能够实现全网一致的共识节点的增加或移除。
Description
技术领域
本申请涉及区块链技术领域,具体涉及一种异步网络下的输出共识方法。
背景技术
异步网络是指对节点之间通信延迟不设置上限的网络环境。现有区块链异步网络BFT共识协议,例如蜜獾HoneyBadger、小飞象Dumbo,采用异步公共子集ACS(AsynchronousCommon Subset)结合门限加密(Threshold Public Key Encryption)实现BFT容错的原子广播协议。在假定共识节点𝒏≥𝟑𝒇+𝟏的前提下,其中𝒏为共识节点总数,𝒇为包括的崩溃错误或拜占庭错误的节点数,该原子广播协议具备如下特点:
1)一致性(Agreement)和全序性(Total order)
如果其中一个诚实节点输出v,那么所有诚实节点都将输出;如果两个诚实节点分别输出值<v0,v1,..,vj>和< 𝑉′-0-, 𝑉′1-,.., 𝑉′j-> , 那么对于i≤(min(j,j’)),vi=v’i;
2)活性(liveness)和抗审查攻击(Censorship resilience)
如果𝒗 输入到 𝒏 − 𝒇 个诚实节点,那么最终所有诚实节点都将输出𝒗;
现有区块链异步网络BFT共识协议对异步公共子集(ACS)的实现,可分为数据传播阶段和数据一致确认阶段。其中,蜜獾协议(HoneyBadger)分别采用可靠广播RBC(ReliableBroadcast)实现数据传播,采用异步二进制共识ABA(Asynchronous Binary Agreement)协议实现数据一致确认;小飞象协议(Dumbo)则采用可证明可靠传播PRBC(Provablereliable broadcast)和多值拜占庭协议(Multi-Valued Byzantine Agreement)予以实现。
上述共识协议应用于工程实践,存在两方面局限:
1)仅仅完成了对各节点输入内容{vi}i∈包含的签名交易及序列的输入共识,未能对输入签名交易序列所导致的账本状态迁移达成共识。如果签名交易调用了存在分布式执行结果不一致的合约方法,将导致区块链各节点账本状态不一致;
2)上述协议假设参与共识的节点及数量固定不变,而工程实践中区块链组网建立之后,通常需要增加或移除共识节点。
发明内容
本申请提供一种异步网络下的输出共识方法,该方法基于原子广播协议(AtomicBroadcast)对签名交易序列达成的输入共识,进一步对输入导致的区块链账本状态转移达成输出共识,该方法还为异步网络提供了全网一致的共识节点的增加和移除方法。本申请所采用的技术方案如下:
一种异步网络下的输出共识方法,该方法包括如下步骤:
步骤1、在区块链合约容器的上下文接口中,提供共识节点及门限签名配置,并在所提供的写状态方法中增加写状态日志记录;
步骤2、定义各个节点的原子广播消息的数据结构;
步骤3、在链下生成创世区块文件并设置r=1,各节点通过加载创世区块文件获得第1轮的原子广播消息,该原子广播消息的txOpts为空;
步骤4、当本轮原子广播协议完成时,通过聚合门限解密分片获得ACS结果对应的本轮共识结果数组{vi_r}i∈N,其中,N为共识节点数量,i表示第i个节点;
步骤5、遍历所述本轮共识结果数组,如果本轮原子广播消息的txOpts为空,跳转到步骤7;否则,收集所述本轮共识结果数组元素中对上轮输入共识的输出状态分片签名vi_r-1.txOpts.sigpiece,对所述输出状态分片签名进行处理,并根据处理结果对签名交易进行标记;
步骤6、将r-1作为区块Block的高度height,将第r-1轮共识完成的txIpts作为区块的输入签名交易序列txs,将所述步骤5中标记为有效签名交易序列映射的写状态指令集合作为区块签名交易序列txIpts映射的状态输出txOpts,将区块blockr-1写入区块数据;调用存储层的账本状态写入接口,按顺序执行txOpts的写状态指令,各共识节点状态达成一致迁移;
步骤7、各共识节点顺序预执行vi_r.txIpts包含的签名交易序列,获得与签名交易逐条映射的账本状态写入指令集合;按顺序逐条对签名交易与账本状态写入指令集合映射进行分片签名,形成本轮输出共识投票,并将所述本轮输出共识投票作为下轮ACS共识的输入内容b:vi_r.txOpts;
步骤8、按照ACS协议随机挑选签名交易,作为下轮共识内容c:vi_r+1.txIpts;各节点轮次r加1作为内容a、组合所述下轮ACS共识的输入内容b和所述下轮共识内容c,启动下一轮原子广播协议消息,下一轮原子广播协议完成之后,重复步骤4。
进一步的,在步骤1中,所述共识节点及门限签名配置信息包括:参与门限签名的N个共识节点各自的账户ui及其门限签名公钥分片ui.pkey、门限签名的公钥pkey、门限值t,所述共识节点及门限签名配置信息通过NodeCfg结构进行描述。
进一步的,所述原子广播消息的数据结构包括:a.原子广播轮次r;b.节点自身对上轮输入共识映射的账本状态写状态指令集合及签名分片vi_r-1.txOpts;c.节点自身的本轮输入vi_r.txIpts。
进一步的,在所述原子广播消息数据结构中进一步增加txOps数据项,该数据项描述了与输入的签名交易序列txs映射的写状态指令集合,以及对所述写状态指令集合的门限签名分片;以及,在步骤6所述的区块数据结构中增加txOps数据项,该数据项描述了与输入的签名交易序列txs映射的写状态指令集合,以及对所述写状态指令集合的组合门限签名。
进一步的,所述txOps数据项包括Block.txOps数据项、ABM.txOpts数据项,所述Block.txOps数据项对应TxOperSet、OperLog结构体,所述ABM.txOpts数据项对应TxOperSet、OperLog结构体,所述txOps数据项用于对账本状态迁移进行输出共识。
进一步的,所述原子广播消息的txIpts中在特定时机包含两个第三方信任机构构造的签名交易其中之一;所述两个第三方信任机构构造的签名交易包括:a.在区块链上部署共识节点及门限签名配置合约ContractNodeMgt的签名交易,该合约包含了用于更新共识节点及门限签名配置的合约方法updateNodeCfg;b.调用所述合约方法updateNodeCfg的签名交易;所述特定时机具体包括:在初始部署合约时,包含上述签名交易a;在后续需要更新共识节点时,包含上述签名交易b。
进一步的,在步骤4中,所述本轮共识结果数组包括:a.原子广播轮次r;b.各节点对上轮输入共识映射的账本状态写状态指令集合及签名分片vi_r-1.txOpts;c.各节点本轮输入vi_r.txIpts。
进一步的,在步骤5中,对所述输出状态分片签名进行处理,并根据处理结果对签名交易进行标记,具体包括:若同一条输入的签名交易的相同写状态指令集合的分片签名数量达到门限值,对该签名交易进行聚合分片签名,形成组合签名并标记为有效签名交易;若分布式执行结果不一致,无法达到分片签名数量的门限值,则该签名交易无法形成组合签名,将被标记为无效签名交易。
进一步的,在步骤6中,进一步包括:当签名交易调用步骤3中的合约方法updateNodeCfg时,将更新账本状态中保存的共识节点及门限签名配置信息,更新后的门限签名配置信息将在步骤8中启动下一轮原子广播协议时从账本状态加载并生效。
进一步的,该方法还包括步骤9:第三方信任机构与共识节点机构进行链下协商,决定新的共识节点集合以及门限签名的门限值,并向各共识节点分发私钥分片;然后第三方信任机构通过签名交易调用所述门限签名配置合约ContractNodeMgt中的合约方法updateNodeCfg,所述链上合约方法中公开了新的共识节点和门限签名信息。
通过本申请实施例,可以获得如下技术效果:
1)现有异步共识协议,要求签名交易序列对应的分布式执行结果完全一致。本发明适用于可能导致分布式执行结果不一致的主流开发语言,在保证原子广播协议特征的前提下,拓宽了异步共识协议的适用场景;
2)本发明在区块数据中增加了对状态迁移的共识,同步和验证区块数据时只需要验证门限组合签名后,顺序执行状态写入指令,无需顺序执行签名交易,提高了区块数据同步效率;
3)本发明结合链上部署的共识节点及门限签名配置合约和链下的门限签名密钥分发,提供了基于合约共识的节点管理方法,能够实现全网一致的共识节点的动态增加或移除,解决了现有异步共识协议中共识节点必须固定不变的难题。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图;
图1为本发明的方法的流程示意图;
图2为本发明的主要消息体及区块数据结构的组成示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的全部其他实施例,都属于本申请保护的范围。
在对本发明的技术方案进行详细描述之前,首先对本发明中使用的术语约定进行如下介绍:
门限签名(threshold signature):是数字签名中的群体签名形式,是现代密码学中一个重要工具。一个(t,n)门限签名协议允许签名集合中任意t个参与者合作生成某个消息的有效签名;
门限加密:包括密钥生成、加密和解密过程,以及一个消息组合器(combiner)。在解密过程中,用户使用自己的私钥解密密文,并将解密分片发送给消息组合器,消息组合器在接收到门限值个解密分片时可组合出消息明文。门限加密的密钥也可用作门限签名和验签;
合约:即智能合约,可以被区块链合约容器加载和执行的代码,合约拥有唯一标识、合约包含供签名交易调用的方法,合约方法通过合约容器提供的接口读写外部状态。本发明中的“操作”是指通过签名交易调用合约方法;
合约上下文(Contract Context):即合约方法执行的上下文环境,包括调用合约方法的签名交易,访问区块数据和世界状态world State的API接口;
世界状态(World State):区块链账本的外部状态,简称账本状态,由合约容器上下文提供给合约代码访问接口,支持持久化读写的Key-Value键值对;
签名:本发明中的签名包含账户标识和数字签名两部分,其中数字签名是使用了公钥加密领域的技术实现,用于鉴别数字信息的方法;账户标识用于从关联交易中提取签名者的公钥,用以验证其数字签名;除非特别说明为“门限签名”,本发明中的签名指常规的数字签名;
签名交易:包含交易发起方签名的结构化数据,代表了签名者的授权行为,签名交易中指定了调用的合约方法及调用参数;
签名交易预执行:指合约容器开辟临时的World State状态空间作为交易执行的上下文环境,执行交易并返回结果,预执行将获得正式执行相同的返回结果,但是不会改变实际的World State状态。预执行用于共识节点在正式出块之前对执行签名交易造成的状态改变达成一致;
分布式执行结果不一致:当采用主流图灵完备开发语言(例如Java、Scala、Go)作为合约语言,并采用确定性的共识算法时,合约方法可能存在导致分布式执行结果不一致的调用(例如获取本地时间、调用本地随机函数、或者其他与本地环境特征或时效相关的调用等),从而导致各共识节点基于相同输入的签名交易序列执行,导致不同的账本状态迁移,出现账本状态分叉导致确定性共识失效,将可能导致后续的共识无法达成。
下面将结合附图和实例对本发明作进一步的详细说明。图1为本发明的方法的流程示意图,图2为本发明的主要消息体及区块数据结构的组成示意图。该方法具体包括如下步骤:
步骤1、在区块链合约容器的上下文接口中,在所提供的写状态方法中增加写状态日志记录,对任意合约方法进行预执行和正式执行时,均输出状态写入指令集合;在区块链合约容器的上下文接口中,提供共识节点及门限签名配置API,以维护共识节点及门限签名配置信息;
在步骤1中,所述共识节点及门限签名配置信息包括:参与门限签名的N个共识节点各自的账户ui及其门限签名公钥分片ui.pkey、门限签名的公钥pkey、门限值t,所述共识节点及门限签名配置信息通过NodeCfg结构进行描述;
在上述步骤1中,区块链合约容器的上下文接口通过如下示例函数进行定义:
class ShimAPI(cId: String) {
type Key = String
type Value = Array[Byte]
//写入状态指令,key:状态键值;val:状态值
case class OperLog(key: Key,val: Value)
//共识节点及门限签名配置信息,
//nc:节点信息;pkey:门限公钥,t:门限值
case class NodeCfg(nc: Map[Key,Value], pkey: Array[Byte], t: Int)//配置信息键名称
val NODE_CFG = "NODE_CFG"
//写入状态指令集合
val kset_write = Set[OperLog]()
def setState(key: Key, value: Value): Unit = {
//键值加入写入状态指令日志
kset_write.add(new OperLog(key,value))
put(key, value)
}
def updateNodeCfg(cfg: NodeCfg):UINT = {
setState(NODE_CFG, NodeCfg)
} ...
}
步骤2、定义各节点的原子广播消息ABM的数据结构;
所述原子广播消息数据结构包括:a.原子广播轮次r;b.本节点自身对上轮输入共识映射的账本状态写状态指令集合及签名分片vi_r-1.txOpts; c.本节点自身的本轮输入vi_r.txIpts;
在所述原子广播数据结构中增加txOps数据项,该数据项描述了与输入的签名交易序列txs一一映射的写状态指令集合,以及对上述写状态指令集合的门限签名分片;在所述区块数据结构中增加txOps数据项,该数据项描述了与输入的签名交易序列txs一一映射的写状态指令集合,以及对上述写状态指令集合的组合门限签名;
与现有异步共识协议对比, txOps数据项包括Block.txOps、ABM.txOpts数据项,并分别对应TxOperSet、OperLog结构体,TxOperSet、OperLog结构体用于对账本状态迁移进行输出共识;
步骤3、在链下生成创世区块文件并设置r=1,各节点通过加载创世区块文件获得第1轮的原子广播消息ABM,该原子广播消息的txOpts为空,该原子广播消息的txIpts中在特定时机包含了两个第三方信任机构构造的签名交易之一;
所述两个第三方信任机构构造的签名交易,具体包括:
a.在区块链上部署共识节点及门限签名配置合约ContractNodeMgt的签名交易,该合约包含了用于更新共识节点及门限签名配置的合约方法updateNodeCfg;
b.调用所述合约方法updateNodeCfg的签名交易。
所述特定时机具体包括:在初始部署合约时,包含上述a签名交易;在后续需要更新共识节点时,包含上述b签名交易,共识节点的配置不需要每轮传播都更新。
所述共识节点及门限签名配置信息的示例如下:
//合约方法返回结果,code:结果代码;ops:状态写入指令集合
case class ActionResult(code: Int, ops: Set[OperLog])
//共识节点及门限签名配置合约
class ContractNodeMgt extends IContract{
val NODE_CFG = "NODE_CFG"
...
/**
* 设置新的共识节点及门限签名信息
* c: 合约容器上下文实例
* cfg: 共识节点及门限签名信息
*/
def updateNodeCfg(c: ContractContext, cfg: NodeCfg): ActionResult={
sa: ShimAPI = c.api
sa.updateNodeCfg(cfg)
//返回正常代码和写状态指令集合
new ActionResult(code=1, sa.kset_write)
}
}
步骤4、当本轮原子广播协议完成时,通过聚合门限解密分片获得ACS结果对应的本轮共识结果数组{vi_r}i∈N ,其中,N为共识节点数量,i表示第i个节点;
所述本轮共识结果数组包括:a.原子广播轮次r;b.各节点对上轮输入共识映射的账本状态写状态指令集合及签名分片vi_r-1.txOpts;c.各节点本轮输入vi_r.txIpts;
步骤5、遍历所述本轮共识结果数组,收集所述本轮共识结果数组元素中对上轮输入共识的输出状态分片签名vi_r-1.txOpts.sigpiece,若同一条输入的签名交易的相同写状态指令集合的分片签名数量达到门限值,对该签名交易进行聚合分片签名,形成组合签名并标记为有效签名交易;若分布式执行结果不一致,无法达到分片签名数量的门限值,则该签名交易无法形成组合签名,将被标记为无效签名交易;
步骤6、将r-1作为区块Block的高度height,将第r-1轮共识完成的txIpts作为区块的输入签名交易序列txs,将所述步骤5中标记为有效签名交易序列映射的写状态指令集合作为区块签名交易序列txIpts映射的状态输出txOpts,将区块blockr-1写入区块数据;调用存储层的账本状态写入接口,按顺序正式执行txOpts的写状态指令,各共识节点状态达成一致迁移;
当签名交易调用了步骤3中的合约方法updateNodeCfg时,将更新账本状态中保存的共识节点及门限签名配置信息,更新后的门限签名配置信息将在步骤8中启动下一轮原子广播协议时从账本状态加载并生效;
步骤7、各共识节点顺序预执行vi_r.txIpts包含的签名交易序列,获得与签名交易逐条映射的账本状态写入指令集合;
按顺序逐条对签名交易与账本状态写入指令集合映射进行分片签名,形成本轮输出共识投票,并将所述本轮输出共识投票作为下轮ACS共识的输入内容b:vi_r.txOpts;
步骤8、按照ACS协议随机挑选签名交易,作为下轮共识内容c:vi_r+1.txOpts,如果需要在下轮结束时更新共识节点集合,则执行步骤9并选中该步骤生成的签名交易;
各节点轮次r加1作为内容a、组合所述下轮ACS共识的输入内容b和所述下轮共识内容c,各启动下一轮原子广播协议消息,下一轮原子广播协议完成之后,重复步骤4;
步骤9、第三方信任机构与共识节点机构进行链下协商,决定新的共识节点集合以及门限签名的门限值,并向各共识节点分发私钥分片;然后第三方信任机构通过签名交易调用所述门限签名配置合约ContractNodeMgt中的合约方法updateNodeCfg,所述链上合约方法中公开了新的共识节点和门限签名信息。
在一些实施例中,计算机程序的部分或者全部可以经由ROM而被载入和/或安装到设备上。当计算机程序加载并被执行时,可以执行上文描述的方法的一个或多个步骤。
本申请中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)等等。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
此外,虽然采用特定次序描绘了各操作,但是这应当理解为要求这样操作以所示出的特定次序或以顺序次序执行,或者要求所有图示的操作应被执行以取得期望的结果。在一定环境下,多任务和并行处理可能是有利的。同样地,虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本公开的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实现中。相反地,在单个实现的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实现中。
尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。
Claims (10)
1.一种异步网络下的输出共识方法,其特征在于,该方法包括如下步骤:
步骤1、在区块链合约容器的上下文接口中,提供共识节点及门限签名配置,并在所提供的写状态方法中增加写状态日志记录;
步骤2、定义各个节点的原子广播消息的数据结构;
步骤3、在链下生成创世区块文件并设置r=1,各节点通过加载创世区块文件获得第1轮的原子广播消息,该原子广播消息的上轮签名交易状态输出txOpts为空;
步骤4、当本轮原子广播协议完成时,通过聚合门限解密分片获得异步公共子集ACS结果对应的本轮共识结果数组{vi_r}i∈N,其中,N为共识节点数量,i表示第i个节点;
步骤5、遍历所述本轮共识结果数组,如果本轮原子广播消息的上轮签名交易状态输出txOpts为空,跳转到步骤7;否则,收集所述本轮共识结果数组元素中对上轮输入共识的输出状态分片签名vi_r-1.txOpts.sigpiece,对所述输出状态分片签名进行处理,并根据处理结果对签名交易进行标记;
步骤6、将r-1作为区块Block的高度height,将第r-1轮共识完成的本轮签名交易输入txIpts作为区块的输入签名交易序列txs,将所述步骤5中标记为有效签名交易序列映射的写状态指令集合作为区块签名交易序列txIpts映射的上轮签名交易状态输出txOpts,将区块blockr-1写入区块数据;调用存储层的账本状态写入接口,按顺序执行上轮签名交易状态输出txOpts的写状态指令,各共识节点状态达成一致迁移;
步骤7、各共识节点顺序预执行ACS结果中本节点对应的本轮共识结果vi_r中包含的签名交易序列vi_r.txIpts,获得与签名交易逐条映射的账本状态写入指令集合;按顺序逐条对签名交易与账本状态写入指令集合映射进行分片签名,形成本轮输出共识投票,并将所述本轮签名交易状态输出vi_r.txOpts作为下轮ACS共识的输入内容b;
步骤8、按照ACS协议随机挑选签名交易,作为下轮共识内容c:vi_r+1.txIpts;各节点轮次r加1作为内容a、组合所述下轮ACS共识的输入内容b和所述下轮共识内容c,启动下一轮原子广播协议消息,下一轮原子广播协议完成之后,重复步骤4。
2.根据权利要求1所述的输出共识方法,其特征在于,在步骤1中,所述共识节点及门限签名配置信息包括:参与门限签名的N个共识节点各自的账户ui及其门限签名公钥分片ui.pkey、门限签名的公钥pkey、门限值t,所述共识节点及门限签名配置信息通过NodeCfg结构进行描述。
3.根据权利要求1所述的输出共识方法,其特征在于,所述原子广播消息的数据结构包括:a.原子广播轮次r;b.节点自身对上轮输入共识映射的账本状态写状态指令集合及签名分片vi_r-1.txOpts;c.节点自身的本轮输入vi_r.txIpts。
4.根据权利要求3所述的输出共识方法,其特征在于,在所述原子广播消息数据结构中进一步增加txOps数据项,该数据项描述了与输入的签名交易序列txs映射的写状态指令集合,以及对所述写状态指令集合的门限签名分片;以及,在步骤6所述的区块数据结构中增加txOps数据项,该数据项描述了与输入的签名交易序列txs映射的写状态指令集合,以及对所述写状态指令集合的组合门限签名。
5.根据权利要求4所述的输出共识方法,其特征在于,所述txOps数据项包括区块数据结构中的签名交易状态输出数据项Block.txOps、原子广播消息数据结构中的上轮签名交易状态输出数据项ABM.txOpts,所述Block.txOps数据项对应交易映射指令集合TxOperSet、状态写入指令OperLog结构体,所述ABM.txOpts数据项对应TxOperSet、OperLog结构体,所述txOps数据项用于对账本状态迁移进行输出共识。
6.根据权利要求1所述的输出共识方法,其特征在于,所述原子广播消息的txIpts中在特定时机包含两个第三方信任机构构造的签名交易其中之一;所述两个第三方信任机构构造的签名交易包括:a.在区块链上部署共识节点及门限签名配置合约ContractNodeMgt的签名交易,该合约包含了用于更新共识节点及门限签名配置的合约方法updateNodeCfg;b.调用所述合约方法updateNodeCfg的签名交易;
所述特定时机具体包括:在初始部署合约时,包含上述构造的签名交易中的情况a;在后续需要更新共识节点时,包含上述构造的签名交易中的情况b。
7.根据权利要求1所述的输出共识方法,其特征在于,在步骤4中,所述本轮共识结果数组包括:a.原子广播轮次r;b.各节点对上轮输入共识映射的账本状态写状态指令集合及签名分片vi_r-1.txOpts;c.各节点本轮输入vi_r.txIpts。
8.根据权利要求1所述的输出共识方法,其特征在于,在步骤5中,对所述输出状态分片签名进行处理,并根据处理结果对签名交易进行标记,具体包括:若同一条输入的签名交易的相同写状态指令集合的分片签名数量达到门限值,对该签名交易进行聚合分片签名,形成组合签名并标记为有效签名交易;若分布式执行结果不一致,无法达到分片签名数量的门限值,则该签名交易无法形成组合签名,将被标记为无效签名交易。
9.根据权利要求6所述的输出共识方法,其特征在于,在步骤6中,进一步包括:当签名交易调用步骤3中的合约方法updateNodeCfg时,将更新账本状态中保存的共识节点及门限签名配置信息,更新后的门限签名配置信息将在步骤8中启动下一轮原子广播协议时从账本状态加载并生效。
10.根据权利要求6所述的输出共识方法,其特征在于,该方法还包括步骤9:第三方信任机构与共识节点机构进行链下协商,决定新的共识节点集合以及门限签名的门限值,并向各共识节点分发私钥分片;然后第三方信任机构通过签名交易调用所述门限签名配置合约ContractNodeMgt中的合约方法updateNodeCfg,在区块链上的合约方法中公开了新的共识节点和门限签名信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110450866.2A CN112862490B (zh) | 2021-04-26 | 2021-04-26 | 一种异步网络下的输出共识方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110450866.2A CN112862490B (zh) | 2021-04-26 | 2021-04-26 | 一种异步网络下的输出共识方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112862490A CN112862490A (zh) | 2021-05-28 |
CN112862490B true CN112862490B (zh) | 2022-05-24 |
Family
ID=75992847
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110450866.2A Active CN112862490B (zh) | 2021-04-26 | 2021-04-26 | 一种异步网络下的输出共识方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112862490B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113645044B (zh) * | 2021-10-09 | 2022-01-11 | 支付宝(杭州)信息技术有限公司 | 一种共识方法、区块链系统和共识节点 |
CN116070285A (zh) * | 2021-11-04 | 2023-05-05 | 京东科技信息技术有限公司 | 基于拜占庭容错的异步共识方法、装置、服务器和介质 |
CN114710374B (zh) * | 2022-03-14 | 2023-04-18 | 中国科学院软件研究所 | 一种数据广播与共识解耦的异步区块链共识方法和系统 |
CN114861233B (zh) * | 2022-04-19 | 2023-12-19 | 湖南天河国云科技有限公司 | 一种无需可信第三方的分片异步拜占庭容错共识方法和装置 |
CN116233145B (zh) * | 2023-05-05 | 2023-08-01 | 北京邮电大学 | 一种基于分片策略的区块链异步共识方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108170740A (zh) * | 2017-12-18 | 2018-06-15 | 深圳前海微众银行股份有限公司 | 数据迁移方法、系统和计算机可读存储介质 |
WO2018193355A1 (en) * | 2017-04-18 | 2018-10-25 | nChain Holdings Limited | Secure blockchain-based consensus |
CN110535629A (zh) * | 2019-09-20 | 2019-12-03 | 北京欧凯联创网络科技有限公司 | 一种异步网络条件下的出块共识方法 |
CN111522800A (zh) * | 2020-07-03 | 2020-08-11 | 支付宝(杭州)信息技术有限公司 | 蜜獾拜占庭容错共识机制的区块链共识方法、节点及系统 |
-
2021
- 2021-04-26 CN CN202110450866.2A patent/CN112862490B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018193355A1 (en) * | 2017-04-18 | 2018-10-25 | nChain Holdings Limited | Secure blockchain-based consensus |
CN108170740A (zh) * | 2017-12-18 | 2018-06-15 | 深圳前海微众银行股份有限公司 | 数据迁移方法、系统和计算机可读存储介质 |
CN110535629A (zh) * | 2019-09-20 | 2019-12-03 | 北京欧凯联创网络科技有限公司 | 一种异步网络条件下的出块共识方法 |
CN111522800A (zh) * | 2020-07-03 | 2020-08-11 | 支付宝(杭州)信息技术有限公司 | 蜜獾拜占庭容错共识机制的区块链共识方法、节点及系统 |
Non-Patent Citations (2)
Title |
---|
Dumbo: Faster Asynchronous BFT Protocols;GUO,Bingyong 等;《ACM CCS"20》;20201031;全文 * |
一个高传输效率的多值拜占庭共识方案;郭兵勇等;《密码学报》;20181015(第05期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN112862490A (zh) | 2021-05-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112862490B (zh) | 一种异步网络下的输出共识方法 | |
JP6955026B2 (ja) | 並列処理ブロックチェーントランザクションのためのシステムおよび方法 | |
ES2837395T3 (es) | Método y dispositivo para escribir datos de servicio en un sistema de cadena de bloques | |
CN110175840B (zh) | 联盟链中实现轻钱包机制的方法、客户端、联盟链及系统 | |
CN111133733B (zh) | 用于基于云平台的自动区块链部署的方法和系统 | |
CN109347868B (zh) | 一种信息验证方法、装置及存储介质 | |
CN111061769A (zh) | 一种区块链系统的共识方法及相关设备 | |
CN111066047A (zh) | 实现基于区块链的工作流 | |
US20210073796A1 (en) | Method of selective authentication of a blockchain user with a smart contract | |
CN110930152B (zh) | 一种基于区块链的数据处理方法及相关设备 | |
CN109840769B (zh) | 基于区块链的存证方法及装置、系统与存储介质 | |
CN110224984A (zh) | 一种基于区块链技术的多方授权方法及装置 | |
CN111669434B (zh) | 一种通信群组的建立方法、系统、装置及设备 | |
CN111640018B (zh) | 一种区块链交易存在性验证方法及装置 | |
CN113362068B (zh) | 一种轻节点验证区块链状态转移的方法 | |
CN112565201B (zh) | 一种区块链中的私钥处理方法、装置及计算机存储介质 | |
CN113810185A (zh) | 一种抗陷门泄露的链上数据修复系统及方法 | |
CN109361710B (zh) | 一种安全协议重构方法及装置 | |
CN112508571A (zh) | 基于区块链的数据处理方法、装置、计算机设备及存储介质 | |
CN112926956A (zh) | 一种区块链财务支付管理方法及系统 | |
CN111383008A (zh) | 基于账户模型的区块链转账方法及装置 | |
CN116015929B (zh) | 一种联盟链准入管理方法及装置 | |
CN113472512A (zh) | 智能合约执行方法、装置、存储介质及电子设备 | |
WO2024092932A1 (zh) | 交易执行方法和区块链节点 | |
EP4325811A1 (en) | Data processing method and apparatus for consensus network, program product, device, and medium |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
EE01 | Entry into force of recordation of patent licensing contract |
Application publication date: 20210528 Assignee: Zhongke Zhicheng (Guangzhou) Information Technology Co.,Ltd. Assignor: BEIJING LIANQI TECHNOLOGY Co.,Ltd. Contract record no.: X2024110000023 Denomination of invention: An Output Consensus Method in Asynchronous Networks Granted publication date: 20220524 License type: Common License Record date: 20240320 |
|
EE01 | Entry into force of recordation of patent licensing contract |