191 KiB
Changelog
1.5.2
Additions and Improvements
- Experimental offline backup and restore has been added via the
operator x-backup-state
andoperator x-restore-state
CLI commands. Data formats will be fluid for as long as thex-
prefix is present in the CLI so it is advised not to rely on these backups for disaster recovery. #1235 - Experimental ethstats support added via the
Xethstats
andXethstats-contact
CLI commands. #1239 - Peers added via the JSON-RPC
admin_addPeer
andadmin_removePeer
will be shared or no longer shared via discovery respectively. Previously they were not shared. #1177 contributed by br0tchain. - New Docker Images (see below). #1277
- Reworked static peer discovery handling. #1292
New Java VMs in Docker Image
- New docker images are being generated to use the latest version of OpenJDK (currently 14.0.1) with the tag suffix of
-openjdk-latest
, for example1.5.2-openjdk-latest
. - New docker images are being generated to use GraalVM with the tag suffix of
-graalvm
, for example1.5.2-graalvm
. - The existing images based on Java 11 are also being tagged with the suffix
-openjdk-11
, for example1.5.2-openjdk-11
, as well as1.5.2
.
The intent is that the major Java VM version or Java VM type shipped with the default docker images (latest
, 1.5.x
, etc.) may be changed during future quarterly releases but will remain consistent within quarterly releases.
Bug Fixes
-
Offchain permissioning - fixed bug where sync status check prevented peering if static nodes configured. #1252
-
GraphQL queries of
miner
in IBFT networks will no longer return an error. PR #1282 issue #1272.
Previously identified known issues
- Logs queries missing results against chain head
- Eth/65 loses peers
- Fast sync when running Besu on cloud providers
- Privacy users with private transactions created using v1.3.4 or earlier
- Permissioning issues on Kubernetes
- Restarts caused by insufficient memory can cause inconsistent private state
New and Old Maintainer
- David Mechler has been added as a new maintainer.
- Edward Evans voluntarily moved to emeritus status.
1.5.1
Deprecated
- CLI option
--privacy-precompiled-address
option is deprecated. This address is now derived, based on--privacy-onchain-groups-enabled
. #1222
Additions and Improvements
- In an IBFT2 network, a fixed block reward value and recipient address can be defined in genesis file #1132
- JSON-RPC HTTP API Authorization: exit early when checking user permissions. #1144
- HTTP/2 is enabled for JSON-RPC HTTP API over TLS. #1145
- Color output in consoles. It can be disabled with
--color-enabled=false
#1257 - Add compatibility with ClusterIP services for the Kubernetes Nat Manager #1156
- In an IBFT2 network; a fixed block reward value and recipient address can be defined in genesis file #1132
- Add fee cap for transactions submitted via RPC. #1137
Bug fixes
- When the default sync mode was changed to fast sync for named networks, there was one caveat we didn't address. The
dev
network should've been full sync by default. This has now been fixed. #1257 - Fix synchronization timeout issue when the blocks were too large #1149
- Fix missing results from eth_getLogs request. #1154
- Fix issue allowing Besu to be used for DDoS amplification. #1146
Known Issues
Known issues are open issues categorized as Very High or High impact.
Previously identified known issues
- Scope of logs query causing Besu to hang
- Eth/65 loses peers
- Fast sync when running Besu on cloud providers
- Privacy users with private transactions created using v1.3.4 or earlier
- Permissioning issues on Kubernetes
- Restarts caused by insufficient memory can cause inconsistent private state
1.5 Breaking changes
When upgrading to 1.5, ensure you've taken into account the following breaking changes.
Docker users with volume mounts
To maintain best security practices, we're changing the user:group
on the Docker container to besu
.
What this means for you:
- If you are running Besu as a binary, there is no impact.
- If you are running Besu as a Docker container and have a volume mount for data, ensure that the
permissions on the directory allow other users and groups to r/w. Ideally this should be set to
besu:besu
as the owner.
Note that the besu
user only exists within the container not outside it. The same user ID may match
a different user outside the image.
If you’re mounting local folders, it is best to set the user via the Docker —user
argument. Use the
UID because the username may not exist inside the docker container. Ensure the directory being mounted
is owned by that user.
Remove Manual NAT method
The NAT manager MANUAL
method has been removed.
If you have have been using the MANUAL
method, use the NONE
method instead. The behavior of the
NONE
method is the same as the previously supported MANUAL
methods.
Privacy users
Besu minor version upgrades require upgrading Orion to the latest minor version. That is, for Besu <> Orion node pairs, when upgrading Besu to v1.5, it is required that Orion is upgraded to v1.6. Older versions of Orion will no longer work with Besu v1.5.
1.5 Features
Features added between from 1.4 to 1.5 include:
- Mining Support
Besu supports
eth_hashrate
andeth_submitHashrate
to obtain the hashrate when we mine with a GPU mining worker. - Tracing
The Tracing API is no longer an Early Access feature and now has full support for
trace_replayBlockTransactions
,trace_Block
andtrace_transaction
. - Plugin API Block Events
BlockAdded
andBlockReorg
are now exposed via the Plugin API. - Filters and subscriptions for private contracts.
- SecurityModule Plugin API This allows use of a different security module as a plugin to provide cryptographic function that can be used by NodeKey (such as sign, ECDHKeyAgreement etc.).
- Onchain privacy groups with add and remove members. This is an early access feature. Early access features are not recommended for production networks and may have unstable interfaces.
1.5
Additions and Improvements
- Public Networks Default to Fast Sync: The default sync mode for named permissionless networks, such as the Ethereum mainnet and testnets, is now
FAST
.- The default is unchanged for private networks. That is, the sync mode defaults to
FULL
for private networks. - Use the
--sync-mode
command line option to change the sync mode. #384
- The default is unchanged for private networks. That is, the sync mode defaults to
- Proper Mining Support: Added full support for
eth_hashrate
andeth_submitHashrate
. It is now possible to have the hashrate when we mine with a GPU mining worker #1063 - Performance Improvements: The addition of native libraries (#775) and changes to data structures in the EVM (#1089) have improved Besu sync and EVM execution times.
- Tracing API Improvements: The Tracing API is no longer an Early Access feature and now has full support for
trace_replayBlockTransactions
,trace_Block
andtrace_transaction
. - New Plugin API Block Events:
BlockAdded
andBlockReorg
are now exposed via the Plugin API #637. - Added experimental CLI option
--Xnat-kube-pod-name
to specify the name of the loadbalancer used by the Kubernetes nat manager #1078
- Local permissioning TOML config now supports additional keys (
nodes-allowlist
andaccounts-allowlist
). Support fornodes-whitelist
andaccounts-whitelist
will be removed in a future release. - Add missing
mixHash
field foreth_getBlockBy*
JSON RPC endpoints. #1098
- Besu now has a strict check on private transactions to ensure the privateFrom in the transaction matches the sender Orion key that has distributed the payload. Besu 1.5+ requires Orion 1.6+ to work. #357
Bug fixes
No bug fixes with user impact in this release.
Known Issues
Known issues are open issues categorized as Very High or High impact.
New known issues
-
K8S permissioning uses of Service IPs rather than pod IPs which can fail. #1190 Workaround - Do not use permissioning on K8S.
-
Restart caused by insufficient memory can cause inconsistent private state. #1110 Workaround - Ensure you allocate enough memory for the Java Runtime Environment that the node does not run out of memory.
Previously identified known issues
- Scope of logs query causing Besu to hang
- Eth/65 loses peers
- Fast sync when running Besu on cloud providers
- Privacy users with private transactions created using v1.3.4 or earlier
1.4.6
Additions and Improvements
- Print node address on startup. #938
- Transaction pool: price bump replacement mechanism configurable through CLI. #928 #930
Bug Fixes
- Added timeout to queries. #986
- Fixed issue where networks using onchain permissioning could stall when the bootnodes were not validators. #969
- Update getForks method to ignore ClassicForkBlock chain parameter to fix issue with ETC syncing. #1014
Known Issues
Known issues are open issues categorized as Very High or High impact.
Previously identified known issues
- Scope of logs query causing Besu to hang
- Eth/65 loses peers
- Fast sync when running Besu on cloud providers
- Privacy users with private transactions created using v1.3.4 or earlier
1.4.5
Additions and Improvements
- Implemented WebSocket logs subscription for private contracts (
priv_subscribe
/priv_unsubscribe
) #762 - Introduced SecurityModule plugin API. This allows use of a different security module as a plugin to
provide cryptographic function that can be used by NodeKey (such as sign, ECDHKeyAgreement etc.). KeyPairSecurityModule
is registered and used by default. The CLI option
--security-module=<name> (defaults to localfile)
can be used to identify the security module plugin name to use instead. #713 - Several testing related changes to improve compatibility with Hive and Retesteth. #806 and #845
- Native libraries for secp256k1 and Altbn128 encryption are enabled by default. To disable these libraries use
--Xsecp256k1-native-enabled=false
and--Xaltbn128-native-enabled=false
. #775
Bug Fixes
- Fixed
eth_estimateGas
JSON RPC so it no longer returns gas estimates that are too low. #842 - Full help not displayed unless explicitly requested. #437
- Compatibility with undocumented Geth
eth_subscribe
fields. #654 - Current block number included as part of
eth_getWork
response. #849
Known Issues
Known issues are open issues categorized as Very High or High impact.
New known issues
- Scope of logs query causing Besu to crash. #944
Workaround - Limit the number of blocks queried by each eth_getLogs
call.
Previously identified known issues
Intrinsic gas exceeds gas limit
returned when callingdelete mapping[addr]
ormapping[addr] = 0
- Eth/65 not backwards compatible
- Error full syncing with pruning
- Fast sync when running Besu on cloud providers
- Bootnodes must be validators when using onchain permissioning
- Privacy users with private transactions created using v1.3.4 or earlier
1.4.4
Additions and Improvements
- Implemented
priv_getLogs
. #686 - Implemented private contract log filters including JSON-RPC methods to interact with private filters. #735
- Implemented EIP-2315: Simple Subroutines for the EVM #717
- Implemented Splunk logging. #725
- Implemented optional native library encryption. #675. To enable add
--Xsecp256k1-native-enabled
(for transaciton signatures) and/or--Xaltbn128-native-enabled
(for altbn128 precomiled contracts) as command line options.
Bug Fixes
- Flag added to toggle
eth/65
off by default.eth/65
will remain toggled off by default until a fix is completed for the eth/65 known issue. #741 - Resolve crashing NAT detectors on GKE. #731 fixes #507. Besu-Kubernetes Readme updated to reflect changes.
- Deal with quick service start failures #714 fixes #662
Known Issues
Known issues are open issues categorized as Very High or High impact.
New known issues
Intrinsic gas exceeds gas limit
returned when callingdelete mapping[addr]
ormapping[addr] = 0
#696
Calling delete and set to 0 Solidity mapping in Solidity fail.
Previously identified known issues
- Eth/65 not backwards compatible
- Error full syncing with pruning
- Fast sync when running Besu on cloud providers
- Bootnodes must be validators when using onchain permissioning
- Privacy users with private transactions created using v1.3.4 or earlier
1.4.3
Issues identified with 1.4.3 release
The eth/65
change is not backwards compatible.
This has the following impact:
- In a private network, nodes using the 1.4.3 client cannot interact with nodes using 1.4.2 or earlier clients.
- On mainnet, synchronizing eventually stalls.
Workaround -> revert to v1.4.2.
A fix is currently being tested.
Critical Issue for Privacy Users
A critical issue for privacy users with private transactions created using Hyperledger Besu v1.3.4 or earlier has been identified. If you have a network with private transaction created using v1.3.4 or earlier, please read the following and take the appropriate steps: https://wiki.hyperledger.org/display/BESU/Critical+Issue+for+Privacy+Users
Additions and Improvements
- Added
eth/65
support. #608 - Added block added and block reorg events. Added revert reason to block added transactions. #637
Deprecated
- Private Transaction
hash
field andgetHash()
method have been deprecated. They will be removed in 1.5.0 release. #639
Known Issues
Fast sync when running Besu on cloud providers
A known RocksDB issue causes fast sync to fail when running Besu on certain cloud providers. The following error is displayed repeatedly:
...
EthScheduler-Services-1 (importBlock) | ERROR | PipelineChainDownloader | Chain download failed. Restarting after short delay.
java.util.concurrent.CompletionException: org.hyperledger.besu.plugin.services.exception.StorageException: org.rocksdb.RocksDBException: block checksum mismatch:
....
This behaviour has been seen on AWS and Digital Ocean.
Workaround -> On AWS, a full restart of the AWS VM is required to restart the fast sync.
Fast sync is not currently supported on Digital Ocean. We are investigating options to add support for fast sync on Digital Ocean.
Error full syncing with pruning
- Error syncing with mainnet on Besu 1.3.7 node - MerkleTrieException #580
The associated error is
Unable to load trie node value for hash
and is caused by the combination of full sync and pruning.
Workarounds:
- Explicitly disable pruning using
--pruning-enabled=false
when using fast sync. - If the
MerkleTrieException
occurs, delete the database and resync.
A fix for this issue is being actively worked on.
Fast sync reverting to full sync
In some cases of FastSyncException, fast sync reverts back to a full sync before having reached the pivot block. #683
Workaround -> To re-attempt fast syncing rather than continue full syncing, stop Besu, delete your database, and start again.
Bootnodes must be validators when using onchain permissioning
- Onchain permissioning nodes can't peer when using a non-validator bootnode #528
Workaround -> When using onchain permissioning, ensure bootnodes are also validators.
1.4.2
Additions and Improvements
- Added
trace_block
JSON RPC API #449 - Added
pulledStates
andknownStates
to the EthQLsyncing
query andeth_syncing
JSON-RPC api #565
Bug Fixes
- Fixed file parsing behaviour for privacy enclave keystore password file #554 (thanks to magooster)
- Fixed known issue with being unable to re-add members to onchain privacy groups #471
Updated Early Access Features
- Onchain privacy groups with add and remove members. Known issue resolved (see above).
- TRACE API now includes
trace_block
,trace_replayBlockTransactions
, andtrace_transaction
. Fixed some issues on the trace replay block transactions API #522.
Known Issues
Fast sync defaulting to full sync
- When fast sync cannot find enough valid peers rapidly enough, Besu defaults to full sync.
Workarounds:
- To re-attempt fast syncing rather than continue full syncing, stop Besu, delete your database, and start again.
- When fast syncing, explicitly disable pruning using
--pruning-enabled=false
to reduce the likelihood of encountering the pruning bug.
A fix to remove the default to full sync is in progress is being actively worked on.
Error full syncing with pruning
- Error syncing with mainnet on Besu 1.3.7 node - MerkleTrieException #BESU-160
The associated error is
Unable to load trie node value for hash
and is caused by the combination of full sync and pruning.
Workarounds:
- Explicitly disable pruning using
--pruning-enabled=false
when using fast sync. - If the
MerkleTrieException
occurs, delete the database and resync.
A fix for this issue is being actively worked on.
Bootnodes must be validators when using onchain permissioning
- Onchain permissioning nodes can't peer when using a non-validator bootnode #BESU-181
Workaround -> When using onchain permissioning, ensure bootnodes are also validators.
1.4.1
Additions and Improvements
- Added priv_getCode #250. Gets the bytecode associated with a private address.
- Added
trace_transaction
JSON RPC API #441 - Removed -X unstable prefix for pruning options (
--pruning-blocks-retained
,--pruning-block-confirmations
) #440 - Implemented ECIP-1088: Phoenix EVM and Protocol upgrades. #434
Bug Fixes
- BESU-25 Use v5 Devp2p when pinging #392
- Fixed a bug to manage concurrent access to cache files #438
- Fixed configuration file bug:
pruning-blocks-retained
now accepts an integer in the config #440 - Specifying RPC credentials file should not force RPC Authentication to be enabled #454
- Enhanced estimateGas messages #436. When a estimateGas request fails a validation check, an improved error message is returned in the response.
Early Access Features
Early access features are available features that are not recommended for production networks and may have unstable interfaces.
- Onchain privacy groups with add and remove members. Not being able to to re-add a member to an onchain privacy group is a known issue with the add and remove functionality.
Known Issues
Fast sync defaulting to full sync
- When fast sync cannot find enough valid peers rapidly enough, Besu defaults to full sync.
Workarounds:
- To re-attempt fast syncing rather than continue full syncing, stop Besu, delete your database, and start again.
- When fast syncing, explicitly disable pruning using
--pruning-enabled=false
to reduce the likelihood of encountering the pruning bug.
A fix to remove the default to full sync is in progress and is planned for inclusion in v1.4.1.
Error full syncing with pruning
- Error syncing with mainnet on Besu 1.3.7 node - MerkleTrieException #BESU-160
The associated error is
Unable to load trie node value for hash
and is caused by the combination of full sync and pruning.
Workarounds:
- Explicitly disable pruning using
--pruning-enabled=false
when using fast sync. - If the
MerkleTrieException
occurs, delete the database and resync.
Investigation of this issue is in progress and a fix is targeted for v1.4.1.
Bootnodes must be validators when using onchain permissioning
- Onchain permissioning nodes can't peer when using a non-validator bootnode #BESU-181
Workaround -> When using onchain permissioning, ensure bootnodes are also validators.
1.4.0
Private State Migration
Hyperledger Besu v1.4 implements a new data structure for private state storage that is not backwards compatible. A migration will be performed when starting v1.4 for the first time to reprocess existing private transactions and re-create the private state data in the v1.4 format.
If you have existing private transactions, see migration details.
Additions and Improvements
-
TLS support to secure client and server communication.
-
Multi-tenancy to enable multiple participants to use the same Besu and Orion node.
-
Plugin APIs to enable building of Java plugins to extend Hyperledger Besu.
-
Support for additional NAT methods.
-
Added
priv_call
which invokes a private contract function locally and does not change the private state. -
Besu has moved from an internal Bytes library to the Apache Tuweni Bytes library.
This includes using the library in the Plugins API interfaces. #295 and #215
Early Access Features
Early access features are available features that are not recommended for production networks and may have unstable interfaces.
-
Reorg compatible privacy to enable private transactions on networks using consensus mechanisms that fork.
-
Tracing API to obtain detailed information about transaction processing.
Bug Fixes
See RC and Beta sections below.
Known Issues
Fast sync defaulting to full sync
- When fast sync cannot find enough valid peers rapidly enough, Besu defaults to full sync.
Workarounds:
- To re-attempt fast syncing rather than continue full syncing, stop Besu, delete your database, and start again.
- When fast syncing, explicitly disable pruning using
--pruning-enabled=false
to reduce the likelihood of encountering the pruning bug.
A fix to remove the default to full sync is in progress and is planned for inclusion in v1.4.1.
Error full syncing with pruning
- Error syncing with mainnet on Besu 1.3.7 node - MerkleTrieException #BESU-160
The associated error is
Unable to load trie node value for hash
and is caused by the combination of full sync and pruning.
Workarounds:
- Explicitly disable pruning using
--pruning-enabled=false
when using fast sync. - If the
MerkleTrieException
occurs, delete the database and resync.
Investigation of this issue is in progress and a fix is targeted for v1.4.1.
Bootnodes must be validators when using onchain permissioning
- Onchain permissioning nodes can't peer when using a non-validator bootnode #BESU-181
Workaround -> When using onchain permissioning, ensure bootnodes are also validators.
1.4.0 RC-2
Private State Migration
Hyperledger Besu v1.4 implements a new data structure for private state storage that is not backwards compatible. A migration will be performed when starting v1.4 for the first time to reprocess existing private transactions and re-create the private state data in the v1.4 format. If you have existing private transactions, see migration details.
1.4.0 RC-1
Additions and Improvements
- New
trace_replayBlockTransactions
JSON-RPC API
This can be enabled using the --rpc-http-api TRACE
CLI flag. There are some philosophical differences between Besu and other implementations that are outlined in trace_rpc_apis.
- Ability to automatically detect Docker NAT settings from inside the conainter.
The default NAT method (AUTO) can detect this so no user intervention is required to enable this.
-
Added Multi-tenancy support which allows multiple participants to use the same Besu node for private transactions.
-
Added TLS support for communication with privacy enclave
Bug Fixes
- Private transactions are now validated before sent to the enclave #356
Known Bugs
- Error syncing with mainnet on Besu 1.3.7 node - MerkleTrieException #BESU-160
Workaround -> Don't enable pruning when syncing to mainnet.
- Onchain permissioning nodes can't peer when using a non-validator bootnode #BESU-181
Workaround -> When using onchain permissioning, ensure bootnodes are also validators.
1.4 Beta 3
Additions and Improvements
- CLI option to enable TLS client auth for JSON-RPC HTTP #340
Added CLI options to enable TLS client authentication and trusting client certificates:
--rpc-http-tls-client-auth-enabled - Enable TLS client authentication for the JSON-RPC HTTP service (default: false)
--rpc-http-tls-known-clients-file - Path to file containing client's certificate common name and fingerprint for client authentication.
--rpc-http-tls-ca-clients-enabled - Enable to accept clients certificate signed by a valid CA for client authentication (default: false)
If client-auth is enabled, user must either enable CA signed clients OR provide a known-clients file. An error is reported if both CA signed clients is disabled and known-clients file is not specified.
- Stable Plugins APIs #346
The BesuEvents
service and related data
package have been marked as a stable plugin API.
Bug Fixes
- Return missing signers from getSignerMetrics #343
Experimental Features
- Experimental support for
trace_replayBlockTransactions
- multiple PRs
Added support for the trace_replayBlockTransactions
JSON-RPC call. To enable this API add
TRACE
to the rpc-http-api
options (for example, --rpc-http-api TRACE
on the command line).
This is not a production ready API. There are known bugs relating to traced memory from calls and returns, and the gas calculation reported in the flat traces does not always match up with the correct gas calculated for consensus.
1.4 Beta 2
Additions and Improvements
- Enable TLS for JSON-RPC HTTP Service #253
Exposes new command line parameters to enable TLS on Ethereum JSON-RPC HTTP interface to allow clients like EthSigner to connect via TLS:
--rpc-http-tls-enabled=true
(Optional - Only required if --rpc-http-enabled
is set to true) Set to true
to enable TLS. False by default.
--rpc-http-tls-keystore-file="/path/to/cert.pfx"
(Must be specified if TLS is enabled) Path to PKCS12 format key store which contains server's certificate and it's private key
--rpc-http-tls-keystore-password-file="/path/to/cert.passwd"
(Must be specified if TLS is enabled) Path to the text file containing password for unlocking key store.
--rpc-http-tls-known-clients-file="/path/to/rpc_tls_clients.txt"
(Optional) Path to a plain text file containing space separated client’s certificate’s common name and its sha-256 fingerprints when
they are not signed by a known CA. The presence of this file (even empty) enables TLS client authentication. That is, the client
presents the certificate to server on TLS handshake and server establishes that the client certificate is either signed by a
proper/known CA. Otherwise, server trusts client certificate by reading the sha-256 fingerprint from known clients file specified above.
The format of the file is (as an example):
localhost DF:65:B8:02:08:5E:91:82:0F:91:F5:1C:96:56:92:C4:1A:F6:C6:27:FD:6C:FC:31:F2:BB:90:17:22:59:5B:50
Bug Fixes
- TotalDifficulty is a BigInteger #253. Don't try and cast total difficulty down to a long because it will overflow long in a reasonable timeframe.
1.4 Beta 1
Additions and Improvements
- Besu has moved from an internal Bytes library to the Apache Tuweni Bytes library. This includes using the library in the Plugins API interfaces. #295 and #215
- Besu stops processing blocks if Orion is unavailable #253
- Added priv_call #250. Invokes a private contract function locally and does not change the private state.
- Support for EIP-2124, which results in faster peer discovery #156
1.3.8
Additions and Improvements
admin_generateLogBloomCache
JSON-RPC API to generate a cache of the block bloombits that improves performance for log queries #262
Critical Fix in 1.3.7
1.3.7 includes a critical fix for Ethereum MainNet users and the Muir Glacier upgrade. We recommend users of Ethereum public networks (MainNet, Ropsten, Rinkeby, and Goerli) upgrade immediately. This upgrade is also strongly recommended for users of private networks.
For more details, see Hyperledger Besu Wiki.
Muir Glacier Compatibility
For compatibility with Ethereum Muir Glacier upgrade, use v1.3.7 or later.
ETC Agharta Compatibility
For compatibility with ETC Agharta upgrade, use 1.3.7 or later.
1.3.7
Additions and Improvements
- Hard Fork Support: Configures the Agharta activation block for the ETC MainNet configuration #251 (thanks to soc1c)
operator generate-log-bloom-cache
command line option to generate a cache of the block bloombits that improves performance for log queries #245
Bug Fixes
- Resolves a Mainnet consensus issue #254
New Maintainer
Edward Mack added as a new maintainer.
1.3.6
Additions and Improvements
- Performance improvements:
- EIP2384 - Ice Age Adustment around Istanbul #211
- Documentation updates include:
- Hard Fork Support:
- MuirGlacier for Ethereum Mainnet and Ropsten Testnet
- Agharta for Kotti and Mordor Testnets
Bug Fixes
- #210 fixes WebSocket frames handling User impact: PING/PONG frames handling in Websocket services was not implemented
1.3.5
Additions and Improvements
- Log Event Streaming for Plugin API #186
- Allow use a external JWT public key in authenticated APIs #183
- ETC Configuration, classic fork peer validator #176 (thanks to edwardmack)
- Allow IBFT validators to be changed at a given block #173
- Support external mining using Stratum #140 (thanks to atoulme)
- Add more fields to private transaction receipt #85 (thanks to josh-richardson)
- Pruning documentation
Technical Improvements
- ETC - Cleanup #201 (thanks to GregTheGreek)
- User specific enclave public key configuration in auth file #196
- Change CustomForks -> Transitions #193
- Pass identity information into RpcMethod from Http Service #189
- Remove the use of JsonRpcParameters from RpcMethods #188
- Repaired Metrics name collision between Privacy and RocksDB #187
- Multi-Tenancy: Do not specify a public key anymore when requesting a … #185
- Updates to circle building acceptance tests #184
- Move Apache Tuweni dependency to official release #181 (thanks to atoulme)
- Update Gradle to 6.0, support Java 13 #180
- ETC Atlantis fork #179 (thanks to edwardmack)
- ETC Gotham Fork #178 (thanks to edwardmack)
- ETC DieHard fork support #177 (thanks to edwardmack)
- Remove 'parentHash', 'number' and 'gasUsed' fields from the genesis d… #175 (thanks to SweeXordious)
- Enable pruning by default for fast sync and validate conflicts with privacy #172
- Update RocksDB #170
- Vpdate ver to 1.3.5-snapshot #169
- Added PoaQueryService method that returns local node signer… #163
- Add versioning to privacy storage #149
- Update reference tests #139
1.3.4
1.3.3
Technical Improvements
- Add --identity flag for client identification in node browsers #150
- Istanbul Mainnet Block #145
- Add priv_getEeaTransactionCount #110
Additions and Improvements
- Redesign of how JsonRpcMethods are created #159
- Moving JsonRpcMethods classes into the same package, prior to refactor #154
- Reflect default logging in CLI help #148
- Handle zero port better in NAT #147
- Rework how filter and log query parameters are created/used #146
- Don't generate shutdown tasks in controller #141
- Ibft queries #138
- Enable pruning by default for fast sync #135
- Ensure spotless runs in CI #132
- Add more logging around peer disconnects #131
- Repair EthGetLogs returning incorrect results #128
- Use Bloombits for Logs queries #127
- Improve message when extraData missing #121
- Fix miner startup logic #104
- Support log reordring from reorgs in
LogSubscriptionService
#86
1.3.2
Additions and Improvements
- besu -v to print plugin versions#123
Technical Improvements
- Update Governance and Code of Conduct verbiage #120
- Fix private transaction root mismatch #118
- Programatically enforce plugin CLI variable names #117
- Additional unit test for selecting replaced pending transactions #116
- Only set sync targets that have an estimated height value #115
- Fix rlpx startup #114
- Expose getPayload in Transaction plugin-api interface. #113
- Dependency Version Upgrades #112
- Add hash field in Transaction plugin interface. #111
- Rework sync status events #106
1.3.1
Additions and Improvements
- Added GraphQL query/logs support #94
Technical Improvements
- Add totalDiffculty to BlockPropagated events. #97
- Merge BlockchainQueries classes #101
- Fixed casing of dynamic MetricCategorys #99
- Fix private transactions breaking evm #96
- Make SyncState variables thread-safe #95
- Fix transaction tracking by sender #93
- Make logic in PersistBlockTask more explicit to fix a LGTM warning #92
- Removed Unused methods in the transaction simulator. #91
- Fix ThreadBesuNodeRunner BesuConfiguration setup #90
- JsonRpc method disabled error condition rewrite and unit test #80
- Round trip testing of state trie account values #31
1.3
Breaking Change
- Disallow comments in Genesis JSON file. #49
Additions and Improvements
- Add
--required-block
command line option to deal with chain splits #79 - Store db metadata file in the root data directory. #46
- Add
--target-gas-limit
command line option. #24(thanks to new contributor cfelde) - Allow private contracts to access public state. #9
- Documentation updates include:
- Added sample load balancer configurations
- Added
retesteth
subcommand - Added
debug_accountRange
JSON-RPC API method - Clarified purpose of static nodes
- Added links Kubernetes reference implementations
- Added content about access between private and public states
- Added restriction that account permissioning cannot be used with random key signing.
- Added high availability requirement for private transaction manager (ie, Orion)
- Added genesis file reference
Technical Improvements
- Less verbose synching subscriptions #59
- Return enclave key instead of private transaction hash #53
- Fix mark sweep pruner bugs where nodes that should be kept were being swept #50
- Clean up BesuConfiguration construction #51
- Private tx nonce errors return same msg as any tx #48
- Fix default logging #47
- Introduce virtual operation. #45
- Downgrade RocksDBPlugin Logging Levels #44
- Infrastructure for exposing PoA metrics for plugins. #37
- Refactor privacy storage. #7
1.2.4
Additions and Improvements
- Add Istanbul block (5435345) for Rinkeby #35
- Add Istanbul block (1561651) for Goerli #27
- Add Istanbul block (6485846) for Ropsten #26
- Add privDistributeRawTransaction endpoint #23 (thanks to josh-richardson)
Technical Improvements
- Refactors pantheon private key to signing private key #34 (thanks to josh-richardson)
- Support both BESU_ and PANTHEON_ env var prefixes #32
- Use only fully validated peers for fast sync pivot selection #21
- Support Version Rollbacks for RocksDB (#6) #19
- Update Cava library to Tuweni Library #18
- StateTrieAccountValue:Version should be written as an int, not a long #17
- Handle discovery peers with updated endpoints #12
- Change retesteth port #11
- Renames eea_getTransactionReceipt to priv_getTransactionReceipt #10 (thanks to josh-richardson)
- Support Version Rollbacks for RocksDB #6
- Moving AT DSL into its own module #3
1.2.3
Additions and Improvements
- Added an override facility for genesis configs #1915
- Finer grained logging configuration #1895 (thanks to matkt)
Technical Improvements
- Add archiving of docker test reports #1921
- Events API: Transaction dropped, sync status, and renames #1919
- Remove metrics from plugin registration #1918
- Replace uses of Instant.now from within the IBFT module #1911
- Update plugins-api build script #1908
- Ignore flaky tracing tests #1907
- Ensure plugin-api module gets published at the correct maven path #1905
- Return the plugin-apis to this repo #1900
- Stop autogenerating BesuInfo.java #1899
- Extracted Metrics interfaces to plugins-api. #1898
- Fix key value storage clear so it removes all values #1894
- Ethsigner test #1892 (thanks to iikirilov)
- Return null private transaction receipt instead of error #1872 (thanks to iikirilov)
- Implement trace replay block transactions trace option #1886
- Use object parameter instead of list of parameters for priv_createPrivacyGroup #1868 (thanks to iikirilov)
- Refactor privacy acceptance tests #1864 (thanks to iikirilov)
1.2.2
Additions and Improvements
- Support large numbers for the
--network-id
option #1891 - Added eea_getTransactionCount Json Rpc #1861
- PrivacyMarkerTransaction to be signed with a randomly generated key #1844
- Implement eth_getproof JSON RPC API #1824 (thanks to matkt)
- Documentation updates include:
Technical Improvements
- Update the
pantheon blocks export
command usage #1887 (thanks to matkt) - Stop Returning null for 'pending' RPC calls #1883
- Blake validation errors are hard errors #1882
- Add test cases for trace_replayBlockTransactions #1881
- Simplify json rpc spec test setup #1880
- Tweak JSON import format #1878
- Transactions listeners should use the subscriber pattern #1877
- Maven spotless #1876
- Don't cache for localbalance #1875
- EIP-1108 - Reprice alt_bn128 #1874
- Create stub trace_replayBlockTransactions json-rpc method #1873
- Improve trace log #1870
- Pruning Command Line Flags #1869
- Re-enable istanbul #1865
- Fix logic to disconnect from peers on fork #1863
- Blake 2b tweaks #1862
- Sweep state roots before child nodes #1854
- Update export subcommand to export blocks in rlp format #1852
- Updating docker tests to make it easier to follow & ensure it listens on the right interface on docker #1851
- Disable Istanbul block #1849
- Add read-only blockchain factory method #1845
- Removing the release plugin in favour of the new process with branches #1843
- Update Görli bootnodes #1842
- Upgrade graphql library to version 13.0 #1834
- Database versioning and enable multi-column database #1830
- Fixes invalid JsonGetter, comment #1811 (thanks to josh-richardson)
- Add EthSigner acceptance test #1655 (thanks to iikirilov)
- Support plugin Richdata APIs via implementation #1581
1.2.1
Additions and Improvements
- Removed the release plugin in favour of the new process with branches #1841 #1843 #1848 #1855
- Updated Görli bootnodes #1842
- Removed unnecessary test dependency #1839
- Added warning when comments are used in genesis file #1838
- Added an experimental flag for disabling timers #1837
- Fixed FlatFileTaskCollection tests #1833
- Added chain json import utility #1832
- Added tests to AllNodesVisitor trie traversal #1831
- Updated privateFrom to be required #1829 (thanks to iikirilov)
- Made explicit that streamed accounts may be missing their address #1828
- Refactored normalizeKeys method #1826
- Removed dead parameters #1825
- Added a nicer name for Corretto #1819
- Changed core JSON-RPC method to support ReTestEth #1815 #1818
- Added rewind to block functionality #1814
- Added support for NoReward and NoProof seal engines #1813
- Added strict short hex strings for retesteth #1812
- Cleaned up genesis parsing #1809
- Updating Orion to v1.3.2 #1805
- Updaated newHeads subscription to emit events only for canonical blocks #1798
- Repricing for trie-size-dependent opcodes #1795
- Revised Istanbul Versioning assignemnts #1794
- Updated RevertReason to return BytesValue #1793
- Updated way priv_getPrivacyPrecompileAddress source #1786 (thanks to iikirilov)
- Updated Chain ID opcode to return 0 as default #1785
- Allowed fixedDifficulty=1 #1784
- Updated Docker image defaults host interfaces #1782
- Added tracking of world state account key preimages #1780
- Modified PrivGetPrivateTransaction to take public tx hash #1778 (thanks to josh-richardson)
- Removed enclave public key from parameter #1789 #1777 (thanks to iikirilov)
- Added storage key preimage tracking #1772
- Updated priv_getPrivacyPrecompileAddress method return #1766 (thanks to iikirilov)
- Added tests for permissioning with static nodes behaviour #1764
- Added integration test for contract creation with privacyGroupId #1762 (thanks to josh-richardson)
- Added report node local address as the coinbase in Clique and IBFT #1758 #1760
- Fixed private tx signature validation #1753
- Updated CI configuration #1751 #1835
- Added CLI flag for setting WorldStateDownloader task cache size #1749 (thanks to matkt)
- Updated vertx to 2.8.0 #1748
- changed RevertReason to BytesValue #1746
- Added static nodes acceptance test #1745
- Added report 0 hashrate when the mining coordinator doesn't support mining #1744 #1757
- Implemented EIP-2200 - Net Gas Metering Revised #1743
- Added chainId validation to PrivateTransactionValidator #1741
- Reduced intrinsic gas cost #1739
- De-duplicated test blocks data files #1737
- Renamed various EEA methods to priv methods #1736 (thanks to josh-richardson)
- Permissioning Acceptance Test #1735 #1759
- Add nonce handling to GenesisState #1728
- Added 100-continue to HTTP #1727
- Fixed get_signerMetrics #1725 (thanks to matkt)
- Reworked "in-sync" checks #1720
- Added Accounts Permissioning Acceptance Tests #1719
- Added PrivateTransactionValidator to unify logic #1713
- Added JSON-RPC API to report validator block production information #1687 (thanks to matkt)
- Added Mark Sweep Pruner #1638
- Added the Blake2b F compression function as a precompile in Besu #1614 (thanks to iikirilov)
- Documentation updates include:
- Added CPU requirements #1734
- Added reference to Ansible role #1733
- Updated revert reason example #1754
- Added content on deploying for production #1774
- Updated docker docs for location of data path #1790
- Updated permissiong documentation #1792 #1652
- Added permissioning webinar in the resources #1717
- Add web3.js-eea reference doc #1617
- Updated privacy documentation #1650 #1721 #1722 #1724 #1729 #1730 #1731 #1732 #1740 #1750 #1761 #1765 #1769 #1770 #1771 #1773 #1787 #1788 #1796 #1803 #1810 #1817
- Added documentation for getSignerMetrics #1723 (thanks to matkt)
- Added Java 11+ as a prerequisite for installing Besu using Homebrew. #1755
- Fixed documentation formatting and typos #1718 #1742 #1763 #1779 #1781 #1827 #1767 (thanks to helderjnpinto)
- Moved the docs to a new doc repos #1822
- Explicitly configure some maven artifactIds #1853
- Update export subcommand to export blocks in rlp format #1852
- Implement
eth_getproof
JSON RPC API #1824 - Database versioning and enable multi-column database #1830
- Disable smoke tests on windows #1847
- Add read-only blockchain factory method #1845
1.2
Additions and Improvements
- Add UPnP Support #1334 (thanks to notlesh)
- Limit the fraction of wire connections initiated by peers #1665
- EIP-1706 - Disable SSTORE with gasleft lt call stipend #1706
- EIP-1108 - Reprice alt_bn128 #1704
- EIP-1344 ChainID Opcode #1690
- New release docker image #1664
- Support changing log level at runtime #1656 (thanks to matkt)
- Implement dump command to dump a specific block from storage #1641 (thanks to matkt)
- Add eea_findPrivacyGroup endpoint to Besu #1635 (thanks to Puneetha17)
- Updated eea send raw transaction with privacy group ID #1611 (thanks to iikirilov)
- Added Revert Reason #1603
- Documentation updates include:
- Added UPnP content
- Added load balancer image
- Added revert reason
- Added admin_changeLogLevel JSON RPC API (thanks to matkt)
- Updated for new Docker image
- Added Docker image migration content
- Added transaction validation content
- Updated permissioning overview for onchain account permissioning
- Updated quickstart to include Prometheus and Grafana
- Added remote connections limits options
- Updated web3.js-eea reference to include privacy group methods
- Updated onchain permissioning to include account permissioning and Permissioning Management Dapp
- Added deployment procedure for Permissioning Management Dapp
- Added privacy content for EEA-compliant and Besu-extended privacy
- Added content on creating and managing privacy groups
- Added content on accessing private and privacy marker transactions
- Added content on system requirements
- Added reference to Besu role on Galaxy to deploy using Ansible.
Technical Improvements
- Remove enclave public key from parameter #1789
- Update defaults host interfaces #1782
- Modifies PrivGetPrivateTransaction to take public tx hash #1778
- Remove enclave public key from parameter #1777
- Return the ethereum address of the privacy precompile from priv_getPrivacyPrecompileAddress #1766
- Report node local address as the coinbase in Clique and IBFT #1760
- Additional integration test for contract creation with privacyGroupId #1762
- Report 0 hashrate when the mining coordinator doesn't support mining #1757
- Fix private tx signature validation #1753
- RevertReason changed to BytesValue #1746
- Renames various eea methods to priv methods #1736
- Update Orion version #1716
- Rename CLI flag for better ordering of options #1715
- Routine dependency updates #1712
- Fix spelling error in getApplicationPrefix method name #1711
- Wait and retry if best peer's chain is too short for fast sync #1708
- Eea get private transaction fix #1707 (thanks to iikirilov)
- Rework remote connection limit flag defaults #1705
- Report invalid options from config file #1703
- Add ERROR to list of CLI log level options #1699
- Enable onchain account permissioning CLI option #1686
- Exempt static nodes from all connection limits #1685
- Enclave refactoring #1684
- Add opcode and precompiled support for versioning #1683
- Use a percentage instead of fraction for the remote connections percentage CLI option. #1682
- Added error msg for calling eth_sendTransaction #1681
- Remove instructions for installing with Chocolatey #1680
- remove zulu-jdk8 from smoke tests #1679
- Add new MainNet bootnodes #1678
- updating smoke tests to use >= jdk11 #1677
- Fix handling of remote connection limit #1676
- Add accountVersion to MessageFrame #1675
- Change getChildren return type #1674
- Use Log4J message template instead of String.format #1673
- Return hashrate of 0 when not mining. #1672
- Add hooks for validation #1671
- Upgrade to pantheon-build:0.0.6-jdk11 which really does include jdk11 #1670
- Onchain permissioning startup check #1669
- Update BesuCommand to accept minTransactionGasPriceWei as an integer #1668 (thanks to matkt)
- Privacy group id consistent #1667 (thanks to iikirilov)
- Change eea_getPrivateTransaction endpoint to accept hex #1666 (thanks to Puneetha17)
- Factorise metrics code for KeyValueStorage database #1663)
- Create a metric tracking DB size #1662
- AT- Removing unused methods on KeyValueStorage #1661
- Add Prerequisites and Quick-Start #1660 (thanks to lazaridiscom)
- Java 11 updates #1658
- Make test generated keys deterministic w/in block generator #1657
- Rename privacyGroupId to createPrivacyGroupId #1654 (thanks to Puneetha17)
- Intermittent Test Failures in TransactionsMessageSenderTest #1653
- Sanity check the generated distribution files before upload #1648
- Use JDK 11 for release builds #1647
- Support multiple private marker transactions in a block #1646
- Display World State Sync Progress in Logs #1645
- Remove the docker gradle plugin, handle building docker with shell now #1644
- Switch to using metric names from EIP-2159 #1634
- Account versioning #1612
1.1.4
Additions and Improvements
- [PAN-2832] Support setting config options via environment variables #1597
- Print Besu version when starting #1593
- [PAN-2746] Add eea_createPrivacyGroup & eea_deletePrivacyGroup endpoint #1560 (thanks to Puneetha17)
Documentation updates include:
- Added readiness and liveness endpoints
- Added high availability content
- Added web3js-eea client library
- Added content on setting CLI options using environment variables
Technical Improvements
- Read config from env vars when no config file specified #1639
- Upgrade jackson-databind to 2.9.9.1 #1636
- Update Reference Tests #1633
- Ignore discport during static node permissioning check #1631
- Check connections more frequently during acceptance tests #1630
- Refactor experimental CLI options #1629
- JSON-RPC api net_services should display the actual ports #1628
- Refactor CLI #1627
- Simplify BesuCommand
run
andparse
methods. #1626 - PAN-2860: Ignore discport during startup whitelist validation #1625
- Freeze plugin api version #1624
- Implement incoming transaction messages CLI option as an unstable command. #1622
- Update smoke tests docker images for zulu and openjdk to private ones #1620
- Remove duplication between EeaTransactionCountRpc & PrivateTransactionHandler #1619
- [PAN-2709] - nonce too low error #1618
- Cache TransactionValidationParams instead of creating new object for each call #1616
- [PAN-2850] Create a transaction pool configuration object #1615
- Add TransactionValidationParam to TxProcessor #1613
- Expose a CLI option to configure the life time of transaction messages. #1610
- Implement Prometheus metric counter for skipped expired transaction messages. #1609
- Upload jars to bintray as part of releases #1608
- Avoid publishing docker-pantheon directory to bintray during a release #1606
- [PAN-2756] Istanbul scaffolding #1605
- Implement a timeout in TransactionMessageProcessor #1604
- Reject transactions with gas price below the configured minimum #1602
- Always build the k8s image, only push to dockerhub for master branch #1601
- Properly validate AltBN128 pairing precompile input #1600
- [PAN-2871] Columnar rocksdb #1599
- Reverting change to dockerfile #1594
- Update dependency versions #1592
- [PAN-2797] Clean up failed connections #1591
- Cleaning up the build process for docker #1590
- [PAN-2786] Stop Transaction Pool Queue from Growing Unbounded #1586
1.1.3
Additions and Improvements
- [PAN-2811] Be more lenient with discovery message deserialization. Completes our support for EIP-8 and enables Besu to work on Rinkeby again. #1580
- Added liveness and readiness probe stub endpoints #1553
- Implemented operator tool. (blockchain network configuration for permissioned networks) #1511
- [PAN-2754] Added eea_getPrivacyPrecompileAddress #1579 (thanks to Puneetha17)
- Publish the chain head gas used, gas limit, transaction count and ommer metrics #1551
- Add subscribe and unsubscribe count metrics #1541
- Add pivot block metrics #1537
Documentation updates include:
- Updated IBFT 2.0 tutorial to use network configuration tool
- Added debug_traceBlock* methods
- Reorganised monitoring documentation
- Added link to sample Grafana dashboard
- Added note about replacing transactions in transaction pool
- Updated example transaction scripts
- Updated Alethio Ethstats and Explorer documentation
Technical Improvements
- PAN-2816: Hiding experimental account permissioning cli options #1584
- [PAN-2630] Synchronizer should disconnect the sync target peer on invalid block data #1578
- Rename MetricCategory to BesuMetricCategory #1574
- Convert MetricsConfigiguration to use a builder #1572
- PAN-2794: Including flag for onchain permissioning check on tx processor #1571
- Fix behaviour for absent account permissiong smart contract #1569
- Expand readiness check to check peer count and sync state #1568
- [PAN-2798] Reorganize p2p classes #1567
- PAN-2729: Account Smart Contract Permissioning ATs #1565
- Timeout build after 1 hour to prevent it hanging forever. #1564
- [PAN-2791] Make permissions checks for ongoing connections more granular #1563
- [PAN-2721] Fix TopicParameter deserialization #1562
- [PAN-2779] Allow signing private transaction with any key #1561 (thanks to iikirilov)
- [PAN-2783] Invert dependency between permissioning and p2p #1557
- Removing account filter from TransactionPool #1556
- [PAN-1952] - Remove ignored pending transaction event publish acceptance test #1552
- Make MetricCategories more flexible #1550
- Fix encoding for account permissioning check call #1549
- Discard known remote transactions prior to validation #1548
- [PAN-2009] - Fix cluster clean start after stop in Acceptance tests #1546
- FilterIdGenerator fixes #1544
- Only increment the added transaction counter if we actually added the transaction #1543
- When retrieving transactions by hash, check the pending transactions first #1542
- Fix thread safety in SubscriptionManager #1540
- [PAN-2731] Extract connection management from P2PNetwork #1538
- [PAN-2010] format filter id as quantity #1534
- PAN-2445: Onchain account permissioning #1507
- [PAN-2672] Return specific and useful error for enclave issues #1455 (thanks to Puneetha17)
1.1.2
Additions and Improvements
Documentation updates include:
- Added GraphQL options
- Added troubleshooting point about illegal reflective access error
- Added trusted bootnode behaviour for permissioning
- Added how to obtain a WS authentication token
- Updated example scripts and added package.json file for creating signed transactions
Technical Improvements
- Replaced Void datatype with void #1530
- Fix estimate gas RPC failing for clique when no blocks have been created #1528
- Avoid auto-boxing for gauge metrics #1526
- Add AT to ensure 0-miner Clique/IBFT are valid #1525
- AT DSL - renaming to suffix of Conditions and co-locating with Conditions #1524
- Set disconnect flag immediately when disconnecting a peer #1521
- [PAN-2547] Modified JSON-RPC subscription processing to avoid blocking #1519
- Dependency Version Updates #1517
- AT DSL - renaming ibft to ibft2 #1516
- [PIE-1578] Added local transaction permissioning metrics #1515
- [PIE-1577] Added node local metrics #1514
- AT DSL - Removing WaitCondition, consistently applying Condition instead #1513
- Remove usage of deprecated ConcurrentSet #1512
- Log error if clique or ibft have 0 validators in genesis #1509
- GraphQL library upgrade changes. #1508
- Add metrics to assist monitoring and alerting #1506
- Use external pantheon-plugin-api library #1505
- Tilde #1504
- Dependency version updates #1503
- Simplify text #1501 (thanks to bgravenorst)
- [PAN-1625] Clique AT mining continues if validator offline #1500
- Acceptance Test DSL Node refactoring #1498
- Updated an incorrect command #1497 (thanks to bgravenorst)
- Acceptance Test and DSL rename for IBFT2 #1493
- [PIE-1580] Metrics for smart contract permissioning actions #1492
- Handle RLPException when processing incoming DevP2P messages #1491
- Limit spotless checks to java classes in expected java dirs #1490
- [PAN-2560] Add LocalNode class #1489
- Changed Enode length error String implementation. #1486
- PAN-2715 - return block not found reasons in error #1485
- [PAN-2652] Refactor Privacy acceptance test and add Privacy Ibft test #1483 (thanks to iikirilov)
- [PAN-2603] Onchain account permissioning support #1475
- Make CLI options names with hyphen-minus searchable and reduce index size #1476
- Added warning banner when using latest version #1454
- Add RTD config file to fix Python version issue #1453
- [PAN-2647] Validate Private Transaction nonce before submitting to Transaction Pool #1449 (thanks to iikirilov)
- Add placeholders system to have global variables in markdown #1425
1.1.1
Additions and Improvements
- GraphQL #1311 (thanks to zyfrank)
- Added
--tx-pool-retention-hours
#1333 - Added Genesis file support for specifying the maximum stack size. #1431
- Included transaction details when subscribed to Pending transactions #1410
- Documentation updates include:
Technical Improvements
- Create MaintainedPeers class #1484
- Fix for permissioned network with single bootnode #1479
- Have ThreadBesuNodeRunner support plugin tests #1477
- Less pointless plugins errors #1473
- Rename GraphQLRPC to just GraphQL #1472
- eth_protocolVersion is a Quantity, not an Integer #1470
- Don't require 'to' in 'blocks' queries #1464
- Events Plugin - Add initial "NewBlock" event message #1463
- Make restriction field in Private Transaction an enum #1462 (thanks to iikirilov)
- Helpful graphql error when an account doesn't exist #1460
- Acceptance Test Cleanup #1458
- Large chain id support for private transactions #1452
- Optimise TransactionPool.addRemoteTransaction #1448
- Reduce synchronization in PendingTransactions #1447
- Add simple PeerPermissions interface #1446
- Make sure ThreadBesuNodeRunner is exercised by automation #1442
- Decode devp2p packets off the event thread #1439
- Allow config files to specify no bootnodes #1438
- Capture all logs and errors in the Besu log output #1437
- Ensure failed Txns are deleted when detected during mining #1436
- Plugin Framework #1435
- Equals cleanup #1434
- Transaction smart contract permissioning controller #1433
- Renamed AccountPermissioningProver to TransactionPermissio… #1432
- Refactorings and additions to add Account based Smart Contract permissioning #1430
- Fix p2p PeerInfo handling #1428
- IbftProcessor logs when a throwable terminates mining #1427
- Renamed AccountWhitelistController #1424
- Unwrap DelegatingBytes32 and prevent Hash from wrapping other Hash instances #1423
- If nonce is invalid, do not delete during mining #1422
- Deleting unused windows jenkinsfile #1421
- Get all our smoke tests for all platforms in 1 jenkins job #1420
- Add pending object to GraphQL queries #1419
- Start listening for p2p connections after start() is invoked #1418
- Improved JSON-RPC responses when EnodeURI parameter has invalid EnodeId #1417
- Use port 0 when starting a websocket server in tests #1416
- Windows jdk smoke tests #1413
- Change AT discard RPC tests to be more reliable by checking discard using proposals #1411
- Simple account permissioning #1409
- Fix clique miner to respect changes to vanity data made via JSON-RPC #1408
- Avoid recomputing the logs bloom filter when reading receipts #1407
- Remove NodePermissioningLocalConfig external references #1406
- Add constantinople fix block for Rinkeby #1404
- Update EnodeURL to support enodes with listening disabled #1403
- Integration Integration test(s) on p2p of 'net_services' #1402
- Reference tests fail on Windows #1401
- Fix non-deterministic test caused by variable size of generated transactions #1399
- Start BlockPropagationManager immediately - don't wait for full sync #1398
- Added error message for RPC method disabled #1396
- Fix intermittency in FullSyncChainDownloaderTest #1394
- Add explanatory comment about default port #1392
- Handle case where peers advertise a listening port of 0 #1391
- Cache extra data #1389
- Update Log message in IBFT Controller #1387
- Remove unnecessary field #1384
- Add getPeer method to PeerConnection #1383
- Removing smart quotes #1381 (thanks to jmcnevin)
- Use streams and avoid iterating child nodes multiple times #1380
- Use execute instead of submit so unhandled exceptions get logged #1379
- Prefer EnodeURL over Endpoint #1378
- Add flat file based task collection #1377
- Consolidate local enode representation #1376
- Rename rocksdDbConfiguration to rocksDbConfiguration #1375
- Remove EthTaskChainDownloader and supporting code #1373
- Handle the pipeline being aborted while finalizing an async operation #1372
- Rename methods that create and return streams away from getX() #1368
- eea_getTransactionCount fails if account has not interacted with private state #1367 (thanks to iikirilov)
- Increase RocksDB settings #1364 (ajsutton)
- Don't abort in-progress master builds when a new commit is added. #1358
- Request open ended headers from sync target #1355
- Enable the pipeline chain downloader by default #1344
- Create P2PNetwork Builder #1343
- Include static nodes in permissioning logic #1339
- JsonRpcError decoding to include message #1336
- Cache current chain head info #1335
- Queue pending requests when all peers are busy #1331
- Fix failed tests on Windows #1332
- Provide error message when invalid key specified in key file #1328
- Allow whitespace in file paths loaded from resources directory #1329
- Allow whitespace in path #1327
- Require block numbers for debug_traceBlockByNumber to be in hex #1326
- Improve logging of chain download errors in the pipeline chain downloader #1325
- Ensure eth scheduler is stopped in tests #1324
- Normalize account permissioning addresses in whitelist #1321
- Allow private contract invocations in multiple privacy groups #1318 (thanks to iikirilov)
- Fix account permissioning check case matching #1315
- Use header validation mode for ommers #1313
- Configure RocksDb max background compaction and thread count #1312
- Missing p2p info when queried live #1310
- Tx limit size send peers follow up #1308
- Remove remnants of the old dev mode #1307
- Remove duplicate init code from BesuController instances #1305
- Stop synchronizer prior to stopping the network #1302
- Evict old transactions #1299
- Send local transactions to new peers #1253
1.1
Additions and Improvements
- Privacy
- Onchain Permissioning
- Fastsync
- Documentation updates include:
Technical Improvements
- priv_getTransactionCount fails if account has not interacted with private state #1369
- Updating Orion to 0.9.0 #1360
- Allow use of large chain IDs #1357
- Allow private contract invocations in multiple privacy groups #1340
- Missing p2p info when queried live #1338
- Fix expose transaction statistics #1337
- Normalize account permissioning addresses in whitelist #1321
- Update Enclave executePost method #1319
- Fix account permissioning check case matching #1315
- Removing 'all' from the help wording for host-whitelist #1304
1.1 RC
Technical Improvements
- Better errors for when permissioning contract is set up wrong #1296
- Consolidate p2p node info methods #1288
- Update permissioning smart contract interface to match updated EEA proposal #1287
- Switch to new sync target if it exceeds the td threshold #1286
- Fix running ATs with in-process node runner #1285
- Simplify enode construction #1283
- Cleanup PeerConnection interface #1282
- Undo changes to PendingTransactions method visibility #1281
- Use default enclave public key to generate eea_getTransactionReceipt #1280 (thanks to Puneetha17)
- Rollback to rocksdb 5.15.10 #1279
- Log error when a JSON decode problem is encountered #1278
- Create EnodeURL builder #1275
- Keep enode nodeId stored as a BytesValue #1274
- Feature/move subclass in pantheon command #1272
- Expose sync mode option #1270
- Refactor RocksDBStats #1266
- Normalize EnodeURLs #1264
- Build broken in Java 12 #1263
- Make PeerDiscovertAgentTest less flakey #1262
- Ignore extra json rpc params #1261
- Fetch local transactions in isolation #1259
- Update to debug trace transaction #1258
- Use labelled timer to differentiate between rocks db metrics #1254 (thanks to Puneetha17)
- Migrate TransactionPool (& affiliated test) from 'core' to 'eth' #1251
- Use single instance of Rocksdb for privacy #1247 (thanks to Puneetha17)
- Subscribing to sync events should receive false when in sync #1240
- Ignore transactions from the network while behind chain head #1228
- RocksDB Statistics in Metrics #1169
- Add block trace RPC methods #1088 (thanks to kziemianek)
1.0.3
Additions and Improvements
- Notify of dropped messages #1156
- Documentation updates include:
- Added Permissioning Overview
- Added content on Network vs Node Configuration
- Updated RAM requirements
- Added Privacy Overview and Processing Private Transactions
- Renaming of Ethstats Lite Explorer to Ethereum Lite Explorer (thanks to tzapu)
- Added content on using Truffle with Besu
- Added
droppedPendingTransactions
RPC Pub/Sub subscription - Added
eea_*
JSON-RPC API methods - Added architecture diagram
- Updated permissioning CLI options and permissioned network tutorial
Technical Improvements
- Choose sync target based on td rather than height #1256
- CLI ewp options #1246
- Update BesuCommand.java #1245
- Reduce memory usage in import #1239
- Improve eea_sendRawTransaction error messages #1238 (thanks to Puneetha17)
- Single topic filter #1235
- Enable pipeline chain downloader for fast sync #1232
- Make contract size limit configurable #1227
- Refactor PrivacyParameters config to use builder pattern #1226 (thanks to antonydenyer)
- Different request limits for different request types #1224
- Finish off fast sync pipeline download #1222
- Enable fast-sync options on command line #1218
- Replace filtering headers after the fact with calculating number to request up-front #1216
- Support async processing while maintaining output order #1215
- Add Unstable Options to the CLI #1213
- Add private cluster acceptance tests #1211 (thanks to Puneetha17)
- Re-aligned smart contract interface to EEA client spec 477 #1209
- Count the number of items discarded when a pipe is aborted #1208
- Pipeline chain download - fetch and import data #1207
- Permission provider that allows bootnodes if you have no other connections #1206
- Cancel in-progress async operations when the pipeline is aborted #1205
- Pipeline chain download - Checkpoints #1203
- Push development images to public dockerhub #1202
- Push builds of master as docker development images #1200
- Doc CI pipeline for build and tests #1199
- Replace the use of a disconnect listener with EthPeer.isDisconnected #1197
- Prep chain downloader for branch by abstraction #1194
- Maintain the state of MessageFrame in private Tx #1193 (thanks to Puneetha17)
- Persist private world state only if we are mining #1191 (thanks to Puneetha17)
- Remove SyncState from SyncTargetManager #1188
- Acceptance tests base for smart contract node permissioning #1186
- Fix metrics breakages #1185
- Typo #1184 (thanks to araskachoi)
- StaticNodesParserTest to pass on Windows #1183
- Don't mark world state as stalled until a minimum time without progress is reached #1179
- Use header validation policy in DownloadHeaderSequenceTask #1172
- Bond with bootnodes #1160
1.0.2
Additions and Improvements
- Removed DB init when using
public-key
subcommand #1049 - Output enode URL on startup #1137
- Added Remove Peer JSON-RPC #1129
- Added
net_enode
JSON-RPC #1119 (thanks to mbergstrand) - Maintain a
staticnodes.json
#1106 - Added
tx-pool-max-size
command line parameter #1078 - Added PendingTransactions JSON-RPC #1043 (thanks to EdwinLeeGreene)
- Added
admin_nodeInfo
JSON-RPC #1012 - Added
--metrics-category
CLI to only enable select metrics #969 - Documentation updates include:
- Updated endpoints in Private Network Quickstart (thanks to laubai)
- Updated documentation contribution guidelines
- Added
admin_removePeer
- Updated tutorials for printing of enode on startup
- Added
txpool_pantheonTransactions
- Added Transaction Pool content
- Added
tx-pool-max-size
CLI option - Updated developer build instructions to use installDist
- Added Azure quickstart tutorial
- Enabled copy button in code blocks
- Added IBFT 1.0
- Added section on using Geth attach with Besu
- Enabled the edit link doc site to ease external doc contributions
- Added EthStats docs (thanks to baxy)
- Updated Postman collection
- Added
metrics-category
CLI option - Added information on block time and timeout settings for IBFT 2.0
- Added
admin_nodeInfo
- Added permissions images
- Added permissioning blog to Resources
- Updated Create Permissioned Network tutorial to use
export-address
- Updated Clique and IBFT 2.0 docs to include complete genesis file
- Updated Clique tutorial to use
export-address
subcommand - Added IBFT 2.0 future message configuration options
Technical Improvements
- Fixed so self persists to the whitelist #1176
- Fixed to add self to permissioning whitelist #1175
- Fixed permissioning issues #1174
- AdminAddPeer returns custom Json RPC error code #1171
- Periodically connect to peers from table #1170
- Improved bootnodes option error message #1092
- Automatically restrict trailing peers while syncing #1167
- Avoid bonding to ourselves #1166
- Fix Push Metrics #1164
- Synchroniser waits for new peer if best is up to date #1161
- Don't attempt to download checkpoint headers if the number of headers is negative #1158
- Capture metrics on Vertx event loop and worker thread queues #1155
- Simplify node permissioning ATs #1153
- Add metrics around discovery process #1152
- Prevent connecting to self #1150
- Refactoring permissioning ATs #1148
- Added two extra Ropsten bootnodes #1147
- Fixed TCP port handling #1144
- Better error on bad header #1143
- Refresh peer table while we have fewer than maxPeers connected #1142
- Refactor jsonrpc consumption of local node permissioning controller #1140
- Disconnect peers before the pivot block while fast syncing #1139
- Reduce the default transaction pool size from 30,000 to 4096 #1136
- Fail at load if static nodes not whitelisted #1135
- Fix private transaction acceptance test #1134 (thanks to Puneetha17)
- Quieter exceptions when network is unreachable #1133
- nodepermissioningcontroller used for devp2p connection filtering #1132
- Remove duplicates from apis specified via CLI #1131
- Synchronizer returns false if it is in sync #1130
- Added fromHexStringStrict to check for exactly 20 byte addresses #1128
- Fix deadlock scenario in AsyncOperationProcessor and re-enable WorldStateDownloaderTest #1126
- Ignore WorldStateDownloaderTest #1125
- Updated local config permissioning flags #1118
- Pipeline Improvements #1117
- Permissioning cli smart contract #1116
- Adding default pending transactions value in BesuControllerBuilder #1114
- Fix intermittency in WorldStateDownloaderTest #1113
- Reduce number of seen blocks and transactions Besu tracks #1112
- Timeout long test #1111
- Errorprone 2.3.3 upgrades #1110
- Add metric to capture memory used by RocksDB table readers #1108
- Don't allow creation of multiple gauges with the same name #1107
- Update Peer Discovery to use NodePermissioningController #1105
- Move starting world state download process inside WorldDownloadState #1104
- Enable private Tx capability to Clique #1102 (thanks to Puneetha17)
- Enable private Tx capability to IBFT #1101 (thanks to Puneetha17)
- Version Upgrades #1100
- Don't delete completed tasks from RocksDbTaskQueue #1099
- Support flat mapping with multiple threads #1098
- Add pipe stage name to thread while executing #1097
- Use pipeline for world state download #1096
- TXPool JSON RPC tweaks #1095
- Add in-memory cache over world state download queue #1087
- Trim default metrics #1086
- Improve imported block log line #1085
- Smart contract permission controller #1083
- Add timeout when waiting for JSON-RPC, WebSocket RPC and Metrics services to stop #1082
- Add pipeline framework to make parallel processing simpler #1077
- Node permissioning controller #1075
- Smart contract permission controller stub #1074
- Expose a synchronous start method in Runner #1072
- Changes in chain head should trigger new permissioning check for active peers #1071
- Fix exceptions fetching metrics after world state download completes #1066
- Accept transactions in the pool with nonce above account sender nonce #1065
- Repair Istanbul to handle Eth/62 & Eth/63 #1063
- Close Private Storage Provider #1059 (thanks to Puneetha17)
- Add labels to Pipelined tasks metrics #1057
- Re-enable Quorum Synchronisation #1056
- Don't log expected failures as errors #1054
- Make findSuitablePeer abstract #1053
- Track added at in txpool #1048
- Fix ImportBlocksTask to only request from peers that claim to have the blocks #1047
- Don't run the dao block validator if dao block is 0 #1044
- Don't make unnecessary copies of data in RocksDbKeyValueStorage #1040
- Update discovery logic to trust bootnodes only when out of sync #1039
- Fix IndexOutOfBoundsException in DetermineCommonAncestorTask #1038
- Add
rpc_modules
JSON-RPC #1036 - Simple permissioning smart contract #1035
- Refactor enodeurl to use inetaddr #1032
- Update CLI options in mismatched genesis file message #1031
- Remove dependence of eth.core on eth.permissioning #1030
- Make alloc optional and provide nicer error messages when genesis config is invalid #1029
- Handle metrics request closing before response is generated #1028
- Change EthNetworkConfig bootnodes to always be URIs #1027
- Avoid port conflicts in acceptance tests #1025
- Include reference tests in jacoco #1024
- Acceptance test - configurable gas price #1023
- Get Internal logs and output #1022 (thanks to Puneetha17)
- Fix race condition in WebSocketService #1021
- Ensure devp2p ports are written to ports file correctly #1020
- Report the correct tcp port in PING packets when it differs from the UDP port #1019
- Refactor transient transaction processor #1017
- Resume world state download from existing queue #1016
- IBFT Acceptance tests updated with longer timeout on first block #1015
- Update IBFT acceptances tests to await first block #1013
- Remove full hashimoto implementation as its never used #1011
- Created SyncStatus notifications #1010
- Address acceptance test intermittency #1008
- Consider a world state download stalled after 100 requests with no progress #1007
- Reduce log level when block miner is interrupted #1006
- RunnerTest fail on Windows due to network startup timing issue #1005
- Generate Private Contract Address #1004 (thanks to vinistevam)
- Delete the legacy pipelined import code #1003
- Fix race condition in WebSocket AT #1002
- Cleanup IBFT logging levels #995
- Integration Test implementation dependency for non-IntelliJ IDE #992
- Ignore fast sync and full sync tests to avoid race condition #991
- Make acceptance tests use the process based runner again #990
- RoundChangeCertificateValidator requires unique authors #989
- Make Rinkeby the benchmark chain. #986
- Add metrics to Parallel Download pipeline #985
- Change ExpectBlockNumber to require at least the specified block number #981
- Fix benchmark compilation #980
- RPC tests can use 127.0.0.1 loopback rather than localhost #974 thanks to glethuillier for raising)
- Disable picocli ansi when testing #973
- Add a jmh benchmark for WorldStateDownloader #972
- Gradle dependency for JMH annotation, for IDEs that aren't IntelliJ (… #971
- Separate download state tracking from WorldStateDownloader #967
- Gradle dependency for JMH annotation, for IDEs that aren't IntelliJ #966
- Truffle HDwallet Web3 1.0 #964
- Add missing JavaDoc tags in JSONToRLP #963
- Only import block if it isn't already on the block chain #962
- CLI stack traces when debugging #960
- Create peer discovery packets on a worker thread #955
- Remove start functionality from IbftController and IbftBlockHeightMan… #952
- Cleanup IBFT executors #951
- Single threaded world state persistence #950
- Fix version number on master #946
- Change automatic benchmark #945
- Eliminate redundant header validation #943
- RocksDbQueue Threading Tweaks #940
- Validate DAO block #939
- Complete Private Transaction Processor #938 (thanks to iikirilov)
- Add metrics for netty queue length #932
- Update GetNodeDataFromPeerTask to return a map #931
1.0.1
Public key address export subcommand was missing in 1.0 release.
Additions and Improvements
- Added
public-key export-address
subcommand #888 - Documentation update for the
public-key export-address
subcommand. - Updated IBFT 2.0 overview to include use of
rlp encode
command and information on setting IBFT 2.0 properties to achieve your desired block time.
1.0
Additions and Improvements
- IBFT 2.0
- Permissioning
- JSON-RPC Authentication
- Added
rlp encode
subcommand #965 - Method to reload permissions file #834
- Added rebind mitigation for Websockets. #905
- Support genesis contract code #749 (thanks to kziemianek).
- Documentation updates include:
- Added details on port configuration
- Added Resources page linking to Besu blog posts and webinars
- Added JSON-RPC Authentication
- Added tutorial to create permissioned network
- Added Permissioning content
- Added Permissioning API methods
- Added tutorial to create Clique private network
- Added tutorial to create IBFT 2.0 private network
Technical Improvements
- RoundChangeCertificateValidator requires unique authors #997
- RPC tests can use 127.0.0.1 loopback rather than localhost #979
- Integration Test implementation dependency for non-IntelliJ IDE #978
- Only import block if it isn't already on the block chain #977
- Disable picocli ansi when testing #975
- Create peer discovery packets on a worker thread #961
- Removed Orion snapshot dependency #933
- Use network ID instead of chain ID in MainnetBesuController. #929
- Propagate new block messages to other clients in a worker thread #928
- Parallel downloader should stop on puts if requested. #927
- Permission config file location and option under docker #925
- Fixed potential stall in world state download #922
- Refactoring to introduce deleteOnExit() for temp files #920
- Reduce "Received transactions message" log from debug to trace #919
- Handle PeerNotConnected exceptions when sending wire keep alives #918
- admin_addpeers: error if node not whitelisted #917
- Expose the Ibft MiningCoordinator #916
- Check perm api against perm cli #915
- Update metrics when completing a world state request with existing data #914
- Improve RocksDBQueue dequeue performance #913
- Error when removing bootnodes from nodes whitelist #912
- Incremental Optimization(s) on BlockBroadcaster #911
- Check permissions CLI dependencies #909
- Limit the number of times we retry peer discovery interactions #908
- IBFT to use VoteTallyCache #907
- Add metric to expose number of inflight world state requests #906
- Bootnodes not on whitelist - improve errors #904
- Make chain download cancellable #901
- Enforce accounts must start with 0x #900
- When picking fast sync pivot block, use the peer with the best total difficulty #899
- Process world state download data on a worker thread #898
- CLI mixin help #895 (macfarla)
- Use absolute datapath instead of relative. #894.
- Fix task queue so that the updated failure count for requests is stored #893
- Fix authentication header #891
- Reorganize eth tasks #890
- Unit tests of BlockBroadcaster #887
- Fix authentication file validation errors #886
- Fixing file locations under docker #885
- Handle exceptions properly in EthScheduler #884
- More bootnodes for goerli #880
- Rename password hash command #879
- Add metrics for EthScheduler executors #878
- Disconnect peer removed from node whitelist #877
- Reduce logging noise from invalid peer discovery packets and handshaking #876
- Detect stalled world state downloads #875
- Limit size of Ibft future message buffer #873
- Ibft2: Replace NewRound with extended Proposal #872
- Fixed admin_addPeer to periodically check maintained connections #871
- WebSocket method permissions #870
- Select new pivot block when world state becomes unavailable #869
- Introduce FutureUtils to reduce duplicated code around CompletableFuture #868
- Implement world state cancel #867
- Renaming authentication configuration file CLI command #865
- Break out RoundChangeCertificate validation #864
- Disconnect peers where the common ancestor is before our fast sync pivot #862
- Initial scaffolding for block propagation #860
- Fix NullPointerException when determining fast sync pivot #859
- Check for invalid token #856
- Moving NodeWhitelistController to permissioning package #855
- Fix state download race condition by creating a TaskQueue API #853
- Changed separator in JSON RPC permissions #852
- WebSocket acceptance tests now can use WebSockets #851
- IBFT notifies EthPeer when remote node has a better block #849
- Support resuming fast-sync downloads #848
- Tweak Fast Sync Config #847
- RPC authentication configuration validation + tests. #846
- Tidy-up FastSyncState persistence #845
- Do parallel extract signatures in the parallel block importer. #844
- Fix 'the Input Is Too Long' Error on Windows #843 (thanks to glethuillier).
- Remove unnecessary sleep #842
- Shutdown improvements #841
- Speed up shutdown time #838
- Add metrics to world state downloader #837
- Store pivot block header #836
- Clique should use beneficiary of zero on epoch blocks #833
- Clique should ignore proposals for address 0 #831
- Fix intermittency in FullSyncDownloaderTest #830
- Added the authentication service to the WebSocket service #829
- Extract creation and init of ProtocolContext into a re-usable class #828
- Prevent duplicate commit seals in ibft header #827
- Validate Ibft vanity data length #826
- Refactored json rpc authentication to be provided as a service #825
- Handle unavailable world states #824
- Password in JWT payload #823
- Homogenize error messages when required parameters are set #822 (glethuillier).
- Set remote peer chain head to parent of block received in NEW_BLOCK_MESSAGE #819
- Peer disconnects should not result in stack traces #818
- Abort previous builds #817
- Parallel build stages #816
- JWT authentication for JSON-RPC #815
- Log errors that occur while finding a common ancestor #814
- Shuffled log levels #813
- Prevent duplicate IBFT messages being processed by state machine #811
- Fix Orion startup ports #810
- Commit world state continuously #809
- Improve block propagation time #808
- JSON-RPC authentication cli options & acceptance tests #807
- Remove privacy not supported warning #806 (thanks to vinistevam)
- Wire up Private Transaction Processor #805 (thanks to Puneetha17)
- Apply a limit to the number of responses in RespondingEthPeer.respondWhile #803
- Avoid requesting empty block bodies from the network. #802
- Handle partial responses to get receipts requests #801
- Rename functions in Ibft MessageValidator #800
- Upgrade GoogleJavaFormat to 1.7 #795
- Minor refactorings of IntegrationTest infrastructure #786
- Rework Ibft MessageValidatorFactory #785
- Rework IbftRoundFactory #784
- Rename artefacts to artifacts within IBFT #782
- Rename TerminatedRoundArtefacts to PreparedRoundArtefacts #781
- Rename Ibft MessageFactory methods #779
- Update WorldStateDownloader to only filter out known code requests #777
- Multiple name options only search for the longest one #776
- Move ethTaskTimer to abstract root #775
- Parallel Block importer #774
- Wait for a peer with an estimated chain height before selecting a pivot block #772
- Randomly perform full validation when fast syncing blocks #770
- IBFT Message rework, piggybacking blocks on msgs. #769
- EthScheduler additions #767
- Fixing node whitelist isPermitted check #766
- Eth/63 labels #764
- Permissioning whitelist persistence. #763
- Created message validators for NewRound and RoundChange #760
- Add tests for FastSyncChainDownloader as a whole #758
- Flatten IBFT Message API #757
- Added TerminatedRoundArtefacts #756
- Fix thread names in EthScheduler to include the thread number #755
- Separate round change reception from RoundChangeCertificate #754
- JSON-RPC authentication login #753
- Spilt Ibft MessageValidator into components #752
- Ensure first checkpoint headers is always in local blockchain for FastSyncCheckpointHeaderManager #750
- Refactored permissioning components to be Optional. #747
- Integrate rocksdb-based queue into WorldStateDownloader #746
- Generify orion to enclave #745 (thanks to vinistevam)
- Moved IBFT Message factory to use wrapped message types #744
- Handle timeouts when requesting checkpoint headers correctly #743
- Update RoundChangeManager to use flattened message #742
- Handle validation failures when fast importing blocks #741
- Updated IbftRound and RoundState APIs to use wrapped messages #740
- Exception handling #739
- Upgrade dependency versions and build cleanup #738
- Update IbftBlockHeigntManager to accept new message types. #737
- Error response handling for permissions APIs #736
- IPV6 bootnodes don't work #735
- Updated to use tags of pantheon build rather than another repo #734
- Log milestones at startup and other minor logging improvements #733
- Create wrapper types for Ibft Signed messages #731
- Ibft to uniquely ID messages by their hash #730
- Rename ibftrevised to ibft2 #722
- Limit ibft msg queues #704
- Implement privacy precompiled contract #696 (thanks to Puneetha17)
- Integration of RecursivePeerRefreshState and PeerDiscoveryController #420
0.9.1
Built and compatible with with JDK8.
0.9
Breaking Changes to Command Line
Breaking changes have been made to the command line options in v0.9 to improve usability. Many v0.8 command line options no longer work.
The documentation has been updated throughout to use the changed command line options and the command line reference documents the changed options.
Previous Option | New Option | Change |
---|---|---|
--config |
--config-file |
Renamed |
--datadir |
--data-path |
Renamed |
--dev-mode |
--network=dev |
Replaced by --network option |
--genesis |
--genesis-file |
Renamed |
--goerli |
[--network=goerli ]((https://besu.hyperledger.org/en/latest/Reference/CLI/CLI-Syntax/#network) |
Replaced by --network option |
--metrics-listen=<HOST:PORT> |
--metrics-host=<HOST> and --metrics-port=<PORT> |
Split into host and port options |
--miner-extraData |
--miner-extra-data |
Renamed |
--miner-minTransactionGasPriceWei |
--min-gas-price |
Renamed |
--no-discovery |
--discovery-enabled |
Replaced |
--node-private-key |
--node-private-key-file |
Renamed |
--ottoman |
N/A | Removed |
--p2p-listen=<HOST:PORT> |
--p2p-host=<HOST> and --p2p-port=<PORT> |
Split into host and port options |
--rinkeby |
[--network=rinkeby ]((https://besu.hyperledger.org/en/latest/Reference/CLI/CLI-Syntax/#network) |
Replaced by --network option |
--ropsten |
[--network=ropsten ]((https://besu.hyperledger.org/en/latest/Reference/CLI/CLI-Syntax/#network) |
Replaced by --network option |
--rpc-enabled |
--rpc-http-enabled |
Renamed |
--rpc-listen=<HOST:PORT> |
--rpc-http-host=<HOST> and --rpc-http-port=<PORT> |
Split into host and port options |
--rpc-api |
--rpc-http-api |
Renamed |
--rpc-cors-origins |
--rpc-http-cors-origins |
Renamed |
--ws-enabled |
--rpc-ws-enabled |
Renamed |
--ws-api |
--rpc-ws-api |
Renamed |
--ws-listen=<HOST:PORT> |
--rpc-ws-host=<HOST> and --rpc-ws-port=<PORT> |
Split into host and port options |
--ws-refresh-delay |
--rpc-ws-refresh-delay |
Renamed |
Previous Subcommand | New Subcommand | Change |
---|---|---|
pantheon import <block-file> |
pantheon blocks import --from=<block-file> |
Renamed |
pantheon export-pub-key <key-file> |
pantheon public-key export --to=<key-file> |
Renamed |
Private Network Quickstart
The Private Network Quickstart has been moved from the pantheon
repository to the pantheon-quickstart
repository. The Private Network Quickstart tutorial
has been updated to use the moved quickstart.
Additions and Improvements
--network=goerli
supports relaunch of Görli testnet #717- TOML authentication provider #689
- Metrics Push Gateway Options #678
- Additional logging details for IBFT 2.0 #650
- Permissioning config TOML file #643
- Added metrics Prometheus Push Gateway Support #638
- Clique and IBFT not enabled by default in RPC APIs #635
- Added
admin_addPeer
JSON-RPC API method #622 - Implemented
--p2p-enabled
configuration item #619 - Command options and commands renaming #618
- Added IBFT get pending votes #603
- Implement Petersburg hardfork #601
- Added private transaction abstraction #592 (thanks to iikirilov)
- Added privacy command line commands #584 (thanks to Puneetha17)
- Documentation updates include:
- Updated Private Network Quickstart tutorial
to use quickstart in
pantheon-quickstart
repository and indicate that the quickstart is not supported on Windows. - Added IBFT 2.0 content and JSON RPC API methods.
- Added consensus protocols content.
- Added content on events and logs, and using filters.
- Added content on integrating with Prometheus Push Gateway
- Updated Private Network Quickstart tutorial
to use quickstart in
Technical Improvements
- Download receipts during fast sync and import without processing transactions #701
- Removed CLI options for
--nodes-whitelist
and--accounts-whitelist
#694 - Delegate
getRootCause
through to Guava's implementation #692 - Benchmark update #691
- Implement chain download for fast sync #690
- Allow missing accounts to create zero-cost transactions #685
- Node private key location should be fixed under docker #684
- Parallel Processing File Import Performance #683
- Integrate actual
WorldStateDownloader
with the fast sync work flow #682 - Removed
--max-trailing-peers
option #680 - Enabled warning on CLI dependent options #679
- Update WorldStateDownloader run() interface to accept header #677
- Fixed Difficulty calculator #663
discovery-enabled
option refactoring #661- Update orion default port approach #660
- Extract out generic parts of Downloader #659
- Start world downloader #658
- Create a simple
WorldStateDownloader
#657 - Added handling for when p2p is disabled #655
- Enabled command line configuration for privacy precompiled contract address #653 (thanks to Puneetha17)
- IBFT transmitted packets are logged by gossiper #652
admin_addPeer
acceptance test #651- Added
p2pEnabled
configuration toProcessBesuNodeRunner
#649 - Added description to automatic benchmarks #646
- Added
network
option #645 - Remove OrionConfiguration #644 (thanks to Puneetha17)
- IBFT Json Acceptance tests #634
- Upgraded build image to one that contains libsodium #632
- Command line fixes #630
- Consider peer count insufficient until minimum peers for fast sync are connected #629
- Build tweaks #628
- IBFT ensure non-validator does not partake in consensus #627
- Added ability in acceptance tests to set up a node with
--no-discovery
#624 - Gossip integration test #623
- Removed quickstart code and CI pipeline #616
- IBFT Integration Tests - Spurious Behaviour #615
- Refactoring for more readable IBFT IT #614
- Start of fast sync downloader #613
- Split
IbftProcessor
into looping and event processing #612 - IBFT Int Test - changed
TestContextFactory
to a builder #611 - Discard prior round change msgs #610
IbftGetValidatorsByBlockHash
added to json factory #607- IBFT Validator RPCs to return list of strings #606
- Update Benchmark #605
- Remove db package and move classes to more appropriate locations #599
- Added
GetReceiptsFromPeerTask
#598 - Added
GetNodeDataFromPeerTask
#597 - Fixed deprecation warnings #596
- IBFT Integration Tests - Future Height #591
- Added
getNodeData
toEthPeer
to enable requesting node data #589 Blockcreator
to useparentblock
specified at constuction #588- Support responding to
GetNodeData
requests #587 - IBFT validates block on proposal reception #583
- Rework
NewRoundValidator
tests #582 - IBFT split extra data validation rule into components #581
- Allow attached rules to be flagged
light
#580 - Split Block Validation from Importing #579
- Refactor
RoundChangeManager
creation #578 - Add
-SNAPSHOT
postfix to version #577 - IBFT - prevent proposed block being imported twice #576
- Version upgrades #571
- Tests that CLI options are disabled under docker #566
- Renamed IBFT networking classes #555
- Removed dead code from the consensus package #554
- Prepared private transaction support #538 (thanks to iikirilov)
0.8.5
Indefinitely delays the roll-out of Constantinople on Ethereum Mainnet due to a potential security issue detected.
Additions and Improvements
- Remove Constantinople fork block #574
Technical Improvements
- Rename IBFT message packages #568
0.8.4
Docker Image
If you have been running a node using the v0.8.3 Docker image, the node was not saving data to the specified data directory, or referring to the custom configuration file or genesis file.
To recover the node key and data directory from the Docker container:
docker cp <container>:/opt/pantheon/key <destination_file>
docker cp <container>:/opt/pantheon/database <destination_directory>
Where container
is the name or ID of the Docker container containing the Besu node.
The container can be running or stopped when you copy the key and data directory. If your node was fully synchronized to MainNet, the data directory will be ~2TB.
When restarting your node with the v0.8.4 Docker image:
- Save the node key in the
key
file in the data directory or specify the location using the--node-private-key
option. - Specify the
<destination_directory
as a volume for the data directory.
Bug Fixes
- Fixing default resource locations inside docker #529
- NewRoundMessageValidator ignores Round Number when comparing blocks #523
- Fix Array Configurable command line options #514
Additions and Improvements
- RocksDB Metrics #531
- Added
ibft_getValidatorsByBlockHash
JSON RPC #519 - Expose metrics to Prometheus #506
- Added
ibft_getValidatorsByBlockNumber
#499 - Added
Roadmap.md
file. #494 - Added JSON RPC
eth hashrate
method. #488 - Account whitelist API #487
- Added nodes whitelist JSON-RPC APIs #476
- Added account whitelisting #460
- Added configurable refresh delay for SyncingSubscriptionService on start up #383
- Added the Command Line Style Guide #530
- Documentation updates include:
- Migrated to new documentation site
- Added configuration file content
- Added tutorial to create private network
- Added content on enabling non-default APIs
Technical Improvements
- Updated
--bootnodes
command option to take zero arguments #548 - IBFT Integration Testing - Local Node is proposer #527
- Remove vertx from discovery tests #539
- IBFT Integration testing - Round Change #537
- NewRoundMessageValidator creates RoundChangeValidator with correct value #518
- Remove time dependency from BlockTimer tests #513
- Gradle 5.1 #512
- Metrics measurement adjustment #511
- Metrics export for import command. #509
- IBFT Integration test framework #502
- IBFT message gossiping #501
- Remove non-transactional mutation from KeyValueStore #500
- Ensured that the blockchain queries class handles optionals better. #486
- IBFT mining acceptance test #483
- Set base directory name to be lowercase in building.md #474 (Thanks to Matthalp)
- Moved admin_peers to Admin API group #473
- Nodes whitelist acceptance test #472
- Rework RoundChangeManagerTest to not reuse validators #469
- Ignore node files to support truffle. #467
- IBFT pantheon controller #461
- IBFT Round to update internal state on reception of NewRound Message #451
- Update RoundChangeManager correctly create its message validator #450
- Use seconds for block timer time unit #445
- IBFT controller and future msgs handling #431
- Allow IBFT Round to be created using PreparedCert #429
- Added MessageValidatorFactory #425
- Inround payload #423
- Updated IbftConfig Fields #422
- Repair IbftBlockCreator and add tests #421
- Make Besu behave as a submodule #419
- Ibft Height Manager #418
- Ensure bootnodes are a subset of node whitelist #414
- IBFT Consensus Round Classes #405
- IBFT message payload tests #404
- Validate enodeurl syntax from command line #403
- Update errorprone #401
- IBFT round change manager #393
- IBFT RoundState #392
- Move Block data generator test helper to test support package #391
- IBFT message tests #367
0.8.3
Breaking Change to JSON RPC-API
From v0.8.3, incoming HTTP requests are only accepted from hostnames specified using the --host-whitelist
command-line option. If not specified, the default value for --host-whitelist
is localhost
.
If using the URL http://127.0.0.1
to make JSON-RPC calls, use --host-whitelist
to specify the hostname 127.0.0.1
or update the hostname to localhost
.
If your application publishes RPC ports, specify the hostnames when starting Besu. For example:
pantheon --host-whitelist=example.com
Specify *
or all
for --host-whitelist
to effectively disable host protection and replicate pre-v0.8.3 behavior. This is not recommended for production code.
Bug Fixes
- Repair Clique Proposer Selection #339
- High TX volume swamps block processing #337
- Check if the connectFuture has completed successfully #293
- Switch back to Xerial Snappy Library #284
- ShortHex of 0 should be '0x0', not '0x' #272
- Fix pantheon CLI default values infinite loop #266
Additions and Improvements
- Added
--nodes-whitelist
parameter to CLI and NodeWhitelistController #346 - Discovery wiring for
--node-whitelist
#365 - Plumb in three more metrics #344
ProposerSelection
to support multiple IBFT implementations #307- Configuration to support IBFT original and revised #306
- Added host whitelist for JSON-RPC. Breaking Change #295
- Reduce
Block creation processed cancelled
log message to debug #294 - Implement iterative peer search #268
- Added RLP enc/dec for PrePrepare, Commit and NewRound messages #200
- IBFT block mining #169
- Added
--goerli
CLI option #370 (Thanks to @Nashatyrev) - Begin capturing metrics to better understand Besu's behaviour #326
- Documentation updates include:
- Added Coding Conventions #342
- Reorganised Installation documentation and added Chocolatey installation for Windows
- Reorganised JSON-RPC API documentation
- Updated RPC Pub/Sub API documentation
Technical Improvements
- Extracted non-Docker CLI parameters to picoCLI mixin. #323
- IBFT preprepare to validate round matches block #329
- Fix acceptance test #324
- Added the
IbftFinalState
#385 - Constantinople Fork Block #382
- Fix
pantheon.cli.BesuCommandTest
test on Windows #380 - JDK smoke testing is being configured differently now #374
- Re-enable clique AT #373
- Ignoring acceptance test #372
- Changes to support Gradle 5.0 #371
- Clique: Prevent out of turn blocks interrupt in-turn mining #364
- Time all tasks #361
- Rework
VoteTallyCache
to better represent purpose #360 - Add an
UNKNOWN
DisconnectReason
#359 - New round validation #353
- Update get validators for block hash test to start from block 1 #352
- Idiomatic Builder Pattern #345
- Revert
Repair Clique Proposer Selection
#339 - Breaks Görli testnet #343 - No fixed ports in tests #340
- Update clique acceptance test genesis file to use correct clique property names #338
- Supporting list of addresses in logs subscription #336
- Render handler exception to
System.err
instead of.out
#334 - Renamed IBFT message classes #333
- Add additional RLP tests #332
- Downgrading spotless to 3.13.0 to fix threading issues #325
eth_getTransactionReceipt
acceptance test #322- Upgrade vertx to 3.5.4 #316
- Round change validation #315
- Basic IBFT message validators #314
- Minor repairs to clique block scheduling #308
- Dependencies Version upgrade #303
- Build multiple JVM #301
- Smart contract acceptance test #296
- Fixing WebSocket error response #292
- Reword error messages following exceptions during mining #291
- Clique acceptance tests #290
- Delegate creation of additional JSON-RPC methods to the BesuController #289
- Remove unnecessary
RlpInput
andRlpOutput
classes #287 - Remove
RlpUtils
#285 - Enabling previously ignored acceptance tests #282
- IPv6 peers #281
- IPv6 Bootnode #280
- Acceptance test for
getTransactionReceipt
JSON-RPC method #278 - Inject
StorageProvider
intoBesuController
instances #259
0.8.2
Removed
- Removed
import-blockchain
command because nothing exports to the required format yet (PR #223)
Bug Fixes
io.netty.util.internal.OutOfDirectMemoryError
errors by removing reference counting from network messages.- Log spam: endless loop in
nioEventLoopGroup
thanks to @5chdn for reporting) (PR #261) - Rinkeby import can stall with too many fragments thanks to @steffenkux and @5chdn for reporting) (PR #255)
- Clique incorrectly used the chain ID instead of the network ID in ETH status messages (PR #209)
- Gradle deprecation warnings (PR #246 with thanks to @jvirtanen)
- Consensus issue on Ropsten:
- File name too long error while building from source thanks to @5chdn for reporting) (PR #221)
- Loop syntax in
runBesuPrivateNetwork.sh
(PR #237 thanks to @matt9ucci) - Fix
CompressionException: Snappy decompression failed
errors thanks to @5chdn for reporting) (PR #274)
Additions and Improvements
- Added
--ropsten
command line argument to make syncing to Ropsten easier (PR #197 with thanks to @jvirtanen) - Enabled constantinople in
--dev-mode
(PR #256) - Supported Constantinople with Clique thanks to @5chdn for reporting) (PR #250, PR #247)
- Implemented
eth_chainId
JSON-RPC method (PR #219) - Updated client version to be ethstats friendly (PR #258)
- Added
--node-private-key
option to allow nodekey file to be specified separately to data directory thanks to @peterbroadhurst for requesting) (PR #234) - Added
--banned-nodeids
option to prevent connection to specific nodes (PR #254) - Send client quitting disconnect message to peers on shutdown (PR #253)
- Improved error message for port conflict error (PR #232)
- Improved documentation by adding the following pages:
Technical Improvements
- Upgraded Ethereum reference tests to 6.0 beta 2. (thanks to @jvirtanen for the initial upgrade to beta 1)
- Set Java compiler default encoding to UTF-8 (PR #238 thanks to @matt9ucci)
- Removed duplicate code defining default JSON-RPC APIs (PR #218 thanks to @matt9ucci)
- Improved code for parsing config (PRs #208, #209)
- Use
java.time.Clock
in favour of a custom Clock interface (PR #220) - Improve modularity of storage systems (PR #211, #207)
- Treat JavaDoc warnings as errors (PR #171)
- Add benchmark for
BlockHashOperation
as a template for benchmarking other EVM operations (PR #203) - Added unit tests for
EthBlockNumber
(PR #195 thanks to @jvirtanen) - Code style improvements (PR #196 thanks to @jvirtanen)
- Added unit tests for
Web3ClientVersion
(PR #194 with thanks to @jvirtanen) - Removed RLPUtils from
RawBlockIterator
(PR #179) - Replace the JNI based snappy library with a pure-Java version (PR #257)