Merge pull request #111 from openrelayxyz/feature/network-etc-miner
Feature/network etc miner
This commit is contained in:
commit
ba3343ad12
@ -1440,7 +1440,6 @@ func SetDataDir(ctx *cli.Context, cfg *node.Config) {
|
||||
pluginPath := pluginDefaultDataDir(node.DefaultDataDir())
|
||||
switch {
|
||||
case pluginPath != "" && ctx.String(DataDirFlag.Name) == node.DefaultDataDir():
|
||||
log.Error("Inside datdir injection number two")
|
||||
cfg.DataDir = pluginPath
|
||||
// end PluGeth injection
|
||||
case ctx.IsSet(DataDirFlag.Name):
|
||||
|
@ -60,6 +60,11 @@ func NewEVMInterpreter(evm *EVM) *EVMInterpreter {
|
||||
table = &cancunInstructionSet
|
||||
case evm.chainRules.IsShanghai:
|
||||
table = &shanghaiInstructionSet
|
||||
// begin PluGeth injection
|
||||
if !evm.chainRules.IsMerge {
|
||||
table[RANDOM] = frontierInstructionSet[DIFFICULTY]
|
||||
}
|
||||
// end PluGeth injection
|
||||
case evm.chainRules.IsMerge:
|
||||
table = &mergeInstructionSet
|
||||
case evm.chainRules.IsLondon:
|
||||
@ -72,10 +77,12 @@ func NewEVMInterpreter(evm *EVM) *EVMInterpreter {
|
||||
table = &constantinopleInstructionSet
|
||||
case evm.chainRules.IsByzantium:
|
||||
table = &byzantiumInstructionSet
|
||||
|
||||
// begin PluGeth injection
|
||||
case evm.chainRules.IsEIP160:
|
||||
// end PluGeth injection
|
||||
table = &spuriousDragonInstructionSet
|
||||
// end PluGeth injection
|
||||
|
||||
case evm.chainRules.IsEIP150:
|
||||
table = &tangerineWhistleInstructionSet
|
||||
case evm.chainRules.IsHomestead:
|
||||
|
@ -977,9 +977,12 @@ func (w *worker) prepareWork(genParams *generateParams) (*environment, error) {
|
||||
header.MixDigest = genParams.random
|
||||
}
|
||||
// Set baseFee and GasLimit if we are on an EIP-1559 chain
|
||||
if w.chainConfig.IsLondon(header.Number) {
|
||||
|
||||
// begin PluGeth injection
|
||||
if w.chainConfig.Is1559(header.Number) {
|
||||
header.BaseFee = eip1559.CalcBaseFee(w.chainConfig, parent)
|
||||
if !w.chainConfig.IsLondon(parent.Number) {
|
||||
if !w.chainConfig.Is1559(parent.Number) {
|
||||
// end PluGeth injection
|
||||
parentGasLimit := parent.GasLimit * w.chainConfig.ElasticityMultiplier()
|
||||
header.GasLimit = core.CalcGasLimit(parentGasLimit, w.config.GasCeil)
|
||||
}
|
||||
|
@ -558,10 +558,14 @@ func (c *ChainConfig) IsTerminalPoWBlock(parentTotalDiff *big.Int, totalDiff *bi
|
||||
return parentTotalDiff.Cmp(c.TerminalTotalDifficulty) < 0 && totalDiff.Cmp(c.TerminalTotalDifficulty) >= 0
|
||||
}
|
||||
|
||||
// begin Plugeth injection -- the following code is being commented to enable network plugins to initiate the shanghai fork
|
||||
|
||||
// IsShanghai returns whether time is either equal to the Shanghai fork time or greater.
|
||||
func (c *ChainConfig) IsShanghai(num *big.Int, time uint64) bool {
|
||||
return c.IsLondon(num) && isTimestampForked(c.ShanghaiTime, time)
|
||||
}
|
||||
// func (c *ChainConfig) IsShanghai(num *big.Int, time uint64) bool {
|
||||
// return c.IsLondon(num) && isTimestampForked(c.ShanghaiTime, time)
|
||||
// }
|
||||
|
||||
// end PluGeth injection
|
||||
|
||||
// IsCancun returns whether num is either equal to the Cancun fork time or greater.
|
||||
func (c *ChainConfig) IsCancun(num *big.Int, time uint64) bool {
|
||||
@ -929,7 +933,11 @@ func (c *ChainConfig) Rules(num *big.Int, isMerge bool, timestamp uint64) Rules
|
||||
IsBerlin: c.IsBerlin(num),
|
||||
IsLondon: c.IsLondon(num),
|
||||
IsMerge: isMerge,
|
||||
IsShanghai: isMerge && c.IsShanghai(num, timestamp),
|
||||
// IsShanghai: isMerge && c.IsShanghai(num, timestamp),
|
||||
// the above is being commented and replaced with the plugeth code below to hotwire the chainrules to allow shanghai without the merge
|
||||
// begin PluGeth injection
|
||||
IsShanghai: c.IsShanghai(num, timestamp),
|
||||
// end PluGeth injection
|
||||
IsCancun: isMerge && c.IsCancun(num, timestamp),
|
||||
IsPrague: isMerge && c.IsPrague(num, timestamp),
|
||||
IsVerkle: isMerge && c.IsVerkle(num, timestamp),
|
||||
|
@ -39,3 +39,16 @@ func (c *ChainConfig) IsEIP160(num *big.Int) bool {
|
||||
}
|
||||
return c.IsEIP158(num)
|
||||
}
|
||||
|
||||
// IsShanghai is modified here to return whether num is either equal to the Shanghai fork block or greater, if the chain supports Shanghai
|
||||
// the foundation implementation has been commented out
|
||||
func (c *ChainConfig) IsShanghai(num *big.Int, time uint64) bool {
|
||||
if plugins.DefaultPluginLoader == nil {
|
||||
log.Warn("Attempting isPluginShanghai, but default PluginLoader has not been initialized")
|
||||
return c.IsLondon(num) && isTimestampForked(c.ShanghaiTime, time)
|
||||
}
|
||||
if active, ok := PluginEIPCheck(plugins.DefaultPluginLoader, "IsShanghai", num); ok {
|
||||
return active
|
||||
}
|
||||
return c.IsLondon(num) && isTimestampForked(c.ShanghaiTime, time)
|
||||
}
|
@ -243,7 +243,8 @@ func RPCSubscriptionTest() {
|
||||
|
||||
// params/
|
||||
|
||||
func Is1559(*big.Int) bool { // while this hook resides in params the injections are in consensus/misc/ (2), and core/ (2)
|
||||
// Is1559 is written in params/ the injections are in: consensus/misc/ (2), and core/ (2) and miner/ (1)
|
||||
func Is1559(*big.Int) bool {
|
||||
m := map[string]struct{}{
|
||||
"Is1559":struct{}{},
|
||||
}
|
||||
@ -251,9 +252,19 @@ func Is1559(*big.Int) bool { // while this hook resides in params the injections
|
||||
return true
|
||||
}
|
||||
|
||||
// the following two hooks are both testing the PluginEIPCheck() hook
|
||||
|
||||
func Is160(num *big.Int) bool {
|
||||
m := map[string]struct{}{
|
||||
"PluginEIPCheck":struct{}{},
|
||||
"Is160":struct{}{},
|
||||
}
|
||||
hookChan <- m
|
||||
return true
|
||||
}
|
||||
|
||||
func IsShanghai(num *big.Int) bool {
|
||||
m := map[string]struct{}{
|
||||
"IsShanghai":struct{}{},
|
||||
}
|
||||
hookChan <- m
|
||||
return true
|
||||
@ -300,6 +311,7 @@ var plugins map[string]struct{} = map[string]struct{}{
|
||||
"ForkIDs": struct{}{},
|
||||
"OpCodeSelect":struct{}{},
|
||||
"Is1559":struct{}{},
|
||||
"PluginEIPCheck":struct{}{},
|
||||
"Is160":struct{}{},
|
||||
"IsShanghai":struct{}{},
|
||||
}
|
||||
|
||||
|
@ -12,7 +12,7 @@ import (
|
||||
"github.com/openrelayxyz/plugeth-utils/restricted/crypto"
|
||||
)
|
||||
|
||||
var hookChan chan map[string]struct{} = make(chan map[string]struct{}, 10)
|
||||
var hookChan chan map[string]struct{} = make(chan map[string]struct{}, 20)
|
||||
var quit chan string = make(chan string)
|
||||
|
||||
func (service *engineService) CaptureShutdown(ctx context.Context) {
|
||||
@ -136,8 +136,10 @@ func BlockChain() {
|
||||
delete(plugins, "OpCodeSelect")
|
||||
case f("Is1559"):
|
||||
delete(plugins, "Is1559")
|
||||
case f("PluginEIPCheck"):
|
||||
delete(plugins, "PluginEIPCheck")
|
||||
case f("Is160"):
|
||||
delete(plugins, "Is160")
|
||||
case f("IsShanghai"):
|
||||
delete(plugins, "IsShanghai")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user