- [CLI] Burrow dump can now stream to STDOUT
- [NPM] Burrow-js is now published via an auth token
- [Build] Updates to CI build process
- [ABI] Fix failure to convert crypto.Address to EVMAddress (https://github.com/hyperledger/burrow/issues/1326)
- [State] Split metadata and account state to be kinder to downstream EVM integrators
- [NPM] Publish with index.js in TLD
- [NPM] Point package.json to index.js
- [Build] Move to solidity 0.5.12
- [WASM] Support for WASM contracts written in Solidity compiled using solang
-[RPC/Transact] CallCodeSim and CallTxSim were run against uncommitted checker state rather than committed state were all other reads are routed. They were also passed through Transactor for no particularly good reason. This changes them to run against committed DB state and removes the code path through Transactor.
- [State] TxExecution's Envelope now stored in state so will be reproduced in Vent Tx tables and over RPC, and so matches TxExecutions served from *Sync rpctransact methods
- [State] IterateStreamEvents now takes inclusive start and end points (end used to be exclusive) avoid bug-prone conversion
- [Dump] Improved structure and API
- [Dump] Default to JSON output and use protobuf for binary output
- [Dump] Fix dump missing events emitted at end height provided
- [Dump] EVM events were not dumped if no height was provided to burrow dump remote commandline
- [RPC/Info] Fix panic in /names and implement properly - now accepts a 'regex' parameter which is a regular expression to match names. Empty for all names.
- [Configure] burrow configure flags --separate-genesis-doc and --pool now work together
- [State] Burrow now remembers contact ABIs (which describe how to pack bits when calling contracts) - burrow deploy and vent will both use chain-hosted ABI if they are available
- [State] Bond and unbond transactions are now implement to allow validators to transfer native token into validator power.
- [Dump] Better tests, mock, and benchmarks - suitable for profiling IAVL
- [Events] Filters now support OR connective
- [Vent] Projection filters can now have filters longer than 100 characters.
- [Vent] Falls back to local ABI
- [CLI/RPC] Contracts now hold metadata, including contract name, source file, and function names
- [Vent] Log for _vent_log insert now faithfully captures what is being inserted
- [Vent] Remove arbitrary 100 character limits on system table text fields
- [JS] Burrow.js now included in Burrow repo and tested with Burrow CI! Future burrow.js releases will now match version of Burrow.
- [Vent] The new decode event ABI _before_ filter provides more keys but means vent must have access to all possible LogEvent ABIs when it is started. This is not practical in general so we now will will only err if an event matches but we have no ABI. This means we might not notice we have forgot to include an ABI since an event that _would_ have matched on an ABI spec field (prefixed 'Event') will not just not match, and so fail silently.
- [Tendermint] Upgraded to 0.31.2
- [IAVL] upgraded to 0.12.2
- [Config] Tendermint.TimeoutFactor moved to Execution.TimeoutFactor (and reused for NoConsensus mode)
- [Kernel] Refactored and various exported methods changed
- [CLI] Burrow deploy can now run multiple burrow deploy files (aka playbooks) and run them in parallel
- [Consensus] Now possible to run Burrow without Tendermint in 'NoConsensus' mode by setting Tendermint.Enabled = false for faster local testing. Execution.TimeoutFactor can be used to control how regularly Burrow commits (and is used
- [Execution] Fixed uint64 underflow (when subtracting fee from balance) not protected against in CallContext
- [Tests] Various concurrency issues fixed in tests and execution tests parallelised
- [Config] Split ListenAddress into ListenHost and ListenPort to ease parsing in the Helm charts
- [CLI] Burrow restore now always fails if state is detected but can be made --silent
- [CLI] No dump client timeout by default
- [Deploy] Reduced the default logging level to trace instead of info
- [Build] Switched to Go modules
- [Keys] Resolved an issue where the keyStore wasn't built when using the remote keys client.
- [Deploy] Fix nil dereference in query error path, check constructor args in BuildJob
- [Vent] The chain id is stored in the SQL Tables
- [CLI] Command line arguments have changed
- [Tendermint] Disable default Tendermint TxIndexer - for which we have no use but puts extra load on DB
- [Tendermint] The CreateEmptyBlocks and CreateEmptyBlocksInterval now works
- [State] Empty blocks are not longer stored
- [State] Genesis doc is no longer persisted at every block
- [State] Store TxExecutions as single entry per block, rather than one per Event
- [Vent] vent can restore tables from vent log using new vent restore command
- [CLI] 'burrow dump' renamed 'burrow dump remote'
- [Consensus] By default Burrow no longer creates empty blocks at the end of a round - though does make on every 5 minutes by default. Set CreateEmptyBlocks to "never" or omit to create no blocks unless there are transactions, or "always" to generate blocks even when there are no transactions.
- [State] Burrow state does not store empty blocks in the execution event store even when Tendermint creates them.
- [Build] 'make install_burrow' is now just 'make install'
- [Deploy] Always read TxExecution exception in Burrow deploy to avoid panics later on
- [Restore] Set restore transaction hash to non-zero (sha256 of original ChainID + Height)
- [Vent] --txs and --blocks now actually enable their respective tables in the Vent database
- [Consensus] Tendermint config CreateEmptyBlocks, CreateEmptyBlocksInterval now work as intended and prevent empty blocks being produced (except when needed for proof purposes) or when the interval expires (when set)
- [Dump] burrow dump now has local variant that produces a dump directly from a compatible burrow directory rather than over GRPC. If dumping/restoring between state-incompatible versions use burrow dump remote.
- [Blockchain] Persist LastBlockTime in Blockchain - before this patch LastBlockTime would only be set correctly after the first block had been received after a node is restarted - this can lead to non-determinism in the EVM via the TIMESTAMP opcode that use the LastBlockTime which is itself sourced from Tendermint's block header (from their implementation of BFT time). Implementing no empty blocks made observing this bug more likely by increasing the amount of time spent in a bad state (LastBlockTime is initially set to GenesisTime).
- [State] Avoid stack traces which may be code-path-dependent or non-deterministic from being pushed to TxExecutions and so to merkle state where they can lead to breaking consensus
- [State] KVCache iterator fixed to use low, high interface as per DB, fixing CacheDB for use in Replay
- [Logging] Included height in various execution log messages
- [Transactor] Now provides SyncInfo in error message when there is a BroadcastTxSync timeout
- [EVM] Accept []byte nonce rather than enforcing the use of txs.Tx.TxHash()
- [Crypto] Expose SequenceNonce helper to allow library users to use sequence-number based addresses for newly created contracts
- [Consensus] Tendermint timeouts configurable by a float factor from defaults and default change to 0.33 of Tendermint's default for smaller networks'
- [Transactor] Hard-coded timeout removed from transactor and added to TxEnvelopeParam for client specified server-side timeout (in case of longer confirmation times such as when some validators are unavailable
- [Logging] ExcludeTrace config inverted to Trace and now defaults to false (i.e. no trace/debug logging). Default log output now excludes Tendermint logging (and is therefore much less talkative)
- [Logging] Add height to all logging messages
- [RPC] Add LastBlockCommitDuration to SyncInfo
- [Metrics] Replace use of Summary metrics when Histogram was intended
Hotfix release for 0.23.1
- [State] Fixed issue with checkpointing whereby RWTree would load its readTree from one version lower than it should.