Integration tests have been added to determine the IBFT components
response to the reception of RoundChange messages.
Through the course of creating these tests the following changes were
made to the RoundChangeManager:
* Stores RoundChangeMessages in the order of arrival
* Discards subsequent RoundChange messages from the same node,
targeting a specific round.
Signed-off-by: Adrian Sutton <adrian.sutton@consensys.net>
* NewRoundMessageValidator ignores Round Number when comparing blocks
NewRoundMessageValidator previously ensured the block in the newest
PreparedCertificate was the same as that in the Proposal by comparing
block hashes.
However, the hash-function for received IBFT blocks includes round
number - thus the blocks will never be deemed 'equal'.
As such, the blocks must be compared using a hash function which
ignores the round number - i.e. the OnChain function.
Signed-off-by: Adrian Sutton <adrian.sutton@consensys.net>
* initial change
* Fixed spinner gif image
* Fixed MD formatting typos
* Adding images for style guide
* Word and grammar changes from review
* Changed references to CLI in titles to Command Line Interface (CLI) and changed command-line to commane line (no hypen to be consistent)
* Typo fixes
* More typo fixes...
Signed-off-by: Adrian Sutton <adrian.sutton@consensys.net>
To test the IBFT implementation at an integration level, an amount of "setup" is required.
This commit creates a framework of "n" 'external' nodes which are able to inject messages to the IbftController, while also exposing the messages received from the local node.
Thus integration tests are able to be written in terms of input events (including messages), expected (network) responses and changes in the blockchain state.
Signed-off-by: Adrian Sutton <adrian.sutton@consensys.net>
* Implemented list/add/remove accounts from whitelist
* Including account whitelist methods in the JSON-RPC API
* Fixing json rpc response for eth_sendrawTransaction with account not authorized
* Refactoring TransactionPool account whitelist logic
* Acceptance test for accounts whitelist
* Errorprone
* Fixed account nonce tracking in ATs
Signed-off-by: Adrian Sutton <adrian.sutton@consensys.net>
* Fix Array Configurable CLI options
--host-whitelist and --rpc-cors-origins could not be configured as
a TOML array. The underlying PicoCLI issues were resolved with
revamped property types that act like Collections.
A "configure everything" test is added that creates a TOML file that
requires all CLI options to be configurable and configured in
a new everything_config.toml test file.
Signed-off-by: Adrian Sutton <adrian.sutton@consensys.net>
The total difficulty of mainnet is larger than a signed long, so we
need to adjust the way we get the number.
Signed-off-by: Adrian Sutton <adrian.sutton@consensys.net>
* Added Creating Private Network tutorial. Updated bootnodes examples to specify data directory and genesis file.
Signed-off-by: Adrian Sutton <adrian.sutton@consensys.net>
* Initial implementation of ibft_getValidatorsByBlockHash
* Added in missing method to blockchain queries and cleaned up code.
Signed-off-by: Adrian Sutton <adrian.sutton@consensys.net>
For the import command pay attention to the --metrics-enabled and
--metrics-listen CLI flags and run the metrics server if requested
Signed-off-by: Adrian Sutton <adrian.sutton@consensys.net>
A service like the JSON-RPC service is opened up, only serving /metrics
requests in a file format for prometheus.
New CLI flags are --metrics-enabled and --metrics-listen, just like the
--rpc and --ws variants of the same.
--host-whitelist is respected the same as the JSON-RPC endpoint.
Signed-off-by: Adrian Sutton <adrian.sutton@consensys.net>
Put and remove are currently available on the KeyValueStorage interface
as non-transactional calls. These are used nowhere other than test
code, all our production write calls are to the transactional interface.
* Remove the non-transactional mutation APIs from the interface
* Update the tests to use transactional writes
* Update getStartTransaction to just be startTransaction since it is
not a property but a method.
Signed-off-by: Adrian Sutton <adrian.sutton@consensys.net>
Fixes#440 as RTD rewrites the GA scripts, was not expected, and we missed the
site verification meta tag to enable GA search console link
Signed-off-by: Adrian Sutton <adrian.sutton@consensys.net>
IMHO most contributors will appreciate the lower case file name as that tends to be most common with directory names.
Signed-off-by: Adrian Sutton <adrian.sutton@consensys.net>
* Fixes#440 add analytics
and move scripts and css to header by overriding blocks in main
* Fixes domain namenow that we have doc.pantheon.pegasys.tech
Signed-off-by: Adrian Sutton <adrian.sutton@consensys.net>
* Refactoring PantheonNodeFactory and adding PermissioningConfiguration
* Created ClusterConfiguration
* Acceptance test for nodes whitelist
* Fixing constructor
Signed-off-by: Adrian Sutton <adrian.sutton@consensys.net>
The RoundChangeManager was incorrectly creating its internal
RoundChangeMessageValidator with "quorum" number of Prepare messages
required - however, given the ProposalMessage in the Prepared-
Certificate represents a valid node.
Signed-off-by: Adrian Sutton <adrian.sutton@consensys.net>
The IbftHeightManager is responsible for all things 'meta-round'
related, such things as:
* Handling RoundTimeout and starting a new round
* Handling NewRound messages and starting a new round
* Ensuring RoundChange messages are sent at the correct time with
appropriate content.
* Collating RoundChange messages and starting a new round using the
best prepared certificate in the collection.
Signed-off-by: Adrian Sutton <adrian.sutton@consensys.net>