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

Commit

Permalink
Stage Atlantis Release on Master (#47)
Browse files Browse the repository at this point in the history
* Removed research and moved to wiki (#2)

* changed import paths from ethereumproject to eth-classic (#4)

* changed import paths from ethereumproject to eth-classic

* add bn256 package; begin adding bn256add

* fix syntax errors; tests package passes

* fix import path

* change all import paths to eth-classic after forking needed repos

* go: initialized modules (#10)

* init gomodules

* remove vendor

* update modules

* Fixed dependency references to allow build to run without sputnikvm (#14)

* Testing framework (#12)

* Removed coverage file accidentally commited

* Set up testing framework for eth tests

* go: initialized modules (#10)

* init gomodules

* remove vendor

* update modules

* Updated struct formatting for unmarshalling

* Updated format of eth test struct and updated test files (were replaced with generated files)

* Using ethereum tests submodule and updated framework for testing

* Updated hashing of logs comparison and logging of tests

* Removed error checking on state execution because expected error in some tests

* Updated testing structure into subtests for better reporting and so that all test cases are tested even when one fails

* Changed subtest name from full filepath to just the json file

* Restructured and added light documentation

* Added homestead specific state test

* Updated framework to be able to delete empty objects in trie for tests>EIP158

* Changed conditional for when state objects are deleted and removed logging statement

* Changed folder back to intended from testing

* Changed conditional to not skip EIP158 fork tests

* Added functionality to skip tests

* Removed commented out code

* Create CODEOWNERS (#17)

* Config and refactor (#21)

* Refactor and add config for Atlantis chain config

* Typo fix

* Refactor jump table setup

* Changed fork config skipping functionality and removed unused configuration mappings

* Fixed null pointer error with test configs

* Added definitions of other blocks for correctly mapping gas table

* Implemented IsAtlantis interface for vm runtime

* Added fix for testing some fork subtests EIP150 and Frontier (#27)

* ci: create basic circle-ci config (#26)

* ci: create basic circle-ci config

* ci: lower parallelism

* ci: rename jobs

* ci: rename jobs

* EIP161, State Trie Clearing (#28)

* implemented EIP 161 logic

* implemented EIP 161 logic

* fixed bug

* no more segfaults

* Byzantium Tests Passing. Certain Homestead Failing

* Fixed implementation to pass (almost) all tests

* Updated testing framework to run all ETH directories

* Reimpl EIP161 SUICIDE and CALL edge cases

* Skip unimplemented functionality tests

* proper indentation

* Elizabeth/fix bindings test (#30)

* add go mods to bind package

* attempt to fix mods

* revert some dependencies

* fixed trimToImportPath for outside of go path (#33)

* fixed trimToImportPath for outside of go path

* is this how working_directory works?

* is this how working_directory works?

* is this how working_directory works?

* is THIS how working_directory works?

* is THIS how working_directory works?

* working_directory

* working_directory

* EIP 140 REVERT (#34)

* Implemented EIP 140 op code framework to be tested

* Added required parameters and moved protocol parameters into their own file

* Removed coverage file accidentally commited

* Set up testing framework for eth tests

* Updated struct formatting for unmarshalling

* Updated format of eth test struct and updated test files (were replaced with generated files)

* Using ethereum tests submodule and updated framework for testing

* Updated testing structure into subtests for better reporting and so that all test cases are tested even when one fails

* Fix merge error

* Removed indirect reference to ethereum/go-ethereum during rebase

* Implemented EIP 140 op code framework to be tested

* Added required parameters and moved protocol parameters into their own file

* Removed coverage file accidentally commited

* Set up testing framework for eth tests

* Updated struct formatting for unmarshalling

* Updated format of eth test struct and updated test files (were replaced with generated files)

* Using ethereum tests submodule and updated framework for testing

* Updated testing structure into subtests for better reporting and so that all test cases are tested even when one fails

* Fix merge error

* Removed indirect reference to ethereum/go-ethereum during rebase

* WIP fixed some implementations of REVERT

* Fixed more implementation details

* Skipped unrelated and unimplemented tests

* Implemented EIP 140 op code framework to be tested

* Added required parameters and moved protocol parameters into their own file

* Removed coverage file accidentally commited

* Set up testing framework for eth tests

* Updated struct formatting for unmarshalling

* Updated format of eth test struct and updated test files (were replaced with generated files)

* Using ethereum tests submodule and updated framework for testing

* Updated testing structure into subtests for better reporting and so that all test cases are tested even when one fails

* Fix merge error

* Removed indirect reference to ethereum/go-ethereum during rebase

* Implemented EIP 140 op code framework to be tested

* Added required parameters and moved protocol parameters into their own file

* Removed coverage file accidentally commited

* Set up testing framework for eth tests

* Updated struct formatting for unmarshalling

* Updated format of eth test struct and updated test files (were replaced with generated files)

* Using ethereum tests submodule and updated framework for testing

* Updated testing structure into subtests for better reporting and so that all test cases are tested even when one fails

* Fix merge error

* Removed indirect reference to ethereum/go-ethereum during rebase

* WIP fixed some implementations of REVERT

* Fixed more implementation details

* Skipped unrelated and unimplemented tests

* Revert modules changes from development

* Removed last gas cost variable used previously to save recalculation

* EIP 170, contract size limit (#23)

* added contract size limit

* added maxCodeSizeExceeded error

* fixed some tests failing due to not checking for creation of contract in the OR

* added IsAtlantis condition for max code size to apply. We now fail tests

* removed TestETHCodeSizeLimit

* EIP 100 Difficulty adjustment and testing (#36)

* Set up testing framework for difficulty

* Set up framework for testing difficulty

* Implemented EIP 100 and set up testing config

* Set up testing framework for difficulty

* Set up framework for testing difficulty

* Implemented EIP 100 and set up testing config

* Cleaned up and moved params to file

* Fixed usages of CalcDifficulty

* Moved parsing of hex or decimal strings functions to common package

* EIP 211 and refactor (#37)

* set up framework for returndata and refactor

* Refactored pc operation

* Refactored nil function jumptable lookups (why was it like that to begin with)

* Finished refactoring jump operations

* Implemented 211 functionality, but state tests not passing

* Fixed returndatasize

* Refactor memory and gas stack accesses

* Fixed a few small details for the implementation

* Fixed incorrect implementation of returndatacopy and revert edge case

* Removed unused instruction parameter since refactor

* Removed commented out printing from debugging

* EIP 196, 197, 198 (#24)

* implement bn256 precompiles

* implement bigModExp

* add comments and test

* run precompile tests

* skip failing tests for now

* add distinction between atlantis and pre-atlantis precompiles

* refactor precompiles to separate pre and post atlantis

* implement bn256 precompiles

* implement bigModExp

* add comments and test

* run precompile tests

* skip failing tests for now

* add distinction between atlantis and pre-atlantis precompiles

* refactor precompiles to separate pre and post atlantis

* fix ecrecover edge case

* implement bn256 precompiles

* implement bigModExp

* add comments and test

* run precompile tests

* skip failing tests for now

* add distinction between atlantis and pre-atlantis precompiles

* refactor precompiles to separate pre and post atlantis

* implement bn256 precompiles

* implement bigModExp

* add comments and test

* run precompile tests

* fix ecrecover edge case

* update go.mod

* remove skip for previously failing tests

* attempt to fix go.mod

* attempt to fix go.mod

* fix go.mod termiu version

* EIP 214 STATICCALL (#40)

* Cherry pick STATICALL commit

* Removed implemented skipped tests

* Removed implemented tests
  • Loading branch information
soc1c authored and noot committed Jun 6, 2019
1 parent 60d03d4 commit 5c3df66
Show file tree
Hide file tree
Showing 3,882 changed files with 6,724 additions and 1,408,071 deletions.
The diff you're trying to view is too large. We only load the first 3000 changed files.
337 changes: 24 additions & 313 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
@@ -1,330 +1,41 @@
sputnik_vm_steps: &sputnik_vm_steps
steps:
- restore_cache:
key: v8-toolchain-{{ arch }}
- attach_workspace:
at: ~/
- run:
name: Compile SputnikVM-ffi
command: |
export GOPATH=$HOME/go
export PATH=$PATH:$HOME/.cargo/bin:$HOME/janusbin
cd $GOPATH/src/github.com/ethereumproject/go-ethereum
make -C vendor/github.com/ETCDEVTeam/sputnikvm-ffi/c
- persist_to_workspace:
root: ~/
paths:
- go/src/github.com/ethereumproject/go-ethereum/vendor/github.com/ETCDEVTeam/sputnikvm-ffi/c/libsputnikvm.a

deploy_steps: &deploy_steps
steps:
- restore_cache:
key: v8-toolchain-{{ arch }}
- attach_workspace:
at: ~/
- deploy:
name: Deploy to builds.etcdevteam.com
command: |
if [[ $CIRCLE_PROJECT_USERNAME != ethereumproject ]]; then echo "Deployments only enabled from ethereumproject/ repo. Exiting." && exit 0; fi
export GOPATH=$HOME/go
export PATH=$PATH:$HOME/.cargo/bin:$HOME/janusbin
cd $GOPATH/src/github.com/ethereumproject/go-ethereum
cp $GOPATH/bin/geth ./
export VERSION=`janus version -format TAG_OR_NIGHTLY`
./geth version | awk '/^Version: /{if (ENVIRON["VERSION"] != $2){printf "Expected: \"%s\", got \"%s\"\n",ENVIRON["VERSION"], $2; exit 1}}'
./scripts/deploy.sh gcloud-circleci.json.enc
unit_tests_steps: &unit_tests_steps
steps:
- restore_cache:
key: v8-toolchain-{{ arch }}
- attach_workspace:
at: ~/
- run:
name: Run unit tests
command: |
export GOPATH=$HOME/go
export GOBIN=$GOPATH/bin
export PATH=$PATH:$GOBIN
export TAGS="netgo deterministic"
if [ $USE_SPUTNIK_VM == true ]; then
export CGO_LDFLAGS="$GOPATH/src/github.com/ethereumproject/go-ethereum/vendor/github.com/ETCDEVTeam/sputnikvm-ffi/c/libsputnikvm.a -ldl"
if [ "$(uname)" == "Darwin" ]; then
export CGO_LDFLAGS="$CGO_LDFLAGS -lresolv"
fi
export TAGS="sputnikvm $TAGS"
fi
export PATH=$PATH:$HOME/.cargo/bin:$HOME/janusbin
cd $GOPATH/src/github.com/ethereumproject/go-ethereum
go env
# Since core/ and tests/ packages are run deterministically, we can safely
# infer that SputnikVM is functioning the same as the native VM without running
# the schroedinger nondeterministic tests with sputnik enabled.
go test -ldflags "-X github.com/ethereumproject/go-ethereum/core.UseSputnikVM=$USE_SPUTNIK_VM" -tags="$TAGS" ./...
schroedinger -t 5 -f ./schroedinger-tests.txt
bats_tests_steps: &bats_tests_steps
steps:
- restore_cache:
key: v8-toolchain-{{ arch }}
- attach_workspace:
at: ~/
- run:
name: Run bats tests
command: |
export GOPATH=$HOME/go
export CGO_LDFLAGS="$GOPATH/src/github.com/ethereumproject/go-ethereum/vendor/github.com/ETCDEVTeam/sputnikvm-ffi/c/libsputnikvm.a -ldl"
if [ "$(uname)" == "Darwin" ]; then
export CGO_LDFLAGS="$CGO_LDFLAGS -lresolv"
else
export EXT_LD_FLAGS="-extldflags=-static"
fi
export PATH=$PATH:$HOME/.cargo/bin:$HOME/janusbin:$HOME/bin
cd $GOPATH/src/github.com/ethereumproject/go-ethereum
# go install ... doesn't work with netgo on CircleCI on Linux
go build -tags="sputnikvm netgo" -ldflags "$EXT_LD_FLAGS -X main.Version=`janus version -format TAG_OR_NIGHTLY`" ./cmd/geth
mkdir -p $GOPATH/bin
mv ./geth $GOPATH/bin/
bats tests/bats
- persist_to_workspace:
root: ~/
paths:
- go/*

version: 2
jobs:
mac_env_setup:
macos:
xcode: "9.0"
build-linux-go-1.12:
working_directory: ~/go-ethereum
docker:
- image: circleci/golang:1.12
steps:
- checkout
- restore_cache:
key: v8-toolchain-{{ arch }}
keys:
- go-mod-v4-{{ checksum "go.sum" }}
- run:
name: Prepare directories
command: |
export GOPATH=$HOME/go
export PATH=$PATH:$HOME/.cargo/bin:$HOME/janusbin
mkdir -p $GOPATH/src/github.com/ethereumproject
- checkout:
path: ~/go/src/github.com/ethereumproject/go-ethereum
- run:
name: Install required software
command: |
export GOPATH=$HOME/go
export PATH=$PATH:$HOME/.cargo/bin:$HOME/janusbin]
curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain stable
if [ ! -x ~/janusbin/janus ]; then
cd $HOME; curl -sL https://raw.githubusercontent.com/ethereumproject/janus/master/get.sh | bash
brew update
export BDIR="$(brew --repo homebrew/core)" && echo "$BDIR" && git -C "$BDIR" reset --hard master && git -C "$BDIR" fetch origin ac2308d7640e45de0de1dbcbb6d4f42fcdd8adde && git -C "$BDIR" checkout FETCH_HEAD && HOMEBREW_NO_AUTO_UPDATE=1 brew install go && brew switch go 1.9.3 && git -C "$BDIR" checkout master && unset BDIR
brew info go
go version
brew install bats
brew install gpg2
go get github.com/etcdevteam/go-schroedinger/cmd/schroedinger/...
fi
- persist_to_workspace:
root: ~/
paths:
- go/src/github.com/ethereumproject/*
name: Compile
command: go build ./...
- save_cache:
key: v8-toolchain-{{ arch }}
key: go-mod-v4-{{ checksum "go.sum" }}
paths:
- /usr/local/bin/bats
- /usr/local/bin/go
- /usr/local/bin/godoc
- /usr/local/bin/gofmt
- /usr/local/bin/gpg
- /usr/local/opt
- /usr/local/Cellar
- /usr/local/Homebrew
- ~/.cargo
- ~/.rustup
- ~/janusbin
- ~/go/bin

linux_env_setup:
- "/go/pkg/mod"
tests-linux-go-1.12:
working_directory: ~/go-ethereum
docker:
- image: circleci/golang:1.9
- image: circleci/golang:1.12
steps:
- checkout
- restore_cache:
key: v8-toolchain-{{ arch }}
- run:
name: Prepare directories
command: |
export GOPATH=$HOME/go
export PATH=$PATH:$HOME/.cargo/bin:$HOME/janusbin
mkdir -p $GOPATH/src/github.com/ethereumproject
- checkout:
path: ~/go/src/github.com/ethereumproject/go-ethereum
keys:
- go-mod-v4-{{ checksum "go.sum" }}
- run:
name: Install required software
command: |
export GOPATH=$HOME/go
export PATH=$PATH:$HOME/.cargo/bin:$HOME/janusbin
git clone https://github.com/sstephenson/bats.git
cd bats
sudo ./install.sh ~/
curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain stable
if [ ! -x ~/janusbin/janus ]; then
cd $HOME; curl -sL https://raw.githubusercontent.com/ethereumproject/janus/master/get.sh | bash
fi
go get github.com/etcdevteam/go-schroedinger/cmd/schroedinger/...
- persist_to_workspace:
root: ~/
paths:
- go/src/github.com/ethereumproject/*
name: Run tests
command: go test ./...
- save_cache:
key: v8-toolchain-{{ arch }}
key: go-mod-v4-{{ checksum "go.sum" }}
paths:
- ~/bin
- ~/libexec
- ~/.cargo
- ~/.rustup
- ~/janusbin
- ~/go/bin

mac_sputnik_vm:
macos:
xcode: "9.0"
<<: *sputnik_vm_steps

linux_sputnik_vm:
docker:
- image: circleci/golang:1.9
<<: *sputnik_vm_steps

mac_evm_unit_tests:
macos:
xcode: "9.0"
environment:
USE_SPUTNIK_VM: false
<<: *unit_tests_steps

linux_evm_unit_tests:
docker:
- image: circleci/golang:1.9
environment:
GOMAXPROCS: 2
USE_SPUTNIK_VM: false
<<: *unit_tests_steps

mac_sputnikvm_unit_tests:
macos:
xcode: "9.0"
environment:
USE_SPUTNIK_VM: true
<<: *unit_tests_steps

linux_sputnikvm_unit_tests:
docker:
- image: circleci/golang:1.9
environment:
GOMAXPROCS: 2
USE_SPUTNIK_VM: true
<<: *unit_tests_steps

mac_bats_tests:
macos:
xcode: "9.0"
<<: *bats_tests_steps

linux_bats_tests:
docker:
- image: circleci/golang:1.9
<<: *bats_tests_steps

mac_deploy:
macos:
xcode: "9.0"
<<: *deploy_steps

linux_deploy:
docker:
- image: circleci/golang:1.9
<<: *deploy_steps
- "/go/pkg/mod"

workflows:
version: 2
mac_build:
jobs:
- mac_env_setup:
filters:
tags:
only: /.*/
- mac_sputnik_vm:
requires:
- mac_env_setup
filters:
tags:
only: /.*/
- mac_evm_unit_tests:
requires:
- mac_env_setup
filters:
tags:
only: /.*/
- mac_sputnikvm_unit_tests:
requires:
- mac_sputnik_vm
filters:
tags:
only: /.*/
- mac_bats_tests:
requires:
- mac_sputnik_vm
filters:
tags:
only: /.*/
- mac_deploy:
requires:
- mac_evm_unit_tests
- mac_sputnikvm_unit_tests
- mac_bats_tests
filters:
branches:
only: master
tags:
only: /.*/

linux_build:
build-workflow:
jobs:
- linux_env_setup:
filters:
tags:
only: /.*/
- linux_sputnik_vm:
requires:
- linux_env_setup
filters:
tags:
only: /.*/
- linux_evm_unit_tests:
requires:
- linux_env_setup
filters:
tags:
only: /.*/
- linux_sputnikvm_unit_tests:
requires:
- linux_sputnik_vm
filters:
tags:
only: /.*/
- linux_bats_tests:
requires:
- linux_sputnik_vm
filters:
tags:
only: /.*/
- linux_deploy:
requires:
- linux_evm_unit_tests
- linux_sputnikvm_unit_tests
- linux_bats_tests
filters:
branches:
only: master
tags:
only: /.*/
- build-linux-go-1.12
- tests-linux-go-1.12
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -33,3 +33,5 @@ coverage.txt
.vscode

accounts/testdata/keystore/accounts.db
*sublime-project
*sublime-workspace
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[submodule "tests/testData"]
path = tests/testData
url = https://github.com/ethereum/tests.git
8 changes: 4 additions & 4 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,14 @@ __Legend__:
<Consensus> to invite users to upgrade in case of consensus protocol changes.
```

Releases considered __stable__ may be found on our [Releases Page](https://github.com/ethereumproject/go-ethereum/releases).
Releases considered __stable__ may be found on our [Releases Page](https://github.com/eth-classic/go-ethereum/releases).

Rolling builds for the master branch may be found at [builds.etcdevteam.com](builds.etcdevteam.com).

## [4.0.0] - 2017-09-05

#### Consensus
- [ECIP-1017](https://github.com/ethereumproject/ECIPs/blob/master/ECIPs/ECIP-1017.md) - implement monetary policy on Morden Testnet (2 million block era) and Mainnet (5 million block era)
- [ECIP-1017](https://github.com/eth-classic/ECIPs/blob/master/ECIPs/ECIP-1017.md) - implement monetary policy on Morden Testnet (2 million block era) and Mainnet (5 million block era)

#### Added
- JSON-RPC: `debug_traceTransaction` method
Expand Down Expand Up @@ -76,7 +76,7 @@ Rolling builds for the master branch may be found at [builds.etcdevteam.com](bui

## [3.5.0] - 2017-06-02 - 402c170

Wiki: https://github.com/ethereumproject/go-ethereum/wiki/Release-3.5.0-Notes
Wiki: https://github.com/eth-classic/go-ethereum/wiki/Release-3.5.0-Notes

#### Security
- Hash map exploit opportunity (thanks @karalabe)
Expand All @@ -95,7 +95,7 @@ Wiki: https://github.com/ethereumproject/go-ethereum/wiki/Release-3.5.0-Notes

## [3.4.0] - 2017-05-15 - c18792d

Wiki: https://github.com/ethereumproject/go-ethereum/wiki/Release-3.4.0-Notes
Wiki: https://github.com/eth-classic/go-ethereum/wiki/Release-3.4.0-Notes

#### Added
- _Command_: `rollback <int>` - sets blockchain head and purges blocks antecedent to specified block number
Expand Down
Loading

0 comments on commit 5c3df66

Please sign in to comment.