* reduce use of global quorum config
The use of the org.hyperledger.besu.config.GoQuorumOptions static
variable is ugly. In particular does changing its value during tests
cause flaky tests. To ameliorate the issue this commit
- removes unused code that did rely on GoQuorumOptions
- removes access to GoQuorumOptions deep in the call stack by looking
it up in the transaction validator instead
- change the TransactionDecoder to explicitly take the
goQuorumCompatbility flag as an argument where access to the
transaction validator is not easy
- rewriting all tests that did change the GoQuorumOptions by mocking
the option change instead.
Signed-off-by: Taccat Isid <taccatisid@protonmail.com>
* protect access to GoQuorum flag by getter and write once setter
Signed-off-by: Taccat Isid <taccatisid@protonmail.com>
* deduce goQuorum flag from privacyOptions
Signed-off-by: Taccat Isid <taccatisid@protonmail.com>
* remove unnecessary mocks from TransactionPoolTest
Signed-off-by: Taccat Isid <taccatisid@protonmail.com>
Co-authored-by: Sally MacFarlane <sally.macfarlane@consensys.net>
Broad reaching optimizations to speed up EVM calculations
* Generally speaking, use int and long where it is more appropriate than UInt256 (memory indexes mostly)
* Move the internal stack to Bytes from UInt256
* Re-work the flow of many operations to account for the above
Signed-off-by: Danno Ferrin <danno.ferrin@gmail.com>
Move EVM to a standalone module
Move the EVM classes to a standalone module. This is mostly moves but
some API re-resign to peel out some features not essential to the EVM,
such as privacy support and ties to the data storage subsystem.
Signed-off-by: Danno Ferrin <danno.ferrin@gmail.com>
* Create new datatypes module
Create a new `datatypes` module to hold datatypes that are broadly used.
This will aid modularization by making sure the base types in the module
minimize the amount of unrelated support classes needed.
Signed-off-by: Danno Ferrin <danno.ferrin@gmail.com>
* Add Address, Hash, and Wei to datatypes
Move the Address, Hash, and Wei to datatypes in as they are needed for
EVM modularization.
Signed-off-by: Danno Ferrin <danno.ferrin@gmail.com>
Update spotless to 5.14.2 and java-google-format to 1.10.0.
Both of these are needed to support Java 16 and Gradle 7.x.
Signed-off-by: Danno Ferrin <danno.ferrin@gmail.com>
Update ErrorProne to 2.7.1 (needed for Gradle 7.x upgrade).
All new rules are fairly benign and easy to fix.
Signed-off-by: Danno Ferrin <danno.ferrin@gmail.com>
* allow transaction pool to accept transactions with maxFeePerGas less than base fee
* make 1559 fields return short hex format instead of 8 bytes zero padded
* update reference tests to latest
Signed-off-by: garyschulte <garyschulte@gmail.com>
* address assumption that if 1559 is enabled there is a london fork block config
fixes#2192
Signed-off-by: garyschulte <garyschulte@gmail.com>
* omit null chainId from transaction json serialization, and fix merge regression
Signed-off-by: garyschulte <garyschulte@gmail.com>
* update json-rpc responses for 1559, use current feeCap and gasPremium field names
Signed-off-by: garyschulte <garyschulte@gmail.com>
* add pr number to changelog
Signed-off-by: garyschulte <garyschulte@gmail.com>
* fix transaction decoder
Signed-off-by: Gary Schulte <garyschulte@gmail.com>
* rebase and fix merge conflicts
Signed-off-by: garyschulte <garyschulte@gmail.com>
* remove null chainId from json-rpc test fixtures
Signed-off-by: garyschulte <garyschulte@gmail.com>
* the great 1559 rename
Signed-off-by: garyschulte <garyschulte@gmail.com>
* re-remove gasTarget
Signed-off-by: garyschulte <garyschulte@gmail.com>
* add serialization tests for 1559 transaction fields
Signed-off-by: garyschulte <garyschulte@gmail.com>
* add json property ordering annotations to Transaction*Result and spotless
Signed-off-by: garyschulte <garyschulte@gmail.com>
* rebase on master, update error message feedback from Karim
Signed-off-by: garyschulte <garyschulte@gmail.com>
* Permissioning: Add plugin extension point
Added plugin extension point to allow developers to write their
own implementation of `NodePermissioningProvider::isPermitted`
This will allow developers to implement their own interpretations of
things like on-chain permissioning.
Signed-off-by: Antony Denyer <git@antonydenyer.co.uk>
* refactor: rename NodePermissioningProvider::isPermitted
Interface will be used for other pemissioning needs
Signed-off-by: Antony Denyer <git@antonydenyer.co.uk>
* Permissioning: added hook for NodeMessagePermissioning
All message sent to a peer will call into isMessagePermitted
if providers have been registered through the plugin api
Signed-off-by: Antony Denyer <git@antonydenyer.co.uk>
* AcceptanceTests: test node nodePermissioningProvider
4 node cluster with permissioning blocking a direct between two nodes
and permissioning blocking transaction messages for a single node
Signed-off-by: Antony Denyer <git@antonydenyer.co.uk>
* fix: unit tests for NodePermissioningControllerFactory
Signed-off-by: Antony Denyer <git@antonydenyer.co.uk>
* fix: fat finger typo
Signed-off-by: Antony Denyer <git@antonydenyer.co.uk>
* fix: reduce likely hood of flakey test
Signed-off-by: Antony Denyer <git@antonydenyer.co.uk>
* fix: remove comment
Signed-off-by: Antony Denyer <git@antonydenyer.co.uk>
* fix: typos
Signed-off-by: Antony Denyer <git@antonydenyer.co.uk>
* fix: remove jitpack references
Signed-off-by: Antony Denyer <git@antonydenyer.co.uk>
* fix: tidy up EthPeerTest args
Signed-off-by: Antony Denyer <git@antonydenyer.co.uk>
* fix: update plugin hash check
Signed-off-by: Antony Denyer <git@antonydenyer.co.uk>
* fix: improve test reliability
Signed-off-by: Antony Denyer <git@antonydenyer.co.uk>
* refactor: move test-plugins out from besu/main into acceptance-tests
Signed-off-by: Antony Denyer <git@antonydenyer.co.uk>