Fork of plugeth with any needed changes for statediff plugin
Go to file
philip-morlier e9630a85f4 This is a functional build a dev tagged release of foundation plugeth
This brings the project up to geth v1.12.0

The plugeth test plugin has been added but is failing on the live tracer hooks as of this commit
2023-07-13 13:10:19 -07:00
.circleci Pin specific version of go build container 2022-12-30 11:36:01 -06:00
.github Initial commit of merge geth v1.11.5 2023-04-21 13:24:40 -07:00
accounts accounts/abi: add ErrorById (#27277) 2023-05-22 12:45:55 -04:00
beacon beacon/types: auto-generate SyncCommittee marshaling methods (#27296) 2023-05-19 17:05:50 +03:00
build crypto/kzg4844: pull in the C and Go libs for KZG cryptography (#27155) 2023-05-10 14:54:14 +03:00
cmd automated merge 2023-07-11 16:01:17 -07:00
common beacon/types: add beacon chain data types (#27292) 2023-05-17 17:39:33 +03:00
consensus eth,consensus: replace noarg fmt.Errorf with errors.New (#27330) 2023-05-25 02:57:34 -04:00
console all: remove ethash pow, only retain shims needed for consensus and tests (#27178) 2023-05-03 12:58:39 +03:00
core incremental commit merge not complete 2023-07-12 18:15:05 -07:00
crypto crypto: replace noarg fmt.Errorf with errors.New (#27333) 2023-05-24 14:45:51 +02:00
docs docs/postmortems: remove wrong parentheses (#26066) 2022-11-01 14:50:03 +01:00
eth incremental commit merge not complete 2023-07-12 18:15:05 -07:00
ethclient ethclient,event: replace noarg fmt.Errorf with errors.New (#27334) 2023-05-24 12:39:49 +02:00
ethdb ethdb/pebble: fix NewBatchWithSize to set db (#27350) 2023-05-25 10:31:05 +03:00
ethstats ethstats: set readlimit on ethstats server connection (#26207) 2022-11-17 15:33:03 +01:00
event ethclient,event: replace noarg fmt.Errorf with errors.New (#27334) 2023-05-24 12:39:49 +02:00
graphql graphql: upgrade UI to v2 (#27294) 2023-05-22 08:15:05 -04:00
internal internal,tests: replace noarg fmt.Errorf with errors.New (#27335) 2023-05-25 02:54:28 -04:00
les les, signer, light: replace noarg fmt.Errorf with errors.New (#27336) 2023-05-25 02:51:13 -04:00
light les, signer, light: replace noarg fmt.Errorf with errors.New (#27336) 2023-05-25 02:51:13 -04:00
log log: report error when ctx key is non-string (#27226) 2023-05-08 05:38:50 -04:00
metrics metrics: use sync.map in registry (#27159) 2023-05-11 05:39:13 -04:00
miner all: new empty trie with types.EmptyRootHash instead of null (#27230) 2023-05-11 10:19:42 +03:00
node node: fix typos in comments (#27236) 2023-05-10 10:42:55 +02:00
p2p p2p: initialize maps with known size (#27229) 2023-05-10 10:52:26 +02:00
params params: go-ethereum v1.12.0 stable 2023-05-25 12:01:00 +02:00
plugins This is a functional build a dev tagged release of foundation plugeth 2023-07-13 13:10:19 -07:00
rlp rlp/rlpgen: print want/expect output string if mismatch (#26932) 2023-03-24 14:17:39 +01:00
rpc Merge remote-tracking branch 'origin/feature/plugeth-test-plugin' into merge/geth-v1.12.0 2023-07-12 13:47:51 -07:00
signer les, signer, light: replace noarg fmt.Errorf with errors.New (#27336) 2023-05-25 02:51:13 -04:00
swarm swarm: fix outdated link (#26501) 2023-01-16 11:00:55 +01:00
tests internal,tests: replace noarg fmt.Errorf with errors.New (#27335) 2023-05-25 02:54:28 -04:00
trie This is a functional build a dev tagged release of foundation plugeth 2023-07-13 13:10:19 -07:00
.dockerignore cmd, internal/build, docker: advertise commit date in unstable build versions (#19522) 2019-05-08 16:44:28 +03:00
.gitattributes .gitattributes: enable solidity highlighting on github (#16425) 2018-04-03 15:21:24 +02:00
.gitignore cmd/geth: enable log rotation (#26843) 2023-04-03 05:05:36 -04:00
.gitmodules tests: external evm benchmarks (#24050) 2022-01-28 08:47:19 +01:00
.golangci.yml build: upgrade to go 1.19 (#25726) 2022-09-10 13:25:40 +02:00
.mailmap AUTHORS: remove one more duplicate entry (#24950) 2022-05-24 21:04:21 +02:00
.travis.yml .travis.yml: reenable PPA build on tag push (#26873) 2023-03-13 14:10:19 +01:00
appveyor.yml ci: disable coverage reporting in appveyor and travis 2023-02-17 15:34:30 +01:00
AUTHORS AUTHORS: remove one more duplicate entry (#24950) 2022-05-24 21:04:21 +02:00
circle.yml circleci: enable docker based hive testing 2016-07-15 16:07:34 +03:00
COPYING COYPING: restore the full text text of GPL (#21568) 2020-09-15 08:27:17 +02:00
COPYING.LESSER all: update license information 2015-07-07 14:12:44 +02:00
Dockerfile travis, build: update Go to 1.20.1 (#26653) 2023-02-16 09:00:45 +02:00
Dockerfile.alltools travis, build: update Go to 1.20.1 (#26653) 2023-02-16 09:00:45 +02:00
go.mod This is a functional build a dev tagged release of foundation plugeth 2023-07-13 13:10:19 -07:00
go.sum This is a functional build a dev tagged release of foundation plugeth 2023-07-13 13:10:19 -07:00
interfaces.go all: fix some typos (#25551) 2022-08-19 09:00:21 +03:00
Makefile accounts, build, mobile: remove Andriod and iOS support 2023-02-03 12:29:07 +02:00
oss-fuzz.sh core/vm: use golang native big.Int (#26834) 2023-03-08 13:12:53 -05:00
README.md A resurrected and sligtly altered version of the project README 2023-04-07 16:47:09 -07:00
SECURITY.md Issue template corrections 2022-03-30 15:06:50 -07:00
slack-post.sh Push binaries to S3 2022-01-11 14:40:43 -06:00

PluGeth

PluGeth is a fork of the Go Ethereum Client (Geth) that implements a plugin architecture, allowing developers to extend Geth's capabilities in a number of different ways using plugins, rather than having to create additional, new forks of Geth.

Documentation can be found here.

Design Goals

The upstream Geth client exists primarily to serve as a client for the Ethereum mainnet, though it also supports a number of popular testnets. Supporting the Ethereum mainnet is a big enough challenge in its own right that the Geth team generally avoids changes to support other networks, or to provide features only a small handful of users would be interested in.

The result is that many projects have forked Geth. Some implement their own consensus protocols or alter the behavior of the EVM to support other networks. Others are designed to extract information from the Ethereum mainnet in ways the standard Geth client does not support.

PluGeth aims to provide a single Geth fork that developers can choose to extend rather than forking the Geth project. Out of the box, PluGeth behaves exactly like upstream Geth, but by installing plugins written in Golang, developers can extend its functionality in a wide variety of way.

Contact Us

If you're trying to do something that isn't supported by the current plugin system, Reach out to us on Discord and we'll help you figure out how to make it work.

System Requirements

System requirements will vary depending on which network you are connecting to. On the Ethereum mainnet, you should have at least 8 GB RAM, 2 CPUs, and 350 GB of SSD disks.

PluGeth relies on Golang's Plugin implementation, which is only supported on Linux, FreeBSD, and macOS. Windows support is unlikely to be added in the foreseeable future.

Licensing Considerations

The Geth codebase is licensed under the LGPL. By linking with Geth, you have an obligation to enable anyone you provide your plugin binaries to run against their own modified versions of Geth. Because of how Golang plugins work running against updated versions of Geth may require recompiling the plugin.

If you plan to license your plugin under the LGPL or a more permissive license, you should be able to meet these requirements. If you plan to use your plugin privately without distributing it, you should be fine. If you plan to release your plugin without making the source available, you may find yourself in violation of Geth's license unless you can provide a way to relink it against more recent versions of Geth.