一种基于区块链合约层的链下执行交易方法及系统与流程

文档序号:17608071发布日期:2019-05-07 20:52阅读:159来源:国知局
一种基于区块链合约层的链下执行交易方法及系统与流程

本发明涉及区块链交易领域,特别涉及一种基于区块链合约层的链下执行交易方法及系统。



背景技术:

在现今的信息社会,数据扮演着越来越重要的角色。数据的分享与交易成为了当前技术和商业的一个热点。而且,由于数据与传统商品相比有较大的差异,比如容易丢失,容易复制,需要保密等。因而,对交易的处理能力、交易过程的可追踪性、交易数据的完整性以及可靠性都有更高的要求。

但是在传统的交易方式中,交易的达成一般需要依赖第三方的交易中心,交易中心的处理能力会影响交易的效率,并且交易中心的故障会影响交易的所有相关方。而且,对传统交易过程的追踪非常依赖传统的中心信任机构,如银行、证券交易所、第三方机构等中心化机构,只有通过这些中心信任机构才可以完成交易的验证。在传统的交易平台上,交易数据的完整性也是很难维护,由于传统交易的非透明性,交易的历史难于追溯,交易过程文件也可能被篡改,因而容易滋生欺诈。

现有的区块链平台上的交易方式多是在链上进行,但是其确认交易的方式过于冗余的问题尤为突出,这将会导致每笔交易的确认会有一定的延时。这种延时的存在使得其交易方式与现阶段逐步加快的交易节奏需求不相符合。与此同时,要在区块链中记录的每笔交易都需要消耗一笔不菲的手续费,如果交易过程过于繁杂,则相应的交易手续费也将增大,交易成本随之提高。另外,区块链会把交易的详细过程公之于众,因此无法满足交易的保密性,这些是参与交易的多方都不愿看到的。



技术实现要素:

本发明的目的在于针对现有技术中的上述缺陷,提供一种基于区块链合约层的链下执行交易方法及系统,具体的交易过程放到链下进行,把最终的交易结果推送到链上进行结算,既能减少区块链网络的延时对繁杂的交易过程带来的影响,又能减少交易过程中产生的手续费,还能对具体的交易细节进行保密。

为了实现上述发明目的,本发明采用了如下技术方案:一种基于区块链合约层的链下执行交易方法,包括以下步骤:

步骤1:参与方共同拟定智能合约,并确定获取外部数据的预言机合约,创建状态通道,制成特定客户端;

所述智能合约包括部署在链上的根合约和部署在链下的链下合约,所述链下合约中包括交易规则和交易次数;

步骤2:参与方将根合约部署到工作平台提供的公链上,并在所述根合约中转入约定的积分,通过所述特定客户端将所述链下合约部署到所述公链下,所述状态通道开启;

步骤3:预言机合约获取外部数据并上传至链下合约,根据链下合约中拟定的交易规则,改变参与方的余额状态;

步骤4:参与方通过签名确认单次交易结果;

步骤5:重复执行步骤3和步骤4直至完成链下合约中拟定的交易次数,得到最终交易结果,参与方将最终交易结果发送至根合约,根合约根据交易结果将积分转发至交易方账户中,所述状态通道关闭。

此外,本技术方案还包括如下附属技术方案:

所述步骤4包括以下具体步骤:

若参与方对每次交易结果都认可,则签名认可;

若参与方对某次交易结果有异议,则签名不认可,需对交易结果进行仲裁。

所述仲裁步骤包括以下步骤:

s1:由其中一方将所述链下合约部署至所述公链上作为仲裁合约,并确定所述仲裁合约有效;

s2:将有异议的交易结果和本次获取的外部数据发送至根合约;

s3:根合约调用所述仲裁合约,并将有异议的交易结果和本次获取的外部数据传入仲裁合约内进行仲裁;

s4:所述根合约获取仲裁合约的仲裁结果得到此次交易结果。

确定所述仲裁合约是否有效包括以下步骤:

所述根合约事先存有链下合约的hash值,将所述仲裁合约的地址和hash值发送至根合约,根合约判断所述hash值是否有效;

若有效,则允许所述仲裁合约并认可仲裁结果;

若无效,则不允许所述仲裁合约并不认可仲裁结果。

为了实现上述发明目的,本发明还采用了如下技术方案:一种基于区块链合约层的链下执行交易系统,其包括参与方以及建立在参与方之间的状态通道,所述状态通道包括链上和链下两个部分,所述链上和链下部署有智能合约,所述智能合约包括部署在链上的根合约和部署在链下的链下合约,所述链上还部署有仲裁合约和预言机合约,所述根合约用于最终结算,所述链下合约用于执行交易过程,所述仲裁合约用于参与方对链下交易有异议时的检验操作,所述预言机合约用于提供必要的外部数据。

此外,本技术方案还包括如下附属技术方案:

所述参与方可通过签名方式授权代理人。

所述根合约包括所述链下合约的hash值、参与方的公钥地址、经授权的代理人的公钥地址以及所述预言机合约的公钥地址。

所述仲裁合约包括参与方的公钥地址,所述仲裁合约的内容与所述链下合约内容一致。

所述预言机合约包括为所述链下合约提供外部数据的公钥地址以及链下合约所需的重要数据。

所述链下合约包括码源,所述码源包括交易规则、参与方的公钥地址以及各地址的余额状态。

相比于现有技术,本发明优点在于:本发明的基于区块链合约层的链下执行交易方法及系统,将区块链中的合约层单独剥离出来,具体的交易过程放到链下进行,把最终的交易结果推送到链上进行结算,既能减少区块链网络的延时对繁杂的交易过程带来的影响,又能减少交易过程中产生的手续费,还能对具体的交易细节进行保密。

附图说明

图1是本发明基于区块链合约层的链下执行交易系统的结构示意图。

图2是本发明中状态通道链上和链下合约结构示意图。

图3是本发明中参与方拟定智能合约流程图。

图4是本发明中参与方部署智能合约流程图。

图5是本发明中状态通道工作流程图。

图6是本发明中状态通道运行总流程图。

具体实施方式

以下结合较佳实施例及其附图对本发明技术方案作进一步非限制性的详细说明。

如图1所示,一种基于区块链合约层的链下执行交易系统,其包括参与方以及建立在参与方之间的状态通道,参与方至少两个,参与方可通过签名方式授权代理人,状态通道包括链上和链下两个部分,链上和链下部署有智能合约,智能合约包括部署在链上的根合约和部署在链下的链下合约,链上还部署有仲裁合约以及预言机合约。

如图2所示,根合约用于最终结算,其包括链下合约的hash值、参与方的公钥地址、经授权的代理人的公钥地址以及预言机合约的公钥地址。

仲裁合约用于参与方对链下交易有异议时的检验操作,其内容与链下合约内容一致,主要包括参与方的公钥地址。

预言机合约用于提供必要的外部数据,其可信度被参与方认可,其包括为链下合约提供外部数据的公钥地址以及链下合约所需的重要数据,此数据是状态通道能否顺利运行的关键。

链下合约用于执行交易过程,其包括所有链下合约的码源,码源包括交易规则、参与方的公钥地址以及各地址的余额状态。

值得注意的是,对链下合约可以任意更改,但必须得到全体参与方的认可并签名,同时将根合约中相应的链下合约的hash值更新;对参与方的增删,也必须得到全体参与方的认可并签名,同时将根合约中相应的参与方的公钥地址进行有效或者失效的状态更新。

而在授权代理人时,各参与方需要通过签名授权,并在更合约中更新相应的代理人的公钥地址。

一种基于区块链合约层的链下执行交易方法,在本实施例中,为了更好地理解本发明的实质,下面用实例来详细说明本发明的技术内容,但本发明的内容并不局限于此。

如图3至图6所示,在以太坊区块链中,有两个参与方u1和参与方u2要进行一个“预测气温”的游戏,如果当天最高气温低于25℃,则参与方u1账户给参与方u2转1个积分,反之参与方u2账户给参与方u1转1个积分,十天为止,之后按照参与方u1和参与方u2的账户余额将积分转出给参与方u1和参与方u2,完成交易。

基于区块链合约层的链下执行交易方法包括以下步骤:

步骤1:参与方共同拟定智能合约,并确定获取外部数据的预言机合约,创建状态通道,制成特定客户端;

智能合约包括部署在链上的根合约和部署在链下的链下合约,链下合约中包括交易规则和交易次数;

在本实施例中,将链下合约称为游戏合约,智能合约包括在链上运行的根合约和在链下运行的游戏合约,随后参与方u1或参与方u2将根合约和游戏合约通过平台给定的接口上传;平台获得合约后,将两个合约转化成java版的智能合约(可用web3j转化),并将两个java智能合约集成入已经开发好的java客户端,制成特定的“预测气温”客户端;

步骤2:参与方将根合约部署到工作平台提供的公链上,并将约定好的积分转入根合约中,通过特定客户端将链下合约部署到公链下,状态通道开启;

参与方u1或参与方u2将根合约部署到工作平台提供的公链上,工作平台为整个系统的运行环境。随后参与方u1和参与方u2都往根合约中转入事先约定好的积分,使根合约生效,随后参与方u1和参与方u2各下载特定的“预测气温”客户端,通过“预测气温”客户端向平台提供的区块链虚拟机(如evm)接口将游戏合约部署至区块链虚拟机上,此时状态通道开启,随后调用虚拟机中的合约即可发起交易,虚拟机负责保存每次交易的结果。如果无法提供区块链虚拟机,则可在平台提供相应的区块链接口供客户端调用,只要能实现客户对智能合约的部署及调用即可。

步骤3:预言机合约获取外部数据并上传至链下合约,根据链下合约中拟定的规则,改变参与方的余额状态;

预言机合约可以理解成线上的某个合约,这个合约用于提供外部数据,在根合约和链下合约拟定之时需在合约内容中确定好线上的哪个合约作为外部数据的提供方。

在这个“预测气温”的游戏中预言机合约可表现为一个“天气合约”每天固定时间定好当天的最高气温,而客户端也在每天的固定时间自动将“天气合约”中的最高气温值上传至虚拟机中的游戏合约,游戏合约中的某个函数接口接收这个天气数值,根据之前拟定的规则,改变参与方u1和参与方u2的余额状态;

步骤4:参与方通过签名确认单次交易结果;包括以下具体步骤:

若参与方对每次交易结果都认可,则签名认可;

若参与方对某次交易结果有异议,则签名不认可,需对交易结果进行仲裁。

仲裁步骤包括以下步骤:

s1:由其中一方将链下合约部署至公链上作为仲裁合约,并确定仲裁合约有效,根合约事先存有链下合约的hash值,将仲裁合约的地址和hash值发送至根合约,根合约判断hash值是否有效,若有效,则允许仲裁合约并认可仲裁结果,若无效,则不允许所述仲裁合约并不认可仲裁结果。

s2:将有异议的交易结果和本次获取的外部数据发送至根合约;

s3:根合约调用冲裁合约,并将有异议的交易结果和本次获取的外部数据传入仲裁合约内进行仲裁;

s4:根合约获取仲裁合约的仲裁结果得到此次交易结果。

步骤5:重复执行步骤3和步骤4直至完成链下合约中拟定的交易次数,得到最终交易结果,参与方将最终交易结果发送至根合约,根合约根据交易结果将积分转发至交易方账户中,所述状态通道关闭。

在本实施例中,参与方u1和参与方u2双方各自用私钥对交易结果进行签名,若参与方u1和参与方u2双方都认可结果,则签名认可。若双方每次都对当天交易结果认可,则状态通道将循环执行步骤3和步骤4的操作,直到执行完之前游戏合约中拟定的次数为止,得到最终的交易结果。

若参与方u1或参与方u2对某天的交易结果有异议,则其中一方将游戏合约部署至公链上作为仲裁合约,并将合约的地址和hash值送至根合约,根合约判断hash值是否有效,有效则允许仲裁并认可仲裁合约的仲裁结果。有异议的一方将当天的交易结果(即交易完成前的双方余额状态值)和当天最高温度值发送至根合约,根合约调用已经部署在链上的仲裁合约,并将当天的交易结果和当天最高温度值传入仲裁合约中进行仲裁,根据仲裁结果得到此次交易结果。之后状态通道将循环执行步骤3和步骤4的操作,若对交易结果认可则继续重复步骤3和步骤4的操作,若对交易结果不认可,则再次进行仲裁,直到执行完之前游戏合约中拟定的次数为止,得到最终的交易结果。

之后参与方u1或参与方u2将最终的交易结果发送至根合约(结果包括参与方u1和参与方u2的最终余额),根合约根据交易结果将积分转发至参与方u1和参与方u2的账户中,整个交易结束,状态通道关闭。

本发明的基于区块链合约层的链下执行交易方法及系统,将区块链中的合约层单独剥离出来,具体的交易过程放到链下进行,把最终的交易结果推送到链上进行结算,既能减少区块链网络的延时对繁杂的交易过程带来的影响,又能减少交易过程中产生的手续费,还能对具体的交易细节进行保密。

需要指出的是,上述较佳实施例仅为说明本发明的技术构思及特点,其目的在于让熟悉此项技术的人士能够了解本发明的内容并据以实施,并不能以此限制本发明的保护范围。凡根据本发明精神实质所作的等效变化或修饰,都应涵盖在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1