Commit Graph
21 Commits
Author SHA1 Message Date
Austin Roberts f7ad35eae9 Add genesis block hook 2023-10-02 13:20:54 -05:00
telackey 1d8f2a28e8 Add --pluginsdir flag. (#1)
Add a new flag, `--pluginsdir`, for setting the directory where plugins are stored.  The default remains `$datadir/plugins`.

Co-authored-by: Thomas E Lackey <telackey@bozemanpass.com>
Reviewed-on: cerc-io/plugeth#1
2023-07-19 14:01:46 +08:00
roysc a9c2d243c5 clean up/copyedit 2023-06-09 23:07:13 +08:00
philip-morlier c0530b8313 Updated plugin loader, mod, and sum to reflect changes made in utils v0.0.21. 2022-12-08 11:40:22 -08:00
philip-morlier 81a8106bc6 Merge Geth v1.10.21 as well as update to Plugeth-Utils v0.0.18 2022-07-27 10:38:42 -07:00
Austin Roberts d3268003ac Get plugin details if hook does not match signature 2022-03-14 10:52:22 -05:00
philip-morlier 5b9e5f56e2 Modifications to wrappers and loader forenabling node.attach in utils/core/interfaces 2021-10-10 13:08:52 -07:00
Austin Roberts f7307d527d Updates to support blockupdates plugin
This makes several updates to support the blockupdates plugin.

I had to update several hooks that were using the wrong types, and
provide a way to get event.Feed objects into plugins without importing
event.Feed (which I did by having the plugin loader make them
available).
2021-09-16 16:04:36 -05:00
Austin Roberts 7b33b6e821 Add chainconfig to backend 2021-09-14 17:44:25 -05:00
philip-morlier 411a43e378 updated cmd/geth/plugin_hooks.go and plugins/plugin_loader.go to reflect changes re core.logger, updated go.mod and go.sum to address dependency issues 2021-09-09 12:51:13 -07:00
Austin Roberts 820a0af71c Pass plugin loader by interface 2021-08-31 15:41:27 -05:00
Austin Roberts 328756dc00 Fix initialize function of plugin loader, update blockupdates plugin 2021-07-14 13:06:10 -05:00
Austin Roberts c45774b74b Give plugins a handle to their plugin loader
This potentially allows plugins to invoke other plugins.
2021-07-12 14:55:45 -05:00
Austin Roberts 6e4c285ed1 Add state update hooks 2021-07-12 14:45:42 -05:00
Austin Roberts 4dd3527541 Fix tracer loading 2021-06-25 23:27:09 -05:00
Austin Roberts 03808de29a Refactor plugin system
When the plugin loader itself had to know the types in the arguments
and return values of the plugin functions, it was very difficult to
avoid import loops, given that the types were often defined in the
same package that needed to invoke the plugins.

Under this model, the plugin loader has much less knowledge of the
plugins themselves, and within each package we define functions to
interact with the plugins.
2021-06-25 22:46:17 -05:00
Austin Roberts 091a2f4884 Checkpoint
Things are currently broken because of import cycles. I'm going to
need to revisit how the plugin loader works, but I wanted to make
a checkpoint before I start breaking things again.
2021-06-25 17:08:39 -05:00
Austin Roberts ad8719a64a Get tracers working, returning results 2021-06-25 14:57:24 -05:00
Austin Roberts 97cf240fe0 Add tracer hooks for debug_traceCall, etc. 2021-06-25 13:55:31 -05:00
Austin Roberts 5c55657c54 Plugin Interface Refactor
This makes two main changes to the plugin system:

* Instead of assuming that each plugin will have exactly one type,
  inspect each plugin to see which interfaces it provides, and
  register it as a provider of each provided interface. This can
  allow a single .so file to provide multiple interfaces, which
  will likely be necessary for aggregating certain types of info.
* Rather than using dependency injection and having to propagate
  the plugin system all throughout Geth, have a default plugin
  loader so we need only import the module and make calls to it.
  If the plan were to integrate this into mainline Geth, I would
  say we use dependency injection and take the time to pass the
  plugin loader throughout the codebase, but as I expect this to
  be a fork that has to pull upstream changes, this approach
  should make merge conflicts much less common.
2021-06-25 10:57:56 -05:00
Austin Roberts ff46e3c7f8 Add plugin folder 2021-06-25 10:23:49 -05:00