When updating an account we often calculate the address hash multiple
times. We also will always calculate it at least once when tracking an
accout update. Hence, just calculate it in the constructor and re-use
it.
Signed-off-by: Danno Ferrin <danno.ferrin@gmail.com>
Some of our loggers were not private, static, and final. In a few
cases these were non-static fields in classes that were repeatedly
instantiated in core transaction logic.
This is enforced via a new ErrorProne check, so the PR includes fixes
for all of the places this was a problem, not just the performance
impacting code.
Signed-off-by: Danno Ferrin <danno.ferrin@gmail.com>
* Capture test logs in CI
If test logs were saved, store them as CI artifacts
* Only keep logs for failed tests
* Catch tests who didn't define names into a generic filename
Signed-off-by: Horacio Mijail Anton Quiles <hmijail@gmail.com>
Co-authored-by: Sally MacFarlane <sally.macfarlane@consensys.net>
* Handle legacy gas pool and EIP-1559 gas pool when mining blocks.
- Added `EIP1559` manager class in `ProtocolSpec` (defaulted to `Optional.empty()`).
- Updated `MainnetProtocolSpecs` EIP-1559 definition to set the `EIP1559` manager class.
- Updated `BlockTransactionSelector`
- Added `eip1559CumulativeGasUsed` field in `TransactionSelectionResults`.
- Updated `updateTransactionResultTracking` method to compute cumulative gas used according to `EIP-1559` rules.
- Updated `transactionTooLargeForBlock` method to compute gas remaining according to `EIP-1559` rules.
- Updated `blockOccupancyAboveThreshold` method to compute minimum block occupancy ratio according to `EIP-1559` rules.
Signed-off-by: Abdelhamid Bakhta <abdelhamid.bakhta@consensys.net>
* Update versions of jackson and log4j (direct dependencies)
* Update versions of commons-codec and snakeyaml (indeirect deps)
* Remove version of commons-cli (unused)
Signed-off-by: Danno Ferrin <danno.ferrin@gmail.com>
* Native feature flags should have been hidden by default
* GraphQL option warnings keyed off of wrong enabled option.
Signed-off-by: Danno Ferrin <danno.ferrin@gmail.com>
To support Ethereum Foundation Hive testing an option to ignore the
validity of the mixHash is needed in the block importer command. All
other validation for the blocks is still performed.
Example:
`besu blocks import --skip-pow-validation-enabled --from=<block-file>`
Fixes#803
Signed-off-by: Danno Ferrin danno.ferrin@gmail.com
* Update BlockTransactionSelector transaction gas price computation.
BlockTransactionSelector should compare transaction gas price to the min transaction gas price parameter according to EIP-1559 rules.
- Added `TransactionPriceCalculator` to `ProtocolSpec` (defaulted to `TransactionPriceCalculator.frontier()`.
- Created `minTransactionPriceInNextBlock` method in `BaseFee`.
- Removed useless constructor in `BaseFee`.
- Updated EIP-1559 protocol spec definition to set the correct transaction price calculator.
Signed-off-by: Abdelhamid Bakhta <abdelhamid.bakhta@consensys.net>
Introduced Security Module Plugin API. This allows to switch to a different security module provider to provide cryptographic function that can be used by NodeKey (such as sign, ECDHKeyAgreement etc.). By default register KeyPairSecurityModule otherwise attempt to load Security Module via plugin API.
CLI Options:
--security-module=<name>. (defaults to localfile)
Signed-off-by: Usman Saleem <usman@usmans.info>
* BlockAdded and BlockReorg events listed
BlockAdded and BlockReorg events included in the JavaDoc list of currently supported events for BesuEvents
Signed-off-by: grantnoble <grant.noble@consensys.net>
* Updated based on feedback from @shemnon (Danno Ferrin)
Signed-off-by: grantnoble <grant.noble@consensys.net>
* edit
Signed-off-by: Madeline <madeline.murray@consensys.net>
* edit
Signed-off-by: Madeline <madeline.murray@consensys.net>
* updating plugin api checksum
Signed-off-by: Usman Saleem <usman@usmans.info>
Co-authored-by: MadelineMurray <43356962+MadelineMurray@users.noreply.github.com>
Co-authored-by: Madeline <madeline.murray@consensys.net>
Co-authored-by: Usman Saleem <usman@usmans.info>
@pinges correctly pointed out that, even though we have access to all the logs in the BlockAddedEvent, we still use BlockchainQueries to add the new logs from the event. Now we do the sane thing.
Unfortunately, it doesn't seem as easy with private logs so we still have to use privacyQueries as far as I can tell.
Signed-off-by: Ratan Rai Sur <ratan.r.sur@gmail.com>
Enable native encryption by default, but retain the feature flags. The problem with acceptance tests is that the new native libraries added some startup overhead, which when translated to starting up 12 nodes on the same vm resulted in longer time getting to a testable state. Start up timeout was increased to 60 seconds.
Signed-off-by: Danno Ferrin <danno.ferrin@gmail.com>
Via JNA use native scep256k1 and altbn128 libraries.
This is gated by two feature flags and is disabled by default.
* `--Xsecp256k1-native-enabled` enables native secp256k1 across all of besu
* `--Xaltbn128-native-enabled` enables native altbn128 in the precompiled contracts
Signed-off-by: Danno Ferrin <danno.ferrin@gmail.com>
* Manage EIP-1559 transactions forging in local transaction pool.
- Updated `TransactionPool`
- Added `TransactionPriceCalculator` field for frontier transactions.
- Added `TransactionPriceCalculator` field for EIP-1559 transactions.
- Added `EIP1559` field.
- Added `minTransactionGasPrice` to compute transaction gas price according to EIP-1559 rules.
- Created `BaseFee` domain object.
Signed-off-by: Abdelhamid Bakhta <abdelhamid.bakhta@consensys.net>
## PR description
- Created `TransactionPriceCalculator` to compute the transaction gas price.
- Created `CoinbaseFeePriceCalculator` to compute the coinbase reward.
- Updated `MainnetTransactionProcessor` to apply new consensus rules:
- Updated transaction gas price for EIP-1559 transactions.
- Updated coinbase reward for EIP-1559 transactions.
- Updated `MainnetProtocolSpecs` to build the correct TransactionProcessor for EIP-1559 definition.
## Fixed Issue(s)
- #601
- #605
Signed-off-by: Abdelhamid Bakhta <abdelhamid.bakhta@consensys.net>
* Added NAT and service start bug fixes and new known issue
Signed-off-by: Edward Evans <edward.joshua.evans@gmail.com>
Signed-off-by: MadelineMurray <43356962+MadelineMurray@users.noreply.github.com>
* Add a pid-path parameter to write a pid file that can be used as a healthcheck
Signed-off-by: Antoine Toulme <antoine@lunar-ocean.com>
* Add healthcheck to the Dockerfile
Signed-off-by: Antoine Toulme <antoine@lunar-ocean.com>
* fix assertj use
Signed-off-by: Antoine Toulme <antoine@lunar-ocean.com>
* Fix unit tests
Signed-off-by: Antoine Toulme <antoine@lunar-ocean.com>
* Move baseFee from SealableBlockHeader to ProcessableBlockHeader
Signed-off-by: Abdelhamid Bakhta <abdelhamid.bakhta@consensys.net>
* Move baseFee from SealableBlockHeader to ProcessableBlockHeader
Signed-off-by: Abdelhamid Bakhta <abdelhamid.bakhta@consensys.net>
* Write null gas price in the RLP structure if this an EIP-1559 transaction. (#738)
Write null gas price in the RLP structure if this an EIP-1559 transaction.
Signed-off-by: Abdelhamid Bakhta <abdelhamid.bakhta@consensys.net>