Testing

什麼是signer.sendTransaction(...) 及其在 Hardhat 主網分叉文件中的用途?

  • July 7, 2021

出於單元測試的目的,我想模擬 DAI 合約將一些 DAI 轉移到我本地區塊鏈環境中的本地錢包地址。我已按照 Hardhat 的主網分叉指南中的說明進行操作,但我不確定以下內容是做什麼的:

const signer = await ethers.provider.getSigner("0x364d6D0333432C3Ac016Ca832fb8594A8cE43Ca6")
signer.sendTransaction(...) // what does this do?

中的參數signer.sendTransaction()是什麼,是否僅用於將乙太幣從一個合約發送到另一個地址?我可以讓模擬的 DAI 合約批准並將 ETH 從 DAI 合約轉移到本地錢包嗎?

這樣做的目的是讓本地簽名者能夠花費 DAI 購買由我正在部署的 ERC1155 合約鑄造的特殊代幣。唯一的貨幣是 DAI,必須增加簽名者的餘額才能讓 DAI 購買該代幣。

signer.sendTransaction() 中的參數是什麼

Signer是 ethers.js 的概念。檢查它的文件以了解它是如何使用的,但一個簡單的例子是這樣的:

await signer.sendTransaction({
 to: someAddress,
 value: ethers.utils.parseEther("1") // 1 ether
})

我可以讓模擬的 DAI 合約批准並將 ETH 從 DAI 合約轉移到本地錢包嗎?

是的你可以。你不能做的是冒充 DAI 合約以某種方式修改某個地址的 DAI 餘額。如果你想獲得 DAI,你需要冒充一個賬戶,裡面有很多,或者只使用解鎖賬戶中的 ETH(Hardhat 初始化一些賬戶預設每個 1000 ETH),然後按照你的方式獲取 DAI在主網中,例如使用交易所或打開 Maker 保險庫。

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