安全帽"deployed()"做什么?



我有下面的代码

const SimpleStorageFactory = await ethers.getContractFactory(
"SimpleStorage"
)
const simpleStorage = await SimpleStorageFactory.deploy()
await simpleStorage.deployed()
await simpleStorage.deployTransaction.wait(6)

据我所知,hardhat的getContractFactory会自动提供abi、二进制和指定的私钥,用于签署事务。完成后,我假设SimpleStorageFactory.deploy()与ethers中的相同,并将合同部署到区块链,然后我正在等待6个网络确认。然而,我很困惑为什么安全帽一直在等待simpleStorage.deployed(),这是怎么回事?

我试着阅读了安全帽上的文档,但没有找到答案。

await simpleStorage.deployed()代码行正在等待SimpleStorage合约部署到以太坊网络。当部署一个合约时,它会被上传到网络,并可用于交互。

deployed()方法是一个Promise,它返回一个ContractReceipt对象,该对象包含有关部署事务的信息,例如事务哈希、块号和契约地址。

此方法非常有用,因为它允许您在尝试调用其任何方法或访问其状态之前,确保契约已部署并可用于交互。如果没有这一行,其余的代码可能会在合同完全部署之前执行,这可能会导致错误。

await simpleStorage.deployTransaction.wait(6)代码行正在等待部署事务被包括在以太坊区块链上的六个区块中。这样做是为了确保交易有足够的确认,这有助于确保交易不会被撤销。

这个hardhat插件添加了一种机制,可以将契约部署到任何网络,跟踪它们并复制相同的环境进行测试。

相关内容

  • 没有找到相关文章

最新更新