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,

0 commit comments

Comments
 (0)