github.com/hyperledger/burrow@v0.34.5-0.20220512172541-77f09336001d/CHANGELOG.md (about) 1 # [Hyperledger Burrow](https://github.com/hyperledger/burrow) Changelog 2 ## [0.34.4] - 2021-07-23 3 ### Changed 4 - [JS] Make deploy and deployContract take deps argument consisting of deployment options and library object. The library object makes it easier to pass an identical object with the addresses of commonly used libraries under their canonical names. 5 6 7 ## [0.34.3] - 2021-07-19 8 ### Fixed 9 - [JS] Fix spelling of 'contractName' in solts, add contract name to contract object. 10 11 ### Added 12 - [JS] Added option to build.ts code generation to not fail on Solidity compiler warnings, which is now the default. Warnings are still logged to stderr 13 14 15 ## [0.34.2] - 2021-07-09 16 ### Fixed 17 - [Build] Add 0.34.1 changes! 18 19 20 ## [0.34.1] - 2021-07-09 21 ### Fixed 22 - [JS] build function does not swallow errors without a formattedMessage, chdir into basepath before build so solc imports work as expected 23 24 25 ## [0.34.0] - 2021-05-28 26 ### Changed 27 - [JS] Provider interface no longer depends on GRPC types to improve compatibility between versions of Burrow.js and ease of extension 28 - [JS] Use non-unique marker interface to indicate stream cancellation in event reducer (again for compatibility between versions and extensibility) 29 - [Go] Upgrade to Go 1.16 30 31 ### Fixed 32 - [JS] Fix codegen silently swallowing collisions of abi files (renamed from .bin to .abi) and use hierarchical directory structure to further reduce chance of collision 33 - [JS] Just depende on @ethersproject/abi rather than entire umbrella project 34 35 ### Added 36 - [JS] Include deployedBycode and optionally submit ABI's to Burrow's contract metadata store on deploy 37 38 39 ## [0.33.1] - 2021-05-24 40 ### Fixed 41 - [JS] Return bytesNN as Buffer to agree with typings 42 43 ### Added 44 - [JS] Inline sources and source maps 45 46 47 ## [0.33.0] - 2021-05-24 48 ### Changed 49 - [JS] Changed Burrow interface and renamed Burrow client object to to Client (merging in features needed for solts support) 50 51 ### Fixed 52 - [JS] Fixed RLP encoding extra leading zeros on uint64 (thanks Matthieu Vachon!) 53 - [JS] Improved compatibility with legacy Solidity bytes types and padding conventions 54 - [Events] Fixed Burrow event stream wrongly switching to streaming mode for block ranges that are available in state (when the latest block is an empty block - so not stored in state) 55 56 ### Added 57 - [JS] Added Solidity-to-Typescript code generation support (merging in solts) - this provides helpers (build.ts, api.ts) to compile Solidity files into corresponding .abi.ts files that include types for functions, events, the ABI, and EVM bytecode, and includes bindings into Burrow JS to deploy and interact with contracts via Typescript/Javascript with strong static types 58 - [JS] Improved interactions with events which can now be queried over any range and with strong types, see the listenerFor, reduceEvents, readEvents, and iterateEvents functions. 59 60 61 ## [0.32.1] - 2021-05-15 62 ### Changed 63 - [Execution] CallErrors no longer emit very long rather pointless (since there is no tooling to help interpret them currently) EVM call traces 64 - [JS] Return byte arrays as Buffers from decode (only return fixed-width byteNN types as hex strings) 65 66 67 ## [0.32.0] - 2021-05-14 68 ### Changed 69 - [JS] Significant refactor/rewrite of Burrow.js into idiomatic Typescript including some breaking changes to API 70 - [JS] Change to use ethers.js for ABI encoding 71 72 ### Fixed 73 - [State] Fixed cache-concurrency bug (https://github.com/hyperledger/burrow/commit/314357e0789b0ec7033a2a419b816d2f1025cad0) and ensured consistency snapshot is used when performing simulated call reads 74 - [Web3] Omit empty values from JSONRPC calls 75 76 ### Added 77 - [Tendermint] Added support for passing node options to Tendermint - e.g. custom reactors (thanks @nmanchovski!) 78 - [JS] Historic events can now be requested via API 79 - [JS] Contract deployments will now include ABIs via contract metadata so Burrow's ABI registry can be used 80 81 82 ## [0.31.3] - 2020-03-25 83 ### Fixed 84 - [Dump] Make load from dump set tx index so BlockAccumulator continuity conditions are met 85 - [Dump] Improve error messages 86 87 88 ## [0.31.2] - 2020-03-24 89 ### Fixed 90 - [Dump] Stop TxStack EventStream consumer from rejecting events from dump/restored chain because they lack tx Envelopes (as they are intended to to keep dump format minimal) 91 - [Genesis] Fix hash instability introduced by accidentally removing omitempty from AppHash in genesis 92 93 ### Added 94 - [Vent] Implement throttling on Ethereum Vent consumer via --max-request-rate=<requests / time base> flag to 'vent start' 95 96 97 ## [0.31.1] - 2020-03-19 98 ### Changed 99 - [Repo] main branch replaces master as per Hyperledger TSC guidelines 100 101 ### Fixed 102 - [Docker] Make sure default testnet mode works when running docker images 103 - [Vent] Use appropriately sized database integral types for EVM integer types (i.e. numeric for uint64 and bigger) 104 - [Vent] Ethereum block consumer now correctly reads to an _inclusive_ block batch end height 105 - [Web3] Handle integer ChainID for web3 consistently; return hex-encoded numeric value from web3 RPC, also allow overriding of genesis-hash derived ChainID so Burrow can be connected with from metamask 106 107 ### Added 108 - [Build] Build dev docker and JS releases by force pushing to prerelease branch 109 - [Vent] Expose BlockConsumerConfig to adjust backoff and read characteristics 110 - [Vent] Add vent-side continuity test over blocks (to double-check exactly once delivery of events) 111 112 113 ## [0.31.0] - 2020-03-10 114 ### Changed 115 - [Tendermint] Upgraded to Tendermint 0.34.3 116 - [Docker] Image will now start testnet by default 117 118 ### Added 119 - [Vent] Added support for building Vent SQL tables from Ethereum web3 JSONRPC chains (useful for oracles/state channels with layer 1) 120 - [Vent] Added Status to healthcheck endpoint on Vent 121 - [Natives] Implemented ecrecover using btcec (revised key handling) 122 - [Engine] Implement cross-engine dispatch 123 - [WASM] Implement cross-engine calls and calls to precompiles 124 - [WASM] Significantly extend eWASM support and implement functions 125 - [WASM] Add printing debug functions 126 - [WASM] Implement CREATE, GETTXGASPRICE, GETBLOCKDIFFICULTY, SELFDESTRUCT eWASM functions (thanks Yoongbok Lee!) 127 - [WASM/JS] JS library supports deploying WASM code 128 - [Deploy] Can specify WASM in playbook 129 - [EVM] Implement CHAINID and DIFFICULTY opcodes 130 - [Query] PEG query grammar now supports Not ("NOT") and NotEqual ("!=") operators 131 132 ### Fixed 133 - [Deploy] Fix flaky parallel tests 134 - [EVM] Use correct opcode for create2 (thanks Vitali Grabovski!) 135 - [ABI] Check length of input before decoding (thanks Tri-stone!) 136 - [WASM] Constructor argument handling 137 - [RLP] Incorrect use of offsets for longer bytes strings 138 - [RLP] Use minimal encoding for length prefixes (no leading zeros) 139 - [Web3] Generate correct encoding hash for RawTx (ChainID in hash digest but not payload) 140 - [Web3] Generate canonical weird Ethereum hex 141 - [State] Fix read concurrency in RWTree (on which state is based) removing need for CallSim lock workaround 142 143 ### Security 144 - Updated elliptic JS dep to 6.5.3 145 - Updated lodash to 4.17.19 146 147 148 ## [0.30.5] - 2020-07-09 149 ### Added 150 - [Vent] Add BytesToHex flag on projection field mappings that causes bytes fields (e.g. bytes32) solidity fields to be hex-encoded and mapped to varchar(64) rather than bytea/blob columns in postgres/sqlite 151 152 153 ## [0.30.4] - 2020-04-05 154 ### Added 155 - [Build] Added Helm chart 156 - [State] Account now has EVMOpcodeBitset field to support upcoming EVM fixes 157 158 ### Fixed 159 - [JS] Github actions release of JS lib 160 161 162 ## [0.30.3] - 2020-04-05 163 ### Added 164 - [CLI] Made previously internal Solidity Go fixtures compilation available through 'burrow compile' 165 - [TS] Default ts client interface implementation 166 167 168 ## [0.30.2] - 2020-03-13 169 ### Fixed 170 - [RPC] add mutex to callSim and callCode 171 172 173 ## [0.30.1] - 2020-03-06 174 ### Fixed 175 - [CLI/Tx] Unbond formulation now specifies amount 176 177 178 ## [0.30.0] - 2020-03-05 179 ### Changed 180 - [JS] Partial rewrite of client API in typescript 181 182 ### Fixed 183 - [State] Blockchain now commits initial AppHash to avoid IAVL panic 184 185 186 ## [0.29.8] - 2020-02-11 187 ### Fixed 188 - [ABI] Fix failure to convert crypto.Address to EVMAddress (https://github.com/hyperledger/burrow/issues/1326) 189 190 191 ## [0.29.7] - 2020-01-27 192 ### Fixed 193 - [Build] Updates to CI build process 194 195 196 ## [0.29.6] - 2020-01-22 197 ### Changed 198 - [CLI] Burrow dump can now stream to STDOUT 199 200 ### Fixed 201 - [NPM] Burrow-js is now published via an auth token 202 203 204 ## [0.29.5] - 2019-12-09 205 ### Security 206 - [Tendermint] Upgraded to v0.32.8, checkTxAsync now includes node ID 207 208 ### Changed 209 - [Vent] Sync every block height to DB and send height notification from _vent_chain table so downstream can check DB sync without --blocks 210 - [RPC/Query] GetName now returns GRPC NotFound status (rather than unknown) when a requested key is not set. 211 212 ### Fixed 213 - [Execution] Simulated calls (e.g. query contracts) now returns the height of the state on which the query was run. Useful for downstream sync. 214 215 216 ## [0.29.4] - 2019-11-22 217 ### Changed 218 - [Build] Move to solidity 0.5.12 219 220 221 ## [0.29.3] - 2019-10-16 222 ### Changed 223 - [NPM] Point package.json to index.js 224 225 226 ## [0.29.2] - 2019-10-15 227 ### Changed 228 - [NPM] Publish with index.js in TLD 229 230 231 ## [0.29.1] - 2019-10-10 232 ### Changed 233 - [State] Split metadata and account state to be kinder to downstream EVM integrators 234 235 236 ## [0.29.0] - 2019-10-08 237 ### Changed 238 - [Config] Reverted rename of ValidatorAddress to Address in config (each Burrow node has a specific validator key it uses for signing whether or not it is running as a validator right now) 239 240 ### Fixed 241 - [EVM] Return integer overflow error code (not stack overflow) for integer overflow errors 242 - [Docs] Fix broken examples 243 - [Deploy] Set input on QueryContract jobs correctly 244 - [EVM] Fix byte-printing for DebugOpcodes run mode 245 - [Crypto] Use Tendermint-compatible secp256k1 addressing 246 - [Natives] Make natives first class contracts and establish Dispatcher and Callable as a common calling convention for natives, EVM, and WASM (pending for WASM). 247 - [Natives] Fix Ethereum precompile addresses (addresses were padded on right instead of the left) 248 249 250 ### Added 251 - [Web3] Implemented Ethereum web3 JSON RPC including sendRawTransaction! 252 - [Docs] Much docs (see also: https://www.hyperledger.org/blog/2019/10/08/burrow-the-boring-blockchain) 253 - [Docs] Generate github pages docs index with docsify: https://hyperledger.github.io/burrow/ 254 - [JS] Publish burrow.js to @hyperledger/burrow 255 - [State] Store EVM ABI and contract metadata on-chain see [GetMetadata](https://github.com/hyperledger/burrow/blob/e80aad5d8fac1f67dbfec61ea75670f9a38c61a1/protobuf/rpcquery.proto#L25) 256 - [Tendermint] Upgrade to v0.32.3 257 - [Execution] Added IdentifyTx for introducing nodes (binding their NodeID to ValidatorAddress) 258 - [Natives] Implement Ethereum precompile number 5 - modular exponentiation 259 260 261 262 ## [0.28.2] - 2019-08-21 263 ### Fixed 264 - [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. 265 266 267 ## [0.28.1] - 2019-08-21 268 ### Fixed 269 - [Vent] Log for _vent_log insert now faithfully captures what is being inserted 270 - [Vent] Remove arbitrary 100 character limits on system table text fields 271 272 ### Added 273 - [JS] Burrow.js now included in Burrow repo and tested with Burrow CI! Future burrow.js releases will now match version of Burrow. 274 275 276 ## [0.28.0] - 2019-08-14 277 ### Changed 278 - [State] IterateStreamEvents now takes inclusive start and end points (end used to be exclusive) avoid bug-prone conversion 279 - [Dump] Improved structure and API 280 - [Dump] Default to JSON output and use protobuf for binary output 281 282 ### Fixed 283 - [Dump] Fix dump missing events emitted at end height provided 284 - [Dump] EVM events were not dumped if no height was provided to burrow dump remote commandline 285 - [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. 286 - [Configure] burrow configure flags --separate-genesis-doc and --pool now work together 287 288 ### Added 289 - [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 290 - [State] Bond and unbond transactions are now implement to allow validators to transfer native token into validator power. 291 - [Dump] Better tests, mock, and benchmarks - suitable for profiling IAVL 292 - [Events] Filters now support OR connective 293 - [Vent] Projection filters can now have filters longer than 100 characters. 294 - [Vent] Falls back to local ABI 295 - [CLI/RPC] Contracts now hold metadata, including contract name, source file, and function names 296 297 298 299 ## [0.27.0] - 2019-06-23 300 ### Added 301 - [WASM] Support for WASM contracts written in Solidity compiled using solang 302 303 ### Fixed 304 -[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. 305 306 ### Changed 307 - [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 308 309 310 ## [0.26.2] - 2019-06-19 311 ### Fixed 312 - [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). 313 314 315 ## [0.26.1] - 2019-06-16 316 ### Changed 317 - [CLI] 'burrow dump' renamed 'burrow dump remote' 318 - [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. 319 - [State] Burrow state does not store empty blocks in the execution event store even when Tendermint creates them. 320 - [Build] 'make install_burrow' is now just 'make install' 321 322 ### Fixed 323 - [Deploy] Always read TxExecution exception in Burrow deploy to avoid panics later on 324 - [Restore] Set restore transaction hash to non-zero (sha256 of original ChainID + Height) 325 - [Vent] --txs and --blocks now actually enable their respective tables in the Vent database 326 - [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) 327 328 ### Added 329 - [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. 330 331 332 ## [0.26.0] - 2019-06-14 333 ### Changed 334 - [Vent] The chain id is stored in the SQL Tables 335 - [CLI] Command line arguments have changed 336 337 ### Fixed 338 - [Tendermint] Disable default Tendermint TxIndexer - for which we have no use but puts extra load on DB 339 - [Tendermint] The CreateEmptyBlocks and CreateEmptyBlocksInterval now works 340 - [State] Empty blocks are not longer stored 341 - [State] Genesis doc is no longer persisted at every block 342 - [State] Store TxExecutions as single entry per block, rather than one per Event 343 ### Add 344 - [Vent] vent can restore tables from vent log using new vent restore command 345 346 347 ## [0.25.1] - 2019-05-03 348 ### Changed 349 - [Config] Split ListenAddress into ListenHost and ListenPort to ease parsing in the Helm charts 350 - [CLI] Burrow restore now always fails if state is detected but can be made --silent 351 - [CLI] No dump client timeout by default 352 - [Deploy] Reduced the default logging level to trace instead of info 353 - [Build] Switched to Go modules 354 355 ### Fixed 356 - [Keys] Resolved an issue where the keyStore wasn't built when using the remote keys client. 357 - [Deploy] Fix nil dereference in query error path, check constructor args in BuildJob 358 359 360 ## [0.25.0] - 2019-04-05 361 ### Changed 362 - [Tendermint] Upgraded to 0.31.2 363 - [IAVL] upgraded to 0.12.2 364 - [Config] Tendermint.TimeoutFactor moved to Execution.TimeoutFactor (and reused for NoConsensus mode) 365 - [Kernel] Refactored and various exported methods changed 366 367 ### Added 368 - [CLI] Introduced burrow configure --pool for generation of multiple validator configs suitable for running on a single (or many) machines 369 - [CLI] Burrow deploy can now run multiple burrow deploy files (aka playbooks) and run them in parallel 370 - [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 371 372 ### Fixed 373 - [Execution] Fixed uint64 underflow (when subtracting fee from balance) not protected against in CallContext 374 - [Tests] Various concurrency issues fixed in tests and execution tests parallelised 375 376 377 378 ## [0.24.6] - 2019-03-19 379 ### Changed 380 - [RPC] 'blocks' on info RPC now lists blocks in ascending rather than descending height order 381 382 ### Added 383 - [CLI] Introduced burrow configure --pool for generation of multiple validator configs suitable for running on a single (or many) machines 384 385 ### Fixed 386 - [Metrics] Fix histogram statistics by making counts cumulative 387 388 389 ## [0.24.5] - 2019-03-14 390 ### Changed 391 - [Consensus] Tendermint timeouts configurable by a float factor from defaults and default change to 0.33 of Tendermint's default for smaller networks' 392 - [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 393 - [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) 394 395 ### Added 396 - [Logging] Add height to all logging messages 397 - [RPC] Add LastBlockCommitDuration to SyncInfo 398 399 ### Fixed 400 - [Metrics] Replace use of Summary metrics when Histogram was intended 401 402 403 ## [0.24.4] - 2019-03-08 404 ### Changed 405 - [EVM] Accept []byte nonce rather than enforcing the use of txs.Tx.TxHash() 406 - [Crypto] Expose SequenceNonce helper to allow library users to use sequence-number based addresses for newly created contracts 407 408 409 ## [0.24.3] - 2019-03-06 410 ### Fixed 411 - [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 412 - [State] KVCache iterator fixed to use low, high interface as per DB, fixing CacheDB for use in Replay 413 414 ### Added 415 - [Logging] Included height in various execution log messages 416 - [Transactor] Now provides SyncInfo in error message when there is a BroadcastTxSync timeout 417 418 419 ## [0.24.2] - 2019-02-28 420 ### Changed 421 - [Genesis] Use HexBytes for Genesis AppHash 422 423 ### Fixed 424 - [Vent] Stop Vent from swallowing errors (e.g. GRPC streaming errors) 425 - [Consensus] Updated to patched version of Tendermint that does not pull in go-ethereum dependency 426 - [CLI] Removed duplicate -t flag from burrow configure 427 428 429 ### Added 430 - [Kernel] Added announce message for startup and shutdown including version, key address, and other useful metadata 431 - [EVM] Attempt to provide REVERT reason where possible 432 - [Vent] --abi and --spec can be provided multiple times to provide multiple paths to search 433 434 435 ## [0.24.1] - 2019-02-28 436 ### Changed 437 - [ABI] abi.EncodeFunctionCall and AbiSpec.Pack now take a variadic ...interface{} type for function arguments rather than []string 438 439 ### Fixed 440 - [Deploy] Binary files are now written atomically to prevent issue with dependency libraries being momentarily truncated when deploying in parallel 441 442 ### Added 443 - [ABI] DecodeFunctionReturn re-exposed (formerly Packer then packer in 0.24.0) to make deploy API symmetrical 444 445 446 ## [0.24.0] - 2019-02-26 447 ### Changed 448 - [EVM] Use TxHash to allow predictable sequence numbers for account creation (allows proposal mechanism to aggregate transactions and execute in a BatchTx) - [pull request](https://github.com/hyperledger/burrow/pull/969) 449 - [State] Introduced MutableForest and change state layout to a streaming model that amongst other things should not blow the GRPC message size for large transactions 450 - [Consensus] Upgraded Tendermint to v0.30.1 451 - [State] Upgraded IAVL to v0.12.1 452 - [EVM] Integration tests upgraded to Solidity 0.5.4 453 - [State] All state now stored in merkle tree via MutableForest 454 - [State] Full validator state history stored in forest 455 - [Vent] Updated EventSpec table specification configuration format 456 - [Vent] Added support for managing Postgres triggers 457 458 ### Fixed 459 - [Transactor] Reduce TxExecution subscription overhead 460 - [Transactor] Remove excessive debug subscription timeout 461 - [State] Fixed issue with check-pointing that could cause divergent AppHash across node restarts- [pull request](https://github.com/hyperledger/burrow/pull/985) 462 - [EVM] Implemented BLOCKHASH opcode 463 - [EVM] Used correct callee STATICCALL to fix cross-contract queries 464 - [Consensus] Guarded against total validator power overflow (as limited by Tendermint) 465 466 ### Added 467 - [EVM] Implemented [CREATE2 opcode](https://eips.ethereum.org/EIPS/eip-1014) 468 - [EVM] Implemented [EXTCODEHASH opcode](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1052.md) 469 - [Accounts] Add account GetStats to query endpoint 470 - [Config] Expose AddrBookStrict from Tendermint 471 - [Deploy] burrow deploy now prints events generated during transactions 472 - [Deploy] burrow deploy can use key names where addresses are used 473 - [Governance] Added threshold-based governance via Proposal mechanism which allows entities with Root permission to propose and vote on batches of transactions to be executed on a running network with no single entity being able to do so. 474 - [Governance] Added command line and query introspection of proposals as well as burrow deploy support 475 - [Vent] Merged Vent our SQL projection and mapping layer into the Burrow repository and binary via 'burrow vent'. See [Vent Readme](./vent/vent.md) 476 - [State] Improved read-write separation with RWTree and ImmutableForest data structures 477 - [State] Implemented dump/restore to port state between different version of Burrow or to compress the execution of a chain (with a proof) onto a fresh chain 478 479 480 481 ## [0.23.3] - 2018-12-19 482 ### Fixed 483 - [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. 484 485 486 ## [0.23.2] - 2018-12-18 487 Hotfix release for 0.23.1 488 ### Fixed 489 - [State] Fixed issue with checkpointing whereby RWTree would load its readTree from one version lower than it should. 490 491 492 493 ## [0.23.1] - 2018-11-14 494 ### Fixed 495 - [EVM] state/Cache no longer allows SetStorage on accounts that do not exist 496 - [GRPC] GetAccount on unknown account no longer causes a panic 497 498 ### Added 499 - [Docker] Added solc 0.4.25 binary to docker container so that burrow deploy has what it needs to function 500 - [Execution] panics from executors are captured and pushed to error sink of TxExecution 501 502 503 ## [0.23.0] - 2018-11-09 504 ### Changed 505 - [ABI] provides fast event lookup of EventID 506 - [Events] BlockExecution now included full Tendermint block header as protobuf object rather than JSON string 507 - [EVM] Nested call errors are now transmitted to EventSink (e.g. TxExecution) as events for better tracing and tests 508 - [SNative] Permissions contract returns permission flag set not resultant permissions from setBase unsetBase and setGlobal 509 - [EVM] Errors transmitted through errors.Pusher interface for more reliable capture from memory, stack, and elsewhere 510 - [Governance] Breaking change to state structure due to governance storage in tree (state root hashes will not match) 511 512 513 ### Fixed 514 - [EVM] Issue where value was not transferred because VM call state was not synced 515 - [EVM] Various issue where errors were swallowed (in particular - where calling an empty account and when a TX was invalid on delivery) 516 - [EVM] When calling a non-existent account CreateAccount permission is checked on the caller not the caller's caller 517 - [CLI] Version now contains date and commit 518 - [Test] Burrow integration test runner shuts down Burrow correctly 519 - [Serialisation] updated tmthrgd/go-hex to fallback on default encoding when lacking SSE 4.1 CPU instructions 520 521 522 ### Added 523 - [Deploy] Burrow deploy meta jobs reuses GRPC connection 524 - [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. 525 - [EVM] Added EVM State interface removing unnecessary cache layer (fixing various issues) 526 - [EVM] Implemented STATICCALL opcode 527 - [P2P] Added AuthorizedPeers config option to sync only with whitelisted peers exposed over ABCI query under key /p2p/filter/ 528 - [EVM] stack depth now dynamically allocated and exponentially grown in the same way as memory 529 - [EVM] Solidity proxy call forwarding test 530 531 ### Removed 532 - MutableAccount and ConcreteAccount 533 534 535 ## [0.22.0] - 2018-09-21 536 ### Changed 537 - Upgraded to Tendermint 0.24.0 538 - Upgraded to IAVL 0.11.0 539 540 ### Fixed 541 - Fixed non-determinism in Governance Tx 542 - Fixed various abi issues 543 544 ### Added 545 - burrow deploy displays revert reason when available 546 - burrow deploy compiles contracts concurrently 547 548 ## [0.21.0] - 2018-08-21 549 ### Changed 550 - Upgraded to Tendermint 0.23.0 551 - Validator Set Power now takes Address 552 - RPC/TM config renamed to RPC/Info 553 554 ### Added 555 - Burrow deploy creates devdoc 556 - Docker image has org.label-schema labels 557 558 ### Fixed 559 - 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 560 - Metrics server does not panic on empty block metas and recovers from other panics 561 562 563 ## [0.20.1] - 2018-08-17 564 ### Changed 565 - The snatives functions have new signatures; string arguments are now string, not byte32. 566 - The Solidity interface contracts can be generated using the "burrow snatives" command, and the make snatives target is gone. 567 568 ### Fixed 569 - 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. 570 - CallTxSim and CallCodeSim now take same code path as real transactions (via CallContext) 571 - Release our mempool signing lock once transactions have been CheckTx'd' to massively increase throughput. 572 573 ### Added 574 - Upgraded to Tendermint [0.22.8](https://github.com/tendermint/tendermint/compare/v0.22.4...v0.22.8) (from 0.22.4). 575 - Support mempool signing for BroadcastTxAsync. 576 - Reload log file (e.g. for logrotate) on SIGHUP and dump capture logs on SIGUSR1 and on shutdown (e.g. for debug). 577 - File logger accepts {{.Timestamp}} in file names to generate a log file per run. 578 - Ability to set --external-address on burrow configure and burrow start 579 - Ability to set various command line options on burrow configure and burrow start and by BURROW_ prefixed environment variables 580 - Exposed Tendermint SeedMode option 581 582 583 ## [0.20.0] - 2018-07-24 584 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. 585 586 #### Breaking changes 587 - Address format has been changed (by Tendermint and we have followed suite) - conversion is possible but simpler to regenerated keys 588 - JSON-RPC interface has been removed 589 - burrow-client has been removed 590 - rpc/TM methods for events and broadcast have been removed 591 592 #### Features 593 - Tendermint 0.24.4 594 - GovTx GRPC service. The validator set can be now be changed. 595 - Enhanced GRPC services: NameReg, Transaction index, blocks service 596 - Events GRPC service 597 - Transaction Service can set value transferred 598 599 #### Improvements 600 - The output of "burrow keys export" can be templated 601 602 #### Bug fixes 603 - Fixed panic on nil bounds for blocks service 604 605 606 607 ## [0.19.0] - 2018-06-26 608 This is a major (pre-1.0.0) release that brings upgrades, safety improvements, cloud configuration, and GRPC endpoints to Burrow. 609 610 #### Breaking changes 611 In addition to breaking changes associated with Tendermint (see their changelog): 612 - State checkpointing logic has changed which has we load based on blockchain 613 - Event format has changed over rpc/V0 see execution/events/ package 614 - On-disk keys format has change from monax-keys to be more standard burrow keys 615 - Address format has been changed (by Tendermint and we have followed suite) - conversion is possible but simpler to regenerated keys 616 617 #### Features 618 - Tendermint 0.21.0 619 - Implemented EVM opcodes: REVERT, INVALID, SHL, SAR, SHR, RETURNDATACOPY, RETURNDATASIZE 620 - Add config templating with burrow configure --config-template-in --config-out 621 - Add config templates for kubernetes 622 - Integrate monax-keys as internal (default) or standalone keys service, key gen exposed over CLI 623 - Use GRPC for keys 624 - Add GRPC service for Transactor and Events 625 - Store ExecutionEvent by height and index in merkle tree state 626 - Add historical query for all time with GetEvents 627 - Add streaming GRPC service for ExecutionEvents with query language over tags 628 - Add metadata to ExecutionEvents 629 - Add BlockExplorer CLI for forensics 630 - Expose reason for REVERT 631 - Add last_block_info healthcheck endpoint to rpc/TM 632 - 633 #### Improvements 634 - 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 635 - Maintain separate read-only tree in state so that long-running RPC request cannot block writes 636 - Improve state safety 637 - Improved input account server-side-signing 638 - Increase subscription reap time on rpc/V0 to 20 seconds 639 - Reorganise CLI 640 - Improve internal serialisation 641 - Refactor and modularise execution logic 642 643 #### Bug fixes 644 - Fix address generation from bytes mismatch 645 646 647 648 ## [0.18.1] 649 This is a minor release including: 650 - Introduce InputAccount param for RPC/v0 for integration in JS libs 651 - Resolve some issues with RPC/tm tests swallowing timeouts and not dealing with reordered events 652 653 ## [0.18.0] - 2018-05-09 654 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. 655 656 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](http://github.com/monax/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. 657 658 #### Features 659 - Substantial support for latest EVM and solidity 0.4.21+ (missing some opcodes that will be added shortly - see known issues) 660 - Tendermint 0.18.0 661 - All signing through monax-keys KeyClient connection (preparation for HSM and GPG based signing daemon) 662 - 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. 663 - Provide sequential signing when using transact family methods (above) - allowing 100s Tx per second with the same input account 664 - Genesis making, config making, and key generation through 'burrow spec' and 'burrow configure' 665 - Logging configuration language and text/template for output 666 - Improved CLI UX and framework (mow.cli) 667 - Improved configuration 668 669 670 #### Internal Improvements 671 - Refactored execution and provide interfaces for executor 672 - Segregate EVM and blockchain state to act as better library 673 - Panic recovery on TX execution 674 - Stricter interface boundaries and immutability of core objects by default 675 - Replace broken BlockCache with universal StateCache that doesn't write directly to DB 676 - All dependencies upgraded, notably: tendermint/IAVL 0.7.0 677 - Use Go dep instead of glide 678 - PubSub event hub with query language 679 - Heavily optimised logging 680 - PPROF profiling server option 681 - Additional tests in multiple packages including v0 RPC and concurrency-focussed test 682 - Use Tendermint verifier for PrivValidator 683 - Use monax/relic for project history 684 - Run bosmarmot integration tests in CI 685 - Update documentation 686 - Numerous maintainability, naming, and aesthetic code improvements 687 688 #### Bug fixes 689 - Fix memory leak in BlockCache 690 - Fix CPU usage in BlockCache 691 - Fix SIGNEXTEND for negative numbers 692 - Fix multiple execution level panics 693 - Make Transactor work during tendermint recheck 694 695 #### Known issues 696 - 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](https://chat.hyperledger.org/channel/burrow) 697 - Missing support for: RETURNDATACOPY and RETURNDATASIZE https://github.com/hyperledger/burrow/issues/705 (coming very soon) 698 - Missing support for: INVALID https://github.com/hyperledger/burrow/issues/705 (coming very soon) 699 - Missing support for: REVERT https://github.com/hyperledger/burrow/issues/600 (coming very soon) 700 701 702 ## [0.17.1] 703 Minor tweaks to docker build file 704 705 ## [0.17.0] - 2017-09-04 706 This is a service release with some significant ethereum/solidity compatibility improvements and new logging features. It includes: 707 708 - [Upgrade to use Tendermint v0.9.2](https://github.com/hyperledger/burrow/pull/595) 709 - [Implemented dynamic memory](https://github.com/hyperledger/burrow/pull/607) assumed by the EVM bytecode produce by solidity, fixing various issues. 710 - Logging sinks and configuration - providing a flexible mechanism for configuring log flows and outputs see [logging section in readme](https://github.com/hyperledger/burrow#logging). Various other logging enhancements. 711 - Fix event unsubscription 712 - Remove module-specific versioning 713 - Rename suicide to selfdestruct 714 - SNative tweaks 715 716 Known issues: 717 718 - SELFDESTRUCT opcode causes a panic when an account is removed. A [fix](https://github.com/hyperledger/burrow/pull/605) was produced but was [reverted](https://github.com/hyperledger/burrow/pull/636) pending investigation of a possible regression. 719 720 ## [0.16.3] - 2017-04-25 721 This release adds an stop-gap fix to the Transact method so that it never 722 transfers value with the CallTx is generates. 723 724 We hard-code amount = fee so that no value is transferred 725 regardless of fee sent. This fixes an invalid jump destination error arising 726 from transferring value to non-payable functions with newer versions of solidity. 727 By doing this we can resolve some issues with users of the v0 RPC without making 728 a breaking API change. 729 730 ## [0.16.2] - 2017-04-20 731 This release finalises our accession to the Hyperledger project and updates our root package namespace to github.com/hyperledger/burrow. 732 733 It also includes a bug fix for rpc/V0 so that BroadcastTx can accept any transaction type and various pieces of internal clean-up. 734 735 ## [0.16.1] - 2017-04-04 736 This release was an internal rename to 'Burrow' with some minor other attendant clean up. 737 738 ## [0.16.0] - 2017-03-01 739 This is a consolidation release that fixes various bugs and improves elements 740 of the architecture across the Monax Platform to support a quicker release 741 cadence. 742 743 #### Features and improvements (among others) 744 - [pull-510](https://github.com/hyperledger/burrow/pull/510) upgrade consensus engine to Tendermint v0.8.0 745 - [pull-507](https://github.com/hyperledger/burrow/pull/507) use sha3 for snative addresses for future-proofing 746 - [pull-506](https://github.com/hyperledger/burrow/pull/506) alignment and consolidation for genesis and config between tooling and chains 747 - [pull-504](https://github.com/hyperledger/burrow/pull/504) relicense eris-db to Apache 2.0 748 - [pull-500](https://github.com/hyperledger/burrow/pull/500) introduce more strongly types secure native contracts 749 - [pull-499](https://github.com/hyperledger/burrow/pull/499) introduce word256 and remove dependency on tendermint/go-common 750 - [pull-493](https://github.com/hyperledger/burrow/pull/493) re-introduce GenesisTime in GenesisDoc 751 752 - Logging system overhauled based on the central logging interface of go-kit log. Configuration lacking in this release but should be in 0.16.1. Allows powerful routing, filtering, and output options for better operations and increasing the observability of an eris blockchain. More to follow. 753 - Genesis making is improved and moved into eris-db. 754 - Config templating is moved into eris-db for better synchronisation of server config between the consumer of it (eris-db) and the producers of it (eris cli and other tools). 755 - Some documentation updates in code and in specs. 756 - [pull-462](https://github.com/hyperledger/burrow/pull/499) Makefile added to capture conventions around building and testing and replicate them across different environments such as continuous integration systems. 757 758 #### Bugfixes (among others) 759 - [pull-516](https://github.com/hyperledger/burrow/pull/516) Organize and add unit tests for rpc/v0 760 - [pull-453](https://github.com/hyperledger/burrow/pull/453) Fix deserialisation for BroadcastTx on rpc/v0 761 - [pull-476](https://github.com/hyperledger/burrow/pull/476) patch EXTCODESIZE for native contracts as solc ^v0.4 performs a safety check for non-zero contract code 762 - [pull-468](https://github.com/hyperledger/burrow/pull/468) correct specifications for params on unsubscribe on rpc/tendermint 763 - [pull-465](https://github.com/hyperledger/burrow/pull/465) fix divergence from JSON-RPC spec for Response object 764 - [pull-366](https://github.com/hyperledger/burrow/pull/366) correction to circle ci script 765 - [pull-379](https://github.com/hyperledger/burrow/pull/379) more descriptive error message for eris-client 766 767 768 ## [0.15.0] 769 This release was elided to synchronise release versions with tooling 770 771 ## [0.14.0] 772 This release was elided to synchronise release versions with tooling 773 774 ## [0.13.0] 775 This release was elided to synchronise release versions with tooling 776 777 ## [0.12.0] 778 This release marks the start of Eris-DB as the full permissioned blockchain node 779 of the Eris platform with the Tendermint permissioned consensus engine. 780 This involved significant refactoring of almost all parts of the code, 781 but provides a solid foundation to build the next generation of advanced 782 permissioned smart contract blockchains. 783 784 Many changes are under the hood but here are the main externally 785 visible changes: 786 787 - Features and improvements 788 - Upgrade to Tendermint 0.6.0 in-process consensus 789 - Support DELEGATECALL opcode in Ethereum Virtual Machine (important for solidity library calls) 790 - ARM support 791 - Docker image size reduced 792 - Introduction of eris-client companion library for interacting with 793 eris:db 794 - Improved single configuration file for all components written by eris-cm 795 - Allow multiple event subscriptions from same host under rpc/tendermint 796 797 798 - Tool changes 799 - Use glide instead of godeps for dependencies 800 801 802 - Testing 803 - integration tests over simulated RPC calls 804 - significantly improved unit tests 805 - the ethereum virtual machine and the consensus engine are now top-level 806 components and are exposed to continuous integration tests 807 808 809 - Bugfixes (incomplete list) 810 - [EVM] Fix calculation of child CALL gaslimit (allowing solidity library calls to work properly) 811 - [RPC/v0] Fix blocking event subscription in transactAndHold (preventing return in Javascript libraries) 812 - [Blockchain] Fix getBlocks to respect block height cap. 813 814 815 [0.34.4]: https://github.com/hyperledger/burrow/compare/v0.34.3...v0.34.4 816 [0.34.3]: https://github.com/hyperledger/burrow/compare/v0.34.2...v0.34.3 817 [0.34.2]: https://github.com/hyperledger/burrow/compare/v0.34.1...v0.34.2 818 [0.34.1]: https://github.com/hyperledger/burrow/compare/v0.34.0...v0.34.1 819 [0.34.0]: https://github.com/hyperledger/burrow/compare/v0.33.1...v0.34.0 820 [0.33.1]: https://github.com/hyperledger/burrow/compare/v0.33.0...v0.33.1 821 [0.33.0]: https://github.com/hyperledger/burrow/compare/v0.32.1...v0.33.0 822 [0.32.1]: https://github.com/hyperledger/burrow/compare/v0.32.0...v0.32.1 823 [0.32.0]: https://github.com/hyperledger/burrow/compare/v0.31.3...v0.32.0 824 [0.31.3]: https://github.com/hyperledger/burrow/compare/v0.31.2...v0.31.3 825 [0.31.2]: https://github.com/hyperledger/burrow/compare/v0.31.1...v0.31.2 826 [0.31.1]: https://github.com/hyperledger/burrow/compare/v0.31.0...v0.31.1 827 [0.31.0]: https://github.com/hyperledger/burrow/compare/v0.30.5...v0.31.0 828 [0.30.5]: https://github.com/hyperledger/burrow/compare/v0.30.4...v0.30.5 829 [0.30.4]: https://github.com/hyperledger/burrow/compare/v0.30.3...v0.30.4 830 [0.30.3]: https://github.com/hyperledger/burrow/compare/v0.30.2...v0.30.3 831 [0.30.2]: https://github.com/hyperledger/burrow/compare/v0.30.1...v0.30.2 832 [0.30.1]: https://github.com/hyperledger/burrow/compare/v0.30.0...v0.30.1 833 [0.30.0]: https://github.com/hyperledger/burrow/compare/v0.29.8...v0.30.0 834 [0.29.8]: https://github.com/hyperledger/burrow/compare/v0.29.7...v0.29.8 835 [0.29.7]: https://github.com/hyperledger/burrow/compare/v0.29.6...v0.29.7 836 [0.29.6]: https://github.com/hyperledger/burrow/compare/v0.29.5...v0.29.6 837 [0.29.5]: https://github.com/hyperledger/burrow/compare/v0.29.4...v0.29.5 838 [0.29.4]: https://github.com/hyperledger/burrow/compare/v0.29.3...v0.29.4 839 [0.29.3]: https://github.com/hyperledger/burrow/compare/v0.29.2...v0.29.3 840 [0.29.2]: https://github.com/hyperledger/burrow/compare/v0.29.1...v0.29.2 841 [0.29.1]: https://github.com/hyperledger/burrow/compare/v0.29.0...v0.29.1 842 [0.29.0]: https://github.com/hyperledger/burrow/compare/v0.28.2...v0.29.0 843 [0.28.2]: https://github.com/hyperledger/burrow/compare/v0.28.1...v0.28.2 844 [0.28.1]: https://github.com/hyperledger/burrow/compare/v0.28.0...v0.28.1 845 [0.28.0]: https://github.com/hyperledger/burrow/compare/v0.27.0...v0.28.0 846 [0.27.0]: https://github.com/hyperledger/burrow/compare/v0.26.2...v0.27.0 847 [0.26.2]: https://github.com/hyperledger/burrow/compare/v0.26.1...v0.26.2 848 [0.26.1]: https://github.com/hyperledger/burrow/compare/v0.26.0...v0.26.1 849 [0.26.0]: https://github.com/hyperledger/burrow/compare/v0.25.1...v0.26.0 850 [0.25.1]: https://github.com/hyperledger/burrow/compare/v0.25.0...v0.25.1 851 [0.25.0]: https://github.com/hyperledger/burrow/compare/v0.24.6...v0.25.0 852 [0.24.6]: https://github.com/hyperledger/burrow/compare/v0.24.5...v0.24.6 853 [0.24.5]: https://github.com/hyperledger/burrow/compare/v0.24.4...v0.24.5 854 [0.24.4]: https://github.com/hyperledger/burrow/compare/v0.24.3...v0.24.4 855 [0.24.3]: https://github.com/hyperledger/burrow/compare/v0.24.2...v0.24.3 856 [0.24.2]: https://github.com/hyperledger/burrow/compare/v0.24.1...v0.24.2 857 [0.24.1]: https://github.com/hyperledger/burrow/compare/v0.24.0...v0.24.1 858 [0.24.0]: https://github.com/hyperledger/burrow/compare/v0.23.3...v0.24.0 859 [0.23.3]: https://github.com/hyperledger/burrow/compare/v0.23.2...v0.23.3 860 [0.23.2]: https://github.com/hyperledger/burrow/compare/v0.23.1...v0.23.2 861 [0.23.1]: https://github.com/hyperledger/burrow/compare/v0.23.0...v0.23.1 862 [0.23.0]: https://github.com/hyperledger/burrow/compare/v0.22.0...v0.23.0 863 [0.22.0]: https://github.com/hyperledger/burrow/compare/v0.21.0...v0.22.0 864 [0.21.0]: https://github.com/hyperledger/burrow/compare/v0.20.1...v0.21.0 865 [0.20.1]: https://github.com/hyperledger/burrow/compare/v0.20.0...v0.20.1 866 [0.20.0]: https://github.com/hyperledger/burrow/compare/v0.19.0...v0.20.0 867 [0.19.0]: https://github.com/hyperledger/burrow/compare/v0.18.1...v0.19.0 868 [0.18.1]: https://github.com/hyperledger/burrow/compare/v0.18.0...v0.18.1 869 [0.18.0]: https://github.com/hyperledger/burrow/compare/v0.17.1...v0.18.0 870 [0.17.1]: https://github.com/hyperledger/burrow/compare/v0.17.0...v0.17.1 871 [0.17.0]: https://github.com/hyperledger/burrow/compare/v0.16.3...v0.17.0 872 [0.16.3]: https://github.com/hyperledger/burrow/compare/v0.16.2...v0.16.3 873 [0.16.2]: https://github.com/hyperledger/burrow/compare/v0.16.1...v0.16.2 874 [0.16.1]: https://github.com/hyperledger/burrow/compare/v0.16.0...v0.16.1 875 [0.16.0]: https://github.com/hyperledger/burrow/compare/v0.15.0...v0.16.0 876 [0.15.0]: https://github.com/hyperledger/burrow/compare/v0.14.0...v0.15.0 877 [0.14.0]: https://github.com/hyperledger/burrow/compare/v0.13.0...v0.14.0 878 [0.13.0]: https://github.com/hyperledger/burrow/compare/v0.12.0...v0.13.0 879 [0.12.0]: https://github.com/hyperledger/burrow/commits/v0.12.0