@@ -3,23 +3,27 @@ package io.iohk.ethereum.vm
3
3
import io .iohk .ethereum .domain .UInt256
4
4
import io .iohk .ethereum .utils .BlockchainConfig
5
5
import 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 }
7
7
8
8
/**
9
9
* A subset of [[io.iohk.ethereum.utils.BlockchainConfig ]] that is required for instantiating an [[EvmConfig ]]
10
10
* Note that `accountStartNonce` is required for a [[WorldStateProxy ]] implementation that is used
11
11
* by a given VM
12
12
*/
13
+ // FIXME manage etc/eth forks in a more sophisticated way
13
14
case class BlockchainConfigForEvm (
15
+ // ETH forks
14
16
frontierBlockNumber : BigInt ,
15
17
homesteadBlockNumber : BigInt ,
16
18
eip150BlockNumber : BigInt ,
17
19
eip160BlockNumber : BigInt ,
18
20
eip161BlockNumber : BigInt ,
19
21
byzantiumBlockNumber : BigInt ,
20
22
constantinopleBlockNumber : BigInt ,
23
+ istanbulBlockNumber : BigInt ,
21
24
maxCodeSize : Option [BigInt ],
22
25
accountStartNonce : UInt256 ,
26
+ // ETC forks
23
27
atlantisBlockNumber : BigInt ,
24
28
aghartaBlockNumber : BigInt ,
25
29
petersburgBlockNumber : BigInt ,
@@ -37,8 +41,8 @@ case class BlockchainConfigForEvm(
37
41
case _ if blockNumber < byzantiumBlockNumber => BeforeByzantium
38
42
case _ if blockNumber < constantinopleBlockNumber => Byzantium
39
43
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
42
46
}
43
47
}
44
48
@@ -65,6 +69,7 @@ object BlockchainConfigForEvm {
65
69
eip161BlockNumber = eip161BlockNumber,
66
70
byzantiumBlockNumber = byzantiumBlockNumber,
67
71
constantinopleBlockNumber = constantinopleBlockNumber,
72
+ istanbulBlockNumber = istanbulBlockNumber,
68
73
maxCodeSize = maxCodeSize,
69
74
accountStartNonce = accountStartNonce,
70
75
atlantisBlockNumber = atlantisBlockNumber,
0 commit comments