backports for beta 2.5.2 (#10737)
* version: bump beta to 2.5.2 * [CI] allow cargo audit to fail (#10676) * [CI] allow cargo audit to fail * [.gitlab-ci.yml] add a comment about cargo audit * [Cargo.lock] cargo update -p protobuf * Reset blockchain properly (#10669) * delete BlockDetails from COL_EXTRA * better proofs * added tests * PR suggestions * new image (#10673) * Update publishing (#10644) * docker images are now built on k8s: test run * copy check_sync.sh in build-linux job * copy scripts/docker/hub/* in build-linux job * removed cache var * cleanup, no more nightly dockers * cleanup in dockerfile * some new tags * removed sccsche debug log, cleanup * no_gits, new artifacts dir, changed scripts. Test run. * define version once * one source for TRACK * stop kovan onchain updates * moved changes for two images to a new branch * rename Dockerfile * no need in libudev-dev * enable lto for release builds (#10717) * Use RUSTFLAGS to set the optimization level (#10719) * Use RUSTFLAGS to set the optimization level Cargo has a [quirk]() in how configuration settings are propagated when `cargo test` runs: local code respect the settings in `[profile.test]` but all dependencies use the `[profile.dev]` settings. Here we force `opt-level=3` for all dependencies. * Remove unused profile settings * Maybe like this? * Turn off incremental compilation * Remove colors; try again with overflow-checks on * Use quiet CI machine * Turn overflow checking back on * Be explicit about what options we use * Remove "quiet machine" override * ethcore: enable ECIP-1054 for classic (#10731) * config: enable atlantis on ethereum classic * config: enable atlantis on morden classic * config: enable atlantis on morden classic * config: enable atlantis on kotti classic * ethcore: move kotti fork block to 0xAEF49 * ethcore: move morden fork block to 0x4829BA * ethcore: move classic fork block to 0x81B320 * remove trailing comma * remove trailing comma * fix chainspec * ethcore: move classic fork block to 0x7fffffffffffffff
This commit is contained in:
parent
adabd8198c
commit
ecbafb2390
@ -4,11 +4,13 @@ stages:
|
|||||||
- publish
|
- publish
|
||||||
- optional
|
- optional
|
||||||
|
|
||||||
image: parity/rust-parity-ethereum-build:xenial
|
image: parity/parity-ci-linux:latest
|
||||||
variables:
|
variables:
|
||||||
GIT_STRATEGY: fetch
|
GIT_STRATEGY: fetch
|
||||||
GIT_SUBMODULE_STRATEGY: recursive
|
GIT_SUBMODULE_STRATEGY: recursive
|
||||||
CI_SERVER_NAME: "GitLab CI"
|
CI_SERVER_NAME: "GitLab CI"
|
||||||
|
CARGO_HOME: "/ci-cache/${CI_PROJECT_NAME}/cargo/${CI_JOB_NAME}"
|
||||||
|
SCCACHE_DIR: "/ci-cache/${CI_PROJECT_NAME}/sccache"
|
||||||
CARGO_TARGET: x86_64-unknown-linux-gnu
|
CARGO_TARGET: x86_64-unknown-linux-gnu
|
||||||
|
|
||||||
.no_git: &no_git # disable git strategy
|
.no_git: &no_git # disable git strategy
|
||||||
@ -30,12 +32,15 @@ variables:
|
|||||||
expire_in: 1 mos
|
expire_in: 1 mos
|
||||||
paths:
|
paths:
|
||||||
- artifacts/
|
- artifacts/
|
||||||
|
- tools/
|
||||||
|
|
||||||
.docker-cache-status: &docker-cache-status
|
.docker-cache-status: &docker-cache-status
|
||||||
variables:
|
variables:
|
||||||
CARGO_HOME: "/ci-cache/parity-ethereum/cargo/${CI_JOB_NAME}"
|
CARGO_HOME: "/ci-cache/parity-ethereum/cargo/${CI_JOB_NAME}"
|
||||||
dependencies: []
|
dependencies: []
|
||||||
before_script:
|
before_script:
|
||||||
|
- rustup show
|
||||||
|
- cargo --version
|
||||||
- SCCACHE_ERROR_LOG=/builds/parity/parity-ethereum/sccache_debug.log
|
- SCCACHE_ERROR_LOG=/builds/parity/parity-ethereum/sccache_debug.log
|
||||||
RUST_LOG=sccache=debug
|
RUST_LOG=sccache=debug
|
||||||
sccache --start-server
|
sccache --start-server
|
||||||
@ -44,10 +49,7 @@ variables:
|
|||||||
# sccache debug info
|
# sccache debug info
|
||||||
- if test -e sccache_debug.log;
|
- if test -e sccache_debug.log;
|
||||||
then
|
then
|
||||||
echo "_____sccache_debug.log listing start:_____";
|
echo "_____All crate-types:_____";
|
||||||
cat sccache_debug.log;
|
|
||||||
echo "_____sccache_debug.log listing end_____";
|
|
||||||
echo "All crate-types:";
|
|
||||||
grep 'parse_arguments.*--crate-type' sccache_debug.log | sed -re 's/.*"--crate-type", "([^"]+)".*/\1/' | sort | uniq -c;
|
grep 'parse_arguments.*--crate-type' sccache_debug.log | sed -re 's/.*"--crate-type", "([^"]+)".*/\1/' | sort | uniq -c;
|
||||||
echo "_____Non-cacheable reasons:_____";
|
echo "_____Non-cacheable reasons:_____";
|
||||||
grep CannotCache sccache_debug.log | sed -re 's/.*CannotCache\((.+)\).*/\1/' | sort | uniq -c;
|
grep CannotCache sccache_debug.log | sed -re 's/.*CannotCache\((.+)\).*/\1/' | sort | uniq -c;
|
||||||
@ -65,6 +67,16 @@ variables:
|
|||||||
script:
|
script:
|
||||||
- scripts/gitlab/build-linux.sh
|
- scripts/gitlab/build-linux.sh
|
||||||
- sccache -s
|
- sccache -s
|
||||||
|
after_script:
|
||||||
|
- mkdir -p tools
|
||||||
|
- cp -r scripts/docker/hub/* ./tools
|
||||||
|
- cp scripts/gitlab/publish-snap.sh ./tools
|
||||||
|
- cp scripts/gitlab/publish-onchain.sh ./tools
|
||||||
|
- cp scripts/gitlab/safe-curl.sh ./tools
|
||||||
|
- echo v"$(sed -r -n '1,/^version/s/^version\s*=\s*"([^"]+)".*$/\1/p' Cargo.toml)" |
|
||||||
|
tee ./tools/VERSION
|
||||||
|
- echo "$(sed -r -n '1,/^track/s/^track\s*=\s*"([^"]+)".*$/\1/p' ./util/version/Cargo.toml)" |
|
||||||
|
tee ./tools/TRACK
|
||||||
|
|
||||||
|
|
||||||
cargo-check 0 3:
|
cargo-check 0 3:
|
||||||
@ -93,6 +105,7 @@ cargo-audit:
|
|||||||
<<: *docker-cache-status
|
<<: *docker-cache-status
|
||||||
script:
|
script:
|
||||||
- cargo audit
|
- cargo audit
|
||||||
|
allow_failure: true # failed cargo audit shouldn't prevent a PR from being merged
|
||||||
|
|
||||||
validate-chainspecs:
|
validate-chainspecs:
|
||||||
stage: test
|
stage: test
|
||||||
@ -192,19 +205,35 @@ build-windows:
|
|||||||
|
|
||||||
publish-docker:
|
publish-docker:
|
||||||
stage: publish
|
stage: publish
|
||||||
|
<<: *no_git
|
||||||
only: *releaseable_branches
|
only: *releaseable_branches
|
||||||
cache: {}
|
except:
|
||||||
|
variables:
|
||||||
|
- $SCHEDULE_TAG == "nightly"
|
||||||
dependencies:
|
dependencies:
|
||||||
- build-linux
|
- build-linux
|
||||||
tags:
|
environment:
|
||||||
- shell
|
name: parity-build
|
||||||
|
cache: {}
|
||||||
|
image: docker:stable
|
||||||
|
services:
|
||||||
|
- docker:dind
|
||||||
|
variables:
|
||||||
|
DOCKER_HOST: tcp://localhost:2375
|
||||||
|
DOCKER_DRIVER: overlay2
|
||||||
|
GIT_STRATEGY: none
|
||||||
|
# DOCKERFILE: tools/Dockerfile
|
||||||
|
# CONTAINER_IMAGE: parity/parity
|
||||||
script:
|
script:
|
||||||
- scripts/gitlab/publish-docker.sh parity
|
# we stopped pushing nightlies to dockerhub, will push to own registry prb.
|
||||||
|
- ./tools/publish-docker.sh
|
||||||
|
tags:
|
||||||
|
- kubernetes-parity-build
|
||||||
|
|
||||||
publish-snap: &publish-snap
|
publish-snap: &publish-snap
|
||||||
stage: publish
|
stage: publish
|
||||||
|
<<: *no_git
|
||||||
only: *releaseable_branches
|
only: *releaseable_branches
|
||||||
<<: *collect_artifacts
|
|
||||||
image: snapcore/snapcraft
|
image: snapcore/snapcraft
|
||||||
variables:
|
variables:
|
||||||
BUILD_ARCH: amd64
|
BUILD_ARCH: amd64
|
||||||
@ -214,12 +243,13 @@ publish-snap: &publish-snap
|
|||||||
tags:
|
tags:
|
||||||
- linux-docker
|
- linux-docker
|
||||||
script:
|
script:
|
||||||
- scripts/gitlab/publish-snap.sh
|
- ./tools/publish-snap.sh
|
||||||
|
|
||||||
publish-snap-i386:
|
publish-snap-i386:
|
||||||
<<: *publish-snap
|
<<: *publish-snap
|
||||||
variables:
|
variables:
|
||||||
BUILD_ARCH: i386
|
BUILD_ARCH: i386
|
||||||
|
CARGO_TARGET: i686-unknown-linux-gnu
|
||||||
dependencies:
|
dependencies:
|
||||||
- build-linux-i386
|
- build-linux-i386
|
||||||
|
|
||||||
@ -227,6 +257,7 @@ publish-snap-arm64:
|
|||||||
<<: *publish-snap
|
<<: *publish-snap
|
||||||
variables:
|
variables:
|
||||||
BUILD_ARCH: arm64
|
BUILD_ARCH: arm64
|
||||||
|
CARGO_TARGET: aarch64-unknown-linux-gnu
|
||||||
dependencies:
|
dependencies:
|
||||||
- build-linux-arm64
|
- build-linux-arm64
|
||||||
|
|
||||||
@ -234,11 +265,13 @@ publish-snap-armhf:
|
|||||||
<<: *publish-snap
|
<<: *publish-snap
|
||||||
variables:
|
variables:
|
||||||
BUILD_ARCH: armhf
|
BUILD_ARCH: armhf
|
||||||
|
CARGO_TARGET: armv7-unknown-linux-gnueabihf
|
||||||
dependencies:
|
dependencies:
|
||||||
- build-linux-armhf
|
- build-linux-armhf
|
||||||
|
|
||||||
publish-onchain:
|
publish-onchain:
|
||||||
stage: publish
|
stage: publish
|
||||||
|
<<: *no_git
|
||||||
only: *releaseable_branches
|
only: *releaseable_branches
|
||||||
cache: {}
|
cache: {}
|
||||||
dependencies:
|
dependencies:
|
||||||
@ -246,7 +279,7 @@ publish-onchain:
|
|||||||
- build-darwin
|
- build-darwin
|
||||||
- build-windows
|
- build-windows
|
||||||
script:
|
script:
|
||||||
- scripts/gitlab/publish-onchain.sh
|
- ./tools/publish-onchain.sh
|
||||||
tags:
|
tags:
|
||||||
- linux-docker
|
- linux-docker
|
||||||
|
|
||||||
|
20
Cargo.lock
generated
20
Cargo.lock
generated
@ -1546,7 +1546,7 @@ dependencies = [
|
|||||||
"libusb 0.3.0 (git+https://github.com/paritytech/libusb-rs)",
|
"libusb 0.3.0 (git+https://github.com/paritytech/libusb-rs)",
|
||||||
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"protobuf 1.7.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
"protobuf 1.7.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"rustc-hex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"rustc-hex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"trezor-sys 1.0.0 (git+https://github.com/paritytech/trezor-sys)",
|
"trezor-sys 1.0.0 (git+https://github.com/paritytech/trezor-sys)",
|
||||||
@ -2457,7 +2457,7 @@ dependencies = [
|
|||||||
"futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)",
|
"futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"jni 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"jni 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"panic_hook 0.1.0",
|
"panic_hook 0.1.0",
|
||||||
"parity-ethereum 2.5.1",
|
"parity-ethereum 2.5.2",
|
||||||
"tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
"tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"tokio-current-thread 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
"tokio-current-thread 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
@ -2487,7 +2487,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "parity-ethereum"
|
name = "parity-ethereum"
|
||||||
version = "2.5.1"
|
version = "2.5.2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"ansi_term 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
"ansi_term 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
"atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
@ -2540,7 +2540,7 @@ dependencies = [
|
|||||||
"parity-rpc 1.12.0",
|
"parity-rpc 1.12.0",
|
||||||
"parity-runtime 0.1.0",
|
"parity-runtime 0.1.0",
|
||||||
"parity-updater 1.12.0",
|
"parity-updater 1.12.0",
|
||||||
"parity-version 2.5.1",
|
"parity-version 2.5.2",
|
||||||
"parity-whisper 0.1.0",
|
"parity-whisper 0.1.0",
|
||||||
"parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"pretty_assertions 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
"pretty_assertions 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
@ -2683,7 +2683,7 @@ dependencies = [
|
|||||||
"parity-crypto 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"parity-crypto 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"parity-runtime 0.1.0",
|
"parity-runtime 0.1.0",
|
||||||
"parity-updater 1.12.0",
|
"parity-updater 1.12.0",
|
||||||
"parity-version 2.5.1",
|
"parity-version 2.5.2",
|
||||||
"parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"pretty_assertions 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
"pretty_assertions 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"rand 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
"rand 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
@ -2781,7 +2781,7 @@ dependencies = [
|
|||||||
"parity-bytes 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"parity-bytes 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"parity-hash-fetch 1.12.0",
|
"parity-hash-fetch 1.12.0",
|
||||||
"parity-path 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"parity-path 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"parity-version 2.5.1",
|
"parity-version 2.5.2",
|
||||||
"parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"rand 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
"rand 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
@ -2791,7 +2791,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "parity-version"
|
name = "parity-version"
|
||||||
version = "2.5.1"
|
version = "2.5.2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"parity-bytes 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"parity-bytes 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"rlp 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"rlp 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
@ -3071,7 +3071,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "protobuf"
|
name = "protobuf"
|
||||||
version = "1.7.4"
|
version = "1.7.5"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -4076,7 +4076,7 @@ name = "trezor-sys"
|
|||||||
version = "1.0.0"
|
version = "1.0.0"
|
||||||
source = "git+https://github.com/paritytech/trezor-sys#8a401705e58c83db6c29c199d9577b78fde40709"
|
source = "git+https://github.com/paritytech/trezor-sys#8a401705e58c83db6c29c199d9577b78fde40709"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"protobuf 1.7.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
"protobuf 1.7.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -4687,7 +4687,7 @@ dependencies = [
|
|||||||
"checksum primal-estimate 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "56ea4531dde757b56906493c8604641da14607bf9cdaa80fb9c9cabd2429f8d5"
|
"checksum primal-estimate 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "56ea4531dde757b56906493c8604641da14607bf9cdaa80fb9c9cabd2429f8d5"
|
||||||
"checksum primal-sieve 0.2.9 (registry+https://github.com/rust-lang/crates.io-index)" = "da2d6ed369bb4b0273aeeb43f07c105c0117717cbae827b20719438eb2eb798c"
|
"checksum primal-sieve 0.2.9 (registry+https://github.com/rust-lang/crates.io-index)" = "da2d6ed369bb4b0273aeeb43f07c105c0117717cbae827b20719438eb2eb798c"
|
||||||
"checksum proc-macro2 0.4.20 (registry+https://github.com/rust-lang/crates.io-index)" = "3d7b7eaaa90b4a90a932a9ea6666c95a389e424eff347f0f793979289429feee"
|
"checksum proc-macro2 0.4.20 (registry+https://github.com/rust-lang/crates.io-index)" = "3d7b7eaaa90b4a90a932a9ea6666c95a389e424eff347f0f793979289429feee"
|
||||||
"checksum protobuf 1.7.4 (registry+https://github.com/rust-lang/crates.io-index)" = "52fbc45bf6709565e44ef31847eb7407b3c3c80af811ee884a04da071dcca12b"
|
"checksum protobuf 1.7.5 (registry+https://github.com/rust-lang/crates.io-index)" = "e14ccd6b79ec748412d4f2dfde1a80fa363a67def4062969f8aed3d790a30f28"
|
||||||
"checksum pulldown-cmark 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8361e81576d2e02643b04950e487ec172b687180da65c731c03cf336784e6c07"
|
"checksum pulldown-cmark 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8361e81576d2e02643b04950e487ec172b687180da65c731c03cf336784e6c07"
|
||||||
"checksum pwasm-utils 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7e9135bed7b452e20dbb395a2d519abaf0c46d60e7ecc02daeeab447d29bada1"
|
"checksum pwasm-utils 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7e9135bed7b452e20dbb395a2d519abaf0c46d60e7ecc02daeeab447d29bada1"
|
||||||
"checksum quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9274b940887ce9addde99c4eee6b5c44cc494b182b97e73dc8ffdcb3397fd3f0"
|
"checksum quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9274b940887ce9addde99c4eee6b5c44cc494b182b97e73dc8ffdcb3397fd3f0"
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
description = "Parity Ethereum client"
|
description = "Parity Ethereum client"
|
||||||
name = "parity-ethereum"
|
name = "parity-ethereum"
|
||||||
# NOTE Make sure to update util/version/Cargo.toml as well
|
# NOTE Make sure to update util/version/Cargo.toml as well
|
||||||
version = "2.5.1"
|
version = "2.5.2"
|
||||||
license = "GPL-3.0"
|
license = "GPL-3.0"
|
||||||
authors = ["Parity Technologies <admin@parity.io>"]
|
authors = ["Parity Technologies <admin@parity.io>"]
|
||||||
|
|
||||||
@ -118,10 +118,13 @@ path = "parity/lib.rs"
|
|||||||
path = "parity/main.rs"
|
path = "parity/main.rs"
|
||||||
name = "parity"
|
name = "parity"
|
||||||
|
|
||||||
[profile.dev]
|
[profile.test]
|
||||||
|
lto = false
|
||||||
|
opt-level = 3 # makes tests slower to compile, but faster to run
|
||||||
|
|
||||||
[profile.release]
|
[profile.release]
|
||||||
debug = false
|
debug = false
|
||||||
|
lto = true
|
||||||
|
|
||||||
[workspace]
|
[workspace]
|
||||||
# This should only list projects that are not
|
# This should only list projects that are not
|
||||||
|
@ -668,21 +668,6 @@ impl BlockChain {
|
|||||||
self.db.key_value().read_with_cache(db::COL_EXTRA, &self.block_details, parent).map_or(false, |d| d.children.contains(hash))
|
self.db.key_value().read_with_cache(db::COL_EXTRA, &self.block_details, parent).map_or(false, |d| d.children.contains(hash))
|
||||||
}
|
}
|
||||||
|
|
||||||
/// fetches the list of blocks from best block to n, and n's parent hash
|
|
||||||
/// where n > 0
|
|
||||||
pub fn block_headers_from_best_block(&self, n: u32) -> Option<(Vec<encoded::Header>, H256)> {
|
|
||||||
let mut blocks = Vec::with_capacity(n as usize);
|
|
||||||
let mut hash = self.best_block_hash();
|
|
||||||
|
|
||||||
for _ in 0..n {
|
|
||||||
let current_hash = self.block_header_data(&hash)?;
|
|
||||||
hash = current_hash.parent_hash();
|
|
||||||
blocks.push(current_hash);
|
|
||||||
}
|
|
||||||
|
|
||||||
Some((blocks, hash))
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Returns a tree route between `from` and `to`, which is a tuple of:
|
/// Returns a tree route between `from` and `to`, which is a tuple of:
|
||||||
///
|
///
|
||||||
/// - a vector of hashes of all blocks, ordered from `from` to `to`.
|
/// - a vector of hashes of all blocks, ordered from `from` to `to`.
|
||||||
@ -869,6 +854,14 @@ impl BlockChain {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// clears all caches for testing purposes
|
||||||
|
pub fn clear_cache(&self) {
|
||||||
|
self.block_bodies.write().clear();
|
||||||
|
self.block_details.write().clear();
|
||||||
|
self.block_hashes.write().clear();
|
||||||
|
self.block_headers.write().clear();
|
||||||
|
}
|
||||||
|
|
||||||
/// Update the best ancient block to the given hash, after checking that
|
/// Update the best ancient block to the given hash, after checking that
|
||||||
/// it's directly linked to the currently known best ancient block
|
/// it's directly linked to the currently known best ancient block
|
||||||
pub fn update_best_ancient_block(&self, hash: &H256) {
|
pub fn update_best_ancient_block(&self, hash: &H256) {
|
||||||
|
@ -8,11 +8,12 @@
|
|||||||
"difficultyBoundDivisor": "0x0800",
|
"difficultyBoundDivisor": "0x0800",
|
||||||
"durationLimit": "0x0d",
|
"durationLimit": "0x0d",
|
||||||
"blockReward": "0x4563918244F40000",
|
"blockReward": "0x4563918244F40000",
|
||||||
"homesteadTransition": 1150000,
|
"homesteadTransition": "0x118c30",
|
||||||
"ecip1010PauseTransition": 3000000,
|
"ecip1010PauseTransition": "0x2dc6c0",
|
||||||
"ecip1010ContinueTransition": 5000000,
|
"ecip1010ContinueTransition": "0x4c4b40",
|
||||||
"ecip1017EraRounds": 5000000,
|
"ecip1017EraRounds": "0x4c4b40",
|
||||||
"bombDefuseTransition": 5900000
|
"eip100bTransition": "0x7fffffffffffffff",
|
||||||
|
"bombDefuseTransition": "0x5a06e0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -26,11 +27,17 @@
|
|||||||
"chainID": "0x3d",
|
"chainID": "0x3d",
|
||||||
"forkBlock": "0x1d4c00",
|
"forkBlock": "0x1d4c00",
|
||||||
"forkCanonHash": "0x94365e3a8c0b35089c1d1195081fe7489b528a84b22199c916180db8b28ade7f",
|
"forkCanonHash": "0x94365e3a8c0b35089c1d1195081fe7489b528a84b22199c916180db8b28ade7f",
|
||||||
"eip150Transition": 2500000,
|
"eip150Transition": "0x2625a0",
|
||||||
"eip160Transition": 3000000,
|
"eip160Transition": "0x2dc6c0",
|
||||||
"eip161abcTransition": "0x7fffffffffffffff",
|
"eip161abcTransition": "0x7fffffffffffffff",
|
||||||
"eip161dTransition": "0x7fffffffffffffff",
|
"eip161dTransition": "0x7fffffffffffffff",
|
||||||
"eip155Transition": 3000000
|
"eip155Transition": "0x2dc6c0",
|
||||||
|
"maxCodeSize": "0x6000",
|
||||||
|
"maxCodeSizeTransition": "0x7fffffffffffffff",
|
||||||
|
"eip140Transition": "0x7fffffffffffffff",
|
||||||
|
"eip211Transition": "0x7fffffffffffffff",
|
||||||
|
"eip214Transition": "0x7fffffffffffffff",
|
||||||
|
"eip658Transition": "0x7fffffffffffffff"
|
||||||
},
|
},
|
||||||
"genesis": {
|
"genesis": {
|
||||||
"seal": {
|
"seal": {
|
||||||
@ -3851,10 +3858,97 @@
|
|||||||
"enode://5cd218959f8263bc3721d7789070806b0adff1a0ed3f95ec886fb469f9362c7507e3b32b256550b9a7964a23a938e8d42d45a0c34b332bfebc54b29081e83b93@35.187.57.94:30303"
|
"enode://5cd218959f8263bc3721d7789070806b0adff1a0ed3f95ec886fb469f9362c7507e3b32b256550b9a7964a23a938e8d42d45a0c34b332bfebc54b29081e83b93@35.187.57.94:30303"
|
||||||
],
|
],
|
||||||
"accounts": {
|
"accounts": {
|
||||||
"0000000000000000000000000000000000000001": { "builtin": { "name": "ecrecover", "pricing": { "linear": { "base": 3000, "word": 0 } } } },
|
"0x0000000000000000000000000000000000000001": {
|
||||||
"0000000000000000000000000000000000000002": { "builtin": { "name": "sha256", "pricing": { "linear": { "base": 60, "word": 12 } } } },
|
"builtin": {
|
||||||
"0000000000000000000000000000000000000003": { "builtin": { "name": "ripemd160", "pricing": { "linear": { "base": 600, "word": 120 } } } },
|
"name": "ecrecover",
|
||||||
"0000000000000000000000000000000000000004": { "builtin": { "name": "identity", "pricing": { "linear": { "base": 15, "word": 3 } } } },
|
"pricing": {
|
||||||
|
"linear": {
|
||||||
|
"base": 3000,
|
||||||
|
"word": 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"0x0000000000000000000000000000000000000002": {
|
||||||
|
"builtin": {
|
||||||
|
"name": "sha256",
|
||||||
|
"pricing": {
|
||||||
|
"linear": {
|
||||||
|
"base": 60,
|
||||||
|
"word": 12
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"0x0000000000000000000000000000000000000003": {
|
||||||
|
"builtin": {
|
||||||
|
"name": "ripemd160",
|
||||||
|
"pricing": {
|
||||||
|
"linear": {
|
||||||
|
"base": 600,
|
||||||
|
"word": 120
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"0x0000000000000000000000000000000000000004": {
|
||||||
|
"builtin": {
|
||||||
|
"name": "identity",
|
||||||
|
"pricing": {
|
||||||
|
"linear": {
|
||||||
|
"base": 15,
|
||||||
|
"word": 3
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"0x0000000000000000000000000000000000000005": {
|
||||||
|
"builtin": {
|
||||||
|
"name": "modexp",
|
||||||
|
"activate_at": "0x7fffffffffffffff",
|
||||||
|
"pricing": {
|
||||||
|
"modexp": {
|
||||||
|
"divisor": 20
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"0x0000000000000000000000000000000000000006": {
|
||||||
|
"builtin": {
|
||||||
|
"name": "alt_bn128_add",
|
||||||
|
"activate_at": "0x7fffffffffffffff",
|
||||||
|
"pricing": {
|
||||||
|
"linear": {
|
||||||
|
"base": 500,
|
||||||
|
"word": 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"0x0000000000000000000000000000000000000007": {
|
||||||
|
"builtin": {
|
||||||
|
"name": "alt_bn128_mul",
|
||||||
|
"activate_at": "0x7fffffffffffffff",
|
||||||
|
"pricing": {
|
||||||
|
"linear": {
|
||||||
|
"base": 40000,
|
||||||
|
"word": 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"0x0000000000000000000000000000000000000008": {
|
||||||
|
"builtin": {
|
||||||
|
"name": "alt_bn128_pairing",
|
||||||
|
"activate_at": "0x7fffffffffffffff",
|
||||||
|
"pricing": {
|
||||||
|
"alt_bn128_pairing": {
|
||||||
|
"base": 100000,
|
||||||
|
"pair": 80000
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"3282791d6fd713f1e94f4bfd565eaa78b3a0599d": {
|
"3282791d6fd713f1e94f4bfd565eaa78b3a0599d": {
|
||||||
"balance": "1337000000000000000000"
|
"balance": "1337000000000000000000"
|
||||||
},
|
},
|
||||||
|
@ -12,12 +12,18 @@
|
|||||||
"params": {
|
"params": {
|
||||||
"accountStartNonce": "0x0",
|
"accountStartNonce": "0x0",
|
||||||
"chainID": "0x6",
|
"chainID": "0x6",
|
||||||
|
"eip140Transition": "0xaef49",
|
||||||
"eip150Transition": "0x0",
|
"eip150Transition": "0x0",
|
||||||
"eip155Transition": "0x0",
|
"eip155Transition": "0x0",
|
||||||
"eip160Transition": "0x0",
|
"eip160Transition": "0x0",
|
||||||
"eip161abcTransition": "0x7fffffffffffffff",
|
"eip161abcTransition": "0xaef49",
|
||||||
"eip161dTransition": "0x7fffffffffffffff",
|
"eip161dTransition": "0xaef49",
|
||||||
|
"eip211Transition": "0xaef49",
|
||||||
|
"eip214Transition": "0xaef49",
|
||||||
|
"eip658Transition": "0xaef49",
|
||||||
"gasLimitBoundDivisor": "0x400",
|
"gasLimitBoundDivisor": "0x400",
|
||||||
|
"maxCodeSize": "0x6000",
|
||||||
|
"maxCodeSizeTransition": "0xaef49",
|
||||||
"maximumExtraDataSize": "0xffff",
|
"maximumExtraDataSize": "0xffff",
|
||||||
"minGasLimit": "0x1388",
|
"minGasLimit": "0x1388",
|
||||||
"networkID": "0x6"
|
"networkID": "0x6"
|
||||||
@ -95,16 +101,55 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"0x0000000000000000000000000000000000000005": {
|
"0x0000000000000000000000000000000000000005": {
|
||||||
"balance": "0x1"
|
"balance": "0x1",
|
||||||
|
"builtin": {
|
||||||
|
"name": "modexp",
|
||||||
|
"activate_at": "0xaef49",
|
||||||
|
"pricing": {
|
||||||
|
"modexp": {
|
||||||
|
"divisor": 20
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"0x0000000000000000000000000000000000000006": {
|
"0x0000000000000000000000000000000000000006": {
|
||||||
"balance": "0x1"
|
"balance": "0x1",
|
||||||
|
"builtin": {
|
||||||
|
"name": "alt_bn128_add",
|
||||||
|
"activate_at": "0xaef49",
|
||||||
|
"pricing": {
|
||||||
|
"linear": {
|
||||||
|
"base": 500,
|
||||||
|
"word": 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"0x0000000000000000000000000000000000000007": {
|
"0x0000000000000000000000000000000000000007": {
|
||||||
"balance": "0x1"
|
"balance": "0x1",
|
||||||
|
"builtin": {
|
||||||
|
"name": "alt_bn128_mul",
|
||||||
|
"activate_at": "0xaef49",
|
||||||
|
"pricing": {
|
||||||
|
"linear": {
|
||||||
|
"base": 40000,
|
||||||
|
"word": 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"0x0000000000000000000000000000000000000008": {
|
"0x0000000000000000000000000000000000000008": {
|
||||||
"balance": "0x1"
|
"balance": "0x1",
|
||||||
|
"builtin": {
|
||||||
|
"name": "alt_bn128_pairing",
|
||||||
|
"activate_at": "0xaef49",
|
||||||
|
"pricing": {
|
||||||
|
"alt_bn128_pairing": {
|
||||||
|
"base": 100000,
|
||||||
|
"pair": 80000
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"0x0000000000000000000000000000000000000009": {
|
"0x0000000000000000000000000000000000000009": {
|
||||||
"balance": "0x1"
|
"balance": "0x1"
|
||||||
|
@ -8,11 +8,12 @@
|
|||||||
"difficultyBoundDivisor": "0x0800",
|
"difficultyBoundDivisor": "0x0800",
|
||||||
"durationLimit": "0x0d",
|
"durationLimit": "0x0d",
|
||||||
"blockReward": "0x4563918244F40000",
|
"blockReward": "0x4563918244F40000",
|
||||||
"homesteadTransition": 494000,
|
"homesteadTransition": "0x789b0",
|
||||||
"ecip1010PauseTransition": 1915000,
|
"ecip1010PauseTransition": "0x1d3878",
|
||||||
"ecip1010ContinueTransition": 3415000,
|
"ecip1010ContinueTransition": "0x341bd8",
|
||||||
"ecip1017EraRounds": 2000000,
|
"ecip1017EraRounds": "0x1e8480",
|
||||||
"bombDefuseTransition": 2300000
|
"eip100bTransition": "0x4829ba",
|
||||||
|
"bombDefuseTransition": "0x231860"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -26,11 +27,17 @@
|
|||||||
"chainID": "0x3e",
|
"chainID": "0x3e",
|
||||||
"forkBlock": "0x1b34d8",
|
"forkBlock": "0x1b34d8",
|
||||||
"forkCanonHash": "0xf376243aeff1f256d970714c3de9fd78fa4e63cf63e32a51fe1169e375d98145",
|
"forkCanonHash": "0xf376243aeff1f256d970714c3de9fd78fa4e63cf63e32a51fe1169e375d98145",
|
||||||
"eip150Transition": 1783000,
|
"eip150Transition": "0x1b34d8",
|
||||||
"eip160Transition": 1915000,
|
"eip160Transition": "0x1d3878",
|
||||||
"eip161abcTransition": "0x7fffffffffffffff",
|
"eip161abcTransition": "0x4829ba",
|
||||||
"eip161dTransition": "0x7fffffffffffffff",
|
"eip161dTransition": "0x4829ba",
|
||||||
"eip155Transition": 1915000
|
"eip155Transition": "0x1d3878",
|
||||||
|
"maxCodeSize": "0x6000",
|
||||||
|
"maxCodeSizeTransition": "0x4829ba",
|
||||||
|
"eip140Transition": "0x4829ba",
|
||||||
|
"eip211Transition": "0x4829ba",
|
||||||
|
"eip214Transition": "0x4829ba",
|
||||||
|
"eip658Transition": "0x4829ba"
|
||||||
},
|
},
|
||||||
"genesis": {
|
"genesis": {
|
||||||
"seal": {
|
"seal": {
|
||||||
@ -68,6 +75,53 @@
|
|||||||
"0000000000000000000000000000000000000002": { "balance": "1", "nonce": "1048576", "builtin": { "name": "sha256", "pricing": { "linear": { "base": 60, "word": 12 } } } },
|
"0000000000000000000000000000000000000002": { "balance": "1", "nonce": "1048576", "builtin": { "name": "sha256", "pricing": { "linear": { "base": 60, "word": 12 } } } },
|
||||||
"0000000000000000000000000000000000000003": { "balance": "1", "nonce": "1048576", "builtin": { "name": "ripemd160", "pricing": { "linear": { "base": 600, "word": 120 } } } },
|
"0000000000000000000000000000000000000003": { "balance": "1", "nonce": "1048576", "builtin": { "name": "ripemd160", "pricing": { "linear": { "base": 600, "word": 120 } } } },
|
||||||
"0000000000000000000000000000000000000004": { "balance": "1", "nonce": "1048576", "builtin": { "name": "identity", "pricing": { "linear": { "base": 15, "word": 3 } } } },
|
"0000000000000000000000000000000000000004": { "balance": "1", "nonce": "1048576", "builtin": { "name": "identity", "pricing": { "linear": { "base": 15, "word": 3 } } } },
|
||||||
|
"0x0000000000000000000000000000000000000005": {
|
||||||
|
"builtin": {
|
||||||
|
"name": "modexp",
|
||||||
|
"activate_at": "0x4829ba",
|
||||||
|
"pricing": {
|
||||||
|
"modexp": {
|
||||||
|
"divisor": 20
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"0x0000000000000000000000000000000000000006": {
|
||||||
|
"builtin": {
|
||||||
|
"name": "alt_bn128_add",
|
||||||
|
"activate_at": "0x4829ba",
|
||||||
|
"pricing": {
|
||||||
|
"linear": {
|
||||||
|
"base": 500,
|
||||||
|
"word": 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"0x0000000000000000000000000000000000000007": {
|
||||||
|
"builtin": {
|
||||||
|
"name": "alt_bn128_mul",
|
||||||
|
"activate_at": "0x4829ba",
|
||||||
|
"pricing": {
|
||||||
|
"linear": {
|
||||||
|
"base": 40000,
|
||||||
|
"word": 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"0x0000000000000000000000000000000000000008": {
|
||||||
|
"builtin": {
|
||||||
|
"name": "alt_bn128_pairing",
|
||||||
|
"activate_at": "0x4829ba",
|
||||||
|
"pricing": {
|
||||||
|
"alt_bn128_pairing": {
|
||||||
|
"base": 100000,
|
||||||
|
"pair": 80000
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"102e61f5d8f9bc71d0ad4a084df4e65e05ce0e1c": { "balance": "1606938044258990275541962092341162602522202993782792835301376", "nonce": "1048576" }
|
"102e61f5d8f9bc71d0ad4a084df4e65e05ce0e1c": { "balance": "1606938044258990275541962092341162602522202993782792835301376", "nonce": "1048576" }
|
||||||
},
|
},
|
||||||
"hardcodedSync": {
|
"hardcodedSync": {
|
||||||
|
@ -25,7 +25,7 @@ use blockchain::{BlockReceipts, BlockChain, BlockChainDB, BlockProvider, TreeRou
|
|||||||
use bytes::Bytes;
|
use bytes::Bytes;
|
||||||
use call_contract::{CallContract, RegistryInfo};
|
use call_contract::{CallContract, RegistryInfo};
|
||||||
use ethcore_miner::pool::VerifiedTransaction;
|
use ethcore_miner::pool::VerifiedTransaction;
|
||||||
use ethereum_types::{H256, Address, U256};
|
use ethereum_types::{H256, H264, Address, U256};
|
||||||
use evm::Schedule;
|
use evm::Schedule;
|
||||||
use hash::keccak;
|
use hash::keccak;
|
||||||
use io::IoChannel;
|
use io::IoChannel;
|
||||||
@ -86,7 +86,7 @@ pub use types::blockchain_info::BlockChainInfo;
|
|||||||
pub use types::block_status::BlockStatus;
|
pub use types::block_status::BlockStatus;
|
||||||
pub use blockchain::CacheSize as BlockChainCacheSize;
|
pub use blockchain::CacheSize as BlockChainCacheSize;
|
||||||
pub use verification::QueueInfo as BlockQueueInfo;
|
pub use verification::QueueInfo as BlockQueueInfo;
|
||||||
use db::Writable;
|
use db::{Writable, Readable, keys::BlockDetails};
|
||||||
|
|
||||||
use_contract!(registry, "res/contracts/registrar.json");
|
use_contract!(registry, "res/contracts/registrar.json");
|
||||||
|
|
||||||
@ -1327,38 +1327,61 @@ impl BlockChainReset for Client {
|
|||||||
fn reset(&self, num: u32) -> Result<(), String> {
|
fn reset(&self, num: u32) -> Result<(), String> {
|
||||||
if num as u64 > self.pruning_history() {
|
if num as u64 > self.pruning_history() {
|
||||||
return Err("Attempting to reset to block with pruned state".into())
|
return Err("Attempting to reset to block with pruned state".into())
|
||||||
|
} else if num == 0 {
|
||||||
|
return Err("invalid number of blocks to reset".into())
|
||||||
}
|
}
|
||||||
|
|
||||||
let (blocks_to_delete, best_block_hash) = self.chain.read()
|
let mut blocks_to_delete = Vec::with_capacity(num as usize);
|
||||||
.block_headers_from_best_block(num)
|
let mut best_block_hash = self.chain.read().best_block_hash();
|
||||||
.ok_or("Attempted to reset past genesis block")?;
|
let mut batch = DBTransaction::with_capacity(blocks_to_delete.len());
|
||||||
|
|
||||||
let mut db_transaction = DBTransaction::with_capacity((num + 1) as usize);
|
for _ in 0..num {
|
||||||
|
let current_header = self.chain.read().block_header_data(&best_block_hash)
|
||||||
|
.expect("best_block_hash was fetched from db; block_header_data should exist in db; qed");
|
||||||
|
best_block_hash = current_header.parent_hash();
|
||||||
|
|
||||||
for hash in &blocks_to_delete {
|
let (number, hash) = (current_header.number(), current_header.hash());
|
||||||
db_transaction.delete(::db::COL_HEADERS, &hash.hash());
|
batch.delete(::db::COL_HEADERS, &hash);
|
||||||
db_transaction.delete(::db::COL_BODIES, &hash.hash());
|
batch.delete(::db::COL_BODIES, &hash);
|
||||||
db_transaction.delete(::db::COL_EXTRA, &hash.hash());
|
Writable::delete::<BlockDetails, H264>
|
||||||
|
(&mut batch, ::db::COL_EXTRA, &hash);
|
||||||
Writable::delete::<H256, BlockNumberKey>
|
Writable::delete::<H256, BlockNumberKey>
|
||||||
(&mut db_transaction, ::db::COL_EXTRA, &hash.number());
|
(&mut batch, ::db::COL_EXTRA, &number);
|
||||||
|
|
||||||
|
blocks_to_delete.push((number, hash));
|
||||||
}
|
}
|
||||||
|
|
||||||
// update the new best block hash
|
let hashes = blocks_to_delete.iter().map(|(_, hash)| hash).collect::<Vec<_>>();
|
||||||
db_transaction.put(::db::COL_EXTRA, b"best", &*best_block_hash);
|
|
||||||
|
|
||||||
self.db.read()
|
|
||||||
.key_value()
|
|
||||||
.write(db_transaction)
|
|
||||||
.map_err(|err| format!("could not complete reset operation; io error occured: {}", err))?;
|
|
||||||
|
|
||||||
let hashes = blocks_to_delete.iter().map(|b| b.hash()).collect::<Vec<_>>();
|
|
||||||
|
|
||||||
info!("Deleting block hashes {}",
|
info!("Deleting block hashes {}",
|
||||||
Colour::Red
|
Colour::Red
|
||||||
.bold()
|
.bold()
|
||||||
.paint(format!("{:#?}", hashes))
|
.paint(format!("{:#?}", hashes))
|
||||||
);
|
);
|
||||||
|
|
||||||
|
let mut best_block_details = Readable::read::<BlockDetails, H264>(
|
||||||
|
&**self.db.read().key_value(),
|
||||||
|
::db::COL_EXTRA,
|
||||||
|
&best_block_hash
|
||||||
|
).expect("block was previously imported; best_block_details should exist; qed");
|
||||||
|
|
||||||
|
let (_, last_hash) = blocks_to_delete.last()
|
||||||
|
.expect("num is > 0; blocks_to_delete can't be empty; qed");
|
||||||
|
// remove the last block as a child so that it can be re-imported
|
||||||
|
// ethcore/blockchain/src/blockchain.rs/Blockchain::is_known_child()
|
||||||
|
best_block_details.children.retain(|h| *h != *last_hash);
|
||||||
|
batch.write(
|
||||||
|
::db::COL_EXTRA,
|
||||||
|
&best_block_hash,
|
||||||
|
&best_block_details
|
||||||
|
);
|
||||||
|
// update the new best block hash
|
||||||
|
batch.put(::db::COL_EXTRA, b"best", &best_block_hash);
|
||||||
|
|
||||||
|
self.db.read()
|
||||||
|
.key_value()
|
||||||
|
.write(batch)
|
||||||
|
.map_err(|err| format!("could not delete blocks; io error occurred: {}", err))?;
|
||||||
|
|
||||||
info!("New best block hash {}", Colour::Green.bold().paint(format!("{:?}", best_block_hash)));
|
info!("New best block hash {}", Colour::Green.bold().paint(format!("{:?}", best_block_hash)));
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
|
@ -27,7 +27,7 @@ use types::filter::Filter;
|
|||||||
use types::view;
|
use types::view;
|
||||||
use types::views::BlockView;
|
use types::views::BlockView;
|
||||||
|
|
||||||
use client::{BlockChainClient, Client, ClientConfig, BlockId, ChainInfo, BlockInfo, PrepareOpenBlock, ImportSealedBlock, ImportBlock};
|
use client::{BlockChainClient, BlockChainReset, Client, ClientConfig, BlockId, ChainInfo, BlockInfo, PrepareOpenBlock, ImportSealedBlock, ImportBlock};
|
||||||
use ethereum;
|
use ethereum;
|
||||||
use executive::{Executive, TransactOptions};
|
use executive::{Executive, TransactOptions};
|
||||||
use miner::{Miner, PendingOrdering, MinerService};
|
use miner::{Miner, PendingOrdering, MinerService};
|
||||||
@ -366,3 +366,23 @@ fn transaction_proof() {
|
|||||||
assert_eq!(state.balance(&Address::default()).unwrap(), 5.into());
|
assert_eq!(state.balance(&Address::default()).unwrap(), 5.into());
|
||||||
assert_eq!(state.balance(&address).unwrap(), 95.into());
|
assert_eq!(state.balance(&address).unwrap(), 95.into());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn reset_blockchain() {
|
||||||
|
let client = get_test_client_with_blocks(get_good_dummy_block_seq(19));
|
||||||
|
// 19 + genesis block
|
||||||
|
assert!(client.block_header(BlockId::Number(20)).is_some());
|
||||||
|
assert_eq!(client.block_header(BlockId::Number(20)).unwrap().hash(), client.best_block_header().hash());
|
||||||
|
|
||||||
|
assert!(client.reset(5).is_ok());
|
||||||
|
|
||||||
|
client.chain().clear_cache();
|
||||||
|
|
||||||
|
assert!(client.block_header(BlockId::Number(20)).is_none());
|
||||||
|
assert!(client.block_header(BlockId::Number(19)).is_none());
|
||||||
|
assert!(client.block_header(BlockId::Number(18)).is_none());
|
||||||
|
assert!(client.block_header(BlockId::Number(17)).is_none());
|
||||||
|
assert!(client.block_header(BlockId::Number(16)).is_none());
|
||||||
|
|
||||||
|
assert!(client.block_header(BlockId::Number(15)).is_some());
|
||||||
|
}
|
||||||
|
@ -1,30 +1,48 @@
|
|||||||
FROM ubuntu:xenial
|
FROM ubuntu:xenial
|
||||||
LABEL MAINTAINER="Parity Technologies <devops-team@parity.io>"
|
|
||||||
|
|
||||||
# install tools and dependencies
|
# metadata
|
||||||
RUN apt update && apt install -y --no-install-recommends openssl libudev-dev file curl jq
|
ARG VCS_REF
|
||||||
|
ARG BUILD_DATE
|
||||||
|
|
||||||
|
LABEL io.parity.image.authors="devops-team@parity.io" \
|
||||||
|
io.parity.image.vendor="Parity Technologies" \
|
||||||
|
io.parity.image.title="parity/parity" \
|
||||||
|
io.parity.image.description="Parity Ethereum. The Fastest and most Advanced Ethereum Client." \
|
||||||
|
io.parity.image.source="https://github.com/paritytech/parity-ethereum/blob/${VCS_REF}/\
|
||||||
|
scripts/docker/hub/Dockerfile" \
|
||||||
|
io.parity.image.documentation="https://wiki.parity.io/Parity-Ethereum" \
|
||||||
|
io.parity.image.revision="${VCS_REF}" \
|
||||||
|
io.parity.image.created="${BUILD_DATE}"
|
||||||
|
|
||||||
# show backtraces
|
# show backtraces
|
||||||
ENV RUST_BACKTRACE 1
|
ENV RUST_BACKTRACE 1
|
||||||
|
|
||||||
# cleanup Docker image
|
# install tools and dependencies
|
||||||
RUN apt autoremove -y \
|
RUN set -eux; \
|
||||||
&& apt clean -y \
|
apt-get update; \
|
||||||
&& rm -rf /tmp/* /var/tmp/* /var/lib/apt/lists/*
|
apt-get install -y --no-install-recommends \
|
||||||
|
file curl jq; \
|
||||||
RUN groupadd -g 1000 parity \
|
# apt cleanup
|
||||||
&& useradd -m -u 1000 -g parity -s /bin/sh parity
|
apt-get autoremove -y; \
|
||||||
|
apt-get clean; \
|
||||||
|
rm -rf /tmp/* /var/tmp/* /var/lib/apt/lists/*; \
|
||||||
|
# add user
|
||||||
|
groupadd -g 1000 parity; \
|
||||||
|
useradd -m -u 1000 -g parity -s /bin/sh parity
|
||||||
|
|
||||||
WORKDIR /home/parity
|
WORKDIR /home/parity
|
||||||
|
|
||||||
# add parity-ethereum to docker image
|
# add parity-ethereum binary to docker image
|
||||||
COPY artifacts/x86_64-unknown-linux-gnu/parity /bin/parity
|
COPY artifacts/x86_64-unknown-linux-gnu/parity /bin/parity
|
||||||
|
COPY tools/check_sync.sh /check_sync.sh
|
||||||
COPY scripts/docker/hub/check_sync.sh /check_sync.sh
|
|
||||||
|
|
||||||
# switch to user parity here
|
# switch to user parity here
|
||||||
USER parity
|
USER parity
|
||||||
|
|
||||||
|
# check if executable works in this container
|
||||||
|
RUN parity --version
|
||||||
|
|
||||||
EXPOSE 5001 8080 8082 8083 8545 8546 8180 30303/tcp 30303/udp
|
EXPOSE 5001 8080 8082 8083 8545 8546 8180 30303/tcp 30303/udp
|
||||||
|
|
||||||
ENTRYPOINT ["/bin/parity"]
|
ENTRYPOINT ["/bin/parity"]
|
||||||
|
|
||||||
|
57
scripts/docker/hub/publish-docker.sh
Executable file
57
scripts/docker/hub/publish-docker.sh
Executable file
@ -0,0 +1,57 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
set -e # fail on any error
|
||||||
|
|
||||||
|
VERSION=$(cat ./tools/VERSION)
|
||||||
|
echo "Parity Ethereum version = ${VERSION}"
|
||||||
|
|
||||||
|
test "$Docker_Hub_User_Parity" -a "$Docker_Hub_Pass_Parity" \
|
||||||
|
|| ( echo "no docker credentials provided"; exit 1 )
|
||||||
|
docker login -u "$Docker_Hub_User_Parity" -p "$Docker_Hub_Pass_Parity"
|
||||||
|
echo "__________Docker info__________"
|
||||||
|
docker info
|
||||||
|
|
||||||
|
# we stopped pushing nightlies to dockerhub, will push to own registry prb.
|
||||||
|
case "${SCHEDULE_TAG:-${CI_COMMIT_REF_NAME}}" in
|
||||||
|
"$SCHEDULE_TAG")
|
||||||
|
echo "Docker TAG - 'parity/parity:${SCHEDULE_TAG}'";
|
||||||
|
docker build --no-cache \
|
||||||
|
--build-arg VCS_REF="${CI_COMMIT_SHA}" \
|
||||||
|
--build-arg BUILD_DATE="$(date -u '+%Y-%m-%dT%H:%M:%SZ')" \
|
||||||
|
--tag "parity/parity:${SCHEDULE_TAG}" \
|
||||||
|
--file tools/Dockerfile .;
|
||||||
|
docker push "parity/parity:${SCHEDULE_TAG}";;
|
||||||
|
"beta")
|
||||||
|
echo "Docker TAGs - 'parity/parity:beta', 'parity/parity:latest', \
|
||||||
|
'parity/parity:${VERSION}-${CI_COMMIT_REF_NAME}'";
|
||||||
|
docker build --no-cache \
|
||||||
|
--build-arg VCS_REF="${CI_COMMIT_SHA}" \
|
||||||
|
--build-arg BUILD_DATE="$(date -u '+%Y-%m-%dT%H:%M:%SZ')" \
|
||||||
|
--tag "parity/parity:beta" \
|
||||||
|
--tag "parity/parity:latest" \
|
||||||
|
--tag "parity/parity:${VERSION}-${CI_COMMIT_REF_NAME}" \
|
||||||
|
--file tools/Dockerfile .;
|
||||||
|
docker push "parity/parity:beta";
|
||||||
|
docker push "parity/parity:latest";
|
||||||
|
docker push "parity/parity:${VERSION}-${CI_COMMIT_REF_NAME}";;
|
||||||
|
"stable")
|
||||||
|
echo "Docker TAGs - 'parity/parity:${VERSION}-${CI_COMMIT_REF_NAME}', 'parity/parity:stable'";
|
||||||
|
docker build --no-cache \
|
||||||
|
--build-arg VCS_REF="${CI_COMMIT_SHA}" \
|
||||||
|
--build-arg BUILD_DATE="$(date -u '+%Y-%m-%dT%H:%M:%SZ')" \
|
||||||
|
--tag "parity/parity:${VERSION}-${CI_COMMIT_REF_NAME}" \
|
||||||
|
--tag "parity/parity:stable" \
|
||||||
|
--file tools/Dockerfile .;
|
||||||
|
docker push "parity/parity:${VERSION}-${CI_COMMIT_REF_NAME}";
|
||||||
|
docker push "parity/parity:stable";;
|
||||||
|
*)
|
||||||
|
echo "Docker TAG - 'parity/parity:${VERSION}-${CI_COMMIT_REF_NAME}'"
|
||||||
|
docker build --no-cache \
|
||||||
|
--build-arg VCS_REF="${CI_COMMIT_SHA}" \
|
||||||
|
--build-arg BUILD_DATE="$(date -u '+%Y-%m-%dT%H:%M:%SZ')" \
|
||||||
|
--tag "parity/parity:${VERSION}-${CI_COMMIT_REF_NAME}" \
|
||||||
|
--file tools/Dockerfile .;
|
||||||
|
docker push "parity/parity:${VERSION}-${CI_COMMIT_REF_NAME}";;
|
||||||
|
esac
|
||||||
|
|
||||||
|
docker logout
|
@ -1,22 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
##ARGUMENTS: 1. Docker target
|
|
||||||
set -e # fail on any error
|
|
||||||
set -u # treat unset variables as error
|
|
||||||
|
|
||||||
if [ "$CI_COMMIT_REF_NAME" == "master" ];
|
|
||||||
then export DOCKER_BUILD_TAG="${SCHEDULE_TAG:-latest}";
|
|
||||||
else export DOCKER_BUILD_TAG=$CI_COMMIT_REF_NAME;
|
|
||||||
fi
|
|
||||||
docker login -u $Docker_Hub_User_Parity -p $Docker_Hub_Pass_Parity
|
|
||||||
|
|
||||||
echo "__________Docker TAG__________"
|
|
||||||
echo $DOCKER_BUILD_TAG
|
|
||||||
|
|
||||||
echo "__________Docker target__________"
|
|
||||||
export DOCKER_TARGET=$1
|
|
||||||
echo $DOCKER_TARGET
|
|
||||||
|
|
||||||
echo "__________Docker build and push__________"
|
|
||||||
docker build --build-arg TARGET=$DOCKER_TARGET --no-cache=true --tag parity/$DOCKER_TARGET:$DOCKER_BUILD_TAG -f scripts/docker/hub/Dockerfile .
|
|
||||||
docker push parity/$DOCKER_TARGET:$DOCKER_BUILD_TAG
|
|
||||||
docker logout
|
|
@ -33,8 +33,8 @@ update_wiki_docs() {
|
|||||||
|
|
||||||
setup_git() {
|
setup_git() {
|
||||||
echo "__________Set github__________"
|
echo "__________Set github__________"
|
||||||
git config --global user.email "devops@parity.com"
|
git config --global user.email "devops-team@parity.io"
|
||||||
git config --global user.name "Devops Parity"
|
git config --global user.name "Devops Team Parity"
|
||||||
}
|
}
|
||||||
|
|
||||||
set_remote_wiki() {
|
set_remote_wiki() {
|
||||||
|
@ -7,10 +7,7 @@ echo "__________Register Release__________"
|
|||||||
DATA="secret=$RELEASES_SECRET"
|
DATA="secret=$RELEASES_SECRET"
|
||||||
|
|
||||||
echo "Pushing release to Mainnet"
|
echo "Pushing release to Mainnet"
|
||||||
./scripts/gitlab/safe-curl.sh $DATA "http://update.parity.io:1337/push-release/${SCHEDULE_TAG:-${CI_COMMIT_REF_NAME}}/$CI_COMMIT_SHA"
|
./tools/safe-curl.sh $DATA "http://update.parity.io:1337/push-release/${SCHEDULE_TAG:-${CI_COMMIT_REF_NAME}}/$CI_COMMIT_SHA"
|
||||||
|
|
||||||
echo "Pushing release to Kovan"
|
|
||||||
./scripts/gitlab/safe-curl.sh $DATA "http://update.parity.io:1338/push-release/${SCHEDULE_TAG:-${CI_COMMIT_REF_NAME}}/$CI_COMMIT_SHA"
|
|
||||||
|
|
||||||
cd artifacts
|
cd artifacts
|
||||||
ls -l | sort -k9
|
ls -l | sort -k9
|
||||||
@ -29,9 +26,7 @@ do
|
|||||||
case $DIR in
|
case $DIR in
|
||||||
x86_64* )
|
x86_64* )
|
||||||
DATA="commit=$CI_COMMIT_SHA&sha3=$sha3&filename=parity$WIN&secret=$RELEASES_SECRET"
|
DATA="commit=$CI_COMMIT_SHA&sha3=$sha3&filename=parity$WIN&secret=$RELEASES_SECRET"
|
||||||
../../scripts/gitlab/safe-curl.sh $DATA "http://update.parity.io:1337/push-build/${SCHEDULE_TAG:-${CI_COMMIT_REF_NAME}}/$DIR"
|
../../tools/safe-curl.sh $DATA "http://update.parity.io:1337/push-build/${SCHEDULE_TAG:-${CI_COMMIT_REF_NAME}}/$DIR"
|
||||||
# Kovan
|
|
||||||
../../scripts/gitlab/safe-curl.sh $DATA "http://update.parity.io:1338/push-build/${SCHEDULE_TAG:-${CI_COMMIT_REF_NAME}}/$DIR"
|
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
cd ..
|
cd ..
|
||||||
|
@ -3,15 +3,11 @@
|
|||||||
set -e # fail on any error
|
set -e # fail on any error
|
||||||
set -u # treat unset variables as error
|
set -u # treat unset variables as error
|
||||||
|
|
||||||
# some necromancy:
|
|
||||||
# gsub(/"/, "", $2) deletes "qoutes"
|
|
||||||
# gsub(/ /, "", $2) deletes whitespaces
|
|
||||||
TRACK=`awk -F '=' '/^track/ {gsub(/"/, "", $2); gsub(/ /, "", $2); print $2}' ./util/version/Cargo.toml`
|
|
||||||
echo Track is: $TRACK
|
|
||||||
# prepare variables
|
# prepare variables
|
||||||
VERSION=v"$(sed -r -n '1,/^version/s/^version = "([^"]+)".*$/\1/p' Cargo.toml)"
|
TRACK=$(cat ./tools/TRACK)
|
||||||
|
echo "Track is: ${TRACK}"
|
||||||
|
VERSION=$(cat ./tools/VERSION)
|
||||||
SNAP_PACKAGE="parity_"$VERSION"_"$BUILD_ARCH".snap"
|
SNAP_PACKAGE="parity_"$VERSION"_"$BUILD_ARCH".snap"
|
||||||
CARGO_TARGET="$(ls artifacts)"
|
|
||||||
# Choose snap release channel based on parity ethereum version track
|
# Choose snap release channel based on parity ethereum version track
|
||||||
case ${TRACK} in
|
case ${TRACK} in
|
||||||
nightly) export GRADE="devel" CHANNEL="edge";;
|
nightly) export GRADE="devel" CHANNEL="edge";;
|
||||||
@ -20,12 +16,8 @@ case ${TRACK} in
|
|||||||
*) echo "No release" && exit 0;;
|
*) echo "No release" && exit 0;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
# Release untagged versions from branches to the candidate snap channel
|
|
||||||
case ${CI_COMMIT_REF_NAME} in
|
|
||||||
beta|stable) export GRADE="stable" CHANNEL="candidate";;
|
|
||||||
esac
|
|
||||||
echo "__________Create snap package__________"
|
echo "__________Create snap package__________"
|
||||||
echo "Release channel :" $GRADE " Branch/tag: " $CI_COMMIT_REF_NAME
|
echo "Release channel :" $GRADE " Branch/tag: " $CI_COMMIT_REF_NAME "Track: " ${TRACK}
|
||||||
echo $VERSION:$GRADE:$BUILD_ARCH:$CARGO_TARGET
|
echo $VERSION:$GRADE:$BUILD_ARCH:$CARGO_TARGET
|
||||||
|
|
||||||
sed -e 's/$VERSION/'"$VERSION"'/g' \
|
sed -e 's/$VERSION/'"$VERSION"'/g' \
|
||||||
|
@ -6,7 +6,7 @@ set -e # fail on any error
|
|||||||
set -u # treat unset variables as error
|
set -u # treat unset variables as error
|
||||||
|
|
||||||
FEATURES="json-tests,ci-skip-tests"
|
FEATURES="json-tests,ci-skip-tests"
|
||||||
OPTIONS="--release"
|
OPTIONS=""
|
||||||
#use nproc `linux only
|
#use nproc `linux only
|
||||||
THREADS=$(nproc)
|
THREADS=$(nproc)
|
||||||
|
|
||||||
@ -14,4 +14,5 @@ rustup default $1
|
|||||||
rustup show
|
rustup show
|
||||||
|
|
||||||
echo "________Running Parity Full Test Suite________"
|
echo "________Running Parity Full Test Suite________"
|
||||||
time cargo test $OPTIONS --features "$FEATURES" --locked --all --target $CARGO_TARGET --verbose --color=always -- --test-threads $THREADS
|
# Why are we using RUSTFLAGS? See https://github.com/paritytech/parity-ethereum/pull/10719
|
||||||
|
CARGO_INCREMENTAL=0 RUSTFLAGS="-C opt-level=3 -C overflow-checks=on -C debuginfo=2" time cargo test $OPTIONS --features "$FEATURES" --locked --all --target $CARGO_TARGET --verbose --color=never -- --test-threads $THREADS
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "parity-version"
|
name = "parity-version"
|
||||||
# NOTE: this value is used for Parity Ethereum version string (via env CARGO_PKG_VERSION)
|
# NOTE: this value is used for Parity Ethereum version string (via env CARGO_PKG_VERSION)
|
||||||
version = "2.5.1"
|
version = "2.5.2"
|
||||||
authors = ["Parity Technologies <admin@parity.io>"]
|
authors = ["Parity Technologies <admin@parity.io>"]
|
||||||
build = "build.rs"
|
build = "build.rs"
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user