foundry
foundry copied to clipboard
`getDeployedCode` failed to find the code
Component
Forge
Have you ensured that all of these are up to date?
- [X] Foundry
- [X] Foundryup
What version of Foundry are you on?
forge 0.2.0 (a5efe4f 2024-02-08T00:15:08.598684835Z)
What command(s) is the bug in?
forge script
Operating System
Linux
Describe the bug
When executing VM::getDeployedCode("DeployConfig.s.sol:DeployConfig")
, foundry is looking for forge-artifacts/DeployConfig.s.sol/DeployConfig.json
, but there's no such file:
ll forge-artifacts/DeployConfig.s.sol/
total 680
drwxr-xr-x 2 root root 4096 Jan 26 04:23 ./
drwxr-xr-x 343 root root 20480 Feb 8 02:34 ../
-rw-r--r-- 1 root root 359118 Feb 8 02:34 DeployConfig.0.8.15.json
-rw-r--r-- 1 root root 308925 Jan 26 04:23 DeployConfig.0.8.19.json
Here's the complete tree for forge-artifacts:
# tree forge-artifacts/
forge-artifacts/
├── Address.sol
│ ├── Address.0.8.15.json
│ └── Address.0.8.19.json
├── AddressAliasHelper.sol
│ ├── AddressAliasHelper.0.8.15.json
│ └── AddressAliasHelper.0.8.19.json
├── AddressAliasHelper.t.sol
│ ├── AddressAliasHelper_AddressAliasing_Invariant.json
│ ├── AddressAliasHelper_Converter.json
│ └── AddressAliasHelper_applyAndUndo_Test.json
├── AddressManager.sol
│ └── AddressManager.json
├── AddressUpgradeable.sol
│ ├── AddressUpgradeable.0.8.15.json
│ └── AddressUpgradeable.0.8.19.json
├── AdminFaucetAuthModule.sol
│ └── AdminFaucetAuthModule.json
├── AdminFaucetAuthModule.t.sol
│ └── AdminFaucetAuthModuleTest.json
├── AlphabetVM.sol
│ └── AlphabetVM.json
├── Arithmetic.sol
│ ├── Arithmetic.0.8.15.json
│ └── Arithmetic.0.8.19.json
├── Artifacts.s.sol
│ ├── Artifacts.0.8.15.json
│ └── Artifacts.0.8.19.json
├── AssetReceiver.sol
│ ├── AssetReceiver.0.8.15.json
│ └── AssetReceiver.0.8.19.json
├── AssetReceiver.t.sol
│ ├── AssetReceiverTest.json
│ └── AssetReceiver_Initializer.json
├── AttestationStation.sol
│ └── AttestationStation.json
├── AttestationStation.t.sol
│ ├── AttestationStationTest.json
│ └── AttestationStation_Initializer.json
├── Base.sol
│ ├── CommonBase.0.8.15.json
│ ├── CommonBase.0.8.19.json
│ ├── ScriptBase.0.8.15.json
│ ├── ScriptBase.0.8.19.json
│ ├── TestBase.0.8.15.json
│ └── TestBase.0.8.19.json
├── BaseFeeVault.sol
│ └── BaseFeeVault.json
├── BenchmarkTest.t.sol
│ ├── GasBenchMark_L1CrossDomainMessenger.json
│ ├── GasBenchMark_L1StandardBridge_Deposit.json
│ ├── GasBenchMark_L1StandardBridge_Finalize.json
│ ├── GasBenchMark_L2OutputOracle.json
│ ├── GasBenchMark_OptimismPortal.json
│ └── SetPrevBaseFee_Test.json
├── Bridge_Initializer.sol
│ └── Bridge_Initializer.json
├── Burn.Eth.t.sol
│ ├── Burn_BurnEth_Invariant.json
│ └── Burn_EthBurner.json
├── Burn.Gas.t.sol
│ ├── Burn_BurnGas_Invariant.json
│ └── Burn_GasBurner.json
├── Burn.sol
│ ├── Burn.json
│ └── Burner.json
├── Bytes.sol
│ ├── Bytes.0.8.15.json
│ └── Bytes.0.8.19.json
├── Bytes.t.sol
│ ├── Bytes_equal_Test.json
│ ├── Bytes_slice_Test.json
│ ├── Bytes_slice_TestFail.json
│ └── Bytes_toNibbles_Test.json
├── Bytes32AddressLib.sol
│ └── Bytes32AddressLib.json
├── Callers.sol
│ ├── CallRecorder.0.8.15.json
│ ├── CallRecorder.0.8.19.json
│ ├── CallerCaller.0.8.15.json
│ ├── CallerCaller.0.8.19.json
│ ├── ConfigurableCaller.0.8.15.json
│ ├── ConfigurableCaller.0.8.19.json
│ ├── Reverter.0.8.15.json
│ └── Reverter.0.8.19.json
├── CannonErrors.sol
│ └── CannonErrors.json
├── CannonTypes.sol
│ └── LPPMetadataLib.json
├── ChainAssertions.sol
│ └── ChainAssertions.json
├── Chains.sol
│ ├── Chains.0.8.15.json
│ └── Chains.0.8.19.json
├── CheckBalanceLow.sol
│ └── CheckBalanceLow.json
├── CheckBalanceLow.t.sol
│ └── CheckBalanceLowTest.json
├── CheckGelatoLow.sol
│ ├── CheckGelatoLow.json
│ └── IGelatoTreasury.json
├── CheckGelatoLow.t.sol
│ ├── CheckGelatoLowTest.json
│ └── MockGelatoTreasury.json
├── CheckTrue.sol
│ └── CheckTrue.json
├── CheckTrue.t.sol
│ └── CheckTrueTest.json
├── Clone.sol
│ ├── Clone.0.8.15.json
│ └── Clone.0.8.19.json
├── Clone.t.sol
│ ├── Clones_Test.json
│ ├── ExampleClone.json
│ └── ExampleCloneFactory.json
├── ClonesWithImmutableArgs.sol
│ ├── ClonesWithImmutableArgs.0.8.15.json
│ └── ClonesWithImmutableArgs.0.8.19.json
├── Common.sol
│ └── Common.json
├── CommonTest.sol
│ └── CommonTest.json
├── CompatibilityFallbackHandler_1_3_0.sol
│ ├── CompatibilityFallbackHandler.0.8.15.json
│ ├── CompatibilityFallbackHandler.0.8.19.json
│ ├── DefaultCallbackHandler.0.8.15.json
│ └── DefaultCallbackHandler.0.8.19.json
├── Constants.sol
│ └── Constants.json
├── Constants.t.sol
│ └── Constants_Test.json
├── Context.sol
│ ├── Context.0.8.15.json
│ └── Context.0.8.19.json
├── ContextUpgradeable.sol
│ ├── ContextUpgradeable.0.8.15.json
│ └── ContextUpgradeable.0.8.19.json
├── Counter.sol
│ └── Counter.json
├── Counter.t.sol
│ └── CounterTest.json
├── Counters.sol
│ └── Counters.json
├── CrossDomainMessenger.sol
│ ├── CrossDomainMessenger.json
│ ├── CrossDomainMessengerLegacySpacer0.json
│ └── CrossDomainMessengerLegacySpacer1.json
├── CrossDomainMessenger.t.sol
│ ├── CrossDomainMessenger_BaseGas_Test.json
│ ├── CrossDomainMessenger_RelayMessage_Test.json
│ ├── ExternalRelay.json
│ ├── RelayActor.json
│ ├── XDM_MinGasLimits.json
│ ├── XDM_MinGasLimits_Reverts.json
│ └── XDM_MinGasLimits_Succeeds.json
├── CrossDomainOwnable.sol
│ ├── CrossDomainOwnable.0.8.15.json
│ └── CrossDomainOwnable.0.8.19.json
├── CrossDomainOwnable.t.sol
│ ├── CrossDomainOwnableThroughPortal_Test.json
│ ├── CrossDomainOwnable_Test.json
│ └── XDomainSetter.json
├── CrossDomainOwnable2.sol
│ └── CrossDomainOwnable2.json
├── CrossDomainOwnable2.t.sol
│ ├── CrossDomainOwnable2_Test.json
│ └── XDomainSetter2.json
├── CrossDomainOwnable3.sol
│ └── CrossDomainOwnable3.json
├── CrossDomainOwnable3.t.sol
│ ├── CrossDomainOwnable3_Test.json
│ └── XDomainSetter3.json
├── DelayedVetoable.sol
│ └── DelayedVetoable.json
├── DelayedVetoable.t.sol
│ ├── DelayedVetoable_Getters_Test.json
│ ├── DelayedVetoable_Getters_TestFail.json
│ ├── DelayedVetoable_HandleCall_Test.json
│ ├── DelayedVetoable_HandleCall_TestFail.json
│ └── DelayedVetoable_Init.json
├── Deploy.s.sol
│ └── Deploy.json
├── DeployConfig.s.sol
│ ├── DeployConfig.0.8.15.json
│ └── DeployConfig.0.8.19.json
├── DeployL2.s.sol
│ └── DeployL2.json
├── DeployPeriphery.s.sol
│ └── DeployPeriphery.json
├── Deployer.sol
│ ├── Deployer.0.8.15.json
│ └── Deployer.0.8.19.json
├── DeployerWhitelist.sol
│ └── DeployerWhitelist.json
├── DeployerWhitelist.t.sol
│ └── DeployerWhitelist_Test.json
├── DeploymentSummary.sol
│ ├── DeploymentSummary.0.8.15.json
│ └── DeploymentSummary.0.8.19.json
├── DeploymentSummary.t.sol
│ ├── DeploymentSummary_TestL1CrossDomainMessenger.json
│ ├── DeploymentSummary_TestL1ERC721Bridge.json
│ ├── DeploymentSummary_TestL1StandardBridge.json
│ └── DeploymentSummary_TestOptimismPortal.json
├── DeploymentSummaryCode.sol
│ ├── DeploymentSummaryCode.0.8.15.json
│ └── DeploymentSummaryCode.0.8.19.json
├── DisputeErrors.sol
│ ├── DisputeErrors.0.8.15.json
│ └── DisputeErrors.0.8.19.json
├── DisputeGameFactory.sol
│ ├── DisputeGameFactory.0.8.15.json
│ └── DisputeGameFactory.0.8.19.json
├── DisputeGameFactory.t.sol
│ ├── DisputeGameFactory_Create_Test.json
│ ├── DisputeGameFactory_FindLatestGames_Test.json
│ ├── DisputeGameFactory_GetGameUUID_Test.json
│ ├── DisputeGameFactory_Init.json
│ ├── DisputeGameFactory_Owner_Test.json
│ ├── DisputeGameFactory_SetImplementation_Test.json
│ ├── DisputeGameFactory_SetInitBond_Test.json
│ ├── DisputeGameFactory_TransferOwnership_Test.json
│ └── FakeClone.json
├── DisputeTypes.sol
│ ├── GameTypes.0.8.15.json
│ ├── GameTypes.0.8.19.json
│ ├── LocalPreimageKey.0.8.15.json
│ ├── LocalPreimageKey.0.8.19.json
│ ├── VMStatuses.0.8.15.json
│ └── VMStatuses.0.8.19.json
├── Drippie.sol
│ └── Drippie.json
├── Drippie.t.sol
│ ├── Drippie_Test.json
│ └── TestDrippie.json
├── EAS.sol
│ └── EAS.json
├── ECDSA.sol
│ ├── ECDSA.0.8.15.json
│ └── ECDSA.0.8.19.json
├── ECDSAUpgradeable.sol
│ └── ECDSAUpgradeable.json
├── EIP1271Verifier.sol
│ └── EIP1271Verifier.json
├── EIP1967Helper.sol
│ ├── EIP1967Helper.0.8.15.json
│ └── EIP1967Helper.0.8.19.json
├── ERC1155TokenReceiver.sol
│ ├── ERC1155TokenReceiver.0.8.15.json
│ └── ERC1155TokenReceiver.0.8.19.json
├── ERC165.sol
│ └── ERC165.json
├── ERC165Checker.sol
│ └── ERC165Checker.json
├── ERC165Upgradeable.sol
│ └── ERC165Upgradeable.json
├── ERC20.sol
│ ├── ERC20.0.8.15.json
│ ├── ERC20.0.8.19.json
│ └── ERC20.json
├── ERC20Burnable.sol
│ └── ERC20Burnable.json
├── ERC20Votes.sol
│ └── ERC20Votes.json
├── ERC721.sol
│ ├── ERC721.0.8.15.json
│ ├── ERC721.0.8.19.json
│ ├── ERC721.json
│ ├── ERC721TokenReceiver.0.8.15.json
│ └── ERC721TokenReceiver.0.8.19.json
├── ERC721Bridge.sol
│ └── ERC721Bridge.json
├── ERC721BurnableUpgradeable.sol
│ └── ERC721BurnableUpgradeable.json
├── ERC721Enumerable.sol
│ └── ERC721Enumerable.json
├── ERC721TokenReceiver.sol
│ ├── ERC721TokenReceiver.0.8.15.json
│ └── ERC721TokenReceiver.0.8.19.json
├── ERC721Upgradeable.sol
│ └── ERC721Upgradeable.json
├── ERC777TokensRecipient.sol
│ ├── ERC777TokensRecipient.0.8.15.json
│ └── ERC777TokensRecipient.0.8.19.json
├── Encoding.sol
│ ├── Encoding.0.8.15.json
│ └── Encoding.0.8.19.json
├── Encoding.t.sol
│ ├── Encoding_Converter.json
│ ├── Encoding_Invariant.json
│ └── Encoding_Test.json
├── EnhancedScript.sol
│ └── EnhancedScript.json
├── Enum.sol
│ ├── Enum.0.8.15.json
│ └── Enum.0.8.19.json
├── EnumerableSet.sol
│ └── EnumerableSet.json
├── Events.sol
│ └── Events.json
├── Executables.sol
│ ├── Executables.0.8.15.json
│ └── Executables.0.8.19.json
├── Executor.sol
│ ├── Executor.0.8.15.json
│ └── Executor.0.8.19.json
├── ExtendedPause.t.sol
│ └── ExtendedPause_Test.json
├── FFIInterface.sol
│ ├── FFIInterface.0.8.15.json
│ └── FFIInterface.0.8.19.json
├── FPACOPS.sol
│ └── FPACOPS.json
├── FallbackManager.sol
│ ├── FallbackManager.0.8.15.json
│ └── FallbackManager.0.8.19.json
├── Faucet.sol
│ ├── Faucet.json
│ └── SafeSend.json
├── Faucet.t.sol
│ ├── FaucetTest.json
│ └── Faucet_Initializer.json
├── FaucetHelper.sol
│ └── FaucetHelper.json
├── FaultDisputeActors.sol
│ ├── DisputeActor.json
│ ├── GameSolver.json
│ ├── HonestDisputeActor.json
│ └── HonestGameSolver.json
├── FaultDisputeGame.sol
│ └── FaultDisputeGame.json
├── FaultDisputeGame.t.sol
│ ├── ClaimCreditReenter.json
│ ├── FaultDisputeGame_Init.json
│ ├── FaultDisputeGame_Solvency_Invariant.json
│ ├── FaultDisputeGame_Test.json
│ ├── FaultDispute_1v1_Actors_Test.json
│ └── RandomClaimActor.json
├── FaultDisputeGameViz.s.sol
│ └── FaultDisputeGameViz.json
├── FeeVault.sol
│ └── FeeVault.json
├── FeeVault.t.sol
│ └── FeeVault_Test.json
├── FeeVaultWithdrawal.s.sol
│ └── FeeVaultWithdrawal.json
├── FixedPointMathLib.sol
│ ├── FixedPointMathLib.0.8.15.json
│ └── FixedPointMathLib.0.8.19.json
├── GasPriceOracle.sol
│ └── GasPriceOracle.json
├── GasPriceOracle.t.sol
│ ├── GasPriceOracleBedrock_Test.json
│ ├── GasPriceOracleEcotone_Test.json
│ └── GasPriceOracle_Test.json
├── GlobalConstants.sol
│ └── GlobalConstants.json
├── GovernanceToken.sol
│ └── GovernanceToken.json
├── GovernanceToken.t.sol
│ └── GovernanceToken_Test.json
├── GuardManager.sol
│ ├── BaseGuard.0.8.15.json
│ ├── BaseGuard.0.8.19.json
│ ├── Guard.0.8.15.json
│ ├── Guard.0.8.19.json
│ ├── GuardManager.0.8.15.json
│ └── GuardManager.0.8.19.json
├── Hashing.sol
│ ├── Hashing.0.8.15.json
│ └── Hashing.0.8.19.json
├── Hashing.t.sol
│ ├── Hash_CrossDomainHasher.json
│ ├── Hashing_Invariant.json
│ ├── Hashing_hashCrossDomainMessage_Test.json
│ ├── Hashing_hashDepositSource_Test.json
│ ├── Hashing_hashDepositTransaction_Test.json
│ ├── Hashing_hashOutputRootProof_Test.json
│ └── Hashing_hashWithdrawal_Test.json
├── IAddressManager.sol
│ ├── IAddressManager.0.8.15.json
│ └── IAddressManager.0.8.19.json
├── IBigStepper.sol
│ └── IBigStepper.json
├── IDisputeGame.sol
│ ├── IDisputeGame.0.8.15.json
│ └── IDisputeGame.0.8.19.json
├── IDisputeGameFactory.sol
│ ├── IDisputeGameFactory.0.8.15.json
│ └── IDisputeGameFactory.0.8.19.json
├── IDripCheck.sol
│ ├── IDripCheck.0.8.15.json
│ └── IDripCheck.0.8.19.json
├── IEAS.sol
│ └── IEAS.json
├── IERC1271.sol
│ ├── IERC1271.0.8.15.json
│ └── IERC1271.0.8.19.json
├── IERC165.sol
│ ├── IERC165.0.8.15.json
│ └── IERC165.0.8.19.json
├── IERC165Upgradeable.sol
│ └── IERC165Upgradeable.json
├── IERC20.sol
│ └── IERC20.json
├── IERC20Metadata.sol
│ └── IERC20Metadata.json
├── IERC721.sol
│ ├── IERC721.0.8.15.json
│ └── IERC721.0.8.19.json
├── IERC721Enumerable.sol
│ ├── IERC721Enumerable.0.8.15.json
│ └── IERC721Enumerable.0.8.19.json
├── IERC721Metadata.sol
│ └── IERC721Metadata.json
├── IERC721MetadataUpgradeable.sol
│ └── IERC721MetadataUpgradeable.json
├── IERC721Receiver.sol
│ └── IERC721Receiver.json
├── IERC721ReceiverUpgradeable.sol
│ └── IERC721ReceiverUpgradeable.json
├── IERC721Upgradeable.sol
│ └── IERC721Upgradeable.json
├── IFaucetAuthModule.sol
│ └── IFaucetAuthModule.json
├── IFaultDisputeGame.sol
│ ├── IFaultDisputeGame.0.8.15.json
│ └── IFaultDisputeGame.0.8.19.json
├── IGnosisSafe.sol
│ ├── Enum.0.8.15.json
│ ├── Enum.0.8.19.json
│ ├── IGnosisSafe.0.8.15.json
│ └── IGnosisSafe.0.8.19.json
├── IInitializable.sol
│ ├── IInitializable.0.8.15.json
│ └── IInitializable.0.8.19.json
├── IMulticall3.sol
│ ├── IMulticall3.0.8.15.json
│ └── IMulticall3.0.8.19.json
├── IOptimismMintableERC20.sol
│ ├── ILegacyMintableERC20.0.8.15.json
│ ├── ILegacyMintableERC20.0.8.19.json
│ ├── IOptimismMintableERC20.0.8.15.json
│ └── IOptimismMintableERC20.0.8.19.json
├── IOptimismMintableERC721.sol
│ ├── IOptimismMintableERC721.0.8.15.json
│ └── IOptimismMintableERC721.0.8.19.json
├── IPreimageOracle.sol
│ └── IPreimageOracle.json
├── IProxyCreationCallback.sol
│ ├── IProxyCreationCallback.0.8.15.json
│ └── IProxyCreationCallback.0.8.19.json
├── ISchemaRegistry.sol
│ └── ISchemaRegistry.json
├── ISchemaResolver.sol
│ └── ISchemaResolver.json
├── ISemver.sol
│ ├── ISemver.0.8.15.json
│ └── ISemver.0.8.19.json
├── ISignatureValidator.sol
│ ├── ISignatureValidator.0.8.15.json
│ ├── ISignatureValidator.0.8.19.json
│ ├── ISignatureValidatorConstants.0.8.15.json
│ └── ISignatureValidatorConstants.0.8.19.json
├── ISystemConfigV0.sol
│ └── ISystemConfigV0.json
├── IVotes.sol
│ └── IVotes.json
├── Initializable.sol
│ ├── Initializable.0.8.15.json
│ ├── Initializable.0.8.19.json
│ └── Initializable.json
├── Initializable.t.sol
│ └── Initializer_Test.json
├── InvariantTest.sol
│ └── InvariantTest.json
├── KontrolCheats.sol
│ ├── KontrolCheats.json
│ └── KontrolCheatsBase.json
├── KontrolDeployment.sol
│ └── KontrolDeployment.json
├── KontrolInterfaces.sol
│ ├── IL1CrossDomainMessenger.json
│ ├── IL1ERC721Bridge.json
│ ├── IL1StandardBridge.json
│ ├── IOptimismPortal.json
│ └── ISuperchainConfig.json
├── KontrolUtils.sol
│ ├── GhostBytes.json
│ ├── GhostBytes10.json
│ └── KontrolUtils.json
├── L1Block.sol
│ └── L1Block.json
├── L1Block.t.sol
│ ├── L1BlockBedrock_Test.json
│ ├── L1BlockEcotone_Test.json
│ └── L1BlockTest.json
├── L1BlockNumber.sol
│ └── L1BlockNumber.json
├── L1BlockNumber.t.sol
│ └── L1BlockNumberTest.json
├── L1ChugSplashProxy.sol
│ ├── IL1ChugSplashDeployer.json
│ └── L1ChugSplashProxy.json
├── L1CrossDomainMessenger.k.sol
│ └── L1CrossDomainMessengerKontrol.json
├── L1CrossDomainMessenger.sol
│ └── L1CrossDomainMessenger.json
├── L1CrossDomainMessenger.t.sol
│ ├── L1CrossDomainMessenger_ReinitReentryTest.json
│ └── L1CrossDomainMessenger_Test.json
├── L1ERC721Bridge.k.sol
│ └── L1ERC721BridgeKontrol.json
├── L1ERC721Bridge.sol
│ └── L1ERC721Bridge.json
├── L1ERC721Bridge.t.sol
│ ├── L1ERC721Bridge_Pause_Test.json
│ ├── L1ERC721Bridge_Pause_TestFail.json
│ ├── L1ERC721Bridge_Test.json
│ └── TestERC721.json
├── L1FeeVault.sol
│ └── L1FeeVault.json
├── L1StandardBridge.k.sol
│ └── L1StandardBridgeKontrol.json
├── L1StandardBridge.sol
│ └── L1StandardBridge.json
├── L1StandardBridge.t.sol
│ ├── L1StandardBridge_BridgeETHTo_Test.json
│ ├── L1StandardBridge_BridgeETH_Test.json
│ ├── L1StandardBridge_DepositERC20To_Test.json
│ ├── L1StandardBridge_DepositERC20_Test.json
│ ├── L1StandardBridge_DepositERC20_TestFail.json
│ ├── L1StandardBridge_DepositETHTo_Test.json
│ ├── L1StandardBridge_DepositETHTo_TestFail.json
│ ├── L1StandardBridge_DepositETH_Test.json
│ ├── L1StandardBridge_DepositETH_TestFail.json
│ ├── L1StandardBridge_FinalizeBridgeETH_Test.json
│ ├── L1StandardBridge_FinalizeBridgeETH_TestFail.json
│ ├── L1StandardBridge_FinalizeERC20Withdrawal_Test.json
│ ├── L1StandardBridge_FinalizeERC20Withdrawal_TestFail.json
│ ├── L1StandardBridge_FinalizeETHWithdrawal_Test.json
│ ├── L1StandardBridge_FinalizeETHWithdrawal_TestFail.json
│ ├── L1StandardBridge_Getter_Test.json
│ ├── L1StandardBridge_Initialize_Test.json
│ ├── L1StandardBridge_Initialize_TestFail.json
│ ├── L1StandardBridge_Pause_Test.json
│ ├── L1StandardBridge_Pause_TestFail.json
│ ├── L1StandardBridge_Receive_Test.json
│ ├── L1StandardBridge_Receive_TestFail.json
│ ├── PreBridgeETH.json
│ └── PreBridgeETHTo.json
├── L2CrossDomainMessenger.sol
│ └── L2CrossDomainMessenger.json
├── L2CrossDomainMessenger.t.sol
│ └── L2CrossDomainMessenger_Test.json
├── L2ERC721Bridge.sol
│ └── L2ERC721Bridge.json
├── L2ERC721Bridge.t.sol
│ ├── L2ERC721Bridge_Test.json
│ ├── NonCompliantERC721.json
│ ├── TestERC721.json
│ └── TestMintableERC721.json
├── L2OutputOracle.sol
│ └── L2OutputOracle.json
├── L2OutputOracle.t.sol
│ ├── L2OutputOracleUpgradeable_Test.json
│ ├── L2OutputOracle_MonotonicBlockNumIncrease_Invariant.json
│ ├── L2OutputOracle_Proposer.json
│ ├── L2OutputOracle_constructor_Test.json
│ ├── L2OutputOracle_deleteOutputs_Test.json
│ ├── L2OutputOracle_getter_Test.json
│ └── L2OutputOracle_proposeL2Output_Test.json
├── L2StandardBridge.sol
│ └── L2StandardBridge.json
├── L2StandardBridge.t.sol
│ ├── L2StandardBridge_BridgeERC20To_Test.json
│ ├── L2StandardBridge_BridgeERC20_Test.json
│ ├── L2StandardBridge_Bridge_Test.json
│ ├── L2StandardBridge_FinalizeBridgeETH_Test.json
│ ├── L2StandardBridge_Test.json
│ ├── PreBridgeERC20.json
│ └── PreBridgeERC20To.json
├── L2ToL1MessagePasser.sol
│ └── L2ToL1MessagePasser.json
├── L2ToL1MessagePasser.t.sol
│ └── L2ToL1MessagePasserTest.json
├── LegacyCrossDomainUtils.sol
│ ├── LegacyCrossDomainUtils.0.8.15.json
│ └── LegacyCrossDomainUtils.0.8.19.json
├── LegacyERC20ETH.sol
│ └── LegacyERC20ETH.json
├── LegacyERC20ETH.t.sol
│ └── LegacyERC20ETH_Test.json
├── LegacyMessagePasser.sol
│ └── LegacyMessagePasser.json
├── LegacyMessagePasser.t.sol
│ └── LegacyMessagePasser_Test.json
├── LegacyMintableERC20.sol
│ └── LegacyMintableERC20.json
├── LibClock.t.sol
│ └── LibClock_Test.json
├── LibGameId.sol
│ ├── LibGameId.0.8.15.json
│ └── LibGameId.0.8.19.json
├── LibGameId.t.sol
│ └── LibGameId_Test.json
├── LibHashing.sol
│ ├── LibHashing.0.8.15.json
│ └── LibHashing.0.8.19.json
├── LibKeccak.sol
│ └── LibKeccak.json
├── LibPosition.sol
│ ├── LibPosition.0.8.15.json
│ └── LibPosition.0.8.19.json
├── LibPosition.t.sol
│ └── LibPosition_Test.json
├── LibSort.sol
│ ├── LibSort.0.8.15.json
│ └── LibSort.0.8.19.json
├── LibStateDiff.sol
│ └── LibStateDiff.json
├── LibString.sol
│ ├── LibString.0.8.15.json
│ └── LibString.0.8.19.json
├── LibUDT.sol
│ ├── LibClaim.0.8.15.json
│ ├── LibClaim.0.8.19.json
│ ├── LibClock.0.8.15.json
│ ├── LibClock.0.8.19.json
│ ├── LibDuration.0.8.15.json
│ ├── LibDuration.0.8.19.json
│ ├── LibGameType.0.8.15.json
│ ├── LibGameType.0.8.19.json
│ ├── LibHash.0.8.15.json
│ ├── LibHash.0.8.19.json
│ ├── LibTimestamp.0.8.15.json
│ ├── LibTimestamp.0.8.19.json
│ ├── LibVMStatus.0.8.15.json
│ └── LibVMStatus.0.8.19.json
├── LivenessGuard.sol
│ └── LivenessGuard.json
├── LivenessGuard.t.sol
│ ├── LivenessGuard_CheckAfterExecution_TestFails.json
│ ├── LivenessGuard_CheckTx_Test.json
│ ├── LivenessGuard_CheckTx_TestFails.json
│ ├── LivenessGuard_Constructor_Test.json
│ ├── LivenessGuard_FuzzOwnerManagement_Test.json
│ ├── LivenessGuard_Getters_Test.json
│ ├── LivenessGuard_OwnerManagement_Test.json
│ ├── LivenessGuard_ShowLiveness_Test.json
│ ├── LivenessGuard_ShowLiveness_TestFail.json
│ ├── LivenessGuard_TestInit.json
│ └── WrappedGuard.json
├── LivenessModule.sol
│ └── LivenessModule.json
├── LivenessModule.t.sol
│ ├── LivenessModule_CanRemove_Test.json
│ ├── LivenessModule_CanRemove_TestFail.json
│ ├── LivenessModule_Constructor_TestFail.json
│ ├── LivenessModule_Get75PercentThreshold_Test.json
│ ├── LivenessModule_Getters_Test.json
│ ├── LivenessModule_RemoveOwnersFuzz_Test.json
│ ├── LivenessModule_RemoveOwners_Test.json
│ ├── LivenessModule_RemoveOwners_TestFail.json
│ └── LivenessModule_TestInit.json
├── MIPS.sol
│ └── MIPS.json
├── MIPS.t.sol
│ └── MIPS_Test.json
├── Math.sol
│ └── Math.json
├── MerkleTrie.sol
│ ├── MerkleTrie.0.8.15.json
│ └── MerkleTrie.0.8.19.json
├── MerkleTrie.t.sol
│ └── MerkleTrie_get_Test.json
├── MintManager.sol
│ └── MintManager.json
├── MintManager.t.sol
│ ├── MintManager_Initializer.json
│ ├── MintManager_constructor_Test.json
│ ├── MintManager_mint_Test.json
│ └── MintManager_upgrade_Test.json
├── MockERC20.sol
│ ├── MockERC20.0.8.15.json
│ └── MockERC20.0.8.19.json
├── MockERC721.sol
│ ├── IERC721TokenReceiver.0.8.15.json
│ ├── IERC721TokenReceiver.0.8.19.json
│ ├── MockERC721.0.8.15.json
│ └── MockERC721.0.8.19.json
├── ModuleManager.sol
│ ├── ModuleManager.0.8.15.json
│ └── ModuleManager.0.8.19.json
├── NativeCurrencyPaymentFallback.sol
│ ├── NativeCurrencyPaymentFallback.0.8.15.json
│ └── NativeCurrencyPaymentFallback.0.8.19.json
├── NextImpl.sol
│ └── NextImpl.json
├── OptimismMintableERC20.sol
│ └── OptimismMintableERC20.json
├── OptimismMintableERC20.t.sol
│ └── OptimismMintableERC20_Test.json
├── OptimismMintableERC20Factory.sol
│ └── OptimismMintableERC20Factory.json
├── OptimismMintableERC20Factory.t.sol
│ └── OptimismMintableTokenFactory_Test.json
├── OptimismMintableERC721.sol
│ └── OptimismMintableERC721.json
├── OptimismMintableERC721.t.sol
│ └── OptimismMintableERC721_Test.json
├── OptimismMintableERC721Factory.sol
│ └── OptimismMintableERC721Factory.json
├── OptimismMintableERC721Factory.t.sol
│ └── OptimismMintableERC721Factory_Test.json
├── OptimismPortal.k.sol
│ └── OptimismPortalKontrol.json
├── OptimismPortal.sol
│ └── OptimismPortal.json
├── OptimismPortal.t.sol
│ ├── OptimismPortalResourceFuzz_Test.json
│ ├── OptimismPortalUpgradeable_Test.json
│ ├── OptimismPortal_CanAlwaysFinalizeAfterWindow.json
│ ├── OptimismPortal_CannotFinalizeTwice.json
│ ├── OptimismPortal_CannotTimeTravel.json
│ ├── OptimismPortal_Deposit_Invariant.json
│ ├── OptimismPortal_Depositor.json
│ ├── OptimismPortal_FinalizeWithdrawal_Test.json
│ ├── OptimismPortal_Invariant_Harness.json
│ └── OptimismPortal_Test.json
├── OptimismPortal2.sol
│ └── OptimismPortal2.json
├── Optimist.sol
│ └── Optimist.json
├── Optimist.t.sol
│ ├── IMulticall3.json
│ ├── Multicall.json
│ ├── OptimistTest.json
│ └── Optimist_Initializer.json
├── OptimistAllowlist.sol
│ └── OptimistAllowlist.json
├── OptimistAllowlist.t.sol
│ ├── OptimistAllowlistTest.json
│ └── OptimistAllowlist_Initializer.json
├── OptimistConstants.sol
│ └── OptimistConstants.json
├── OptimistInviter.sol
│ └── OptimistInviter.json
├── OptimistInviter.t.sol
│ ├── OptimistInviterTest.json
│ └── OptimistInviter_Initializer.json
├── OptimistInviterHelper.sol
│ └── OptimistInviterHelper.json
├── Ownable.sol
│ ├── Ownable.0.8.15.json
│ └── Ownable.0.8.19.json
├── OwnableUpgradeable.sol
│ ├── OwnableUpgradeable.0.8.15.json
│ └── OwnableUpgradeable.0.8.19.json
├── Owned.sol
│ ├── Owned.0.8.15.json
│ └── Owned.0.8.19.json
├── OwnerManager.sol
│ ├── OwnerManager.0.8.15.json
│ └── OwnerManager.0.8.19.json
├── PeripheryDeployConfig.s.sol
│ ├── PeripheryDeployConfig.0.8.15.json
│ └── PeripheryDeployConfig.0.8.19.json
├── Predeploys.sol
│ ├── Predeploys.0.8.15.json
│ └── Predeploys.0.8.19.json
├── Predeploys.t.sol
│ ├── IEIP712.json
│ └── PredeploysTest.json
├── PreimageKeyLib.sol
│ └── PreimageKeyLib.json
├── PreimageOracle.sol
│ └── PreimageOracle.json
├── PreimageOracle.t.sol
│ ├── PreimageOracle_LargePreimageProposals_Test.json
│ └── PreimageOracle_Test.json
├── ProtocolVersions.sol
│ └── ProtocolVersions.json
├── ProtocolVersions.t.sol
│ ├── ProtocolVersions_Init.json
│ ├── ProtocolVersions_Initialize_Test.json
│ ├── ProtocolVersions_Setters_Test.json
│ └── ProtocolVersions_Setters_TestFail.json
├── Proxy.sol
│ └── Proxy.json
├── Proxy.t.sol
│ ├── Clasher.json
│ ├── Proxy_Test.json
│ └── SimpleStorage.json
├── ProxyAdmin.sol
│ ├── IStaticERC1967Proxy.json
│ ├── IStaticL1ChugSplashProxy.json
│ └── ProxyAdmin.json
├── ProxyAdmin.t.sol
│ └── ProxyAdmin_Test.json
├── RLPReader.sol
│ ├── RLPReader.0.8.15.json
│ └── RLPReader.0.8.19.json
├── RLPReader.t.sol
│ ├── RLPReader_readBytes_Test.json
│ └── RLPReader_readList_Test.json
├── RLPWriter.sol
│ ├── RLPWriter.0.8.15.json
│ └── RLPWriter.0.8.19.json
├── RLPWriter.t.sol
│ ├── RLPWriter_writeList_Test.json
│ ├── RLPWriter_writeString_Test.json
│ └── RLPWriter_writeUint_Test.json
├── ReentrancyGuard.sol
│ └── ReentrancyGuard.json
├── ResolvedDelegateProxy.sol
│ └── ResolvedDelegateProxy.json
├── ResolvedDelegateProxy.t.sol
│ ├── ResolvedDelegateProxy_Test.json
│ └── SimpleImplementation.json
├── ResourceMetering.sol
│ └── ResourceMetering.json
├── ResourceMetering.t.sol
│ ├── ArtifactResourceMetering_Test.json
│ ├── CustomMeterUser.json
│ ├── MeterUser.json
│ ├── ResourceMetering_Invariant.json
│ ├── ResourceMetering_Test.json
│ └── ResourceMetering_User.json
├── Safe.sol
│ ├── Safe.0.8.15.json
│ └── Safe.0.8.19.json
├── SafeBuilder.sol
│ └── SafeBuilder.json
├── SafeCall.sol
│ └── SafeCall.json
├── SafeCall.t.sol
│ ├── SafeCall_Fails_Invariants.json
│ ├── SafeCall_Succeeds_Invariants.json
│ ├── SafeCall_Test.json
│ ├── SafeCaller_Actor.json
│ └── SimpleSafeCaller.json
├── SafeCast.sol
│ └── SafeCast.json
├── SafeERC20.sol
│ └── SafeERC20.json
├── SafeMath.sol
│ ├── SafeMath.0.8.15.json
│ └── SafeMath.0.8.19.json
├── SafeProxy.sol
│ ├── IProxy.0.8.15.json
│ ├── IProxy.0.8.19.json
│ ├── SafeProxy.0.8.15.json
│ └── SafeProxy.0.8.19.json
├── SafeProxyFactory.sol
│ ├── SafeProxyFactory.0.8.15.json
│ └── SafeProxyFactory.0.8.19.json
├── SafeSigners.sol
│ ├── SafeSigners.0.8.15.json
│ └── SafeSigners.0.8.19.json
├── SafeSigners.t.sol
│ └── SafeSigners_Test.json
├── SafeStorage.sol
│ ├── SafeStorage.0.8.15.json
│ └── SafeStorage.0.8.19.json
├── SafeTestTools.sol
│ ├── DeployedSafe.0.8.15.json
│ ├── DeployedSafe.0.8.19.json
│ ├── OwnerSimulator.0.8.15.json
│ ├── OwnerSimulator.0.8.19.json
│ ├── SafeTestLib.0.8.15.json
│ ├── SafeTestLib.0.8.19.json
│ ├── SafeTestTools.0.8.15.json
│ ├── SafeTestTools.0.8.19.json
│ ├── Sort.0.8.15.json
│ └── Sort.0.8.19.json
├── SchemaRegistry.sol
│ └── SchemaRegistry.json
├── SchemaResolver.sol
│ └── SchemaResolver.json
├── Script.sol
│ ├── Script.0.8.15.json
│ └── Script.0.8.19.json
├── SecureMerkleTrie.sol
│ ├── SecureMerkleTrie.0.8.15.json
│ └── SecureMerkleTrie.0.8.19.json
├── SecuredTokenTransfer.sol
│ ├── SecuredTokenTransfer.0.8.15.json
│ └── SecuredTokenTransfer.0.8.19.json
├── SelfAuthorized.sol
│ ├── SelfAuthorized.0.8.15.json
│ └── SelfAuthorized.0.8.19.json
├── SemverLock.s.sol
│ └── SemverLock.json
├── SequencerFeeVault.sol
│ └── SequencerFeeVault.json
├── SequencerFeeVault.t.sol
│ ├── SequencerFeeVault_L2Withdrawal_Test.json
│ └── SequencerFeeVault_Test.json
├── Setup.sol
│ └── Setup.json
├── SignMessageLib.sol
│ ├── SignMessageLib.0.8.15.json
│ └── SignMessageLib.0.8.19.json
├── SignatureChecker.sol
│ ├── SignatureChecker.0.8.15.json
│ └── SignatureChecker.0.8.19.json
├── SignatureDecoder.sol
│ ├── SignatureDecoder.0.8.15.json
│ └── SignatureDecoder.0.8.19.json
├── SignedMath.sol
│ ├── SignedMath.0.8.15.json
│ └── SignedMath.0.8.19.json
├── SimpleStorage.sol
│ ├── SimpleStorage.0.8.15.json
│ └── SimpleStorage.0.8.19.json
├── Singleton.sol
│ ├── Singleton.0.8.15.json
│ └── Singleton.0.8.19.json
├── Specs.t.sol
│ └── Specification_Test.json
├── StandardBridge.sol
│ └── StandardBridge.json
├── StandardBridge.t.sol
│ ├── LegacyMintable.json
│ ├── StandardBridgeTester.json
│ └── StandardBridge_Stateless_Test.json
├── StdAssertions.sol
│ ├── StdAssertions.0.8.15.json
│ └── StdAssertions.0.8.19.json
├── StdChains.sol
│ ├── StdChains.0.8.15.json
│ └── StdChains.0.8.19.json
├── StdCheats.sol
│ ├── StdCheats.0.8.15.json
│ ├── StdCheats.0.8.19.json
│ ├── StdCheatsSafe.0.8.15.json
│ └── StdCheatsSafe.0.8.19.json
├── StdError.sol
│ ├── stdError.0.8.15.json
│ └── stdError.0.8.19.json
├── StdInvariant.sol
│ ├── StdInvariant.0.8.15.json
│ └── StdInvariant.0.8.19.json
├── StdJson.sol
│ ├── stdJson.0.8.15.json
│ └── stdJson.0.8.19.json
├── StdMath.sol
│ ├── stdMath.0.8.15.json
│ └── stdMath.0.8.19.json
├── StdStorage.sol
│ ├── stdStorage.0.8.15.json
│ ├── stdStorage.0.8.19.json
│ ├── stdStorageSafe.0.8.15.json
│ └── stdStorageSafe.0.8.19.json
├── StdStyle.sol
│ ├── StdStyle.0.8.15.json
│ └── StdStyle.0.8.19.json
├── StdUtils.sol
│ ├── StdUtils.0.8.15.json
│ └── StdUtils.0.8.19.json
├── Storage.sol
│ ├── Storage.0.8.15.json
│ └── Storage.0.8.19.json
├── Storage.t.sol
│ └── Storage_Roundtrip_Test.json
├── StorageAccessible.sol
│ ├── StorageAccessible.0.8.15.json
│ └── StorageAccessible.0.8.19.json
├── StorageSetter.sol
│ └── StorageSetter.json
├── Strings.sol
│ ├── Strings.0.8.15.json
│ └── Strings.0.8.19.json
├── StringsUpgradeable.sol
│ └── StringsUpgradeable.json
├── SubmitLPP.sol
│ └── SubmitLPP.json
├── SuperchainConfig.sol
│ └── SuperchainConfig.json
├── SuperchainConfig.t.sol
│ ├── SuperchainConfig_Init_Test.json
│ ├── SuperchainConfig_Pause_Test.json
│ ├── SuperchainConfig_Pause_TestFail.json
│ ├── SuperchainConfig_Unpause_Test.json
│ └── SuperchainConfig_Unpause_TestFail.json
├── SystemConfig.sol
│ └── SystemConfig.json
├── SystemConfig.t.sol
│ ├── SystemConfig_GasLimitLowerBound_Invariant.json
│ ├── SystemConfig_Init.json
│ ├── SystemConfig_Initialize_Test.json
│ ├── SystemConfig_Initialize_TestFail.json
│ ├── SystemConfig_Setters_Test.json
│ └── SystemConfig_Setters_TestFail.json
├── Test.sol
│ ├── Test.0.8.15.json
│ └── Test.0.8.19.json
├── TestERC1271Wallet.sol
│ ├── TestERC1271Wallet.0.8.15.json
│ └── TestERC1271Wallet.0.8.19.json
├── TestERC20.sol
│ ├── TestERC20.0.8.15.json
│ └── TestERC20.0.8.19.json
├── TestERC721.sol
│ ├── TestERC721.0.8.15.json
│ └── TestERC721.0.8.19.json
├── Transactor.sol
│ ├── Transactor.0.8.15.json
│ └── Transactor.0.8.19.json
├── Transactor.t.sol
│ ├── TransactorTest.json
│ └── Transactor_Initializer.json
├── TransferOnion.sol
│ └── TransferOnion.json
├── TransferOnion.t.sol
│ └── TransferOnionTest.json
├── Types.sol
│ ├── Types.0.8.15.json
│ └── Types.0.8.19.json
├── Vm.sol
│ ├── Vm.0.8.15.json
│ ├── Vm.0.8.19.json
│ ├── VmSafe.0.8.15.json
│ └── VmSafe.0.8.19.json
├── WETH9.sol
│ └── WETH9.json
├── console.sol
│ ├── console.0.8.15.json
│ └── console.0.8.19.json
├── console2.sol
│ ├── console2.0.8.15.json
│ └── console2.0.8.19.json
├── draft-EIP712.sol
│ ├── EIP712.0.8.15.json
│ └── EIP712.0.8.19.json
├── draft-EIP712Upgradeable.sol
│ └── EIP712Upgradeable.json
├── draft-ERC20Permit.sol
│ └── ERC20Permit.json
├── draft-IERC20Permit.sol
│ └── IERC20Permit.json
├── introspection
│ └── IERC165.sol
│ ├── IERC165.0.8.15.json
│ └── IERC165.0.8.19.json
├── libraries
│ └── Types.sol
│ ├── Types.0.8.15.json
│ └── Types.0.8.19.json
├── safeconsole.sol
│ ├── safeconsole.0.8.15.json
│ └── safeconsole.0.8.19.json
└── test.sol
├── DSTest.0.8.15.json
└── DSTest.0.8.19.json
343 directories, 712 files
It seems the naming convension is not consistent, some are like xxx.json
, some are like xxx.version.json
?
You can fetch specific artifact via VM::getDeployedCode("DeployConfig.s.sol:DeployConfig.0.8.15")
What would you like as a default behavior in this case? It seems that you compile sources with different solc versions and some of artifacts are getting compiled with more than one. I don't think it would be safe for cheatcode backend to decide which contract bytecode to return in that case without explicitly specified version
Why are there two naming conventions, some are like xxx.json
, some are like xxx.version.json
?
xxx.version.json
is used only when the same xxx
contract is getting compiled with different solc versions
Where're the solc versions specified in foundry.toml
? I glimpsed over https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts-bedrock/foundry.toml but didn't see such options specified.
By default, solc versions are determined automatically if auto_detect_solc is set to true, otherwise, you may specify solc_version to lock specific version
But it seems neither auto_detect_solc
nor solc_version
is specified in the above foundry.toml
.
Try forge clean
to remove all artifacts and then rebuild. It will build with only 1 version for the particular contract now instead of 2
fwiw the following syntax has never worked for me: VM::getDeployedCode("DeployConfig.s.sol:DeployConfig.0.8.15")
, maybe i was doing something wrong