Contract-Design

您可以在本地區塊鏈上的自選地址(使用 ethers.js)上部署合約嗎?

  • July 2, 2021

我正在對僅接受 DAI 作為 ERC20 代幣付款的合約進行單元測試 - 因此 DAI 從使用者到合約的轉移函式如下所示:

// DAI address on mainnet: 0x6B175474E89094C44Da98b954EedeAC495271d0F

function buyToken() external {

 // some code

 IERC20 dai = IERC20(0x6B175474E89094C44Da98b954EedeAC495271d0F);
 dai.transferFrom(msg.sender, address(this), totalPrice);

 // more code

}

我不太確定如何buyToken()在本地環境中的 Ethers.js/Hardhat 中測試此功能。我正在考慮在上述地址部署一個虛擬 ERC20 代幣合約來模擬 DAI,但是否可以0x6B175474E89094C44Da98b954EedeAC495271d0F專門部署它?

如果不在主網上進行測試,我應該怎麼做?

我不認為你可以欺騙這樣的地址,即使是在本地也是如此。相同的規則適用於生成地址的任何地方。

你可以做的是分叉主網。至少 Hardhat 很容易支持這一點,我認為現在 Truffle 也以某種方式支持這一點。分叉主網後,您可以針對本地版本執行測試並模擬帳戶。例如,如果需要,您可以模擬一些具有所述令牌的帳戶。或者為自己添加一百萬個 Eth,然後在交易所中將其兌換成上述代幣。

您可以在此處閱讀有關 Hardhat 主網分叉的更多資訊:https ://hardhat.org/guides/mainnet-forking.html

引用自:https://ethereum.stackexchange.com/questions/102830