* Update peer validation
Change the location where peer validation is checked for height
estimates. Too early and all of peer discovery is stopped.
Signed-off-by: Danno Ferrin <danno.ferrin@gmail.com>
Add fields for `chainId`, `publicKey`, and `raw` to RPCs where detailed
transaction data is returned (`eth_getTransactionByBlockHash`,
`eth_getTransactionByBlockNumber`, `eth_getTransactionByHash`, and
`eth_getBlock` with certain parameters).
Signed-off-by: Danno Ferrin <danno.ferrin@gmail.com>
When calling `eth_call` by default account balances will be ignored when
executing the call. If the user wants the gas balance to be a
consideration in the call a new `strict` param in the call params can be
set to true, which will enforce the balance rules. This is the same
behavior as is observed in `eth_estimateGas`.
Addresses #502
Signed-off-by: Danno Ferrin <danno.ferrin@gmail.com>
When an eth_call results in a revert report the call as an error with
the revert reason in the response, like we do with eth_estimateGas.
Signed-off-by: Danno Ferrin <danno.ferrin@gmail.com>
Oracle moved their graalvm container hating from docker to github.
Update the docker file to keep up with this change.
Signed-off-by: Danno Ferrin <danno.ferrin@gmail.com>
Update Bonsai Tries persistence so they can calculate intermediate world
state for pre-byzantium transactions.
Signed-off-by: Danno Ferrin <danno.ferrin@gmail.com>
Don't send requests to peers that have not been fully validated (such as
validating the absence/presence of the DAO block). This has the intended
side effect that unvalidated peers don't report chain height to
prometheus monitoring. On occasion classic/mainnet peers would be
mid-validation when the sync status is requested and the wrong chain
will be reported as the height, typically classic heights erroneously reported
in a mainnet node.
Signed-off-by: Danno Ferrin <danno.ferrin@gmail.com>
* #1733 - add support for eip-1898
Signed-off-by: David Mechler <david.mechler@consensys.net>
* #1733 - update changelog
Signed-off-by: David Mechler <david.mechler@consensys.net>
* #1733 - Fix merge issues
Signed-off-by: David Mechler <david.mechler@consensys.net>
* Updated code to handle block parameter as an object; added new tests
Signed-off-by: David Mechler <david.mechler@consensys.net>
* #1733 - Update to handle new block parameter; update tests accordingly
Signed-off-by: David Mechler <david.mechler@consensys.net>
* #1733 - Updates for PR comments
Signed-off-by: David Mechler <david.mechler@consensys.net>
* #1733 - fix broken test
Signed-off-by: David Mechler <david.mechler@consensys.net>
All received QBFT messages are now validated with respect to protocol safety prior to be accepted to QBFT business logic.
This includes updates to the QBFT integration test framework.
Signed-off-by: Trent Mohay <trent.mohay@consensys.net>
* Finish internal ConstantinopleFix->Petersburg transition, including
class names. Only backwards compatibility and retesteth use of the
name will remain.
* Remove four unused config fields from json configs. These are fields
with no code uses of any sort. All are implied by other fields.
eip150Hash, eip155Block, eip160Block, and daoForkSupport.
* Remove redundant fork block fields where their value is implied
Signed-off-by: Danno Ferrin <danno.ferrin@gmail.com>
intermediate values of the base fee can be higher than maximum value encoded by a long. Now using BigInteger to compute intermediate fee delta.
Signed-off-by: Abdelhamid Bakhta <abdelhamid.bakhta@consensys.net>
This supplies the necessary validation logic for parsing received RoundChange messages.
This logic is wired into the QBFT business logic.
Signed-off-by: Trent Mohay <trent.mohay@consensys.net>
The code required to deserialise signed payloads for QBFT is verbose and can be reduced by templating.
Signed-off-by: Trent Mohay <trent.mohay@consensys.net>
Creates the validator for qbft commit messages, but does not wire it into business logic at this stage.
Signed-off-by: Trent Mohay <trent.mohay@consensys.net>
Adds the Prepare validator, but does not wire it into the QBFT message validation at this stage.
Signed-off-by: Trent Mohay <trent.mohay@consensys.net>
Two updates to Bonsai Tries
* Log Rolling is implemented on top of the existing Persisted head. When
Besu is at chain head and the new best head makes the current head an
orphan branch, the Bonsai TrieLogs are used to roll back to a common
block and roll forward to the needed base block. Goerli is known to
maintain sync. There are still some issues with frontier era block
receipts.
* Non-mutable reads can be done off of the persisted block. These are
accurate for all reads that were performed in the block. If a read is
not known it proceeds through a fallback series of calls to prior
layers until it hits the persisted block. These layered reads are
driven off of the TrieLogs.
Signed-off-by: Danno Ferrin <danno.ferrin@gmail.com>
Move the messageFactory out of IbftFinalState such that the IbftFinalState can be reused between IBFT and QBFT.
Signed-off-by: Trent Mohay <trent.mohay@consensys.net>
Exceptions encountered during the import of blocks is suppressed and the
importer can hang. Normally not a problem with perfect blocks but when
testing broken chains its a hinderance.
Signed-off-by: Danno Ferrin <danno.ferrin@gmail.com>
Two refactorings to make the next Bonsai PR less noisy.
Prefer WorldState when we used to ask for MutableWorldState.
Persist takes an optional block header instead of a block hash.
Signed-off-by: Danno Ferrin <danno.ferrin@gmail.com>
The Acceptance Test harness occasionally misses the last line of the
help text (not sure if it's a linux, java, or harness issue, or all
three).
Accept two possible variants for trailer text.
Signed-off-by: Danno Ferrin <danno.ferrin@gmail.com>