Skip to content

Commit ced069a

Browse files
[ETCM-1015] Add Magneto block height to configs (#1067)
* [ETCM-1015] Add ECIP-1103 block number to configs * [ETCM-1015] Add ecip1103 to ForkBlockNumbers * [ETCM-1015] Init empty ForkBlockNumbers DRY * [ETCM-1015] Update the ForkIdSpec * [ETCM-1015] Format all * [ETCM-1015] Rename magneto fork
1 parent 1b0ac2b commit ced069a

File tree

16 files changed

+94
-138
lines changed

16 files changed

+94
-138
lines changed

src/it/scala/io/iohk/ethereum/txExecTest/ECIP1017Test.scala

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,8 @@ class ECIP1017Test extends AnyFlatSpec with Matchers {
5050
ecip1098BlockNumber = Long.MaxValue,
5151
ecip1097BlockNumber = Long.MaxValue,
5252
ecip1099BlockNumber = Long.MaxValue,
53-
ecip1049BlockNumber = None
53+
ecip1049BlockNumber = None,
54+
magnetoBlockNumber = Long.MaxValue
5455
),
5556
customGenesisFileOpt = None,
5657
customGenesisJsonOpt = None,

src/it/scala/io/iohk/ethereum/txExecTest/ForksTest.scala

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -22,28 +22,12 @@ class ForksTest extends AnyFlatSpec with Matchers {
2222

2323
trait TestSetup extends ScenarioSetup {
2424
implicit override lazy val blockchainConfig: BlockchainConfig = BlockchainConfig(
25-
forkBlockNumbers = ForkBlockNumbers(
25+
forkBlockNumbers = ForkBlockNumbers.Empty.copy(
2626
frontierBlockNumber = 0,
2727
homesteadBlockNumber = 3,
2828
eip150BlockNumber = 5,
2929
eip160BlockNumber = 7,
30-
eip155BlockNumber = 0,
31-
eip106BlockNumber = Long.MaxValue,
32-
eip161BlockNumber = Long.MaxValue,
33-
difficultyBombPauseBlockNumber = Long.MaxValue,
34-
difficultyBombContinueBlockNumber = Long.MaxValue,
35-
difficultyBombRemovalBlockNumber = Long.MaxValue,
36-
byzantiumBlockNumber = Long.MaxValue,
37-
constantinopleBlockNumber = Long.MaxValue,
38-
istanbulBlockNumber = Long.MaxValue,
39-
atlantisBlockNumber = Long.MaxValue,
40-
aghartaBlockNumber = Long.MaxValue,
41-
phoenixBlockNumber = Long.MaxValue,
42-
petersburgBlockNumber = Long.MaxValue,
43-
ecip1098BlockNumber = Long.MaxValue,
44-
ecip1097BlockNumber = Long.MaxValue,
45-
ecip1099BlockNumber = Long.MaxValue,
46-
ecip1049BlockNumber = None
30+
eip155BlockNumber = 0
4731
),
4832
chainId = 0x3d.toByte,
4933
monetaryPolicyConfig = MonetaryPolicyConfig(5000000, 0.2, 5000000000000000000L, 3000000000000000000L),

src/main/resources/conf/chains/etc-chain.conf

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,10 @@
101101
# https://ecips.ethereumclassic.org/ECIPs/ecip-1099
102102
ecip1099-block-number = "11700000"
103103

104+
# Magneto EVM and Protocol Upgrades
105+
# https://ecips.ethereumclassic.org/ECIPs/ecip-1103
106+
magneto-block-number = "13189133"
107+
104108
# ECIP-1049 soft fork block number
105109
# https://ecips.ethereumclassic.org/ECIPs/ecip-1049
106110
# https://github.com/ethereumclassic/ECIPs/issues/394

src/main/resources/conf/chains/eth-chain.conf

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,10 @@
9898
# https://ecips.ethereumclassic.org/ECIPs/ecip-1099
9999
ecip1099-block-number = "1000000000000000000"
100100

101+
# Magneto EVM and Protocol Upgrades
102+
# https://ecips.ethereumclassic.org/ECIPs/ecip-1103
103+
magneto-block-number = "1000000000000000000"
104+
101105
# DAO fork configuration (Ethereum HF/Classic split)
102106
# https://blog.ethereum.org/2016/07/20/hard-fork-completed/
103107
dao {

src/main/resources/conf/chains/mordor-chain.conf

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,10 @@
9999
# https://ecips.ethereumclassic.org/ECIPs/ecip-1099
100100
ecip1099-block-number = "2520000"
101101

102+
# Magneto EVM and Protocol Upgrades
103+
# https://ecips.ethereumclassic.org/ECIPs/ecip-1103
104+
magneto-block-number = "3985893"
105+
102106
# DAO fork configuration (Ethereum HF/Classic split)
103107
# https://blog.ethereum.org/2016/07/20/hard-fork-completed/
104108
dao = null

src/main/resources/conf/chains/ropsten-chain.conf

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,10 @@
102102
# https://ecips.ethereumclassic.org/ECIPs/ecip-1099
103103
ecip1099-block-number = "1000000000000000000"
104104

105+
# Magneto EVM and Protocol Upgrades
106+
# https://ecips.ethereumclassic.org/ECIPs/ecip-1103
107+
magneto-block-number = "1000000000000000000"
108+
105109
# DAO fork configuration (Ethereum HF/Classic split)
106110
# https://blog.ethereum.org/2016/07/20/hard-fork-completed/
107111
dao {

src/main/resources/conf/chains/test-chain.conf

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,10 @@
9999
# https://ecips.ethereumclassic.org/ECIPs/ecip-1099
100100
ecip1099-block-number = "1000000000000000000"
101101

102+
# Magneto EVM and Protocol Upgrades
103+
# https://ecips.ethereumclassic.org/ECIPs/ecip-1103
104+
magneto-block-number = "1000000000000000000"
105+
102106
# DAO fork configuration (Ethereum HF/Classic split)
103107
# https://blog.ethereum.org/2016/07/20/hard-fork-completed/
104108
dao {

src/main/resources/conf/chains/testnet-internal-nomad-chain.conf

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,10 @@
9898
# https://ecips.ethereumclassic.org/ECIPs/ecip-1099
9999
ecip1099-block-number = "1000000000000000000"
100100

101+
# Magneto EVM and Protocol Upgrades
102+
# https://ecips.ethereumclassic.org/ECIPs/ecip-1103
103+
magneto-block-number = "1000000000000000000"
104+
101105
# DAO fork configuration (Ethereum HF/Classic split)
102106
# https://blog.ethereum.org/2016/07/20/hard-fork-completed/
103107
dao = null

src/main/scala/io/iohk/ethereum/jsonrpc/TestService.scala

Lines changed: 9 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -207,35 +207,27 @@ class TestService(
207207
SetChainParamsResponse().rightNow
208208
}
209209

210-
val neverOccuringBlock: Int = Int.MaxValue
210+
val neverOccurringBlock: Int = Int.MaxValue
211+
211212
private def buildNewConfig(blockchainParams: BlockchainParams) = {
212-
val byzantiumBlockNumber: BigInt = blockchainParams.byzantiumForkBlock.getOrElse(neverOccuringBlock)
213-
val istanbulForkBlockNumber: BigInt = blockchainParams.istanbulForkBlock.getOrElse(neverOccuringBlock)
213+
val byzantiumBlockNumber: BigInt = blockchainParams.byzantiumForkBlock.getOrElse(neverOccurringBlock)
214+
val istanbulForkBlockNumber: BigInt = blockchainParams.istanbulForkBlock.getOrElse(neverOccurringBlock)
214215

215216
// For block number which are not specified by retesteth, we try to align the number to another fork
216217
node.blockchainConfig.copy(
217-
forkBlockNumbers = ForkBlockNumbers(
218-
frontierBlockNumber = 0,
219-
homesteadBlockNumber = blockchainParams.homesteadForkBlock.getOrElse(neverOccuringBlock),
220-
eip106BlockNumber = neverOccuringBlock,
221-
eip150BlockNumber = blockchainParams.EIP150ForkBlock.getOrElse(neverOccuringBlock),
218+
forkBlockNumbers = ForkBlockNumbers.Empty.copy(
219+
homesteadBlockNumber = blockchainParams.homesteadForkBlock.getOrElse(neverOccurringBlock),
220+
eip150BlockNumber = blockchainParams.EIP150ForkBlock.getOrElse(neverOccurringBlock),
222221
eip155BlockNumber = byzantiumBlockNumber,
223222
eip160BlockNumber = byzantiumBlockNumber,
224223
eip161BlockNumber = byzantiumBlockNumber,
225-
difficultyBombPauseBlockNumber = neverOccuringBlock,
226-
difficultyBombContinueBlockNumber = neverOccuringBlock,
227-
difficultyBombRemovalBlockNumber = neverOccuringBlock,
228224
byzantiumBlockNumber = byzantiumBlockNumber,
229-
ecip1049BlockNumber = None,
230-
ecip1097BlockNumber = neverOccuringBlock,
231-
ecip1098BlockNumber = neverOccuringBlock,
232-
constantinopleBlockNumber = blockchainParams.constantinopleForkBlock.getOrElse(neverOccuringBlock),
225+
constantinopleBlockNumber = blockchainParams.constantinopleForkBlock.getOrElse(neverOccurringBlock),
233226
petersburgBlockNumber = istanbulForkBlockNumber,
234227
aghartaBlockNumber = istanbulForkBlockNumber,
235228
istanbulBlockNumber = istanbulForkBlockNumber,
236229
atlantisBlockNumber = istanbulForkBlockNumber,
237-
phoenixBlockNumber = istanbulForkBlockNumber,
238-
ecip1099BlockNumber = neverOccuringBlock
230+
phoenixBlockNumber = istanbulForkBlockNumber
239231
),
240232
accountStartNonce = UInt256(blockchainParams.accountStartNonce),
241233
networkId = 1,

src/main/scala/io/iohk/ethereum/utils/BlockchainConfig.scala

Lines changed: 35 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -59,19 +59,47 @@ case class ForkBlockNumbers(
5959
ecip1098BlockNumber: BigInt,
6060
ecip1097BlockNumber: BigInt,
6161
ecip1049BlockNumber: Option[BigInt],
62-
ecip1099BlockNumber: BigInt
62+
ecip1099BlockNumber: BigInt,
63+
magnetoBlockNumber: BigInt
6364
) {
6465
def all: List[BigInt] = this.productIterator.toList.flatMap {
6566
case i: BigInt => Some(i)
6667
case i: Option[_] =>
6768
i.flatMap {
6869
case n if n.isInstanceOf[BigInt] => Some(n.asInstanceOf[BigInt])
69-
case n => None
70+
case _ => None
7071
}
71-
case default => None
72+
case _ => None
7273
}
7374
}
7475

76+
object ForkBlockNumbers {
77+
val Empty: ForkBlockNumbers = ForkBlockNumbers(
78+
frontierBlockNumber = 0,
79+
homesteadBlockNumber = Long.MaxValue,
80+
difficultyBombPauseBlockNumber = Long.MaxValue,
81+
difficultyBombContinueBlockNumber = Long.MaxValue,
82+
difficultyBombRemovalBlockNumber = Long.MaxValue,
83+
eip106BlockNumber = Long.MaxValue,
84+
eip150BlockNumber = Long.MaxValue,
85+
eip160BlockNumber = Long.MaxValue,
86+
eip155BlockNumber = Long.MaxValue,
87+
eip161BlockNumber = Long.MaxValue,
88+
byzantiumBlockNumber = Long.MaxValue,
89+
constantinopleBlockNumber = Long.MaxValue,
90+
istanbulBlockNumber = Long.MaxValue,
91+
atlantisBlockNumber = Long.MaxValue,
92+
aghartaBlockNumber = Long.MaxValue,
93+
phoenixBlockNumber = Long.MaxValue,
94+
petersburgBlockNumber = Long.MaxValue,
95+
ecip1098BlockNumber = Long.MaxValue,
96+
ecip1097BlockNumber = Long.MaxValue,
97+
ecip1099BlockNumber = Long.MaxValue,
98+
ecip1049BlockNumber = None,
99+
magnetoBlockNumber = Long.MaxValue
100+
)
101+
}
102+
75103
object BlockchainConfig {
76104

77105
// scalastyle:off method.length
@@ -139,6 +167,8 @@ object BlockchainConfig {
139167
val allowedMinersPublicKeys = readPubKeySet(blockchainConfig, "allowed-miners")
140168

141169
val ecip1099BlockNumber: BigInt = BigInt(blockchainConfig.getString("ecip1099-block-number"))
170+
val magnetoBlockNumber: BigInt = BigInt(blockchainConfig.getString("magneto-block-number"))
171+
142172
val capabilities: List[Capability] =
143173
blockchainConfig.getStringList("capabilities").asScala.toList.map(Capability.parseUnsafe)
144174

@@ -165,7 +195,8 @@ object BlockchainConfig {
165195
ecip1098BlockNumber = ecip1098BlockNumber,
166196
ecip1097BlockNumber = ecip1097BlockNumber,
167197
ecip1049BlockNumber = ecip1049BlockNumber,
168-
ecip1099BlockNumber = ecip1099BlockNumber
198+
ecip1099BlockNumber = ecip1099BlockNumber,
199+
magnetoBlockNumber = magnetoBlockNumber
169200
),
170201
treasuryAddress = treasuryAddress,
171202
maxCodeSize = maxCodeSize,

src/test/scala/io/iohk/ethereum/consensus/blocks/BlockGeneratorSpec.scala

Lines changed: 6 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -224,28 +224,12 @@ class BlockGeneratorSpec extends AnyFlatSpec with Matchers with ScalaCheckProper
224224
gasTieBreaker = false,
225225
ethCompatibleStorage = true,
226226
treasuryAddress = Address(0),
227-
forkBlockNumbers = ForkBlockNumbers(
227+
forkBlockNumbers = ForkBlockNumbers.Empty.copy(
228228
frontierBlockNumber = 0,
229229
homesteadBlockNumber = 1150000,
230230
difficultyBombPauseBlockNumber = 3000000,
231231
difficultyBombContinueBlockNumber = 5000000,
232-
difficultyBombRemovalBlockNumber = 5900000,
233-
eip155BlockNumber = Long.MaxValue,
234-
eip106BlockNumber = Long.MaxValue,
235-
byzantiumBlockNumber = Long.MaxValue,
236-
constantinopleBlockNumber = Long.MaxValue,
237-
istanbulBlockNumber = Long.MaxValue,
238-
eip160BlockNumber = Long.MaxValue,
239-
eip150BlockNumber = Long.MaxValue,
240-
eip161BlockNumber = Long.MaxValue,
241-
atlantisBlockNumber = Long.MaxValue,
242-
aghartaBlockNumber = Long.MaxValue,
243-
phoenixBlockNumber = Long.MaxValue,
244-
petersburgBlockNumber = Long.MaxValue,
245-
ecip1098BlockNumber = Long.MaxValue,
246-
ecip1097BlockNumber = Long.MaxValue,
247-
ecip1099BlockNumber = Long.MaxValue,
248-
ecip1049BlockNumber = None
232+
difficultyBombRemovalBlockNumber = 5900000
249233
)
250234
)
251235

@@ -292,28 +276,13 @@ class BlockGeneratorSpec extends AnyFlatSpec with Matchers with ScalaCheckProper
292276

293277
it should "generate correct block with (without empty accounts) after EIP-161" in new TestSetup {
294278
implicit override lazy val blockchainConfig = BlockchainConfig(
295-
forkBlockNumbers = ForkBlockNumbers(
279+
forkBlockNumbers = ForkBlockNumbers.Empty.copy(
296280
frontierBlockNumber = 0,
297281
homesteadBlockNumber = 1150000,
298-
eip155BlockNumber = Long.MaxValue,
299-
eip106BlockNumber = Long.MaxValue,
300282
difficultyBombPauseBlockNumber = 3000000,
301283
difficultyBombContinueBlockNumber = 5000000,
302284
difficultyBombRemovalBlockNumber = 5900000,
303-
byzantiumBlockNumber = Long.MaxValue,
304-
constantinopleBlockNumber = Long.MaxValue,
305-
istanbulBlockNumber = Long.MaxValue,
306-
eip160BlockNumber = Long.MaxValue,
307-
eip150BlockNumber = Long.MaxValue,
308-
eip161BlockNumber = 0,
309-
atlantisBlockNumber = Long.MaxValue,
310-
aghartaBlockNumber = Long.MaxValue,
311-
phoenixBlockNumber = Long.MaxValue,
312-
petersburgBlockNumber = Long.MaxValue,
313-
ecip1098BlockNumber = Long.MaxValue,
314-
ecip1097BlockNumber = Long.MaxValue,
315-
ecip1099BlockNumber = Long.MaxValue,
316-
ecip1049BlockNumber = None
285+
eip161BlockNumber = 0
317286
),
318287
chainId = 0x3d.toByte,
319288
networkId = 1,
@@ -674,28 +643,12 @@ class BlockGeneratorSpec extends AnyFlatSpec with Matchers with ScalaCheckProper
674643
SignedTransactionWithSender(signedTransaction, Address(keyPair))
675644

676645
val baseBlockchainConfig: BlockchainConfig = BlockchainConfig(
677-
forkBlockNumbers = ForkBlockNumbers(
678-
frontierBlockNumber = 0,
646+
forkBlockNumbers = ForkBlockNumbers.Empty.copy(
679647
homesteadBlockNumber = 1150000,
680648
eip155BlockNumber = 0,
681-
eip106BlockNumber = Long.MaxValue,
682-
byzantiumBlockNumber = Long.MaxValue,
683649
difficultyBombPauseBlockNumber = 3000000,
684650
difficultyBombContinueBlockNumber = 5000000,
685-
difficultyBombRemovalBlockNumber = 5900000,
686-
constantinopleBlockNumber = Long.MaxValue,
687-
istanbulBlockNumber = Long.MaxValue,
688-
eip160BlockNumber = Long.MaxValue,
689-
eip150BlockNumber = Long.MaxValue,
690-
eip161BlockNumber = Long.MaxValue,
691-
atlantisBlockNumber = Long.MaxValue,
692-
aghartaBlockNumber = Long.MaxValue,
693-
phoenixBlockNumber = Long.MaxValue,
694-
petersburgBlockNumber = Long.MaxValue,
695-
ecip1098BlockNumber = Long.MaxValue,
696-
ecip1097BlockNumber = Long.MaxValue,
697-
ecip1099BlockNumber = Long.MaxValue,
698-
ecip1049BlockNumber = None
651+
difficultyBombRemovalBlockNumber = 5900000
699652
),
700653
chainId = 0x3d.toByte,
701654
networkId = 1,

src/test/scala/io/iohk/ethereum/consensus/pow/validators/EthashBlockHeaderValidatorSpec.scala

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -379,7 +379,7 @@ class EthashBlockHeaderValidatorSpec
379379
def createBlockchainConfig(supportsDaoFork: Boolean = false): BlockchainConfig = {
380380
import Fixtures.Blocks._
381381
BlockchainConfig(
382-
forkBlockNumbers = ForkBlockNumbers(
382+
forkBlockNumbers = ForkBlockNumbers.Empty.copy(
383383
frontierBlockNumber = 0,
384384
homesteadBlockNumber = 1150000,
385385
difficultyBombPauseBlockNumber = 3000000,
@@ -388,19 +388,7 @@ class EthashBlockHeaderValidatorSpec
388388
byzantiumBlockNumber = 4370000,
389389
constantinopleBlockNumber = 7280000,
390390
istanbulBlockNumber = 9069000,
391-
eip155BlockNumber = Long.MaxValue,
392-
eip160BlockNumber = Long.MaxValue,
393-
eip161BlockNumber = Long.MaxValue,
394-
eip150BlockNumber = Long.MaxValue,
395-
eip106BlockNumber = 0,
396-
atlantisBlockNumber = Long.MaxValue,
397-
aghartaBlockNumber = Long.MaxValue,
398-
phoenixBlockNumber = Long.MaxValue,
399-
petersburgBlockNumber = Long.MaxValue,
400-
ecip1098BlockNumber = Long.MaxValue,
401-
ecip1097BlockNumber = Long.MaxValue,
402-
ecip1099BlockNumber = Long.MaxValue,
403-
ecip1049BlockNumber = None
391+
eip106BlockNumber = 0
404392
),
405393
daoForkConfig = Some(new DaoForkConfig {
406394
override val blockExtraData: Option[ByteString] =

src/test/scala/io/iohk/ethereum/consensus/pow/validators/RestrictedEthashBlockHeaderValidatorSpec.scala

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ class RestrictedEthashBlockHeaderValidatorSpec
7777
)
7878
def createBlockchainConfig(allowedMiners: Set[ByteString]): BlockchainConfig =
7979
BlockchainConfig(
80-
forkBlockNumbers = ForkBlockNumbers(
80+
forkBlockNumbers = ForkBlockNumbers.Empty.copy(
8181
frontierBlockNumber = 0,
8282
homesteadBlockNumber = 1150000,
8383
difficultyBombPauseBlockNumber = 3000000,
@@ -86,19 +86,7 @@ class RestrictedEthashBlockHeaderValidatorSpec
8686
byzantiumBlockNumber = 4370000,
8787
constantinopleBlockNumber = 7280000,
8888
istanbulBlockNumber = 9069000,
89-
eip155BlockNumber = Long.MaxValue,
90-
eip160BlockNumber = Long.MaxValue,
91-
eip161BlockNumber = Long.MaxValue,
92-
eip150BlockNumber = Long.MaxValue,
93-
eip106BlockNumber = 0,
94-
atlantisBlockNumber = Long.MaxValue,
95-
aghartaBlockNumber = Long.MaxValue,
96-
phoenixBlockNumber = Long.MaxValue,
97-
petersburgBlockNumber = Long.MaxValue,
98-
ecip1098BlockNumber = Long.MaxValue,
99-
ecip1097BlockNumber = Long.MaxValue,
100-
ecip1099BlockNumber = Long.MaxValue,
101-
ecip1049BlockNumber = None
89+
eip106BlockNumber = 0
10290
),
10391
daoForkConfig = None,
10492
// unused

0 commit comments

Comments
 (0)