Skip to content
This repository has been archived by the owner on May 13, 2022. It is now read-only.

Commit

Permalink
Merge pull request #759 from hyperledger/develop
Browse files Browse the repository at this point in the history
Merge develop to master for release
  • Loading branch information
Casey Kuhlman authored May 8, 2018
2 parents f41955f + 7c08d93 commit 5a21578
Show file tree
Hide file tree
Showing 1,553 changed files with 564,781 additions and 25,907 deletions.
16 changes: 16 additions & 0 deletions .circleci/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
FROM golang:1.10.1-alpine3.7
MAINTAINER Monax <[email protected]>

ENV DOCKER_VERSION "17.12.1-ce"
# This is the image used by the Circle CI config in this directory pushed to quay.io/monax/bosmarmot:ci
# docker build -t quay.io/monax/burrow:ci -f ./.circleci/Dockerfile .
RUN apk add --update --no-cache nodejs netcat-openbsd git openssh-client make bash gcc g++ jq curl
# get docker client
RUN curl -L -o /tmp/docker-$DOCKER_VERSION.tgz https://download.docker.com/linux/static/stable/x86_64/docker-$DOCKER_VERSION.tgz \
&& tar -xz -C /tmp -f /tmp/docker-$DOCKER_VERSION.tgz \
&& mv /tmp/docker/docker /usr/bin \
&& rm -rf /tmp/docker-$DOCKER_VERSION /tmp/docker
RUN go get github.com/jstemmer/go-junit-report
RUN go get -u github.com/golang/dep/cmd/dep
RUN npm install -g mocha
RUN npm install -g mocha-circleci-reporter
68 changes: 30 additions & 38 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,60 +4,58 @@
defaults: &defaults
working_directory: /go/src/github.com/hyperledger/burrow
docker:
- image: circleci/golang:1.8.1
- image: quay.io/monax/burrow:ci

tag_filters: &tags_filters
tags:
only: /^v[0-9]+\.[0-9]+\.[0-9]+$/

setup_docker: &setup_docker
version: 17.06.1-ce
version: 17.11.0-ce

# Start of CircleCI 2.0 config
version: 2
jobs:
checkout_code:
<<: *defaults
steps:
- checkout
- run: go get github.com/Masterminds/glide
- run: glide install

# Just persist the entire working dir (burrow checkout)
- persist_to_workspace:
root: .
paths:
- .
test:
<<: *defaults
steps:
- attach_workspace:
at: .
- checkout
- run: make test
# In case we miss compile errors not pulled into test paths
- run: make build

test_integration:
<<: *defaults
steps:
- attach_workspace:
at: .
- checkout
- run: make test_integration

test_integration_bosmarmot:
<<: *defaults
steps:
- checkout
- run: make test_integration_bosmarmot

ensure_vendor:
<<: *defaults
steps:
- checkout
- run: make ensure_vendor

build_docker:
<<: *defaults
steps:
- attach_workspace:
at: .
- checkout
# This allows us to perform our docker builds
- setup_remote_docker:
<<: *setup_docker
- run: docker login -u $DOCKER_USER -p $DOCKER_PASS quay.io
# build docker image and tag the docker image(s) depending on branch/tag
- run: make build_docker_db
- run: make docker_build
- run: docker save quay.io/monax/db > db-images.tar
- persist_to_workspace:
root: .
paths:
- db-images.tar
- .

# Simple smoke test to ensure burrow binary has been provisioned to container
test_docker_smoke:
Expand All @@ -67,7 +65,6 @@ jobs:
at: .
- setup_remote_docker:
<<: *setup_docker
- run: docker login -u $DOCKER_USER -p $DOCKER_PASS quay.io
- run: docker load -i db-images.tar
- run: docker run quay.io/monax/db:$(./scripts/local_version.sh) burrow -h

Expand All @@ -88,29 +85,23 @@ workflows:

test_and_release:
jobs:
- checkout_code:
# Rather annoyingly we need to include tags_filters on all transitive
# dependencies if we want the deploy job to build against a version
# tag.
# In contract jobs build against all branches by default
filters:
<<: *tags_filters

- test:
requires:
- checkout_code
filters:
<<: *tags_filters

- test_integration:
requires:
- checkout_code
filters:
<<: *tags_filters

- test_integration_bosmarmot:
filters:
<<: *tags_filters

- ensure_vendor:
filters:
<<: *tags_filters

- build_docker:
requires:
- checkout_code
filters:
<<: *tags_filters

Expand All @@ -124,6 +115,7 @@ workflows:
requires:
- test
- test_integration
- test_integration_bosmarmot
- test_docker_smoke
filters:
# tags filters and branch filters are applied disjunctively, so we
Expand Down
3 changes: 1 addition & 2 deletions .dockerignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,10 @@
.project
run.sh
build_tool.sh
Makefile
Vagrantfile
Dockerfile
CHANGELOG.md
README.md
.circleci
docs
vendor
bin
15 changes: 11 additions & 4 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,11 +1,18 @@
# do not vendor in dependencies
vendor

# build target
target
bin/

# tests
test_scratch/
*.log
.burrow

# Temporary / cached
*.swp
debug
.idea
.vscode

.gopath_bos
burrow.toml

commit_hash.txt
115 changes: 87 additions & 28 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,57 @@
# burrow changelog
## v0.17.1
# 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

## v0.17.0
## Version 0.17.0
This is a service release with some significant ethereum/solidity compatibility improvements and new logging features. It includes:

- [Upgrade to use Tendermint v0.9.2](https://github.com/hyperledger/burrow/pull/595)
Expand All @@ -17,28 +66,25 @@ Known issues:

- 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.

## v0.16.3
This release adds an stop-gap fix to the `Transact` method so that it never
transfers value with the `CallTx` is generates.
## Version 0.16.3
This release adds an stop-gap fix to the Transact method so that it never
transfers value with the CallTx is generates.

We hard-code `amount = fee` so that no value is transferred
regardless of fee sent. This fixes an invalid jump destination error arising
We hard-code amount = fee so that no value is transferred
regardless of fee sent. This fixes an invalid jump destination error arising
from transferring value to non-payable functions with newer versions of solidity.
By doing this we can resolve some issues with users of the v0 RPC without making
By doing this we can resolve some issues with users of the v0 RPC without making
a breaking API change.

## v0.16.2
This release finalises our accession to the Hyperledger project and updates our
root package namespace to github.com/hyperledger/burrow.
## Version 0.16.2
This release finalises our accession to the Hyperledger project and updates our root package namespace to github.com/hyperledger/burrow.

It also includes a bug fix for rpc/V0 so that BroadcastTx can accept any
transaction type and various pieces of internal clean-up.
It also includes a bug fix for rpc/V0 so that BroadcastTx can accept any transaction type and various pieces of internal clean-up.

## v0.16.1
This release was an internal rename to 'Burrow' with some minor other attendant
clean up.
## Version 0.16.1
This release was an internal rename to 'Burrow' with some minor other attendant clean up.

## v0.16.0
## Version 0.16.0
This is a consolidation release that fixes various bugs and improves elements
of the architecture across the Monax Platform to support a quicker release
cadence.
Expand All @@ -47,14 +93,14 @@ cadence.
- [pull-510](https://github.com/hyperledger/burrow/pull/510) upgrade consensus engine to Tendermint v0.8.0
- [pull-507](https://github.com/hyperledger/burrow/pull/507) use sha3 for snative addresses for future-proofing
- [pull-506](https://github.com/hyperledger/burrow/pull/506) alignment and consolidation for genesis and config between tooling and chains
- [pull-504](https://github.com/hyperledger/burrow/pull/504) relicense burrow to Apache 2.0
- [pull-504](https://github.com/hyperledger/burrow/pull/504) relicense eris-db to Apache 2.0
- [pull-500](https://github.com/hyperledger/burrow/pull/500) introduce more strongly types secure native contracts
- [pull-499](https://github.com/hyperledger/burrow/pull/499) introduce word256 and remove dependency on tendermint/go-common
- [pull-493](https://github.com/hyperledger/burrow/pull/493) re-introduce GenesisTime in GenesisDoc

- 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 a burrow blockchain. More to follow.
- Genesis making is improved and moved into burrow.
- Config templating is moved into burrow for better synchronisation of server config between the consumer of it (burrow) and the producers of it (cli and other tools).
- 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.
- Genesis making is improved and moved into eris-db.
- 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).
- Some documentation updates in code and in specs.
- [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.

Expand All @@ -65,11 +111,21 @@ cadence.
- [pull-468](https://github.com/hyperledger/burrow/pull/468) correct specifications for params on unsubscribe on rpc/tendermint
- [pull-465](https://github.com/hyperledger/burrow/pull/465) fix divergence from JSON-RPC spec for Response object
- [pull-366](https://github.com/hyperledger/burrow/pull/366) correction to circle ci script
- [pull-379](https://github.com/hyperledger/burrow/pull/379) more descriptive error message for burrow-client
- [pull-379](https://github.com/hyperledger/burrow/pull/379) more descriptive error message for eris-client

## v0.12.0
This release marks the start of burrow as the full permissioned blockchain node
of the Monax Platform with the Tendermint permissioned consensus engine.

## Version 0.15.0
This release was elided to synchronise release versions with tooling

## Version 0.14.0
This release was elided to synchronise release versions with tooling

## Version 0.13.0
This release was elided to synchronise release versions with tooling

## Version 0.12.0
This release marks the start of Eris-DB as the full permissioned blockchain node
of the Eris platform with the Tendermint permissioned consensus engine.
This involved significant refactoring of almost all parts of the code,
but provides a solid foundation to build the next generation of advanced
permissioned smart contract blockchains.
Expand All @@ -82,7 +138,8 @@ This release marks the start of burrow as the full permissioned blockchain node
- Support DELEGATECALL opcode in Ethereum Virtual Machine (important for solidity library calls)
- ARM support
- Docker image size reduced
- Introduction of burrow-client companion library for interacting with burrow
- Introduction of eris-client companion library for interacting with
eris:db
- Improved single configuration file for all components written by eris-cm
- Allow multiple event subscriptions from same host under rpc/tendermint

Expand All @@ -101,4 +158,6 @@ This release marks the start of burrow as the full permissioned blockchain node
- Bugfixes (incomplete list)
- [EVM] Fix calculation of child CALL gaslimit (allowing solidity library calls to work properly)
- [RPC/v0] Fix blocking event subscription in transactAndHold (preventing return in Javascript libraries)
- [Blockchain] Fix getBlocks to respect block height cap
- [Blockchain] Fix getBlocks to respect block height cap.


14 changes: 6 additions & 8 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,21 +1,18 @@
# We use a multistage build to avoid bloating our deployment image with build dependencies
FROM golang:1.9.0-alpine3.6 as builder
FROM golang:1.10.1-alpine3.7 as builder
MAINTAINER Monax <[email protected]>

RUN apk add --no-cache --update git
RUN go get github.com/Masterminds/glide
RUN apk add --no-cache --update git bash make

ARG REPO=$GOPATH/src/github.com/hyperledger/burrow
COPY . $REPO
WORKDIR $REPO
RUN glide install

# Build purely static binaries
RUN go build --ldflags '-extldflags "-static"' -o bin/burrow ./cmd/burrow
RUN go build --ldflags '-extldflags "-static"' -o bin/burrow-client ./client/cmd/burrow-client
RUN make build

# This will be our base container image
FROM alpine:3.6
FROM alpine:3.7

ARG REPO=/go/src/github.com/hyperledger/burrow

Expand All @@ -27,10 +24,11 @@ USER $USER:$USER

# Copy binaries built in previous stage
COPY --from=builder $REPO/bin/* /usr/local/bin/
#RUN chown $USER:$USER /usr/local/bin/burrow*

# Expose ports for 1337:burrow API; 46656:tendermint-peer; 46657:tendermint-rpc
EXPOSE 1337
EXPOSE 46656
EXPOSE 46657

CMD [ "burrow", "serve" ]
CMD [ "burrow" ]
Loading

0 comments on commit 5a21578

Please sign in to comment.