如何更改已部署智能合约的字节码

  • mixbytes
  • 发布于 2021-11-25 20:36
  • 阅读 43

本文介绍了如何使用Hardhat框架更改已在主网络和测试网络上部署的智能合约的字节码。作者提供了实际应用的示例代码,包括如何配置Hardhat和调用区块链函数来实现字节码更改。这对于测试和修改合约逻辑非常有用。

作者:MixBytes团队

简介

使用Solidity或Vyper编程语言开发智能合约时,总是需要在一个特殊环境中创建一些测试。目前,为了在测试网部署新创建的智能合约,存在几种工具,其中最受欢迎的是hardhat、brownie和truffle。在本文中,我们将讨论如何更改已在主网部署的智能合约的字节码,因此也可以在测试网中进行更改。如果你想更改某些逻辑以供测试使用,或如果你想更改预言机中的价格,比如下面将讨论的案例,这可能会很有用。

如何正确使用hardhat函数来更改已部署智能合约的字节码?

为了准备这些测试,我们使用了这篇文章作为示例。首先,你需要通过npm或yarn安装hardhat > 2.4.0。接下来,你必须将要更改的智能合约代码的副本添加到项目存储库中。在我们开始讨论代码之前,有一个小建议,如果你在hardhat配置中使用blockGasLimit,你必须正确调整它,以便测试能够执行(在我们的案例中,我们简单地从配置中删除了此参数)。将所有必要的更改添加到此代码中,并通过ethers.getContractFactory将其部署到测试网,如下所示:

const oracles = await ethers.getContractFactory("AaveOracle");
const oracle = await oracles.deploy(
      ["0x6B175474E89094C44Da98b954EedeAC495271d0F"],
      ["0x773616E4d11A78F511299002da57A0a94577F1f4"],
      "0x5B09E578cfEAa23F1b11127A658855434e4F3e09",
      WETH.address,
    );

在上面的代码中,我们有AaveOracle,其中包含Aave Oracle的所有代码,附加了一些小修改,以及WETH.address,它只是以太坊主网中的包裹ETH字符串(0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2)。deploy函数中的第一个参数是一个资产数组,这在预言机中使用(在我们的案例中,它是数组中有一个资产== DAI地址0x6B175474E89094C44Da98b954EedeAC495271d0F)。第二个参数是数据源数组(在我们的案例中,它是chainlink的DAI/ETH数据源0x773616E4d11A78F511299002da57A0a94577F1f4)。第三个参数是回退预言机(在我们的案例中,它只是Aave回退预言机0x5B09E578cfEAa23F1b11127A658855434e4F3e09)。完成所有这些步骤后,你可以使用hardhat函数eth_getCode()来获取新部署智能合约的字节码,然后你必须使用eth_setCode()将此代码添加到测试网中的合约地址:

const code = await hre.network.provider.send("eth_getCode", [
        oracle.address,
    ]);
await hre.network.provider.send("hardhat_setCode", [
      "0xA50ba011c48153De246E5192C8f9258A2ba79Ca9",
      code,
    ]);

在上面的代码中,我们获取了已部署合约的字节码,并将其设置到Aave Oracle,该合约地址为0xA50ba011c48153De246E5192C8f9258A2ba79Ca9。

结论

你现在已经学会如何在hardhat框架中为测试目的更改已部署智能合约的字节码。有关供审计员和开发人员使用的有用工具的更多信息,请关注我们的后续文章。

附加阅读和教程

https://hardhat.org/getting-started/

https://eth-brownie.readthedocs.io/en/stable/

https://www.youtube.com/watch?v=nkvIFE2QVp0&list=PLVOHzVzbg7bFUaOGwN0NOgkTItUAVyBBQ

  • MixBytes是谁?

MixBytes 是一个专家区块链审计师和安全研究团队,专注于为EVM兼容和Substrate基础项目提供全面的智能合约审计和技术咨询服务。在X上关注我们,及时了解最新的行业趋势和见解。

  • 原文链接: mixbytes.io/blog/how-cha...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
mixbytes
mixbytes
Empowering Web3 businesses to build hack-resistant projects.