Merge remote-tracking branch 'origin/feature/etc-plugin-miner' into feature/network-etc-miner

This commit is contained in:
philip-morlier 2024-02-28 14:39:02 -08:00
commit 2a41f9d36f
6 changed files with 45 additions and 12 deletions

View File

@ -1440,7 +1440,6 @@ func SetDataDir(ctx *cli.Context, cfg *node.Config) {
pluginPath := pluginDefaultDataDir(node.DefaultDataDir()) pluginPath := pluginDefaultDataDir(node.DefaultDataDir())
switch { switch {
case pluginPath != "" && ctx.String(DataDirFlag.Name) == node.DefaultDataDir(): case pluginPath != "" && ctx.String(DataDirFlag.Name) == node.DefaultDataDir():
log.Error("Inside datdir injection number two")
cfg.DataDir = pluginPath cfg.DataDir = pluginPath
// end PluGeth injection // end PluGeth injection
case ctx.IsSet(DataDirFlag.Name): case ctx.IsSet(DataDirFlag.Name):

View File

@ -977,9 +977,12 @@ func (w *worker) prepareWork(genParams *generateParams) (*environment, error) {
header.MixDigest = genParams.random header.MixDigest = genParams.random
} }
// Set baseFee and GasLimit if we are on an EIP-1559 chain // 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) 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() parentGasLimit := parent.GasLimit * w.chainConfig.ElasticityMultiplier()
header.GasLimit = core.CalcGasLimit(parentGasLimit, w.config.GasCeil) header.GasLimit = core.CalcGasLimit(parentGasLimit, w.config.GasCeil)
} }

View File

@ -558,10 +558,14 @@ func (c *ChainConfig) IsTerminalPoWBlock(parentTotalDiff *big.Int, totalDiff *bi
return parentTotalDiff.Cmp(c.TerminalTotalDifficulty) < 0 && totalDiff.Cmp(c.TerminalTotalDifficulty) >= 0 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. // IsShanghai returns whether time is either equal to the Shanghai fork time or greater.
func (c *ChainConfig) IsShanghai(num *big.Int, time uint64) bool { // func (c *ChainConfig) IsShanghai(num *big.Int, time uint64) bool {
return c.IsLondon(num) && isTimestampForked(c.ShanghaiTime, time) // 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. // IsCancun returns whether num is either equal to the Cancun fork time or greater.
func (c *ChainConfig) IsCancun(num *big.Int, time uint64) bool { func (c *ChainConfig) IsCancun(num *big.Int, time uint64) bool {

View File

@ -39,3 +39,16 @@ func (c *ChainConfig) IsEIP160(num *big.Int) bool {
} }
return c.IsEIP158(num) 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)
}

View File

@ -243,7 +243,8 @@ func RPCSubscriptionTest() {
// params/ // 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{}{ m := map[string]struct{}{
"Is1559":struct{}{}, "Is1559":struct{}{},
} }
@ -251,9 +252,19 @@ func Is1559(*big.Int) bool { // while this hook resides in params the injections
return true return true
} }
// the following two hooks are both testing the PluginEIPCheck() hook
func Is160(num *big.Int) bool { func Is160(num *big.Int) bool {
m := map[string]struct{}{ 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 hookChan <- m
return true return true
@ -300,6 +311,7 @@ var plugins map[string]struct{} = map[string]struct{}{
"ForkIDs": struct{}{}, "ForkIDs": struct{}{},
"OpCodeSelect":struct{}{}, "OpCodeSelect":struct{}{},
"Is1559":struct{}{}, "Is1559":struct{}{},
"PluginEIPCheck":struct{}{}, "Is160":struct{}{},
"IsShanghai":struct{}{},
} }

View File

@ -12,7 +12,7 @@ import (
"github.com/openrelayxyz/plugeth-utils/restricted/crypto" "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) var quit chan string = make(chan string)
func (service *engineService) CaptureShutdown(ctx context.Context) { func (service *engineService) CaptureShutdown(ctx context.Context) {
@ -136,8 +136,10 @@ func BlockChain() {
delete(plugins, "OpCodeSelect") delete(plugins, "OpCodeSelect")
case f("Is1559"): case f("Is1559"):
delete(plugins, "Is1559") delete(plugins, "Is1559")
case f("PluginEIPCheck"): case f("Is160"):
delete(plugins, "PluginEIPCheck") delete(plugins, "Is160")
case f("IsShanghai"):
delete(plugins, "IsShanghai")
} }
} }
} }