区块链知识系列 - Oracle预言机

news2024/12/29 9:22:32

Oracle 预言机

区块链外信息写入区块链内的机制,一般被称为预言机(oracle mechanism)。

借助预言机外界的数据得以灌入链内, 使得DApp的玩法更多样. 比如DApp倚重的随机数, 可以考虑让一个硬件产生真随机数, 通过Oracle,定时灌入, 这将更公正和安全

1 为什么需要预言机

  • 所有节点同一个事务中智能合约运行的结果必须一致
  • 智能合约不应该发起网络调用
  • 由于区块链的共识模式,智能合约只可以从内部调取数据,而不能直接从区块链外部(链下)获取信息。

2 应用场景

  • 游戏/预测:获取链上安全的随机数,实现更公平的游戏,抽奖场景。
  • 物联网:对于IOT应用,将传感器信息上链,智能合约验证并触发下一步的行为。
  • 供应链金融:获取链下订单和汇率信息等。

3 按去中心化程度分

3.1 中心化预言机

靠部署机构本身来背书,比如BSN部的,都是可信的

  • Oraclize:为以太坊提供中心化预言机服务
  • Ontology oracle:本体链上的中心化预言机服务

3.2 去中心化预言机

区块链预言机是一个附加的基础设施,它可以帮助区块链和外部世界进行交互。但是,为了让智能合约保持去中心化,预言机也需要保持去中心化来避免任何单点故障,尤其因为预言机的输入控制着智能合约的输出。

  • ChainLink:以太坊上第一个去中心化预言机解决方案
  • 欧链 OracleChain:EOS 上的第一个去中心化预言机解决方案
  • DOS Network:支持多条主流公链的去中心化预言机服务网络

4 按链分

4.1 公链预言机

4.1.1 ChainLink (ETH)

github

Chainlink 是区块链领域运用最广泛的预言机解决方案。Chainlink 是一个去中心化的预言机网络,为区块链智能合约解决互操性问题,并将其安全连接至链下数据源、Web API 和传统银行支付系统。

通过事务事件来广播对外部数据的需求,然后,侦听此类事件的外部方会收到请求通知,并获取所请求的数据,最后通过以下方式将其发送到链中:通过交易调用智能合约。

image-20210521005759435

4.1.2 OracleChain (EOS)

4.2 联盟链预言机

4.2.1 Truora (Fisco / BSN)

  1. 指定要获取数据的URL(权威的,支持Https的)
  • 云数据库
  • IPFS
  • 引入的可信数据源
  • 多数据源
    • 数据聚合
      • 链上聚合:通过智能合约对多数据源进行 求和,求平均,求中位数等
      • 链下聚合:多个数据源的预言机对数据进行门限签名(BLS),减少相同的数据重复上链
  1. 回写到链上
  • 硬件:TEE(可信执行环境)
  • 软件:TLS技术

4.2.2 ChainLink (Kaleido)

image-20210521151844351 image-20210521173940789 image-20210521152426783 image-20210521154910065

4.2.3 蚂蚁BAAS的外部预言机

https://cloud.tencent.com/developer/article/1415307

image-20210521174919052 image-20210521174945890

外部数据源服务会在智能合约平台部署一个外部数据源服务合约,用户合约通过调用该服务合约发送外部数据源请求,链下的 TEE 外部数据源服务对接该服务合约,监听用户的请求,然后去对应的外部数据源取数据,最后将结果返回给用户合约。

5 关键技术探讨

5.1 基干TLS自证清白

  • 预言机得将与目标URL建立TLS过程中的握手连接细节上链,链上验证确实是从目标URL获取数据的

  • TLS改造,向应用层暴露TLS握手连接的细节

  • img

需要证明确实是到目标URL获取的数据,request与response都需要证明

5.2 TSL介绍

image-20210520180423416 image-20210520180508436 image-20210520180328293

5.3 TLS证明技术

TLS-Notary

https://tlsnotary.org/index.html

主要基于安全传输层协议TLS 1.1,TLS用于在两个通信应用程序之间提供保密性和数据完整性,最大优势就在于独立于应用协议,更高层协议可以透明地分布在 TLS 协议上面

  • 三方握手 - 涉及三方密钥交换
    • 在整个传输中,TLS的master key可以分成三个部分:服务器方、受审核方和审核方;在整个流程中,互联网数据源作为服务器方,预言机(oracle)作为受审核方,一个专门设计的,部署在云上的开源实例作为审核方,每个人都可以通过这个审计方服务对预言机(oracle)过去提供的数据进行审查和检验,以保证数据的完整性和安全性。
    • TLS中客户端的会议密钥由受审核方和审核方共同产生
  • 需要审核方的参与,受审核方才能恢复出服务器方的response信息

弊端:

image-20210521110241532

TLS-N

类似 默克尔树

image-20210521110558833

DECO

用到三方DH握手, 两方安全计算,零知识证明

image-20210521110916700

6 使用预言机的流程

预言机的工作流程,即用户的智能合约把请求给链上 Oracle 合约,通过链下的 API 接口获得外部数据,更确切的说是外部把数据给链上的 Oracle 合约,然后 Oracle 合约再把数据给用户的智能合约。

image-20210520154405179
  • 用户方

    • ConsumerOracle是用户的合约,继承具有Oracle功能的FiscoOracleClient合约父类即可,实现接口
    • 用户向ConsumerOracle合约传入URL
    • image-20210520162006278
  • 服务方

    • 部署一个OracleCore合约
    • 部署一个后台服务OracleService(Java)
      • 监听链上OracleCore事件
      • 解析参数
      • 调用URL从互联网获取数据
      • 回写到OracleCore
      • OracleCore再回写到用户合约(通过父类的抽你接口回调子类)
    • image-20210520172331072

本质就是:事件监听和合约回调


往期精彩回顾:
区块链知识系列
密码学系列
零知识证明系列
共识系列
公链调研系列
BTC系列
以太坊系列
EOS系列
Filecoin系列
联盟链系列
Fabric系列
智能合约系列
Token系列

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/135016.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

单机Docker部署应用Kraft模式的Kafka集群

单机Docker部署应用Kraft模式的Kafka集群1 Docker镜像准备1.1 下载Kafka1.2 配置容器1.3 修改kafka配置2 部署Kafka集群2.1 启动节点容器2.2 生成一个 Cluster ID2.3 格式化存储目录2.4 启动kafka服务3 知识3.1 控制器服务器3.2 进程角色3.3 仲裁投票者3.4 Kafka存储工具3.5 缺…

久泰新材料在港上市申请失效:年亏损超2亿元,崔轶钧为董事长

近日,贝多财经从港交所了解到,内蒙古久泰新材料科技股份有限公司(下称“久泰集团”或“久泰新材料”)在港交所的上市申请材料(招股书)已“失效”,目前已经无法正常查看或下载。 其中&#xff0c…

Hack the Box CTF 网络流量分析 中等难度 Penetrated | Wireshark

这是一道Hack the Box网络流量分析题,中等难度,题目本身就是一个 pcap 包。 1. 题目: 原文件链接如下,有兴趣可以自己先看一看: 链接: https://pan.baidu.com/s/16KLwQuoYA1AfEwuK78bBWg 提取码: 8864 Flag 格式&am…

Nginx内存管理源码剖析注解

文章目录Nginx内存池总览内存池中变量类型定义创建内存池&#xff1a;ngx_create_pool内存池分配空间&#xff1a;ngx_palloc小块内存空间分配&#xff1a;ngx_palloc_small创建小块内存池&#xff1a;ngx_palloc_block大块内存空间分配&#xff1a;ngx_palloc_large<br /&g…

【电动车】主动配电网多源协同运行优化研究——大规模电动汽车的蒙特卡洛模拟(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

TiDB问题排查

TiDB 集群问题导图 1. 服务不可用 1.1 客户端报 "Region is Unavailable" 错误 1.1.1 "Region is Unavailable" 一般是由于 region 在一段时间不可用导致&#xff08;可能会遇到 "TiKV server is busy" 或者发送给 TiKV 的请求由于 not leader…

JMM内存模型

借鉴&#xff1a; 一文带你搞懂JMM内存模型和JVM内存区域_Apple_Web的博客-CSDN博客_jmm内存模型和jvm内存模型的区别 面试官问我什么是JMM_java技术爱好者_R的博客-CSDN博客_jmm Java内存模型 概述 Java内存模型(即Java Memory Model&#xff0c;简称JMM)本身是一种抽象的…

箭头函数带来的this变化实例

1.不使用箭头函数时 let Lesson {site: 后盾人,lists:[js,css,mysql],show: function (param) { console.log(this);// {site: 后盾人, lists: Array(3), show: ƒ}return this.lists.map(function(title){console.log(this);// Window {window: Window, self: Window, docume…

17. 老板让我手动控制网页渲染速度,说这能反爬虫?我信了。

手动数据延迟加载&#xff0c;真的可以反爬虫 爬虫训练场项目&#xff0c;加速更新中&#xff0c;专栏清单参考 pachong.vip 本次案例需要的代码量特别小&#xff0c;所以咱们再 Nginx 中也进行一下相关配置 文章目录页面逻辑实现接口逻辑实现延迟实现&#xff0c;time.sleep()…

2022年需求最大8种编程语言!(详细解读)

DevJobsScanner 在过去的 14 个月&#xff08;从 2021 年 10 月到 2022 年 11 月&#xff09;中分析了超过 1200 万个开发人员职位需求&#xff0c;并从其中挑选了明确需要编程语言的工作机会&#xff0c;得到了 2022 年最受欢迎的 8 种编程语言。 目前市场中需求最高的前八位…

数学建模学习笔记-算法(线性规划模型)-上

目录 线性规划问题 线性规划的matlab标准形式 解析 目标函数 约束条件 使用matlab的linprog函数来进行求解 线性规划问题 数学规划&#xff1a;安排现有资源安排生产&#xff0c;以取得最大效益的问题。 线性规划&#xff1a;目标函数和约束条件均为线性函数 在一组线性…

2023/1/2总结

今天AC了三个有关二叉树的题目&#xff1a; P1827 [USACO3.4] 美国血统 American Heritage_lxh0113的博客-CSDN博客 https://blog.csdn.net/lxh0113/article/details/128522831?spm1001.2014.3001.5502 P1030 [NOIP2001 普及组] 求先序排列_lxh0113的博客-CSDN博客 然后学…

web基础标签

标签分类&#xff1a; 文本标签&#xff1a; 文本标题标签&#xff1a;h1---h6 段落标签&#xff1a; p 水平线&#xff1a; <hr/> 换行符&#xff1a; <br/> 转义字符&#xff1a; 注释标签&#xff1a; <!--注释内容--> 无语义标签&#xff1a; 语义标签…

educoder数据结构与算法 线性表 第1关:实现一个顺序存储的线性表

本文已收录于专栏 &#x1f332;《educoder数据结构与算法_大耳朵宋宋的博客-CSDN博客》&#x1f332; &#x1f350;任务描述&#x1f350; 本关任务&#xff1a;实现 step1/Seqlist.cpp 中的SL_InsAt、SL_DelAt和SL_DelValue三个操作函数&#xff0c;以实现线性表中数据的插…

TypeScript中abstract抽象类、抽象成员

TypeScript也支持定义抽象类和抽象类成员。抽象类和抽象类成员都使用abstract关键字来定义 抽象类可以不包含抽象方法&#xff0c;但抽象方法必须存在于抽象类中抽象方法只能定义&#xff0c;不能实现&#xff0c;即没有函数体抽象类不能被直接使用&#xff0c;只能被继承&…

Spring Boot学习篇(五)

Spring Boot学习篇(五) mybatis-plus使用 1.1 配置pom.xml文件 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:s…

《设计模式》代理模式

《设计模式》设计模式的基本原则 《设计模式》单例模式 《设计模式》工厂模式 《设计模式》原型模式 《设计模式》建造者模式 《设计模式》适配器模式 《设计模式》桥接模式 《设计模式》装饰者模式 《设计模式》组合模式 《设计模式》外观模式 《设计模式》享元模式 《设计模式…

HTML5和CSS3 WEB技术开发

HTML5和CSS3 WEB技术开发 B站视频参考&#xff1a;https://www.bilibili.com/video/BV1H44y1k7ze/ 课程目标&#xff1a; 使用HTML5进行网站布局使用CSS3进行网站美化开发精美的商业网站 第一章 HTML5基础 概念&#xff1a; ​ 网页 &#xff1a;互联网的基础&#xff0c;网…

requests请求库(爬取)

文章目录requests模块链接拼接&#xff08;params参数&#xff09;UA伪装&#xff08;headers参数&#xff09;POST请求页面局部信息爬取&#xff08;GET&#xff09;爬取国家药品监督管理监督总局中基于中华人民共和国化妆品生产许可证相关数据爬取图片爬虫分类通用爬虫&#…

分布式存储从FastDFS切换到Minio

什么是Minio 基于官网的介绍如下&#xff1a;MinIO 是一款高性能、分布式的对象存储系统. 它是一款软件产品, 可以100%的运行在标准硬件。即X86等低成本机器也能够很好的运行MinIO。 从官网的介绍可以看出Minio是一款和FastDFS类似的工具&#xff0c;分布式存储系统。目前在使…