@@ -321,16 +321,16 @@ var (
321
321
//
322
322
// This configuration is intentionally not using keyed fields to force anyone
323
323
// adding flags to the config to also have to set these fields.
324
- 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 , nil , nil , new (EthashConfig ), nil , nil }
324
+ 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 , nil , nil , nil , new (EthashConfig ), nil , nil }
325
325
326
326
// AllCliqueProtocolChanges contains every protocol change (EIPs) introduced
327
327
// and accepted by the Ethereum core developers into the Clique consensus.
328
328
//
329
329
// This configuration is intentionally not using keyed fields to force anyone
330
330
// adding flags to the config to also have to set these fields.
331
- 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 , nil , nil , & CliqueConfig {Period : 0 , Epoch : 30000 }, nil }
331
+ 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 , nil , nil , nil , & CliqueConfig {Period : 0 , Epoch : 30000 }, nil }
332
332
333
- 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 , nil , nil , new (EthashConfig ), nil , nil }
333
+ 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 , nil , nil , nil , new (EthashConfig ), nil , nil }
334
334
TestRules = TestChainConfig .Rules (new (big.Int ), false )
335
335
)
336
336
@@ -414,6 +414,7 @@ type ChainConfig struct {
414
414
PangyoBlock * big.Int `json:"pangyoBlock,omitempty"` // Pangyo switch block (nil = no fork, 0 = already on pangyo)
415
415
ApplepieBlock * big.Int `json:"applepieBlock,omitempty"` // Applepie switch block (nil = no fork, 0 = already on applepie)
416
416
BriocheBlock * big.Int `json:"briocheBlock,omitempty"` // Brioche switch block (nil = no fork, 0 = already on brioche)
417
+ MontBlancBlock * big.Int `json:"montBlancBlock,omitempty"` // MontBlanc switch block (nil = no fork, 0 = already on MontBlanc)
417
418
418
419
// TerminalTotalDifficulty is the amount of total difficulty reached by
419
420
// the network that triggers the consensus upgrade.
@@ -509,7 +510,7 @@ func (c *ChainConfig) String() string {
509
510
default :
510
511
engine = "unknown"
511
512
}
512
- return fmt .Sprintf ("{ChainID: %v Homestead: %v DAO: %v DAOSupport: %v EIP150: %v EIP155: %v EIP158: %v Byzantium: %v Constantinople: %v Petersburg: %v Istanbul: %v, Muir Glacier: %v, Berlin: %v, London: %v, Arrow Glacier: %v, MergeFork: %v, PangyoFork: %v, ApplepieFork: %v, BriocheFork: %v, Terminal TD: %v, BriocheConfig: %v, Engine: %v}" ,
513
+ return fmt .Sprintf ("{ChainID: %v Homestead: %v DAO: %v DAOSupport: %v EIP150: %v EIP155: %v EIP158: %v Byzantium: %v Constantinople: %v Petersburg: %v Istanbul: %v, Muir Glacier: %v, Berlin: %v, London: %v, Arrow Glacier: %v, MergeFork: %v, PangyoFork: %v, ApplepieFork: %v, BriocheFork: %v, MontBlancFork: %v, Terminal TD: %v, BriocheConfig: %v, Engine: %v}" ,
513
514
c .ChainID ,
514
515
c .HomesteadBlock ,
515
516
c .DAOForkBlock ,
@@ -529,6 +530,7 @@ func (c *ChainConfig) String() string {
529
530
c .PangyoBlock ,
530
531
c .ApplepieBlock ,
531
532
c .BriocheBlock ,
533
+ c .MontBlancBlock ,
532
534
c .TerminalTotalDifficulty ,
533
535
c .Brioche ,
534
536
engine ,
@@ -617,6 +619,10 @@ func (c *ChainConfig) IsBrioche(num *big.Int) bool {
617
619
return isForked (c .BriocheBlock , num )
618
620
}
619
621
622
+ func (c * ChainConfig ) IsMontBlanc (num * big.Int ) bool {
623
+ return isForked (c .MontBlancBlock , num )
624
+ }
625
+
620
626
// IsTerminalPoWBlock returns whether the given block is the last block of PoW stage.
621
627
func (c * ChainConfig ) IsTerminalPoWBlock (parentTotalDiff * big.Int , totalDiff * big.Int ) bool {
622
628
if c .TerminalTotalDifficulty == nil {
@@ -675,6 +681,7 @@ func (c *ChainConfig) CheckConfigForkOrder() error {
675
681
{name : "pangyoBlock" , block : c .PangyoBlock , optional : true },
676
682
{name : "applepieBlock" , block : c .ApplepieBlock , optional : true },
677
683
{name : "briocheBlock" , block : c .BriocheBlock , optional : true },
684
+ {name : "montBlancBlock" , block : c .MontBlancBlock , optional : true },
678
685
} {
679
686
if lastFork .name != "" {
680
687
// Next one must be higher number
@@ -759,6 +766,9 @@ func (c *ChainConfig) checkCompatible(newcfg *ChainConfig, head *big.Int) *Confi
759
766
if isForkIncompatible (c .BriocheBlock , newcfg .BriocheBlock , head ) {
760
767
return newCompatError ("Brioche fork block" , c .BriocheBlock , newcfg .BriocheBlock )
761
768
}
769
+ if isForkIncompatible (c .MontBlancBlock , newcfg .MontBlancBlock , head ) {
770
+ return newCompatError ("Mont Blanc fork block" , c .MontBlancBlock , newcfg .MontBlancBlock )
771
+ }
762
772
return nil
763
773
}
764
774
@@ -828,7 +838,7 @@ type Rules struct {
828
838
IsByzantium , IsConstantinople , IsPetersburg , IsIstanbul bool
829
839
IsBerlin , IsLondon bool
830
840
IsMerge bool
831
- IsPangyo , IsApplepie , IsBrioche bool
841
+ IsPangyo , IsApplepie , IsBrioche , IsMontBlanc bool
832
842
}
833
843
834
844
// Rules ensures c's ChainID is not nil.
@@ -853,5 +863,6 @@ func (c *ChainConfig) Rules(num *big.Int, isMerge bool) Rules {
853
863
IsPangyo : c .IsPangyo (num ),
854
864
IsApplepie : c .IsApplepie (num ),
855
865
IsBrioche : c .IsBrioche (num ),
866
+ IsMontBlanc : c .IsMontBlanc (num ),
856
867
}
857
868
}
0 commit comments