Releases: hyperledger-archives/burrow
v0.23.3
Fixed
- [State] Since State hash is not unique (i.e if we make no writes) by storing the CommitID by AppHash we can overwrite an older CommitID with a newer one leading us to load the wrong tree version to overwrite in case of loading from a checkpoint.
v0.23.2
Hotfix release for 0.23.1
Fixed
- [State] Fixed issue with checkpointing whereby RWTree would load its readTree from one version lower than it should.
v0.23.1
Fixed
- [EVM] state/Cache no longer allows SetStorage on accounts that do not exist
- [GRPC] GetAccount on unknown account no longer causes a panic
Added
- [Docker] Added solc 0.4.25 binary to docker container so that burrow deploy has what it needs to function
- [Execution] panics from executors are captured and pushed to error sink of TxExecution
v0.23.0
Changed
- [ABI] provides fast event lookup of EventID
- [Events] BlockExecution now included full Tendermint block header as protobuf object rather than JSON string
- [EVM] Nested call errors are now transmitted to EventSink (e.g. TxExecution) as events for better tracing and tests
- [SNative] Permissions contract returns permission flag set not resultant permissions from setBase unsetBase and setGlobal
- [EVM] Errors transmitted through errors.Pusher interface for more reliable capture from memory, stack, and elsewhere
- [Governance] Breaking change to state structure due to governance storage in tree (state root hashes will not match)
Fixed
- [EVM] Issue where value was not transferred because VM call state was not synced
- [EVM] Various issue where errors were swallowed (in particular - where calling an empty account and when a TX was invalid on delivery)
- [EVM] When calling a non-existent account CreateAccount permission is checked on the caller not the caller's caller
- [CLI] Version now contains date and commit
- [Test] Burrow integration test runner shuts down Burrow correctly
- [Serialisation] updated tmthrgd/go-hex to fallback on default encoding when lacking SSE 4.1 CPU instructions
Added
- [Deploy] Burrow deploy meta jobs reuses GRPC connection
- [Governance] Added proposal mechanism (via ProposalTx) that allows bulk atomic update of smart contracts and changing network parameters via a threshold voting mechanism. This allows some level of network evolution without any single trusted party or hard forks. This should be considered alpha level functionality.
- [EVM] Added EVM State interface removing unnecessary cache layer (fixing various issues)
- [EVM] Implemented STATICCALL opcode
- [P2P] Added AuthorizedPeers config option to sync only with whitelisted peers exposed over ABCI query under key /p2p/filter/
- [EVM] stack depth now dynamically allocated and exponentially grown in the same way as memory
- [EVM] Solidity proxy call forwarding test
Removed
- MutableAccount and ConcreteAccount
v0.22.0
Changed
- Upgraded to Tendermint 0.24.0
- Upgraded to IAVL 0.11.0
Fixed
- Fixed non-determinism in Governance Tx
- Fixed various abi issues
Added
- burrow deploy displays revert reason when available
- burrow deploy compiles contracts concurrently
v0.21.0
Changed
- Upgraded to Tendermint 0.23.0
- Validator Set Power now takes Address
- RPC/TM config renamed to RPC/Info
Added
- Burrow deploy creates devdoc
- Docker image has org.label-schema labels
Fixed
- Upgrade to IAVL 0.10.0 and load previous versions immutably on boot - for chains with a long history > 20 minute load times could be observed because every previous root was being loaded from DB rather than lightweight version references as was intended
- Metrics server does not panic on empty block metas and recovers from other panics
v0.20.1
Changed
- The snatives functions have new signatures; string arguments are now string, not byte32.
- The Solidity interface contracts can be generated using the "burrow snatives" command, and the make snatives target is gone.
Fixed
- TxExecutions that were exceptions (for example those that were REVERTed) will no longer have their events emitted from ExecutionEventsServer.GetEvents. They remain stored in state for the time being.
- CallTxSim and CallCodeSim now take same code path as real transactions (via CallContext)
- Release our mempool signing lock once transactions have been CheckTx'd' to massively increase throughput.
Added
- Upgraded to Tendermint 0.22.8 (from 0.22.4).
- Support mempool signing for BroadcastTxAsync.
- Reload log file (e.g. for logrotate) on SIGHUP and dump capture logs on SIGUSR1 and on shutdown (e.g. for debug).
- File logger accepts {{.Timestamp}} in file names to generate a log file per run.
- Ability to set --external-address on burrow configure and burrow start
- Ability to set various command line options on burrow configure and burrow start and by BURROW_ prefixed environment variables
- Exposed Tendermint SeedMode option
v0.20.0
This is a major (pre-1.0.0) release that introduces the ability to change the validator set through GovTx, transaction execution history, and fuller GRPC endpoint.
Breaking changes
- Address format has been changed (by Tendermint and we have followed suite) - conversion is possible but simpler to regenerated keys
- JSON-RPC interface has been removed
- burrow-client has been removed
- rpc/TM methods for events and broadcast have been removed
Features
- Tendermint 0.24.4
- GovTx GRPC service. The validator set can be now be changed.
- Enhanced GRPC services: NameReg, Transaction index, blocks service
- Events GRPC service
- Transaction Service can set value transferred
Improvements
- The output of "burrow keys export" can be templated
Bug fixes
- Fixed panic on nil bounds for blocks service
v0.19.0
This is a major (pre-1.0.0) release that brings upgrades, safety improvements, cloud configuration, and GRPC endpoints to Burrow.
Breaking changes
In addition to breaking changes associated with Tendermint (see their changelog):
- State checkpointing logic has changed which has we load based on blockchain
- Event format has changed over rpc/V0 see execution/events/ package
- On-disk keys format has change from monax-keys to be more standard burrow keys
- Address format has been changed (by Tendermint and we have followed suite) - conversion is possible but simpler to regenerated keys
Features
- Tendermint 0.21.0
- Implemented EVM opcodes: REVERT, INVALID, SHL, SAR, SHR, RETURNDATACOPY, RETURNDATASIZE
- Add config templating with burrow configure --config-template-in --config-out
- Add config templates for kubernetes
- Integrate monax-keys as internal (default) or standalone keys service, key gen exposed over CLI
- Use GRPC for keys
- Add GRPC service for Transactor and Events
- Store ExecutionEvent by height and index in merkle tree state
- Add historical query for all time with GetEvents
- Add streaming GRPC service for ExecutionEvents with query language over tags
- Add metadata to ExecutionEvents
- Add BlockExplorer CLI for forensics
- Expose reason for REVERT
- Add last_block_info healthcheck endpoint to rpc/TM
Improvements
- Implement checkpointing when saving application and blockchain state in commit - interrupted commit rolls burrow back to last block whereon it can catch up using Tendermint
- Maintain separate read-only tree in state so that long-running RPC request cannot block writes
- Improve state safety
- Improved input account server-side-signing
- Increase subscription reap time on rpc/V0 to 20 seconds
- Reorganise CLI
- Improve internal serialisation
- Refactor and modularise execution logic
Bug fixes
- Fix address generation from bytes mismatch
v0.18.0
This is an extremely large release in terms of lines of code changed addressing several years of technical debt. Despite this efforts were made to maintain external interfaces as much as possible and an extended period of stabilisation has taken place on develop.
A major strand of work has been in condensing previous Monax tooling spread across multiple repos into just two. The Hyperledger Burrow repo and Bosmarmot. Burrow is now able to generate chains (replacing 'monax chains make') with 'burrow spec' and 'burrow configure'. Our 'EPM' contract deployment and testing tool, our javascript libraries, compilers, and monax-keys are avaiable in Bosmarmot (the former in the 'bos' tool). Work is underway to pull monax-keys into the Burrow project, and we will continue to make Burrow as self-contained as possible.
Features
- Substantial support for latest EVM and solidity 0.4.21+ (missing some opcodes that will be added shortly - see known issues)
- Tendermint 0.18.0
- All signing through monax-keys KeyClient connection (preparation for HSM and GPG based signing daemon)
- Address-based signing (Burrow acts as delegate when you send transact, transactAndHold, send, sendAndHold, and transactNameReg a parameter including input_account (hex address) instead of priv_key.
- Provide sequential signing when using transact family methods (above) - allowing 100s Tx per second with the same input account
- Genesis making, config making, and key generation through 'burrow spec' and 'burrow configure'
- Logging configuration language and text/template for output
- Improved CLI UX and framework (mow.cli)
- Improved configuration
Internal Improvements
- Refactored execution and provide interfaces for executor
- Segregate EVM and blockchain state to act as better library
- Panic recovery on TX execution
- Stricter interface boundaries and immutability of core objects by default
- Replace broken BlockCache with universal StateCache that doesn't write directly to DB
- All dependencies upgraded, notably: tendermint/IAVL 0.7.0
- Use Go dep instead of glide
- PubSub event hub with query language
- Heavily optimised logging
- PPROF profiling server option
- Additional tests in multiple packages including v0 RPC and concurrency-focussed test
- Use Tendermint verifier for PrivValidator
- Use monax/relic for project history
- Run bosmarmot integration tests in CI
- Update documentation
- Numerous maintainability, naming, and aesthetic code improvements
Bug fixes
- Fix memory leak in BlockCache
- Fix CPU usage in BlockCache
- Fix SIGNEXTEND for negative numbers
- Fix multiple execution level panics
- Make Transactor work during tendermint recheck
Known issues
- Documentation rot - some effort has been made to update documentation to represent the current state but in some places it has slipped help can be found (and would be welcomed) on: Hyperledger Burrow Chat
- Missing support for: RETURNDATACOPY and RETURNDATASIZE #705 (coming very soon)
- Missing support for: INVALID #601 (coming very soon)
- Missing support for: REVERT #600 (coming very soon)