74
74
BerlinBlock : big .NewInt (12_244_000 ),
75
75
LondonBlock : big .NewInt (12_965_000 ),
76
76
ArrowGlacierBlock : big .NewInt (13_773_000 ),
77
+ AvocadoBlock : big .NewInt (1_000_000_000_000 ),
77
78
Ethash : new (EthashConfig ),
78
79
}
79
80
@@ -155,6 +156,7 @@ var (
155
156
MuirGlacierBlock : big .NewInt (11441000 ),
156
157
BerlinBlock : big .NewInt (51960000 ),
157
158
LondonBlock : big .NewInt (51960000 ),
159
+ AvocadoBlock : big .NewInt (1_000_000_000_000 ),
158
160
Ethash : new (EthashConfig ),
159
161
}
160
162
@@ -174,6 +176,7 @@ var (
174
176
MuirGlacierBlock : big .NewInt (5623000 ),
175
177
BerlinBlock : big .NewInt (38067000 ),
176
178
LondonBlock : big .NewInt (38067000 ),
179
+ AvocadoBlock : big .NewInt (40_759_810 ),
177
180
Ethash : new (EthashConfig ),
178
181
}
179
182
@@ -297,16 +300,16 @@ var (
297
300
//
298
301
// This configuration is intentionally not using keyed fields to force anyone
299
302
// adding flags to the config to also have to set these fields.
300
- 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 ), big .NewInt (0 ), big .NewInt (0 ), nil , nil , new (EthashConfig ), nil }
303
+ 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 ), big .NewInt (0 ), big .NewInt (0 ), nil , nil , nil , new (EthashConfig ), nil }
301
304
302
305
// AllCliqueProtocolChanges contains every protocol change (EIPs) introduced
303
306
// and accepted by the Ethereum core developers into the Clique consensus.
304
307
//
305
308
// This configuration is intentionally not using keyed fields to force anyone
306
309
// adding flags to the config to also have to set these fields.
307
- 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 ), big .NewInt (0 ), big .NewInt (0 ), big .NewInt (0 ), nil , nil , nil , nil , & CliqueConfig {Period : 0 , Epoch : 30000 }}
310
+ 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 ), big .NewInt (0 ), big .NewInt (0 ), big .NewInt (0 ), nil , nil , nil , nil , nil , & CliqueConfig {Period : 0 , Epoch : 30000 }}
308
311
309
- 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 ), big .NewInt (0 ), big .NewInt (0 ), big .NewInt (0 ), big .NewInt (0 ), nil , nil , new (EthashConfig ), nil }
312
+ 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 ), big .NewInt (0 ), big .NewInt (0 ), big .NewInt (0 ), big .NewInt (0 ), nil , nil , nil , new (EthashConfig ), nil }
310
313
TestRules = TestChainConfig .Rules (new (big.Int ), false )
311
314
)
312
315
@@ -387,6 +390,7 @@ type ChainConfig struct {
387
390
LondonBlock * big.Int `json:"londonBlock,omitempty"` // London switch block (nil = no fork, 0 = already on london)
388
391
ArrowGlacierBlock * big.Int `json:"arrowGlacierBlock,omitempty"` // Eip-4345 (bomb delay) switch block (nil = no fork, 0 = already activated)
389
392
MergeForkBlock * big.Int `json:"mergeForkBlock,omitempty"` // EIP-3675 (TheMerge) switch block (nil = no fork, 0 = already in merge proceedings)
393
+ AvocadoBlock * big.Int `json:"avocadoBlock,omitempty"` // Avocado switch block (nil = no fork, 0 = already on avocado)
390
394
391
395
// TerminalTotalDifficulty is the amount of total difficulty reached by
392
396
// the network that triggers the consensus upgrade.
@@ -515,6 +519,11 @@ func (c *ChainConfig) IsArrowGlacier(num *big.Int) bool {
515
519
return isForked (c .ArrowGlacierBlock , num )
516
520
}
517
521
522
+ // IsAvocado returns whether num is either equal to the Avocado fork block or greater.
523
+ func (c * ChainConfig ) IsAvocado (num * big.Int ) bool {
524
+ return isForked (c .AvocadoBlock , num )
525
+ }
526
+
518
527
// IsTerminalPoWBlock returns whether the given block is the last block of PoW stage.
519
528
func (c * ChainConfig ) IsTerminalPoWBlock (parentTotalDiff * big.Int , totalDiff * big.Int ) bool {
520
529
if c .TerminalTotalDifficulty == nil {
@@ -714,6 +723,7 @@ type Rules struct {
714
723
IsByzantium , IsConstantinople , IsPetersburg , IsIstanbul bool
715
724
IsBerlin , IsLondon bool
716
725
IsMerge bool
726
+ IsAvocado bool
717
727
}
718
728
719
729
// Rules ensures c's ChainID is not nil.
@@ -735,5 +745,6 @@ func (c *ChainConfig) Rules(num *big.Int, isMerge bool) Rules {
735
745
IsBerlin : c .IsBerlin (num ),
736
746
IsLondon : c .IsLondon (num ),
737
747
IsMerge : isMerge ,
748
+ IsAvocado : c .IsAvocado (num ),
738
749
}
739
750
}
0 commit comments