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

这篇具有很好参考价值的文章主要介绍了区块链知识系列 - Oracle预言机。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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 和传统银行支付系统。

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

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)
4.2.3 蚂蚁BAAS的外部预言机

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

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

5 关键技术探讨

5.1 基干TLS自证清白

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

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

  • oracle+区块链,区块链知识系列,区块链,oracle,预言机,事件,回调

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

5.2 TSL介绍

5.3 TLS证明技术

TLS-Notary

https://tlsnotary.org/index.html

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

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

弊端:

TLS-N

类似 默克尔树

DECO

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

oracle+区块链,区块链知识系列,区块链,oracle,预言机,事件,回调

6 使用预言机的流程

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

  • 用户方

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

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

本质就是:事件监听和合约回调文章来源地址https://www.toymoban.com/news/detail-786467.html


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

到了这里,关于区块链知识系列 - Oracle预言机的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Oracle系列之六:Oracle表分区

    Oracle表分区是将一个大型表分割成更小、更易于管理的部分的技术。分区后的表被称为 分区表 ,其中每个分区都可以独立地进行维护、管理和查询。表分区可基于表中的一列或多列,称为 分区键 ,分区键的值确定了每行数据属于哪个分区。 使用分区具有以下优点: (1)

    2024年02月03日
    浏览(65)
  • Oracle系列之六:Oracle表空间

    Oracle表分区是将一个大型表分割成更小、更易于管理的部分的技术。分区后的表被称为 分区表 ,其中每个分区都可以独立地进行维护、管理和查询。表分区可基于表中的一列或多列,称为 分区键 ,分区键的值确定了每行数据属于哪个分区。 使用分区具有以下优点: (1)

    2023年04月16日
    浏览(32)
  • Oracle系列之十:Oracle正则表达式

    正则表达式 (Regular expression) 是一种强大的文本处理工具,Oracle数据库自9i版本开始引入了正则表达式支持,可帮助开发者快速而准确地匹配、查找和替换字符串,广泛应用于数据查询、数据分析、数据清洗等领域。 Oracle正则表达式的语法基于Perl语言的正则表达式语法,区分

    2024年02月06日
    浏览(51)
  • Oracle系列十九:Oracle的体系结构

    Oracle数据库的物理结构由 参数文件、控制文件、数据文件和日志文件 组成,用于存储和管理数据库的数据和元数据,每个文件都扮演着不可或缺的角色。 参数文件用于配置数据库的初始化参数 控制文件记录数据库的结构和状态信息 数据文件存储了实际的数据 日志文件记录

    2024年02月16日
    浏览(36)
  • Oracle常用基础知识

    SQL语言是一种数据库语言  1、DDL:数据定义语言 create-创建  drop-删除 alter-修改 rename-重命名 truncate-截断 2、DML:数据操作语句 insert-插入 delete-删除 update-更新 select-查询 3、DCL:数据控制语句 grant-授权 revoke-回收权力 commit-提交事务 rollback-回滚事务 注:Oracle命令不区分大小写

    2024年02月12日
    浏览(49)
  • ORACLE 知识整理

    ⏹当需要向表中插入若干测试数据的时候,可通过下面这种方式造数据 先从DUAL虚拟表中检索后造出10000条数据后,再插入到指定的表中 除了主键之类的段之外,其余字段写固定值即可 索引可以由一个字段构成,也可以由多个字段联合构成一个索引 ⏹创建global全局索引

    2024年03月24日
    浏览(32)
  • Oracle数据库从入门到精通系列之十八:Oracle进程

    Oracle中的每个进程都要执行一个特定的任务(或一组任务),每个进程都会为自己分配内存(PGA)来完成它的任务。 一个Oracle实例主要有以下3类进程: 服务器进程(server process)。 后台进程(background process)。 从属进程(slave process)。 这些进程根据客户端的请求来完成工作。 专用服务

    2024年02月09日
    浏览(60)
  • Oracle系列十三:游标

    Oracle游标(cursor)是一种数据结构,用于在PL/SQL代码中处理结果集,如用于暂时存储SELECT语句返回的结果集。游标允许程序员对结果集进行逐行处理,并在需要时检索或修改数据。当表的数据量很大的时候,不适合使用游标。 使用游标的5个步骤: 声明变量,用于保存SELECT语

    2024年02月07日
    浏览(31)
  • Oracle系列之--Profile

    Oracle系列之--Profile_oracle profile_楼兰过客的博客-CSDN博客

    2024年02月10日
    浏览(29)
  • oracle-事务一系列理解

    一个事务开始后,会被分配一个唯一的id号,xid,xid不仅是一个编号也是一个地址。 事务表 存在undo表空间的某一个段的段头块,最多存放47个事务,事务开始的时候,先将信息写入这个表,所以一个undo段最多纪录47个事务。 oracle尽量一个事务用一个回滚段,如果不够用,就

    2024年01月21日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包