foundry icon indicating copy to clipboard operation
foundry copied to clipboard

`getDeployedCode` failed to find the code

Open zhiqiangxu opened this issue 1 year ago • 7 comments

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?

zhiqiangxu avatar Feb 08 '24 01:02 zhiqiangxu

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

klkvr avatar Feb 08 '24 17:02 klkvr

Why are there two naming conventions, some are like xxx.json, some are like xxx.version.json?

zhiqiangxu avatar Feb 09 '24 03:02 zhiqiangxu

xxx.version.json is used only when the same xxx contract is getting compiled with different solc versions

klkvr avatar Feb 09 '24 03:02 klkvr

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.

zhiqiangxu avatar Feb 09 '24 03:02 zhiqiangxu

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

klkvr avatar Feb 09 '24 03:02 klkvr

But it seems neither auto_detect_solc nor solc_version is specified in the above foundry.toml.

zhiqiangxu avatar Feb 09 '24 03:02 zhiqiangxu

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

tynes avatar Feb 13 '24 08:02 tynes