CSDN首发Chainlink(预言机)讲解:基础知识总结 到底什么是预言机本篇带你解析

 

 

 963034f17590412b808770f619144970.png

 苏泽

大家好 这里是苏泽 一个钟爱区块链技术的后端开发者

本篇专栏 ←持续记录本人自学两年走过无数弯路的智能合约学习笔记和经验总结 如果喜欢拜托三连支持~


前面的专栏带大家熟悉了 区块链的基本组成 、共识机制、智能合约、最小信任机制 以及EVM等知识 如遇不懂的概念或名词全部可以在前面的文章找到解释哦

区块链专栏:http://t.csdnimg.cn/CCnWE

 


正文

目录

预言机概念

起源

图灵在图灵机(Turing Machine)的基础上,加入了一个称为预言者(oracle)的黑盒,组成了预言机(Oracle Machine)。

所谓预言者,是一个可以回答特定问题集合的实体。即它可以向图灵机系统内部输入信息,帮助图灵机完成运算。

所以,预言机是连接智能合约与区块链外部世界的中间件(middleware),是区块链重要的基础设施,它的作用是为区块链上的智能合约(Smart Contract)提供数据信息的。

Chainlink到底是什么

混智能合约

Chainlink使用其去中心化的预言机网络将智能合约与外部数据连接起来。Chainlink API请求由预言机1:1处理。

了解Chainlink架构

怎么使用?

智能合约如何使用预言机?

Remix

FISCO BICOS

FISCO BCOS的功能:

如何进行选择

合约如何与现实链接

后期会专门讲解 solidity(编写智能合约的主要流行语言)、FISCO BICOS的使用 以及对接具体项目的实战示例

敬请期待  求三连~


 

预言机概念

预言机的英文为Oracle,和著名的数据库服务提供商Oracle(甲骨文)重名,但是两者除了名字相同以为并没有任何关系。Oracle这个单词是什么意思,下面是我在vocabulary.com上查到的Oracle的含义:

Back in ancient times, an oracle was someone who offered advice or a prophecy thought to have come directly from a divine source. In modern usage, any good source of information can be called an oracle.

中文的大概意思是:在古代,oracle是一个提出建议或预言的人,他的建议或预言被认为是直接来自于神。在现代用法中,任何好的信息来源都可以称为oracle

起源

计算机领域内的预言机一词,最早是图灵提出的。(没错 正是在下的博客名“图灵重生我名苏泽”的那个图灵,计算机之父)

图灵在图灵机(Turing Machine)的基础上,加入了一个称为预言者(oracle)的黑盒,组成了预言机(Oracle Machine)。

所谓预言者,是一个可以回答特定问题集合的实体。即它可以向图灵机系统内部输入信息,帮助图灵机完成运算。

以太坊的智能合约是“图灵完备(Turing Complete)”的,某种意义上可以看做一个图灵机,所以以太坊的设计者借鉴这个概念,把向“图灵完备的智能合约”这个图灵机输入信息的也被称为预言机oracle。

也就是说 一方向他输入信息 他就会回答对应的问题

所以,预言机是连接智能合约与区块链外部世界的中间件(middleware),是区块链重要的基础设施,它的作用是为区块链上的智能合约(Smart Contract)提供数据信息的。

c22f968f86a44999b9981515dddb7abf.png

 

Chainlink到底是什么

在认识他之前  我们必须先认识 混智能合约  智能合约我说过http://t.csdnimg.cn/cbhUm 那混智能合约是怎么回事呢?

混智能合约

 

智能合约可以连接到现实世界的资产市场价格,以产生强大的应用程序。将智能合约与链下数据和服务安全地连接起来,使它们成为混合智能合约。这是使用预言机完成的。

bef9b95e76ed4741a61414442f9c6d23.png

Chainlink使用其去中心化的预言机网络将智能合约与外部数据连接起来。Chainlink API请求由预言机1:1处理。

也就是说,预言机有的 Chainlink都会有 而且封装的更好 供我们使用

了解Chainlink架构

052b28259e7f4a44a1660f5cbf5a54a2.png

  1. 首先,Chainlink 使用其去中心化预言机网络,将智能合约与外部数据连接起来。每一个Chainlink API的请求都由一个预言机处理。
  2. 而后他会聚合来自多个方面的数据预言机。通过链上聚合,数据从去中心化的 独立的网络预言机 节点。该架构应用于Chainlink Data Feeds ,从而可以聚合资产价格数据等数据。

e66f27643a1c4de482117f95b67927f7.png

在《精通以太坊(Matering Ethereum)》一书中,提出了三种预言机的设计模式,分别是

  • 立即读取(immediate-read)
  • 发布/订阅(publish–subscribe)
  • 请求/响应(request–response)

而基于LINK ERC677 token完成的预言机功能,就属于其中的请求/响应模式。这是一种较为复杂的模式,上图中展示的是一个不含有聚合过程的简单请求/相应流程。

236dad547bda4e85bce20995786135c9.png

 

怎么使用?

在了解到如何使用之前我们得先知道如何进行部署

部署智能合约 是将代码推送到的过程blockchain ,此时它驻留在链上地址。一旦部署,代码就无法更改,并且被称为不可变的

只要知道地址,它的功能就可以通过接口、在Etherscan上或通过web3js、web3py、ethers等库调用。合约也可以写成与区块链上的其他合约交互。

智能合约如何使用预言机?

ac4f6f37b9e84171ab8972b85f62302c.png

  1. 部署Chainlink预言机合约:首先,需要在区块链上部署Chainlink预言机合约。这个合约将负责与链下数据源进行通信,并将数据传递给智能合约。

  2. 配置预言机合约:在部署预言机合约后,需要配置它与链下数据源的连接。这包括设置数据源的地址、API密钥等信息,以便预言机可以正确地获取数据。

  3. 编写智能合约:在智能合约中,需要引入Chainlink的预言机合约(类似Java引入依赖,python引入库一样的道理),并定义一个函数来调用预言机获取数据。这个函数将使用预言机合约提供的接口来请求数据,并将数据返回给智能合约。

  4. 处理返回的数据:一旦预言机获取到数据,它将通过回调函数将数据返回给智能合约。智能合约可以在回调函数中对数据进行处理,例如验证数据的有效性、更新合约状态等。

Remix

Remix是一个网络IDE(集成开发环境) 也就是 你敲代码(编写合约的地方)

用于在浏览器中创建、运行和调试智能合约。它是由以太坊基金会开发和维护的。Remix允许Solidity开发人员在没有开发机器的情况下编写智能合约 ,因为所需的一切都包含在网络界面中。它简化了已部署的合约的交互方式,不需要命令行界面。Remix 也支持样例合约。这意味着Remix,可以从Github加载代码。

c385afd629c8407a89dc097c6a4468d2.png

FISCO BICOS

FISCO BCOS是一个基于区块链技术的开源平台,它可以用于构建企业级的区块链应用。

32e64737dd624141ac2edf427ea45f8a.png

FISCO BCOS的功能:

  1. 智能合约:FISCO BCOS支持编写智能合约,智能合约是一种在区块链上执行的自动化合约。可以使用Solidity等编程语言编写智能合约,然后部署到FISCO BCOS网络中。
  2. 链上数据存储:FISCO BCOS提供了分布式存储功能,可以将数据存储在区块链上,确保数据的不可篡改性和透明性。
  3. 交易处理:FISCO BCOS支持高并发的交易处理,可以满足企业级应用的需求。
  4. 身份认证:FISCO BCOS提供了身份认证功能,可以确保参与区块链网络的各方的身份安全和可信度。
  5. 隐私保护:FISCO BCOS支持隐私保护功能,可以对交易和数据进行加密和隐私保护,确保敏感信息不被泄露。

a74694de0c264f41bf5448b30d39e764.png

如何进行选择

FISCO BCOS和Remix是两个与智能合约开发相关的工具。下面将介绍它们的选择和使用。

FISCO BCOS是一个联盟链平台,它支持Solidity作为智能合约开发语言。Solidity是一门面向区块链平台设计的编程语言,具有广泛的影响力和社区支持。如果你需要直接的构建一个企业级的项目,或是你目前手上已经有了一些项目。你需要把区块链集成进来,那么选择使用FISCO BCOS作为区块链平台是一个很好的选择。

Remix是一个在线的Solidity集成开发环境(IDE),它提供了编写、编译、部署和调试智能合约的功能。通过Remix,你可以直接在浏览器中编写和测试智能合约,无需安装任何开发环境。如果你想快速上手Solidity并进行智能合约的开发和测试,Remix是一个很好的选择。

 

合约如何与现实链接

合约可以在Remix或是FISCO BICOS上面进行 编写 测试 但是如何让你的合约与项目进行交互呢?

使用Solidity引入Chainlink并使用其API查询现实世界信息的例子,例如查询天气(当然了,实际的业务大概是查询某某币的市值之类的操作而非那么无聊,这里只是简单举个例子):

  1. 创建Truffle项目:

    • 打开终端并创建一个新的文件夹,例如MyChainlinkWeather
    • 进入该文件夹并运行truffle init命令以初始化Truffle项目。
  2. 安装Chainlink开发库:

    • 在终端中进入项目文件夹,并运行npm install @chainlink/contracts --save命令以安装Chainlink开发库。
  3. 创建用户合约:

在项目的contracts目录中创建一个新的Solidity合约文件,例如WeatherContract.sol

  • 在合约文件中导入Chainlink相关的库和合约
  • pragma solidity ^0.8.0;import "@chainlink/contracts/src/v0.8/ChainlinkClient.sol";
    import "@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol";
  • 创建一个合约,继承自ChainlinkClient合约,并设置构造函数:
contract WeatherContract is ChainlinkClient {address private oracle;bytes32 private jobId;uint256 private fee;string public weather;constructor() {setPublicChainlinkToken();oracle = 0x0000000000000000000000000000000000000000; // 设置你选择的Chainlink Oracle地址jobId = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; // 设置你选择的Job IDfee = 0.1 * 10 ** 18; // 设置你愿意支付的LINK费用}
}
  • 写个函数获取天气的
function requestWeather() public {Chainlink.Request memory request = buildChainlinkRequest(jobId, address(this), this.fulfill.selector);request.add("url", "https://api.weatherapi.com/v1/current.json?key=YOUR_API_KEY&q=YOUR_LOCATION");request.add("path", "current.condition.text");sendChainlinkRequestTo(oracle, request, fee);
}function fulfill(bytes32 _requestId, bytes32 _weather) public recordChainlinkFulfillment(_requestId) {weather = bytes32ToString(_weather);
}function bytes32ToString(bytes32 _bytes32) private pure returns (string memory) {bytes memory bytesArray = new bytes(32);for (uint256 i; i < 32; i++) {bytesArray[i] = _bytes32[i];}return string(bytesArray);
}
  • 部署合约到以太坊网络:

    • 配置Truffle的网络设置,例如Ropsten测试网络。
    • 运行truffle migrate --network ropsten命令将合约部署到Ropsten测试网络。
  • 调用合约获取天气信息:

    • 在Truffle控制台或使用Web3.js等工具中,调用合约的requestWeather函数来发起Chainlink请求并获取天气信息。

此外 如果你要将在链上的数据 跟你的项目相结合的时候 可能就要用到FISCO BICOS,使用他的sdk  

后期会专门讲解 solidity(编写智能合约的主要流行语言)、FISCO BICOS的使用 以及对接具体项目的实战示例

敬请期待  求三连~

 

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

农发行鱼台县支行组织开展3.15金融消费者权益保护教育宣传活动

为切实提升消费者金融素养及风险防范意识,3月15日农发行鱼台县支行组织开展以“金融消保在身边 保障权益防风险”为主题的“3.15”金融消费者权益保护教育宣传活动。 本次活动,该行重点围绕普及消费者八项基本权利、宣传金融纠纷多元化解机制、强化“三适当“原则、夯实诚信文…

27.网络游戏逆向分析与漏洞攻防-网络通信数据包分析工具-数据推测功能的实现

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 如果看不懂、不知道现在做的什么&#xff0c;那就跟着做完看效果 内容参考于&#xff1a; 易道云信息技术研究院VIP课 上一个内容&#xff1a;26.实现生成日志…

树和二叉树的介绍

树 树是一种数据结构&#xff0c;它是由n(n≥0)个有限节点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树&#xff0c;也就是说它是根朝上&#xff0c;而叶朝下的。 它具有以下的特点&#xff1a; 每个节点有零个或多个子节点&#xff1b;没有父节点…

Codeforces Round 933 (Div. 3)C:Rudolf and the Ugly String

题目链接&#xff1a;Dashboard - Codeforces Round 933 (Div. 3) - Codeforces 解题思路&#xff1a; 解题思路&#xff1a; 题目大概意思是字符串中最少去掉几个单词可以使字符串变漂亮&#xff0c;其实只要找“map"和”pie“这两个单词数量&#xff0c;注意判断&quo…

D706——低功耗微处理器复位检测电路芯片

概 述 近年来&#xff0c;微处理器在IT业控制领域和智能化产品中得到了广泛的应用。在系统和产品的开发设计过程中&#xff0c;为了提高其抗干扰能力&#xff0c;使用uP监控是首选技术措施之一。监控芯片可为系统提供上电、掉电复位功能&#xff0c;也可提供其它功能&#x…

低功率接地故障断路器(GFI)控制芯片D4147介绍

应用领域 D4147主要用于三线制GFCI输出接口、GFCI芯片断路器、便携式GFCI线路等领域的产品&#xff0c;侦测并防护火线对地故障和零线对负载短路故障。 功能介绍 D4147 为低功率接地故障断路器&#xff08;GFI&#xff09;控制器芯片&#xff0c;用于检测危险的接地故障电流路…

相机安装位置固定后开始调试设备供电公司推荐使用方法

摄像头安装位置固定后开始调试 设备供电&#xff1a;无电源设备需要连接12V/2A电源并连接到摄像机的DC端口&#xff0c;而有电源的摄像机可以直接连接到220V电源。 连接设备&#xff1a;如果是有线连接&#xff0c;请使用网线将设备连接到电脑&#xff08;建议直接连接&#…

前端基础——HTML傻瓜式入门(1)

该文章Github地址&#xff1a;https://github.com/AntonyCheng/html-notes 在此介绍一下作者开源的SpringBoot项目初始化模板&#xff08;Github仓库地址&#xff1a;https://github.com/AntonyCheng/spring-boot-init-template & CSDN文章地址&#xff1a;https://blog.c…

未知待解决问题整理_像素流带宽占用问题

未知待解决问题整理_像素流带宽占用问题 实时云渲染带宽 解释一 解释二 实时云渲染需要多少带宽才能流畅使用? (baidu.com) 影响带宽的因素有哪些。其实对于带宽影响比较大的因素有两个: 并发(同时操作的人数,在视频领域就是同时在线观看的人数)和视频流的码率。 简…

TSINGSEE青犀视频AI方案:数据+算力+算法,人工智能的三大基石

背景分析 随着信息技术的迅猛发展&#xff0c;人工智能&#xff08;AI&#xff09;已经逐渐渗透到我们生活的各个领域&#xff0c;从智能家居到自动驾驶&#xff0c;从医疗诊断到金融风控&#xff0c;AI的应用正在改变着我们的生活方式。而数据、算法和算力&#xff0c;正是构成…

RS485通讯芯片D3485简介,主要用于工控主板,新能源充电桩等产品中

01 /silicore 应用领域 D3485芯片主要用于工控主板、工业控制器、智能电表、中央空调控制面板、新能源充电桩等众多涉及RS485通讯的产品。 02 /silicore 基本特性 D3485是一款5V供电、半双工的RS-485收发器&#xff0c;芯片内部包含一路驱动器和一路接收器。D3485使用限摆率…

Java项目企业设备管理系统

java项目企业设备管理系统javaweb项目ssm框架项目 运行环境:idea/eclipse tomcat jdk mysql navicat 系统用户分为员工和管理员两类用户。两类用户都可以进行系统的登录&#xff0c;虽然进入的系统主页结构相似&#xff0c;但是在功能上有不同。员工的密码可以自己进入系统后…