There are a whole class of errors in the deframer that come from
IllegalArgumentExceptions. Those are thrown when Besu validates incoming
data. Because Besu is not the source of these errors we should not log
them any higher than DEBUG.
The most common one is `Caused by: java.lang.IllegalArgumentException:
Invalid node id. Expected id of length: 64 bytes.` and this is coming
from a non-conforming client connecting to Besu.
Signed-off-by: Danno Ferrin <danno.ferrin@gmail.com>
I propose adding Edward Mack from Chainsafe Systems as a maintainer for Besu.
Edward has been instrumental to adding the support for Ethereum Classic
and their two testnets Kotti and Mordor. Since Classic support is not
strategic to ConsenSys or Web3Labs it is safe to say that without his
contribution and continued involvement Ethereum Classic support would
not have happened. Because Ethereum Classic has some ambitious changes
slated for the next year promoting Edward to Maintainer will further
secure future support for it in Hyperledger Besu.
Voting ends two weeks from today, 2am UTC on 2019-12-10
https://www.timeanddate.com/countdown/to?iso=20191210T02&p0=1440
For more information on this process see the Becoming a Maintainer
section in the MAINTAINERS.md file.
Signed-off-by: Danno Ferrin <danno.ferrin@gmail.com>
Signed-off-by: Edward Evans <edjojob@gmail.com>
* [BESU-122] Index tx log bloom bits and use the index for queries.
This comes in two parts: first a CLI program to generate the log bloom
indexes, then updating BlockchainQueries to use the indexes if present.
First, to create the bloom index on a synced node (for example Goerli):
`bin/besu --network=goerli --data-path /tmp/goerli operator generate-log-bloom-cache`
There are options where to start and to stop. I estimate 15-30 minutes
for mainnet.
The RPCs should magically use the indexes now. Note that the last
fragment of 100K blocks is not indexed and uses the old paths.
Signed-off-by: Danno Ferrin <danno.ferrin@gmail.com>
Add support for MuirGlacier
* Add block numbers for Ropsten and Mainnet
* Add reference tests for difficulty calculations
* Update reference tests for new MuirGlacier difficulty tests
Signed-off-by: Danno Ferrin <danno.ferrin@gmail.com>
updated ClassicProtocolSpecs for Agharta Definiton to use
SpuriousDragonGasCalculator (instead of Istanbul gas calculator)
Signed-off-by: edwardmack <ed@edwardmack.com>
Vertx by default orders all calls to executeBlocking in an ordered
fashion. As a side effect all requests are single threaded, even across
multiple clients. Because JSON-RPC has request identifiers it is not
needed to thread responses as they can be answered out of order. This
also allows multiple threads to handle requests, increasing throughput.
Signed-off-by: Danno Ferrin <danno.ferrin@gmail.com>
* NewBlockHeaders performance improvement
When sending out new block headers to the websocket subscribers we
serialized the block once per each subscriber. This had some crypto
calls for each serialization and was CPU bound with redundant
calculations.
We can memoize the result and only serialize it once per block.
Signed-off-by: Danno Ferrin <danno.ferrin@gmail.com>
* Add warning when enabling PRIV/EEA APIs with privacy disabled
* Prevent execution of PRIV/EEA methods when privacy is disabled
Signed-off-by: Lucas Saldanha <lucas.saldanha@consensys.net>
(a) Setting classic block to zero requires all blocks at zero to have the mainnet 1920000 hash. That will never happen. No clients will sync as long as this is in place
(b) a full sync fails
```
2019-11-18 10:46:51.301-07:00 | EthScheduler-Services-5 (importBlock) | WARN | MainnetBlockBodyValidator | Invalid block: state root mismatch (expected=0xb8df31366db4c4dd0076bc0ddaffdeceba6c882681108cc000db9bc5f85c300c, actual=0xf4344e62f031897ff61f9e02a465b3d13f983220f52f1e452690448dc366a2ee)
```
Probably a bug in besu code, but until that bug is sussed out we can't support mordor.
Signed-off-by: Danno Ferrin <danno.ferrin@gmail.com>
Change the configuration name of "CustomForks" to "Transitions." This
will better reflect that this is a list of blocks where transition
events might happen. These may be more than forks, and mainnet is also
moving away from the name forks to "network upgrades." Transitions is
more general purpose.
Signed-off-by: Danno Ferrin <danno.ferrin@gmail.com>