由于智能合约的不可更改性,在部署之前对其进行彻底的测试是至关重要的。在编写自动化测试时,开发人员有几个选择。
1.Solidity测试
2.Javascript/python/其他语言测试
通常情况下,用JavaScript和Solidity对合约进行两种方式的测试是很有用的,因为大多数dApp都会以这种方式与合约交互,你可以从这个示例测试仓库中看到。另一方面,当你测试一个主要使用点来自另一个链上合约的合约/库时,最应该使用Solidity。
很明显,为了更加测试更加全面,请同时使用这两种方法。如果你有一个简单的智能合约,比如:
编写一些Solidity测试非常简单,例如:
印尼国家加密货币交易所已开始运作:金色财经报道,根据印度尼西亚商品期货交易监管机构(CFTRA)的一份声明,印尼政府一周前宣布的国家加密货币交易所已经开始运作。该平台将是该国唯一允许合法交换数字资产的平台。
CFTRA证实该交易所于7月20日开业。此外,CFTRA的法令还与交易所一起建立了期货结算所。清算所本质上是买方和卖方之间的调解人,确保交易顺利进行。
此前有报道称,CFTRA将把加密货币销售限制在本地交易,同时使其与国际市场发展保持一致。持牌交易商将有一个月的时间加入该交易所。[2023/7/21 15:50:24]
对于那些想要了解更多关于一般智能合约测试的人,这里有一些额外的来源,你可以查看。
-Ethereum.org
-Truffle
-HardhatandWaffle
您至少需要熟悉Truffle或HardHat,才能阅读本文档的其他内容。你也可以从我们之前的一些文章中学习如何使用Truffle部署和测试Chainlink智能合约。另外你需要明白单元测试和集成测试是不同的,它们各自有非常重要的功能。
ChatGPT更新内容包括更多可控制的API模型、功能调用能力:金色财经报道,OpenAI公布(对ChatGPT的)更新内容,包括更多可控制的API模型、功能调用能力、更长的上下文和更低的价格。此外,嵌入模型成本降低了75%。[2023/6/14 21:34:40]
然而,当使用ChainlinkOracles和链上数据时,测试可能会变得有点棘手。一些传统的方法并不能完全覆盖每一个结果。在这篇文章中,我们将几乎只关注JavaScript测试,但如果你也想使用Solidity的方式做测试,这些方法也同样适用。
测试Chainlink智能合约的最简单方法
DeFiMoneyMarket(DMM)(是一个使用测试网来运行Chainlink测试的项目的例子。
测试Chainlink智能合约最简单的方法就是使用测试网!大多数项目会在主网之前部署到测试网上,但他们也可以不断重新部署来迭代他们的测试,因为测试网ETH是免费的。Kovan或Rinkeby上目前有很多Chainlink节点,pricefeeds,以及任何其他你要找的东西。在你的测试文件中,需要获得一些测试网的LINK和ETH。另一个简单的方法就是运行你自己的Chainlink节点,让它监控你正在运行的本地私有链。
基于Solana的memecoin项目Bonk Inu宣布推出DEX:金色财经报道,基于 Solana 的 memecoin 项目 Bonk Inu(Bonk)开发人员宣布推出去中心化交易所 (DEX),名为 BonkSwap 的 DEX 将利用 Solana 智能合约允许用户交换 solana (SOL)、bonk inu (BONK) 和稳定币。BonkSwap 的 80% 将用于奖励流动性提供者以及 Bonk 和 BonkSwap LP 头寸的锁定利益相关者。[2023/4/13 14:01:53]
与本地私有区块链相比,在测试网上运行测试并不是特别快。你还会面临触及faucet极限的可能。让我们看看如何在本地私有链测试你的Chainlink智能合约。
使用分叉
Gelato是一个使用分叉和Chainlink的项目例子。
ChainlinkPriceFeeds是Chainlink提供的最受欢迎的服务之一。PriceFeeds预言机网络聚合了来自去中心化的独立来源的数据,并在链上创建了一个真实的数据源。问题是,你如何测试你是否正确使用了这些价格数据?
-你是否部署自己的pricefeed?
-你是否直接忽略测试pricefeed?
迪拜虚拟资产监管局计划将员工人数增加四倍:2月8日消息,迪拜的加密货币监管机构计划在未来几个月内将其员工人数增加四倍,以处理数百份许可证申请。
迪拜虚拟资产监管局首席执行官Henson Orser在上月上任以来的首次采访中表示,预计到今年年底将处理约300份新申请,并将于6月开始向已经根据迪拜最低可行产品许可制度获得授权的公司发放最终许可证。该部门于去年3月成立,其员工已从当时的2人扩大到20人左右。
昨日消息,迪拜虚拟资产监管局发布《2023年虚拟资产及相关活动条例》,要求加密公司必须获得授权和相关许可才能在迪拜运营。(彭博社)[2023/2/8 11:54:41]
-你是否完全跳过测试并祈祷你的dApp不会崩溃?
现在,我们非常欢迎你做第三种选择,但我们不鼓励你这样做,尤其是测试它们其实是一件很容易的事情。我们需要做的就是将我们正在使用的链进行分叉。如果你之前没有使用过ChainlinkPriceFeeds,请务必查看我们的文档。本节的所有代码都可以在chainlink-hardhat代码仓库中找到。Hardhat是一个类似于Truffle的框架,但有很多不错的质量很好并且有一定的差异化。
假设我们有一个使用ChainlinkPriceFeeds的合同,看起来像这样:
马斯克将收购推特的股权承诺总额提高到335亿美元:5月26日消息,埃隆·马斯克放弃了用与特斯拉股票挂钩的保证金贷款为其收购推特提供部分资金的计划,收购案股权融资规模从而增加到335亿美元。据周三递交的一份监管文件显示,马斯克将再提供62.5亿美元的股权融资以抵消同等规模的保证金贷款,该笔贷款在本月早些时候已被削减至62.5亿美元。文件还显示,马斯克继续寻求额外的融资承诺,包括与推特前首席执行官Jack Dorsey和其他投资者讨论将股权注入推特。(金十)[2022/5/26 3:42:18]
首先,我们正在使用主网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和区块链工程大师的一切。
投资千万条,风险第一条;策略千百种,哪个适合我;思路没跟上,踏空两行泪。关注谈喻凯,精选全球最准行情分析,消息面,技术面为你指引解读,带你把握行情,瞄准良机,稳健交易.
1900/1/1 0:00:00昨天的南宫远的文章《不懂就喷:DOT/KSM是机会还是坑?》,引发了我今天的思考。今天的文章无法解答南宫远的疑惑,南宫远的问题本质是“市场取向的反面”,“也就是为什么市场不这样选”?这个问题就像.
1900/1/1 0:00:00上次的文章当中,有人质疑我对BOX数据的“断章取义”,用来影射BOX表现不行。而我本在文章里面注明了“仅一年”数据,可以预知的是如果我不提到数据的来源和计算方式,其实没任何人是考究数据真伪问题.
1900/1/1 0:00:00网络正在改变我们的认知社会发展的速度受到知识传播的速度所影响。而每一次社会发展方向上的改变,都是全人类共识的改变。最早的信息传播途径是去中心化的,人们通过口口相传的方式传播知识.
1900/1/1 0:00:00EagleHuang在创办Deepcoin之前,拥有超过10年互联网经验,在国内互联网巨头公司担任过多条业务线负责人.
1900/1/1 0:00:0010月是比特币的黄金月,自10月1号开始月线开盘在10777币价附近,于10月2号最低触及10376附近之后,比特币开启了一路上涨模式,整体来看,经历了2个盘整周期.
1900/1/1 0:00:00