Chainlink节点部署教程

这篇文章主要介绍了Chainlink节点部署教程 ,文中通过代码以及文档配合进行讲解,很详细,它对在座的每个人的研究和工作具有很经典的参考价值。 如果需要,让我们与区块链资料网一起学习。

https://www.interchains.cc/16715.html

Chainlink节点部署教程是很好的区块链资料,他说明了区块链当中的经典原理,可以给我们提供资料,Chainlink节点部署教程学习起来其实是很简单的,

不多的几个较为抽象的概念也很容易理解,之所以很多人感觉Chainlink节点部署教程比较复杂,一方面是因为大多数的文档没有做到由浅入深地讲解,概念上没有注意先后顺序,给读者的理解带来困难

Chainlink节点部署教程

  • 预言机
  • Chainlink
  • 节点

本文主要参考Chainlink官方文档(https://docs.chain.link/docs/running-a-chainlink-node)编写,如果…

本文主要参考Chainlink官方文档(https://docs.chain.link/docs/running-a-chainlink-node)编写,如果您可以阅读英文,推荐您直接阅读官方文档。

安装必须组件

服务器环境Ubuntu1804,我们以Ropsten测试网为例,以太坊eth主网的搭建只需修改相关配置选项即可。

Docker 安装参考文档

https://docs.docker.com/engine/install/ubuntu/

将当前用户添加至docker用户组

sudo usermod -aG docker $USER exit # 重新登录

PostgresSQL

Chainlink Node在0.8版本之后将PostgresSQL作为唯一的存储选项。PostgresSQL数据库可以是自己搭建的,也可以是云服务商提供的,只要可以提供数据库的访问接口即可。

本地安装参考:

https://www.postgresql.org/download/linux/ubuntu/

以太坊eth客户端

Chainlink节点通过与以太坊eth客户端节点连接,通过连接的以太坊eth客户端来获取链上的用户预言机请求,通过提交交易将获取到的数据写入到链上。所以Chainlink节点必须要依靠一个以太坊eth客户端节点才能发挥作用。您可以自己搭建以太坊eth客户端节点,也可以选择以太坊ethRPC服务提供方的服务,只需要一个WebSocket链接提供给Chainlink节点即可。

Chainlink的文档中(https://docs.chain.link/docs/run-an-ethereum-client)提供了搭建本地以太坊eth客户端节点的方法,也提供了几个外部以太坊ethAPI服务供您选择。由于以太坊eth客户端节点对硬件要求比较高,本文中我们选择infura提供的免费API来作为Chainlink节点的以太坊eth客户端选择。

部署Chainlink节点

创建Chainlink目录

Ropsten: mkdir ~/.chainlink-ropsten

配置环境变量

Ropsten:

echo "ROOT=/chainlink LOG_LEVEL=debug ETH_CHAIN_ID=3 MIN_OUTGOING_CONFIRMATIONS=2 LINK_CONTRACT_ADDRESS=0x20fE562d797A42Dcb3399062AE9546cd06f63280 CHAINLINK_TLS_PORT=0 SECURE_COOKIES=false GAS_UPDATER_ENABLED=true ALLOW_ORIGINS=* ETH_URL=wss://ropsten.infura.io/ws/v3/<your-api-key> DATABASE_URL=postgresql://postgres:password@localhost:5432/postgres DATABASE_TIMEOUT=0" > ~/.chainlink-ropsten/.env

MIN_OUTGOING_CONFIRMATIONS : 节点发出交易所需要的最小确认块数,在达到最小确认块数之前,同一个run不会开始下一个任务。如果不设置,默认值为12。

LINK_CONTRACT_ADDRESS : LINK token的发行地址,这里有测试网和主网的LINK发行地址,您可以根据自己的网络进行配置。如果不进行配置,默认是主网的LINK发行地址。

GAS_UPDATER_ENABLED : 如果设置为true,节点会在提交事务失败时提高gas费用重新提交。默认为false。

ETH_URL : 以太坊eth客户端WebSocket RPC接口地址。您可以选择自建以太坊eth客户端,也可以选择第三方服务,只要提供WebSocket协议的RPC接口地址即可。

DATABASE_URL : Chainlink节点需要使用PostgresSQL数据库来进行一些数据的持久化存储。同样您可以选择自建数据库或使用第三方数据库服务,只需要提供数据库地址可以让节点读写数据即可。

DATABASE_TIMEOUT :数据库连接超时等待时间。默认500ms。

启动节点

cd ~/.chainlink-ropsten && docker run -p 6688:6688 -v ~/.chainlink-ropsten:/chainlink -it --env-file=.env smartcontract/chainlink local n

首次启动会首先要求管理员输入一个密码,这个密码是节点账户的keystore密码,这个密码必须牢记,丢失的话没有办法找回,并且私钥所管理的资金也会丢失。每次启动都会要求管理员输入这个密码,以解锁keystore。节点需要通过keystore的私钥来签署交易,提交到区块链blockchain上。

接下来还会要求节点管理员输入一对邮箱账户和密码,用于登录节点管理页面。

测试节点

登录浏览器管理页面

浏览器中打开ip:6688地址,就能看到Chainlink节点管理页面的登录入口。用我们在启动节点时填入的邮箱账户和密码,就可以登录到管理界面中了。

我们先去到**Configuration** 标签页,会发现有一个ACCOUNT_ADDRESS字段,这个address就是我们在首次启动节点时候设置keystore密码的私钥所对应的地址,在节点提供服务之前,需要向这个地址转入ETH,用于提交交易。

由于我们使用的是Ropsten测试网络,所以我们可以把这个地址复制到Ropsten faucet中,获取测试ETH。如果您是服务于以太主网上的应用,需要您想这个账户地址手动转入ETH。

创建oracle合约

Oracle合约是Chainlink节点在区块链blockchain上的桥头堡,它与用户合约直接进行沟通,接收用户的预言机请求,将请求结果通过用户注册的回调函数,写入到用户的合约中。

Oracle合约无需自己编写,我们直接部署Chainlink开源的Oracle合约代码即可。如果用remix部署,只需新建一个包含下面两行代码的文件即可:

pragma solidity 0.6.6;  import "https://github.com/smartcontractkit/chainlink/evm-contracts/src/v0.6/Oracle.sol";

需要注意的是,oracle合约会暂时接受用户发起Chainlink请求是所支付的LINK费用,所以请务必妥善保存合约owner的私钥。

部署好Oracle合约之后,需要将开放权限给节点的地址,允许节点可以提交事务。

Chainlink节点部署教程

创建Jobs

按照文档中的例子,在节点中添加Job(作业)。

打开节点管理界面的Jobs标签页,点击New Job添加新的Job,将每个类型的Job的JSON拷贝到文本框中,用刚刚部署好的Oracle合约地址,替换JSON中的YOUR_ORACLE_CONTRACT_ADDRESS字段。每创建成功一个Job,都会生成一个Job ID,在Jobs标签页可以找到所有的Jobs。

测试节点可用性

接下来我们测试一下我们部署的Chainlink服务的可用性。

pragma solidity ^0.6.0;  import "https://raw.githubusercontent.com/smartcontractkit/chainlink/develop/evm-contracts/src/v0.6/ChainlinkClient.sol";  contract APIConsumer is ChainlinkClient {      uint256 public ethereumPrice;      address private oracle;     bytes32 private jobId;     uint256 private fee;      constructor() public {         setPublicChainlinkToken();     // 填入我们刚刚部署好的oracle地址         oracle = 0x5F66a231a29CE1513dc6c16407fDCe9D0aEE2cB0;     // 填入我们刚刚创建的地址         jobId = "4b9b6e7d89154a8d855affed3985aafd";     // 支付给Oracle的最小费用,可用在Configuration页面MINIMUM_CONTRACT_PAYMENT字段查看到         fee = 1 * 10 ** 18; // 1 LINK     }      function requestEthereumPrice() public returns (bytes32 requestId)      {         Chainlink.Request memory request = buildChainlinkRequest(jobId, address(this), this.fulfill.selector);          // 设置所要请求的API地址         request.add("get", "https://min-api.cryptocompare.com/data/price?fsym=ETH&tsyms=USD");          // API返回结果的解析路径         request.add("path", "USD");          // 为去除小数点将结果乘以的倍数         request.addInt("times", 100);          // 发送请求         return sendChainlinkRequestTo(oracle, request, fee);     }      function fulfill(bytes32 _requestId, uint256 _price) public recordChainlinkFulfillment(_requestId)     {         ethereumPrice = _price;     } }

部署好用户合约之后,向用户合约转入LINK,调用requestEthereumPrice方法,就可以测试我们的Chainlink预言机节点是否可以正常工作啦。

写在最后

理论上,搭建好Chainlink节点,部署好Chainlink预言机系统,即可提供预言机服务。用户如果通过您的预言机节点获取数据,需要像您的节点支付LINK作为费用,这部分费用即是您运营节点所带来的收入。但是目前Chainlink还处于发展的早期阶段,应用场景正在逐步探索过程中,如果您没有稳定的客户通过您的预言机来获取数据,所获取到的LINK无法覆盖掉服务器的运营成本,那么运营Chainlink预言机节点可能会带来经济上的损失。

加入Chainlink开发者社区 Chainlink节点部署教程

部分转自网络,侵权联系删除www.interchains.cchttps://www.interchains.cc/16715.html

区块链毕设网(www.interchains.cc)全网最靠谱的原创区块链毕设代做网站 部分资料来自网络,侵权联系删除! 最全最大的区块链源码站 !
区块链知识分享网, 以太坊dapp资源网, 区块链教程, fabric教程下载, 区块链书籍下载, 区块链资料下载, 区块链视频教程下载, 区块链基础教程, 区块链入门教程, 区块链资源 » Chainlink节点部署教程

提供最优质的资源集合

立即查看 了解详情