一种基于联盟链的数字资产交易方法与流程

文档序号:23810512发布日期:2021-02-03 12:33阅读:211来源:国知局
一种基于联盟链的数字资产交易方法与流程

[0001]
本发明属于数字资产交易技术领域,更为具体地讲,涉及一种基于联盟链的数字资产交易方法。


背景技术:

[0002]
区块链(block chain)是一种将数据记录以区块的形式组织,并将区块按时间顺序排列,区块之间通过前一区块的哈希值首尾相连组合而成的块链式数据结构。区块链本质上是一种采用密码学算法保证区块中的记录不被篡改和伪造的分布式账本技术(distributed ledger technology,dlt)。区块链技术具有去中心化、公开透明、难以串改、数据可溯源等特性,使得区块链技术已经在众多的领域中的到研究和应用。智能合约(smart contract)指一种能够在区块链上自动执行的程序。开发人员使用智能合约来构建区块链应用,多用于构建后端业务服务。
[0003]
数字资产(digital asset)是一种数字化的对象,这些数字化的对象通过区块链智能合约来定义和管理,代表特定的资产或者服务权利。数字资产包括虚拟资产和实体资产的数字化,区块链技术可用于定义、发行和管理这些数字资产。从技术上来看,实现数字资产的典型方案是借助智能合约(smart contract)技术在区块链平台上创建和维护数字资产合约,在合约中定义资产的信息、功能以及其他要素,用户通过与合约的交互来使用这些数字资产。
[0004]
随着区块链上运行的应用的增多,数字资产的种类和数量也在飞速增长,不同数字资产之间的交易需求也就自然而然地产生了。目前针对区块链领域数字资产的交易方法主要分为两类:
[0005]
传统方法(中心化交易方法):这类交易方法与传统证券交易方法类似,用户首先在交易所开设交易账户(交易所用此账户托管用户的资产),然后用户通过交易账户在市场内提交委托订单,交易所的撮合系统基于用户委托撮合交易,最后基于交易结果输出市场行情并为用户清算和结算交易资产。
[0006]
公链方法(去中心化交易方法):公链方法在传统方法提供的交易流程的基础上,通过用户(或者合约)管理交易资金以及交易过程上链这两个操作来提升用户的资产安全性和交易透明度。其核心在于用户直接管理自己的资金,不需要将其交给任何中心化机构进行托管,这也是这类方法去中心化的体现。
[0007]
比较这两种数字资产交易方法可以发现,传统方法具有中心化特征,优势在于成熟的用户体验和交易效率,劣势在于用户资金不安全和交易过程不透明。公链方法具有去中心化特征,优势在于用户资金的安全性和交易过程足够透明,劣势在于交易速度慢和用户体验极差,大多数方案还处于研发阶段。


技术实现要素:

[0008]
本发明的目的在于克服现有技术的不足,提供一种基于联盟链的数字资产交易方
法,借助联盟链实现在任意可编程区块链之间的数字资产交易。
[0009]
为实现上述发明目的,本发明基于联盟链的数字资产交易方法包括以下步骤:
[0010]
s1:由提供数字资产交易服务的供应商借助联盟链技术组建数字资产交易联盟,需要进行数字资产交易的用户通过对应供应商所供的联盟链节点接入数字资产交易联盟以完成其数字资产交易,其中:
[0011]
在用户所在的区块链上设置抵押合约,用于完成用户的资产抵押以及交易的结算;
[0012]
在联盟链中设置数字资产交易系统,数字资产交易系统中设置有若干用于数字资产交易的智能合约,包括:
[0013]
账户合约,用于管理用户交易账户;
[0014]
代币合约,用于管理在交易系统中使用的镜像代币,包括镜像代币的创建、冻结、更新、销毁;
[0015]
充值合约,用于为用户充值镜像代币;
[0016]
撮合合约,管理用户之间数字资产交易的撮合过程,在撮合合约中设置用于按照设定的撮合规则和定价规则对订单进行撮合的撮合引擎;
[0017]
结算合约,用于完成用户数字资产的结算;
[0018]
s2:需要进行数字资产交易的用户其需要交易的数字资产在数字资产交易系统中创建订单,具体步骤包括:
[0019]
s2.1:用户向数字资产交易系统发出充值请求,并将账户信息和充值代币的代币信息发送给数字资产交易系统,数字资产交易系统进行如下处理:
[0020]
s2.1.1:若用户是第一次进行交易,则数字资产交易系统调用账户合约为用户创建交易账户并绑定原区块链上的账户,然后进入步骤s2.1.2,如果用户的交易账户已经存在,直接进入步骤s2.1.2;
[0021]
s2.1.2:账户合约向数字资产交易系统返回账户创建成功信息;
[0022]
s2.1.3:数字资产交易系统根据收到的代币信息调用代币合约创建镜像代币;
[0023]
s2.1.4:代币合约向数字资产交易系统返回合约创建成功信息;
[0024]
s2.2:数字资产交易系统向用户通知创建账户结果;
[0025]
s2.3:用户向其区块链上的抵押合约转移所期望交易数量的代币,抵押合约在收到代币后首先调用数字资产交易系统的代币合约对代币信息进行验证,如果代币合约验证成功则向抵押合约发送验证成功信息,否则将代币退回到原账户,协议结束,抵押合约在代币信息验证成功后进入步骤s2.4;
[0026]
s2.4:抵押合约按照数字资产交易系统设定的冻结期对用户转入的代币执行冻结操作,之后为用户生成抵押收据,并将抵押收据id发送给用户;
[0027]
s2.5:用户向位于数字资产交易系统的充值合约提交抵押收据id,充值合约为用户充值镜像代币,充值步骤包括:
[0028]
s2.5.1:充值合约在收到抵押收据id后首先对抵押收据进行验证,充值合约利用抵押收据id向抵押合约查询抵押收据,之后验证收据信息和收据状态,若验证失败则协议结束,验证成功则进入步骤s2.5.2;
[0029]
s2.5.2:抵押合约向充值合约返回抵押收据验证成功信息;
[0030]
s2.5.3:充值合约通过代币合约根据用户抵押的代币数量按照1:1的比例向用户的交易账户发行镜像代币;
[0031]
s2.5.4:代币合约向充值合约发送充值成功信息;
[0032]
s2.6:充值合约向用户反馈充值结果;
[0033]
s3:用户使用数字资产交易系统为其发行的代币创建委托订单,然后数字资产交易系统对用户订单进行撮合,匹配交易,具体步骤包括:
[0034]
s3.1:用户通过其交易账户向数字资产交易系统的撮合合约提交订单,订单内容包括交易对信息、买卖方向、买卖数量以及买卖价格,撮合合约在收到用户请求后用户创建订单,包括以下步骤:
[0035]
s3.1.1:撮合合约对订单进行验证,包括交易对状态、订单状态和订单信息的验证,若验证失败则流程结束,验证通过进入步骤3.1.2;
[0036]
s3.1.2:撮合合约调用账户合约对账户进行验证,包括账户状态是否可用以及交易账户中是否有充足的镜像代币,若验证失败则流程结束,若验证通过则进入步骤s3.1.3;
[0037]
s3.1.3:账户合约向撮合合约返回账户验证成功信息;
[0038]
s3.1.4:撮合合约调用代币合约根据订单内容冻结用户交易账户中相应数量的代币,之后为用户创建订单,同时将订单数据上链;
[0039]
s3.1.5:代币合约向撮合合约返回冻结成功信息;
[0040]
s3.2:撮合合约将为该订单创建的订单id返回给用户;
[0041]
s3.3:用户向撮合合约发送撮合请求,撮合合约执行下面的步骤完成订单撮合:
[0042]
s3.3.1:撮合合约将订单送入撮合引擎,撮合引擎按照设定的撮合规则和定价规则对订单进行撮合;
[0043]
s3.3.2:撮合引擎在撮合完成后向撮合合约返回交易数据;
[0044]
s3.3.3:撮合合约为该交易创建交易id,然后调用代币合约更新相关订单的链上状态并将交易数据上链;
[0045]
s3.3.4:代币合约向撮合合约返回更新完成信息。
[0046]
s4:为撮合完成的交易双方结算数字资产,具体步骤包括:
[0047]
s4.1:用户在收到交易数据后向数字资产交易系统的结算合约提供交易id,请求数字资产交易系统对该用户的交易进行清算,清算过程包括以下步骤:
[0048]
s4.1.1:结算合约利用用户提供的交易id向撮合合约查询交易数据,利用交易数据获取形成交易的买卖订单以及用于生成订单的抵押收据,数字资产交易系统依次验证用户的交易数据、订单数据和抵押收据数据,若验证失败则协议结束,若验证成功则进入步骤s4.1.2;
[0049]
s4.1.2:撮合合约向结算合约发送验证成功消息,并将交易数据、订单数据和抵押收据数据反馈给结算合约;
[0050]
s4.1.3:结算合约调用代币合约根据交易双方各自的抵押收据将双方交易账户中冻结的镜像代币全部销毁;
[0051]
s4.1.4:代币合约向结算合约发送销毁完成消息;
[0052]
s4.1.5:结算合约完成该交易的清算后,调用撮合合约将该交易的状态设置为“已清算”。
[0053]
s4.1.6:撮合合约向结算合约发送更新成功消息。
[0054]
s4.2:结算合约将清算结果通知给交易双方用户;
[0055]
s4.3、用户收到交易清算结果后,在对方代币的抵押冻结期前的任意时刻,向对方用户所在区块链的抵押合约发送交易id,请求为其完成交易结算,结算的具体步骤包括:
[0056]
s4.3.1:对方用户区块链的抵押合约根据用户提供的交易id向数字资产交易系统中的结算合约查询交易数据,然后验证交易的状态以及本地的交易结算记录,若交易状态为“已清算”且本地没有该用户关于该交易的结算记录则验证成功,进入步骤s4.3.2,否则协议结束;
[0057]
s4.3.2:结算合约向对方用户区块链上的抵押合约发送验证成功消息,并将交易数据反馈至对方用户区块链上抵押合约;
[0058]
s4.3.3:对方用户区块链上的抵押合约基于交易数据和对方用户抵押收据计算需要为用户结算的代币数量,然后向用户在对方用户区块链上的收款账户转移该数量的代币,剩余代币退回对方用户账户中,结算完成后对方用户区块链上的抵押合约将对用户的结算结果更新至本地结算记录;
[0059]
s4.3.4:对方用户区块链上的抵押合约向结算合约发送用户的结算成功消息;
[0060]
s3.3.5:结算合约向用户发送结算完成消息。
[0061]
本发明基于联盟链的数字资产交易方法,由提供数字资产交易服务的供应商借助联盟链技术组建数字资产交易联盟,需要进行数字资产交易的用户通过对应供应商所供的联盟链节点接入数字资产交易联盟以完成其数字资产交易,在进行数字资产交易时首先将用户的数字资产转化为数字资产交易系统的订单,然后将用户创建的委托通过链上撮合的方式转化为成交的交易,再为交易双方进行交易结算。本发明在联盟链这一技术的帮助下,将数字资产的交易过程分为代币抵押、订单撮合和交易结算三个阶段,分别实现了用户数字资产交易过程中的需求匹配、价格发现和公平交易,能够实现任意可编程区块链之间的数字资产交易。
附图说明
[0062]
图1是本发明基于联盟链的数字资产交易方法的具体实施方式流程图;
[0063]
图2是本实施例中资产抵押的流程图;
[0064]
图3是本实施例中订单撮合的流程图;
[0065]
图4是本实施例中交易结算的流程图。
具体实施方式
[0066]
下面结合附图对本发明的具体实施方式进行描述,以便本领域的技术人员更好地理解本发明。需要特别提醒注意的是,在以下的描述中,当已知功能和设计的详细描述也许会淡化本发明的主要内容时,这些描述在这里将被忽略。
[0067]
实施例
[0068]
图1是本发明基于联盟链的数字资产交易方法的具体实施方式流程图。如图1所示,本发明基于联盟链的数字资产交易方法具体步骤包括:
[0069]
s101:联盟链设置:
[0070]
由提供数字资产交易服务的供应商借助联盟链技术组建数字资产交易联盟,需要进行数字资产交易的用户通过对应供应商所供的联盟链节点接入数字资产交易联盟以完成其数字资产交易,其中:
[0071]
在用户所在的区块链上设置抵押合约,用于完成用户的资产抵押以及交易的结算;
[0072]
在联盟链中设置数字资产交易系统,数字资产交易系统中设置有若干用于数字资产交易的智能合约,包括:
[0073]
账户合约,用于管理用户交易账户;
[0074]
代币合约,用于管理在交易系统中使用的镜像代币,包括镜像代币的创建、冻结、更新、销毁;
[0075]
充值合约,用于为用户充值镜像代币;
[0076]
撮合合约,用于管理用户之间数字资产交易的撮合过程,在撮合合约中设置用于按照设定的撮合规则和定价规则对订单进行撮合的撮合引擎;
[0077]
结算合约,用于完成用户数字资产的结算。
[0078]
经过以上智能合约的配合工作,即可完成用户间的数字资产交易。
[0079]
s102:资产抵押:
[0080]
需要进行数字资产交易的用户将其数字资产转化为数字资产交易系统的订单。
[0081]
下面以区块链a上的用户alice第一次向数字资产交易系统充值10枚数字资产的过程为例介绍资产抵押阶段的实施过程。为便于过程描述,这里使用cbdats表示过程中使用的数字资产交易系统(consortium blockchain digital asset trading system)。图2是本实施例中资产抵押的流程图。如图2所示,本实施例中资产抵押的具体步骤包括:
[0082]
2.1、创建账户:区块链a上的用户alice向数字资产交易系统cbdats发出充值请求,用户alice将账户信息和充值代币的代币信息发送给数字资产交易系统cbdats,数字资产交易系统cbdats进行如下处理:
[0083]
2.1.1、创建交易账户:若用户alice是第一次进行交易,则数字资产交易系统cbdats调用数字资产交易系统的账户合约为用户alice创建交易账户并绑定原区块链上的账户,然后进入步骤2.1.2,如果用户的交易账户已经存在,直接进入步骤2.1.2。
[0084]
2.1.2、账户创建成功:账户合约向数字资产交易系统cbdats返回账户创建成功信息。
[0085]
21.3、创建镜像代币:数字资产交易系统cbdats根据收到的代币信息调用代币合约创建镜像代币。
[0086]
2.1.4、合约创建成功:代币合约向数字资产交易系统cbdats返回合约创建成功信息。
[0087]
2.2、创建完成:数字资产交易系统cbdats向用户alice通知创建账户结果。
[0088]
2.3、抵押资产:用户alice向其区块链上的抵押合约转移预设数量(此处为10枚)的代币,抵押合约在收到代币后首先调用数字资产交易系统cbdats的代币合约对代币信息进行验证,如果代币合约验证成功则向抵押合约发送验证成功信息,否则将代币退回到原账户,协议结束,抵押合约在代币信息验证成功后进入步骤2.4。
[0089]
2.4、抵押确认:抵押合约按照数字资产交易系统cbdats设定的冻结期对用户
alice转入的代币执行冻结操作(冻结期内用户无法取回合约内的代币,冻结期满后用户可以通过提交抵押收据的方式取回抵押的代币),之后为用户生成抵押收据,并将抵押收据id发送给用户alice。
[0090]
2.5、充值代币:用户alice向位于数字资产交易系统cbdats的充值合约提交抵押收据id,充值合约为用户充值镜像代币,充值步骤包括:
[0091]
2.5.1、验证收据:充值合约在收到抵押收据id后首先对抵押收据进行验证,充值合约利用抵押收据id向抵押合约查询抵押收据,之后验证收据信息和收据状态,若验证失败则协议结束,验证成功则进入步骤2.5.2;
[0092]
2.5.2、验证成功:抵押合约向充值合约返回抵押收据验证成功信息。
[0093]
2.5.3、为用户充值镜像代币:充值合约通过代币合约根据用户抵押的代币数量按照1:1的比例向用户alice的交易账户发行镜像代币。
[0094]
2.5.4、充值成功:代币合约向充值合约发送充值成功信息。
[0095]
2.6、充值确认:充值合约向用户alice反馈充值结果。用户alice在得知充值成功后可以使用这些代币创建代币交易订单。若cbdats未能成功发行镜像代币,则alice可以在代币抵押冻结期满后从抵押合约取回自己的代币。
[0096]
经过上述步骤的操作,用户用于交易的数字资产再转化为了系统内的用于交易的数字代币,这些数字代币用于交易系统内部创建订单和订单撮合。
[0097]
s103:订单撮合:
[0098]
用户使用数字资产交易系统为其发行的代币创建委托订单,然后数字资产交易系统对用户订单进行撮合,匹配交易。
[0099]
在订单撮合过各中完成订单和交易上链,供之后交易进行结算和审查。下面以用户alice发起限价委托订单、采用链上撮合方式对订单进行撮合并成功生成交易的过程为例介绍订单撮合的实施过程。图3是本实施例中订单撮合的流程图。如图3所示,本实施例中订单撮合的具体步骤包括:
[0100]
3.1、创建订单:用户alice通过其交易账户向数字资产交易系统cbdats的撮合合约提交订单,订单内容包括交易对信息、买卖方向、买卖数量以及买卖价格,撮合合约在收到用户请求后用户创建订单,包括以下步骤:
[0101]
3.1.1、验证订单:撮合合约对订单进行验证,包括交易对状态、订单状态和订单信息的验证,若验证失败则流程结束,若验证通过进入步骤3.1.2;
[0102]
3.1.2、验证账户:撮合合约调用账户合约对账户进行验证,包括账户状态是否可用以及交易账户中是否有充足的镜像代币,若验证失败则流程结束,若验证通过则进入步骤3.1.3;
[0103]
3.1.3、验证成功:账户合约向撮合合约返回账户验证成功信息;
[0104]
3.1.4、冻结代币:撮合合约调用代币合约根据订单内容冻结用户交易账户中相应数量的代币,之后为用户创建订单,同时将订单数据上链;
[0105]
3.1.5、冻结成功:代币合约向撮合合约返回冻结成功信息。
[0106]
3.2、创建成功:撮合合约将为该订单创建的订单id返回给用户alice;
[0107]
3.3:订单撮合:用户alice向撮合合约发送撮合请求,撮合合约执行下面的步骤完成订单撮合:
[0108]
3.3.1、送入订单:撮合合约将订单送入撮合引擎,撮合引擎按照设定的撮合规则和定价规则对订单进行撮合。当订单全部成交或者部分成交时,数字资产交易系统产生一条或者多条成交记录,这些记录就是交易。
[0109]
3.3.2、撮合完成:撮合引擎在撮合完成后向撮合合约返回交易数据。
[0110]
3.3.3、更新订单状态:撮合合约为该交易创建交易id,然后调用代币合约更新相关订单的链上状态并将交易数据上链;
[0111]
3.3.4、更新完成:代币合约向撮合合约返回更新完成信息。
[0112]
经过上述步骤的操作,用户的数字资产交易需求以委托订单的形式被交易系统进行撮合,撮合得到交易,供下一阶段结算资产。
[0113]
目前用户的数字资产交易订单一般可以分为限价订单、市价订单及其变种以及各种订单的混合,订单撮合方法一般包括连续竞价撮合、集合竞价撮合以及两种撮合方法的混合使用。这些订单类型和撮合方法是已有的技术内容,这些技术可以应用于本发明之中,在此不再赘述。
[0114]
s104:交易结算:
[0115]
为撮合完成的交易双方结算数字资产。
[0116]
下面用户alice与用户bob基于撮合协议达成的交易向系统申请交易结算的过程为例对交易结算的过程进行说明。由于结算过程中不要求交易双方同时进行操作,因此在这里假设结算过程中的请求都由用户alice主动发起。图4是本实施例中交易结算的流程图。如图4所示,本实施例中交易结算的具体步骤包括:
[0117]
4.1、请求清算:用户alice在收到交易数据后向数字资产交易系统cbdats的结算合约提供交易id,请求数字资产交易系统cbdats对用户alice的交易进行清算,清算过程包括以下步骤:
[0118]
4.1.1验证交易:结算合约利用用户alice提供的交易id向撮合合约查询交易数据,利用交易数据获取形成交易的买卖订单以及用于生成订单的抵押收据,数字资产交易系统cbdats依次验证用户的交易数据、订单数据和抵押收据数据,若验证失败则协议结束,若验证成功则进入步骤4.1.2;
[0119]
4.1.2、验证成功:撮合合约向结算合约发送验证成功消息,并将交易数据、订单数据和抵押收据数据反馈给结算合约;
[0120]
4.1.3、销毁双方冻结的代币:结算合约调用代币合约根据交易双方alice与bob各自的抵押收据将双方交易账户中冻结的镜像代币全部销毁;
[0121]
4.1.4、销毁完成:代币合约向结算合约发送销毁完成消息;
[0122]
4.1.5、更新交易状态:结算合约完成该交易的清算后,调用撮合合约将该交易的状态设置为“已清算”。
[0123]
4.1.6、更新成功:撮合合约向结算合约发送更新成功消息。
[0124]
4.2、清算完成:结算合约将清算结果通知给交易双方用户,即alice与bob。
[0125]
4.3、请求结算:用户alice收到交易清算结果后,在对方代币的抵押冻结期前的任意时刻,向对方用户,即用户bob所在区块链的抵押合约发送交易id,请求为其完成交易结算,结算的具体步骤包括:
[0126]
4.3.1、验证交易:对方用户区块链的抵押合约根据用户alice提供的交易id向数
字资产交易系统cbdats中的撮合合约查询交易数据,然后验证交易的状态以及本地的交易结算记录,若交易状态为“已清算”且本地没有用户alice关于该交易的结算记录则验证成功,进入步骤4.3.2,否则协议结束;
[0127]
4.3.2、验证成功:撮合合约向对方用户区块链上的抵押合约发送验证成功消息,并将交易数据反馈至对方用户区块链上抵押合约;
[0128]
4.3.3、基于对方抵押代币结算交易:对方用户区块链上的抵押合约基于交易数据和对方用户bob的抵押收据计算需要为用户alice结算的代币数量,然后向用户alice在对方用户区块链上的收款账户转移该数量的代币,剩余代币退回对方用户bob账户中。
[0129]
4.3.4、更新本地结算记录:结算完成后对方用户区块链上的抵押合约将对用户alice的结算结果更新至本地结算记录,防止重复结算。
[0130]
4.4结算完成:对方用户区块链上的抵押合约向用户alice发送结算完成消息。
[0131]
很显然,当交易双方位于同一区块链中,使用同一个抵押合约,那么其结算过程相对简单,而对于需要跨链执行的交易(即交易双方分属两个区块链),需要由联盟链在交易结算过程中扮演中继链的角色,由用户和智能合约共同完成资产交换过程。
[0132]
尽管上面对本发明说明性的具体实施方式进行了描述,以便于本技术领域的技术人员理解本发明,但应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1