一种区块链中可信时间服务预言机的方法和系统

文档序号:37386673发布日期:2024-03-22 10:38阅读:14来源:国知局
一种区块链中可信时间服务预言机的方法和系统

本发明涉及区块链,具体涉及一种区块链中可信时间服务预言机的方法和系统。


背景技术:

1、区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构,以密码学方式保证不可篡改和不可伪造的分布式账本,区块链系统中各个节点通过共识算法达成数据一致性。其中,以以太坊为代表的区块链2.0引入智能合约概念,并为智能合约提供虚拟运行环境,智能合约是存储在区块链上,满足预设条件时可以自动执行、不需要第三方参与即可得到确定结果的程序,智能合约已经在保险、文娱、能源、教育、医疗、知识产权、政务、司法等领域得到广泛应用。为了保证调用智能合约交易在各节点验证时的一致性,智能合约不能通过网络访问包括当前时间在内的真实世界的数据,只能通过预言机 (oracle mechanism) 将真实世界的数据通知给智能合约。以以太坊为例,通过向智能合约地址发送一个交易即可触发智能合约执行及相关操作,每隔一段时间,这些交易以及这些交易所引起的智能合约账户状态和相关外部账户状态的变化,被获得记账权的节点打包到区块,区块以哈希指针的方式被串连成链。

2、以太坊交易数据结构中包含交易类型(type)、交易发起方交易计数(nonce)、向目标账户转账的金额(value)、交易接收方地址(receiveaddress)、为交易付出的燃料价格(gasprice)、为交易付出的燃料数(gas)、通过交易调用合约的调用数据(data)、交易签名结构体(vrs)等交易相关的重要信息。以太坊区块数据结构分为区块头和区块体,区块头包含父区块哈希(parenthash)、叔父区块哈希(unclehash)、区块创建者账户地址(coinbase)、账户状态树根哈希(stateroot)、交易树根哈希(txhash)、收据树根哈希(receipthash)、区块难度系数(difficulty)、目标值(nonce)、随机值(mixhash)、区块生成时间(time);区块体包含当前区块的所有交易。

3、通过对以太坊智能合约运行机制以及区块数据结构、交易数据机构的分析,区块链只存储了交易的类型、参与双方、转账金额、合约调用数据等与交易直接相关的信息,父区块哈希、叔父区块哈希、区块创建者账户地址、账户状态树根哈希、交易树根哈希、收据树根哈希、区块难度系数、目标值、区块生成时间等区块重要信息。存储的交易信息中没有包含交易的发生时间,存储的区块生成时间来自于记账节点的本地时间。

4、区块链现有机制存在以下几个与实践相关的问题及缺陷:

5、(1)没有记录交易的真实发生时间,只在区块头中记录了区块生成时间,且区块生成时间来自于获得记账权节点的本地时间,该时间存在被记账节点篡改的可能性,即使记账节点记录了区块生成的真实时间,这个时间并不是交易发生的准确时间,无法对交易发生的先后顺序进行判断。

6、(2)智能合约没有记录合约调用的真实时间或者准确的真实时间,也不能获取真实世界的准确时间,无法有效控制与时间密切相关的操作,比如智能合约保险中,由于智能合约不能获取真实世界的准确时间,可能出现投保截止时间之后仍然能成功投保的情况。

7、因此,在区块链中进行可信的时间管理,是区块链以及智能合约应用进一步推广的重要影响因素。


技术实现思路

1、本发明提供一种区块链中可信时间服务预言机的方法和系统,旨在解决区块链交易时间不可信、区块生成时间不可信以及区块链智能合约如何获取可信时间的问题。

2、本发明提供一种区块链中可信时间服务预言机的方法和系统,旨在解决区块链交易时间不可信、区块生成时间不可信以及区块链智能合约如何获取可信时间的问题。

3、第一方面,本发明实施例提供的一种区块链中可信时间服务预言机的系统,包括位于客户端侧的应用客户端和服务端侧的区块链内和区块链外,所述区块链内包括业务智能合约、可信时间预言机和区块链节点,所述区块链外包括可信时间服务节点和授时中心;

4、所述应用客户端,用于发起区块链交易或智能合约调用,并通过所述可信时间服务节点为所述区块链交易添加交易发生的可信时间;

5、所述可信时间服务节点,用于为所述应用客户端发起的区块链交易或智能合约调用签发可信时间戳,并周期性向所述可信时间预言机发送可信当前时间;

6、所述授时中心,用于为所述可信时间服务节点提供标准时间;

7、所述业务智能合约,用于为应用提供核心业务逻辑处理;

8、所述可信时间预言机,用于为所述业务智能合约提供可信时间服务,所述可信时间预言机记录有可信时间服务网络的地址、当前时间、可信当前时间、可信上一时间以及可信当前时间与可信上一时间的时间间隔;

9、所述区块链节点,用于对包括交易时间在内的区块链交易进行有效性验证,并在生成区块的同时向所述可信时间服务节点申请区块生成的可信时间。

10、作为第一方面的一个具体实施方式,所述可信时间服务节点,具体用于,

11、对当前时间进行签名,生成包含当前时间及签名的可信当前时间;

12、生成可信时间预言机智能合约调用数据和包括可信时间更新调用数据的信标交易,并计算除交易时间与可信交易时间之外信标交易中第一剩余信息的哈希值;对所述信标交易进行可信时间签名,在所述信标交易中记录交易时间和可信交易时间签名;并向所述区块链节点周期性广播所述信标交易;

13、所述区块链节点,具体用于,验证所述信标交易的可信交易时间,根据所述信标交易中的可信时间预言机调用数据调用可信时间预言机的更新接口,并记录所述可信时间预言机的更新接口调用的结果;

14、所述可信时间预言机,具体用于,验证所述可信时间预言机调用数据中来自所述可信时间服务节点的可信当前时间,通过验签后将可信时间预言机的上一时间设置为当前时间,可信上一时间设置为可信当前时间,当前时间设置为来自可信时间服务的当前时间,可信当前时间设置为来自可信时间服务的可信当前时间。

15、作为第一方面的一个具体实施方式,所述应用客户端,具体用于,根据业务场景生成业务智能合约调用数据,

16、计算除交易时间及可信交易时间之外的交易第二剩余信息的哈希值,将所述交易第二剩余信息的哈希值作为参数发送给所述可信时间服务节点;

17、所述可信时间服务节点,具体用于,根据所述交易第二剩余信息的哈希值及当前时间对交易进行可信时间签名,并返回交易时间及可信交易时间签名给所述应用客户端;

18、所述应用客户端,还用于,设置交易中的交易时间为来自可信时间服务的交易时间,设置可信交易时间为来自可信时间服务的可信交易时间签名,并向区块链节点广播智能合约交易;

19、所述区块链节点,还用于,验证业务智能合约交易的可信交易时间,根据业务智能合约交易中的调用数据调用业务智能合约的接口;

20、所述业务智能合约,还用于,调用可信时间预言机接口获取并返回可信当前时间,以及比较业务智能合约调用交易的交易时间与可信时间预言机返回的可信当前时间,根据比较结果进入不同分支处理业务逻辑;

21、所述区块链节点,还用于记录业务智能合约的调用结果。

22、作为第一方面的一个具体实施方式,所述区块链节点,还用于通过设置的可信打包时间记录经过可信时间服务节点签名的区块产生时间以及通过设置的交易时间和可信交易时间记录经过可信时间服务节点签名的交易发生时间。

23、作为第一方面的一个具体实施方式,所述区块链节点,具体用于,将信标交易作为区块的第一笔交易,其余交易按照可信时间排序,进行新区块的打包,并计算除打包时间与可信打包时间之外区块第三剩余信息的哈希值;将所述区块第三剩余信息的哈希值作为参数发送给可信时间服务节点,以获取区块打包时间及可信打包时间签名;

24、所述可信时间服务节点,具体用于,对区块进行可信时间签名,返回区块打包时间及可信区块打包时间签名给所述区块链节点;

25、所述区块链节点,具体用于,在新区块中记录打包时间及可信打包时间。

26、作为第一方面的一个具体实施方式,所述可信时间服务节点与所述授时中心通过在所述区块链外建立的可信时间网络保持时间同步。

27、第二方面,本发明实施例提供的一种区块链中可信时间服务预言机的方法,应用于区块链中可信时间服务预言机的系统,所述系统包括位于客户端侧的应用客户端和服务端侧的区块链内和区块链外,所述区块链内包括业务智能合约、可信时间预言机和区块链节点,所述区块链外包括可信时间服务节点和授时中心;

28、所述方法包括以下步骤:

29、所述应用客户端发起区块链交易或智能合约调用,并通过所述可信时间服务节点为所述区块链交易添加交易发生的可信时间;

30、所述可信时间服务节点为所述应用客户端发起的区块链交易或智能合约调用签发可信时间戳,并周期性向所述可信时间预言机发送可信当前时间;

31、所述授时中心为所述可信时间服务节点提供标准时间;

32、所述业务智能合约为应用提供核心业务逻辑处理;

33、所述可信时间预言机为所述业务智能合约提供可信时间服务,所述可信时间预言机记录有可信时间服务网络的地址、当前时间、可信当前时间、可信上一时间以及可信当前时间与可信上一时间的时间间隔;

34、所述区块链节点对包括交易时间在内的区块链交易进行有效性验证,并在生成区块的同时向所述可信时间服务节点申请区块生成的可信时间。

35、作为第二方面的一个具体实施方式,所述可信时间服务节点对当前时间进行签名,生成包含当前时间及签名的可信当前时间;

36、生成可信时间预言机智能合约调用数据和包括可信时间更新调用数据的信标交易,并计算除交易时间与可信交易时间之外信标交易中第一剩余信息的哈希值;对所述信标交易进行可信时间签名,在所述信标交易中记录交易时间和可信交易时间签名;并向所述区块链节点周期性广播所述信标交易;

37、所述区块链节点验证所述信标交易的可信交易时间,根据所述信标交易中的可信时间预言机调用数据调用可信时间预言机的更新接口,并记录所述可信时间预言机的更新接口调用的结果;

38、所述可信时间预言机验证所述可信时间预言机调用数据中来自所述可信时间服务节点的可信当前时间,通过验签后将可信时间预言机的上一时间设置为当前时间,可信上一时间设置为可信当前时间,当前时间设置为来自可信时间服务的当前时间,可信当前时间设置为来自可信时间服务的可信当前时间。

39、作为第二方面的一个具体实施方式,所述应用客户端根据业务场景生成业务智能合约调用数据,计算除交易时间及可信交易时间之外的交易第二剩余信息的哈希值,将所述交易第二剩余信息的哈希值作为参数发送给所述可信时间服务节点;

40、所述可信时间服务节点根据所述交易第二剩余信息的哈希值及当前时间对交易进行可信时间签名,并返回交易时间及可信交易时间签名给所述应用客户端;

41、所述应用客户端设置交易中的交易时间为来自可信时间服务的交易时间,设置可信交易时间为来自可信时间服务的可信交易时间签名,并向区块链节点广播智能合约交易;

42、所述区块链节点验证业务智能合约交易的可信交易时间,根据业务智能合约交易中的调用数据调用业务智能合约的接口;

43、所述业务智能合约调用可信时间预言机接口获取并返回可信当前时间,以及比较业务智能合约调用交易的交易时间与可信时间预言机返回的可信当前时间,根据比较结果进入不同分支处理业务逻辑;

44、所述区块链节点记录业务智能合约的调用结果。

45、作为第二方面的一个具体实施方式,所述方法还包括:

46、所述区块链节点还通过设置的可信打包时间记录经过可信时间服务节点签名的区块产生时间以及通过设置的交易时间和可信交易时间记录经过可信时间服务节点签名的交易发生时间;

47、所述方法具体包括:

48、所述区块链节点将信标交易作为区块的第一笔交易,其余交易按照可信时间排序,进行新区块的打包,并计算除打包时间与可信打包时间之外区块第三剩余信息的哈希值;将所述区块第三剩余信息的哈希值作为参数发送给可信时间服务节点,以获取区块打包时间及可信打包时间签名;

49、所述可信时间服务节点对区块进行可信时间签名,返回区块打包时间及可信区块打包时间签名给所述区块链节点;

50、所述区块链节点在新区块中记录打包时间及可信打包时间。

51、本发明实施例提供的技术方案具备以下有益效果:

52、本发明实施例首先通过区块链外增加的可信时间服务节点为区块链交易添加交易发生的可信时间,并为应用客户端发起的区块链交易或智能合约调用签发可信时间戳,周期性向可信时间预言机发送可信当前时间;然后通过可信时间预言机为业务智能合约提供可信时间服务,该可信时间预言机记录有可信时间服务网络的地址、当前时间、可信当前时间、可信上一时间以及可信当前时间与可信上一时间的时间间隔;以及通过区块链节点对包括交易时间在内的区块链交易进行有效性验证,并在生成区块的同时向可信时间服务节点申请区块生成的可信时间。如此,使区块链交易具有交易可信时间、业务智能合约具有状态改变可信时间,进一步使区块链及智能合约能根据交易时间戳和状态改变时间戳对交易的有效性进行判断,更好的支持对时间敏感的区块链及智能合约应用的运行,避免了因为没有记录交易时间或者准确记录交易时间带来区块链共识机制缺陷,从而解决区块链交易时间不可信、区块生成时间不可信以及区块链智能合约如何获取可信时间的问题。

53、应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本技术。

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