CN110517140B - 一种区块链智能合约交易并发执行方法 - Google Patents
一种区块链智能合约交易并发执行方法 Download PDFInfo
- Publication number
- CN110517140B CN110517140B CN201910790004.7A CN201910790004A CN110517140B CN 110517140 B CN110517140 B CN 110517140B CN 201910790004 A CN201910790004 A CN 201910790004A CN 110517140 B CN110517140 B CN 110517140B
- Authority
- CN
- China
- Prior art keywords
- node
- transactions
- transaction
- graph
- miner
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
-
- 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
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/12—Discovery or management of network topologies
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Theoretical Computer Science (AREA)
- Signal Processing (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Finance (AREA)
- Accounting & Taxation (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Marketing (AREA)
- Strategic Management (AREA)
- Technology Law (AREA)
- General Business, Economics & Management (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种区块链智能合约交易并发执行方法,其特点是将矿工集合一批交易,按交易重排序的OCC协议并发执行,然后将调度信息划分成多个子图后验证节点,按并发控制协议并发重新执行交易,其流程包括:矿工节点并发执行交易、调度信息生成、调度信息切分和验证节点并发回放交易步骤。本发明与现有技术相比具有方法简单、易行,效率高,有效解决了矿工节点作恶行为只能在所有交易执行完成后被检测的问题,实现快速验证矿工节点发送的调度信息的正确性,大大提升了串行智能合约执行引擎效率。
Description
技术领域
本发明涉及区块链技术领域,尤其是一种采用串行智能合约执行引擎的区块链系统的智能合约交易并发执行方法。
背景技术
智能合约是部署在区块链各节点上的一段代码,可以用以在区块链网络上实现复杂的业务逻辑从而对外提供服务。智能合约一般是由客户端发起的交易调用,其执行的流程为:矿工节点从本地交易池中挑选一批智能合约交易,按序执行对应的智能合约代码,将合约旧状态转为新状态,然后矿工节点把这批交易和新状态打包进区块里,并广播给其他验证节点。当验证节点收到待验证的区块后,它按同样的顺序重新执行交易对应的合约代码,验证产生的新状态与矿工节点附加在区块里的状态是否一致,总的来说,一笔交易被确认前会被矿工节点和验证节点分别执行一次。
目前,区块链系统的吞吐量并不足以支撑大规模的应用,例如公有区块链系统如以太坊运行Proof-of-Work共识算法,无法处理超过30笔交易每秒,几乎所有支持智能合约的区块链系统都采用了串行执行的方式来保证状态在所有节点的一致性,这种方式不允许任何的并发性,进而限制了吞吐量。随着技术的发展,区块链系统共识算法的性能可以达到上千甚至突破完毕交易,可以预见的是,共识效率的进一步提升使得串行执行的智能合约引擎成为区块链系统新的性能瓶颈。
因此,如何并发执行智能合约交易是提升系统性能的一个关键问题,由于并发读写操作会产生对共享数据的冲突访问,进而导致不一致的状态,矿工节点不能简单地并发执行这些合约交易。对于比特币转账交易,很容易能够提前知道两笔交易是否冲突,因为输入、输出都是定死的。相比之下,对于使用图灵完备语言编写的智能合约来说,不可能提前分析出两个合约交易的执行会不会发生冲突。矿工节点需要使用并发控制协议在交易运行时解决冲突访问,最终产生一个可串行化的调度,那么对于验证节点来说,同样使用一个能产生可串行化的并发协议就足够了吗?答案是不够的。为了保证验证节点与矿工节点拥有一致的状态,验证节点在回放交易时,必须产生一个与矿工节点发现的相同的可串行化顺序,换句话说,智能合约交易在验证节点上的重新执行要求是确定性的。
综上所述,现有技术区块链的串行智能合约执行引擎的效率低下,系统性能差,严重制约了区块链系统的大规模应用。
发明内容
本发明的目的是针对现有技术的不足而设计的一种区块链智能合约交易并发执行方法,采用无冲突的确定性并发协议和交易重排序构成区块链智能合约交易并发执行的两阶段框架,使得验证节点借助调度信息可以高效地回放交易并且产生一个与矿工节点相同的串行化顺序,将验证过程嵌入在验证节点的执行过程中,使得验证节点借助调度信息可以高效地回放交易并且产生一个与矿工节点相同的串行化顺序,优化了验证阶段在重放交易时的效率,尤其在矿工节点和验证节点通信过程中,应用切实有效的图切分算法,在显著降低了通信开销的同时,也保留了验证节点高重放并发度,有效解决了矿工节点作恶行为只能在所有交易执行完成后被检测的问题,实现快速验证矿工节点发送的调度信息的正确性,大大提升了串行智能合约执行引擎效率。
本发明的目的是这样实现的:一种区块链智能合约交易并发执行方法,其特点是将矿工集合一批交易,按照基于交易重排序的乐观并发协议(OCC)并发执行,采用图切分算法将调度信息划分成多个子图,然后验证节点,使用确定性的并发控制协议并发重新执行交易,其具体执行流程包括以下具体步骤:
(一)矿工节点并发执行交易
a步骤:矿工节点从本地交易池中选取一批交易;
b步骤:矿工节点按照OCC协议的读阶段并发执行一批交易;
c步骤:在所有交易到达OCC协议的验证阶段时,根据交易读写集的冲突关系,矿工节点构造冲突图(CG);
d步骤:矿工节点中止CG中的若干交易使得剩余交易构成有向无环的冲突图,然后对该有向无环图应用拓扑排序;
e步骤:矿工节点按d步骤得到的拓扑序依次提交交易,更新交易依赖图(调度信息);
f步骤:被中止的交易作为输入,重复上述b~e步骤,直至区块中的所有交易都成功提交。
(二)调度信息生成
a步骤:矿工节点在成功提交一个交易后向交易依赖图(调度信息)中插入一个新节点;
b步骤:根据新节点的读集与图中已有节点的写集的重合情况,插入新的边;
(三)调度信息切分
a步骤:根据给定的阈值τ计算每个子图的权值上限U;
b步骤:交易依赖图中所有的边按照边权重大小排序;
c步骤:遍历排序后的每条边,如该边连接的未被访问节点的权重加上当前子图的权重不超过U,则未被访问节点添加到当前子图;否则创建一个新的子图,并添加未被访问节点;
d步骤:遍历所有未被访问的节点,如当前子图的权重加上该节点的权重不超过U,则添加该节点到当前子图,否则添加到一个新子图。
(四)验证节点并发回放交易
a步骤:验证节点按照OCC协议的读阶段并发执行区块中的一批交易,从矿工节点发送的交易依赖图中读取一致性的数据;
b步骤:交易按照矿工节点发现的拓扑顺序依次验证矿工节点发送的调度信息的正确性;
c步骤:如通过验证,交易进入提交阶段,提交所有的更新到本地。
所述矿工节点并发执行交易的d步骤中,有向无环图按下述步骤进行拓扑排序:
d1:初始化输出节点集合V为空集;
d2:删去冲突图(CG)中入度或出度为0的节点;
d3:使用Tarjan算法分离出冲突图(CG)中的所有强连通分支;
d4:对于每个强连通分支,如包含的节点数≤1,则返回空集;否则按定义的策略选择节点加入到输出节点集V中;
d5:删去被添加到V中的节点,对剩余的强连通分支按上述d4步骤进行递归,直至该强连通分支无节点。
所述验证节点并发回放交易的b步骤中的矿工节点按下述步骤进行验证和发送:
b1:交易在验证阶段,检查所读的值是否附上verified标签,若是则通过验证;否则检测到矿工节点作恶,传递了错误的调度信息,中止当前区块的验证;b2:通过验证的交易在写回更新以后,会对比其写集与交易依赖图,检查数据值是否一致,对一致的数据打上verified标签以供下一个交易验证。
本发明与现有技术相比具有方法简单、易行,效率高,有效解决了矿工节点作恶行为只能在所有交易执行完成后被检测的问题,实现快速验证矿工节点发送的调度信息的正确性,大大提升了串行智能合约执行引擎效率。
附图说明
图1为本发明框架图;
图2为区块链智能合约图;
图3为冲突图示例图;
图4为调度信息示意图;
图5为切分调度信息示意图;
图6为中止交易示意图;
图7为交易依赖图划分示意图;
图8为重放交易示意图。
具体实施方式
本发明的执行流程具体包括以下步骤:
(一)矿工节点并发执行交易
该步骤是矿工节点按照就交易重排序的乐观并发控制协议并发执行一批交易,具体执行如下步骤:
A1步骤:矿工节点从本地交易池中选取一批交易;
A2步骤:矿工节点按照OCC协议的读阶段并发执行一批交易,例如交易T1读取数据项<item,value>,并将数据项记录到读集中;T1写一个数据项<item,old_value,new_value>则会把写的数据项记录到写集中,并不就地更新;
A3步骤:在所有交易到达OCC协议的验证阶段时,根据交易读写集的冲突关系,矿工节点构造冲突图(CG),如T1的读集RS={<k1,v1>};T2的写集WS={<k1,v1,v2>},判断所以CG中有一条从Tx1指向T2的边;
A4步骤:矿工节点中止CG中的若干交易使得剩余交易构成的冲突图是有向无环的,然后对该有向无环图应用拓扑排序;
A5步骤:矿工节点按照A4步骤得到的拓扑序依次提交交易,更新交易依赖图(调度信息);
A6步骤:被中止的交易作为输入,重复上述A2~A5步骤,直至区块中的所有交易都成功提交。
(二)调度信息生成
矿工以图的形式构造调度信息,记录并发交易的冲突关系与提交顺序,具体包括下述步骤:
B1步骤:矿工节点在成功提交一个交易后,首先向交易依赖图(调度信息)中插入一个新节点,如向原依赖图<V={T1},E={}>中插入节点T2,其更新为<V={Tx1,T2},E={}>;
B2步骤:根据新节点的读集与图中已有节点的写集的重合情况,插入新的边,如原依赖图中的节点T1的写集WS为{<k1,v1,v2>},插入节点T2的读集RS为{<k1,v2>},即T2读取了T1的更新,所以插入边T1→2,最终依赖图为<V={T1,T2},其中边额外记录的表示一致性读集,即T2从T1的更新中读取的数据项集合。
(三)调度信息切分
应用切实有效的图切分算法将上述步骤产生的调度信息划分成多个子图以降低网络传输代价,具体包括下述步骤:
C1步骤:根据给定的阈值τ计算每个子图的权值上限U,假设最初的交易依赖图表示为<V={T1,T2,T3,T4,T5,T6};E={<T1,T5>,<T2,T4>,<T3,T4>,<T3,T2>}>,其中节点权重依次为<1,2,3,4,1,1>,边权重依次为<5,2,1,3>,τ=0.5,经计算U=6,也就是把原本的图分为两个节点权值不超过6的子图;
C2步骤:交易依赖图中所有的边按照边权重大小排序,本例中经排序有<<T3,T4>,<T2,T4>,<T3,T2>,<T1,T5>>;
C3步骤:遍历排序后的每条边,如果该边连接的未被访问节点的权重加上当前子图的权重不超过U,则未被访问节点添加到当前子图;否则创建一个新的子图,并添加未被访问节点,当依次处理完边<T3,T4>,<T2,T4>,<T3,T2>后,子图1包含节点<T2,T3,T4>,它们的权重之和为6,刚好等于U,所以处理边<T1,T5>时将节点T1和T5加入到子图2中;
C4步骤:遍历所有未被访问的节点,如果当前子图的权重加上该节点的权重不超过U,则添加该节点到当前子图;否则添加到一个新子图,本例中T6是唯一个未被访问的节点,子图2的权重加上T6的权重为6,所以T6添加到子图2中,最终得到两个子图<{T2,T3,T4},{T1,T5,T6}>。
(四)验证节点并发回放交易
该步骤是验证节点根据调度信息使用确定性的并发控制协议并发重新执行交易,具体包括下述步骤;
D1步骤:验证节点按照OCC协议的读阶段并发执行区块中的一批交易,从矿工节点发送的交易依赖图中读取一致性的数据。假设交易依赖图中存在一条边那么,T2在执行过程中想要读取数据项k1的值,直接从依赖图中读取值为v2;
D2步骤:交易按照矿工节点发现的拓扑顺序依次验证矿工节点发送的调度信息的正确性;
D3步骤:如果通过验证,交易进入提交阶段,提交所有的更新到本地,
其中,A4步骤所述,矿工节点在冲突图中找到一些节点,中止这些交易使得冲突图是有向无环的,具体包括下述步骤:
E1步骤:初始化输出节点集合V为空集;
E2步骤:删去冲突图(CG)中入度或者出度为0的节点,因为这些节点永远不可能成为环路的一部分;
E3步骤:使用Tarjan算法分离出CG的所有强连通分支;
E4步骤:对于每个强连通分支,如果其包含的节点数目小于等于1,则返回空集;否则按定义的策略选择节点加入到输出节点集V中,如对于强连通分支<V={T1,T2,T3},E={<T1,T2>,<T2,T1>,<T2,T3>,<T3,T4>}>,选择T2作为中止的交易,因为删除T2,剩余部分即无环;
E5步骤:删去被添加到V中的节点,对剩余的强连通分支部分递归执行E4步骤直至该强连通分支无节点。
其中,步骤D2步骤所述的矿工节点发送的调度信息正确性验证方法,具体包括下述步骤:
F1步骤:交易在验证阶段,检查所读的值是否附上verified标签,若是则通过验证,否则检测到矿工节点作恶,传递了错误的调度信息,中止当前区块的验证;
F2步骤:通过验证的交易在写回更新以后,会对比其写集与交易依赖图,检查数据值是否一致,对一致的数据打上verified标签以供下一个交易验证。
本发明采用上述四个不同步骤,实现区块链智能合约的并发执行,即矿工节点并发执行交易步骤,调度信息生成步骤,调度信息切分步骤和验证节点并发回放交易步骤,矿工节点并发执行交易时,采用乐观并发控制变种协议,在运行时处理冲突,在验证前提前中止一些交易,对剩余交易重排序,产生一个最佳的提交顺序。在调度信息生成步骤,使用有向无环图表示调度信息,节点表示交易,边表示交易之间的数据依赖,具体的依赖项也被附加在边上。执行调度信息切分步骤时,应用图切分算法将交易依赖图分成若干个权重相近的子图,并且最小化了割边权重之和。验证节点在重新执行交易时,从交易依赖图中读取数据项,为了与矿工节点保持一致的串行化顺序,验证节点必须按照矿工节点发现的顺序依次提交交易。
本发明在矿工节点执行阶段就考虑了验证节点的重放效率,提出了一种基于交易重排序的乐观并发控制变种协议,该协议既解决了矿工节点的并发问题,同时也优化了验证阶段在重放交易时的效率;本发明在矿工节点和验证节点通信过程中,应用切实有效的图切分算法,在显著降低了通信开销的同时,也保留了验证节点高重放并发度;本发明为验证节点提出了一种无冲突的确定性的并发协议,使得验证节点借助调度信息可以高效地回放交易并且产生一个与矿工节点相同的串行化顺序。另外,考虑到快速验证矿工节点发送的调度信息的正确性,本发明将验证过程嵌入在验证节点的执行过程中,解决了矿工节点作恶行为只能在所有交易执行完成后被检测的问题。
通过以下具体实施例对本发明作进一步的详细说明。
实施例1
参阅附图1,本发明采用矿工节点并发执行交易、调度信息生成、调度信息切分和验证节点并发回放交易构建的一种两阶段智能合约交易并发执行框架,其具体流程如执行:
步骤1:矿工节点应用基于交易重排序的并发协议并发执行一批交易,在运行时处理交易之间的读写冲突,最终产生一个可串行化的调度顺序。
步骤2:以图的方式来表示一个区块所有交易并发执行的最终调度,为了优化验证节点的重放效率,生成过程中尽可能地减小了图的密度。
步骤3:调度信息切分步骤应用图切分算法,在保证均匀切分的前提下,最小化了割边权重之和,也就是说图切分算法在保留并发度的情况下,降低了传输开销。
步骤4:验证节点根据调度信息使用确定性的并发控制协议并发重新执行交易。所有交易首先按照乐观并发控制协议(OCC)读阶段,从交易依赖图中读取数据,并将更新写入写集。然后,按照矿工节点给定的顺序,依次进入OCC的验证阶段。在验证阶段检查读集里的每一个数据项在交易依赖图中是否被打上verified标签,通过验证后,交易将更新写回到原数据项。
参阅附图2,利用solidity编写的模拟银行系统的智能合约,它定义了两个状态变量——owner表示创建合约的人,accounts为账户与余额的映射,图中第四行~第十二行,定义了一个合约函数transfer实现从一个账户向另一个账户转账的功能描述,合约的其他函数例如存款、取款等没有列出。一个智能合约可以抽象成对状态数据state的读写操作,可分别用r(state)和w(state)。假设有如下三个交易调用附图2中所示合约的若干函数:
T1:r(Alice)w(Alice)
T2:r(Bob)r(Alice)w(Alice)
T3:r(Bob)w(Bob)
T1向账户Alice存入50块钱,T2将Bob的所有存款转移到Alice账户下,T3从账户Bob取出50块钱。按具体实施方式中的A2步骤,各交易按照OCC的读阶段并发执行之后有RS(T1)={<Alice,100>},WS(T1)={<Alice,100,150>};RS(T2)={<Bob,100>,<Alice,100>},WS(T2)={<Alice,100,200>};RS(T3)={<Bob,100>},WS(T3)={<Bob,100,50>}。
参阅附图3,根据具体实施方式中的A3步骤,检查每两个交易之间的读写冲突进而构造一张冲突图CG,由于该图中存在环路,所以必须按照具体实施方式中的A4步骤,挑选若干交易并中止它们,中止了T1交易,那么剩余交易可以按照拓扑序T2→T3提交,使得剩余交易构成有向无环的冲突图。
参阅附图4,T1重新执行后读取了T2的更新,并生成交易依赖图。
上述是将冲突图分为包含{T1,T2}和{T3}的两个子图,其切分过程较为简单,下面以较复杂的调度信息切分过程,对本步骤作进一步说明,见下表1的算法:
表1中止交易算法
上述算法过程实现了具体实施方式中的A4步骤,即矿工节点如何挑选交易并中止。下面以另一较复杂的调度信息切分过程,对本步骤作进一步说明,见下表2的算法:
表2交易依赖图划分算法
参阅附图6a,假设执行完11个编号分别为<T1,T2,…,T11>的交易后,构造的冲突图。
参阅附图6b,略过T8,因为它的出度为0,然后计算出所有的强连通分支,得到图中所示的三个强连通分支,然后依次处理。对于由<T1,T3,T4,T7>组成的强连通分支,按照入度大小进行排序,T3有着最大的入度,所以挑选T3作为中止交易。删去T3以及相应的边后,第一个强连通分支已无环,接着处理第二个由节点<T2,T5,T6,T9>组成强连通分支。
参阅附图6c~6d,同理删去T5,得到最后一个强连通分支,由于T10与T11有着相同的入度和出度,可以选择任意一个节点作为中止交易,这里选择T10。最终中止交易集合为<T3,T5,T10>,这些交易将在剩余交易成功提交后重新执行。
参阅附图7a,假设矿工节点在执行完一批交易之后构造了图示的交易依赖图,其中节点T1到T11的权重分别为<11,13,8,6,7,12,1,9,3,2,1>。将依赖图划分为两个相近的子图,并且使得割边权重之和最小,,经计算可得到U=37.5。根据表2的算法过程,对所有边进行排序,得到以下序列:<<T8,T9>,<T4,T8>,<T1,T4>,<T1,T3>,<T2,T6>,<T6,T11>,<T2,T5>,<T5,T11>,<T11,T9>>。
参阅附图7b,按顺序遍历所有的边,首先是边<T8,T9>,发现两个节点均未被访问,且当前子图权重加上两个节点权重的和不超过U,所以将两个节点加入当前子图。
参阅附图7c,当处理边<T2,T6>时,当前子图的全总加上任意一个节点的权重之后都大于U,所以将两个节点加入一个新的子图,
参阅附图7d,访问完所有边之后,节点T7与T10仍然未被访问,将其加入合适的子图中。
参阅附图7e,将T7和T10均加入子图2,最终得到图示的划分。
参阅附图8,在验证节点重放交易时,采用的去中心化的执行方式,即在主线程不存在的情况下,各现成独立负责一个子图的交易的执行,各交易按照矿工节点发现的顺序依次验证收到的一致性读集的正确性进而提交更新。
以上只是对本发明作进一步的说明,并非用以限制本专利,凡为本发明等效实施,均应包含于本专利的权利要求范围之内。本发明的保护内容不局限于以上实施例,在不背离发明构思的精神和范围下,本领域技术人员能够想到的变化和优点都被包括在本发明中,并且以权利要求书为保护范围。
Claims (3)
1.一种区块链智能合约交易并发执行方法,其特征在于将矿工集合一批交易,按交易重排序的OCC协议并发执行,采用图切分算法将调度信息划分成多个子图,然后验证节点,使用确定性的并发控制协议并发重新执行交易,其具体执行流程包括以下具体步骤:
(一)矿工节点并发执行交易
a步骤:矿工节点从本地交易池中选取一批交易;
b步骤:矿工节点按照OCC协议的读阶段并发执行一批交易;
c步骤:在所有交易到达OCC协议的验证阶段时,根据交易读写集的冲突关系,矿工节点构造冲突图;
d步骤:矿工节点中止冲突图中的若干交易使得剩余交易构成有向无环的冲突图,然后对该有向无环图应用拓扑排序;
e步骤:矿工节点按d步骤得到的拓扑序依次提交交易,更新交易依赖图;
f步骤:被中止的交易作为输入,重复上述b~e步骤,直至区块中的所有交易都成功提交;
(二)调度信息生成
a步骤:矿工节点在成功提交一个交易后向交易依赖图中插入一个新节点;
b步骤:根据新节点的读集与图中已有节点的写集的重合情况,插入新的边;
(三)调度信息切分
a步骤:根据给定的阈值τ计算每个子图的权值上限U;
b步骤:交易依赖图中所有的边按照边权重大小排序;
c步骤:遍历排序后的每条边,如该边连接的未被访问节点的权重加上当前子图的权重不超过U,则未被访问节点添加到当前子图;否则创建一个新的子图,并添加未被访问节点;
d步骤:遍历所有未被访问的节点,如当前子图的权重加上该节点的权重不超过U,则添加该节点到当前子图,否则添加到一个新子图;
(四)验证节点并发回放交易
a步骤:验证节点按照OCC协议的读阶段并发执行区块中的一批交易,从矿工节点发送的交易依赖图中读取一致性的数据;
b步骤:交易按照矿工节点发现的拓扑顺序依次验证矿工节点发送的调度信息的正确性;
c步骤:如通过验证,交易进入提交阶段,提交所有的更新到本地。
2.根据权利要求1所述的区块链智能合约交易并发执行方法,其特征在于所述矿工节点并发执行交易的d步骤中,有向无环图按下述步骤进行拓扑排序:
d1:初始化输出节点集合V为空集;
d2:删去冲突图中入度或出度为0的节点;
d3:使用Tarjan算法分离出冲突图中的所有强连通分支;
d4:对于每个强连通分支,如包含的节点数≤1,则返回空集;否则按定义的策略选择节点加入到输出节点集V中;
d5:删去被添加到V中的节点,对剩余的强连通分支按上述d4步骤进行递归,直至该强连通分支无节点。
3.根据权利要求1所述的区块链智能合约交易并发执行方法,其特征在于所述验证节点并发回放交易的b步骤中的矿工节点按下述步骤进行验证和发送:
b1:交易在验证阶段,检查所读的值是否附上verified标签,若是则通过验证;否则检测到矿工节点作恶,传递了错误的调度信息,中止当前区块的验证;
b2:通过验证的交易在写回更新以后,会对比其写集与交易依赖图,检查数据值是否一致,对一致的数据打上verified标签以供下一个交易验证。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910790004.7A CN110517140B (zh) | 2019-08-26 | 2019-08-26 | 一种区块链智能合约交易并发执行方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910790004.7A CN110517140B (zh) | 2019-08-26 | 2019-08-26 | 一种区块链智能合约交易并发执行方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110517140A CN110517140A (zh) | 2019-11-29 |
CN110517140B true CN110517140B (zh) | 2020-08-04 |
Family
ID=68626836
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910790004.7A Active CN110517140B (zh) | 2019-08-26 | 2019-08-26 | 一种区块链智能合约交易并发执行方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110517140B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111294234B (zh) * | 2020-01-17 | 2022-07-29 | 麦科思(苏州)数据科技有限公司 | 一种基于智能合约优化模型的并行区块链分片方法 |
CN111325928B (zh) * | 2020-04-01 | 2021-12-21 | 中国银行股份有限公司 | 银行自助设备的业务执行方法及装置 |
CN111683043B (zh) * | 2020-04-26 | 2021-03-26 | 华东师范大学 | 面向联盟链的基于可信执行环境的智能合约并发执行方法 |
CN111724256A (zh) * | 2020-05-28 | 2020-09-29 | 天津大学 | 一种基于多核架构的智能合约执行优化方法 |
CN111754350B (zh) | 2020-08-28 | 2020-11-24 | 支付宝(杭州)信息技术有限公司 | 并行获取区块链中的交易访问变量的编号的方法和装置 |
CN111754349B (zh) | 2020-08-28 | 2020-12-04 | 支付宝(杭州)信息技术有限公司 | 对区块链中的交易进行分组的方法和装置 |
CN113191895B (zh) * | 2020-09-04 | 2022-04-26 | 支付宝(杭州)信息技术有限公司 | 一种交易执行方法、系统及装置 |
CN112287400A (zh) * | 2020-09-29 | 2021-01-29 | 卓尔智联(武汉)研究院有限公司 | 超级账本中的交易排序方法、装置和计算机设备 |
CN112487096B (zh) * | 2020-12-08 | 2024-08-13 | 深圳前海微众银行股份有限公司 | 一种区块交易的执行方法及装置 |
CN115796874B (zh) * | 2023-01-09 | 2023-05-09 | 杭州安节科技有限公司 | 一种操作级别的区块链交易并发执行方法 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5531226B2 (ja) * | 2006-10-20 | 2014-06-25 | 国立大学法人 名古屋工業大学 | ミクロ相分離構造体、固定化されたミクロ相分離構造体、および該構造体を備えた波長可変レーザー発振器、温度センサー、及び光フィルター |
CN106358302B (zh) * | 2016-09-22 | 2019-12-31 | 福州大学 | 一种无线传感器网络多收发器多信道分配算法 |
CN106940854A (zh) * | 2017-03-06 | 2017-07-11 | 钱德君 | 一种utxo模型与合约之间的搭桥方法 |
US10388039B2 (en) * | 2017-05-31 | 2019-08-20 | International Business Machines Corporation | Accelerating data-driven scientific discovery |
CN109426567B (zh) * | 2017-08-22 | 2021-05-04 | 汇链丰(北京)科技有限公司 | 一种区块链的节点部署和选举方法 |
CN108537543B (zh) * | 2018-03-30 | 2023-07-28 | 百度在线网络技术(北京)有限公司 | 区块链数据的并行处理方法、装置、设备和存储介质 |
CN109523260A (zh) * | 2018-11-28 | 2019-03-26 | 段红 | 一种动态节点选举的高并发共识机制 |
CN109859048A (zh) * | 2019-02-18 | 2019-06-07 | 深圳市优学链科技有限公司 | 一种用子链提高和扩展主链功能的技术方案 |
CN110110500B (zh) * | 2019-06-04 | 2023-04-07 | 施建锋 | 具备侵权即时检测的去中心化图像版权保护系统及方法 |
-
2019
- 2019-08-26 CN CN201910790004.7A patent/CN110517140B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN110517140A (zh) | 2019-11-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110517140B (zh) | 一种区块链智能合约交易并发执行方法 | |
US20180158034A1 (en) | Dynamic reordering of blockchain transactions to optimize performance and scalability | |
CN109271245B (zh) | 一种区块处理任务的控制方法和装置 | |
Chundi et al. | Deferred updates and data placement in distributed databases | |
US8694647B2 (en) | Read-only operations processing in a paxos replication system | |
US7386577B2 (en) | Dynamic determination of transaction boundaries in workflow systems | |
CN106462449B (zh) | 具有多项目事务支持的多数据库日志 | |
CN112598525B (zh) | 一种智能合约分簇并行的区块链实现方法及装置 | |
CN113205417A (zh) | 一种面向联盟链的交易并行处理方法及系统 | |
CN110599166A (zh) | 一种区块链内获取交易依赖关系的方法及装置 | |
Pang et al. | Concurrency protocol aiming at high performance of execution and replay for smart contracts | |
CN111724258B (zh) | 基于环形拓扑、依赖图及多版本控制的联盟链交易并发方案的实现方法 | |
CN114564412B (zh) | 区块链的确定性交易并发调度方法及系统 | |
Margara et al. | A model and survey of distributed data-intensive systems | |
CN111309750A (zh) | 图数据库的数据更新方法和装置 | |
CN113869902A (zh) | 一种区块链交易执行方法及装置 | |
Liu et al. | Formalization and Verification of the PSTM Architecture | |
CN101650799A (zh) | 业务流程间的不匹配交互的发现方法 | |
Qi et al. | Smart contract parallel execution with fine-grained state accesses | |
Barker et al. | Concurrent transaction execution in multidatabase systems | |
Monteiro et al. | A mechanism for replicated data consistency in mobile computing environments | |
CN111190768B (zh) | 数据库执行错误恢复方法、数据库访问方法及装置 | |
CN106055322A (zh) | 一种流程调度方法及装置 | |
Makni et al. | Formal verification of an optimistic concurrency control algorithm using SPIN | |
CN112487096B (zh) | 一种区块交易的执行方法及装置 |
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 |