From 27da712fd044c2a1164e648b3cbfc2c60a345c24 Mon Sep 17 00:00:00 2001 From: philip-morlier Date: Fri, 24 Sep 2021 14:01:16 -0700 Subject: [PATCH] Plugin hooks initial work --- documentation/_build/doctrees/anatomy.doctree | Bin 3164 -> 12492 bytes documentation/_build/doctrees/api.doctree | Bin 32380 -> 51524 bytes .../_build/doctrees/environment.pickle | Bin 96974 -> 134561 bytes documentation/_build/doctrees/hooks.doctree | Bin 3116 -> 20423 bytes documentation/_build/doctrees/index.doctree | Bin 7150 -> 7130 bytes .../_build/html/_sources/anatomy.rst.txt | 38 +++++++- .../_build/html/_sources/api.rst.txt | 72 +++++++++++++- .../_build/html/_sources/hooks.rst.txt | 59 +++++++++++- .../_build/html/_sources/index.rst.txt | 3 +- documentation/_build/html/anatomy.html | 50 +++++++++- documentation/_build/html/api.html | 91 +++++++++++++++++- documentation/_build/html/build.html | 3 +- documentation/_build/html/contact.html | 3 +- .../_build/html/core_restricted.html | 7 +- documentation/_build/html/genindex.html | 3 +- documentation/_build/html/hooks.html | 59 +++++++++--- documentation/_build/html/index.html | 6 +- documentation/_build/html/plugeth.html | 3 +- documentation/_build/html/plugin_hooks.html | 14 +-- documentation/_build/html/plugin_loader.html | 7 +- documentation/_build/html/plugins.html | 3 +- documentation/_build/html/project.html | 3 +- documentation/_build/html/search.html | 3 +- documentation/_build/html/searchindex.js | 2 +- documentation/_build/html/system_req.html | 3 +- documentation/_build/html/types.html | 7 +- documentation/_build/html/utils.html | 3 +- documentation/api.rst | 72 +++++++++++++- documentation/hooks.rst | 59 +++++++++++- documentation/index.rst | 3 +- 30 files changed, 498 insertions(+), 78 deletions(-) diff --git a/documentation/_build/doctrees/anatomy.doctree b/documentation/_build/doctrees/anatomy.doctree index 104446d39eb904f35105a784bd517ac6c814ade8..51bb4a38e9528b8136ef708001e374dd8725cfc6 100644 GIT binary patch literal 12492 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 Qg(H`lr2VLNfZqiF4<@NutN;K2 delta 178 zcmX?;ct?V@fpuyi&qmfM%#)8v)H7w|ZT6D1VPeXdvAJ7%F|$ENUWRN&ZbnvV4`*It zZfZ$oL2B`o+9?_tc^w(Kex(^gAhv9VYDN|iCuG=8ey{jZCS#d5V{z-0pea3k1&Kw) zsqwj~#l?x~K%KEuCU4XipIj=hJNc=;D^teb$r}X}Sp72;GJZ{dsH{5KS4%*GtvJ85 dC^>aXhEfkpPG(-}6mQ1T47rRSlb0H(0|2i$L}LH| diff --git a/documentation/_build/doctrees/api.doctree b/documentation/_build/doctrees/api.doctree index e629ad5a1619d2ab246d69dac70ee096cc8ebf67..9ff3d2e4ee7a859f42a2c8eaa27f3925bb49e39c 100644 GIT binary patch literal 51524 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 diff --git a/documentation/_build/doctrees/environment.pickle b/documentation/_build/doctrees/environment.pickle index 707ce2bcbeaadf7a15cf504fd3b6b0cd049f495e..3817f711dc057583ebf4df7f60e0730b7d0e6d29 100644 GIT binary patch literal 134561 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 K`0E=JBmWn+pMn|y literal 96974 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�wgT)c6kz3Rw+6lS= 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

Z;a%&p&M#3(p4c>FdVI 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 Y(&01dq(u&5+N8W%l7gaw1>DE|UmDqI;{X5v delta 509 zcmaKoJxc>Y5Qe$SogpCjfoKRuFG^4gqk;$$Lx_bSfjb3T(KC1YUQBj_mjf*%iU=0l z?Fx2US&1O2{0068D?2;EP6WZd#IMR?*xA|HXXbq$E|r_Oex#qLI`8xsrNO%V8a%R} zarf()I(4XEvGCX+)NutD6UX9Ej6-J$$MZ{p?|YOObla#^f*p?-pmf(4h_1_?iJx9= zEd+&COtJRmRD6NZ0Rx3#%SN{Z^JP8GpA;>YLkc4pE=KvQl9)yQ>+^q8f022KT;&Db zXjtDES;+-kZfgj7*9D7s&Wy0pC(|z5sZ!$ArIg8*WE=f*)wqm=e2zM_MC__7nBJBb zUch3b+J=2&L?JU@Mg@|*uxo8T9RLs znV3^NC1Z1E#+J^Et(_U$ycsgKcV_GWD%_QEsWd}1V^)S*hI)pEw|s_J#-Y-r#0>G; zDH<7)Kn2o3yl?V+{w_w=$%XmU0P_XAbADb)VsZ%%!?U=6YLU&?2b%v2i~03}w>X4= zYJomA+ngwLjfpX2vxVq>W+^?OV3szBPy-RlAVL;INKF=$6wv`m`+=qWz``A+8Ir&N w0_(`o1}o2K$&vzT5ZN3kd4Z8-2ar9vkw=M5ENd%-DKj}!+L&?k!{P0!4WpDZh&5d*YHBjaVp>x{P< z?=wE8!fXsmO-n6G%}Y+jW#boQ8`Xd|-oa{PaX8R|EKWuS2AF5qo%8cb5|c}C7@Wle zREuo30nqF}Sj|?M+%LF|Lj4FFi5TObpEuI1lqAZYVKd?$au&R#I3`vkU$bbxOu a=95-u*$$MS+{hy{IaJ!1aqHwx=|BMX1*?<* diff --git a/documentation/_build/html/_sources/anatomy.rst.txt b/documentation/_build/html/_sources/anatomy.rst.txt index 4a94f1d..d583eaa 100644 --- a/documentation/_build/html/_sources/anatomy.rst.txt +++ b/documentation/_build/html/_sources/anatomy.rst.txt @@ -4,4 +4,40 @@ Plugin Anatomy ============== -.. todo:: fill in disections of archetypal plugins \ No newline at end of file +.. todo:: fill in disections of archetypal plugins + +.. code-block:: go + + package main + +import ( + "github.com/openrelayxyz/plugeth-utils/core" + "gopkg.in/urfave/cli.v1" +) + +var ( + log core.Logger +) + +type myservice struct{} + +func (*myservice) Hello() string { + return "Hello world" +} + +func Initialize(ctx *cli.Context, loader core.PluginLoader, logger core.Logger) { + log = logger + log.Info("Initialized hello") +} + +func GetAPIs(node core.Node, backend core.Backend) []core.API { + defer log.Info("APIs Initialized") + return []core.API{ + { + Namespace: "mynamespace", + Version: "1.0", + Service: &myservice{}, + Public: true, + }, + } +}`` diff --git a/documentation/_build/html/_sources/api.rst.txt b/documentation/_build/html/_sources/api.rst.txt index ef3ee53..4f22e54 100644 --- a/documentation/_build/html/_sources/api.rst.txt +++ b/documentation/_build/html/_sources/api.rst.txt @@ -46,7 +46,7 @@ Tracers .. code-block:: go - ``// CaptureStart is called at the start of each transaction + // CaptureStart is called at the start of each transaction CaptureStart(env core.EVM, from core.Address, to core.Address, create bool, input []byte, gas uint64, value *big.Int) {} // CaptureState is called for each opcode CaptureState(env core.EVM, pc uint64, op core.OpCode, gas, cost uint64, scope *vm.ScopeContext, rData []byte, depth int, err error) {} @@ -55,12 +55,78 @@ Tracers // CaptureEnd is called at the end of each transaction CaptureEnd(output []byte, gasUsed uint64, t time.Duration, err error) {} // GetResult should return a JSON serializable result object to respond to the trace call - GetResult() (interface{}, error) {}`` + GetResult() (interface{}, error) {} .. warning:: Modifying the values passed into tracer functions can alter the - results of the EVM execution in unpredictable ways. Additonally, some objects may be reused acress calls, so data you wish to capture should be copied rather than retianed by reference. + results of the EVM execution in unpredictable ways. Additopackage main + +import ( + "github.com/openrelayxyz/plugeth-utils/core" + "gopkg.in/urfave/cli.v1" +) + +var ( + log core.Logger +) + +type myservice struct{} + +func (*myservice) Hello() string { + return "Hello world" +} + +func Initialize(ctx *cli.Context, loader core.PluginLoader, logger core.Logger) { + log = logger + log.Info("Initialized hello") +} + +func GetAPIs(node core.Node, backend core.Backend) []core.API { + defer log.Info("APIs Initialized") + return []core.API{ + { + Namespace: "mynamespace", + Version: "1.0", + Service: &myservice{}, + Public: true, + }, + } +} +package main + +import ( + "github.com/openrelayxyz/plugeth-utils/core" + "gopkg.in/urfave/cli.v1" +) + +var ( + log core.Logger +) + +type myservice struct{} + +func (*myservice) Hello() string { + return "Hello world" +} + +func Initialize(ctx *cli.Context, loader core.PluginLoader, logger core.Logger) { + log = logger + log.Info("Initialized hello") +} + +func GetAPIs(node core.Node, backend core.Backend) []core.API { + defer log.Info("APIs Initialized") + return []core.API{ + { + Namespace: "mynamespace", + Version: "1.0", + Service: &myservice{}, + Public: true, + }, + } +} +nally, some objects may be reused acress calls, so data you wish to capture should be copied rather than retianed by reference. LiveTracer ---------- diff --git a/documentation/_build/html/_sources/hooks.rst.txt b/documentation/_build/html/_sources/hooks.rst.txt index b7940ee..bbfb876 100644 --- a/documentation/_build/html/_sources/hooks.rst.txt +++ b/documentation/_build/html/_sources/hooks.rst.txt @@ -4,4 +4,61 @@ Plugin Hooks ============ -.. todo:: discussion of plugin hooks +The key to understanding a plugin is understanding its corresponding hook. Broadly, plugin hooks can be thought of as functions which deliver a function signiture to the **plugin loader**. The signature matches that of the function(s) called by the plugin and describes the data that is being captured and how the plugin will deliver said data upon invocation. + +The public plugin hook function should follow the naming convention ``Plugin$HookName``. The first argument should be a `` core.PluginLoader``, followed by any arguments required by the functions to be provided by any plugins implementing this hook. + +**Public and Private Hook Functions** + +Each hook provides both a Public and private version. The private plugin hook function should bear the same name as the public plugin hook function, but with a lower case first letter. The signature should match the public plugin hook function, except that the first argument referencing the PluginLoader should be removed. It should invoke the public plugin hook function on plugins.DefaultPluginLoader. It should always verify that the DefaultPluginLoader is non-nil, log warning and return if the DefaultPluginLoader has not been initialized. + +**Invocation** + +the private plugin hook function should be invoked, with the appropriate arguments, in a single line within the Geth codebase inorder to minimize unexpected conflicts merging upstream Geth into plugeth. + +Selected Hooks +-------------- + + +`StateUpdate`_ +************ + +`Invocation`_ + +The state update plugin provides a snapshot of the state subsystem in the form of a a stateUpdate object. The stateUpdate object contains all information transformed by a transaction but not the transaction itself. + +Invoked for each new block, StateUpdate provides the changes to the blockchain state. root corresponds to the state root of the new block. parentRoot corresponds to the state root of the parent block. destructs serves as a set of accounts that self-destructed in this block. accounts maps the hash of each account address to the SlimRLP encoding of the account data. storage maps the hash of each account to a map of that account's stored data. + +.. warning:: StateUpdate is only called if Geth is running with + ``-snapshots=true``. This is the default behavior for Geth, but if you are explicitly running with ``--snapshot=false`` this function will not be invoked. + + +`AppendAncient`_ +************* + +Invoked when the freezer moves a block from LevelDB to the ancients database. ``number`` is the number of the block. ``hash`` is the 32 byte hash of the block as a raw ``[]byte``. ``header``, ``body``, and ``receipts`` are the RLP encoded versions of their respective block elements. ``td`` is the byte encoded total difficulty of the block. + +`NewHead`_ +********** + +Invoked when a new block becomes the canonical latest block. Note that if several blocks are processed in a group (such as during a reorg) this may not be called for each block. You should track the prior latest head if you need to process intermediate blocks. + +`GetRPCCalls`_ +************ + +Invoked when the RPC handler registers a method call. returns the call ``id``, method ``name``, and any ``params`` that may have been passed in. + + + +**I am struggling all of assudden with if this is really this best course of action. Giving all of this reference, seems to beg the -utils vs plugeth conversation and I am not sure that is a smart thing to get into.** + + + + + + +.. _StateUpdate: https://github.com/openrelayxyz/plugeth/blob/develop/core/state/plugin_hooks.go +.. _Invocation: https://github.com/openrelayxyz/plugeth/blob/develop/core/state/statedb.go#L955 +.. _AppendAncient: https://github.com/openrelayxyz/plugeth/blob/develop/core/rawdb/plugin_hooks.go +.. _GetRPCCalls: https://github.com/openrelayxyz/plugeth/blob/develop/rpc/plugin_hooks.go +.. _NewHead: https://github.com/openrelayxyz/plugeth/blob/develop/core/plugin_hooks.go#L108 diff --git a/documentation/_build/html/_sources/index.rst.txt b/documentation/_build/html/_sources/index.rst.txt index ab2fd8a..ac126ce 100644 --- a/documentation/_build/html/_sources/index.rst.txt +++ b/documentation/_build/html/_sources/index.rst.txt @@ -25,7 +25,6 @@ Table of Contents project types - hooks anatomy @@ -41,7 +40,7 @@ Table of Contents system_req plugin_loader - plugin_hooks + hooks core_restricted api diff --git a/documentation/_build/html/anatomy.html b/documentation/_build/html/anatomy.html index 371a82a..74dbaec 100644 --- a/documentation/_build/html/anatomy.html +++ b/documentation/_build/html/anatomy.html @@ -16,7 +16,7 @@ - + @@ -38,7 +38,6 @@

Tutorials

@@ -49,7 +48,7 @@ @@ -88,13 +87,56 @@

Todo

fill in disections of archetypal plugins

+
package main
+
+
+
+
import (

“github.com/openrelayxyz/plugeth-utils/core” +“gopkg.in/urfave/cli.v1”

+
+
+

)

+
+
var (

log core.Logger

+
+
+

)

+

type myservice struct{}

+
+
func (*myservice) Hello() string {

return “Hello world”

+
+
+

}

+
+
func Initialize(ctx *cli.Context, loader core.PluginLoader, logger core.Logger) {

log = logger +log.Info(“Initialized hello”)

+
+
+

}

+
+
func GetAPIs(node core.Node, backend core.Backend) []core.API {

defer log.Info(“APIs Initialized”) +return []core.API{

+
+
+
{

Namespace: “mynamespace”, +Version: “1.0”, +Service: &myservice{}, +Public: true,

+
+
+

},

+
+

}

+
+
+

}``