mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-07-05 04:31:16 +00:00
Merge pull request #826 from gzliudan/define_cancun
params: add Cancun blocks and improve the output of chain config
This commit is contained in:
commit
ed74ab2bd9
7 changed files with 71 additions and 22 deletions
|
|
@ -48,6 +48,7 @@ var TIPXDCXCancellationFeeTestnet = big.NewInt(38383838)
|
||||||
var TIPXDCXMinerDisable = big.NewInt(80370000) // Target 2nd Oct 2024
|
var TIPXDCXMinerDisable = big.NewInt(80370000) // Target 2nd Oct 2024
|
||||||
var TIPXDCXReceiverDisable = big.NewInt(80370900) // Target 2nd Oct 2024, safer to release after disable miner
|
var TIPXDCXReceiverDisable = big.NewInt(80370900) // Target 2nd Oct 2024, safer to release after disable miner
|
||||||
var Eip1559Block = big.NewInt(9999999999)
|
var Eip1559Block = big.NewInt(9999999999)
|
||||||
|
var CancunBlock = big.NewInt(9999999999)
|
||||||
var BerlinBlock = big.NewInt(76321000) // Target 19th June 2024
|
var BerlinBlock = big.NewInt(76321000) // Target 19th June 2024
|
||||||
var LondonBlock = big.NewInt(76321000) // Target 19th June 2024
|
var LondonBlock = big.NewInt(76321000) // Target 19th June 2024
|
||||||
var MergeBlock = big.NewInt(76321000) // Target 19th June 2024
|
var MergeBlock = big.NewInt(76321000) // Target 19th June 2024
|
||||||
|
|
|
||||||
|
|
@ -52,6 +52,7 @@ var LondonBlock = big.NewInt(0)
|
||||||
var MergeBlock = big.NewInt(0)
|
var MergeBlock = big.NewInt(0)
|
||||||
var ShanghaiBlock = big.NewInt(0)
|
var ShanghaiBlock = big.NewInt(0)
|
||||||
var Eip1559Block = big.NewInt(0)
|
var Eip1559Block = big.NewInt(0)
|
||||||
|
var CancunBlock = big.NewInt(9999999999)
|
||||||
|
|
||||||
var TIPXDCXTestnet = big.NewInt(0)
|
var TIPXDCXTestnet = big.NewInt(0)
|
||||||
var IsTestnet bool = false
|
var IsTestnet bool = false
|
||||||
|
|
|
||||||
|
|
@ -52,6 +52,7 @@ var LondonBlock = big.NewInt(0)
|
||||||
var MergeBlock = big.NewInt(0)
|
var MergeBlock = big.NewInt(0)
|
||||||
var ShanghaiBlock = big.NewInt(0)
|
var ShanghaiBlock = big.NewInt(0)
|
||||||
var Eip1559Block = big.NewInt(9999999999)
|
var Eip1559Block = big.NewInt(9999999999)
|
||||||
|
var CancunBlock = big.NewInt(9999999999)
|
||||||
|
|
||||||
var TIPXDCXTestnet = big.NewInt(0)
|
var TIPXDCXTestnet = big.NewInt(0)
|
||||||
var IsTestnet bool = false
|
var IsTestnet bool = false
|
||||||
|
|
|
||||||
|
|
@ -52,6 +52,7 @@ var LondonBlock = big.NewInt(61290000)
|
||||||
var MergeBlock = big.NewInt(61290000)
|
var MergeBlock = big.NewInt(61290000)
|
||||||
var ShanghaiBlock = big.NewInt(61290000) // Target 31st March 2024
|
var ShanghaiBlock = big.NewInt(61290000) // Target 31st March 2024
|
||||||
var Eip1559Block = big.NewInt(9999999999)
|
var Eip1559Block = big.NewInt(9999999999)
|
||||||
|
var CancunBlock = big.NewInt(9999999999)
|
||||||
|
|
||||||
var TIPXDCXTestnet = big.NewInt(23779191)
|
var TIPXDCXTestnet = big.NewInt(23779191)
|
||||||
var IsTestnet bool = true
|
var IsTestnet bool = true
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"math/big"
|
"math/big"
|
||||||
"runtime"
|
"runtime"
|
||||||
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
"sync/atomic"
|
"sync/atomic"
|
||||||
|
|
||||||
|
|
@ -128,7 +129,11 @@ func New(ctx *node.ServiceContext, config *ethconfig.Config, XDCXServ *XDCx.XDCX
|
||||||
return nil, genesisErr
|
return nil, genesisErr
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Info("Initialised chain configuration", "config", chainConfig)
|
log.Info(strings.Repeat("-", 153))
|
||||||
|
for _, line := range strings.Split(chainConfig.Description(), "\n") {
|
||||||
|
log.Info(line)
|
||||||
|
}
|
||||||
|
log.Info(strings.Repeat("-", 153))
|
||||||
|
|
||||||
eth := &Ethereum{
|
eth := &Ethereum{
|
||||||
config: config,
|
config: config,
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,7 @@ package les
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
|
@ -90,7 +91,11 @@ func New(ctx *node.ServiceContext, config *ethconfig.Config) (*LightEthereum, er
|
||||||
if _, isCompat := genesisErr.(*params.ConfigCompatError); genesisErr != nil && !isCompat {
|
if _, isCompat := genesisErr.(*params.ConfigCompatError); genesisErr != nil && !isCompat {
|
||||||
return nil, genesisErr
|
return nil, genesisErr
|
||||||
}
|
}
|
||||||
log.Info("Initialised chain configuration", "config", chainConfig)
|
log.Info(strings.Repeat("-", 153))
|
||||||
|
for _, line := range strings.Split(chainConfig.Description(), "\n") {
|
||||||
|
log.Info(line)
|
||||||
|
}
|
||||||
|
log.Info(strings.Repeat("-", 153))
|
||||||
|
|
||||||
peers := newPeerSet()
|
peers := newPeerSet()
|
||||||
quitSync := make(chan struct{})
|
quitSync := make(chan struct{})
|
||||||
|
|
|
||||||
|
|
@ -402,6 +402,7 @@ type ChainConfig struct {
|
||||||
MergeBlock *big.Int `json:"mergeBlock,omitempty"`
|
MergeBlock *big.Int `json:"mergeBlock,omitempty"`
|
||||||
ShanghaiBlock *big.Int `json:"shanghaiBlock,omitempty"`
|
ShanghaiBlock *big.Int `json:"shanghaiBlock,omitempty"`
|
||||||
Eip1559Block *big.Int `json:"eip1559Block,omitempty"`
|
Eip1559Block *big.Int `json:"eip1559Block,omitempty"`
|
||||||
|
CancunBlock *big.Int `json:"cancunBlock,omitempty"`
|
||||||
|
|
||||||
// Various consensus engines
|
// Various consensus engines
|
||||||
Ethash *EthashConfig `json:"ethash,omitempty"`
|
Ethash *EthashConfig `json:"ethash,omitempty"`
|
||||||
|
|
@ -535,8 +536,8 @@ func (v *V2) ConfigIndex() []uint64 {
|
||||||
return v.configIndex
|
return v.configIndex
|
||||||
}
|
}
|
||||||
|
|
||||||
// String implements the fmt.Stringer interface.
|
// Description returns a human-readable description of ChainConfig.
|
||||||
func (c *ChainConfig) String() string {
|
func (c *ChainConfig) Description() string {
|
||||||
var engine interface{}
|
var engine interface{}
|
||||||
switch {
|
switch {
|
||||||
case c.Ethash != nil:
|
case c.Ethash != nil:
|
||||||
|
|
@ -566,24 +567,30 @@ func (c *ChainConfig) String() string {
|
||||||
if c.Eip1559Block != nil {
|
if c.Eip1559Block != nil {
|
||||||
eip1559Block = c.Eip1559Block
|
eip1559Block = c.Eip1559Block
|
||||||
}
|
}
|
||||||
return fmt.Sprintf("{ChainID: %v Homestead: %v DAO: %v DAOSupport: %v EIP150: %v EIP155: %v EIP158: %v Byzantium: %v Constantinople: %v Istanbul: %v BerlinBlock: %v LondonBlock: %v MergeBlock: %v ShanghaiBlock: %v Eip1559Block: %v Engine: %v}",
|
cancunBlock := common.CancunBlock
|
||||||
c.ChainId,
|
if c.CancunBlock != nil {
|
||||||
c.HomesteadBlock,
|
cancunBlock = c.CancunBlock
|
||||||
c.DAOForkBlock,
|
}
|
||||||
c.DAOForkSupport,
|
|
||||||
c.EIP150Block,
|
var banner = "Chain configuration:\n"
|
||||||
c.EIP155Block,
|
banner += fmt.Sprintf(" - ChainID: %-8v\n", c.ChainId)
|
||||||
c.EIP158Block,
|
banner += fmt.Sprintf(" - Homestead: %-8v\n", c.HomesteadBlock)
|
||||||
c.ByzantiumBlock,
|
banner += fmt.Sprintf(" - DAO Fork: %-8v\n", c.DAOForkBlock)
|
||||||
c.ConstantinopleBlock,
|
banner += fmt.Sprintf(" - DAO Support: %-8v\n", c.DAOForkSupport)
|
||||||
common.TIPXDCXCancellationFee,
|
banner += fmt.Sprintf(" - Tangerine Whistle (EIP 150): %-8v\n", c.EIP150Block)
|
||||||
berlinBlock,
|
banner += fmt.Sprintf(" - Spurious Dragon (EIP 155): %-8v\n", c.EIP155Block)
|
||||||
londonBlock,
|
banner += fmt.Sprintf(" - Byzantium: %-8v\n", c.ByzantiumBlock)
|
||||||
mergeBlock,
|
banner += fmt.Sprintf(" - Constantinople: %-8v\n", c.ConstantinopleBlock)
|
||||||
shanghaiBlock,
|
banner += fmt.Sprintf(" - Petersburg: %-8v\n", c.PetersburgBlock)
|
||||||
eip1559Block,
|
banner += fmt.Sprintf(" - Istanbul: %-8v\n", c.IstanbulBlock)
|
||||||
engine,
|
banner += fmt.Sprintf(" - Berlin: %-8v\n", berlinBlock)
|
||||||
)
|
banner += fmt.Sprintf(" - London: %-8v\n", londonBlock)
|
||||||
|
banner += fmt.Sprintf(" - Merge: %-8v\n", mergeBlock)
|
||||||
|
banner += fmt.Sprintf(" - Shanghai: %-8v\n", shanghaiBlock)
|
||||||
|
banner += fmt.Sprintf(" - Eip1559: %-8v\n", eip1559Block)
|
||||||
|
banner += fmt.Sprintf(" - Cancun: %-8v\n", cancunBlock)
|
||||||
|
banner += fmt.Sprintf(" - Engine: %v", engine)
|
||||||
|
return banner
|
||||||
}
|
}
|
||||||
|
|
||||||
// IsHomestead returns whether num is either equal to the homestead block or greater.
|
// IsHomestead returns whether num is either equal to the homestead block or greater.
|
||||||
|
|
@ -653,6 +660,10 @@ func (c *ChainConfig) IsEIP1559(num *big.Int) bool {
|
||||||
return isForked(common.Eip1559Block, num) || isForked(c.Eip1559Block, num)
|
return isForked(common.Eip1559Block, num) || isForked(c.Eip1559Block, num)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *ChainConfig) IsCancun(num *big.Int) bool {
|
||||||
|
return isForked(common.CancunBlock, num) || isForked(c.CancunBlock, num)
|
||||||
|
}
|
||||||
|
|
||||||
func (c *ChainConfig) IsTIP2019(num *big.Int) bool {
|
func (c *ChainConfig) IsTIP2019(num *big.Int) bool {
|
||||||
return isForked(common.TIP2019Block, num)
|
return isForked(common.TIP2019Block, num)
|
||||||
}
|
}
|
||||||
|
|
@ -761,6 +772,28 @@ func (c *ChainConfig) checkCompatible(newcfg *ChainConfig, head *big.Int) *Confi
|
||||||
if isForkIncompatible(c.ConstantinopleBlock, newcfg.ConstantinopleBlock, head) {
|
if isForkIncompatible(c.ConstantinopleBlock, newcfg.ConstantinopleBlock, head) {
|
||||||
return newCompatError("Constantinople fork block", c.ConstantinopleBlock, newcfg.ConstantinopleBlock)
|
return newCompatError("Constantinople fork block", c.ConstantinopleBlock, newcfg.ConstantinopleBlock)
|
||||||
}
|
}
|
||||||
|
if isForkIncompatible(c.PetersburgBlock, newcfg.PetersburgBlock, head) {
|
||||||
|
// the only case where we allow Petersburg to be set in the past is if it is equal to Constantinople
|
||||||
|
// mainly to satisfy fork ordering requirements which state that Petersburg fork be set if Constantinople fork is set
|
||||||
|
if isForkIncompatible(c.ConstantinopleBlock, newcfg.PetersburgBlock, head) {
|
||||||
|
return newCompatError("Petersburg fork block", c.PetersburgBlock, newcfg.PetersburgBlock)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if isForkIncompatible(c.IstanbulBlock, newcfg.IstanbulBlock, head) {
|
||||||
|
return newCompatError("Istanbul fork block", c.IstanbulBlock, newcfg.IstanbulBlock)
|
||||||
|
}
|
||||||
|
if isForkIncompatible(c.BerlinBlock, newcfg.BerlinBlock, head) {
|
||||||
|
return newCompatError("Berlin fork block", c.BerlinBlock, newcfg.BerlinBlock)
|
||||||
|
}
|
||||||
|
if isForkIncompatible(c.LondonBlock, newcfg.LondonBlock, head) {
|
||||||
|
return newCompatError("London fork block", c.LondonBlock, newcfg.LondonBlock)
|
||||||
|
}
|
||||||
|
if isForkIncompatible(c.ShanghaiBlock, newcfg.ShanghaiBlock, head) {
|
||||||
|
return newCompatError("Shanghai fork timestamp", c.ShanghaiBlock, newcfg.ShanghaiBlock)
|
||||||
|
}
|
||||||
|
if isForkIncompatible(c.CancunBlock, newcfg.CancunBlock, head) {
|
||||||
|
return newCompatError("Cancun fork block", c.CancunBlock, newcfg.CancunBlock)
|
||||||
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -832,6 +865,7 @@ type Rules struct {
|
||||||
IsMerge, IsShanghai bool
|
IsMerge, IsShanghai bool
|
||||||
IsXDCxDisable bool
|
IsXDCxDisable bool
|
||||||
IsEIP1559 bool
|
IsEIP1559 bool
|
||||||
|
IsCancun bool
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *ChainConfig) Rules(num *big.Int) Rules {
|
func (c *ChainConfig) Rules(num *big.Int) Rules {
|
||||||
|
|
@ -855,5 +889,6 @@ func (c *ChainConfig) Rules(num *big.Int) Rules {
|
||||||
IsShanghai: c.IsShanghai(num),
|
IsShanghai: c.IsShanghai(num),
|
||||||
IsXDCxDisable: c.IsXDCxDisable(num),
|
IsXDCxDisable: c.IsXDCxDisable(num),
|
||||||
IsEIP1559: c.IsEIP1559(num),
|
IsEIP1559: c.IsEIP1559(num),
|
||||||
|
IsCancun: c.IsCancun(num),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue