* Rework how filter and log query parameters are created/used
We used a `FilterParameter` that held strings in places where we could
create strongly typed objects. We also used it in places where we only
wanted a subset of its descriptiveness, namely, the `LogsQuery` part of
it.
* deserialize directly into `LogsQuery`, which is useful for log pub/sub
* narrow uses of `FilterParameter` to `LogsQuery` where possible
* make `FilterParameter` hold strongly typed `Address`s and `LogTopic`s
Signed-off-by: Ratan Rai Sur <ratan.r.sur@gmail.com>
Fixed check-license to use root project's build dir property instead of relative path which resolves to user.dir.
Signed-off-by: Usman Saleem <usman@usmans.info>
Rename eea_getTransactionCount to priv_getEeaTransactionCount
Signed-off-by: Stefan Pingel <stefan.pingel@consensys.net>
Signed-off-by: Jason Frame <jasonwframe@gmail.com>
Use the bloombits for logs queries, so we only have to walk headers
and not every receipt on a large query.
Signed-off-by: Danno Ferrin <danno.ferrin@gmail.com>
An error was detected (PAN-3248) whereby if "Null" appeared in a Log
Topic filter, it and all subsequent filters were lost (and thus
were not used to filter responses) - thus Besu would return too many
results (as the filters were less restrictive than requested).
This was determined to be an issue in the TopicParameterDeserialiser
which is resolved in this commit.
Signed-off-by: Trent Mohay <37158202+rain-on@users.noreply.github.com>
-- Use (PicoCLI) custom factory to construct version provider which can return optional plugin versions
-- Use plugin's jar manifest implementation and version to build plugin version during plugin registration
Signed-off-by: Usman Saleem <usman@usmans.info>
The old governance doc does not apply to the Hyperledger project, so it
is deleted.
Added a note that there is also a HLP code of conduct that also applies.
Signed-off-by: Danno Ferrin <danno.ferrin@gmail.com>
Enforce that plugin variable names are either `--plugin-<namespace>-`
or `--Xplugin-<namespace>-` when registered with the
PicoCLIOptionsService. If the names don't match a RuntimeException is
thrown, and unless that exception is caught the plugin will not have
start or stop lifecycle messages called.
Signed-off-by: Danno Ferrin <danno.ferrin@gmail.com>
Upgrade dependencies except rocksdb (needs burn in testing),
picocli (reorders options), gradle (causes build server breakage), and
web3j (test failures).
* Awaitality removed a Duration object and instead uses java.time
* jackson stopped throwing a checked exception for one API
* spotless now enforces gradle formatting checks (yea!)
Signed-off-by: Danno Ferrin <danno.ferrin@gmail.com>
We had two mostly idenitcal classes used for GraphQL and JsonRPC/WS.
This PR merges that to one class.
* Move from org.hyperledger.besu.ethereum.api.json.internal.queries to
org.hyperledger.besu.ethereum.api.query
* Add one method from the GraphQL version
(generateLogWithMetadataForTransaction)
* Remove graphql version and point graphql to the shared version.
Signed-off-by: Danno Ferrin <danno.ferrin@gmail.com>
* Add totalDiffculty to BlockPropagated events.
The chain head block can be contentious with many fork blocks (ommers) propagating on the network. We should add a totalDifficulty to make it easier to see which block is most likely the current head.
- added `BlockPropagated` interface in `plugin-api`.
- updated `BesuEvents.onBlockPropagated` method to take a `BlockPropagated` instead of a `BlockHeader`.
- created `BlockPropagatedSubscriber` in `BlockBroadcaster`.
- changed type of `BlockBroadcaster.blockPropagatedSubscribers` from `Consumer<Block>` to `BlockPropagatedSubscriber`.
- updated unit tests accordingly to all changes.
- updated known hash in `build.gradle` file of `plugin-api`: new value is `4SAeaZIJMsDvUK5Wp2RzU8TlHacslALnM/4yvVhsMtY=`
Signed-off-by: Abdelhamid Bakhta <abdelhamid.bakhta@consensys.net>
Previously you could set an expectation for a balance with a decimal
string value, but not a hex string value. This was an error-prone
approach.
Signed-off-by: Meredith Baxter <meredith.baxter@consensys.net>
Marking can take longer than the time it takes to accumulate the blocks to satisfy these options. We make no guarantees that exactly the number of blocks in the options will be awaited/kept.
Signed-off-by: Ratan Rai Sur <ratan.r.sur@gmail.com>
Fixes race condition between attaching the NodeAddedListener and some state from post marked block being persisted. We now prepare and cleanup the listener only once each, on start and stop respectively.
Other changes:
Start the Pruner before FullSyncDownloader. Luckily the downloader took enough time to start downloading that this wasn't an issue but it's safer this way.
Signed-off-by: Ratan Rai Sur <ratan.r.sur@gmail.com>
Add a new CLI flag `--required-block` that takes a block number and a
block hash. Before using a peer for syncing we validate that the block
exists with the spcified hash at the peer.
For example `--required-block=6485846=0x43f0cd1e5b1f9c4d5cda26c240b59ee4f1b510d0a185aa8fd476d091b0097a80`
deals with the current Istanbul Ropsten chainsplit.
Signed-off-by: Danno Ferrin <danno.ferrin@gmail.com>