安全帽以太:部署与部署

Man*_*oid 3 ethereum ether hardhat

在下面的代码中:

console.log("Deploying contract....");
const simpleStorage = await simpleStorageFactory.deploy();
await simpleStorage.deployed();
Run Code Online (Sandbox Code Playgroud)

第 2 行部署了合约,我们得到了它。

为什么我们需要在 Line3 中调用已部署的方法?

小智 5

调用deploy()将创建交易,您可以立即获取合约地址,但这并不意味着交易已被处理并包含在块中。

deployed()会等到它发生为止。在后台,它将轮询区块链,直到合约被成功处理。请参阅: https: //github.com/ethers-io/ethers.js/blob/master/packages/contracts/src.ts/index.ts#L824

我认为从技术上讲您不必致电deployed(),但如果您需要在部署合约后执行任何操作并需要确保其已包含在开采的区块中,那么建议等待deployed()