打通链上链下,构建全链条可信价值生态—长安链预言机

什么是预言机?

预⾔机(oracle mechanism)是⼀种将区块链外信息写⼊区块链内的机制,在保险、金融、物联网等各个场景中已经开始展现出其价值。常⻅的预⾔机有两类,⼀是依赖某⼀中⼼化信息源,⼆是将区块链外信息离散化后⽤经济激励和投票写⼊区块链。这两类预⾔机各有利弊:中⼼化的预⾔机依赖信息源单⼀;去中⼼化的预⾔机则隐含参与投票的群体投票时不存在系统偏差,这个假设在现实中则不⼀定成⽴。

长安链·预言机v1.0.0_alpha版本是⼀种中⼼化的可分布式部署的预⾔机,是长安链系统中打通链下链上数据、构建全链条可信价值生态的重要工具。

⽤⼾可以通过智能合约调⽤来获取链下的接⼝数据、指定的数据库数据、VRF(可验证随机数数据)以及借助智能合约做跨链数据的查询,同时也提供了注册查询topic/按照topic查询的功能以简化⽤⼾使⽤。

 设计与实现 

整体流程

⽤⼾在智能合约中调⽤预言机智能合约中的取数据⽅法,预言机智能合约校验相应参数,发送相应的链事件;

预言机服务监听到链上取数据事件,根据合约中指定的取数据配置,进⾏数据的获取;

预言机服务将取到数据通过调⽤预言机智能合约⽅法来将数据回传,预言机智能合约通过回调⽤⼾智能合约告知⽤⼾数据取到,⽤⼾合约做相应业务处理即可。

打通链上链下,构建全链条可信价值生态—长安链预言机_第1张图片

预⾔机整体流程

预⾔机智能合约设计

预⾔机功能由预言机智能合约提供接⼝的⽅式来实现,用户智能合约通过调⽤接⼝来获取数据。为⽅便⽤⼾使⽤,系统提供了复杂查询的订制化功能,可以由管理员来进⾏查询的订制,简化普通⽤⼾的查询。

打通链上链下,构建全链条可信价值生态—长安链预言机_第2张图片

预⾔机智能合约交互

预⾔机服务设计

预言机服务整体可以分为四个模块,由监听到的链上预言机智能合约事件进⾏驱动,各个模块配合运⾏完成取数据功能,服务将运⾏中所需数据保存到本地的mysql数据库中。

四个模块如下:

  • 1. 预⾔机状态流转模块;

  • 2. 取数据模块;

  • 3. 预⾔机接⼝模块;

  • 4. 预⾔机告警模块。

打通链上链下,构建全链条可信价值生态—长安链预言机_第3张图片

预⾔机Server结构

预⾔机表设计

预言机服务将服务运⾏所需数据存储到了mysql数据库中。

  • 合约表(oracle_contracts)主要记录通过接⼝安装的预⾔机合约信息。合约的安装、升级都会写⼊到表中。预言机服务监听链上的事件需要提供序号,因此在预言机服务处理完相关事件后,也会将事件序号的变化更新到表中;

  • 事件状态表(event_state)记录了从链上监听事件到整个事件流转完整的各个阶段;

  • 预言机取数据返回值存储表(event_result)存储了预⾔机取到的数据结果;

  • 事件锁表(event_lock)⽤于协调多个预言机服务实例进⾏⼯作;

  • vrf表格(vrfs)记录了vrf的公钥和私钥信息,其中srv_name为唯⼀索引(系统写的)。多个实例如果连接到同⼀个mysql实例,那么他们共享同⼀个vrf公私钥,各个实例⽣成vrf是⼀致的。

1. 预⾔机状态流转模块

预言机服务监听事件,取数据,回传数据到链上整个流程抽象成为⼀个有限状态机来进⾏实现,状态迁移如下图:

打通链上链下,构建全链条可信价值生态—长安链预言机_第4张图片

预⾔机内部状态流转

2. 取数据模块

预言机服务可以⽀持四种取数据模式。通过解析指定的查询需求,实例化相应的接⼝实现类取数据。

  • ⽀持通过http接⼝取xml,json,html类型数据;

  • ⽀持通过mysql数据源取数据;

  • ⽀持跨链(⻓安链)调⽤链上合约查询数据;

  • ⽀持vrf数据取/验。

打通链上链下,构建全链条可信价值生态—长安链预言机_第5张图片

取数据模块

3. 预⾔机接⼝模块

预言机服务的接⼝模块提供两种类型的接⼝。两类接⼝分别都有token验证(token为服务配置中的对应项)。

  • 安装、升级预⾔机合约接⼝token配置项目为smart_oracle.yml文件中httpServer对象的admin_token;

  • 辅助开发接⼝,⽤于查看通过预⾔机可以取的数据样式(不借助智能合约,⽅便开发测试)token配置项目为smart_oracle.yml文件中httpServer对象的assist_token;

打通链上链下,构建全链条可信价值生态—长安链预言机_第6张图片

api接⼝模块

 结    语 

长安链·预言机v1.0.0_alpha版本是⼀种中⼼化的可分布式部署的预⾔机,为⻓安链获取链外数据提供了⼀个桥梁,可以将现实世界的数据准确无误的写入到区块链上,应用场景非常广泛。

下面是预言机使用文档,期待⼤家的使⽤与反馈。

设计⽂档详情:https://docs.chainmaker.org.cn/tech/%E9%A2%84%E8%A8%80%E6%9C%BA%E6%9C%8D%E5%8A%A1.html?highlight=%E9%A2%84%E8%A8%80%E6%9C%BA

使⽤⽂档详情https://docs.chainmaker.org.cn/operation/%E9%A2%84%E8%A8%80%E6%9C%BA%E4%BD%BF%E7%94%A8%E6%96%87%E6%A1%A3.html?highlight=%E9%A2%84%E8%A8%80%E6%9C%BA

RECOMMEND

推荐阅读

长安链ChainMaker 交易池交易防重优化

长安链交易防重之布谷鸟过滤器

BigFilter全局交易防重组件的介绍与应用

Tips

更多长安链开源项目QA,可登录开源社区、技术文档库查看。

下载源码

https://git.chainmaker.org.cn/chainmaker/chainmaker-go

查阅文档

https://docs.chainmaker.org.cn/

长安链ChainMaker案例征集

http://www.wenjuan.com/s/UZBZJvhFGte/

打通链上链下,构建全链条可信价值生态—长安链预言机_第7张图片

“长安链ChainMaker”是国内首个自主可控区块链软硬件技术体系,由微芯研究院联合头部企业和高校共同研发,具有全自主、高性能、强隐私、广协作的突出特点。长安链面向大规模节点组网、高交易处理性能、强数据安全隐私等下一代区块链技术需求,融合区块链专用加速芯片硬件和可装配底层软件平台,为构建高性能、高可信、高安全的数字基础设施提供新的解决方案,为长安链生态联盟提供强有力的区块链技术支撑。取名“长安链”,喻意“长治久安、再创辉煌、链接世界“。

你可能感兴趣的:(大数据,区块链,oracle)