在Solidity智能合约中获取价格数据是DeFi应用的常见需求。在Solidity中为了获取ETH,BTC或者其他加密货币的价格,你可以通过下面两种方式之一完成:使用Chainlink的喂价获取价格数据
通过Chainlink预言机使用外部API获取价格数据
在本技术教程中,我们将详细讲解这两种方法,并分享代码案例帮助你构建、部署并测试智能合约。首先,我们快速了解一下为智能合约提供外部数据时,数据质量和端到端去中心化的重要性。
智能合约对准确、可靠的价格数据的需求
今年DeFi协议呈爆发式增长,DeFi的总锁定价值从一月份6.8亿美金激增到现在的140亿美金。这些DeFi协议依赖外部价格数据作为数据源,因为区块链不能在本地直接访问外部数据。此外这些应用需要提供数据保障来保护应用免遭漏洞利用,如价格预言机攻击等攻击。
中国经营报:怡亚通频繁自宣“区块链”概念:6月28日消息,怡亚通近日接连发行两笔5亿元公司债,旨在补充怡亚通及其下属子公司流动资金偿还金融机构借款,但是怡亚通最近频繁对外宣称加速区块链业务布局。据了解,怡亚通衍生出的金融服务平台宇商金控声称拥有小额贷款,保理,融资租赁和资产管理牌照,正在利用区块链等等金融科技打造全产业链条的数字金融生态。
此外,怡亚通控股公司深圳市和乐电子商务有限公司于2019年8月更名为深圳市星链供应链云科技有限公司并上线“星链友店”APP,但这款应用只是一款单纯的购物软件且需要邀请人邀请。上海立新律师事务所律师陈功表示,星链友店属于打涉嫌的擦边球,即下线越多奖励越多,消费者应该对平台予以一定警惕。(中国经营报)[2020/6/28]
Chainlink喂价能够降低这些攻击的风险,实现方法是提供聚合自多种高质量数据提供商的数据,并通过Chainlink网络上的去中心化预言机将数据输入到链上。Chainlink的去中心化预言机机制能确保最终的价格数据反映广泛的市场信息覆盖,这意味着最终的价格数据是在汇总整个市场上各种不同的价格数据之后确定的,而不只是一小部分信息,同时也会考虑到其他因素,如成交量和流动性等。
西南首个“区块链智慧产业园”落地成都:5月29日,由四川省国资委与中国移动四川公司联合举办的“国有资本布局数字经济发展推进会”在成都召开。四川能投党委副书记、总经理王诚代表省属企业发言,就能投集团区块链等数字经济发展做了详细介绍。值得一提的是,四川能投与中信集团所属中信建设宣布将联手打造西南首个技术领先、面向全国的以“区块链存储+科技创新+产业孵化”为主的超大规模数字经济智慧产业园。据悉,该园区包括超大规模区块链数据中心、科技创新中心、数字产业孵化中心三大功能区,通过建立大数据与人工智能实验室等一系列举措促进重大技术攻关、知识产权申报和知识成果转化,有力提升四川IDC产业在全国的发展排位,成为数字产业孵化集聚区的核心阵地。
同时,园区将重点引入云计算、大数据、人工智能、物联网、VR/AR等领域创新企业入驻,目前已分别与阿里、华为等10余家大型IT企业及清华、北大等知名高校开展数字产业战略合作,聚焦落地区块链行业应用。(封面新闻)[2020/5/29]
现在我们理解了Solidity智能合约对准确、可靠的价格数据的需求以及Chainlink喂价预言机所扮演的重要角色,下面我们将详细解读使用Chainlink喂价获取最新的以太坊价格数据的案例。下面的步骤也能应用到比特币以及其他加密货币。
动态 | Pundi X区块链手机即将发布 推出“区块链模式”:据coindesk报道,区块链公司Pundi X宣布其区块链手机XPhone即将上线,该手机将允许用户在Android应用程序传统模式和“区块链模式”之间切换,这将授予用户访问DApps的权限。[2019/3/1]
在以太坊上使用Chainlink喂价
Chainlink喂价使用多种高质量的数据输入,并通过Chainlink预言机的去中心化网络聚合这些数据,将价格数据输入到参考合约中,这些数据结果会在聚合器智能合约中聚合成为最新的价格数据作为可信答案。使用多种节点聚合的多种数据源,我们能够确保我们的价格数据达到最高质量,并且不会遭受漏洞利用或者价格预言机攻击。
创建智能合约
第一步是获取测试网的ETH作为智能合约的gas费。在获得一些ETH后,构建一个用上Chainlink喂价的智能合约的最简单的方式是从标准的价格消费者合约开始。这是用于启动对Chainlink喂价请求的基本合约。这部分基于演示目的,我们将使用已经定义在标准的价格消费者合约中的ETH/USD喂价,但是我们将详细解释这部分的代码,便于你了解它的工作原理。
金色快评 | “区块链+审计”应由监管层推动落实:据Coindesk消息,金融信息服务公司(FISC)与20家银行共同开发了区块链财务报告平台,将上市公司的交易数据转移到区块链上。德勤,安永,毕马威和普华永道四家会计师事务所均在审计上市公司的中期财务报告时进行试用。
财务报告审计的关注重点是报告的真实性和完整性,在传统的审计方法下,审计师需要通过抽查的方式,对报告信息和外部数据进行核对。将审计工作与区块链技术相结合,能够有效降低审计师的工作量、实现审计范围全覆盖,但必须先完成财务数据、交易信息的上链。这就需要对财务数据、交易数据的存储方式进行改变,从服务器或硬盘存储,调整为区块链存储。数据上链除方便审计外,更能从根本上杜绝企业“经营、监管两套账”的行为,最大的受益者实为监管层。从推行数据存储方式变革的角度讲,不能仅仅是某一家企业或者某一个行业的数据上链,需要实现数据全部上链,那么这一变革也需要由监管层面来推动。所以,“区块链+审计”应用落地,重点在于监管层面。[2018/7/21]
首先,我们可以看到AggregatorV3Interface合约接口被导入。这样我们的智能合约就可以引用部署在Kovan测试网络的喂价合约。接着,我们创建一个合约实例并保存到本地变量中。
接下来,我们可以看到喂价参考合约在构造函数中被初始化。Kovan测试网上的ETH/USD喂价参考合约部署在地址为0x9326BFA02ADD2366b30bacB125260Af641031331上。
然后我们看到一个已经定义好的函数用于从喂价聚合合约中获取最新的价格数据,该合约在上面提到的构造函数中实例化。为了获取价格,我们定义一个新的函数从聚合器合约中调用latestRoundData函数。这是返回聚合器合约当前状态的函数,在本例中,我们取出当前价格并将其返回到消费函数中。
部署和测试智能合约
现在我们准备部署和测试我们的合约。在Remix中编译合约,然后在“部署”选项上,将环境更改为“InjectedWeb3”,并确保下面的钱包地址是你的MetaMask钱包中包含前面获得ETH的钱包地址,点击部署按钮,然后按照步骤操作即可。最终结果是你将智能合约部署到了Kovan测试网。需要记录一下通过Remix控制台中的事务输出记录的已部署的合约地址。
部署后,我们只需要执行“getLatestPrice”函数。结果应该是该函数从ETH/USD聚合器合约返回的最新价格,然后可以在我们的智能合约中链上调用这个数据。注意我们不需要为请求发送任何LINK代币,也不使用任何ETH,该交易纯粹是读取链上ETH-USD聚合器合约中的数据。
ETH/USD喂价结果
在Solidity中获取其他价格数据
Chainlink喂价提供了大量的位于头部的DeFi价格对的价格数据。如果你需要在你的智能合约中获取的资产价格数据没有被现有的喂价合约覆盖到,比如特定的股票的价格,你可以自定义Chainlink预言机以调用任何的外部API。使用Chainlink预言机获取外部价格数据的最简单方法是从标准Chainlink的APIConsumer合约开始。这是通过Chainlink预言机来启动对外部数据请求的标准化合约。
完成创建APIConsumer合约后,就可以去找到想要从中获取价格数据的API。如,你可以使用AlphaVantageAPI查找IBM股票的当前价格。
有了API端点后,你只需要在合约中设置正确的参数并将请求发送给Chainlink预言机。可以在Chainlink文档中找到有关此内容以及如何使用标准APIConsumer合约的更多信息。
请记住在生产环境中,你将会希望把这种使用方法去中心化,或者从喂价合约本身获取此特定数据。
总结
Chainlink喂价提供了一种可靠的方法来获取高质量的比特币、以太坊以及其他加密货币价格数据到Solidity智能合约中。此外,Chainlink的预言机框架还提供了可以快速、轻松地获取其他价格数据的灵活性,如股票、商品和其他资产的价格数据。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。