Javascript
如何使用 hardhat-deploy 在腳本/任務中與已部署的合約進行互動
在我的安全帽項目中,我的文件夾結構如下所示。
scripts/ └── enter.ts deploy └── 01_Deploy_Raffle.ts
在我使用 hardhat deploy(我的另一個部署腳本)部署契約後,我可以使用該
get
命令獲取最近部署的地址。const deployRaffle: DeployFunction = async function ( hre: HardhatRuntimeEnvironment ) { const { deployments, getNamedAccounts, getChainId } = hre const { deploy, log, get } = deployments
但是,當我在部署文件夾之外使用它時,我似乎遇到了問題。當我將部署執行到本地區塊鏈時,Hardhat-deploy 可能不會保存部署。因此,我將執行
npx hardhat node
(執行部署文件夾中的腳本),然後嘗試下面概述的腳本:import { run, ethers, deployments } from 'hardhat' async function main() { await run('compile') const { get } = deployments const accounts = await ethers.getSigners() const Raffle = await ethers.getContractFactory('Raffle') const RaffleDeployment = await get('Raffle') const raffle = new ethers.Contract(RaffleDeployment.address, Raffle.interface, accounts[0]) console.log(raffle.s_entranceFee()) // this line errors }
我收到以下錯誤:
Error: No deployment found for: Raffle at get (/Users/patrick/code/decentralized-raffle/node_modules/hardhat-deploy/src/DeploymentsManager.ts:150:17) at processTicksAndRejections (internal/process/task_queues.js:95:5) at async main (/Users/patrick/code/decentralized-raffle/scripts/enter.ts:11:28)
那麼使用 hardhat-deploy 編寫腳本的最佳方法是什麼?
安全帽部署的常見“陷阱”。
--network localhost
在本地使用自己的安全帽節點執行腳本時必須使用。預設網路是其他
hardhat
網路。