From 36b154343e39c36b11e45dba51e2cf5a5ccc4653 Mon Sep 17 00:00:00 2001 From: Lars Kuhtz Date: Sun, 19 Jan 2025 20:19:21 -0800 Subject: [PATCH] Add EvmDevelopment (revert Development to original) --- chainweb.cabal | 1 + src/Chainweb/Chainweb/Configuration.hs | 3 +- src/Chainweb/PayloadProvider/EVM/Genesis.hs | 43 +++++++-- src/Chainweb/Version/Development.hs | 72 --------------- src/Chainweb/Version/EvmDevelopment.hs | 98 +++++++++++++++++++++ src/Chainweb/Version/Registry.hs | 5 +- 6 files changed, 142 insertions(+), 80 deletions(-) create mode 100644 src/Chainweb/Version/EvmDevelopment.hs diff --git a/chainweb.cabal b/chainweb.cabal index ecebdd2982..126d5fff4b 100644 --- a/chainweb.cabal +++ b/chainweb.cabal @@ -284,6 +284,7 @@ library , Chainweb.VerifierPlugin.Hyperlane.Utils , Chainweb.Version , Chainweb.Version.Development + , Chainweb.Version.EvmDevelopment , Chainweb.Version.Guards , Chainweb.Version.Mainnet , Chainweb.Version.Pact5Development diff --git a/src/Chainweb/Chainweb/Configuration.hs b/src/Chainweb/Chainweb/Configuration.hs index 00599e7629..9633e49633 100644 --- a/src/Chainweb/Chainweb/Configuration.hs +++ b/src/Chainweb/Chainweb/Configuration.hs @@ -108,6 +108,7 @@ import Chainweb.Time hiding (second) import Chainweb.Utils import Chainweb.Version import Chainweb.Version.Development +import Chainweb.Version.EvmDevelopment import Chainweb.Version.Mainnet import Chainweb.Version.Pact5Development import Chainweb.Version.RecapDevelopment @@ -636,7 +637,7 @@ validateChainwebVersion v = do , "just yet." ] where - isDevelopment = _versionCode v `elem` [_versionCode dv | dv <- [recapDevnet, devnet, pact5Devnet]] + isDevelopment = _versionCode v `elem` [_versionCode dv | dv <- [recapDevnet, devnet, pact5Devnet, evmDevnet]] validateBackupConfig :: ConfigValidation BackupConfig [] validateBackupConfig c = diff --git a/src/Chainweb/PayloadProvider/EVM/Genesis.hs b/src/Chainweb/PayloadProvider/EVM/Genesis.hs index 1313e2d7c7..060103d421 100644 --- a/src/Chainweb/PayloadProvider/EVM/Genesis.hs +++ b/src/Chainweb/PayloadProvider/EVM/Genesis.hs @@ -13,20 +13,23 @@ module Chainweb.PayloadProvider.EVM.Genesis ) where import Chainweb.Version import Chainweb.PayloadProvider.EVM.Header -import Chainweb.Version.Development +import Chainweb.Version.EvmDevelopment import Chainweb.Utils import Chainweb.PayloadProvider.EVM.Utils (decodeRlpM) -- -------------------------------------------------------------------------- -- -- Genesis Blocks -- --- Development chain-0, chain-1 +-- EVM Development headers for chain-0 and chain-1. +-- +-- NOTE that the header value does not depend on the chainId/netId. +-- -- { --- "hash": "0x98efcc5c3598a2de7bf8e8e522b61752d198f7cf50f4f60e5a86d301ad38f9a0", +-- "hash": "0x557c3fc4b87c8bce45002e8fe4db07546324caec6459cb67c64389110c9fd942", -- "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000", -- "sha3Uncles": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", -- "miner": "0x0000000000000000000000000000000000000000", --- "stateRoot": "0xa4b758475d7995b93a1801deec833284409e03940bc1a3c5850c66f920e2a133", +-- "stateRoot": "0x7d2b86c493412a586f03e4aee1ab94837c6a8fff21ff7c6045dc1330d5b0d49e", -- "transactionsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", -- "receiptsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", -- "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", @@ -49,12 +52,40 @@ import Chainweb.PayloadProvider.EVM.Utils (decodeRlpM) -- "size": "0x247", -- "withdrawals": [] -- } +-- +-- block payload hash: -EffZgInrtrokWVn5iqO2fuTbtG2-noDdhXr0pHQA4E -- | Genesis Headers for the EVM Payload Provider -- -- NOTE: These headers must match the block payload hashes in the respective -- Chainweb.Version.* modules. -- +-- How to get the headers: +-- +-- 1. Run the EVM with the chain specification for the network: +-- +-- @ +-- docker compose up -d chainweb-evm-chain0 +-- @ +-- +-- 2. Query the EVM genesis header with `eth_getBlockByNumber` at height 0 +-- +-- @ +-- docker compose run --rm -ti curl -sL http://chainweb-evm-chain0:8545 -XPOST -H 'content-type:application/json' -d '{"jsonrpc":"2.0","id":1,"method":"eth_getBlockByNumber","params":["0x0", false]}' | +-- jq -rc '.result' | +-- sed -e 's/"/\\"/g' +-- @ +-- +-- 3. In ghci bind the output value to constant @a@ and +-- +-- @ +-- hdr <- decodeOrThrow @IO @E.Header a +-- -- print block payload hash +-- encodeToText $ E._hdrPayloadHash hdr +-- -- encode header to base64 +-- encodeB64UrlNoPaddingText $ putRlpByteString hdr +-- @ +-- genesisBlocks :: HasChainwebVersion v => HasChainId c @@ -64,8 +95,8 @@ genesisBlocks genesisBlocks v c = go (_chainwebVersion v) (_chainId c) where -- Ethereum NetworkID 1789 - go Development (ChainId 0) = f "-QI-oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoB3MTejex116q4W1Z7bM1BrTEkUblIp0E_ChQv1A1JNHlAAAAAAAAAAAAAAAAAAAAAAAAAAAoKS3WEddeZW5OhgB3uyDMoRAngOUC8GjxYUMZvkg4qEzoFboHxcbzFWm_4NF5pLA-G5bSOAbmWytwAFiL7XjY7QhoFboHxcbzFWm_4NF5pLA-G5bSOAbmWytwAFiL7XjY7QhuQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAhAHJw4CAhGSQ_dKAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiAAAAAAAAAAAhDuaygCgVugfFxvMVab_g0XmksD4bltI4BuZbK3AAWIvteNjtCGAgKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" - go Development (ChainId 1) = f "-QI-oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoB3MTejex116q4W1Z7bM1BrTEkUblIp0E_ChQv1A1JNHlAAAAAAAAAAAAAAAAAAAAAAAAAAAoKS3WEddeZW5OhgB3uyDMoRAngOUC8GjxYUMZvkg4qEzoFboHxcbzFWm_4NF5pLA-G5bSOAbmWytwAFiL7XjY7QhoFboHxcbzFWm_4NF5pLA-G5bSOAbmWytwAFiL7XjY7QhuQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAhAHJw4CAhGSQ_dKAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiAAAAAAAAAAAhDuaygCgVugfFxvMVab_g0XmksD4bltI4BuZbK3AAWIvteNjtCGAgKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + go EvmDevelopment (ChainId 0) = f "-QI-oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoB3MTejex116q4W1Z7bM1BrTEkUblIp0E_ChQv1A1JNHlAAAAAAAAAAAAAAAAAAAAAAAAAAAoH0rhsSTQSpYbwPkruGrlIN8ao__If98YEXcEzDVsNSeoFboHxcbzFWm_4NF5pLA-G5bSOAbmWytwAFiL7XjY7QhoFboHxcbzFWm_4NF5pLA-G5bSOAbmWytwAFiL7XjY7QhuQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAhAHJw4CAhGSQ_dKAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiAAAAAAAAAAAhDuaygCgVugfFxvMVab_g0XmksD4bltI4BuZbK3AAWIvteNjtCGAgKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + go EvmDevelopment (ChainId 1) = f "-QI-oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoB3MTejex116q4W1Z7bM1BrTEkUblIp0E_ChQv1A1JNHlAAAAAAAAAAAAAAAAAAAAAAAAAAAoH0rhsSTQSpYbwPkruGrlIN8ao__If98YEXcEzDVsNSeoFboHxcbzFWm_4NF5pLA-G5bSOAbmWytwAFiL7XjY7QhoFboHxcbzFWm_4NF5pLA-G5bSOAbmWytwAFiL7XjY7QhuQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAhAHJw4CAhGSQ_dKAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiAAAAAAAAAAAhDuaygCgVugfFxvMVab_g0XmksD4bltI4BuZbK3AAWIvteNjtCGAgKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" go _ _ = error "requested genesis block for unsupported chain" f t = case decodeB64UrlNoPaddingText t >>= decodeRlpM of diff --git a/src/Chainweb/Version/Development.hs b/src/Chainweb/Version/Development.hs index 061cfb5c30..b85d6db275 100644 --- a/src/Chainweb/Version/Development.hs +++ b/src/Chainweb/Version/Development.hs @@ -26,78 +26,6 @@ pattern Development <- ((== devnet) -> True) where devnet :: ChainwebVersion devnet = ChainwebVersion - { _versionCode = ChainwebVersionCode 0x00000002 - , _versionName = ChainwebVersionName "development" - , _versionForks = tabulateHashMap $ \case - -- TODO: for now, Pact 5 is never enabled on devnet. - -- this will change as it stabilizes. - Pact5Fork -> AllChains ForkNever - _ -> AllChains ForkAtGenesis - , _versionUpgrades = AllChains mempty - , _versionGraphs = Bottom (minBound, twentyChainGraph) - , _versionBlockDelay = BlockDelay 30_000_000 - , _versionWindow = WindowWidth 120 - , _versionHeaderBaseSizeBytes = 318 - 110 - , _versionBootstraps = [] - , _versionGenesis = VersionGenesis - { _genesisBlockTarget = AllChains $ HashTarget (maxBound `div` 500_000) - , _genesisTime = onChains - $ (unsafeChainId 0, BlockCreationTime (Time (secondsToTimeSpan 1687223762))) - : (unsafeChainId 1, BlockCreationTime (Time (secondsToTimeSpan 1687223762))) - : [ (unsafeChainId i, BlockCreationTime [timeMicrosQQ| 2019-07-17T18:28:37.613832 |]) | i <- [2..19] ] - , _genesisBlockPayload = onChains $ - [ (unsafeChainId 0, unsafeFromText "plZHoqJDhxYMKoCLHAtK0dCCRLrMwiV54NyEERCx9rE") - , (unsafeChainId 1, unsafeFromText "plZHoqJDhxYMKoCLHAtK0dCCRLrMwiV54NyEERCx9rE") - , (unsafeChainId 2, unsafeFromText "Gnh6QWze67ODyy4BoV4ZOeih72e_Cqos2BJM41sMgVc") - , (unsafeChainId 3, unsafeFromText "Ta08GYak3xnTr0HvJq9e37RTigd56N7m2aj_cxI1oC0") - , (unsafeChainId 4, unsafeFromText "eliqzAQ0JGxPD_73dwO7mXsX_tEOz6HJuLsDNJxqSd4") - , (unsafeChainId 5, unsafeFromText "F7-cmj0XXGKxjKm-dDSmMSpD9jwCjzrdQmwQgsjPj2g") - , (unsafeChainId 6, unsafeFromText "VK7rBExdlAUo9maErP19WJSgVMTc37xpEa_VXWELF74") - , (unsafeChainId 7, unsafeFromText "CnAxuzvToxp-bNZ_lnhCAJCEU4hzXuNJmGRMJx5bBWE") - , (unsafeChainId 8, unsafeFromText "abMl-fqTLY1EmiiFILE_orgsbAB_kKAshAx-zIQFoEM") - , (unsafeChainId 9, unsafeFromText "o5G8VKfB7I1Qv_Y8paCFHIS6vZuMYUgYBtV6-fDqzYA") - , (unsafeChainId 10, unsafeFromText "1DJiGUHIrXDNS7M3RJlUorw_07gjLRetb1q9tlt7aZs") - , (unsafeChainId 11, unsafeFromText "ot-tryHcaC7uvHkT1MqYsbLDV1ApZa2KGvjzddIonYU") - , (unsafeChainId 12, unsafeFromText "MjGGd7Osb09dEE2mfpDFISrAfWNnDqEqEYuRm5nFXSs") - , (unsafeChainId 13, unsafeFromText "ljaDzDMfFMOO4AZYC63_KIPAINZwRXUzKZ5FyB1pDjs") - , (unsafeChainId 14, unsafeFromText "W9lvCyH_NAJx89mnCQcwl5OknI89IM_5rn_TR6KkobQ") - , (unsafeChainId 15, unsafeFromText "PGKV488wnfsEgv28CtuAT16JNWmMRB-42TDMIr4jRGQ") - , (unsafeChainId 16, unsafeFromText "8J1yMti75X1Gnjn2AEpWMw-8nzOK6ysHo5c4SBIiNGo") - , (unsafeChainId 17, unsafeFromText "XlIsxdG3YnbxapDq71wY85-ghlIK3c5vfD_WEXgKcRM") - , (unsafeChainId 18, unsafeFromText "968Xg-0Jqm1nTgFi69or2yuFprmg7_SDKcrcWIItW74") - , (unsafeChainId 19, unsafeFromText "7CRqrZPgJ9JYuCWAQtO2bqxlFDUw_i2Hlk52duk8A0s") - ] - } - - -- still the *default* block gas limit is set, see - -- defaultChainwebConfiguration._configBlockGasLimit - , _versionMaxBlockGasLimit = Bottom (minBound, Nothing) - , _versionCheats = VersionCheats - { _disablePow = True - , _fakeFirstEpochStart = True - , _disablePact = False - } - , _versionDefaults = VersionDefaults - { _disablePeerValidation = True - , _disableMempoolSync = False - } - , _versionVerifierPluginNames = AllChains $ Bottom - (minBound, Set.fromList $ map VerifierName ["hyperlane_v3_message", "allow"]) - , _versionQuirks = noQuirks - , _versionServiceDate = Nothing - - -- FIXME make this safe for graph changes - , _versionPayloadProviderTypes = onChains - $ (unsafeChainId 0, EvmProvider 1789) - : (unsafeChainId 1, EvmProvider 1790) - : [ (unsafeChainId i, MinimalProvider) | i <- [2..19] ] - } - --- Original devnet --- FIXME we should revert this and instead introduce a new devnet for the EVM work --- -devnet_ :: ChainwebVersion -devnet_ = ChainwebVersion { _versionCode = ChainwebVersionCode 0x00000002 , _versionName = ChainwebVersionName "development" , _versionForks = tabulateHashMap $ \case diff --git a/src/Chainweb/Version/EvmDevelopment.hs b/src/Chainweb/Version/EvmDevelopment.hs new file mode 100644 index 0000000000..c567c3aad4 --- /dev/null +++ b/src/Chainweb/Version/EvmDevelopment.hs @@ -0,0 +1,98 @@ +{-# language LambdaCase #-} +{-# language NumericUnderscores #-} +{-# language OverloadedStrings #-} +{-# language PatternSynonyms #-} +{-# language QuasiQuotes #-} +{-# language ViewPatterns #-} + +module Chainweb.Version.EvmDevelopment +( evmDevnet +, pattern EvmDevelopment +) where + +import qualified Data.Set as Set + +import Chainweb.BlockCreationTime +import Chainweb.ChainId +import Chainweb.Difficulty +import Chainweb.Graph +import Chainweb.Time +import Chainweb.Utils +import Chainweb.Utils.Rule +import Chainweb.Version + +import Pact.Types.Verifier + +pattern EvmDevelopment :: ChainwebVersion +pattern EvmDevelopment <- ((== evmDevnet) -> True) where + EvmDevelopment = evmDevnet + +evmDevnet :: ChainwebVersion +evmDevnet = ChainwebVersion + { _versionCode = ChainwebVersionCode 0x0000_000a + , _versionName = ChainwebVersionName "evm-development" + , _versionForks = tabulateHashMap $ \case + -- TODO: for now, Pact 5 is never enabled on EVM devnet. + -- this will change as it stabilizes. + Pact5Fork -> AllChains ForkNever + _ -> AllChains ForkAtGenesis + , _versionUpgrades = AllChains mempty + , _versionGraphs = Bottom (minBound, twentyChainGraph) + , _versionBlockDelay = BlockDelay 30_000_000 + , _versionWindow = WindowWidth 120 + , _versionHeaderBaseSizeBytes = 318 - 110 + , _versionBootstraps = [] + , _versionGenesis = VersionGenesis + { _genesisBlockTarget = AllChains $ HashTarget (maxBound `div` 500_000) + , _genesisTime = onChains + $ (unsafeChainId 0, BlockCreationTime (Time (secondsToTimeSpan 1687223762))) + : (unsafeChainId 1, BlockCreationTime (Time (secondsToTimeSpan 1687223762))) + : [ (unsafeChainId i, BlockCreationTime [timeMicrosQQ| 2019-07-17T18:28:37.613832 |]) | i <- [2..19] ] + , _genesisBlockPayload = onChains $ + [ (unsafeChainId 0, unsafeFromText "-EffZgInrtrokWVn5iqO2fuTbtG2-noDdhXr0pHQA4E") + , (unsafeChainId 1, unsafeFromText "-EffZgInrtrokWVn5iqO2fuTbtG2-noDdhXr0pHQA4E") + , (unsafeChainId 2, unsafeFromText "Gnh6QWze67ODyy4BoV4ZOeih72e_Cqos2BJM41sMgVc") + , (unsafeChainId 3, unsafeFromText "Ta08GYak3xnTr0HvJq9e37RTigd56N7m2aj_cxI1oC0") + , (unsafeChainId 4, unsafeFromText "eliqzAQ0JGxPD_73dwO7mXsX_tEOz6HJuLsDNJxqSd4") + , (unsafeChainId 5, unsafeFromText "F7-cmj0XXGKxjKm-dDSmMSpD9jwCjzrdQmwQgsjPj2g") + , (unsafeChainId 6, unsafeFromText "VK7rBExdlAUo9maErP19WJSgVMTc37xpEa_VXWELF74") + , (unsafeChainId 7, unsafeFromText "CnAxuzvToxp-bNZ_lnhCAJCEU4hzXuNJmGRMJx5bBWE") + , (unsafeChainId 8, unsafeFromText "abMl-fqTLY1EmiiFILE_orgsbAB_kKAshAx-zIQFoEM") + , (unsafeChainId 9, unsafeFromText "o5G8VKfB7I1Qv_Y8paCFHIS6vZuMYUgYBtV6-fDqzYA") + , (unsafeChainId 10, unsafeFromText "1DJiGUHIrXDNS7M3RJlUorw_07gjLRetb1q9tlt7aZs") + , (unsafeChainId 11, unsafeFromText "ot-tryHcaC7uvHkT1MqYsbLDV1ApZa2KGvjzddIonYU") + , (unsafeChainId 12, unsafeFromText "MjGGd7Osb09dEE2mfpDFISrAfWNnDqEqEYuRm5nFXSs") + , (unsafeChainId 13, unsafeFromText "ljaDzDMfFMOO4AZYC63_KIPAINZwRXUzKZ5FyB1pDjs") + , (unsafeChainId 14, unsafeFromText "W9lvCyH_NAJx89mnCQcwl5OknI89IM_5rn_TR6KkobQ") + , (unsafeChainId 15, unsafeFromText "PGKV488wnfsEgv28CtuAT16JNWmMRB-42TDMIr4jRGQ") + , (unsafeChainId 16, unsafeFromText "8J1yMti75X1Gnjn2AEpWMw-8nzOK6ysHo5c4SBIiNGo") + , (unsafeChainId 17, unsafeFromText "XlIsxdG3YnbxapDq71wY85-ghlIK3c5vfD_WEXgKcRM") + , (unsafeChainId 18, unsafeFromText "968Xg-0Jqm1nTgFi69or2yuFprmg7_SDKcrcWIItW74") + , (unsafeChainId 19, unsafeFromText "7CRqrZPgJ9JYuCWAQtO2bqxlFDUw_i2Hlk52duk8A0s") + ] + } + + -- still the *default* block gas limit is set, see + -- defaultChainwebConfiguration._configBlockGasLimit + , _versionMaxBlockGasLimit = Bottom (minBound, Nothing) + , _versionCheats = VersionCheats + { _disablePow = True + , _fakeFirstEpochStart = True + , _disablePact = False + } + , _versionDefaults = VersionDefaults + { _disablePeerValidation = True + , _disableMempoolSync = False + } + , _versionVerifierPluginNames = AllChains $ Bottom + (minBound, Set.fromList $ map VerifierName ["hyperlane_v3_message", "allow"]) + , _versionQuirks = noQuirks + , _versionServiceDate = Nothing + + -- FIXME make this safe for graph changes + , _versionPayloadProviderTypes = onChains + $ (unsafeChainId 0, EvmProvider 1789) + : (unsafeChainId 1, EvmProvider 1790) + : [ (unsafeChainId i, MinimalProvider) | i <- [2..19] ] + } + diff --git a/src/Chainweb/Version/Registry.hs b/src/Chainweb/Version/Registry.hs index 2f11d5ea66..24561d07e4 100644 --- a/src/Chainweb/Version/Registry.hs +++ b/src/Chainweb/Version/Registry.hs @@ -46,6 +46,7 @@ import GHC.Stack import Chainweb.Version import Chainweb.Version.Development +import Chainweb.Version.EvmDevelopment import Chainweb.Version.Pact5Development import Chainweb.Version.RecapDevelopment import Chainweb.Version.Mainnet @@ -140,6 +141,7 @@ lookupVersionByCode code | code == _versionCode recapDevnet = "recapDevnet version used but not registered, remember to do so after it's configured. " <> perhaps | code == _versionCode devnet = "devnet version used but not registered, remember to do so after it's configured. " <> perhaps | code == _versionCode pact5Devnet = "Pact 5 devnet version used but not registered, remember to do so after it's configured. " <> perhaps + | code == _versionCode evmDevnet = "EVM devnet version used but not registered, remember to do so after it's configured. " <> perhaps | otherwise = "version not registered with code " <> show code <> ", have you seen Chainweb.Test.TestVersions.testVersions?" perhaps = "Perhaps you are attempting to run a different devnet version than a previous run, and you need to delete your db directory before restarting devnet with the new version?" @@ -161,6 +163,7 @@ lookupVersionByName name | name == _versionName recapDevnet = "recapDevnet version used but not registered, remember to do so after it's configured" | name == _versionName devnet = "devnet version used but not registered, remember to do so after it's configured" | name == _versionName pact5Devnet = "Pact 5 devnet version used but not registered, remember to do so after it's configured" + | name == _versionName evmDevnet = "EVM devnet version used but not registered, remember to do so after it's configured" | otherwise = "version not registered with name " <> show name <> ", have you seen Chainweb.Test.TestVersions.testVersions?" fabricateVersionWithName :: HasCallStack => ChainwebVersionName -> ChainwebVersion @@ -169,7 +172,7 @@ fabricateVersionWithName name = -- | Versions known to us by name. knownVersions :: [ChainwebVersion] -knownVersions = [mainnet, testnet04, testnet05, recapDevnet, devnet, pact5Devnet] +knownVersions = [mainnet, testnet04, testnet05, recapDevnet, devnet, pact5Devnet, evmDevnet] -- | Look up a known version by name, usually with `m` instantiated to some -- configuration parser monad.