CN109377230A - 一种基于有向图的智能合约在区块链中实现的方法及装置 - Google Patents
一种基于有向图的智能合约在区块链中实现的方法及装置 Download PDFInfo
- Publication number
- CN109377230A CN109377230A CN201811513645.XA CN201811513645A CN109377230A CN 109377230 A CN109377230 A CN 109377230A CN 201811513645 A CN201811513645 A CN 201811513645A CN 109377230 A CN109377230 A CN 109377230A
- Authority
- CN
- China
- Prior art keywords
- event
- common recognition
- block chain
- intelligent contract
- executed
- 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.)
- Granted
Links
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
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)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明一种基于有向图的智能合约在区块链中实现的方法及装置,本发明涉及区块链领域,所述方法包括:所述区块链中第一共识节点执行所述事件,所述第一共识节点,判断所述事件被正确执行,所述区块链中除第一共识节点以外的共识节点接收到执行的所述事件,判断所述事件被正确执行,根据所述判断结果,通过共识机制判断所述事件被正确执行,将所述事件打包存储在所述区块链,当所述区块链中共识节点,通过共识机制判断所述智能合约中事件被正确执行,并满足有向图唯一终点的结束条件,结束所述智能合约的内容。本发明提供的一种基于有向图的智能合约在区块链中实现的方法及装置,实现了基于有向图的智能合约在区块链上的应用。
Description
技术领域
本发明涉及区块链领域,特别是一种基于有向图的智能合约在区块链中实现的方法及装置。
背景技术
区块链技术是由多种已存在的技术(P2P网络、密码学等)组合形成的具有去中心化的记录技术。目前区块链没有统一的定义,维基百科上对区块链的定义是:区块链(bolckchain)是利用分布式的数据库对信息进行甄别、传播和记录的对等网络,简言之,区块链在本质上就是一个具有去中心化特征的分布式数据库,区块链技术从本质来说是一个分布式的数据库技术,网络内的节点利用密码学、共识算法、点对点通信等技术,共同维护全网数据的一致性和完整性。
智能合约(Smart contract)是一种旨在以信息化方式传播、验证或执行合同的计算机协议,智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转,智能合约概念于1995年由Nick Szabo首次提出,现阶段智能合约内容多由编程语言书写完成,对于非IT专业的合约参与者来讲,智能合约内容可读性差,基于有向图的智能合约是指将代码式的智能合约以有向图的形式表现出来,有向图中的唯一起点为智能合约内容的开始点,智能合约中的每个事件作为有向图中的顶点,事件与事件之间的优先顺序关系作为有向图中的弧,智能合约内容的结束点作为有向图中的唯一终点,这样就使得智能合约,通过合约中事件的顺序与关系定义合约中的有向图,让使用者更加直观的了解智能合约中表达的约定内容。
近年来区块链技术与智能合约技术发展迅速,并在各个行业领域中形成许多应用案例,现有的技术已经将智能合约与区块链结合起来使用,但基本都是基于程序代码式的智能合约,还没有将基于有向图形式的智能合约应用于区块链上的相关文献。
发明内容
鉴于上述问题,本发明提供一种基于有向图的智能合约在区块链中实现的方法以及装置,解决了现有技术中还没有基于有向图形式的智能合约应用于区块链上问题。
本发明实施例提供了一种基于有向图的智能合约在区块链中实现的方法,所述基于有向图的智能合约是指将代码式的智能合约以有向图的形式表现出来,有向图中的唯一起点为智能合约内容的开始点,智能合约中的每个事件作为有向图中的顶点,事件与事件之间的优先顺序关系作为有向图中的弧,智能合约内容的结束点作为有向图中的唯一终点,智能合约的内容包括每个事件以及事件与事件之间的优先顺序关系,智能合约中的事件指智能合约中可以由一个或多个软件系统完成,也可以由一个或一组人完成,还可以由一个或多个人与软件系统协作完成的任务以及规则,将基于有向图的智能合约上传至区块链中每个共识节点,在所述区块链中每个共识节点上可以查看基于有向图的智能合约的内容,所述方法包括:
所述区块链中第一共识节点执行所述事件,并将执行的所述事件广播;
所述第一共识节点,判断所述事件被正确执行,并广播判断结果至所述区块链中等待共识;
所述区块链中除第一共识节点以外的共识节点接收到执行的所述事件,判断所述事件被正确执行,并广播判断结果至所述区块链中等待共识;
所述第一共识节点,以及所述区块链中除第一共识节点以外的共识节点,根据所述判断结果,通过共识机制判断所述事件被正确执行,将所述事件打包存储在所述区块链;
当所述第一共识节点,以及所述区块链中除第一共识节点以外的共识节点,通过共识机制判断所述智能合约中事件被正确执行,并满足有向图唯一终点的结束条件,结束所述智能合约的内容。
可选地,所述第一共识节点,判断所述事件执行正确,包括:
所述第一共识节点在执行所述事件后,对比已存储在所述区块链上的所述智能合约的内容,以及在此之前属于所述智能合约的已正确执行后存储在所述区块链上的事件,判断所述事件是否按照所述智能合约中事件的任务以及规则,以及事件之间优先顺序关系被正确执行;
若所述事件按照所述智能合约中事件的任务以及规则,以及事件之间优先顺序关系被正确执行,则判断所述事件执行正确,并广播判断结果至所述区块链中等待共识;
所述方法还包括:
若所述事件没有按照所述智能合约中事件的任务以及规则,以及事件之间优先顺序关系被正确执行,则判断所述事件执行不正确,并广播判断结果至所述区块链中等待共识。
可选地,所述第一共识节点,以及所述区块链中除第一共识节点以外的共识节点,通过共识机制判断所述事件被正确执行,将所述事件打包存储在所述区块链,包括:
当所述区块链中所有共识节点根据所述判断结果,通过共识机制判断所述事件被正确执行,将所述事件打包存储在所述区块链;
所述方法还包括:
当所述区块链中所有共识节点根据所述判断结果,通过共识机制判断所述事件执行不正确,则将所述事件作为违约事件,所述区块链中的所有共识节点保存所述违约事件,作为违约证据记录。
可选地,所述方法还包括:
在所述第一共识节点执行所述事件时,所要执行的事件根据前驱事件的执行结果,确定是否执行所要执行的事件,若确定执行所要执行的事件,则所要执行的事件开始执行,执行结束后将执行事件以及前驱事件的执行结果形成第一集合,进行记录备份,并将所述第一集合发送给后继事件,同时进行广播,所述前驱事件为优先于所要执行的事件,在所要执行的事件执行之前需要执行的事件集合或满足条件的事件集合,所述后继事件为优先级低于所要执行的事件,在所要执行的事件执行之后需要执行的事件集合或满足条件的事件集合;
所述第一共识节点中所述后继事件在接收到所述第一集合后,根据所述智能合约的内容,若满足所述后继事件执行条件,则开始执行后继事件,执行结束后将后继事件、后继事件执行结果以及所述第一集合形成第二集合,进行记录备份,并将所述第二集合发送给下一后继事件,同时进行广播,若不满足所述后继事件执行条件,则继续等待执行后继事件;
当所述第一共识节点执行所述事件满足所述有向图唯一终点的结束条件时,所述第一共识节点将执行过程中的所有事件以及所有事件的执行结果形成执行事件数据集合,对比已上链的所述智能合约的内容,以及在此之前属于所述智能合约的已正确执行后存储在所述区块链上的事件,判断所述执行事件数据集合是否按照所述智能合约中的事件的任务以及规则,以及事件之间优先顺序关系被正确执行,并将所述执行事件数据集合广播;
当所述区块链中除所述第一共识节点以外的共识节点接收到所述执行事件数据集合后,对比已上链的所述智能合约的内容,以及在此之前属于所述智能合约的已正确执行后存储在所述区块链上的事件,判断所述执行事件数据集合是否按照所述智能合约中的事件的任务以及规则,以及事件之间优先顺序关系被正确执行;
若所述执行事件数据集合按照所述智能合约中的事件的任务以及规则,以及事件之间优先顺序关系被正确执行,则所述区块链中共识节点判断所述执行事件数据集合被正确执行,将所述执行事件数据集合打包存储在所述区块链;
若所述执行事件数据集合没有按照所述智能合约中的事件的任务以及规则,以及事件之间优先顺序关系被正确执行,则所述区块链中共识节点判断所述执行事件数据集合执行不正确,则将所述执行事件数据集合作为违约事件,所述区块链中的所有共识节点保存所述违约事件,作为违约证据记录。
本发明实施例还提供了一种基于有向图的智能合约在区块链中实现的装置,所述基于有向图的智能合约是指将代码式的智能合约以有向图的形式表现出来,有向图中的唯一起点作为智能合约内容的开始顶点,智能合约中的每个事件作为有向图中的顶点,事件与事件之间的优先顺序关系作为有向图中的弧,智能合约内容的结束顶点作为有向图中的唯一终点,智能合约的内容包括每个事件以及事件与事件之间的优先顺序关系,智能合约中的事件指智能合约中可以由一个或多个软件系统完成,也可以由一个或一组人完成,还可以由一个或多个人与软件系统协作完成的任务以及规则,将基于有向图的智能合约上传至区块链中每个共识节点,在所述区块链中每个共识节点上可以查看基于有向图的智能合约的内容,所述装置包括:
执行广播模块,用于所述区块链中第一共识节点执行所述事件,并将执行的所述事件广播;
判断广播模块,用于所述第一共识节点,判断所述事件被正确执行,并广播判断结果至所述区块链中等待共识;
接收判断广播模块,用于所述区块链中除第一共识节点以外的共识节点接收到执行的所述事件,判断所述事件被正确执行,并广播判断结果至所述区块链中等待共识;
判断存储模块,用于所述第一共识节点,以及所述区块链中除第一共识节点以外的共识节点,根据所述判断结果,通过共识机制判断所述事件被正确执行,将所述事件打包存储在所述区块链;
判断结束模块,用于当所述第一共识节点,以及所述区块链中除第一共识节点以外的共识节点,通过共识机制判断所述智能合约中事件被正确执行,并满足有向图唯一终点的结束条件,结束所述智能合约的内容。
可选地,所述判断广播模块包括:
第一对比子模块,用于所述第一共识节点在执行所述事件后,对比已存储在所述区块链上的所述智能合约的内容,以及在此之前属于所述智能合约的已正确执行后存储在所述区块链上的事件,判断所述事件是否按照所述智能合约中事件的任务以及规则,以及事件之间优先顺序关系被正确执行;
第一判断子模块,用于若所述事件按照所述智能合约中事件的任务以及规则,以及事件之间优先顺序关系被正确执行,则判断所述事件执行正确,并广播判断结果至所述区块链中等待共识;
第二判断子模块,用于若所述事件没有按照所述智能合约中事件的任务以及规则,以及事件之间优先顺序关系被正确执行,则判断所述事件执行不正确,并广播判断结果至所述区块链中等待共识。
可选地,所述判断存储模块包括:
打包子模块,用于当所述区块链中所有共识节点根据所述判断结果,通过共识机制判断所述事件被正确执行,将所述事件打包存储在所述区块链;
违约子模块,用于当所述区块链中所有共识节点根据所述判断结果,通过共识机制判断所述事件执行不正确,则将所述事件作为违约事件,所述区块链中的所有共识节点保存所述违约事件,作为违约证据记录。
可选地,所述装置还包括:
集合发送模块,用于在所述第一共识节点执行所述事件时,所要执行的事件根据前驱事件的执行结果,确定是否执行所要执行的事件,若确定执行所要执行的事件,则所要执行的事件开始执行,执行结束后将执行事件以及前驱事件的执行结果形成第一集合,进行记录备份,并将所述第一集合发送给后继事件,同时进行广播,所述前驱事件为优先于所要执行的事件,在所要执行的事件执行之前需要执行的事件集合或满足条件的事件集合,所述后继事件为优先级低于所要执行的事件,在所要执行的事件执行之后需要执行的事件集合或满足条件的事件集合;
集合广播模块,用于所述第一共识节点中所述后继事件在接收到所述第一集合后,根据所述智能合约的内容,若满足所述后继事件执行条件,则开始执行后继事件,执行结束后将后继事件、后继事件执行结果以及所述第一集合形成第二集合,进行记录备份,并将所述第二集合发送给下一后继事件,同时进行广播,若不满足所述后继事件执行条件,则继续等待执行后继事件;
对比判断广播模块,用于当所述第一共识节点执行所述事件满足所述有向图唯一终点的结束条件时,所述第一共识节点将执行过程中的所有事件以及所有事件的执行结果形成执行事件数据集合,对比已上链的所述智能合约的内容,以及在此之前属于所述智能合约的已正确执行后存储在所述区块链上的事件,判断所述执行事件数据集合是否按照所述智能合约中的事件的任务以及规则,以及事件之间优先顺序关系被正确执行,并将所述执行事件数据集合广播;
接收对比判断模块,用于当所述区块链中除所述第一共识节点以外的共识节点接收到所述执行事件数据集合后,对比已上链的所述智能合约的内容,以及在此之前属于所述智能合约的已正确执行后存储在所述区块链上的事件,判断所述执行事件数据集合是否按照所述智能合约中的事件的任务以及规则,以及事件之间优先顺序关系被正确执行;
判断打包存储模块,用于若所述执行事件数据集合按照所述智能合约中的事件的任务以及规则,以及事件之间优先顺序关系被正确执行,则所述区块链中共识节点判断所述执行事件数据集合被正确执行,将所述执行事件数据集合打包存储在所述区块链;
判断违约记录模块,用于若所述执行事件数据集合没有按照所述智能合约中的事件的任务以及规则,以及事件之间优先顺序关系被正确执行,则所述区块链中共识节点判断所述执行事件数据集合执行不正确,则将所述执行事件数据集合作为违约事件,所述区块链中的所有共识节点保存所述违约事件,作为违约证据记录。
与现有技术相比,本发明提供的一种基于有向图的智能合约在区块链中实现的方法及装置,将智能合约上传到区块链中的每个共识节点,按照智能合约的内容执行智能合约中的事件,通过区块链的共识机制保证了智能合约正确、安全的被执行,并且本发明所提出的方法具有很好的扩展性,能够在多种领域中进行应用。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1是本发明一种基于有向图的智能合约在区块链中实现方法的流程图;
图2是本发明一种基于有向图的智能合约在区块链中实现方法中步骤102的具体步骤流程图;
图3是本发明一种基于有向图的智能合约在区块链中实现方法中步骤104的具体步骤流程图;
图4是本发明实施例中一个基于有向图的智能合约示意图;
图5是本发明实施例的另一种方法的流程图;
图6是本发明一种基于有向图的智能合约在区块链中实现装置的框图;
图7是本发明一种基于有向图的智能合约在区块链中实现的装置其中一个模块的具体框图;
图8是本发明一种基于有向图的智能合约在区块链中实现的装置其中一个模块的具体框图;
图9是本发明一种基于有向图的智能合约在区块链中实现装置的另一框图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。应当理解,此处所描述的具体实施例仅用以解释本发明,仅仅是本发明一部分实施例,而不是全部的实施例,并不用于限定本发明。
参照图1,示出了一种基于有向图的智能合约在区块链中实现方法的流程图,基于有向图的智能合约是指将程序代码式的智能合约以有向图的形式表现出来,有向图中的唯一起点为智能合约内容的开始点,有向图的开始点可以是一个事件,也可以只是一个单纯表示起点的开始点,智能合约中的每个事件作为有向图中的顶点,事件与事件之间的优先顺序关系作为有向图中的弧,智能合约内容的结束点作为有向图中的唯一终点,同样,有向图的终点可以是一个事件,也可以只是一个单纯表示终点的终点,智能合约的内容包括每个事件以及事件与事件之间的优先顺序关系,智能合约中的事件指智能合约中可以由一个或多个软件系统完成,也可以由一个或一组人完成,还可以由一个或多个人与软件系统协作完成的任务以及规则,通过有向图可以很直观的知道一个智能合约的具体内容,具体规则。将基于有向图的智能合约上传至区块链中每个共识节点,需要使用智能合约的用户在区块链中任意一个共识节点上都可以查看基于有向图的智能合约,在用户确定需要使用智能合约后,用户通过共识节点开始使用智能合约,需要说明的是,由于区块链系统的开放性,任何用户都可以将自己制定的任何形式的智能合约上传至区块链上,本发明实施例对此不做限制。
基于有向图的智能合约在区块链中实现方法包括如下步骤:
步骤101:区块链中第一共识节点执行事件,并将执行的事件广播。
本发明实施例中,用户在确定需要使用智能合约之后,通过区块链中任意一个共识节点进行事件的执行,因为智能合约的内容包括每个事件以及事件与事件之间的优先顺序关系,所以用户需要明确每个事件的规则和事件的任务,按照事件的规则和任务来执行事件,同时还要明确事件与事件之间的优先顺序关系,以保证事件被正确执行,在该共识节点执行完用户所要执行的事件之后,将执行的事件广播,以便区块链中其他共识节点能收到该被执行的事件。本发明实施例对共识节点执行事件的工作方式,以及广播方式不做具体限定。
步骤102:第一共识节点判断事件被正确执行,并广播判断结果至区块链中等待共识。
本发明实施例中,执行事件的共识节点在执行完所要执行的事件后,需要判断被执行的事件是否正确执行,并将判断结果广播,让区块链中所有共识节点都收到自身对本次执行事件正确还是不正确的结果。本发明实施例共识节点判断事件是否正确执行与否的具体方式不做具体限定。
可选地,参照图2,步骤102还可以包括如下步骤:
步骤102a:第一共识节点在执行事件后,对比已存储在区块链上的智能合约的内容,以及在此之前属于智能合约的已正确执行后存储在区块链上的事件,判断事件是否按照智能合约中事件的任务以及规则,以及事件之间优先顺序关系被正确执行。
步骤102b:若事件按照智能合约中事件的任务以及规则,以及事件之间优先顺序关系被正确执行,则判断事件执行正确,并广播判断结果至区块链中等待共识。
步骤102c:若事件没有按照智能合约中事件的任务以及规则,以及事件之间优先顺序关系被正确执行,则判断事件执行不正确,并广播判断结果至区块链中等待共识。
本发明实施例中,执行事件的共识节点在执行完所要执行的事件后,将对比已经存储在共识节点中的智能合约的内容,以及在此之前属于智能合约的已正确执行后存储在区块链上的事件,例如已存储在共识节点中的智能合约中一个事件f的任务是“交付一笔用于购买房屋的资金一亿人民币”,规则是“付款方必须提供姓名、手机号、身份证号、职业、年龄”,该事件f的优先顺序关系是,以任务和规则是“在交付一亿元人民币之前,必须提前24小时以上交付二千万人民币预付金”的事件b,以及以任务和规则是“提供资金证明,必须加盖银行公章”的事件d为优先于事件f的事件,以任务和规则是“确认收款一亿两千万人民币,确认所购买车库的产权密码、门禁密码已发送之后,交付所购买房屋的产权密码、门禁密码”的事件h为滞后于事件f的事件,共识节点中还存储了事件m,事件m是已经经过区块链中所有共识节点共识过的,对应于事件f的被正确执行过的事件,优先于事件m的为事件j和事件k,滞后于事件m的为事件n,假设共识节点新执行的事件q为“交付一笔用于购买房屋的资金一亿人民币,并且提供了姓名、手机号、身份证号、职业、年龄”,共识节点验证事件q在执行之前已经正确执行过事件p“在交付一亿元人民币之前,必须提前24小时交付二千万人民币预付金”,以及事件o“提供资金证明,必须加盖银行公章”,并且没有执行过事件r“确认收款一亿两千万人民币,确认所购买车库的产权密码、门禁密码已发送之后,交付所购买房屋的产权密码、门禁密码”,再验证事件q与事件m的任务和规则完全相同,并且事件p与事件j相同,事件o与事件k相同,事件r与事件n相同,则共识节点判断事件q被正确执行,将事件q被正确执行的判断结果广播,让区块链中所有共识节点都收到本次执行事件q正确的结果,若事件q与事件f,或者事件m的任务和规则不同,或者事件p没有被正确执行,或者事件o没有执行过,或者事件o没有被正确执行,或者事件p与事件j的任务和规则不同,或者事件o与事件k的任务和规则不同,事件r与事件n的任务和规则不同,都判断事件q执行不正确,将事件q执行不正确的判断结果广播,让区块链中所有共识节点都收到本次执行事件q不正确的结果。需要说明的是,若是共识节点中没有存储事件m,则事件q只与事件f进行对比验证,若是共识节点中还存储有事件s、事件t、事件u等和事件f相同性质的事件,则事件q必须分别与这些事件进行对比和验证,结果都正确才可以判断事件q正确执行。本发明实施例对判断事件是否被正确执行的具体方式不做具体限定。
步骤103:区块链中除第一共识节点以外的共识节点接收到执行的事件,判断事件被正确执行,并广播判断结果至区块链中等待共识。
本发明实施例中,区块链中除了执行事件q以外的其他共识节点接收到事件q之后,按照步骤102描述的方法进行事件q是否被正确执行的判断,将判断事件q被正确执行,或者执行不正确的结果广播,这样区块链中所有的共识节点都收到事件q的执行结果。本发明实施例对其余共识节点判断事件是否被正确执行的具体方式不做具体限定。
步骤104:第一共识节点,以及区块链中除第一共识节点以外的共识节点,根据判断结果,通过共识机制判断事件被正确执行,将事件打包存储在区块链。
本发明实施例中,区块链中的所有共识节点都收到执行事件的执行结果,通过共识节点的共识机制,最终得出事件被正确执行,将事件打包成区块,存储于区块链上,每一个共识节点都会存储这个执行的事件,这样,当有下一个与该事件相同的事件在任意一个共识节点被执行时,该事件就作为已经经过区块链中所有共识节点共识过的,被正确执行过的事件。本发明实施例对共识节点进行判断的具体方式不做具体限定。
可选地,参照图3,步骤104还可以包括如下步骤:
步骤104a:当区块链中所有共识节点根据判断结果,通过共识机制判断事件被正确执行,将事件打包存储在区块链。
步骤104b:当区块链中所有共识节点根据判断结果,通过共识机制判断事件执行不正确,则将事件作为违约事件,区块链中的所有共识节点保存违约事件,作为违约证据记录。
本发明实施例中,区块链中的所有共识节点都收到事件q的执行结果,通过共识节点的共识机制,最终得出事件q被正确执行,将事件q打包成区块,存储于区块链上,每一个共识节点都会存储事件q,这样,当有下一个与事件q相同的事件w在任意一个共识节点被执行时,事件q就作为已经经过区块链中所有共识节点共识过的,对应于事件f的被正确执行过的事件,若区块链中的所有共识节点收到事件q的执行结果,通过共识节点的共识机制,最终得出事件q执行不正确,则区块链将事件q作为违约事件,区块链中的所有共识节点保存违约事件q,作为违约证据记录,用户可以通过任意一个共识节点查看到违约记录,并且违约之后无法进行事件q之后的事件,最终导致智能合约不能完成。本发明实施例对共识节点进行判断的具体方式不做具体限定。
步骤105:当第一共识节点,以及区块链中除第一共识节点以外的共识节点,通过共识机制判断智能合约中事件被正确执行,并满足有向图唯一终点的结束条件,结束智能合约的内容。
本发明实施例中,若有向图唯一终点的结束条件是事件q与事件x都被正确执行,并且事件q执行完毕时间晚于事件x执行完毕时间,则区块链中任意一个共识节点执行完事件q之后,经过区块链中所有共识节点的共识机制判断事件q被正确执行,并且事件q执行完毕时间晚于事件x,则有向图唯一终点的结束条件满足,智能合约的内容全部正确完成,智能合约结束,等待下一个用户继续使用。需要说明的是,智能合约在区块链上并不是一次只能一个用户使用,而是可以很多用户同时使用,并且没有时间限制,智能合约规则范围内,用户可以一次只完成一个事件,等下一次再接着完成剩余事件,或者也可以下一次重新开始一个事件,可以理解的是不同用户可以同时进行同一个智能合约的不同事件,因为每一个用户在区块链上都只有唯一一个对应的身份,本发明实施例对上述情况不做具体限定。
举例说明1,区块链有共识节点1、2、3,如图4所示一个基于有向图的智能合约,有向图唯一起点S单纯表示有向图起点,有向图唯一终点E单纯表示有向图终点,事件a任务“需要买一个房屋”,规则“注册唯一账户、密码”,事件b任务“需要买一个车库”,规则“注册唯一账户、密码”,事件c任务“交付二千万人民币预付金”,规则“二千万人民币预付金必须于交付一亿元人民币24小时之前交付”,事件d任务“提供资金证明”,规则“必须加盖银行公章”,事件e任务“交付二百万人民币预付金”,规则“二百万人民币预付金必须于交付一千万元人民币24小时之前交付”,事件f任务“交付一笔用于购买房屋的资金一亿人民币”,规则“付款方必须提供姓名、手机号、身份证号、职业、年龄”,事件g任务“交付一笔用于购买车库的资金一千万人民币”,规则“付款方必须提供姓名、手机号、身份证号、职业、年龄”,事件h任务“确认收款一亿两千万人民币之后,交付所购买房屋的产权密码、门禁密码”,规则“确认所购买车库的产权密码、门禁密码已发送”,事件i任务“确认收款一千两百万人民币之后,交付所购买车库的产权密码、门禁密码”,规则“确认收款一千两百万人民币之后,10分钟之内交付所购买车库的产权密码、门禁密码”,将该基于有向图的智能合约上传至区块链中,区块链共识节点1、2、3上都会存储这个智能合约。
假设共识节点1、2、3中都存储有已经执行正确的事件m,事件m任务和规则与事件f相同,其优先事件为事件j和事件k,其中事件j与事件c相同,事件k与事件d相同,事件m的滞后事件为事件n,事件n与事件h相同,当用户在共识节点1上新执行了事件q“交付一笔用于购买房屋的资金一亿人民币,并且提供了姓名、手机号、身份证号、职业、年龄”,共识节点1将事件q广播,同时对比事件f以及事件m是否与事件q相同,并验证事件q之前是否已执行过事件p“在交付一亿元人民币之前,必须提前24小时交付二千万人民币预付金”,以及事件o“提供资金证明,必须加盖银行公章”,而且没有执行过事件r“确认收款一亿两千万人民币,确认所购买车库的产权密码、门禁密码已发送之后,交付所购买房屋的产权密码、门禁密码”,再对比事件p是否与事件j相同,事件o是否与事件k相同,若上述事件都相同,共识节点1判断事件q被正确执行,将事件q被正确执行的判断结果广播,让共识节点2、3都收到本次执行事件q正确的结果,若上述事件有任意一个不相同,共识节点1判断事件q没有被正确执行,将事件q执行不正确的判断结果广播,让共识节点2、3都收到本次执行事件q的判断结果,共识节点2、3在收到共识节点1广播的事件q后,采用与共识节点1一样的方法对事件q是否确执行进行判断,之后各自将判断结果广播,此时共识节点1、2、3中都有了事件q执行正确与否的结果,共识节点1、2、3通过共识机制判断事件q是否被正确执行,若判断事件q被正确执行,则将事件q存储在共识节点1、2、3中,若判断事件q没有被正确执行,共识节点1、2、3将事件q定义成违约事件,并保存违约事件q,作为违约证据记录,用户可以通过任意一个共识节点查看到违约记录,并且违约之后无法进行事件q之后的事件,最终导致智能合约不能完成。若是事件r的结束为有向图唯一终点的条件,则当事件r被正确执行后,整个智能合约被正确完成,该被正确完成的智能合约存储在区块链上。
可选地,参照图5,示出了本发明实施例另外一种方法,该方法包括如下步骤:
步骤201:在第一共识节点执行事件时,所要执行的事件根据前驱事件的执行结果,确定是否执行所要执行的事件,若确定执行所要执行的事件,则所要执行的事件开始执行,执行结束后将执行事件以及前驱事件的执行结果形成第一集合,进行记录备份,并将第一集合发送给后继事件,同时进行广播,前驱事件为优先于所要执行的事件,在所要执行的事件执行之前需要执行的事件集合或满足条件的事件集合,后继事件为优先级低于所要执行的事件,在所要执行的事件执行之后需要执行的事件集合或满足条件的事件集合。
本发明实施例中,假设用户在共识节点1所要执行的事件是事件q,其前驱事件为事件p和事件o都正确执行,并且满足事件q的执行条件,则开始执行事件q,共识节点1在执行完事件q之后,将事件q以及事件p和事件o的正确执行结果打包成第一集合,并进行记录备份,同时将该集合发给下一个事件r,并广播。可以理解的是,若是事件p或者事件o没有正确执行,或者不满足事件q执行的条件,事件q不执行。
步骤202:第一共识节点中后继事件在接收到第一集合后,根据智能合约的内容,若满足后继事件执行条件,则开始执行后继事件,执行结束后将后继事件、后继事件执行结果以及第一集合形成第二集合,进行记录备份,并将第二集合发送给下一后继事件,同时进行广播,若不满足后继事件执行条件,则继续等待执行后继事件。
本发明实施例中,事件r接收到第一集合后,根据智能合约的内容,若满足执行条件,则开始执行事件r,执行结束后将事件r和接收到的集合打包成第二集合,并进行记录备份,发送给下一个事件v,同时将第二集合广播,可以理解的是,若是不满足事件r执行的条件,则事件r继续等待执行。
步骤203:当第一共识节点执行事件满足有向图唯一终点的结束条件时,第一共识节点将执行过程中的所有事件以及所有事件的执行结果形成执行事件数据集合,对比已上链的智能合约的内容,以及在此之前属于智能合约的已正确执行后存储在区块链上的事件,判断执行事件数据集合是否按照智能合约中的事件的任务以及规则,以及事件之间优先顺序关系被正确执行,并将执行事件数据集合广播。
本发明实施例中,当用户在共识节点1中执行事件v后,满足有向图唯一终点的结束条件时,共识节点1将执行过程中所有的事件以及事件执行的结果打包成执行事件数据集合,例如事件a到事件v以及事件a到事件v的执行结果打包成执行事件数据集合,对比已上链的智能合约的内容,以及在此之前属于智能合约的已正确执行后存储在区块链上的事件,采用与举例说明1中相同的方法进行验证判断,同时将执行事件数据集合广播。
步骤204:当区块链中除第一共识节点以外的共识节点接收到执行事件数据集合后,对比已上链的智能合约的内容,以及在此之前属于智能合约的已正确执行后存储在区块链上的事件,判断执行事件数据集合是否按照智能合约中的事件的任务以及规则,以及事件之间优先顺序关系被正确执行。
本发明实施例中,当共识节点2、3接收到执行事件数据集合后,对比已上链的智能合约的内容,以及在此之前属于智能合约的已正确执行后存储在区块链上的事件,采用与举例说明1中相同的方法进行验证判断。
步骤205:若执行事件数据集合按照智能合约中的事件的任务以及规则,以及事件之间优先顺序关系被正确执行,则区块链中共识节点判断执行事件数据集合,被正确执行,将执行事件数据集合打包存储在区块链。
本发明实施例中,共识节点1、2、3分别验证判断执行事件数据集合,得到的结果通过共识机制判断执行事件数据集合被正确执行,将执行事件数据集合打包成区块,存储于区块链上,共识节点1、2、3都会存储执行事件数据集合,这样,当有下一个与当前执行事件数据集合相同的执行事件数据集合在任意一个共识节点被执行时,当前执行事件数据集合就作为已经经过区块链中所有共识节点共识过的被正确执行过的事件集合。
步骤206:若执行事件数据集合没有按照智能合约中的事件的任务以及规则,以及事件之间优先顺序关系被正确执行,则区块链中共识节点判断执行事件数据集合执行不正确,则将执行事件数据集合作为违约事件,区块链中的所有共识节点保存违约事件,作为违约证据记录。
本发明实施例中,共识节点1、2、3分别验证判断执行事件数据集合,得到的结果通过共识机制判断执行事件数据集合没有被正确执行,则区块链将执行事件数据集合作为违约一个违约事件,区块链中的所有共识节点保存该违约事件,作为违约证据记录,用户可以通过任意一个共识节点查看到违约记录,智能合约也不能完成。
举例说明2,用户在共识节点1所要执行的事件是事件q,其前驱事件为事件p和事件o都正确执行,并且满足事件q的执行条件,则开始执行事件q,共识节点1在执行完事件q之后,将事件q以及事件p和事件o的正确执行结果打包成第一集合,并进行记录备份,同时将该集合发给下一个事件r,并广播,事件r接收到第一集合后,根据智能合约的内容,若满足执行条件,则开始执行事件r,执行结束后将事件r和接收到的集合打包成第二集合,并进行记录备份,发送给下一个事件v,同时将第二集合广播,当用户在共识节点1中执行事件v后,满足有向图唯一终点的结束条件时,共识节点1将执行过程中所有的事件以及事件执行的结果打包成执行事件数据集合,例如事件a到事件v以及事件a到事件v的执行结果打包成执行事件数据集合,对比已上链的智能合约的内容,以及在此之前属于智能合约的已正确执行后存储在区块链上的事件,采用与举例说明1中相同的方法进行验证判断,同时将执行事件数据集合广播。
当共识节点2、3接收到执行事件数据集合后,对比已上链的智能合约的内容,以及在此之前属于智能合约的已正确执行后存储在区块链上的事件,采用与举例说明1中相同的方法进行验证判断,共识节点1、2、3分别验证判断执行事件数据集合,得到的结果通过共识机制判断执行事件数据集合被正确执行,将执行事件数据集合打包成区块,存储于区块链上,共识节点1、2、3都会存储执行事件数据集合,这样,当有下一个与当前执行事件数据集合相同的执行事件数据集合在任意一个共识节点被执行时,当前执行事件数据集合就作为已经经过区块链中所有共识节点共识过的被正确执行过的事件集合,当共识节点1、2、3分别验证判断执行事件数据集合,得到的结果通过共识机制判断执行事件数据集合没有被正确执行,则区块链将执行事件数据集合作为违约一个违约事件,区块链中的所有共识节点保存该违约事件,作为违约证据记录,用户可以通过任意一个共识节点查看到违约记录,智能合约也不能完成。该方法相比举例说明1中所描述方法,整个智能合约进行过程中每一个事件不需要共识节点进行共识机制,也不需要把每一个事件上区块链存储,所以该方法降低了网络资源的消耗,并且也降低了区块链上存储的数据量。
需要说明的是,上述实施例是为了更清晰的对本发明实施例做出说明而例举的一个简单的例子,并不代表所有智能合约的内容以及形式,所有可以通过本发明实施例的方法实现智能合约在区块链上应用的方法都包括在本发明的内容中。
参照图6,示出了一种基于有向图的智能合约在区块链中实现的装置,该装置包括:
执行广播模块310,用于区块链中第一共识节点执行事件,并将执行的事件广播;
判断广播模块320,用于第一共识节点,判断事件被正确执行,并广播判断结果至区块链中等待共识;
接收判断广播模块330,用于区块链中除第一共识节点以外的共识节点接收到执行的事件,判断事件被正确执行,并广播判断结果至区块链中等待共识;
判断存储模块340,用于第一共识节点,以及区块链中除第一共识节点以外的共识节点,根据判断结果,通过共识机制判断事件被正确执行,将事件打包存储在区块链;
判断结束模块350,用于当第一共识节点,以及区块链中除第一共识节点以外的共识节点,通过共识机制判断智能合约中事件被正确执行,并满足有向图唯一终点的结束条件,结束智能合约的内容。
可选地,参照图7,判断广播模块320包括:
第一对比子模块3201,用于第一共识节点在执行事件后,对比已存储在区块链上的智能合约的内容,以及在此之前属于智能合约的已正确执行后存储在区块链上的事件,判断事件是否按照智能合约中事件的任务以及规则,以及事件之间优先顺序关系被正确执行;
第一判断子模块3202,用于若事件按照智能合约中事件的任务以及规则,以及事件之间优先顺序关系被正确执行,则判断事件执行正确,并广播判断结果至区块链中等待共识;
第二判断子模块3203,用于若事件没有按照智能合约中事件的任务以及规则,以及事件之间优先顺序关系被正确执行,则判断事件执行不正确,并广播判断结果至区块链中等待共识。
可选地,参照图8,判断存储模块340包括:
打包子模块3401,用于当区块链中所有共识节点根据判断结果,通过共识机制判断事件被正确执行,将事件打包存储在区块链;
违约子模块3402,用于当区块链中所有共识节点根据判断结果,通过共识机制判断事件执行不正确,则将事件作为违约事件,区块链中的所有共识节点保存违约事件,作为违约证据记录。
可选地,参照图9该装置还包括:
集合发送模块360,用于在第一共识节点执行事件时,所要执行的事件根据前驱事件的执行结果,确定是否执行所要执行的事件,若确定执行所要执行的事件,则所要执行的事件开始执行,执行结束后将执行事件以及前驱事件的执行结果形成第一集合,进行记录备份,并将第一集合发送给后继事件,同时进行广播,前驱事件为优先于所要执行的事件,在所要执行的事件执行之前需要执行的事件集合或满足条件的事件集合,后继事件为优先级低于所要执行的事件,在所要执行的事件执行之后需要执行的事件集合或满足条件的事件集合;
集合广播模块370,用于第一共识节点中后继事件在接收到第一集合后,根据智能合约的内容,若满足后继事件执行条件,则开始执行后继事件,执行结束后将后继事件、后继事件执行结果以及第一集合形成第二集合,进行记录备份,并将第二集合发送给下一后继事件,同时进行广播,若不满足后继事件执行条件,则继续等待执行后继事件;
对比判断广播模块380,用于当第一共识节点执行事件满足有向图唯一终点的结束条件时,第一共识节点将执行过程中的所有事件以及所有事件的执行结果形成执行事件数据集合,对比已上链的智能合约的内容,以及在此之前属于智能合约的已正确执行后存储在区块链上的事件,判断执行事件数据集合是否按照智能合约中的事件的任务以及规则,以及事件之间优先顺序关系被正确执行,并将执行事件数据集合广播;
接收对比判断模块390,用于当区块链中除第一共识节点以外的共识节点接收到执行事件数据集合后,对比已上链的智能合约的内容,以及在此之前属于智能合约的已正确执行后存储在区块链上的事件,判断执行事件数据集合是否按照智能合约中的事件的任务以及规则,以及事件之间优先顺序关系被正确执行;
判断打包存储模块400,用于若执行事件数据集合按照智能合约中的事件的任务以及规则,以及事件之间优先顺序关系被正确执行,则区块链中共识节点判断执行事件数据集合被正确执行,将执行事件数据集合打包存储在区块链;
判断违约记录模块410,用于若执行事件数据集合没有按照智能合约中的事件的任务以及规则,以及事件之间优先顺序关系被正确执行,则区块链中共识节点判断执行事件数据集合执行不正确,则将执行事件数据集合作为违约事件,区块链中的所有共识节点保存违约事件,作为违约证据记录。
通过上述实施例,本发明使得基于有向图的智能合约在区块链中得以实现,用户可以在区块链上的任意共识节点查看智能合约,并且因为区块链的特性,使得智能合约的安全性、执行的正确性得到了有利的保障。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本发明所提供的一种基于有向图的智能合约在区块链中实现的方法及装置,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (8)
1.一种基于有向图的智能合约在区块链中实现的方法,其特征在于,所述基于有向图的智能合约是指将代码式的智能合约以有向图的形式表现出来,有向图中的唯一起点为智能合约内容的开始点,智能合约中的每个事件作为有向图中的顶点,事件与事件之间的优先顺序关系作为有向图中的弧,智能合约内容的结束点作为有向图中的唯一终点,智能合约的内容包括每个事件以及事件与事件之间的优先顺序关系,智能合约中的事件指智能合约中可以由一个或多个软件系统完成,也可以由一个或一组人完成,还可以由一个或多个人与软件系统协作完成的任务以及规则,将基于有向图的智能合约上传至区块链中每个共识节点,在所述区块链中每个共识节点上可以查看基于有向图的智能合约的内容,所述方法包括:
所述区块链中第一共识节点执行所述事件,并将执行的所述事件广播;
所述第一共识节点,判断所述事件被正确执行,并广播判断结果至所述区块链中等待共识;
所述区块链中除第一共识节点以外的共识节点接收到执行的所述事件,判断所述事件被正确执行,并广播判断结果至所述区块链中等待共识;
所述第一共识节点,以及所述区块链中除第一共识节点以外的共识节点,根据所述判断结果,通过共识机制判断所述事件被正确执行,将所述事件打包存储在所述区块链;
当所述第一共识节点,以及所述区块链中除第一共识节点以外的共识节点,通过共识机制判断所述智能合约中事件被正确执行,并满足有向图唯一终点的结束条件,结束所述智能合约的内容。
2.根据权利要求1所述的方法,其特征在于,所述第一共识节点,判断所述事件执行正确,包括:
所述第一共识节点在执行所述事件后,对比已存储在所述区块链上的所述智能合约的内容,以及在此之前属于所述智能合约的已正确执行后存储在所述区块链上的事件,判断所述事件是否按照所述智能合约中事件的任务以及规则,以及事件之间优先顺序关系被正确执行;
若所述事件按照所述智能合约中事件的任务以及规则,以及事件之间优先顺序关系被正确执行,则判断所述事件执行正确,并广播判断结果至所述区块链中等待共识;
所述方法还包括:
若所述事件没有按照所述智能合约中事件的任务以及规则,以及事件之间优先顺序关系被正确执行,则判断所述事件执行不正确,并广播判断结果至所述区块链中等待共识。
3.根据权利要求1所述的方法,其特征在于,所述第一共识节点,以及所述区块链中除第一共识节点以外的共识节点,通过共识机制判断所述事件被正确执行,将所述事件打包存储在所述区块链,包括:
当所述区块链中所有共识节点根据所述判断结果,通过共识机制判断所述事件被正确执行,将所述事件打包存储在所述区块链;
所述方法还包括:
当所述区块链中所有共识节点根据所述判断结果,通过共识机制判断所述事件执行不正确,则将所述事件作为违约事件,所述区块链中的所有共识节点保存所述违约事件,作为违约证据记录。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述第一共识节点执行所述事件时,所要执行的事件根据前驱事件的执行结果,确定是否执行所要执行的事件,若确定执行所要执行的事件,则所要执行的事件开始执行,执行结束后将执行事件以及前驱事件的执行结果形成第一集合,进行记录备份,并将所述第一集合发送给后继事件,同时进行广播,所述前驱事件为优先于所要执行的事件,在所要执行的事件执行之前需要执行的事件集合或满足条件的事件集合,所述后继事件为优先级低于所要执行的事件,在所要执行的事件执行之后需要执行的事件集合或满足条件的事件集合;
所述第一共识节点中所述后继事件在接收到所述第一集合后,根据所述智能合约的内容,若满足所述后继事件执行条件,则开始执行后继事件,执行结束后将后继事件、后继事件执行结果以及所述第一集合形成第二集合,进行记录备份,并将所述第二集合发送给下一后继事件,同时进行广播,若不满足所述后继事件执行条件,则继续等待执行后继事件;
当所述第一共识节点执行所述事件满足所述有向图唯一终点的结束条件时,所述第一共识节点将执行过程中的所有事件以及所有事件的执行结果形成执行事件数据集合,对比已上链的所述智能合约的内容,以及在此之前属于所述智能合约的已正确执行后存储在所述区块链上的事件,判断所述执行事件数据集合是否按照所述智能合约中的事件的任务以及规则,以及事件之间优先顺序关系被正确执行,并将所述执行事件数据集合广播;
当所述区块链中除所述第一共识节点以外的共识节点接收到所述执行事件数据集合后,对比已上链的所述智能合约的内容,以及在此之前属于所述智能合约的已正确执行后存储在所述区块链上的事件,判断所述执行事件数据集合是否按照所述智能合约中的事件的任务以及规则,以及事件之间优先顺序关系被正确执行;
若所述执行事件数据集合按照所述智能合约中的事件的任务以及规则,以及事件之间优先顺序关系被正确执行,则所述区块链中共识节点判断所述执行事件数据集合被正确执行,将所述执行事件数据集合打包存储在所述区块链;
若所述执行事件数据集合没有按照所述智能合约中的事件的任务以及规则,以及事件之间优先顺序关系被正确执行,则所述区块链中共识节点判断所述执行事件数据集合执行不正确,则将所述执行事件数据集合作为违约事件,所述区块链中的所有共识节点保存所述违约事件,作为违约证据记录。
5.一种基于有向图的智能合约在区块链中实现的装置,其特征在于,所述基于有向图的智能合约是指将代码式的智能合约以有向图的形式表现出来,有向图中的唯一起点作为智能合约内容的开始顶点,智能合约中的每个事件作为有向图中的顶点,事件与事件之间的优先顺序关系作为有向图中的弧,智能合约内容的结束顶点作为有向图中的唯一终点,智能合约的内容包括每个事件以及事件与事件之间的优先顺序关系,智能合约中的事件指智能合约中可以由一个或多个软件系统完成,也可以由一个或一组人完成,还可以由一个或多个人与软件系统协作完成的任务以及规则,将基于有向图的智能合约上传至区块链中每个共识节点,在所述区块链中每个共识节点上可以查看基于有向图的智能合约的内容,所述装置包括:
执行广播模块,用于所述区块链中第一共识节点执行所述事件,并将执行的所述事件广播;
判断广播模块,用于所述第一共识节点,判断所述事件被正确执行,并广播判断结果至所述区块链中等待共识;
接收判断广播模块,用于所述区块链中除第一共识节点以外的共识节点接收到执行的所述事件,判断所述事件被正确执行,并广播判断结果至所述区块链中等待共识;
判断存储模块,用于所述第一共识节点,以及所述区块链中除第一共识节点以外的共识节点,根据所述判断结果,通过共识机制判断所述事件被正确执行,将所述事件打包存储在所述区块链;
判断结束模块,用于当所述第一共识节点,以及所述区块链中除第一共识节点以外的共识节点,通过共识机制判断所述智能合约中事件被正确执行,并满足有向图唯一终点的结束条件,结束所述智能合约的内容。
6.根据权利要求5所述的装置,其特征在于,所述判断广播模块包括:
第一对比子模块,用于所述第一共识节点在执行所述事件后,对比已存储在所述区块链上的所述智能合约的内容,以及在此之前属于所述智能合约的已正确执行后存储在所述区块链上的事件,判断所述事件是否按照所述智能合约中事件的任务以及规则,以及事件之间优先顺序关系被正确执行;
第一判断子模块,用于若所述事件按照所述智能合约中事件的任务以及规则,以及事件之间优先顺序关系被正确执行,则判断所述事件执行正确,并广播判断结果至所述区块链中等待共识;
第二判断子模块,用于若所述事件没有按照所述智能合约中事件的任务以及规则,以及事件之间优先顺序关系被正确执行,则判断所述事件执行不正确,并广播判断结果至所述区块链中等待共识。
7.根据权利要求5所述的装置,其特征在于,所述判断存储模块包括:
打包子模块,用于当所述区块链中所有共识节点根据所述判断结果,通过共识机制判断所述事件被正确执行,将所述事件打包存储在所述区块链;
违约子模块,用于当所述区块链中所有共识节点根据所述判断结果,通过共识机制判断所述事件执行不正确,则将所述事件作为违约事件,所述区块链中的所有共识节点保存所述违约事件,作为违约证据记录。
8.根据权利要求5所述的装置,其特征在于,所述装置还包括:
集合发送模块,用于在所述第一共识节点执行所述事件时,所要执行的事件根据前驱事件的执行结果,确定是否执行所要执行的事件,若确定执行所要执行的事件,则所要执行的事件开始执行,执行结束后将执行事件以及前驱事件的执行结果形成第一集合,进行记录备份,并将所述第一集合发送给后继事件,同时进行广播,所述前驱事件为优先于所要执行的事件,在所要执行的事件执行之前需要执行的事件集合或满足条件的事件集合,所述后继事件为优先级低于所要执行的事件,在所要执行的事件执行之后需要执行的事件集合或满足条件的事件集合;
集合广播模块,用于所述第一共识节点中所述后继事件在接收到所述第一集合后,根据所述智能合约的内容,若满足所述后继事件执行条件,则开始执行后继事件,执行结束后将后继事件、后继事件执行结果以及所述第一集合形成第二集合,进行记录备份,并将所述第二集合发送给下一后继事件,同时进行广播,若不满足所述后继事件执行条件,则继续等待执行后继事件;
对比判断广播模块,用于当所述第一共识节点执行所述事件满足所述有向图唯一终点的结束条件时,所述第一共识节点将执行过程中的所有事件以及所有事件的执行结果形成执行事件数据集合,对比已上链的所述智能合约的内容,以及在此之前属于所述智能合约的已正确执行后存储在所述区块链上的事件,判断所述执行事件数据集合是否按照所述智能合约中的事件的任务以及规则,以及事件之间优先顺序关系被正确执行,并将所述执行事件数据集合广播;
接收对比判断模块,用于当所述区块链中除所述第一共识节点以外的共识节点接收到所述执行事件数据集合后,对比已上链的所述智能合约的内容,以及在此之前属于所述智能合约的已正确执行后存储在所述区块链上的事件,判断所述执行事件数据集合是否按照所述智能合约中的事件的任务以及规则,以及事件之间优先顺序关系被正确执行;
判断打包存储模块,用于若所述执行事件数据集合按照所述智能合约中的事件的任务以及规则,以及事件之间优先顺序关系被正确执行,则所述区块链中共识节点判断所述执行事件数据集合被正确执行,将所述执行事件数据集合打包存储在所述区块链;
判断违约记录模块,用于若所述执行事件数据集合没有按照所述智能合约中的事件的任务以及规则,以及事件之间优先顺序关系被正确执行,则所述区块链中共识节点判断所述执行事件数据集合执行不正确,则将所述执行事件数据集合作为违约事件,所述区块链中的所有共识节点保存所述违约事件,作为违约证据记录。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811513645.XA CN109377230B (zh) | 2018-12-11 | 2018-12-11 | 一种基于有向图的智能合约在区块链中实现的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811513645.XA CN109377230B (zh) | 2018-12-11 | 2018-12-11 | 一种基于有向图的智能合约在区块链中实现的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109377230A true CN109377230A (zh) | 2019-02-22 |
CN109377230B CN109377230B (zh) | 2020-01-14 |
Family
ID=65373818
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811513645.XA Active CN109377230B (zh) | 2018-12-11 | 2018-12-11 | 一种基于有向图的智能合约在区块链中实现的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109377230B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110033244A (zh) * | 2019-03-15 | 2019-07-19 | 阿里巴巴集团控股有限公司 | 基于区块链的智能合约执行方法及装置和电子设备 |
CN110555700A (zh) * | 2019-09-04 | 2019-12-10 | 腾讯科技(深圳)有限公司 | 区块链智能合约执行方法、装置、计算机可读存储介质 |
CN110599652A (zh) * | 2019-09-11 | 2019-12-20 | 云南九机信息技术有限公司 | 基于区块链的门禁管理系统及方法 |
CN111563820A (zh) * | 2020-05-08 | 2020-08-21 | 中国工商银行股份有限公司 | 智能合约并行执行方法及装置 |
CN112037062A (zh) * | 2020-08-31 | 2020-12-04 | 成都质数斯达克科技有限公司 | 交易共识方法、装置、电子设备及可读存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106779930A (zh) * | 2016-12-05 | 2017-05-31 | 深圳支付界科技有限公司 | 一种基于微商界面直接选购和寄件的方法及系统 |
CN106874087A (zh) * | 2017-01-25 | 2017-06-20 | 上海钜真金融信息服务有限公司 | 一种区块链智能合约定时任务调度方法 |
CN107395353A (zh) * | 2017-04-24 | 2017-11-24 | 阿里巴巴集团控股有限公司 | 一种区块链共识方法及装置 |
US20170366516A1 (en) * | 2016-06-16 | 2017-12-21 | The Bank Of New York Mellon | Managing verifiable, cryptographically strong transactions |
CN108573741A (zh) * | 2017-12-25 | 2018-09-25 | 北京金山云网络技术有限公司 | 业务数据记录方法、装置、设备和存储介质 |
CN108769173A (zh) * | 2018-05-21 | 2018-11-06 | 阿里体育有限公司 | 运行智能合约的区块链实现方法及设备 |
CN108805561A (zh) * | 2017-04-27 | 2018-11-13 | 中思博安科技(北京)有限公司 | 可访问多个区块链的智能合约的执行方法和系统 |
US20180350114A1 (en) * | 2017-05-31 | 2018-12-06 | International Business Machines Corporation | Accelerating data-driven scientific discovery |
-
2018
- 2018-12-11 CN CN201811513645.XA patent/CN109377230B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170366516A1 (en) * | 2016-06-16 | 2017-12-21 | The Bank Of New York Mellon | Managing verifiable, cryptographically strong transactions |
CN106779930A (zh) * | 2016-12-05 | 2017-05-31 | 深圳支付界科技有限公司 | 一种基于微商界面直接选购和寄件的方法及系统 |
CN106874087A (zh) * | 2017-01-25 | 2017-06-20 | 上海钜真金融信息服务有限公司 | 一种区块链智能合约定时任务调度方法 |
CN107395353A (zh) * | 2017-04-24 | 2017-11-24 | 阿里巴巴集团控股有限公司 | 一种区块链共识方法及装置 |
CN108805561A (zh) * | 2017-04-27 | 2018-11-13 | 中思博安科技(北京)有限公司 | 可访问多个区块链的智能合约的执行方法和系统 |
CN108805562A (zh) * | 2017-04-27 | 2018-11-13 | 中思博安科技(北京)有限公司 | 智能合约的执行方法和系统 |
US20180350114A1 (en) * | 2017-05-31 | 2018-12-06 | International Business Machines Corporation | Accelerating data-driven scientific discovery |
CN108573741A (zh) * | 2017-12-25 | 2018-09-25 | 北京金山云网络技术有限公司 | 业务数据记录方法、装置、设备和存储介质 |
CN108769173A (zh) * | 2018-05-21 | 2018-11-06 | 阿里体育有限公司 | 运行智能合约的区块链实现方法及设备 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110033244A (zh) * | 2019-03-15 | 2019-07-19 | 阿里巴巴集团控股有限公司 | 基于区块链的智能合约执行方法及装置和电子设备 |
CN110555700A (zh) * | 2019-09-04 | 2019-12-10 | 腾讯科技(深圳)有限公司 | 区块链智能合约执行方法、装置、计算机可读存储介质 |
CN110599652A (zh) * | 2019-09-11 | 2019-12-20 | 云南九机信息技术有限公司 | 基于区块链的门禁管理系统及方法 |
CN111563820A (zh) * | 2020-05-08 | 2020-08-21 | 中国工商银行股份有限公司 | 智能合约并行执行方法及装置 |
CN111563820B (zh) * | 2020-05-08 | 2023-09-22 | 中国工商银行股份有限公司 | 智能合约并行执行方法及装置 |
CN112037062A (zh) * | 2020-08-31 | 2020-12-04 | 成都质数斯达克科技有限公司 | 交易共识方法、装置、电子设备及可读存储介质 |
CN112037062B (zh) * | 2020-08-31 | 2023-08-25 | 成都质数斯达克科技有限公司 | 交易共识方法、装置、电子设备及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN109377230B (zh) | 2020-01-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109377230A (zh) | 一种基于有向图的智能合约在区块链中实现的方法及装置 | |
CN111026789B (zh) | 基于区块链的电子票据查询方法及装置、电子设备 | |
AU2019204052B2 (en) | Blockchain transaction reconciliation method and apparatus, and electronic device | |
JP2019004463A (ja) | ブロックチェーンにおけるトランザクションの実行および妥当性確認のための方法、装置ならびに非一時的コンピュータ可読記憶媒体(ブロックチェーンにおけるトランザクション実行および妥当性確認) | |
CN108595157B (zh) | 区块链数据的处理方法、装置、设备和存储介质 | |
CN110471986B (zh) | 基于区块链的票据实名领取方法、装置及电子设备 | |
CN109064268A (zh) | 业务推荐方法、装置、服务端及存储介质 | |
CN108416577A (zh) | 一种区块链服务系统 | |
CN110457914A (zh) | 数据核对方法、装置、计算机设备和存储介质 | |
CN109271805A (zh) | 一种基于区块链的数据分区储存、查询方法及系统 | |
CN110009322A (zh) | 转账过程中的身份验证方法和装置 | |
CN110175840A (zh) | 联盟链中实现轻钱包机制的方法、客户端、联盟链及系统 | |
CN113487427B (zh) | 一种交易风险识别方法、装置及系统 | |
JP2020516976A (ja) | ブロックチェーンを用いて実施される機械実行可能コントラクトの状態を決定する、コンピュータにより実装されるシステム及び方法 | |
CN115631039A (zh) | 资金追踪方法、装置及设备 | |
CN108198076A (zh) | 一种金融投资方法、装置、终端设备和存储介质 | |
CN109344987A (zh) | 外币预约取现方法、客户端、服务器、外币预约柜及系统 | |
CN111383117A (zh) | 基于区块链的资产管理方法、装置及电子设备 | |
CN110930152B (zh) | 一种基于区块链的数据处理方法及相关设备 | |
CN109272131A (zh) | 外币预约取现方法、客户端、服务器、外币预约柜及系统 | |
CN110019103B (zh) | 一种基于区块链的跨链系统和跨链实现方法 | |
CN109146100A (zh) | 基于区块链技术的开放资源预约方法 | |
CN107809332A (zh) | 复合接口配置及复合接口调用方法、装置 | |
CN109409548A (zh) | 外币预约取现方法、客户端、服务器、外币预约柜及系统 | |
CN110380985A (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 |