Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
G
Geth-Modification
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
张蕾
Geth-Modification
Commits
b56c7962
Unverified
Commit
b56c7962
authored
Jan 06, 2023
by
Péter Szilágyi
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
cmd, core, eth, els, params: disallow setheads below genesis, tweaks
parent
fcf3d004
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
147 additions
and
157 deletions
+147
-157
config.go
cmd/geth/config.go
+2
-7
main.go
cmd/geth/main.go
+1
-2
flags.go
cmd/utils/flags.go
+3
-8
genesis.go
core/genesis.go
+3
-8
headerchain.go
core/headerchain.go
+13
-0
backend.go
eth/backend.go
+2
-5
config.go
eth/ethconfig/config.go
+2
-5
gen_config.go
eth/ethconfig/gen_config.go
+89
-95
client.go
les/client.go
+2
-5
config.go
params/config.go
+30
-22
No files found.
cmd/geth/config.go
View file @
b56c7962
...
@@ -158,14 +158,9 @@ func makeConfigNode(ctx *cli.Context) (*node.Node, gethConfig) {
...
@@ -158,14 +158,9 @@ func makeConfigNode(ctx *cli.Context) (*node.Node, gethConfig) {
// makeFullNode loads geth configuration and creates the Ethereum backend.
// makeFullNode loads geth configuration and creates the Ethereum backend.
func
makeFullNode
(
ctx
*
cli
.
Context
)
(
*
node
.
Node
,
ethapi
.
Backend
)
{
func
makeFullNode
(
ctx
*
cli
.
Context
)
(
*
node
.
Node
,
ethapi
.
Backend
)
{
stack
,
cfg
:=
makeConfigNode
(
ctx
)
stack
,
cfg
:=
makeConfigNode
(
ctx
)
if
ctx
.
IsSet
(
utils
.
Override
TerminalTotalDifficulty
.
Name
)
{
if
ctx
.
IsSet
(
utils
.
Override
Shanghai
.
Name
)
{
cfg
.
Eth
.
Override
TerminalTotalDifficulty
=
flags
.
GlobalBig
(
ctx
,
utils
.
OverrideTerminalTotalDifficulty
.
Name
)
cfg
.
Eth
.
Override
Shanghai
=
flags
.
GlobalBig
(
ctx
,
utils
.
OverrideShanghai
.
Name
)
}
}
if
ctx
.
IsSet
(
utils
.
OverrideTerminalTotalDifficultyPassed
.
Name
)
{
override
:=
ctx
.
Bool
(
utils
.
OverrideTerminalTotalDifficultyPassed
.
Name
)
cfg
.
Eth
.
OverrideTerminalTotalDifficultyPassed
=
&
override
}
backend
,
eth
:=
utils
.
RegisterEthService
(
stack
,
&
cfg
.
Eth
)
backend
,
eth
:=
utils
.
RegisterEthService
(
stack
,
&
cfg
.
Eth
)
// Configure log filter RPC API.
// Configure log filter RPC API.
...
...
cmd/geth/main.go
View file @
b56c7962
...
@@ -64,8 +64,7 @@ var (
...
@@ -64,8 +64,7 @@ var (
utils
.
NoUSBFlag
,
utils
.
NoUSBFlag
,
utils
.
USBFlag
,
utils
.
USBFlag
,
utils
.
SmartCardDaemonPathFlag
,
utils
.
SmartCardDaemonPathFlag
,
utils
.
OverrideTerminalTotalDifficulty
,
utils
.
OverrideShanghai
,
utils
.
OverrideTerminalTotalDifficultyPassed
,
utils
.
EthashCacheDirFlag
,
utils
.
EthashCacheDirFlag
,
utils
.
EthashCachesInMemoryFlag
,
utils
.
EthashCachesInMemoryFlag
,
utils
.
EthashCachesOnDiskFlag
,
utils
.
EthashCachesOnDiskFlag
,
...
...
cmd/utils/flags.go
View file @
b56c7962
...
@@ -271,14 +271,9 @@ var (
...
@@ -271,14 +271,9 @@ var (
Value
:
2048
,
Value
:
2048
,
Category
:
flags
.
EthCategory
,
Category
:
flags
.
EthCategory
,
}
}
OverrideTerminalTotalDifficulty
=
&
flags
.
BigFlag
{
OverrideShanghai
=
&
flags
.
BigFlag
{
Name
:
"override.terminaltotaldifficulty"
,
Name
:
"override.shanghai"
,
Usage
:
"Manually specify TerminalTotalDifficulty, overriding the bundled setting"
,
Usage
:
"Manually specify the Shanghai fork timestamp, overriding the bundled setting"
,
Category
:
flags
.
EthCategory
,
}
OverrideTerminalTotalDifficultyPassed
=
&
cli
.
BoolFlag
{
Name
:
"override.terminaltotaldifficultypassed"
,
Usage
:
"Manually specify TerminalTotalDifficultyPassed, overriding the bundled setting"
,
Category
:
flags
.
EthCategory
,
Category
:
flags
.
EthCategory
,
}
}
// Light server and client settings
// Light server and client settings
...
...
core/genesis.go
View file @
b56c7962
...
@@ -269,8 +269,7 @@ func (e *GenesisMismatchError) Error() string {
...
@@ -269,8 +269,7 @@ func (e *GenesisMismatchError) Error() string {
// ChainOverrides contains the changes to chain config.
// ChainOverrides contains the changes to chain config.
type
ChainOverrides
struct
{
type
ChainOverrides
struct
{
OverrideTerminalTotalDifficulty
*
big
.
Int
OverrideShanghai
*
big
.
Int
OverrideTerminalTotalDifficultyPassed
*
bool
}
}
// SetupGenesisBlock writes or updates the genesis block in db.
// SetupGenesisBlock writes or updates the genesis block in db.
...
@@ -296,15 +295,11 @@ func SetupGenesisBlockWithOverride(db ethdb.Database, triedb *trie.Database, gen
...
@@ -296,15 +295,11 @@ func SetupGenesisBlockWithOverride(db ethdb.Database, triedb *trie.Database, gen
}
}
applyOverrides
:=
func
(
config
*
params
.
ChainConfig
)
{
applyOverrides
:=
func
(
config
*
params
.
ChainConfig
)
{
if
config
!=
nil
{
if
config
!=
nil
{
if
overrides
!=
nil
&&
overrides
.
OverrideTerminalTotalDifficulty
!=
nil
{
if
overrides
!=
nil
&&
overrides
.
OverrideShanghai
!=
nil
{
config
.
TerminalTotalDifficulty
=
overrides
.
OverrideTerminalTotalDifficulty
config
.
ShanghaiTime
=
overrides
.
OverrideShanghai
}
if
overrides
!=
nil
&&
overrides
.
OverrideTerminalTotalDifficultyPassed
!=
nil
{
config
.
TerminalTotalDifficultyPassed
=
*
overrides
.
OverrideTerminalTotalDifficultyPassed
}
}
}
}
}
}
// Just commit the new block if there is no stored genesis block.
// Just commit the new block if there is no stored genesis block.
stored
:=
rawdb
.
ReadCanonicalHash
(
db
,
0
)
stored
:=
rawdb
.
ReadCanonicalHash
(
db
,
0
)
if
(
stored
==
common
.
Hash
{})
{
if
(
stored
==
common
.
Hash
{})
{
...
...
core/headerchain.go
View file @
b56c7962
...
@@ -578,6 +578,19 @@ func (hc *HeaderChain) SetHeadWithTimestamp(time uint64, updateFn UpdateHeadBloc
...
@@ -578,6 +578,19 @@ func (hc *HeaderChain) SetHeadWithTimestamp(time uint64, updateFn UpdateHeadBloc
// setHead rewinds the local chain to a new head block or a head timestamp.
// setHead rewinds the local chain to a new head block or a head timestamp.
// Everything above the new head will be deleted and the new one set.
// Everything above the new head will be deleted and the new one set.
func
(
hc
*
HeaderChain
)
setHead
(
headBlock
uint64
,
headTime
uint64
,
updateFn
UpdateHeadBlocksCallback
,
delFn
DeleteBlockContentCallback
)
{
func
(
hc
*
HeaderChain
)
setHead
(
headBlock
uint64
,
headTime
uint64
,
updateFn
UpdateHeadBlocksCallback
,
delFn
DeleteBlockContentCallback
)
{
// Sanity check that there's no attempt to undo the genesis block. This is
// a fairly synthetic case where someone enables a timestamp based fork
// below the genesis timestamp. It's nice to not allow that instead of the
// entire chain getting deleted.
if
headTime
>
0
&&
hc
.
genesisHeader
.
Time
>
headTime
{
// Note, a critical error is quite brutal, but we should really not reach
// this point. Since pre-timestamp based forks it was impossible to have
// a fork before block 0, the setHead would always work. With timestamp
// forks it becomes possible to specify below the genesis. That said, the
// only time we setHead via timestamp is with chain config changes on the
// startup, so failing hard there is ok.
log
.
Crit
(
"Rejecting genesis rewind via timestamp"
,
"target"
,
headTime
,
"genesis"
,
hc
.
genesisHeader
.
Time
)
}
var
(
var
(
parentHash
common
.
Hash
parentHash
common
.
Hash
batch
=
hc
.
chainDb
.
NewBatch
()
batch
=
hc
.
chainDb
.
NewBatch
()
...
...
eth/backend.go
View file @
b56c7962
...
@@ -195,11 +195,8 @@ func New(stack *node.Node, config *ethconfig.Config) (*Ethereum, error) {
...
@@ -195,11 +195,8 @@ func New(stack *node.Node, config *ethconfig.Config) (*Ethereum, error) {
)
)
// Override the chain config with provided settings.
// Override the chain config with provided settings.
var
overrides
core
.
ChainOverrides
var
overrides
core
.
ChainOverrides
if
config
.
OverrideTerminalTotalDifficulty
!=
nil
{
if
config
.
OverrideShanghai
!=
nil
{
overrides
.
OverrideTerminalTotalDifficulty
=
config
.
OverrideTerminalTotalDifficulty
overrides
.
OverrideShanghai
=
config
.
OverrideShanghai
}
if
config
.
OverrideTerminalTotalDifficultyPassed
!=
nil
{
overrides
.
OverrideTerminalTotalDifficultyPassed
=
config
.
OverrideTerminalTotalDifficultyPassed
}
}
eth
.
blockchain
,
err
=
core
.
NewBlockChain
(
chainDb
,
cacheConfig
,
config
.
Genesis
,
&
overrides
,
eth
.
engine
,
vmConfig
,
eth
.
shouldPreserve
,
&
config
.
TxLookupLimit
)
eth
.
blockchain
,
err
=
core
.
NewBlockChain
(
chainDb
,
cacheConfig
,
config
.
Genesis
,
&
overrides
,
eth
.
engine
,
vmConfig
,
eth
.
shouldPreserve
,
&
config
.
TxLookupLimit
)
if
err
!=
nil
{
if
err
!=
nil
{
...
...
eth/ethconfig/config.go
View file @
b56c7962
...
@@ -206,11 +206,8 @@ type Config struct {
...
@@ -206,11 +206,8 @@ type Config struct {
// CheckpointOracle is the configuration for checkpoint oracle.
// CheckpointOracle is the configuration for checkpoint oracle.
CheckpointOracle
*
params
.
CheckpointOracleConfig
`toml:",omitempty"`
CheckpointOracle
*
params
.
CheckpointOracleConfig
`toml:",omitempty"`
// OverrideTerminalTotalDifficulty (TODO: remove after the fork)
// OverrideShanghai (TODO: remove after the fork)
OverrideTerminalTotalDifficulty
*
big
.
Int
`toml:",omitempty"`
OverrideShanghai
*
big
.
Int
`toml:",omitempty"`
// OverrideTerminalTotalDifficultyPassed (TODO: remove after the fork)
OverrideTerminalTotalDifficultyPassed
*
bool
`toml:",omitempty"`
}
}
// CreateConsensusEngine creates a consensus engine for the given chain configuration.
// CreateConsensusEngine creates a consensus engine for the given chain configuration.
...
...
eth/ethconfig/gen_config.go
View file @
b56c7962
...
@@ -19,50 +19,49 @@ import (
...
@@ -19,50 +19,49 @@ import (
// MarshalTOML marshals as TOML.
// MarshalTOML marshals as TOML.
func
(
c
Config
)
MarshalTOML
()
(
interface
{},
error
)
{
func
(
c
Config
)
MarshalTOML
()
(
interface
{},
error
)
{
type
Config
struct
{
type
Config
struct
{
Genesis
*
core
.
Genesis
`toml:",omitempty"`
Genesis
*
core
.
Genesis
`toml:",omitempty"`
NetworkId
uint64
NetworkId
uint64
SyncMode
downloader
.
SyncMode
SyncMode
downloader
.
SyncMode
EthDiscoveryURLs
[]
string
EthDiscoveryURLs
[]
string
SnapDiscoveryURLs
[]
string
SnapDiscoveryURLs
[]
string
NoPruning
bool
NoPruning
bool
NoPrefetch
bool
NoPrefetch
bool
TxLookupLimit
uint64
`toml:",omitempty"`
TxLookupLimit
uint64
`toml:",omitempty"`
RequiredBlocks
map
[
uint64
]
common
.
Hash
`toml:"-"`
RequiredBlocks
map
[
uint64
]
common
.
Hash
`toml:"-"`
LightServ
int
`toml:",omitempty"`
LightServ
int
`toml:",omitempty"`
LightIngress
int
`toml:",omitempty"`
LightIngress
int
`toml:",omitempty"`
LightEgress
int
`toml:",omitempty"`
LightEgress
int
`toml:",omitempty"`
LightPeers
int
`toml:",omitempty"`
LightPeers
int
`toml:",omitempty"`
LightNoPrune
bool
`toml:",omitempty"`
LightNoPrune
bool
`toml:",omitempty"`
LightNoSyncServe
bool
`toml:",omitempty"`
LightNoSyncServe
bool
`toml:",omitempty"`
SyncFromCheckpoint
bool
`toml:",omitempty"`
SyncFromCheckpoint
bool
`toml:",omitempty"`
UltraLightServers
[]
string
`toml:",omitempty"`
UltraLightServers
[]
string
`toml:",omitempty"`
UltraLightFraction
int
`toml:",omitempty"`
UltraLightFraction
int
`toml:",omitempty"`
UltraLightOnlyAnnounce
bool
`toml:",omitempty"`
UltraLightOnlyAnnounce
bool
`toml:",omitempty"`
SkipBcVersionCheck
bool
`toml:"-"`
SkipBcVersionCheck
bool
`toml:"-"`
DatabaseHandles
int
`toml:"-"`
DatabaseHandles
int
`toml:"-"`
DatabaseCache
int
DatabaseCache
int
DatabaseFreezer
string
DatabaseFreezer
string
TrieCleanCache
int
TrieCleanCache
int
TrieCleanCacheJournal
string
`toml:",omitempty"`
TrieCleanCacheJournal
string
`toml:",omitempty"`
TrieCleanCacheRejournal
time
.
Duration
`toml:",omitempty"`
TrieCleanCacheRejournal
time
.
Duration
`toml:",omitempty"`
TrieDirtyCache
int
TrieDirtyCache
int
TrieTimeout
time
.
Duration
TrieTimeout
time
.
Duration
SnapshotCache
int
SnapshotCache
int
Preimages
bool
Preimages
bool
FilterLogCacheSize
int
FilterLogCacheSize
int
Miner
miner
.
Config
Miner
miner
.
Config
Ethash
ethash
.
Config
Ethash
ethash
.
Config
TxPool
txpool
.
Config
TxPool
txpool
.
Config
GPO
gasprice
.
Config
GPO
gasprice
.
Config
EnablePreimageRecording
bool
EnablePreimageRecording
bool
DocRoot
string
`toml:"-"`
DocRoot
string
`toml:"-"`
RPCGasCap
uint64
RPCGasCap
uint64
RPCEVMTimeout
time
.
Duration
RPCEVMTimeout
time
.
Duration
RPCTxFeeCap
float64
RPCTxFeeCap
float64
Checkpoint
*
params
.
TrustedCheckpoint
`toml:",omitempty"`
Checkpoint
*
params
.
TrustedCheckpoint
`toml:",omitempty"`
CheckpointOracle
*
params
.
CheckpointOracleConfig
`toml:",omitempty"`
CheckpointOracle
*
params
.
CheckpointOracleConfig
`toml:",omitempty"`
OverrideTerminalTotalDifficulty
*
big
.
Int
`toml:",omitempty"`
OverrideShanghai
*
big
.
Int
`toml:",omitempty"`
OverrideTerminalTotalDifficultyPassed
*
bool
`toml:",omitempty"`
}
}
var
enc
Config
var
enc
Config
enc
.
Genesis
=
c
.
Genesis
enc
.
Genesis
=
c
.
Genesis
...
@@ -107,58 +106,56 @@ func (c Config) MarshalTOML() (interface{}, error) {
...
@@ -107,58 +106,56 @@ func (c Config) MarshalTOML() (interface{}, error) {
enc
.
RPCTxFeeCap
=
c
.
RPCTxFeeCap
enc
.
RPCTxFeeCap
=
c
.
RPCTxFeeCap
enc
.
Checkpoint
=
c
.
Checkpoint
enc
.
Checkpoint
=
c
.
Checkpoint
enc
.
CheckpointOracle
=
c
.
CheckpointOracle
enc
.
CheckpointOracle
=
c
.
CheckpointOracle
enc
.
OverrideTerminalTotalDifficulty
=
c
.
OverrideTerminalTotalDifficulty
enc
.
OverrideShanghai
=
c
.
OverrideShanghai
enc
.
OverrideTerminalTotalDifficultyPassed
=
c
.
OverrideTerminalTotalDifficultyPassed
return
&
enc
,
nil
return
&
enc
,
nil
}
}
// UnmarshalTOML unmarshals from TOML.
// UnmarshalTOML unmarshals from TOML.
func
(
c
*
Config
)
UnmarshalTOML
(
unmarshal
func
(
interface
{})
error
)
error
{
func
(
c
*
Config
)
UnmarshalTOML
(
unmarshal
func
(
interface
{})
error
)
error
{
type
Config
struct
{
type
Config
struct
{
Genesis
*
core
.
Genesis
`toml:",omitempty"`
Genesis
*
core
.
Genesis
`toml:",omitempty"`
NetworkId
*
uint64
NetworkId
*
uint64
SyncMode
*
downloader
.
SyncMode
SyncMode
*
downloader
.
SyncMode
EthDiscoveryURLs
[]
string
EthDiscoveryURLs
[]
string
SnapDiscoveryURLs
[]
string
SnapDiscoveryURLs
[]
string
NoPruning
*
bool
NoPruning
*
bool
NoPrefetch
*
bool
NoPrefetch
*
bool
TxLookupLimit
*
uint64
`toml:",omitempty"`
TxLookupLimit
*
uint64
`toml:",omitempty"`
RequiredBlocks
map
[
uint64
]
common
.
Hash
`toml:"-"`
RequiredBlocks
map
[
uint64
]
common
.
Hash
`toml:"-"`
LightServ
*
int
`toml:",omitempty"`
LightServ
*
int
`toml:",omitempty"`
LightIngress
*
int
`toml:",omitempty"`
LightIngress
*
int
`toml:",omitempty"`
LightEgress
*
int
`toml:",omitempty"`
LightEgress
*
int
`toml:",omitempty"`
LightPeers
*
int
`toml:",omitempty"`
LightPeers
*
int
`toml:",omitempty"`
LightNoPrune
*
bool
`toml:",omitempty"`
LightNoPrune
*
bool
`toml:",omitempty"`
LightNoSyncServe
*
bool
`toml:",omitempty"`
LightNoSyncServe
*
bool
`toml:",omitempty"`
SyncFromCheckpoint
*
bool
`toml:",omitempty"`
SyncFromCheckpoint
*
bool
`toml:",omitempty"`
UltraLightServers
[]
string
`toml:",omitempty"`
UltraLightServers
[]
string
`toml:",omitempty"`
UltraLightFraction
*
int
`toml:",omitempty"`
UltraLightFraction
*
int
`toml:",omitempty"`
UltraLightOnlyAnnounce
*
bool
`toml:",omitempty"`
UltraLightOnlyAnnounce
*
bool
`toml:",omitempty"`
SkipBcVersionCheck
*
bool
`toml:"-"`
SkipBcVersionCheck
*
bool
`toml:"-"`
DatabaseHandles
*
int
`toml:"-"`
DatabaseHandles
*
int
`toml:"-"`
DatabaseCache
*
int
DatabaseCache
*
int
DatabaseFreezer
*
string
DatabaseFreezer
*
string
TrieCleanCache
*
int
TrieCleanCache
*
int
TrieCleanCacheJournal
*
string
`toml:",omitempty"`
TrieCleanCacheJournal
*
string
`toml:",omitempty"`
TrieCleanCacheRejournal
*
time
.
Duration
`toml:",omitempty"`
TrieCleanCacheRejournal
*
time
.
Duration
`toml:",omitempty"`
TrieDirtyCache
*
int
TrieDirtyCache
*
int
TrieTimeout
*
time
.
Duration
TrieTimeout
*
time
.
Duration
SnapshotCache
*
int
SnapshotCache
*
int
Preimages
*
bool
Preimages
*
bool
FilterLogCacheSize
*
int
FilterLogCacheSize
*
int
Miner
*
miner
.
Config
Miner
*
miner
.
Config
Ethash
*
ethash
.
Config
Ethash
*
ethash
.
Config
TxPool
*
txpool
.
Config
TxPool
*
txpool
.
Config
GPO
*
gasprice
.
Config
GPO
*
gasprice
.
Config
EnablePreimageRecording
*
bool
EnablePreimageRecording
*
bool
DocRoot
*
string
`toml:"-"`
DocRoot
*
string
`toml:"-"`
RPCGasCap
*
uint64
RPCGasCap
*
uint64
RPCEVMTimeout
*
time
.
Duration
RPCEVMTimeout
*
time
.
Duration
RPCTxFeeCap
*
float64
RPCTxFeeCap
*
float64
Checkpoint
*
params
.
TrustedCheckpoint
`toml:",omitempty"`
Checkpoint
*
params
.
TrustedCheckpoint
`toml:",omitempty"`
CheckpointOracle
*
params
.
CheckpointOracleConfig
`toml:",omitempty"`
CheckpointOracle
*
params
.
CheckpointOracleConfig
`toml:",omitempty"`
OverrideTerminalTotalDifficulty
*
big
.
Int
`toml:",omitempty"`
OverrideShanghai
*
big
.
Int
`toml:",omitempty"`
OverrideTerminalTotalDifficultyPassed
*
bool
`toml:",omitempty"`
}
}
var
dec
Config
var
dec
Config
if
err
:=
unmarshal
(
&
dec
);
err
!=
nil
{
if
err
:=
unmarshal
(
&
dec
);
err
!=
nil
{
...
@@ -290,11 +287,8 @@ func (c *Config) UnmarshalTOML(unmarshal func(interface{}) error) error {
...
@@ -290,11 +287,8 @@ func (c *Config) UnmarshalTOML(unmarshal func(interface{}) error) error {
if
dec
.
CheckpointOracle
!=
nil
{
if
dec
.
CheckpointOracle
!=
nil
{
c
.
CheckpointOracle
=
dec
.
CheckpointOracle
c
.
CheckpointOracle
=
dec
.
CheckpointOracle
}
}
if
dec
.
OverrideTerminalTotalDifficulty
!=
nil
{
if
dec
.
OverrideShanghai
!=
nil
{
c
.
OverrideTerminalTotalDifficulty
=
dec
.
OverrideTerminalTotalDifficulty
c
.
OverrideShanghai
=
dec
.
OverrideShanghai
}
if
dec
.
OverrideTerminalTotalDifficultyPassed
!=
nil
{
c
.
OverrideTerminalTotalDifficultyPassed
=
dec
.
OverrideTerminalTotalDifficultyPassed
}
}
return
nil
return
nil
}
}
les/client.go
View file @
b56c7962
...
@@ -94,11 +94,8 @@ func New(stack *node.Node, config *ethconfig.Config) (*LightEthereum, error) {
...
@@ -94,11 +94,8 @@ func New(stack *node.Node, config *ethconfig.Config) (*LightEthereum, error) {
return
nil
,
err
return
nil
,
err
}
}
var
overrides
core
.
ChainOverrides
var
overrides
core
.
ChainOverrides
if
config
.
OverrideTerminalTotalDifficulty
!=
nil
{
if
config
.
OverrideShanghai
!=
nil
{
overrides
.
OverrideTerminalTotalDifficulty
=
config
.
OverrideTerminalTotalDifficulty
overrides
.
OverrideShanghai
=
config
.
OverrideShanghai
}
if
config
.
OverrideTerminalTotalDifficultyPassed
!=
nil
{
overrides
.
OverrideTerminalTotalDifficultyPassed
=
config
.
OverrideTerminalTotalDifficultyPassed
}
}
chainConfig
,
genesisHash
,
genesisErr
:=
core
.
SetupGenesisBlockWithOverride
(
chainDb
,
trie
.
NewDatabase
(
chainDb
),
config
.
Genesis
,
&
overrides
)
chainConfig
,
genesisHash
,
genesisErr
:=
core
.
SetupGenesisBlockWithOverride
(
chainDb
,
trie
.
NewDatabase
(
chainDb
),
config
.
Genesis
,
&
overrides
)
if
_
,
isCompat
:=
genesisErr
.
(
*
params
.
ConfigCompatError
);
genesisErr
!=
nil
&&
!
isCompat
{
if
_
,
isCompat
:=
genesisErr
.
(
*
params
.
ConfigCompatError
);
genesisErr
!=
nil
&&
!
isCompat
{
...
...
params/config.go
View file @
b56c7962
...
@@ -445,45 +445,53 @@ func (c *ChainConfig) Description() string {
...
@@ -445,45 +445,53 @@ func (c *ChainConfig) Description() string {
// Create a list of forks with a short description of them. Forks that only
// Create a list of forks with a short description of them. Forks that only
// makes sense for mainnet should be optional at printing to avoid bloating
// makes sense for mainnet should be optional at printing to avoid bloating
// the output for testnets and private networks.
// the output for testnets and private networks.
banner
+=
"Pre-Merge hard forks:
\n
"
banner
+=
"Pre-Merge hard forks
(block based)
:
\n
"
banner
+=
fmt
.
Sprintf
(
" - Homestead: %-8v (https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/homestead.md)
\n
"
,
c
.
HomesteadBlock
)
banner
+=
fmt
.
Sprintf
(
" - Homestead:
#
%-8v (https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/homestead.md)
\n
"
,
c
.
HomesteadBlock
)
if
c
.
DAOForkBlock
!=
nil
{
if
c
.
DAOForkBlock
!=
nil
{
banner
+=
fmt
.
Sprintf
(
" - DAO Fork: %-8v (https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/dao-fork.md)
\n
"
,
c
.
DAOForkBlock
)
banner
+=
fmt
.
Sprintf
(
" - DAO Fork:
#
%-8v (https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/dao-fork.md)
\n
"
,
c
.
DAOForkBlock
)
}
}
banner
+=
fmt
.
Sprintf
(
" - Tangerine Whistle (EIP 150): %-8v (https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/tangerine-whistle.md)
\n
"
,
c
.
EIP150Block
)
banner
+=
fmt
.
Sprintf
(
" - Tangerine Whistle (EIP 150):
#
%-8v (https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/tangerine-whistle.md)
\n
"
,
c
.
EIP150Block
)
banner
+=
fmt
.
Sprintf
(
" - Spurious Dragon/1 (EIP 155): %-8v (https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/spurious-dragon.md)
\n
"
,
c
.
EIP155Block
)
banner
+=
fmt
.
Sprintf
(
" - Spurious Dragon/1 (EIP 155):
#
%-8v (https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/spurious-dragon.md)
\n
"
,
c
.
EIP155Block
)
banner
+=
fmt
.
Sprintf
(
" - Spurious Dragon/2 (EIP 158): %-8v (https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/spurious-dragon.md)
\n
"
,
c
.
EIP155Block
)
banner
+=
fmt
.
Sprintf
(
" - Spurious Dragon/2 (EIP 158):
#
%-8v (https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/spurious-dragon.md)
\n
"
,
c
.
EIP155Block
)
banner
+=
fmt
.
Sprintf
(
" - Byzantium: %-8v (https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/byzantium.md)
\n
"
,
c
.
ByzantiumBlock
)
banner
+=
fmt
.
Sprintf
(
" - Byzantium:
#
%-8v (https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/byzantium.md)
\n
"
,
c
.
ByzantiumBlock
)
banner
+=
fmt
.
Sprintf
(
" - Constantinople: %-8v (https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/constantinople.md)
\n
"
,
c
.
ConstantinopleBlock
)
banner
+=
fmt
.
Sprintf
(
" - Constantinople:
#
%-8v (https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/constantinople.md)
\n
"
,
c
.
ConstantinopleBlock
)
banner
+=
fmt
.
Sprintf
(
" - Petersburg: %-8v (https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/petersburg.md)
\n
"
,
c
.
PetersburgBlock
)
banner
+=
fmt
.
Sprintf
(
" - Petersburg:
#
%-8v (https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/petersburg.md)
\n
"
,
c
.
PetersburgBlock
)
banner
+=
fmt
.
Sprintf
(
" - Istanbul: %-8v (https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/istanbul.md)
\n
"
,
c
.
IstanbulBlock
)
banner
+=
fmt
.
Sprintf
(
" - Istanbul:
#
%-8v (https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/istanbul.md)
\n
"
,
c
.
IstanbulBlock
)
if
c
.
MuirGlacierBlock
!=
nil
{
if
c
.
MuirGlacierBlock
!=
nil
{
banner
+=
fmt
.
Sprintf
(
" - Muir Glacier: %-8v (https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/muir-glacier.md)
\n
"
,
c
.
MuirGlacierBlock
)
banner
+=
fmt
.
Sprintf
(
" - Muir Glacier:
#
%-8v (https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/muir-glacier.md)
\n
"
,
c
.
MuirGlacierBlock
)
}
}
banner
+=
fmt
.
Sprintf
(
" - Berlin: %-8v (https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/berlin.md)
\n
"
,
c
.
BerlinBlock
)
banner
+=
fmt
.
Sprintf
(
" - Berlin:
#
%-8v (https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/berlin.md)
\n
"
,
c
.
BerlinBlock
)
banner
+=
fmt
.
Sprintf
(
" - London: %-8v (https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/london.md)
\n
"
,
c
.
LondonBlock
)
banner
+=
fmt
.
Sprintf
(
" - London:
#
%-8v (https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/london.md)
\n
"
,
c
.
LondonBlock
)
if
c
.
ArrowGlacierBlock
!=
nil
{
if
c
.
ArrowGlacierBlock
!=
nil
{
banner
+=
fmt
.
Sprintf
(
" - Arrow Glacier: %-8v (https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/arrow-glacier.md)
\n
"
,
c
.
ArrowGlacierBlock
)
banner
+=
fmt
.
Sprintf
(
" - Arrow Glacier:
#
%-8v (https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/arrow-glacier.md)
\n
"
,
c
.
ArrowGlacierBlock
)
}
}
if
c
.
GrayGlacierBlock
!=
nil
{
if
c
.
GrayGlacierBlock
!=
nil
{
banner
+=
fmt
.
Sprintf
(
" - Gray Glacier: %-8v (https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/gray-glacier.md)
\n
"
,
c
.
GrayGlacierBlock
)
banner
+=
fmt
.
Sprintf
(
" - Gray Glacier: #%-8v (https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/gray-glacier.md)
\n
"
,
c
.
GrayGlacierBlock
)
}
banner
+=
fmt
.
Sprintf
(
" - Shanghai: %-8v (https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/shanghai.md)
\n
"
,
c
.
ShanghaiTime
)
if
c
.
CancunBlock
!=
nil
{
banner
+=
fmt
.
Sprintf
(
" - Cancun: %-8v
\n
"
,
c
.
CancunBlock
)
}
}
banner
+=
"
\n
"
banner
+=
"
\n
"
// Add a special section for the merge as it's non-obvious
// Add a special section for the merge as it's non-obvious
if
c
.
TerminalTotalDifficulty
==
nil
{
if
c
.
TerminalTotalDifficulty
==
nil
{
banner
+=
"The Merge is not yet available for this network!
\n
"
banner
+=
"The Merge is not yet available for this network!
\n
"
banner
+=
" - Hard-fork specification: https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/paris.md"
banner
+=
" - Hard-fork specification: https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/paris.md
\n
"
}
else
{
}
else
{
banner
+=
"Merge configured:
\n
"
banner
+=
"Merge configured:
\n
"
banner
+=
" - Hard-fork specification: https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/paris.md
\n
"
banner
+=
" - Hard-fork specification: https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/paris.md
\n
"
banner
+=
fmt
.
Sprintf
(
" - Network known to be merged: %v
\n
"
,
c
.
TerminalTotalDifficultyPassed
)
banner
+=
fmt
.
Sprintf
(
" - Network known to be merged: %v
\n
"
,
c
.
TerminalTotalDifficultyPassed
)
banner
+=
fmt
.
Sprintf
(
" - Total terminal difficulty: %v
\n
"
,
c
.
TerminalTotalDifficulty
)
banner
+=
fmt
.
Sprintf
(
" - Total terminal difficulty: %v
\n
"
,
c
.
TerminalTotalDifficulty
)
banner
+=
fmt
.
Sprintf
(
" - Merge netsplit block: %-8v"
,
c
.
MergeNetsplitBlock
)
if
c
.
MergeNetsplitBlock
!=
nil
{
banner
+=
fmt
.
Sprintf
(
" - Merge netsplit block: #%-8v
\n
"
,
c
.
MergeNetsplitBlock
)
}
}
banner
+=
"
\n
"
// Create a list of forks post-merge
banner
+=
"Post-Merge hard forks (timestamp based):
\n
"
if
c
.
ShanghaiTime
!=
nil
{
banner
+=
fmt
.
Sprintf
(
" - Shanghai: @%-10v (https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/shanghai.md)
\n
"
,
c
.
ShanghaiTime
)
}
if
c
.
CancunBlock
!=
nil
{
banner
+=
fmt
.
Sprintf
(
" - Cancun: @%-10v
\n
"
,
c
.
CancunBlock
)
}
}
return
banner
return
banner
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment