改成:
我们先来修改一下代码,以便从一个新的API接口(OpenWeatherMap)获取天气数据。为了利便解说,我们先在这里免费注册,得到一个免费的API秘钥。账号通过验证后,,我们就可以在这里看到API秘钥,以及都市当前天气数据API文档。注:你注册后或许需要期待十分钟秘钥才会完全生效。
然后就搞定了!此刻,main object的temp值就便是天气API输出的气温了,因此我们的response.data.result参数如上所示。
req.add(“function”, “GLOBAL_QUOTE”);
{“jobRunID”:0,”data”:{“coord”:{“lon”:-71.06,”lat”:42.36},”weather”:[{“id”:804,”main”:”Clouds”,”description”:”overcast clouds”,”icon”:”04d”}],”base”:”stations”,”main”:{“temp”:296.81,”feels_like”:298.49,”temp_min”:295.15,”temp_max”:297.59,”pressure”:1008,”humidity”:78},”visibility”:10000,”wind”:{“speed”:2.6,”deg”:360},”clouds”:{“all”:90},”dt”:1599162213,”sys”:{“type”:1,”id”:3486,”country”:”US”,”sunrise”:1599127933,”sunset”:1599174905},”timezone”:-14400,”id”:4930956,”name”:”Boston”,”cod”:200,”result”:296.81},”result”:296.81,”statusCode”:200}
appid
const url = ‘https://min-api.cryptocompare.com/data/${endpoint}’
req.add(“symbol”, “TSLA”);
· 如何运行外部适配器?
可以输入API秘钥和都市名boston,对API举办测试,然后将URL复制到欣赏器(假如返回错误说API秘钥无效,可以等几分钟再试一次)
我们将在之后的视频或博客文章中具体探讨如何运行外部适配器。假如你已经开拓出了新的适配器,可以先临时让节点帮你运行,并插手我们的社区!
$ node app.js
[email protected]:[~/code/ExternalAdapterTemplate – (master)] $ yarn start
}
以上就是外部适配器的成果,那么我们接下来看一下它的运行道理。
· 焦点适配器
开拓外部适配器最简朴的方法就是把它做成一个API接口。这样一来,就可以机动定制链下计较方法,利用任何编程语言,而且挪用API传输并吸收数据。关于如何开拓API接口有很多解说资料,接下来我们将在nodejs中看一个简朴的Chainlink适配器模板。别的尚有python版本的示例 ,假如你感乐趣也可以查察。我们会基于下面这个代码库举办开拓,这是一个成果完整的外部适配器,你可以轻松定制所需的数据。你也可以从零开始开拓,不外用这个代码库开拓会简朴许多。
const appid = process.env.API_KEY;
tsyms
改成:
http://localhost:8080/是API处事器期待响应的地点,–data后头的参数是我们为了让Chainlink节点看懂数据请求而发送的参数。Chainlink节点发送的json请求包罗:
API/外部适配器的处事器会被启动,并期待被挪用。
}
你可以发明,你甚至都不消亲自运行节点就可以利用本身的外部适配器。这是最抱负的环境,因为我们但愿本身的适配器可以被其他预言机节点利用,这样就可以有很多节点会见数据,并使Chainlink网络保持极高的去中心化程度。
我们此刻要把这个外部适配器稍作修改,原来它获取的是以太币价值,此刻要改为获取都市天气数据。
bytes32 jobId = “802ec94e00184b789a016b8e71ae9fb4”;
{“jobRunID”:0,”data”:{“USD”:441.49,”result”:441.49},”result”:441.49,”statusCode”:200}
什么是外部适配器?
然而,Chainlink焦点适配器往往在机动性和成果性上无法满意开拓者所有的需求,好比
response.data.result = Requester.validateResultNumber(response.data, [‘main’,’temp’])
这样,我们无论输入city、town照旧q ,都暗示city。
别忘了要添加到.gitignore中!假如你在运行curl呼吁测试时碰着任何问题,也可以在终端运行 export API_KEY=<API_KEY>
然而,我们不能将API秘钥写死在代码中。
更新前的customParams:
我们要修改index.js文件(假如要上线则需修改test/index_test.js测试文件)。app.js界说了外部适配器/API处事器响应请求的方法,我们此刻先不消管。在之前示例里的data object中,我们利用了两个参数,即from和to参数。我们可以通过更新customParams来定制化参数:
const params = {
正如你所看到的,外部适配器长短常强大的东西,开拓者可以用来富厚智能合约的成果并晋升其连通性。别的,还可以利用API认证和链下计较等layer2办理方案来晋升外部适配器的机动性。假如这篇文章对你有任何开导,接待介入Chainlink黑客松,实验应用你新学到的技术!这次黑客松的奖金高出4万美元,但愿各人能踊跃介入!
2. 让节点运营商运行我们的适配器(#ask-a-node-operator discord)
const tsyms = validator.validated.data.quote.toUpperCase()
变动后:
在data object中,可以清楚地看到from和to参数。这些是我们配置的定制化参数,让外部适配器可以或许得到各类差异的价值数据。可以看到,当运行curl剧本时,会返回以下功效:
这是一个curl呼吁,向我们刚开始运行的API处事器发送HTTP post请求。你可以在当地终端窗话柄验一下。
· 外部适配器
然后需要将参数从:
fsym,
quote:[‘quote’, ‘to’, ‘market’],
const q = validator.validated.data.city.toUpperCase()
要将API秘钥放到.envrc文件中,而不是放到源代码中,因此要新建这样一个.envrc文件:
此刻我们要添加参数。我们的两个参数是都市(文档里的都市是q)和API秘钥(`appid`)
copyPath[0] = “Global Quote”;
注:由于以太币价值一直在变换,因此这里的数字大概会产生变革!
名目如下: {“id”:”0″, “data”:{}}
req.addStringArray(“copyPath”, copyPath);
变动后:
yarn
3. 亲自运行节点(不须要)
以上是完整版代码,你可以实验利用。你也可以利用任何API的文档举办实验,因为此刻你应该已经发明其实套路都是一样的!
endpoint: false
curl -X POST -H “content-type:application/json” “http://localhost:8080/” –data ‘{ “id”:0, “data”:{ “from”:”ETH”, “to”:”USD” } }’
配景
用这个URL就可以知道需要做哪些更新:
· 将数据传输至其他区块链(互操纵性)
外部适配器可以会见优质数据并使智能合约可以或许很是机动地毗连至付费web API。今朝浩瀚安详靠得住的预言机网络都已接入外部适配器,个中包罗高出35个价值参考数据,总共保障了30多亿美元的DeFi资产。本文将探讨以下问题:
然后,安装依赖并启动API处事器。
yarn start
Chainlink.Request memory req = buildChainlinkRequest(jobId, address(this), this.fulfillEthereumPrice.selector);
都市可以在本来的代码长举办修改:
将它改成:
在原生语言solidity中挪用API可以将链下数据传输至链上智能合约应用。世界各地的开拓者可以操作Chainlink的去中心化预言机将链下真实世界的数据和事件接入区块链情况。Chainlink内置的焦点适配器可以轻松设置并验证来自任何开放API的数据。
· API接口认证(掩护API秘钥隐私)
API认证
https://min-api.cryptocompare.com/data/price?fsym=ETH&tsyms=USD
· 如何利用外部适配器?
}
string[] memory copyPath = new string[](2);
const customParams = {
很好!此刻就能完美运行了!我们建设了要害内容,让Chainlink节点可以或许领略数据请求。你可以清楚地看到在链下展开运算的长处,智能合约可以将大量计较事情放到链下运行,然后再将计较功效返回至链上。
获取天气数据
· 什么是外部适配器?
要留意,Chainlink节点会扫描所有适配器,一旦发明白在它适配器/任务清单中的外部适配器,就会举办挪用。我们可以本身挪用一次,模仿Chainlink节点请求的进程。
利用外部适配器接下来就是如何利用适配器。我们先像往常一样将job ID和预言机ID添加至代码中。然后添加Alpha Vantage文档中的所有参数。
endpoint: false
sendChainlinkRequestTo(oracle, req, fee);
变动前:
在PatrickAlphaC模板代码库中的weather-api分支中可以查察。
· 其他焦点适配器无法满意的成果
这个外部适配器实际上内里包裹着一个API接口,这也是外部适配器的常见框架。
data object
1. 将适配器添加至第三方节点分类信息平台,好比market.link
更新后的customParams:
city:[‘q’, ‘city’, ‘town’],
我们来挪用一下API。
}
yarn run v1.22.4
注:点击这里相识关更多情况变量
将功效从:
address oracle = 0x56dd6586DB0D08c6Ce7B2f2805af28616E082455;
一个id
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。