Skip to content

Commit 1d62e13

Browse files
[ETCM-912] Add Magneto fee schedule
1 parent c26b027 commit 1d62e13

File tree

1 file changed

+19
-1
lines changed

1 file changed

+19
-1
lines changed

src/main/scala/io/iohk/ethereum/vm/EvmConfig.scala

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,8 @@ object EvmConfig {
4242
(blockchainConfig.aghartaBlockNumber, 7, AghartaConfigBuilder),
4343
(blockchainConfig.petersburgBlockNumber, 8, PetersburgConfigBuilder),
4444
(blockchainConfig.istanbulBlockNumber, 9, IstanbulConfigBuilder),
45-
(blockchainConfig.phoenixBlockNumber, 9, PhoenixConfigBuilder)
45+
(blockchainConfig.phoenixBlockNumber, 9, PhoenixConfigBuilder),
46+
(blockchainConfig.magnetoBlockNumber, 10, MagnetoConfigBuilder)
4647
)
4748

4849
// highest transition block that is less/equal to `blockNumber`
@@ -61,6 +62,7 @@ object EvmConfig {
6162
val ConstantinopleOpCodes: OpCodeList = OpCodeList(OpCodes.ConstantinopleOpCodes)
6263
val AghartaOpCodes = ConstantinopleOpCodes
6364
val PhoenixOpCodes: OpCodeList = OpCodeList(OpCodes.PhoenixOpCodes)
65+
val MagnetoOpCodes: OpCodeList = PhoenixOpCodes
6466

6567
val FrontierConfigBuilder: EvmConfigBuilder = config =>
6668
EvmConfig(
@@ -132,6 +134,12 @@ object EvmConfig {
132134
opCodeList = PhoenixOpCodes
133135
)
134136

137+
val MagnetoConfigBuilder: EvmConfigBuilder = config =>
138+
PhoenixConfigBuilder(config).copy(
139+
feeSchedule = new ethereum.vm.FeeSchedule.MagnetoFeeSchedule,
140+
opCodeList = MagnetoOpCodes
141+
)
142+
135143
case class OpCodeList(opCodes: List[OpCode]) {
136144
val byteToOpCode: Map[Byte, OpCode] =
137145
opCodes.map(op => op.code -> op).toMap
@@ -251,6 +259,9 @@ object FeeSchedule {
251259
override val G_copy = 3
252260
override val G_blockhash = 20
253261
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
254265
}
255266

256267
class HomesteadFeeSchedule extends FrontierFeeSchedule {
@@ -283,6 +294,10 @@ object FeeSchedule {
283294
override val G_txdatanonzero = 16
284295
}
285296

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+
}
286301
}
287302

288303
trait FeeSchedule {
@@ -321,4 +336,7 @@ trait FeeSchedule {
321336
val G_copy: BigInt
322337
val G_blockhash: BigInt
323338
val G_extcode: BigInt
339+
val G_cold_sload: BigInt
340+
val G_cold_account_access: BigInt
341+
val G_warm_storage_read: BigInt
324342
}

0 commit comments

Comments
 (0)