Hardhat中deployed()方法的作用是什么?
Hardhat中
deployed()方法的作用解析 先明确几个关键节点的逻辑:
- 调用
SimpleStorageFactory.deploy()时,只是向区块链网络发送了合约部署交易,此时交易可能还在内存池等待打包,合约并没有真正完成部署。 await simpleStorage.deployed()的核心作用是:等待部署交易被矿工打包确认,确保合约已经成功部署到链上,且合约地址已可正常使用。它内部会自动监听交易状态,直到部署交易被确认,此时你拿到的合约实例才是完全可用的,能安全调用合约方法。
再对比你代码里的await simpleStorage.deployTransaction.wait(6):
deployed()仅等待交易被确认1次(即被打包进区块),是保证合约可用的基础必要步骤。deployTransaction.wait(6)是额外等待6个区块确认,进一步强化交易的最终性,属于可选的安全增强操作,适合对交易不可逆性要求较高的场景。
简单总结:deployed()是确保合约部署完成、实例可用的必备步骤,跳过它直接调用合约方法可能会因交易未确认而失败;后续的多区块等待是可选的进阶操作。
内容的提问来源于stack exchange,提问作者Ariel Kotch
相关产品推荐
相关产品推荐

