Commit 0d535848 authored by 张振华's avatar 张振华

oracle

parent 84a2af0e
This diff is collapsed.
This diff is collapsed.
# 一、需求描述
## 1.需求背景:
  为保证数据的公平公正性,在区块链上提供权威数据发布合约。满足以下需求:
合约提供录入和查询接口。
合约录入时对数据的key和value定义好标准的格式。
合约是否要满足一定的经济模型,惩罚机制(一期可以不实现,后面再加入)
## 2.实现点:
发布者的地址需要通过superManager添加,调用我们系统manage合约。
数据发布的key要遵循一定的格式,比如游戏类的格式要满足一定的前缀(发布者地址+ 运营特征值+游戏类别 等)
数据发布的时候要能输入数据来源描述(比如:数据来源于新浪体育)
数据发布的value要根据现有的业务做一定的抽象,这块一期可以先考虑下,不用实现的很完备。 一期可以用json格式,数据提供方和开发方可以事先先约定好。
合约对外提供查询接口供具体的应用合约调用, 具体的应用合约只查询满足条件的key,获取数据做相应的运算。
数据的发布需要先预发布,再审核后切换成正式发布。(类似于token的预创建和完成这两步)
# 二、流程及状态机示意
## 1.流程时序图
![Oracle流程时序图](./resource/oracle/Oracle-Seq.jpg)
## 2.状态机图
![Oracle状态机图](./resource/oracle/Oracle-State.jpg)
## 3.说明  
1.合约提供基础的数据受限发布上链的能力,通过授权特定地址,保证数据正确可靠。(运营方为自身业务持续发展考虑,会保证数据正确,并为数据失误负责)
2.事件发布和结果发布分为两个过程,这样可以方便运营方从事件发布中获取竞猜或者菠菜的事件源,在结果出现时,提供正确结果,供菠菜合约自动开奖。
3.事件多来自现实世界,结果可验证,如果出现结果错误,运营方需要承担责任。
4.考虑现实世界,有些事件会因为不可抗力(自然灾害、战争等),导致事件最终未发生,没有结果,则Oracle合约提供撤销事件的接口。
5.对于结果预发布到链上供检验,如果有问题,会有人提出来,管理员或者特定权限的地址可以撤销预发布结果。
6.对于预发布结果确认正确无误,可由管理员或者特定权限的地址正式发布。正式发布后的结果不能修改。
7.数据结果发布中,json格式中可以通过字段标记数据来源等必要信息。
8.第一期合约存储数据主要是json格式,json格式的具体字段可以根据具体的事件类型来进行设计,以满足不同的菠菜、竞猜合约的需要。
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment