@@ -3,23 +3,27 @@ package io.iohk.ethereum.vm
33import io .iohk .ethereum .domain .UInt256
44import io .iohk .ethereum .utils .BlockchainConfig
55import io .iohk .ethereum .vm .BlockchainConfigForEvm .EtcForks .{Agharta , Atlantis , BeforeAtlantis , EtcFork , Phoenix }
6- import io .iohk .ethereum .vm .BlockchainConfigForEvm .EthForks .{BeforeByzantium , Byzantium , Constantinople , Petersburg }
6+ import io .iohk .ethereum .vm .BlockchainConfigForEvm .EthForks .{BeforeByzantium , Byzantium , Constantinople , Istanbul , Petersburg }
77
88/**
99 * A subset of [[io.iohk.ethereum.utils.BlockchainConfig ]] that is required for instantiating an [[EvmConfig ]]
1010 * Note that `accountStartNonce` is required for a [[WorldStateProxy ]] implementation that is used
1111 * by a given VM
1212 */
13+ // FIXME manage etc/eth forks in a more sophisticated way
1314case class BlockchainConfigForEvm (
15+ // ETH forks
1416 frontierBlockNumber : BigInt ,
1517 homesteadBlockNumber : BigInt ,
1618 eip150BlockNumber : BigInt ,
1719 eip160BlockNumber : BigInt ,
1820 eip161BlockNumber : BigInt ,
1921 byzantiumBlockNumber : BigInt ,
2022 constantinopleBlockNumber : BigInt ,
23+ istanbulBlockNumber : BigInt ,
2124 maxCodeSize : Option [BigInt ],
2225 accountStartNonce : UInt256 ,
26+ // ETC forks
2327 atlantisBlockNumber : BigInt ,
2428 aghartaBlockNumber : BigInt ,
2529 petersburgBlockNumber : BigInt ,
@@ -37,8 +41,8 @@ case class BlockchainConfigForEvm(
3741 case _ if blockNumber < byzantiumBlockNumber => BeforeByzantium
3842 case _ if blockNumber < constantinopleBlockNumber => Byzantium
3943 case _ if blockNumber < petersburgBlockNumber => Constantinople
40- case _ if blockNumber >= petersburgBlockNumber => Petersburg
41- // TODO add Istanbul
44+ case _ if blockNumber < istanbulBlockNumber => Petersburg
45+ case _ if blockNumber >= istanbulBlockNumber => Istanbul
4246 }
4347}
4448
@@ -65,6 +69,7 @@ object BlockchainConfigForEvm {
6569 eip161BlockNumber = eip161BlockNumber,
6670 byzantiumBlockNumber = byzantiumBlockNumber,
6771 constantinopleBlockNumber = constantinopleBlockNumber,
72+ istanbulBlockNumber = istanbulBlockNumber,
6873 maxCodeSize = maxCodeSize,
6974 accountStartNonce = accountStartNonce,
7075 atlantisBlockNumber = atlantisBlockNumber,
0 commit comments