75
75
PetersburgBlock : big .NewInt (8_000_000 ),
76
76
IstanbulBlock : big .NewInt (8_000_000 ),
77
77
MuirGlacierBlock : big .NewInt (8_000_000 ),
78
+ NewHorizonBlock : big .NewInt (8_300_000 ),
78
79
BerlinBlock : nil ,
79
80
LondonBlock : nil ,
80
81
Ethash : new (EthashConfig ),
@@ -148,6 +149,7 @@ var (
148
149
PetersburgBlock : big .NewInt (4_939_394 ),
149
150
IstanbulBlock : big .NewInt (6_485_846 ),
150
151
MuirGlacierBlock : big .NewInt (7_117_117 ),
152
+ NewHorizonBlock : big .NewInt (8_250_000 ),
151
153
BerlinBlock : big .NewInt (9_812_189 ),
152
154
LondonBlock : big .NewInt (10_499_401 ),
153
155
Ethash : new (EthashConfig ),
@@ -190,6 +192,7 @@ var (
190
192
PetersburgBlock : nil ,
191
193
IstanbulBlock : nil ,
192
194
MuirGlacierBlock : nil ,
195
+ NewHorizonBlock : nil ,
193
196
BerlinBlock : big .NewInt (8_290_928 ),
194
197
LondonBlock : big .NewInt (8_897_988 ),
195
198
Clique : & CliqueConfig {
@@ -232,6 +235,7 @@ var (
232
235
PetersburgBlock : big .NewInt (0 ),
233
236
IstanbulBlock : big .NewInt (1_561_651 ),
234
237
MuirGlacierBlock : nil ,
238
+ NewHorizonBlock : nil ,
235
239
BerlinBlock : big .NewInt (4_460_644 ),
236
240
LondonBlock : big .NewInt (5_062_605 ),
237
241
Clique : & CliqueConfig {
@@ -266,16 +270,16 @@ var (
266
270
//
267
271
// This configuration is intentionally not using keyed fields to force anyone
268
272
// adding flags to the config to also have to set these fields.
269
- AllEthashProtocolChanges = & ChainConfig {big .NewInt (1337 ), big .NewInt (0 ), nil , false , big .NewInt (0 ), common.Hash {}, big .NewInt (0 ), big .NewInt (0 ), big .NewInt (0 ), big .NewInt (0 ), big .NewInt (0 ), big .NewInt (0 ), big .NewInt (0 ), big .NewInt (0 ), nil , nil , nil , new (EthashConfig ), nil }
273
+ AllEthashProtocolChanges = & ChainConfig {big .NewInt (1337 ), big .NewInt (0 ), nil , false , big .NewInt (0 ), common.Hash {}, big .NewInt (0 ), big .NewInt (0 ), big .NewInt (0 ), big .NewInt (0 ), big .NewInt (0 ), big .NewInt (0 ), big .NewInt (0 ), big .NewInt (0 ), nil , nil , nil , nil , new (EthashConfig ), nil }
270
274
271
275
// AllCliqueProtocolChanges contains every protocol change (EIPs) introduced
272
276
// and accepted by the Ethereum core developers into the Clique consensus.
273
277
//
274
278
// This configuration is intentionally not using keyed fields to force anyone
275
279
// adding flags to the config to also have to set these fields.
276
- AllCliqueProtocolChanges = & ChainConfig {big .NewInt (1337 ), big .NewInt (0 ), nil , false , big .NewInt (0 ), common.Hash {}, big .NewInt (0 ), big .NewInt (0 ), big .NewInt (0 ), big .NewInt (0 ), big .NewInt (0 ), big .NewInt (0 ), nil , nil , nil , nil , nil , nil , & CliqueConfig {Period : 0 , Epoch : 30000 }}
280
+ AllCliqueProtocolChanges = & ChainConfig {big .NewInt (1337 ), big .NewInt (0 ), nil , false , big .NewInt (0 ), common.Hash {}, big .NewInt (0 ), big .NewInt (0 ), big .NewInt (0 ), big .NewInt (0 ), big .NewInt (0 ), big .NewInt (0 ), nil , nil , nil , nil , nil , nil , nil , & CliqueConfig {Period : 0 , Epoch : 30000 }}
277
281
278
- TestChainConfig = & ChainConfig {big .NewInt (1 ), big .NewInt (0 ), nil , false , big .NewInt (0 ), common.Hash {}, big .NewInt (0 ), big .NewInt (0 ), big .NewInt (0 ), big .NewInt (0 ), big .NewInt (0 ), big .NewInt (0 ), nil , nil , nil , nil , nil , new (EthashConfig ), nil }
282
+ TestChainConfig = & ChainConfig {big .NewInt (1 ), big .NewInt (0 ), nil , false , big .NewInt (0 ), common.Hash {}, big .NewInt (0 ), big .NewInt (0 ), big .NewInt (0 ), big .NewInt (0 ), big .NewInt (0 ), big .NewInt (0 ), nil , nil , nil , nil , nil , nil , new (EthashConfig ), nil }
279
283
TestRules = TestChainConfig .Rules (new (big.Int ))
280
284
)
281
285
@@ -353,6 +357,7 @@ type ChainConfig struct {
353
357
PetersburgBlock * big.Int `json:"petersburgBlock,omitempty"` // Petersburg switch block (nil = same as Constantinople)
354
358
IstanbulBlock * big.Int `json:"istanbulBlock,omitempty"` // Istanbul switch block (nil = no fork, 0 = already on istanbul)
355
359
MuirGlacierBlock * big.Int `json:"muirGlacierBlock,omitempty"` // Eip-2384 (bomb delay) switch block (nil = no fork, 0 = already activated)
360
+ NewHorizonBlock * big.Int `json:"newHorizonBlock,omitempty"` // NewHorizon switch block (nil = no fork, 0 = already activated)
356
361
BerlinBlock * big.Int `json:"berlinBlock,omitempty"` // Berlin switch block (nil = no fork, 0 = already on berlin)
357
362
LondonBlock * big.Int `json:"londonBlock,omitempty"` // London switch block (nil = no fork, 0 = already on london)
358
363
@@ -407,6 +412,7 @@ func (c *ChainConfig) String() string {
407
412
c .PetersburgBlock ,
408
413
c .IstanbulBlock ,
409
414
c .MuirGlacierBlock ,
415
+ c .NewHorizonBlock ,
410
416
c .BerlinBlock ,
411
417
c .LondonBlock ,
412
418
engine ,
@@ -458,6 +464,11 @@ func (c *ChainConfig) IsMuirGlacier(num *big.Int) bool {
458
464
return isForked (c .MuirGlacierBlock , num )
459
465
}
460
466
467
+ // IsNewHorizon returns whether num is either equal to the NewHorizon fork block or greater.
468
+ func (c * ChainConfig ) IsNewHorizon (num * big.Int ) bool {
469
+ return isForked (c .NewHorizonBlock , num )
470
+ }
471
+
461
472
// IsPetersburg returns whether num is either
462
473
// - equal to or greater than the PetersburgBlock fork block,
463
474
// - OR is nil, and Constantinople is active
@@ -524,6 +535,7 @@ func (c *ChainConfig) CheckConfigForkOrder() error {
524
535
{name : "petersburgBlock" , block : c .PetersburgBlock },
525
536
{name : "istanbulBlock" , block : c .IstanbulBlock },
526
537
{name : "muirGlacierBlock" , block : c .MuirGlacierBlock , optional : true },
538
+ {name : "newHorizonBlock" , block : c .NewHorizonBlock },
527
539
{name : "berlinBlock" , block : c .BerlinBlock },
528
540
{name : "londonBlock" , block : c .LondonBlock },
529
541
} {
@@ -576,6 +588,9 @@ func (c *ChainConfig) checkCompatible(newcfg *ChainConfig, head *big.Int) *Confi
576
588
if isForkIncompatible (c .RobinHoodBlock , newcfg .RobinHoodBlock , head ) {
577
589
return newCompatError ("RobinHood fork block" , c .RobinHoodBlock , newcfg .RobinHoodBlock )
578
590
}
591
+ if isForkIncompatible (c .NewHorizonBlock , newcfg .NewHorizonBlock , head ) {
592
+ return newCompatError ("NewHorizon fork block" , c .NewHorizonBlock , newcfg .NewHorizonBlock )
593
+ }
579
594
if isForkIncompatible (c .ConstantinopleBlock , newcfg .ConstantinopleBlock , head ) {
580
595
return newCompatError ("Constantinople fork block" , c .ConstantinopleBlock , newcfg .ConstantinopleBlock )
581
596
}
@@ -665,7 +680,7 @@ type Rules struct {
665
680
ChainID * big.Int
666
681
IsHomestead , IsEIP150 , IsEIP155 , IsEIP158 bool
667
682
IsByzantium , IsConstantinople , IsPetersburg , IsRobinHood , IsIstanbul , IsMuirGlacier bool
668
- IsBerlin , IsLondon , IsCatalyst bool
683
+ IsBerlin , IsLondon , IsCatalyst , IsNewHorizon bool
669
684
}
670
685
671
686
// Rules ensures c's ChainID is not nil.
@@ -685,6 +700,7 @@ func (c *ChainConfig) Rules(num *big.Int) Rules {
685
700
IsConstantinople : c .IsConstantinople (num ),
686
701
IsPetersburg : c .IsPetersburg (num ),
687
702
IsIstanbul : c .IsIstanbul (num ),
703
+ IsNewHorizon : c .IsNewHorizon (num ),
688
704
IsBerlin : c .IsBerlin (num ),
689
705
IsLondon : c .IsLondon (num ),
690
706
IsCatalyst : c .IsCatalyst (num ),
0 commit comments