diff --git a/core/state/plugin_hooks.go b/core/state/plugin_hooks.go index e55615dfb..750368600 100644 --- a/core/state/plugin_hooks.go +++ b/core/state/plugin_hooks.go @@ -1,29 +1,30 @@ package state import ( - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/plugins" - "github.com/ethereum/go-ethereum/log" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/log" + "github.com/ethereum/go-ethereum/plugins" + "github.com/opoenrelayxyz/plugeth-utils/core" ) // TODO (philip): change common.Hash to core.Hash, -func PluginStateUpdate(pl *plugins.PluginLoader, blockRoot, parentRoot common.Hash, destructs map[common.Hash]struct{}, accounts map[common.Hash][]byte, storage map[common.Hash]map[common.Hash][]byte) { - fnList := pl.Lookup("StateUpdate", func(item interface{}) bool { - _, ok := item.(func(common.Hash, common.Hash, map[common.Hash]struct{}, map[common.Hash][]byte, map[common.Hash]map[common.Hash][]byte)) - return ok - }) - for _, fni := range fnList { - if fn, ok := fni.(func(common.Hash, common.Hash, map[common.Hash]struct{}, map[common.Hash][]byte, map[common.Hash]map[common.Hash][]byte)); ok { - fn(blockRoot, parentRoot, destructs, accounts, storage) - } - } +func PluginStateUpdate(pl *plugins.PluginLoader, blockRoot, parentRoot core.Hash, destructs map[core.Hash]struct{}, accounts map[core.Hash][]byte, storage map[core.Hash]map[core.Hash][]byte) { + fnList := pl.Lookup("StateUpdate", func(item interface{}) bool { + _, ok := item.(func(core.Hash, core.Hash, map[core.Hash]struct{}, map[core.Hash][]byte, map[core.Hash]map[core.Hash][]byte)) + return ok + }) + for _, fni := range fnList { + if fn, ok := fni.(func(core.Hash, core.Hash, map[core.Hash]struct{}, map[core.Hash][]byte, map[core.Hash]map[core.Hash][]byte)); ok { + fn(blockRoot, parentRoot, destructs, accounts, storage) + } + } } -func pluginStateUpdate(blockRoot, parentRoot common.Hash, destructs map[common.Hash]struct{}, accounts map[common.Hash][]byte, storage map[common.Hash]map[common.Hash][]byte) { +func pluginStateUpdate(blockRoot, parentRoot core.Hash, destructs map[core.Hash]struct{}, accounts map[core.Hash][]byte, storage map[core.Hash]map[core.Hash][]byte) { if plugins.DefaultPluginLoader == nil { log.Warn("Attempting StateUpdate, but default PluginLoader has not been initialized") - return - } + return + } PluginStateUpdate(plugins.DefaultPluginLoader, blockRoot, parentRoot, destructs, accounts, storage) } diff --git a/eth/plugin_hooks.go b/eth/plugin_hooks.go index 394b30a90..ed20a5f5d 100644 --- a/eth/plugin_hooks.go +++ b/eth/plugin_hooks.go @@ -1,19 +1,20 @@ package eth import ( - "math/big" - "github.com/ethereum/go-ethereum/plugins" - "github.com/ethereum/go-ethereum/node" - "github.com/ethereum/go-ethereum/params" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/vm" - "github.com/ethereum/go-ethereum/consensus" - "github.com/ethereum/go-ethereum/consensus/ethash" - "github.com/ethereum/go-ethereum/eth/ethconfig" - "github.com/ethereum/go-ethereum/ethdb" - "github.com/ethereum/go-ethereum/log" - "reflect" - "time" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/consensus" + "github.com/ethereum/go-ethereum/consensus/ethash" + "github.com/ethereum/go-ethereum/core/vm" + "github.com/ethereum/go-ethereum/eth/ethconfig" + "github.com/ethereum/go-ethereum/ethdb" + "github.com/ethereum/go-ethereum/log" + "github.com/ethereum/go-ethereum/node" + "github.com/ethereum/go-ethereum/params" + "github.com/ethereum/go-ethereum/plugins" + "github.com/opoenrelayxyz/plugeth-utils/core" + "math/big" + "reflect" + "time" ) // func PluginCreateConsensusEngine(pl *plugins.PluginLoader, stack *node.Node, chainConfig *params.ChainConfig, config *ethash.Config, notify []string, noverify bool, db ethdb.Database) consensus.Engine { @@ -37,71 +38,70 @@ import ( // return PluginCreateConsensusEngine(plugins.DefaultPluginLoader, stack, chainConfig, config, notify, noverify, db) // } -// TODO (philip): Translate to core.Tracer instead of vm.Tracer, with appropriate type adjustments (let me know if this one is too hard) -type metaTracer struct{ - tracers []vm.Tracer +// TODO (philip): Translate to core.Tracer instead of core.Tracer, with appropriate type adjustments (let me know if this one is too hard) +type metaTracer struct { + tracers []core.Tracer } func (mt *metaTracer) CaptureStart(env *vm.EVM, from common.Address, to common.Address, create bool, input []byte, gas uint64, value *big.Int) { - for _, tracer := range mt.tracers { - tracer.CaptureStart(env, from, to, create, input, gas, value) - } + for _, tracer := range mt.tracers { + tracer.CaptureStart(env, from, to, create, input, gas, value) + } } func (mt *metaTracer) CaptureState(env *vm.EVM, pc uint64, op vm.OpCode, gas, cost uint64, scope *vm.ScopeContext, rData []byte, depth int, err error) { - for _, tracer := range mt.tracers { - tracer.CaptureState(env, pc, op, gas, cost, scope, rData, depth, err) - } + for _, tracer := range mt.tracers { + tracer.CaptureState(env, pc, op, gas, cost, scope, rData, depth, err) + } } func (mt *metaTracer) CaptureFault(env *vm.EVM, pc uint64, op vm.OpCode, gas, cost uint64, scope *vm.ScopeContext, depth int, err error) { - for _, tracer := range mt.tracers { - tracer.CaptureFault(env, pc, op, gas, cost, scope, depth, err) - } + for _, tracer := range mt.tracers { + tracer.CaptureFault(env, pc, op, gas, cost, scope, depth, err) + } } func (mt *metaTracer) CaptureEnd(output []byte, gasUsed uint64, t time.Duration, err error) { - for _, tracer := range mt.tracers { - tracer.CaptureEnd(output, gasUsed, t, err) - } + for _, tracer := range mt.tracers { + tracer.CaptureEnd(output, gasUsed, t, err) + } } func PluginUpdateBlockchainVMConfig(pl *plugins.PluginLoader, cfg *vm.Config) { - tracerList := plugins.Lookup("LiveTracer", func(item interface{}) bool { - _, ok := item.(*vm.Tracer) - log.Info("Item is LiveTracer", "ok", ok, "type", reflect.TypeOf(item)) - return ok - }) - if len(tracerList) > 0 { - mt := &metaTracer{tracers: []vm.Tracer{}} - for _, tracer := range(tracerList) { - if v, ok := tracer.(*vm.Tracer); ok { - log.Info("LiveTracer registered") - mt.tracers = append(mt.tracers, *v) - } else { - log.Info("Item is not tracer") - } - } - cfg.Debug = true - cfg.Tracer = mt - } else { - log.Warn("Module is not tracer") - } + tracerList := plugins.Lookup("LiveTracer", func(item interface{}) bool { + _, ok := item.(*core.Tracer) + log.Info("Item is LiveTracer", "ok", ok, "type", reflect.TypeOf(item)) + return ok + }) + if len(tracerList) > 0 { + mt := &metaTracer{tracers: []core.Tracer{}} + for _, tracer := range tracerList { + if v, ok := tracer.(*core.Tracer); ok { + log.Info("LiveTracer registered") + mt.tracers = append(mt.tracers, *v) + } else { + log.Info("Item is not tracer") + } + } + cfg.Debug = true + cfg.Tracer = mt + } else { + log.Warn("Module is not tracer") + } - fnList := plugins.Lookup("UpdateBlockchainVMConfig", func(item interface{}) bool { - _, ok := item.(func(*vm.Config)) - return ok - }) - for _, fni := range fnList { - if fn, ok := fni.(func(*vm.Config)); ok { - fn(cfg) - return - } - } + fnList := plugins.Lookup("UpdateBlockchainVMConfig", func(item interface{}) bool { + _, ok := item.(func(*vm.Config)) + return ok + }) + for _, fni := range fnList { + if fn, ok := fni.(func(*vm.Config)); ok { + fn(cfg) + return + } + } } - func pluginUpdateBlockchainVMConfig(cfg *vm.Config) { - if plugins.DefaultPluginLoader == nil { + if plugins.DefaultPluginLoader == nil { log.Warn("Attempting CreateConsensusEngine, but default PluginLoader has not been initialized") - return - } - PluginUpdateBlockchainVMConfig(plugins.DefaultPluginLoader, cfg) + return + } + PluginUpdateBlockchainVMConfig(plugins.DefaultPluginLoader, cfg) }