当我们与多个 DEFI 协议交互时,往往只能在主网上测试,我们应该怎么做呢?
现在是 2022 年。为应对 covid-19 经济衰退而采取的量化宽松政策已导致眼镜蛇效应.全世界已经陷入了更严重的衰退。传统金融已经一去不复返了,而以太坊则是新金融科技革命的唯一希望,即这场革命可以使世界摆脱这场经济噩梦。
而你是一个才华横溢且有抱负的开发人员,希望创建下一个革命性的金融应用程序,这将有助于拯救我们所有人并恢复和平。你知道你的应用程序需要与主网上已建立的协议进行交互,例如 Uniswap(交易所),Compound/Aave(借/贷),Nexus Mutual(保险)等。你想要快速构建它。
唯一的问题是,你不知道从哪里开始,并且你有很多问题:
你如何编写合约?
你如何测试合约?
你如何与其他协议交互?
你如何调试交易?
好吧,幸运的是,亲爱的有抱负的开发人员,我花费了 8 个月的投入到这个领域,专门为你准备了这篇文章。
免责声明: 本文是对我“非常”个人的经验的总结。
如果你的目标是快速交付高质量代码,则 Dapp.tools 是你应该选择的工具。如果你想进行更深入的探讨,我也写过单独文章,。
但是,如果你希望使用其他框架,则我建议按以下顺序选择:
对我来说,我发现的最高效测试设置是使用 EVM 实现而不是实际的测试网运行代码。这样,我可以测试逻辑,而无需等待交易出块。仅此一项就极大地提高了我们的迭代速度。
如果你想进行确定性测试(不会在星期二通过,而星期五失败),我强烈建议你使用 dapp.tools.其背后使用 hevm,这是 Haskell 的 EVM 实现
使用 Haskell 编写的 EVM(而不是 Python 或 JS)可以立即提供更严格的保证。如果失败,则可能与你的代码有关,而不是与 EVM 的实现有关。
其他 EVM 实现包括:
在真实的产品中进行测试 - Andre Cronje
忽略所有其他网络,例如 Rinkeby,Kovan 或 Goerli。你唯一需要关注的应该是主网,网络 ID 为 1。
如果你正在与多个协议(例如 OneInch,Curve,Uniswap,Aave,Compound 等)进行交互,则很有可能。并非所有协议都将部署到同一测试网中。但是有 100%的可能性将它们都部署在主网上。因此,你需要将主网用作测试网。
在流行的 EVM 实现中,例如 hevm, buidler-evm,和 ganache-cli,有一个选项可以从主网 fork . 可以检索主网状态(即 Uniswap 上的流动性),并在本地沙盒环境中针对该状态运行测试。
我在后台使用 ganache-cli 缓存数据,然后再将其发送到 hevm。这样可以大大减少测试时间,尤其是当测试需要与主网协议进行大量交互时
如果你使用的是 dapp.tools, buidler,或 brownie,那应该恭喜你,他们已经将日志记录和堆栈跟踪内置到了测试框架本身(dapp.tools
的 -v
),调试合约应该快速简单。
hevm 堆栈跟踪
但是,如果你使用的是 ganache-cli 的框架。那就得放慢你脚步,去放置 revert 消息,以找出问题所在。
有一些人会说,ganache-cli 有一个 debugger。我很清楚并且已经使用过它,但是由于花费了很多时间和精力,最终还是回到了使用 revert 消息。
哇,在主网上失败的交易,我该如何调试? Ethtx.info 和 bloxy.info 提供了有关指定交易哈希的详细堆栈跟踪(我怀疑它背后使用的是 openethereum 的[debug_tracetransaction](https://geth.ethereum.org/docs/rpc/ns-debug #debug_tracetransaction)。
ethtx.info 堆栈跟踪示例
etherscan - 通用区块链浏览器
bloxy - 更高级的区块链浏览器
ethtx - 堆栈跟踪
4bytes - 函数签名数据库
furucombo - 聚合了 defi 操作
dapp-pm - Dapp 软件包管理器
eth95 - 可与本地沙盒合约快速交互的简单的 UI
daistats - DAI 统计信息一目了然
sassal.eth 的建议 - DeFi 工具上的 Twitter 时间线
dapp.tools 很不错。
月月月
个评论:
感谢您的善举,每一次解答会成为新人的灯塔。回答被采纳后获得20算力和相应LK币奖励。
什么是区块链和以太坊?在哪里使用?
Long
在以太坊区块链中使用代币
老虎or猫咪
私有以太坊上的NodeJs区块链
DEFI爱好者
在两个以太坊和Corda构建的独立区块链网络之间转移价值
YYF
以太坊社区是否准备好反对ASIC?
三地
去中心化的追逐:比特币与以太坊的全节点
撰文 | NESTFANS.知鱼出品 | NEST 爱好者(nestfans.com)引言...
波bobo|2021.01.28
以太坊上的 「BTC 一站式商店」?解析 BadgerDAO 产品特性与发展潜力
就像稳定币的发展将引领我们走向智能稳定币和无数效用一样,接下来可能发生的是比特币在以太坊上...
DEFI爱好者|2021.01.28
Ethereum Optimism 分阶段推出测试网,简单了解流程与参与方式
公共测试网预计在二月底启动,任何人都可以在其中部署合约并与之交互。转载《以太坊爱好者》原文...
Blockchain|2021.01.28
如何开发出好用的轻量级客户端?
大约 5 年前,我们开始构建 Trinity —— 以太坊网络上的新型 “轻量级客户端”。...
Angle|2021.01.27
GKR+Groth16与Groth16验证MiMC哈希的验证时间比较
原文标题:Prover time comparison of GKR+Groth16 vs...
区块技术花|2021.01.27