From 363426c08b0221344dfa96b8f01bead77116ea4e Mon Sep 17 00:00:00 2001 From: Silas Davis <silas@monax.io> Date: Tue, 8 May 2018 18:17:58 +0100 Subject: [PATCH] Update project history for 0.18.0 release, add moniker flag Signed-off-by: Silas Davis <silas@monax.io> --- CHANGELOG.md | 49 +++++++++++++++++++++++++++++++++++++++++++ NOTES.md | 48 +++++++++++++++++++++++++++++++++++++++++- README.md | 10 +++++---- cmd/burrow/main.go | 12 ++++++++++- project/history.go | 51 ++++++++++++++++++++++++++++++++++++++++++--- scripts/deps/bos.sh | 2 +- 6 files changed, 162 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e9923816..6789f720 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,53 @@ # Hyperledger Burrow Changelog +## Version 0.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](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. + +#### 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](https://chat.hyperledger.org/channel/burrow) +- Missing support for: RETURNDATACOPY and RETURNDATASIZE https://github.com/hyperledger/burrow/issues/705 (coming very soon) +- Missing support for: INVALID https://github.com/hyperledger/burrow/issues/705 (coming very soon) +- Missing support for: REVERT https://github.com/hyperledger/burrow/issues/600 (coming very soon) + + ## Version 0.17.1 Minor tweaks to docker build file diff --git a/NOTES.md b/NOTES.md index a5d00090..22d88dc4 100644 --- a/NOTES.md +++ b/NOTES.md @@ -1 +1,47 @@ -Minor tweaks to docker build file +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](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. + +#### 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](https://chat.hyperledger.org/channel/burrow) +- Missing support for: RETURNDATACOPY and RETURNDATASIZE https://github.com/hyperledger/burrow/issues/705 (coming very soon) +- Missing support for: INVALID https://github.com/hyperledger/burrow/issues/705 (coming very soon) +- Missing support for: REVERT https://github.com/hyperledger/burrow/issues/600 (coming very soon) + diff --git a/README.md b/README.md index 79bd9aa6..3e7744fa 100644 --- a/README.md +++ b/README.md @@ -24,8 +24,7 @@ Project information generally updated on a quarterly basis can be found on the [ ## Installation -- [Install go](https://golang.org/doc/install) and have `$GOPATH` set -- Ensure you have `gmp` installed (`sudo apt-get install libgmp3-dev || brew install gmp`) +- [Install go](https://golang.org/doc/install) version 1.10 or above and have `$GOPATH` set ``` go get github.com/hyperledger/burrow @@ -69,13 +68,16 @@ which translates into: # This is a place we can store config files and burrow's working directory '.burrow' mkdir chain_dir && cd chain_dir burrow spec --participant-accounts=1 --full-accounts=1 > genesis-spec.json -burrow configure --genesis-spec=genesis-spec.json --validator-index=0 > burrow.toml +burrow configure --genesis-spec=genesis-spec.json > burrow.toml ``` #### Run Burrow Once the `burrow.toml` has been created, we run: ``` -burrow serve +# To select our validator address by index in the GenesisDoc +burrow serve --validator-index=0 +# Or to select based on address directly (substituting the example address below with your validator's): +burrow serve --validator-address=BE584820DC904A55449D7EB0C97607B40224B96E ``` and the logs will start streaming through. diff --git a/cmd/burrow/main.go b/cmd/burrow/main.go index f7d812b4..ef1956c6 100644 --- a/cmd/burrow/main.go +++ b/cmd/burrow/main.go @@ -65,7 +65,13 @@ func burrow() *cli.Cli { EnvVar: "BURROW_VALIDATOR_PASSPHRASE", }) - cmd.Spec = "[--config=<config file>] " + + validatorMonikerOpt := cmd.String(cli.StringOpt{ + Name: "m validator-moniker", + Desc: "An optional human-readable moniker to identify this validator amongst Tendermint peers in logs and status queries", + EnvVar: "BURROW_VALIDATOR_MONIKER", + }) + + cmd.Spec = "[--config=<config file>] [--validator-moniker=<human readable moniker>] " + "[--validator-index=<index of validator in GenesisDoc> | --validator-address=<address of validator signing key>] " + "[--genesis=<genesis json file>]" @@ -116,6 +122,10 @@ func burrow() *cli.Cli { conf.ValidatorPassphrase = validatorPassphraseOpt } + if *validatorMonikerOpt != "" { + conf.Tendermint.Moniker = *validatorMonikerOpt + } + ctx, cancel := context.WithCancel(context.Background()) defer cancel() diff --git a/project/history.go b/project/history.go index d4d1b5ae..9d82ee54 100644 --- a/project/history.go +++ b/project/history.go @@ -28,10 +28,55 @@ func FullVersion() string { // To cut a new release add a release to the front of this slice then run the // release tagging script: ./scripts/tag_release.sh var History relic.ImmutableHistory = relic.NewHistory("Hyperledger Burrow").MustDeclareReleases( - "0.18.1", - `Fixes for deployment`, "0.18.0", - `Prerelease`, + `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](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. + +#### 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](https://chat.hyperledger.org/channel/burrow) +- Missing support for: RETURNDATACOPY and RETURNDATASIZE https://github.com/hyperledger/burrow/issues/705 (coming very soon) +- Missing support for: INVALID https://github.com/hyperledger/burrow/issues/705 (coming very soon) +- Missing support for: REVERT https://github.com/hyperledger/burrow/issues/600 (coming very soon) +`, + "0.17.1", `Minor tweaks to docker build file`, diff --git a/scripts/deps/bos.sh b/scripts/deps/bos.sh index ba42f37f..ed7b50e1 100755 --- a/scripts/deps/bos.sh +++ b/scripts/deps/bos.sh @@ -1,4 +1,4 @@ #!/usr/bin/env bash # The git revision of Bosmarmot/bos we will build and install into ./bin/ for integration tests -echo "520a381e112f108e0ce71f4e6bc1bb8e3fde236f" \ No newline at end of file +echo "b830643520b03e27365b5b0eb0230b919917ed73" \ No newline at end of file -- GitLab