Skip to content

Commit d869c4e

Browse files
committed
fix evm development versions
1 parent 49e69e8 commit d869c4e

File tree

4 files changed

+68
-7
lines changed

4 files changed

+68
-7
lines changed

src/Chainweb/Chainweb/Configuration.hs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@ import Chainweb.Utils
9292
import Chainweb.Version
9393
import Chainweb.Version.Development
9494
import Chainweb.Version.EvmDevelopment
95+
import Chainweb.Version.EvmDevelopmentSingleton
9596
import Chainweb.Version.Mainnet
9697
import Chainweb.Version.RecapDevelopment
9798
import Chainweb.Version.Registry (findKnownVersion, knownVersions)
@@ -547,7 +548,10 @@ validateChainwebVersion v = do
547548
, sshow (_versionName v)
548549
]
549550
where
550-
isDevelopment = _versionCode v `elem` [_versionCode dv | dv <- [recapDevnet, devnet, evmDevnet]]
551+
isDevelopment = _versionCode v `elem`
552+
[_versionCode dv | dv <-
553+
[recapDevnet, devnet, evmDevnet, evmDevnetSingleton, evmDevnetPair]
554+
]
551555

552556
validateBackupConfig :: ConfigValidation BackupConfig []
553557
validateBackupConfig c =

src/Chainweb/PayloadProvider/EVM/Genesis.hs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ module Chainweb.PayloadProvider.EVM.Genesis
1616
import Chainweb.Version
1717
import Chainweb.PayloadProvider.EVM.Header
1818
import Chainweb.Version.EvmDevelopment
19+
import Chainweb.Version.EvmDevelopmentSingleton
1920
import Chainweb.Utils
2021
import Chainweb.PayloadProvider.EVM.Utils (decodeRlpM)
2122
import Data.Text qualified as T
@@ -79,6 +80,14 @@ genesisBlocks
7980
genesisBlocks c = go (_versionCode implicitVersion) (_chainId c)
8081
where
8182
go v
83+
| v == _versionCode EvmDevelopmentSingleton = \case
84+
ChainId 0 -> f
85+
"-QJfoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoB3MTejex116q4W1Z7bM1BrTEkUblIp0E_ChQv1A1JNHlAAAAAAAAAAAAAAAAAAAAAAAAAAAoGnV3kPaffv02pFz2XaK1abwEUqbp-L5K03hpucRJqlToFboHxcbzFWm_4NF5pLA-G5bSOAbmWytwAFiL7XjY7QhoFboHxcbzFWm_4NF5pLA-G5bSOAbmWytwAFiL7XjY7QhuQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAhAHJw4CAhGSQ_dKAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiAAAAAAAAAAAhDuaygCgVugfFxvMVab_g0XmksD4bltI4BuZbK3AAWIvteNjtCGAgKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKDjsMRCmPwcFJr79MiZb7kkJ65B5GSbk0yklZkbeFK4VQ"
86+
_ -> error $ "unsupported chain: " <> T.unpack (toText (_chainId c))
87+
| v == _versionCode EvmDevelopmentPair = \case
88+
ChainId 1 -> f
89+
"-QJfoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoB3MTejex116q4W1Z7bM1BrTEkUblIp0E_ChQv1A1JNHlAAAAAAAAAAAAAAAAAAAAAAAAAAAoGnV3kPaffv02pFz2XaK1abwEUqbp-L5K03hpucRJqlToFboHxcbzFWm_4NF5pLA-G5bSOAbmWytwAFiL7XjY7QhoFboHxcbzFWm_4NF5pLA-G5bSOAbmWytwAFiL7XjY7QhuQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAhAHJw4CAhGSQ_dKAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiAAAAAAAAAAAhDuaygCgVugfFxvMVab_g0XmksD4bltI4BuZbK3AAWIvteNjtCGAgKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKDjsMRCmPwcFJr79MiZb7kkJ65B5GSbk0yklZkbeFK4VQ"
90+
_ -> error $ "unsupported chain: " <> T.unpack (toText (_chainId c))
8291
| v == _versionCode EvmDevelopment = \case
8392
ChainId 20 -> f
8493
"-QJfoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoB3MTejex116q4W1Z7bM1BrTEkUblIp0E_ChQv1A1JNHlAAAAAAAAAAAAAAAAAAAAAAAAAAAoGnV3kPaffv02pFz2XaK1abwEUqbp-L5K03hpucRJqlToFboHxcbzFWm_4NF5pLA-G5bSOAbmWytwAFiL7XjY7QhoFboHxcbzFWm_4NF5pLA-G5bSOAbmWytwAFiL7XjY7QhuQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAhAHJw4CAhGSQ_dKAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiAAAAAAAAAAAhDuaygCgVugfFxvMVab_g0XmksD4bltI4BuZbK3AAWIvteNjtCGAgKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKDjsMRCmPwcFJr79MiZb7kkJ65B5GSbk0yklZkbeFK4VQ"

src/Chainweb/Version/EvmDevelopmentSingleton.hs

Lines changed: 53 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88
module Chainweb.Version.EvmDevelopmentSingleton
99
( evmDevnetSingleton
1010
, pattern EvmDevelopmentSingleton
11+
, evmDevnetPair
12+
, pattern EvmDevelopmentPair
1113
) where
1214

1315
import qualified Data.Set as Set
@@ -27,6 +29,10 @@ pattern EvmDevelopmentSingleton :: ChainwebVersion
2729
pattern EvmDevelopmentSingleton <- ((== evmDevnetSingleton) -> True) where
2830
EvmDevelopmentSingleton = evmDevnetSingleton
2931

32+
pattern EvmDevelopmentPair :: ChainwebVersion
33+
pattern EvmDevelopmentPair <- ((== evmDevnetPair) -> True) where
34+
EvmDevelopmentPair = evmDevnetPair
35+
3036
-- How to compute the hashes:
3137
--
3238
-- Mininal Payload Provider:
@@ -49,10 +55,10 @@ pattern EvmDevelopmentSingleton <- ((== evmDevnetSingleton) -> True) where
4955
--
5056
-- TODO (use ea?)
5157

52-
evmDevnetSingleton :: ChainwebVersion
53-
evmDevnetSingleton = withVersion evmDevnetSingleton $ ChainwebVersion
58+
evmDevnetPair :: ChainwebVersion
59+
evmDevnetPair = withVersion evmDevnetPair $ ChainwebVersion
5460
{ _versionCode = ChainwebVersionCode 0x0000_000b
55-
, _versionName = ChainwebVersionName "evm-development-singleton"
61+
, _versionName = ChainwebVersionName "evm-development-pair"
5662
, _versionForks = tabulateHashMap $ const $ onAllChains ForkAtGenesis
5763
, _versionUpgrades = onAllChains mempty
5864
, _versionGraphs = Bottom (minBound, pairChainGraph)
@@ -61,7 +67,7 @@ evmDevnetSingleton = withVersion evmDevnetSingleton $ ChainwebVersion
6167
, _versionHeaderBaseSizeBytes = 318 - 110
6268
, _versionBootstraps = []
6369
, _versionGenesis = VersionGenesis
64-
{ _genesisBlockTarget = onAllChains $ HashTarget (maxBound `div` 100_000)
70+
{ _genesisBlockTarget = onAllChains $ HashTarget (maxBound `div` 10_000)
6571
, _genesisTime = onChains
6672
-- FIXME: is the creation time for the pact headers correct?
6773
$ [ (unsafeChainId i, BlockCreationTime [timeMicrosQQ| 2025-01-01T00:00:00.000000 |]) | i <- [0] ]
@@ -94,5 +100,47 @@ evmDevnetSingleton = withVersion evmDevnetSingleton $ ChainwebVersion
94100
-- FIXME make this safe for graph changes
95101
, _versionPayloadProviderTypes = onChains
96102
$ [ (unsafeChainId i, PactProvider) | i <- [0] ]
97-
<> [ (unsafeChainId i, EvmProvider (1789 - 20 + int i)) | i <- [1] ]
103+
<> [ (unsafeChainId i, EvmProvider (1789 - 1 + int i)) | i <- [1] ]
104+
}
105+
106+
evmDevnetSingleton :: ChainwebVersion
107+
evmDevnetSingleton = withVersion evmDevnetSingleton $ ChainwebVersion
108+
{ _versionCode = ChainwebVersionCode 0x0000_000c
109+
, _versionName = ChainwebVersionName "evm-development-singleton"
110+
, _versionForks = tabulateHashMap $ const $ onAllChains ForkAtGenesis
111+
, _versionUpgrades = onAllChains mempty
112+
, _versionGraphs = Bottom (minBound, pairChainGraph)
113+
, _versionBlockDelay = BlockDelay 30_000_000
114+
, _versionWindow = WindowWidth 120
115+
, _versionHeaderBaseSizeBytes = 318 - 110
116+
, _versionBootstraps = []
117+
, _versionGenesis = VersionGenesis
118+
{ _genesisBlockTarget = onAllChains $ HashTarget (maxBound `div` 10_000)
119+
, _genesisTime = onChains
120+
[ (unsafeChainId 0, BlockCreationTime (Time (secondsToTimeSpan 1687223762))) ]
121+
, _genesisBlockPayload = onChains $
122+
-- EVM Payload Provider
123+
[ (unsafeChainId 1, unsafeFromText "FAxLDjtb8r_0S0Rfr8rD47EQwO-Ma-fmEynZccHvn5o") ]
124+
}
125+
126+
-- still the *default* block gas limit is set, see
127+
-- defaultChainwebConfiguration._configBlockGasLimit
128+
, _versionMaxBlockGasLimit = Bottom (minBound, Nothing)
129+
, _versionCheats = VersionCheats
130+
{ _disablePow = True
131+
, _fakeFirstEpochStart = True
132+
, _disablePact = False
133+
}
134+
, _versionDefaults = VersionDefaults
135+
{ _disablePeerValidation = True
136+
, _disableMempoolSync = False
137+
}
138+
, _versionVerifierPluginNames = onAllChains $ Bottom
139+
(minBound, Set.fromList $ map VerifierName ["hyperlane_v3_message", "allow"])
140+
, _versionQuirks = noQuirks
141+
, _versionServiceDate = Nothing
142+
143+
-- FIXME make this safe for graph changes
144+
, _versionPayloadProviderTypes = onChains
145+
[ (unsafeChainId 0, EvmProvider 1789) ]
98146
}

src/Chainweb/Version/Registry.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ validateVersion v = do
8181

8282
-- | Versions known to us by name.
8383
knownVersions :: [ChainwebVersion]
84-
knownVersions = [mainnet, testnet04, recapDevnet, devnet, evmDevnet, evmDevnetSingleton]
84+
knownVersions = [mainnet, testnet04, recapDevnet, devnet, evmDevnet, evmDevnetSingleton, evmDevnetPair]
8585

8686
-- | Look up a known version by name, usually with `m` instantiated to some
8787
-- configuration parser monad.

0 commit comments

Comments
 (0)