The requested contract was not found

在使用OpenZeppelin部署可升级智能合约时遇到'合约未找到'的问题,该问题源于Truffle的部分重新编译导致的AST不匹配。解决方法是运行`truffle compile --all`或删除`build/contracts`目录以触发完整重新编译,这确保了合约升级的安全性。执行上述操作后,错误得以消除。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用openzeppelin 部署可以升级的合约时,遇到了

The requested contract was not found. Make sure the source code is available for compilation

官网的常见问题给给出了答案

Frequently Asked Questions - OpenZeppelin Docsicon-default.png?t=LA92https://docs.openzeppelin.com/upgrades-plugins/1.x/faq#why-do-i-have-to-recompile-all-contracts-for-truffle附上对应文章内容:

为什么我必须为Truffle重新编译所有合同?
Truffle工件(build/contracts中的JSON文件)包含你每个合同的AST(抽象语法树)。我们的插件使用这些信息来验证您的合同是否[升级安全](#what-does-it-mean-for-a-contract-to-upgrade-safe)。

Truffle有时会只对发生变化的合同进行部分重新编译。当这种情况发生时,我们会要求您使用 truffle compile --all 或删除 build/contracts 目录来触发一次完整的重新编译。技术上的原因是,由于 Solidity 并不产生确定的 AST,如果不是来自同一个编译器运行,插件就无法正确解决引用。

在执行完 truffle compile --all 之后,错误消失了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值