@ -59,8 +59,10 @@ func TestCreation(t *testing.T) {
{ 9068999 , ID { Hash : checksumToBytes ( 0x668db0af ) , Next : 9069000 } } , // Last Petersburg block
{ 9069000 , ID { Hash : checksumToBytes ( 0x879d6e30 ) , Next : 9200000 } } , // First Istanbul and first Muir Glacier block
{ 9199999 , ID { Hash : checksumToBytes ( 0x879d6e30 ) , Next : 9200000 } } , // Last Istanbul and first Muir Glacier block
{ 9200000 , ID { Hash : checksumToBytes ( 0xe029e991 ) , Next : 0 } } , // First Muir Glacier block
{ 12243999 , ID { Hash : checksumToBytes ( 0xe029e991 ) , Next : 0 } } , // Future Muir Glacier block
{ 9200000 , ID { Hash : checksumToBytes ( 0xe029e991 ) , Next : 12244000 } } , // First Muir Glacier block
{ 12243999 , ID { Hash : checksumToBytes ( 0xe029e991 ) , Next : 12244000 } } , // Last Muir Glacier block
{ 12244000 , ID { Hash : checksumToBytes ( 0x0eb440f6 ) , Next : 0 } } , // First Berlin block
{ 20000000 , ID { Hash : checksumToBytes ( 0x0eb440f6 ) , Next : 0 } } , // Future Berlin block
} ,
} ,
// Ropsten test cases
@ -80,8 +82,10 @@ func TestCreation(t *testing.T) {
{ 6485845 , ID { Hash : checksumToBytes ( 0xd6e2149b ) , Next : 6485846 } } , // Last Petersburg block
{ 6485846 , ID { Hash : checksumToBytes ( 0x4bc66396 ) , Next : 7117117 } } , // First Istanbul block
{ 7117116 , ID { Hash : checksumToBytes ( 0x4bc66396 ) , Next : 7117117 } } , // Last Istanbul block
{ 7117117 , ID { Hash : checksumToBytes ( 0x6727ef90 ) , Next : 0 } } , // First Muir Glacier block
{ 9812188 , ID { Hash : checksumToBytes ( 0x6727ef90 ) , Next : 0 } } , // Future Muir Glacier block
{ 7117117 , ID { Hash : checksumToBytes ( 0x6727ef90 ) , Next : 9812189 } } , // First Muir Glacier block
{ 9812188 , ID { Hash : checksumToBytes ( 0x6727ef90 ) , Next : 9812189 } } , // Last Muir Glacier block
{ 9812189 , ID { Hash : checksumToBytes ( 0xa157d377 ) , Next : 0 } } , // First Berlin block
{ 10000000 , ID { Hash : checksumToBytes ( 0xa157d377 ) , Next : 0 } } , // Future Berlin block
} ,
} ,
// Rinkeby test cases
@ -100,8 +104,10 @@ func TestCreation(t *testing.T) {
{ 4321233 , ID { Hash : checksumToBytes ( 0xe49cab14 ) , Next : 4321234 } } , // Last Constantinople block
{ 4321234 , ID { Hash : checksumToBytes ( 0xafec6b27 ) , Next : 5435345 } } , // First Petersburg block
{ 5435344 , ID { Hash : checksumToBytes ( 0xafec6b27 ) , Next : 5435345 } } , // Last Petersburg block
{ 5435345 , ID { Hash : checksumToBytes ( 0xcbdb8838 ) , Next : 0 } } , // First Istanbul block
{ 8290927 , ID { Hash : checksumToBytes ( 0xcbdb8838 ) , Next : 0 } } , // Future Istanbul block
{ 5435345 , ID { Hash : checksumToBytes ( 0xcbdb8838 ) , Next : 8290928 } } , // First Istanbul block
{ 8290927 , ID { Hash : checksumToBytes ( 0xcbdb8838 ) , Next : 8290928 } } , // Last Istanbul block
{ 8290928 , ID { Hash : checksumToBytes ( 0x6910c8bd ) , Next : 0 } } , // First Berlin block
{ 10000000 , ID { Hash : checksumToBytes ( 0x6910c8bd ) , Next : 0 } } , // Future Berlin block
} ,
} ,
// Goerli test cases
@ -111,8 +117,10 @@ func TestCreation(t *testing.T) {
[ ] testcase {
{ 0 , ID { Hash : checksumToBytes ( 0xa3f5ab08 ) , Next : 1561651 } } , // Unsynced, last Frontier, Homestead, Tangerine, Spurious, Byzantium, Constantinople and first Petersburg block
{ 1561650 , ID { Hash : checksumToBytes ( 0xa3f5ab08 ) , Next : 1561651 } } , // Last Petersburg block
{ 1561651 , ID { Hash : checksumToBytes ( 0xc25efa5c ) , Next : 0 } } , // First Istanbul block
{ 4460643 , ID { Hash : checksumToBytes ( 0xc25efa5c ) , Next : 0 } } , // Future Istanbul block
{ 1561651 , ID { Hash : checksumToBytes ( 0xc25efa5c ) , Next : 4460644 } } , // First Istanbul block
{ 4460643 , ID { Hash : checksumToBytes ( 0xc25efa5c ) , Next : 4460644 } } , // Last Istanbul block
{ 4460644 , ID { Hash : checksumToBytes ( 0x757a1c47 ) , Next : 0 } } , // First Berlin block
{ 5000000 , ID { Hash : checksumToBytes ( 0x757a1c47 ) , Next : 0 } } , // Future Berlin block
} ,
} ,
}
@ -185,7 +193,7 @@ func TestValidation(t *testing.T) {
// Local is mainnet Petersburg, remote is Rinkeby Petersburg.
{ 7987396 , ID { Hash : checksumToBytes ( 0xafec6b27 ) , Next : 0 } , ErrLocalIncompatibleOrStale } ,
// Local is mainnet Istanbul , far in the future. Remote announces Gopherium (non existing fork)
// Local is mainnet Berlin , far in the future. Remote announces Gopherium (non existing fork)
// at some future block 88888888, for itself, but past block for local. Local is incompatible.
//
// This case detects non-upgraded nodes with majority hash power (typical Ropsten mess).