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>
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>
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>
This adds the proposal and roundchange messages required for QBFT.
This does not wire in the ability to transmit/receive these messages, it just defines the message structure.
Signed-off-by: Trent Mohay <trent.mohay@consensys.net>
Aspects of the consensus mechanism associated with block creation, and validation have been moved
from the IBFT package, into into consensus/common, such that they can be reused for the QBFT
implementation.
Signed-off-by: Trent Mohay <trent.mohay@consensys.net>
This adds the Prepare and Commit messages used in the QBFT protocol, this is an incremental movement toward QBFT - and does not offer new functionality.
Signed-off-by: Trent Mohay <trent.mohay@consensys.net>
When validating a RoundChange message, its important that not only
are there sufficient Prepare msgs in the PreparedCertificate, but
also that each are from a different validator (i.e. cannot simply
count the number msgs, but must count distinct authors).
Signed-off-by: Trent Mohay <trent.mohay@consensys.net>
Move the block header validation errors logging levels from trace and
debug to info. Also, include a standard prefix "Invalid block header: "
in each of the log lines.
Signed-off-by: Danno Ferrin <danno.ferrin@gmail.com>
Since the EIP-1559 transition is going away, simply use a set of
accepted transactions for transaction validator that we'll check
against.
Don't assume that there are two transaction types and instead check
what type the transactions are.
Use guessType when we're deserializing from json.
Signed-off-by: Ratan Rai Sur <ratan.r.sur@gmail.com>
Moves IBFT events to the common package for reuse with the QBFT implementation.
This necessitated the creation of BftEventHandler interface, such that a generic IbftController can be passed around, rather than the literal IbftController.
Signed-off-by: Trent Mohay <trent.mohay@consensys.net>
Moving the IbftMessage (and rename to BftMessage) to the common package such that it can be reused as part of the QBFT implementation.
Signed-off-by: Trent Mohay <trent.mohay@consensys.net>
SignedData is to be used as part of QBFT, and as such the IBFT specific aspects of this class are to be moved into a separate class (allowed SignedData to be moved into the common package)
Signed-off-by: Trent Mohay trent.mohay@consensys.net
This is the first step in making aspects of the IBFT2 code base common, such that it can be reused as part of the QBFT implementation which is coming shortly.
Signed-off-by: Trent Mohay trent.mohay@consensys.net
This is a stronger check than in the past, which potentially allowed for a the IBFT system to handle messages for the current round, even if a block had already been imported (but had not yet received the new-block event) - which in turn, could lead to a network fork in a adversarial environment.
Signed-off-by: Trent Mohay <trent.mohay@consensys.net>
For every block produced and imported directly log the same information
we would get from other import paths.
* If this node produced the block, note that with "Produced" instead of
"Imported"
* Log the size of the pending transaction pool
* Only log IBFT rounds at INFO if they go past round 0, DEBUG otherwise.
Signed-off-by: Danno Ferrin <danno.ferrin@gmail.com>
* #1066 Switched to use unprefixed hex strings for memory and stack values
Signed-off-by: David Mechler <david.mechler@consensys.net>
* Disable flaky tests per Ben Burns(Yeti) request
Signed-off-by: David Mechler <david.mechler@consensys.net>
* Revert last commit and enable ignored tests.
Signed-off-by: David Mechler <david.mechler@consensys.net>
* #1157 - updated to create 2 agents so that proper bonding can occur
Signed-off-by: David Mechler <david.mechler@consensys.net>
* #1162 - Updated test to mock the local peer PING packet creation so that the hash can be managed.
Signed-off-by: David Mechler <david.mechler@consensys.net>
* Added admin_logsRepairCache end point
Signed-off-by: David Mechler <david.mechler@consensys.net>
* Added admin_logsRepairCache end point
Signed-off-by: David Mechler <david.mechler@consensys.net>
* Remove p2p network code per PR comments
Signed-off-by: David Mechler <david.mechler@consensys.net>
* Updates from PR comments
Signed-off-by: David Mechler <david.mechler@consensys.net>
* Spotless Apply fixes
Signed-off-by: David Mechler <david.mechler@consensys.net>
* PR updates
Signed-off-by: David Mechler <david.mechler@consensys.net>
* Admin force cache refresh when called through end point per PR comments
Signed-off-by: David Mechler <david.mechler@consensys.net>
* Pr updates
Signed-off-by: David Mechler <david.mechler@consensys.net>
* Update changelog for 1.5.1
Signed-off-by: David Mechler <david.mechler@consensys.net>
* Remove check for 0x prefix on addresses to match expectations
Signed-off-by: David Mechler <david.mechler@consensys.net>
* Update graphql pending to allow for sorting of transactions
Signed-off-by: David Mechler <david.mechler@consensys.net>
* #1408 Add Miner data endpoints
Signed-off-by: David Mechler <david.mechler@consensys.net>
* #1408 Add Miner data endpoints
Signed-off-by: David Mechler <david.mechler@consensys.net>
* #1408 Add Miner data endpoints
Signed-off-by: David Mechler <david.mechler@consensys.net>
* #1408 Added tests for new miner endpoints
Signed-off-by: David Mechler <david.mechler@consensys.net>
* #1408 - PR updates
Signed-off-by: David Mechler <david.mechler@consensys.net>
* SpotlessApply updtes
Signed-off-by: David Mechler <david.mechler@consensys.net>
* SpotlessApply updtes
Signed-off-by: David Mechler <david.mechler@consensys.net>
Co-authored-by: David Mechler <davemec@users.noreply.github.com>
A few logging statements had errors in the log statement. Either the
parameter wasn't used or it was expecting a formatted logger for errors.
Signed-off-by: Danno Ferrin <danno.ferrin@gmail.com>
Created a new JSON-RPC method miner_changeTargetGasLimit allowing users
to change the targetGasLimit option while besu is running.
Co-authored-by: Terrence Cooke <terrence.s.cooke@gmail.com>
Co-authored-by: Ratan Rai Sur <ratan.r.sur@gmail.com>
Signed-off-by: Ratan Rai Sur <ratan.r.sur@gmail.com>
GasLimitCalculator is now just an interface. This simplifies the logic
in what was previously GasLimitCalculator but is now
TargetingGasLimitCalculator.
Signed-off-by: Ratan Rai Sur <ratan.r.sur@gmail.com>
The IBFT2 configuration section of a genesis file has been updated
to allow the specification of a block reward (defaults to 0) and also an explicit
recipient (defaults to the block proposer).
The block reward can be specified as a hex string (with 0x prefix) or a decimal
string (no prefix), and is defined in Wei.
These values are not modifiable for the duration of the network.
Signed-off-by: Trent Mohay <trent.mohay@consensys.net>
Upgrade to ErrorProne 2.4.0
* public constructors on abstract classes are removed
* Javadoc must have meaningfull documentation
* lambdas should not be variables
* Added to the list of confusing inner class names (Entry and Type)
* no assert keyword in tests
* Obsolete JDK classes produce errors now
Signed-off-by: Danno Ferrin <danno.ferrin@gmail.com>
* replace whitelist/blacklist with allowlist/denylist and support both versions in CLI options
Signed-off-by: Sally MacFarlane <sally.macfarlane@consensys.net>
ProtocolContext uses a generic for the consensus state, which has a very
large footprint across the code to accomplish what it intends to
accomplish. For every call there are about 61 other lines per call that
need to be updated, over 1300 lines total.
Instead replace it with java.lang.Class#cast, which provides runtime
security, and use generics to provide the compile time sugar that
allows for chained methods of the appropriate type. Then remove its
(quite large) footprint from the rest of the code.
Signed-off-by: Danno Ferrin <danno.ferrin@gmail.com>