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>
Rollback TransactionGasCalculator
Rollback the transactionGasCalculator changes. This was done in
preparation for the EVM modularization. Instead, de-structure the data
needed to calculate the gas instead of passing in the whole transaction.
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>
* allow onchain privacy group proxy calls under group lock
Prior to this commit, the only allowed transactions in locked onchain
privacy groups were those making the addParticipants call to *any*
contract--not just the proxy. This commit ensures that:
- while locked, only the group management proxy can be called
- while locked, all functions of the management proxy can be called
Corollary, this commit allows unlocking a group using unlock instead
of implicitely unlocking it via addParticipants. This fixes#2693.
Signed-off-by: Taccat Isid <taccatisid@protonmail.com>
* add acceptance test asserting that privacy groups can be unlocked
Signed-off-by: Taccat Isid <taccatisid@protonmail.com>
Co-authored-by: Sally MacFarlane <sally.macfarlane@consensys.net>
In preparation for the EVM library pull out the transaction related gas
calculations and move them into their own `TransactionGasCalculator.`
This has 4 calls right now, none of which occur inside the EVM:
* Intrinsic gas cost
* Code Deposit gas cost
* Max refund quotient
* Max Privacy Marker Transaction intrinsic gas cost.
Signed-off-by: Danno Ferrin <danno.ferrin@gmail.com>
EIP-1702 account versioning was a candidate for the Istanbul hard fork
but was removed prior to the first testnet. Other versioning techniques
have greater core dev mind share and one preparatory step landed in
London, EIP-3541, making EIP-1702 very unlikely to make it to Mainnet.
Signed-off-by: Danno Ferrin <danno.ferrin@gmail.com>
* Fixed bug where the EthGetTransactionCount would return a lower value for pending than latest when there are old transactions in the transaction pool.
Wrote a failing test to show the expected behaviour and ensured that the max of latest and pending is used.
Signed-off-by: Rob Dawson <rob.dawson@consensys.net>
Co-authored-by: Sally MacFarlane <sally.macfarlane@consensys.net>
* Less Spotless Gradle Warnings
Spotless and Gradle 7.x does not play nicely with using a fileTree as a
target and should be using plain strings. This should get rid of the
`Execution optimizations have been disabled`... warnings.
* Move Generated Reference Tests into the `build` dir
Generated reference test are currently generated into `src`, which is in
violation of the standard maven layouts. They should be in the `build`
directory as they are artifacts not maintained in source control.
Signed-off-by: Danno Ferrin <danno.ferrin@gmail.com>
* Refactor: PrivacyBlockProcessor to clarify intent
Signed-off-by: Antony Denyer <git@antonydenyer.co.uk>
* Wire up privacy genesis options into PrivacyParameters
Signed-off-by: Antony Denyer <git@antonydenyer.co.uk>
* Refactor private state genesis into it's own class
- pass through in privacyParameters
Signed-off-by: Antony Denyer <git@antonydenyer.co.uk>
* Refactor: inject PrivateStateGenesis into PrivacyPrecompiles
Signed-off-by: Antony Denyer <git@antonydenyer.co.uk>
* Private Genesis initialisation
- set code, balance and storage from private-genesis.json
Signed-off-by: Antony Denyer <git@antonydenyer.co.uk>
* Check on-chain with private genesis in acceptance tests
Signed-off-by: Antony Denyer <git@antonydenyer.co.uk>
* Remove unused EthGetCodeCall
Signed-off-by: Antony Denyer <git@antonydenyer.co.uk>
* Use a plugin based aproach for privacy genesis
- if the plugin is registered it will be used to apply private genesis
state
- if onchain flexible privacy groups is enable that will be applied
after
Signed-off-by: Antony Denyer <git@antonydenyer.co.uk>
* PrivateGenesisAcceptanceTest::createPrivacyGroup can be private
Signed-off-by: Antony Denyer <git@antonydenyer.co.uk>
* PrivateStateGenesis add debug logs
Signed-off-by: Antony Denyer <git@antonydenyer.co.uk>
* Warn if genesis account allocation is in reserved precompile range
Signed-off-by: Antony Denyer <git@antonydenyer.co.uk>
* Add sender into unsignedPrivateMarkerTransaction for plugin to make descision
Signed-off-by: Antony Denyer <git@antonydenyer.co.uk>
* Remove locking solution as may not be needed
- if this is required we should first evaluate actual use cases
and test scenarios
Signed-off-by: Antony Denyer <git@antonydenyer.co.uk>
* Rename PrivateStateGenesis -> PrivateStateGenesisAllocator
Signed-off-by: Antony Denyer <git@antonydenyer.co.uk>
* Tidy up naming for getPrivateStateGenesisAllocator
Signed-off-by: Antony Denyer <git@antonydenyer.co.uk>
* Privacy Plugin javadocs
Signed-off-by: Antony Denyer <git@antonydenyer.co.uk>
Upgrade Gradle to 7.1.1.
Add Gradle configs to allow Java 16 compilation.
Upgrade most dependencies to current versions.
Signed-off-by: Danno Ferrin <danno.ferrin@gmail.com>
* Add ability to expose getWork/submitWork JSON-RPC methods over the stratum port
Signed-off-by: Antoine Toulme <antoine@lunar-ocean.com>
* rename canHandle -> maybeHandle
Signed-off-by: Antoine Toulme <antoine@lunar-ocean.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>
* Add stratum metrics
Signed-off-by: Antoine Toulme <antoine@lunar-ocean.com>
* Use a more descriptive name for the target difficulty divisor
Use a double gauge so all difficulty values can be represented
Signed-off-by: Antoine Toulme <antoine@lunar-ocean.com>
* rename field
Signed-off-by: Antoine Toulme <antoine@lunar-ocean.com>
* change enr sequence field to be a long scalar instead of open ended byte array
* handles missing source addresses
Signed-off-by: Justin Florentine <justin.florentine@consensys.net>
* Add unstable CLI option for max ommers depth
Signed-off-by: Antoine Toulme <antoine@lunar-ocean.com>
* Move to a builder pattern for mining parameters
Signed-off-by: Antoine Toulme <antoine@lunar-ocean.com>
* Refactor: clarify intent of arg when testing permissioning plugin
Signed-off-by: Antony Denyer <git@antonydenyer.co.uk>
* Refactor: remove duplicate createPrivateMarkerTransaction
Signed-off-by: Antony Denyer <git@antonydenyer.co.uk>
* PrivateMarkerTransactionFactory: add option to delegate to plugin
if defined the plugin will be responsible for creating the pmt
Signed-off-by: Antony Denyer <git@antonydenyer.co.uk>
* Implement locking strategy for eea_sendRawTransaction
- this will lock per address being sent to prevent nonce
too low errors
Signed-off-by: Antony Denyer <git@antonydenyer.co.uk>
* Refactor plugin integration to use a more explicit poco
- the plugin will need to sign the transaction with the data it's given
- it will not need to query anything e.g nonce etc
Signed-off-by: Antony Denyer <git@antonydenyer.co.uk>
* refactor: update naming and tidy up based on comments
Signed-off-by: Antony Denyer <git@antonydenyer.co.uk>
* Isolate code for calculating gas limit when using privacy plugin
Signed-off-by: Antony Denyer <git@antonydenyer.co.uk>
Co-authored-by: Vijay Michalik <vijay.michalik@consensys.net>
* Add support for mining ommers, up to 8 blocks behind the head job
Signed-off-by: Antoine Toulme <antoine@lunar-ocean.com>
* Add a CLI option to set PoW jobs TTL
Signed-off-by: Antoine Toulme <antoine@lunar-ocean.com>