plugins: add SetHooks struct

This commit is contained in:
Marius van der Wijden 2024-11-28 09:50:57 +01:00
parent 176eafd5a2
commit b93908ea09
1 changed files with 10 additions and 1 deletions

View File

@ -19,6 +19,7 @@ package plugins
import ( import (
"github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/state/snapshot" "github.com/ethereum/go-ethereum/core/state/snapshot"
"github.com/ethereum/go-ethereum/core/tracing"
"github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/core/types"
"github.com/holiman/uint256" "github.com/holiman/uint256"
) )
@ -28,7 +29,7 @@ import (
// without modifying the chain logic. // without modifying the chain logic.
type Plugin interface { type Plugin interface {
// Setup is called on startup when the Plugin is initialized. // Setup is called on startup when the Plugin is initialized.
Setup(chain Chain) Setup(chain Chain, hooks SetHooks)
// Close is called when the geth node is torn down. // Close is called when the geth node is torn down.
Close() Close()
// NewHead is called when a new head is set. // NewHead is called when a new head is set.
@ -76,3 +77,11 @@ type Account interface {
// StorageIterator creates an iterator over the storage slots of an account. // StorageIterator creates an iterator over the storage slots of an account.
StorageIterator(seek common.Hash) snapshot.StorageIterator StorageIterator(seek common.Hash) snapshot.StorageIterator
} }
// SetHooks allows the plugin to install hooks dynamically on the node.
type SetHooks struct {
// SetTracingHooks allows a plugin to set tracing hooks.
SetTracingHooks func(hooks *tracing.Hooks)
// In the future we could add hooks here for plugins to hook deeper into
// block production, adding hooks into the txpool, etc.
}