diff --git a/eth/ethconfig/plugin_hooks.go b/eth/ethconfig/plugin_hooks.go new file mode 100644 index 000000000..f766d5f09 --- /dev/null +++ b/eth/ethconfig/plugin_hooks.go @@ -0,0 +1,52 @@ +package ethconfig + +import ( + "github.com/ethereum/go-ethereum/log" + // "github.com/ethereum/go-ethereum/node" + "github.com/ethereum/go-ethereum/plugins" + // "github.com/ethereum/go-ethereum/plugins/wrappers" + // "github.com/ethereum/go-ethereum/rpc" + // "github.com/openrelayxyz/plugeth-utils/core" + // "github.com/openrelayxyz/plugeth-utils/restricted" + + // "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/consensus" + // "github.com/ethereum/go-ethereum/consensus/beacon" + // "github.com/ethereum/go-ethereum/consensus/clique" + // "github.com/ethereum/go-ethereum/consensus/ethash" + // "github.com/ethereum/go-ethereum/core" + // "github.com/ethereum/go-ethereum/core/txpool" + // "github.com/ethereum/go-ethereum/eth/downloader" + // "github.com/ethereum/go-ethereum/eth/gasprice" + "github.com/ethereum/go-ethereum/ethdb" + // "github.com/ethereum/go-ethereum/log" + // "github.com/ethereum/go-ethereum/miner" + "github.com/ethereum/go-ethereum/node" + // "github.com/ethereum/go-ethereum/params" + + pconsensus "github.com/openrelayxyz/plugeth-utils/restricted/consensus" + pparams "github.com/openrelayxyz/plugeth-utils/restricted/params" +) + +// stack *node.Node, ethashConfig *ethash.Config, cliqueConfig *params.CliqueConfig, notify []string, noverify bool, db ethdb.Database) consensus.Engine + +func PluginGetEngine(pl *plugins.PluginLoader, stack *node.Node, notify []string, noverify bool, db ethdb.Database) consensus.Engine { + fnList := pl.Lookup("GetEngine", func(item interface{}) bool { + _, ok := item.(func(*node.Node, []string, bool, ethdb.Database) consensus.Engine) + return ok + }) + for _, fni := range fnList { + if fn, ok := fni.(func(*node.Node, []string, bool, ethdb.Database)); ok { // modify + return fn(stack, notify, noverify, db) // modify + } + } + return nil +} + +func pluginGetEngine(stack *node.Node, notify []string, noverify bool, db ethdb.Database) consensus.Engine { + if plugins.DefaultPluginLoader == nil { + log.Warn("Attempting GetEngine, but default PluginLoader has not been initialized") + return nil + } + return PluginGetEngine(plugins.DefaultPluginLoader, stack, notify, noverify, db) +} \ No newline at end of file diff --git a/go.mod b/go.mod index 6faf3a773..a86c21011 100644 --- a/go.mod +++ b/go.mod @@ -125,3 +125,5 @@ require ( gopkg.in/yaml.v3 v3.0.1 // indirect rsc.io/tmplfunc v0.0.3 // indirect ) + +replace github.com/openrelayxyz/plugeth-utils => /home/philip/src/rivet/plugeth_superspace/plugeth-utils