链资讯 链资讯
Ctrl+D收藏链资讯
首页 > 波场 > 正文

比特币:手把手教你测试Chainlink智能合约 -ODAILY_SDT

作者:

时间:

由于智能合约的不可更改性,在部署之前对其进行彻底的测试是至关重要的。在编写自动化测试时,开发人员有几个选择。

1.Solidity测试

2.Javascript/python/其他语言测试

通常情况下,用JavaScript和Solidity对合约进行两种方式的测试是很有用的,因为大多数dApp都会以这种方式与合约交互,你可以从这个示例测试仓库中看到。另一方面,当你测试一个主要使用点来自另一个链上合约的合约/库时,最应该使用Solidity。

很明显,为了更加测试更加全面,请同时使用这两种方法。如果你有一个简单的智能合约,比如:

编写一些Solidity测试非常简单,例如:

美国法院拒绝SEC主要证人作证,Ripple根据最新法院裁决提交“合理通知”辩护:3月7日消息,美国证券交易委员会(SEC)和Ripple Labs之间正在进行的法律斗争随着一项新的法院裁决继续进行。法院现在已经对双方的动议做出了裁决,即决判决和审判中不考虑专家证词。在判决中,法官Analisa Torres批准了部分动议,驳回了其他动议,原告和被告都没有占上风。然而,该裁决的一个关键结果是排除了1号专家Patrick Doody就合理的瑞波币购买者的看法作证。值得注意的是,SEC此前曾聘请Doody来分析代币购买者的期望,但法官现在批准了Ripple的动议,排除他的证词。没有Doody的证词,目前尚不清楚SEC将如何证明投资者对XRP有“合理的”利润预期。

此外,Ripple最近提交的文件指向了最高法院最近就Bittner案的一项裁决,该裁决涉及Ripple律师采用的所谓“合理通知”辩护。美国宪法的正当程序条款要求个人被公平告知哪些行为是法律禁止的。对于Ripple来说,公平通知的辩护为:它不可能知道要在证券监管机构注册XRP,因为该机构从未就加密环境下的证券构成提供足够明确的说明。Ripple Labs的律师认为Bittner和Ripple高管之间存在相似之处,并表示Bittner最近的裁决类似于它与SEC的斗争,应该予以考虑。Ripple Labs依赖于SEC之前的声明和行动,这些声明和行动使他们明白XRP不是证券,或者说它的辩护是这样的。因此,该公司没有理由相信他们违反了证券法。

据悉,Ripple Labs与美国证券交易委员会(SEC)的漫长斗争即将结束。双方一直在等待法官Analisa Torres对Ripple多年来出售XRP是否构成未注册证券发行做出裁决。结论可能需要几个月的时间,但SEC和Ripple仍可以向法院提交申请,以考虑新的信息。(Blockworks)[2023/3/7 12:46:45]

Bitcoin.com试图将比特币持有者引入DeFi世界:金色财经报道,加密货币平台Bitcoin.com希望通过将比特币(BTC)持有者引入DeFi领域,并在其平台上实施去中心化交易所(DEX)等新服务来扩大其生态系统。

Bitcoin.com的金融服务主管Corbin Fraser在2022年韩国区块链周(KBW)上表示,该公司正在从仅与比特币现金(BCH)相关联,转变为一个面向跨多链加密用户的DeFi平台。Fraser解释称,我们有很多BTC用户,这些人很多都想用他们的加密货币做更多事情,而不仅仅是持有它。而且他们知道在DeFi有机会,但它有点复杂。

正因为如此,Fraser补充说,他们的团队专注于努力使用户体验更容易,并提供一个更“友好”的加密货币钱包。除了DEX,这位高管还强调了他们发布预付借记卡和进行代币销售的计划。(Cointelegraph)[2022/8/9 12:12:27]

对于那些想要了解更多关于一般智能合约测试的人,这里有一些额外的来源,你可以查看。

-Ethereum.org

-Truffle

GaryVaynerchuk宣布VaynerNFT更名为Vayner3:7月17日消息,NFT 项目VeeFriends创始人Gary Vaynerchuk宣布,他的公司 VaynerNFT 将正式更名为 Vayner3,其团队也将会把业务逐渐拓展到更广泛的 Web3 领域,而不是仅局限于 NFT。

VaynerNFT 成立于 2021 年 7 月,隶属于 VaynerX,在过去的一年里,他们推出了多个 NFT 项目,随着行业和机会的增长,这家由 GaryVee 领导的公司扩大了产品范围,以满足整个 Web3 行业不断增长的需求,在新品牌下,该公司将专注于指导世界领先企业和知识产权所有者进行下一次消费者行为迭代,目前其合作伙伴包括威、百事可乐、美国公开赛、Coinbase 等。

据 NFTGo.io 数据显示,截至目前 VeeFriends NFT 系列市值达到 1.9385 亿美元,地板价为 7.95 ETH。(NFTevening)[2022/7/17 2:18:30]

-HardhatandWaffle

您至少需要熟悉Truffle或HardHat,才能阅读本文档的其他内容。你也可以从我们之前的一些文章中学习如何使用Truffle部署和测试Chainlink智能合约。另外你需要明白单元测试和集成测试是不同的,它们各自有非常重要的功能。

然而,当使用ChainlinkOracles和链上数据时,测试可能会变得有点棘手。一些传统的方法并不能完全覆盖每一个结果。在这篇文章中,我们将几乎只关注JavaScript测试,但如果你也想使用Solidity的方式做测试,这些方法也同样适用。

测试Chainlink智能合约的最简单方法

DeFiMoneyMarket(DMM)(是一个使用测试网来运行Chainlink测试的项目的例子。

测试Chainlink智能合约最简单的方法就是使用测试网!大多数项目会在主网之前部署到测试网上,但他们也可以不断重新部署来迭代他们的测试,因为测试网ETH是免费的。Kovan或Rinkeby上目前有很多Chainlink节点,pricefeeds,以及任何其他你要找的东西。在你的测试文件中,需要获得一些测试网的LINK和ETH。另一个简单的方法就是运行你自己的Chainlink节点,让它监控你正在运行的本地私有链。

与本地私有区块链相比,在测试网上运行测试并不是特别快。你还会面临触及faucet极限的可能。让我们看看如何在本地私有链测试你的Chainlink智能合约。

使用分叉

Gelato是一个使用分叉和Chainlink的项目例子。

ChainlinkPriceFeeds是Chainlink提供的最受欢迎的服务之一。PriceFeeds预言机网络聚合了来自去中心化的独立来源的数据,并在链上创建了一个真实的数据源。问题是,你如何测试你是否正确使用了这些价格数据?

-你是否部署自己的pricefeed?

-你是否直接忽略测试pricefeed?

-你是否完全跳过测试并祈祷你的dApp不会崩溃?

现在,我们非常欢迎你做第三种选择,但我们不鼓励你这样做,尤其是测试它们其实是一件很容易的事情。我们需要做的就是将我们正在使用的链进行分叉。如果你之前没有使用过ChainlinkPriceFeeds,请务必查看我们的文档。本节的所有代码都可以在chainlink-hardhat代码仓库中找到。Hardhat是一个类似于Truffle的框架,但有很多不错的质量很好并且有一定的差异化。

假设我们有一个使用ChainlinkPriceFeeds的合同,看起来像这样:

首先,我们正在使用主网pricefeed地址,但请不要担心,我们是故意这样做的。通常,要与主网pricefeed互动,我们必须部署在主网上。但是实际上,我们可以在运行测试时分叉链,查看如果将合约部署在主网上的情况会是什么样子,而无需实际在主网上进行部署。使用HardHat的设置,我们只需将分叉的相关配置添加到hardhat.config.js文件中即可。

我们的hardhat.config.js文件如下所示:

您会看到我们的`hardhat`网络有一个`forking`密钥。这意味着,当我们在`hardhat`网络上部署脚本时,我们将首先派生RPC_URL中的内容,然后将其部署到该网络中。这对于测试非常有用,因为我们实际上可以将智能合约部署到主网的分叉版本中,并对其价格进行测试。

来尝试一下吧!

这将通过在分叉主网来测试我们的智能合约。Truffleteams还有一个功能,你可以分叉主网,并基于分叉的网络进行测试。

使用Mocks

Aave是一个使用mocks和Chainlink进行测试的项目的例子。

不幸的是,分叉主网来测试与ChainlinkOracles的交互是行不通的,这是因为我们没有任何ChainlinkOracles监控我们的分叉网络。所以我们经常需要寻找其他方法。测试具有依赖性的对象和服务并不是什么新鲜事,但在编写单元测试时可能会带来困难。一个好的解决方案是模拟所有依赖关系,并将测试仅仅集中在合约本身。

Mocking本质上是用更简单的对象代替复杂的对象,以模拟我们要做的事情的功能。这对于使用ChainlinkAPICall、ChainlinkVRF或任何Chainlink外部适配器的项目来说是非常棒的。通常情况下,工程师会在他们的测试文件夹中创建一个`mocks`文件,其中包含了所有的虚拟mocks。我们可以看到用这样的文件模拟一个ERC20的简单版本,它可以模拟我们在测试时与一个真实的ERC20一起工作。

一个更相关的mock将与模拟Chainlink消费者者一起使用,或者与ChainlinkOracle进行交互的智能合约。看起来像这样:

在这个Mock中,我们有`sendTweet`函数--在一个_真实的_Chainlink消费者合约中,它会向一个Chainlink节点发出ChainlinkAPI请求来"发送一条推特"。然而,在我们的mock中,我们只是发出一个日志,说明发送了一条tweet,这可以是一个简单的方式来虚构得到Chainlink节点的响应。你可以在tweetherrepo中看到所有这些模拟的操作。那个repo也使用了Truffle和Hardhat的组合,所以你可以看到这两者的良好配合。

你可以看到很多生产项目都在使用这种方法。例如,Aave就使用ChainlinkMocks来运行他们的测试。

使用助手来部署

最复杂的测试可以在trufflesmartcontractkitmock中找到,这是Chainlink工程师用来构建智能合约的首选工具之一。一旦你安装了Truffle,你可以通过打开一个新的repo,然后运行下面的命令,让你自己的盒子快速运转起来:

`truffleunboxsmartcontractkit/box`

一旦你安装好这个,你就会看到`MyContract_test.js`,它运行了所有你在调用ChainlinkAPI时想要覆盖的潜在场景。在ChainlinkTrufflerepo中查看它。

总结

测试Chainlink智能合约是确保你的代码在开发时保持高质量的好方法,上面的一系列选项让测试变得比以往任何时候都要简单。不要以为在测试中运行复杂的对象与彼此之间的测试太困难。当涉及到扩展你的dApp并构建一些惊人的东西时,集成测试是至关重要的。

对于那些希望开始使用这些神奇工具进行构建的人来说,一定要点击示例中的链接,或者直接前往Chainlink文档。你会发现你需要开始并成为Solidity和区块链工程大师的一切。

标签:比特币UNISDTUSD比特币最新价格行情美元交易United Emirate Decentralized CoinUSDT币usdc币倒闭的可能性大吗

波场热门资讯
MON:行情分析:为什么我们能等来“铁树开花”,这是运气还是实力?-ODAILY_reth币投资机构

BTC行情分析 分析行情之前,看两则新闻:“支持比特币交易的CashApp入围美区苹果商店年度前十,支持比特币交易的CashApp以及Venmo登上苹果美国区AppStore年度免费应用排行榜.

Money:烤仔观察:wēi?wéi!wěi?wèi?-ODAILY_ETH

对于区块链行业从业者来说,不管是神龙见首不见尾的中本聪,还是年少成名的V神,好像每个人都能讲上几段关于他们的八卦.

比特币:QKL123投研:比特币再度新高后休整,主流接力加速-ODAILY_比特币最新价格行情美元交易

行情概述: 继上期报告所述,比特币上升空间被打开,随后在圣诞节期间站稳24000并出现加速行情,卖盘枯竭,趋势的车轮不断向上,也正说明牛市中的一切利空都是洗盘;本周有可能继续冲高.

COI:年关将近比特币大起大落,以太强行补涨能否再创新高-ODAILY_BUND币

大饼昨日可谓是大起大落,一路上行冲高至28424,随后又快速下跌瀑布,今日早盘延续昨日跌势继续下探到25838附近,刚好走出了昨日金妍给的空单目标26200下方.

DEF:2020区块链年度盛典暨第二届博链财经“星势力”颁奖典礼成功举办-ODAILY_NFL

2020年10月25日,由博链财经主办的2020区块链年度盛典暨第二届博链财经“星势力”颁奖典礼在上海大厦酒店成功举办,现场累计有超过500位区块链行业大佬和从业者参加此次年度盛会.

区块链:船运集装箱一箱难求,区块链能否催化行业数字化转型?-ODAILY_区块链是穷人的最后一次机会

近期,由于全球新冠肺炎疫情此起彼伏,国际物流运力下降,集装箱船运价格暴涨,爆仓甩柜成为常态,行业“一箱难求”,统计数据也显示我国港口集装箱吞吐量创下年内新高.