@@ -42,7 +42,8 @@ object EvmConfig {
42
42
(blockchainConfig.aghartaBlockNumber, 7 , AghartaConfigBuilder ),
43
43
(blockchainConfig.petersburgBlockNumber, 8 , PetersburgConfigBuilder ),
44
44
(blockchainConfig.istanbulBlockNumber, 9 , IstanbulConfigBuilder ),
45
- (blockchainConfig.phoenixBlockNumber, 9 , PhoenixConfigBuilder )
45
+ (blockchainConfig.phoenixBlockNumber, 9 , PhoenixConfigBuilder ),
46
+ (blockchainConfig.magnetoBlockNumber, 10 , MagnetoConfigBuilder )
46
47
)
47
48
48
49
// highest transition block that is less/equal to `blockNumber`
@@ -61,6 +62,7 @@ object EvmConfig {
61
62
val ConstantinopleOpCodes : OpCodeList = OpCodeList (OpCodes .ConstantinopleOpCodes )
62
63
val AghartaOpCodes = ConstantinopleOpCodes
63
64
val PhoenixOpCodes : OpCodeList = OpCodeList (OpCodes .PhoenixOpCodes )
65
+ val MagnetoOpCodes : OpCodeList = PhoenixOpCodes
64
66
65
67
val FrontierConfigBuilder : EvmConfigBuilder = config =>
66
68
EvmConfig (
@@ -132,6 +134,12 @@ object EvmConfig {
132
134
opCodeList = PhoenixOpCodes
133
135
)
134
136
137
+ val MagnetoConfigBuilder : EvmConfigBuilder = config =>
138
+ PhoenixConfigBuilder (config).copy(
139
+ feeSchedule = new ethereum.vm.FeeSchedule .MagnetoFeeSchedule ,
140
+ opCodeList = MagnetoOpCodes
141
+ )
142
+
135
143
case class OpCodeList (opCodes : List [OpCode ]) {
136
144
val byteToOpCode : Map [Byte , OpCode ] =
137
145
opCodes.map(op => op.code -> op).toMap
@@ -251,6 +259,9 @@ object FeeSchedule {
251
259
override val G_copy = 3
252
260
override val G_blockhash = 20
253
261
override val G_extcode = 20
262
+ override val G_cold_sload = 2100
263
+ override val G_cold_account_access = 2600
264
+ override val G_warm_storage_read = 100
254
265
}
255
266
256
267
class HomesteadFeeSchedule extends FrontierFeeSchedule {
@@ -283,6 +294,10 @@ object FeeSchedule {
283
294
override val G_txdatanonzero = 16
284
295
}
285
296
297
+ class MagnetoFeeSchedule extends PhoenixFeeSchedule {
298
+ override val G_sload : BigInt = G_warm_storage_read
299
+ override val G_sreset : BigInt = 5000 - G_cold_sload
300
+ }
286
301
}
287
302
288
303
trait FeeSchedule {
@@ -321,4 +336,7 @@ trait FeeSchedule {
321
336
val G_copy : BigInt
322
337
val G_blockhash : BigInt
323
338
val G_extcode : BigInt
339
+ val G_cold_sload : BigInt
340
+ val G_cold_account_access : BigInt
341
+ val G_warm_storage_read : BigInt
324
342
}
0 commit comments