CN110633286A - 一种基于区块链的授时预言机实现方法 - Google Patents

一种基于区块链的授时预言机实现方法 Download PDF

Info

Publication number
CN110633286A
CN110633286A CN201910933714.0A CN201910933714A CN110633286A CN 110633286 A CN110633286 A CN 110633286A CN 201910933714 A CN201910933714 A CN 201910933714A CN 110633286 A CN110633286 A CN 110633286A
Authority
CN
China
Prior art keywords
voting
time service
intelligent contract
time
block chain
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.)
Withdrawn
Application number
CN201910933714.0A
Other languages
English (en)
Inventor
王伟兵
庞松涛
商广勇
宋明明
杨海勇
张岚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shandong ICity Information Technology Co., Ltd.
Original Assignee
Shandong ICity Information Technology Co., Ltd.
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shandong ICity Information Technology Co., Ltd. filed Critical Shandong ICity Information Technology Co., Ltd.
Priority to CN201910933714.0A priority Critical patent/CN110633286A/zh
Publication of CN110633286A publication Critical patent/CN110633286A/zh
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2255Hash tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/31User authentication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明提供一种基于区块链的授时预言机实现方法,属于超级账本Fabric区块链、预言机(Oracle)机制、统计学算法技术领域,本发明利用预言机原理,在区块链网络中设计和实现一个去中心化的可信授时系统,供有授时需求的智能合约调用或订阅;依托支持智能合约的区块链网络作为运行环境,为区块链网络提供授时服务,增加激励机制后很容易扩展到公链执行环境。

Description

一种基于区块链的授时预言机实现方法
技术领域
本发明涉及超级账本Fabric区块链、预言机(Oracle)机制、统计学算法技术,尤其涉及一种基于区块链的授时预言机实现方法。
背景技术
利用区块链技术建立的分布式账本不能主动从外部世界获得信息,例如调用外部服务,而是依赖一种叫做预言机(Oracle)的机制。预言机是一种智能合约,它允许外部世界将某些客观事实写入区块链,以便其他智能合约使用,客观事实如外汇汇率、股票行情、航班信息、天气预报、体育比赛结果等。
预言机的实现风格,一是通过可信数据源,二是通过投票。可信数据源往往是中心化,可以引入多个数据源来减少欺骗风险。投票方式一般要求投票者抵押一定数字资产,假定多数人是诚实的,多数人投票认可的事实就是客观真实的。
组成区块链网络的各个数据节点的系统时间是不一致,甚至有节点恶意修改系统时间,这导致这个网络对于当前的实际时间难以达成共识。
发明内容
为了解决以上技术问题,本发明提出了一种基于区块链的授时预言机实现方法,在区块链网络中设计和实现一个去中心化的授时系统,供有需求的智能合约调用。
本发明依托支持智能合约的区块链网络(如超级账本Fabric、以太坊)作为运行环境,为区块链网络提供授时服务,可供需要授时服务的智能合约或应用调用。发明默认执行在许可链环境下,并没有设计投票押金和投中奖励等激励机制。增加激励机制后很容易扩展到公链执行环境。
本发明的技术方案是:
一种基于区块链的授时预言机实现方法,
其实现过程包括以下步骤:
1)在智能合约中硬编码一个允许授时投票的区块链账号(地址)清单。
2)投票客户端向授时智能合约查询当前投票轮次,并在本地判断是否已经参与投票,如果已经参与就延迟指定时间后再发起智能合约查询。
3)投票客户端取系统时间,并将“投票轮次和系统时间”作为参数向授时智能合约发起投票请求。
4)智能合约中进行检查,防止重复投票。查询未确认交易来得知投票进展,投票过半数后进行投票结算。
5)将投票时间按大小排序,计算得到中位数。以中位数作为授时投票的结果。
进一步的,
所述使用智能合约实现的授时投票,即以硬编码投票人白名单防止投票人身份仿冒;使用未确认交易的查询得知某投票人是否已投票,以及总体的投票进度;以投票进度过半数(或超过三分之二等其他策略)来触发投票结算;以中位数算法得到授时投票结果;以出块时间(挖矿时间间隔)的区块链内建机制控制授时服务的间隔。
进一步的,
投票客户端使用n个系统虚拟机(V1、V2…Vn)的系统时间作为授时数据源;
每个虚拟机上都要安装时间同步软件ntpd,配置好时间来源服务器
各个虚拟机上安装授时预言机客户端程序,里面封装区块链客户端,在客户端中配置每个投票人专用的区块链账号私钥。
其中,授时预言机客户端的工作流程如下:
先调用授时智能合约取投票轮次号,将取得的轮次号与客户端本地的轮次号进行比较,
如果相等说明已经参与过投票,延时100毫秒后再次取调用智能合约取投票轮次号;
如果不相等说明还没有参与本轮投票,保存轮次号到本地,然后就取系统时间t,以“轮次号+t”为参数向授时预言机智能合约发起投票调用;延时100毫秒后跳回到循环最开始。
进一步的,
授时智能合约处理投票数据,得出投票结论,将结论写入区块,并允许查询投票结果。
授时智能合约仅支持来自可信数据源的投票,代码中维持一个投票方白名单;白名单是允许投票的区块链地址或区块链账号清单;白名单是硬编码在智能合约代码中的,如果更改白名单需要对智能合约代码进行修改并重新部署。
智能合约收到授时投票后,直接将投票数据保存到账本,从而形成了一个区块链交易。
智能合约不接受同一个投票方在一个投票周期内的一次以上的投票,忽略除第一次的其他投票结果,并返回信息告知客户端不接受多次投票。
授时的时间间隔受到出块时间的限制,每个区块会包含一个授时交易。
进一步的,
智能合约的处理流程如下:
1)智能合约接收到投票请求,查看投票用户是否在白名单中,如果在白名单中,则继续下一步,否则返回错误信息;
2)查看已投票结果,看这个用户是否已经投过票,投过票就返回“已投票”,没有则继续;
3)查看投票请求参数中的“投票轮次号”与账本中最新轮次号是否相等,不等则返回“轮次号错误”,相等则继续;
4)保存投票数据,键(key)是“投票人区块链地址+轮次号”,值是投票数据t(客户端发过来的系统时间);
5)查看本轮收集到的投票是否超过半数,没有超过就返回投票成功,超过就继续;
6)将本轮投票的结果t按大小排序,找到中位数记为T,将T保存到账本作为本轮投票的结果;
7)账本中的轮次号+1,返回投票成功。
本发明依托支持智能合约的区块链网络(如超级账本Fabric、以太坊)作为运行环境,为区块链网络提供授时服务,可供需要授时服务的智能合约或应用调用。发明默认执行在许可链环境下,并没有设计投票押金和投中奖励等激励机制。增加激励机制后很容易扩展到公链执行环境。
附图说明
图1是授时投票客户端完成授时投票过程示意图;
图2是智能合约取中位数的流程示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的一种基于区块链的授时预言机(Oracle)实现方法,依托支持智能合约的区块链网络(如超级账本Fabric、以太坊)作为运行环境,为区块链网络提供授时服务,可供需要授时服务的智能合约或应用调用,其技术实现方案如下:
(1)授时投票客户端
使用n个Linux虚拟机(V1、V2…Vn)的系统时间作为授时数据源。根据去中心化思想,确保每个虚拟机的root账号在不同管理员的控制之下。还要防止管理员合谋恶意修改系统时间,不同虚拟机的管理员不能是亲属、朋友或利益相关方。这些虚拟机管理员又称投票人。
每个虚拟机上都要安装时间同步软件ntpd,配置好时间来源服务器。这样做的目的是保证每台虚拟机的系统时间都尽量是统一的互联网时间。
各个虚拟机管理员在各自的虚拟机上安装授时预言机客户端程序,里面封装了区块链客户端,需要在客户端中配置每个投票人专用的区块链账号私钥。投票人需要管理好自己的私钥,确保每个投票人发起的投票不能被别人仿冒。
授时预言机客户端的实现逻辑:先调用授时智能合约取投票轮次号,将取得的轮次号与客户端本地的轮次号进行比较,如果相等说明已经参与过投票,延时100毫秒后再次取调用智能合约取投票轮次号;如果不相等说明还没有参与本轮投票,保存轮次号到本地,然后就取Linux系统时间t,然后以“轮次号+t”为参数向授时预言机智能合约发起投票调用;延时100毫秒后跳回到循环最开始(即调用智能合约取投票轮次号)。
(2)授时智能合约-投票函数
授时智能合约的主要目标是处理投票数据,得出投票结论,将结论写入区块,并允许查询投票结果。
授时智能合约仅支持来自可信数据源的投票,所以代码中会维持一个投票方白名单。这个白名单是允许投票的区块链地址(或区块链账号)清单。白名单是硬编码在智能合约代码中的,如果更改白名单需要对智能合约代码进行修改并重新部署。这种管理白名单的方式简单又安全。
智能合约收到授时投票后,直接将投票数据保存到账本,从而形成了一个区块链交易。这个区块链交易即保存了投票数据,又起到审计日志的作用。
在投票结算前,智能合约可能收到同一个投票方多次投票。原因可能是恶意的,也可能是巧合。智能合约不接受同一个投票方在一个投票周期内的多次投票,应忽略除第一次的其他投票结果,并返回信息告知客户端不接受多次投票。
在本授时方案中,授时的时间间隔受到出块时间(挖矿间隔)的限制,每个区块会包含一个授时交易。
智能合约的处理流程如下:
1.智能合约接收到投票请求,查看投票用户是否在白名单中(流程图中省略了这一步),如果在白名单中继续,否则返回错误信息;
2.查看(未被矿工确认的)的已投票结果,看这个用户是否已经投过票,投过票就返回“已投票”,没有则继续;
3.查看投票请求参数中的“投票轮次号”与账本中最新轮次号是否相等,不等则返回“轮次号错误”,相等则继续;
4.保存投票数据,键(key)是“投票人区块链地址+轮次号”,值是投票数据t(客户端发过来的系统时间);
5.查看本轮收集到的投票是否超过半数(例如白名单中有10条记录,则收集到6个或以上的投票),没有超过就返回投票成功,超过就继续;
6.将本轮投票的结果t按大小排序,找到中位数记为T,将T保存到账本作为本轮投票的结果;
7.账本中的轮次号+1,返回投票成功。
(一直到上述交易被打包成区块,客户端就可以查询到轮次号增加了1)
(3)授时智能合约-授时函数
授时智能合约通过授时函数对外提供授时服务。本发明设计了几种授时函数,满足不同场景的需要。
3.1)取当前时间取最新区块的授时交易记录的投票结果T。
3.2)按区块号(或区块哈希)返回授时时间按区块号或区块哈希返回某区块中授时交易记录的投票结果T。
(4)授时服务的使用
授时服务的服务对象有两大类:智能合约或外部应用(如DAPP)。
授时服务的来源时间数据被以区块链交易的形式记录在分布式账本中,可以通过区块浏览器查看每轮授时投票的结果。
无论外部应用还是智能合约都可以通过访问授时智能合约的授时函数取得最新或历史的授时数据。
以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

Claims (10)

1.一种基于区块链的授时预言机实现方法,其特征在于,
其实现过程包括以下步骤:
1)在智能合约中硬编码一个允许授时投票的区块链账号清单;
2)投票客户端向授时智能合约查询当前投票轮次,并在本地判断是否已经参与投票,如果已经参与就延迟指定时间后再发起智能合约查询;
3)投票客户端取系统时间,并将“投票轮次和系统时间”作为参数向授时智能合约发起投票请求;
4)智能合约中进行检查,防止重复投票;通过查询未确认交易来得知投票进展,投票过半数后进行投票结算。
5)将投票时间按大小排序,计算得到中位数;以中位数作为授时投票的结果。
2.根据权利要求1所述的方法,其特征在于,
所述使用智能合约实现的授时投票,即以硬编码投票人白名单防止投票人身份仿冒;查询得知某投票人是否已投票,以及总体的投票进度;触发投票结算;得到授时投票结果;以出块时间的区块链内建机制控制授时服务的间隔。
3.根据权利要求1所述的方法,其特征在于,
投票客户端使用n个系统虚拟机(V1、V2…Vn)的系统时间作为授时数据源(n为虚拟机数量);
每个虚拟机上都要安装时间同步软件ntpd,配置好时间来源服务器;
各个虚拟机上安装授时预言机客户端程序,里面封装区块链客户端,在客户端中配置每个投票人专用的区块链账号私钥。
4.根据权利要求3所述的方法,其特征在于,
授时预言机客户端的工作流程如下:
先调用授时智能合约取投票轮次号,将取得的轮次号与客户端本地的轮次号进行比较,
如果相等说明已经参与过投票,延时100毫秒后再次取调用智能合约取投票轮次号;
如果不相等说明还没有参与本轮投票,保存轮次号到本地,然后就取系统时间t,以“轮次号+t”为参数向授时预言机智能合约发起投票调用;延时100毫秒后跳回到循环最开始。
5.根据权利要求4所述的方法,其特征在于,
授时智能合约处理投票数据,得出投票结论,将结论写入区块,并允许查询投票结果。
6.根据权利要求5所述的方法,其特征在于,
授时智能合约仅支持来自可信数据源的投票,代码中维持一个投票方白名单;白名单是允许投票的区块链地址或区块链账号清单;白名单是硬编码在智能合约代码中的,如果更改白名单需要对智能合约代码进行修改并重新部署。
7.根据权利要求5或6所述的方法,其特征在于,
智能合约收到授时投票后,直接将投票数据保存到账本,从而形成了一个区块链交易。
8.根据权利要求7所述的方法,其特征在于,
智能合约不接受同一个投票方在一个投票周期内的一次以上的投票,忽略除第一次的其他投票结果,并返回信息告知客户端不接受多次投票。
9.根据权利要求7或8所述的方法,其特征在于,
授时的时间间隔受到出块时间的限制,每个区块会包含一个授时交易。
10.根据权利要求9所述的方法,其特征在于,
智能合约的处理流程如下:
1)智能合约接收到投票请求,查看投票用户是否在白名单中,如果在白名单中,则继续下一步,否则返回错误信息;
2)查看已投票结果,看这个用户是否已经投过票,投过票就返回“已投票”,没有则继续;
3)查看投票请求参数中的“投票轮次号”与账本中最新轮次号是否相等,不等则返回“轮次号错误”,相等则继续;
4)保存投票数据,键(key)是“投票人区块链地址+轮次号”,值是投票数据t(客户端发过来的系统时间);
5)查看本轮收集到的投票是否超过半数,没有超过就返回投票成功,超过就继续;
6)将本轮投票的结果t按大小排序,找到中位数记为T,将T保存到账本作为本轮投票的结果;
7)账本中的轮次号+1,返回投票成功。
CN201910933714.0A 2019-09-29 2019-09-29 一种基于区块链的授时预言机实现方法 Withdrawn CN110633286A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910933714.0A CN110633286A (zh) 2019-09-29 2019-09-29 一种基于区块链的授时预言机实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910933714.0A CN110633286A (zh) 2019-09-29 2019-09-29 一种基于区块链的授时预言机实现方法

Publications (1)

Publication Number Publication Date
CN110633286A true CN110633286A (zh) 2019-12-31

Family

ID=68973761

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910933714.0A Withdrawn CN110633286A (zh) 2019-09-29 2019-09-29 一种基于区块链的授时预言机实现方法

Country Status (1)

Country Link
CN (1) CN110633286A (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112053240A (zh) * 2020-08-07 2020-12-08 深圳区块大陆科技有限公司 在区块链上实现预言机功能的一种方法
CN112837157A (zh) * 2021-02-10 2021-05-25 中国人民银行数字货币研究所 区块链中定时智能合约的注册、执行方法、装置和系统
CN113010561A (zh) * 2021-03-31 2021-06-22 工银科技有限公司 基于超级账本的数据获取方法、装置、计算机系统
CN113037827A (zh) * 2021-03-02 2021-06-25 上海旺链信息科技有限公司 基于区块链的投票方法、自组织管理方法及计算机设备
CN113065167A (zh) * 2021-04-06 2021-07-02 北京瑞卓喜投科技发展有限公司 一种链下数据授权预言机更新的方法、装置和电子设备
CN113449342A (zh) * 2020-03-27 2021-09-28 山东浪潮质量链科技有限公司 一种基于区块链的随机数预言机实现方法、设备及介质
CN113676498A (zh) * 2021-10-25 2021-11-19 江苏荣泽信息科技股份有限公司 基于分布式网络技术存取第三方信息的预言机管理系统

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113449342A (zh) * 2020-03-27 2021-09-28 山东浪潮质量链科技有限公司 一种基于区块链的随机数预言机实现方法、设备及介质
CN113449342B (zh) * 2020-03-27 2023-04-11 山东浪潮质量链科技有限公司 一种基于区块链的随机数预言机实现方法、设备及介质
CN112053240A (zh) * 2020-08-07 2020-12-08 深圳区块大陆科技有限公司 在区块链上实现预言机功能的一种方法
CN112837157A (zh) * 2021-02-10 2021-05-25 中国人民银行数字货币研究所 区块链中定时智能合约的注册、执行方法、装置和系统
CN113037827A (zh) * 2021-03-02 2021-06-25 上海旺链信息科技有限公司 基于区块链的投票方法、自组织管理方法及计算机设备
CN113010561A (zh) * 2021-03-31 2021-06-22 工银科技有限公司 基于超级账本的数据获取方法、装置、计算机系统
CN113010561B (zh) * 2021-03-31 2022-09-06 工银科技有限公司 基于超级账本的数据获取方法、装置、计算机系统
CN113065167A (zh) * 2021-04-06 2021-07-02 北京瑞卓喜投科技发展有限公司 一种链下数据授权预言机更新的方法、装置和电子设备
CN113676498A (zh) * 2021-10-25 2021-11-19 江苏荣泽信息科技股份有限公司 基于分布式网络技术存取第三方信息的预言机管理系统

Similar Documents

Publication Publication Date Title
CN110633286A (zh) 一种基于区块链的授时预言机实现方法
CN106878000B (zh) 一种联盟链共识方法及系统
US20200177373A1 (en) System and method for storing contract data structures on permissioned distributed ledgers
US20190379754A1 (en) Proxy agents and proxy ledgers on a blockchain
WO2021233049A1 (zh) 基于区块链的数据处理方法、装置、设备及可读存储介质
US11381589B2 (en) Systems and methods for distributed extended common vulnerabilities and exposures data management
CN112868210B (zh) 区块链时间戳协议
CN113395363B (zh) 基于区块链的数据处理方法、装置、设备及存储介质
CN112632629B (zh) 基于区块链的投票管理方法、装置、介质及电子设备
CN110769035A (zh) 一种区块链资产发行方法、平台、业务节点及存储介质
CN112822267B (zh) 基于区块链的数据处理方法和装置
CN109547488A (zh) 一种基于联盟区块链的可信数据计算及交换系统
CN112398956B (zh) 基于区块链的数据处理方法、装置、设备及可读存储介质
CN113449342B (zh) 一种基于区块链的随机数预言机实现方法、设备及介质
CN111461885A (zh) 共识网络管理方法、装置、计算机以及可读存储介质
CN104601624A (zh) 一种数据交互方法和装置
CN113572746A (zh) 数据处理方法、装置、电子设备及存储介质
CN111698198B (zh) 秘密生成和份额分发
CN112417052B (zh) 区块链网络中的数据同步方法、装置、设备及存储介质
CN112988852B (zh) 基于区块链的数据管理方法、设备以及介质
CN113032823A (zh) 设备id的生成方法及装置
CN111008251A (zh) 一种数据处理方法以及设备
US20240137231A1 (en) Multi-blockchain-based cross-chain processing method and apparatus, device, system, and medium
US20240129143A1 (en) Dividing data storage and service operations among plural blockchains
US20230360046A1 (en) Blockchain-based block processing method and apparatus, device, storage medium, and program product

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
WW01 Invention patent application withdrawn after publication

Application publication date: 20191231

WW01 Invention patent application withdrawn after publication