From d994d7a10cdee9455431d1f611196bee82a61b38 Mon Sep 17 00:00:00 2001 From: Vurich Date: Tue, 18 Jul 2017 14:14:42 +0200 Subject: [PATCH 01/19] Add benchmarks --- ethash/Cargo.toml | 3 +++ ethash/src/lib.rs | 27 +++++++++++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/ethash/Cargo.toml b/ethash/Cargo.toml index 0defcf3ae..417dc8426 100644 --- a/ethash/Cargo.toml +++ b/ethash/Cargo.toml @@ -10,3 +10,6 @@ log = "0.3" sha3 = { path = "../util/sha3" } primal = "0.2.3" parking_lot = "0.4" + +[features] +benches = [] \ No newline at end of file diff --git a/ethash/src/lib.rs b/ethash/src/lib.rs index 956da5b87..4791f481a 100644 --- a/ethash/src/lib.rs +++ b/ethash/src/lib.rs @@ -1,3 +1,5 @@ +#![cfg_attr(feature = "benches", feature(test))] + // Copyright 2015-2017 Parity Technologies (UK) Ltd. // This file is part of Parity. @@ -125,3 +127,28 @@ fn test_lru() { assert_eq!(ethash.cache.lock().recent_epoch.unwrap(), 2); assert_eq!(ethash.cache.lock().prev_epoch.unwrap(), 0); } + +#[cfg(feature = "benches")] +mod benchmarks { + extern crate test; + + use compute::{Light, light_compute, SeedHashCompute}; + use self::test::Bencher; + + #[bench] + fn bench_light_compute(b: &mut Bencher) { + let hash = [0xf5, 0x7e, 0x6f, 0x3a, 0xcf, 0xc0, 0xdd, 0x4b, 0x5b, 0xf2, 0xbe, 0xe4, 0x0a, 0xb3, 0x35, 0x8a, 0xa6, 0x87, 0x73, 0xa8, 0xd0, 0x9f, 0x5e, 0x59, 0x5e, 0xab, 0x55, 0x94, 0x05, 0x52, 0x7d, 0x72]; + let nonce = 0xd7b3ac70a301a249; + let light = Light::new(486382); + + b.iter(|| light_compute(&light, &hash, nonce)); + } + + #[bench] + fn bench_seedhash(b: &mut Bencher) { + let seed_compute = SeedHashCompute::new(); + let hash = [241, 175, 44, 134, 39, 121, 245, 239, 228, 236, 43, 160, 195, 152, 46, 7, 199, 5, 253, 147, 241, 206, 98, 43, 3, 104, 17, 40, 192, 79, 106, 162]; + + b.iter(|| seed_compute.get_seedhash(486382)); + } +} From 410ded5d45daca202f0243de788cf2c02cc34868 Mon Sep 17 00:00:00 2001 From: Vurich Date: Tue, 18 Jul 2017 14:17:01 +0200 Subject: [PATCH 02/19] Remove dead code from benchmarks --- ethash/src/lib.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/ethash/src/lib.rs b/ethash/src/lib.rs index 4791f481a..e154ac2f0 100644 --- a/ethash/src/lib.rs +++ b/ethash/src/lib.rs @@ -147,7 +147,6 @@ mod benchmarks { #[bench] fn bench_seedhash(b: &mut Bencher) { let seed_compute = SeedHashCompute::new(); - let hash = [241, 175, 44, 134, 39, 121, 245, 239, 228, 236, 43, 160, 195, 152, 46, 7, 199, 5, 253, 147, 241, 206, 98, 43, 3, 104, 17, 40, 192, 79, 106, 162]; b.iter(|| seed_compute.get_seedhash(486382)); } From d51958dbf5a66a432722e15addca0dc37c957681 Mon Sep 17 00:00:00 2001 From: Vurich Date: Tue, 18 Jul 2017 15:38:10 +0200 Subject: [PATCH 03/19] Speed up light_compute by ~9% --- Cargo.lock | 7 +++++++ ethash/Cargo.toml | 1 + ethash/src/compute.rs | 39 +++++++++++++++++++++++++++++++++------ ethash/src/lib.rs | 2 ++ 4 files changed, 43 insertions(+), 6 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 63597b890..3e88b40cb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -254,6 +254,11 @@ name = "crossbeam" version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "crunchy" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "crypt32-sys" version = "0.2.0" @@ -360,6 +365,7 @@ dependencies = [ name = "ethash" version = "1.7.0" dependencies = [ + "crunchy 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "primal 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2943,6 +2949,7 @@ dependencies = [ "checksum core-foundation 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "20a6d0448d3a99d977ae4a2aa5a98d886a923e863e81ad9ff814645b6feb3bbd" "checksum core-foundation-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "05eed248dc504a5391c63794fe4fb64f46f071280afaa1b73308f3c0ce4574c5" "checksum crossbeam 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)" = "0c5ea215664ca264da8a9d9c3be80d2eaf30923c259d03e870388eb927508f97" +"checksum crunchy 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b56bdac907d4b64254aed43964b11dd334bc46e0826a0e3add75caddfaf90175" "checksum crypt32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e34988f7e069e0b2f3bfc064295161e489b2d4e04a2e4248fb94360cdf00b4ec" "checksum ctrlc 1.1.1 (git+https://github.com/paritytech/rust-ctrlc.git)" = "" "checksum daemonize 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "271ec51b7e0bee92f0d04601422c73eb76ececf197026711c97ad25038a010cf" diff --git a/ethash/Cargo.toml b/ethash/Cargo.toml index 417dc8426..5f938be3d 100644 --- a/ethash/Cargo.toml +++ b/ethash/Cargo.toml @@ -10,6 +10,7 @@ log = "0.3" sha3 = { path = "../util/sha3" } primal = "0.2.3" parking_lot = "0.4" +crunchy = "0.1.0" [features] benches = [] \ No newline at end of file diff --git a/ethash/src/compute.rs b/ethash/src/compute.rs index 992578041..67b1ea678 100644 --- a/ethash/src/compute.rs +++ b/ethash/src/compute.rs @@ -287,12 +287,39 @@ fn hash_compute(light: &Light, full_size: usize, header_hash: &H256, nonce: u64) let num_full_pages = (full_size / page_size) as u32; let cache: &[Node] = &light.cache; // deref once for better performance - for i in 0..(ETHASH_ACCESSES as u32) { - let index = fnv_hash(f_mix.get_unchecked(0).as_words().get_unchecked(0) ^ i, *mix.get_unchecked(0).as_words().get_unchecked((i as usize) % MIX_WORDS)) % num_full_pages; - for n in 0..MIX_NODES { - let tmp_node = calculate_dag_item(index * MIX_NODES as u32 + n as u32, cache); - for w in 0..NODE_WORDS { - *mix.get_unchecked_mut(n).as_words_mut().get_unchecked_mut(w) = fnv_hash(*mix.get_unchecked(n).as_words().get_unchecked(w), *tmp_node.as_words().get_unchecked(w)); + debug_assert_eq!(ETHASH_ACCESSES, 64); + debug_assert_eq!(MIX_NODES, 2); + debug_assert_eq!(NODE_WORDS, 16); + + unroll! { + // ETHASH_ACCESSES + for i_usize in 0..64 { + let i = i_usize as u32; + + let index = fnv_hash( + f_mix.get_unchecked(0).as_words().get_unchecked(0) ^ i, + *mix.get_unchecked(0).as_words().get_unchecked(i_usize % MIX_WORDS) + ) % num_full_pages; + + unroll! { + // MIX_NODES + for n in 0..2 { + let tmp_node = calculate_dag_item( + index * MIX_NODES as u32 + n as u32, + cache, + ); + + unroll! { + // NODE_WORDS + for w in 0..16 { + *mix.get_unchecked_mut(n).as_words_mut().get_unchecked_mut(w) = + fnv_hash( + *mix.get_unchecked(n).as_words().get_unchecked(w), + *tmp_node.as_words().get_unchecked(w), + ); + } + } + } } } } diff --git a/ethash/src/lib.rs b/ethash/src/lib.rs index e154ac2f0..efe1950e3 100644 --- a/ethash/src/lib.rs +++ b/ethash/src/lib.rs @@ -22,6 +22,8 @@ extern crate primal; extern crate sha3; extern crate parking_lot; +#[macro_use] +extern crate crunchy; #[macro_use] extern crate log; mod compute; From 2cc1c92901e9d54d4cd83181ecf22c687c1326b1 Mon Sep 17 00:00:00 2001 From: Vurich Date: Wed, 19 Jul 2017 12:07:34 +0200 Subject: [PATCH 04/19] Unroll one more loop I also tried unrolling the 256-iteration loop further below, but it actually caused a slowdown (my guess is either branch prediction stopped kicking in or the instruction cache was being maculated). --- Cargo.lock | 6 +++--- ethash/src/compute.rs | 25 ++++++++++++++++--------- 2 files changed, 19 insertions(+), 12 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 3e88b40cb..79217f7e2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -256,7 +256,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "crunchy" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -365,7 +365,7 @@ dependencies = [ name = "ethash" version = "1.7.0" dependencies = [ - "crunchy 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "crunchy 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "primal 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2949,7 +2949,7 @@ dependencies = [ "checksum core-foundation 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "20a6d0448d3a99d977ae4a2aa5a98d886a923e863e81ad9ff814645b6feb3bbd" "checksum core-foundation-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "05eed248dc504a5391c63794fe4fb64f46f071280afaa1b73308f3c0ce4574c5" "checksum crossbeam 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)" = "0c5ea215664ca264da8a9d9c3be80d2eaf30923c259d03e870388eb927508f97" -"checksum crunchy 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b56bdac907d4b64254aed43964b11dd334bc46e0826a0e3add75caddfaf90175" +"checksum crunchy 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "803315676d3fc09db67636977586262e7d1a6c5bdb291810efd5ceb48a0d5d58" "checksum crypt32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e34988f7e069e0b2f3bfc064295161e489b2d4e04a2e4248fb94360cdf00b4ec" "checksum ctrlc 1.1.1 (git+https://github.com/paritytech/rust-ctrlc.git)" = "" "checksum daemonize 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "271ec51b7e0bee92f0d04601422c73eb76ececf197026711c97ad25038a010cf" diff --git a/ethash/src/compute.rs b/ethash/src/compute.rs index 67b1ea678..21dd0a7c7 100644 --- a/ethash/src/compute.rs +++ b/ethash/src/compute.rs @@ -298,7 +298,7 @@ fn hash_compute(light: &Light, full_size: usize, header_hash: &H256, nonce: u64) let index = fnv_hash( f_mix.get_unchecked(0).as_words().get_unchecked(0) ^ i, - *mix.get_unchecked(0).as_words().get_unchecked(i_usize % MIX_WORDS) + *mix.get_unchecked(0).as_words().get_unchecked(i as usize % MIX_WORDS) ) % num_full_pages; unroll! { @@ -324,14 +324,18 @@ fn hash_compute(light: &Light, full_size: usize, header_hash: &H256, nonce: u64) } } + debug_assert_eq!(MIX_WORDS / 4, 8); + // compress mix - for i in 0..(MIX_WORDS / 4) { - let w = i * 4; - let mut reduction = *mix.get_unchecked(0).as_words().get_unchecked(w + 0); - reduction = reduction.wrapping_mul(FNV_PRIME) ^ *mix.get_unchecked(0).as_words().get_unchecked(w + 1); - reduction = reduction.wrapping_mul(FNV_PRIME) ^ *mix.get_unchecked(0).as_words().get_unchecked(w + 2); - reduction = reduction.wrapping_mul(FNV_PRIME) ^ *mix.get_unchecked(0).as_words().get_unchecked(w + 3); - *mix.get_unchecked_mut(0).as_words_mut().get_unchecked_mut(i) = reduction; + unroll! { + for i in 0..8 { + let w = i * 4; + let mut reduction = *mix.get_unchecked(0).as_words().get_unchecked(w + 0); + reduction = reduction.wrapping_mul(FNV_PRIME) ^ *mix.get_unchecked(0).as_words().get_unchecked(w + 1); + reduction = reduction.wrapping_mul(FNV_PRIME) ^ *mix.get_unchecked(0).as_words().get_unchecked(w + 2); + reduction = reduction.wrapping_mul(FNV_PRIME) ^ *mix.get_unchecked(0).as_words().get_unchecked(w + 3); + *mix.get_unchecked_mut(0).as_words_mut().get_unchecked_mut(i) = reduction; + } } let mut mix_hash = [0u8; 32]; @@ -356,13 +360,15 @@ fn calculate_dag_item(node_index: u32, cache: &[Node]) -> Node { *ret.as_words_mut().get_unchecked_mut(0) ^= node_index; sha3::sha3_512(ret.bytes.as_mut_ptr(), ret.bytes.len(), ret.bytes.as_ptr(), ret.bytes.len()); - for i in 0..ETHASH_DATASET_PARENTS { + for i_usize in 0..ETHASH_DATASET_PARENTS { + let i = i_usize as u32; let parent_index = fnv_hash(node_index ^ i, *ret.as_words().get_unchecked(i as usize % NODE_WORDS)) % num_parent_nodes as u32; let parent = cache.get_unchecked(parent_index as usize); for w in 0..NODE_WORDS { *ret.as_words_mut().get_unchecked_mut(w) = fnv_hash(*ret.as_words().get_unchecked(w), *parent.as_words().get_unchecked(w)); } } + sha3::sha3_512(ret.bytes.as_mut_ptr(), ret.bytes.len(), ret.bytes.as_ptr(), ret.bytes.len()); ret } @@ -386,6 +392,7 @@ fn light_new(block_number: u64) -> Light { sha3::sha3_512(nodes.get_unchecked_mut(i).bytes.as_mut_ptr(), NODE_BYTES, nodes.get_unchecked(i - 1).bytes.as_ptr(), NODE_BYTES); } + // This _should_ get unrolled by the compiler, since it's not using the loop variable. for _ in 0..ETHASH_CACHE_ROUNDS { for i in 0..num_nodes { let idx = *nodes.get_unchecked_mut(i).as_words().get_unchecked(0) as usize % num_nodes; From 7d35f994d2dc689c8db36cfb81e3c65f8cf01635 Mon Sep 17 00:00:00 2001 From: Vurich Date: Wed, 19 Jul 2017 12:09:45 +0200 Subject: [PATCH 05/19] Style ungrumble --- ethash/src/lib.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ethash/src/lib.rs b/ethash/src/lib.rs index efe1950e3..d8e4d39b4 100644 --- a/ethash/src/lib.rs +++ b/ethash/src/lib.rs @@ -1,5 +1,3 @@ -#![cfg_attr(feature = "benches", feature(test))] - // Copyright 2015-2017 Parity Technologies (UK) Ltd. // This file is part of Parity. @@ -16,6 +14,8 @@ // You should have received a copy of the GNU General Public License // along with Parity. If not, see . +#![cfg_attr(feature = "benches", feature(test))] + //! Ethash implementation //! See https://github.com/ethereum/wiki/wiki/Ethash extern crate primal; From ad1835e87c6d3e67fd4997743333c1c7973e89a4 Mon Sep 17 00:00:00 2001 From: Vurich Date: Wed, 19 Jul 2017 16:21:55 +0200 Subject: [PATCH 06/19] Unroll 1 more loop --- ethash/src/compute.rs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/ethash/src/compute.rs b/ethash/src/compute.rs index 21dd0a7c7..0db5200dc 100644 --- a/ethash/src/compute.rs +++ b/ethash/src/compute.rs @@ -397,8 +397,12 @@ fn light_new(block_number: u64) -> Light { for i in 0..num_nodes { let idx = *nodes.get_unchecked_mut(i).as_words().get_unchecked(0) as usize % num_nodes; let mut data = nodes.get_unchecked((num_nodes - 1 + i) % num_nodes).clone(); - for w in 0..NODE_WORDS { - *data.as_words_mut().get_unchecked_mut(w) ^= *nodes.get_unchecked(idx).as_words().get_unchecked(w); + + debug_assert_eq!(NODE_WORDS, 16); + unroll! { + for w in 0..16 { + *data.as_words_mut().get_unchecked_mut(w) ^= *nodes.get_unchecked(idx).as_words().get_unchecked(w); + } } sha3_512(&data.bytes, &mut nodes.get_unchecked_mut(i).bytes); } From 7208b9b525c2a1f4f1687081b3cd821f7ee37fa5 Mon Sep 17 00:00:00 2001 From: Vurich Date: Wed, 19 Jul 2017 18:14:10 +0200 Subject: [PATCH 07/19] Small fixes --- Cargo.lock | 6 +++--- ethash/src/compute.rs | 19 ++++++++++++++----- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 79217f7e2..5883b9484 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -256,7 +256,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "crunchy" -version = "0.1.1" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -365,7 +365,7 @@ dependencies = [ name = "ethash" version = "1.7.0" dependencies = [ - "crunchy 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "crunchy 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "primal 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2949,7 +2949,7 @@ dependencies = [ "checksum core-foundation 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "20a6d0448d3a99d977ae4a2aa5a98d886a923e863e81ad9ff814645b6feb3bbd" "checksum core-foundation-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "05eed248dc504a5391c63794fe4fb64f46f071280afaa1b73308f3c0ce4574c5" "checksum crossbeam 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)" = "0c5ea215664ca264da8a9d9c3be80d2eaf30923c259d03e870388eb927508f97" -"checksum crunchy 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "803315676d3fc09db67636977586262e7d1a6c5bdb291810efd5ceb48a0d5d58" +"checksum crunchy 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "e6aa9cb5f2d7bffc4eecfaf924fe450549dc4f0c3a6502298dc24f968b1eabbe" "checksum crypt32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e34988f7e069e0b2f3bfc064295161e489b2d4e04a2e4248fb94360cdf00b4ec" "checksum ctrlc 1.1.1 (git+https://github.com/paritytech/rust-ctrlc.git)" = "" "checksum daemonize 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "271ec51b7e0bee92f0d04601422c73eb76ececf197026711c97ad25038a010cf" diff --git a/ethash/src/compute.rs b/ethash/src/compute.rs index 0db5200dc..2fcaeb58f 100644 --- a/ethash/src/compute.rs +++ b/ethash/src/compute.rs @@ -360,12 +360,19 @@ fn calculate_dag_item(node_index: u32, cache: &[Node]) -> Node { *ret.as_words_mut().get_unchecked_mut(0) ^= node_index; sha3::sha3_512(ret.bytes.as_mut_ptr(), ret.bytes.len(), ret.bytes.as_ptr(), ret.bytes.len()); - for i_usize in 0..ETHASH_DATASET_PARENTS { - let i = i_usize as u32; + debug_assert_eq!(NODE_WORDS, 16); + for i in 0..ETHASH_DATASET_PARENTS as u32 { let parent_index = fnv_hash(node_index ^ i, *ret.as_words().get_unchecked(i as usize % NODE_WORDS)) % num_parent_nodes as u32; let parent = cache.get_unchecked(parent_index as usize); - for w in 0..NODE_WORDS { - *ret.as_words_mut().get_unchecked_mut(w) = fnv_hash(*ret.as_words().get_unchecked(w), *parent.as_words().get_unchecked(w)); + + unroll! { + for w in 0..16 { + *ret.as_words_mut().get_unchecked_mut(w) = + fnv_hash( + *ret.as_words().get_unchecked(w), + *parent.as_words().get_unchecked(w) + ); + } } } @@ -392,18 +399,20 @@ fn light_new(block_number: u64) -> Light { sha3::sha3_512(nodes.get_unchecked_mut(i).bytes.as_mut_ptr(), NODE_BYTES, nodes.get_unchecked(i - 1).bytes.as_ptr(), NODE_BYTES); } + debug_assert_eq!(NODE_WORDS, 16); + // This _should_ get unrolled by the compiler, since it's not using the loop variable. for _ in 0..ETHASH_CACHE_ROUNDS { for i in 0..num_nodes { let idx = *nodes.get_unchecked_mut(i).as_words().get_unchecked(0) as usize % num_nodes; let mut data = nodes.get_unchecked((num_nodes - 1 + i) % num_nodes).clone(); - debug_assert_eq!(NODE_WORDS, 16); unroll! { for w in 0..16 { *data.as_words_mut().get_unchecked_mut(w) ^= *nodes.get_unchecked(idx).as_words().get_unchecked(w); } } + sha3_512(&data.bytes, &mut nodes.get_unchecked_mut(i).bytes); } } From 99f4bc76d722a1dc98b5f5d88be914107876b9f4 Mon Sep 17 00:00:00 2001 From: Arkadiy Paronyan Date: Fri, 21 Jul 2017 12:14:47 +0200 Subject: [PATCH 08/19] Fix for building with --no-default-features (#6110) --- parity/dapps.rs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/parity/dapps.rs b/parity/dapps.rs index 4460e05bc..1ddffce1f 100644 --- a/parity/dapps.rs +++ b/parity/dapps.rs @@ -188,7 +188,10 @@ mod server { use parity_rpc::{hyper, RequestMiddleware, RequestMiddlewareAction}; use rpc_apis; - pub type SyncStatus = Fn() -> bool; + pub trait SyncStatus { + fn is_major_importing(&self) -> bool; + fn peers(&self) -> (usize, usize); + } pub struct Middleware; impl RequestMiddleware for Middleware { From 2d0d7150cc3a621b202e3fb60b39ca360e006f68 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Fri, 21 Jul 2017 17:24:53 +0200 Subject: [PATCH 09/19] remove chunk to restore from pending set only upon successful import (#6112) --- ethcore/src/snapshot/service.rs | 57 +++++++++++++++++++++++++++++++-- 1 file changed, 55 insertions(+), 2 deletions(-) diff --git a/ethcore/src/snapshot/service.rs b/ethcore/src/snapshot/service.rs index 25fa28b5d..47bbb5997 100644 --- a/ethcore/src/snapshot/service.rs +++ b/ethcore/src/snapshot/service.rs @@ -46,6 +46,9 @@ struct Guard(bool, PathBuf); impl Guard { fn new(path: PathBuf) -> Self { Guard(true, path) } + #[cfg(test)] + fn benign() -> Self { Guard(false, PathBuf::default()) } + fn disarm(mut self) { self.0 = false } } @@ -123,7 +126,7 @@ impl Restoration { // feeds a state chunk, aborts early if `flag` becomes false. fn feed_state(&mut self, hash: H256, chunk: &[u8], flag: &AtomicBool) -> Result<(), Error> { - if self.state_chunks_left.remove(&hash) { + if self.state_chunks_left.contains(&hash) { let len = snappy::decompress_into(chunk, &mut self.snappy_buffer)?; self.state.feed(&self.snappy_buffer[..len], flag)?; @@ -131,6 +134,8 @@ impl Restoration { if let Some(ref mut writer) = self.writer.as_mut() { writer.write_state_chunk(hash, chunk)?; } + + self.state_chunks_left.remove(&hash); } Ok(()) @@ -138,13 +143,15 @@ impl Restoration { // feeds a block chunk fn feed_blocks(&mut self, hash: H256, chunk: &[u8], engine: &Engine, flag: &AtomicBool) -> Result<(), Error> { - if self.block_chunks_left.remove(&hash) { + if self.block_chunks_left.contains(&hash) { let len = snappy::decompress_into(chunk, &mut self.snappy_buffer)?; self.secondary.feed(&self.snappy_buffer[..len], engine, flag)?; if let Some(ref mut writer) = self.writer.as_mut() { writer.write_block_chunk(hash, chunk)?; } + + self.block_chunks_left.remove(&hash); } Ok(()) @@ -668,4 +675,50 @@ mod tests { service.restore_state_chunk(Default::default(), vec![]); service.restore_block_chunk(Default::default(), vec![]); } + + #[test] + fn cannot_finish_with_invalid_chunks() { + use util::H256; + use util::kvdb::DatabaseConfig; + + let spec = get_test_spec(); + let dir = RandomTempPath::new(); + + let state_hashes: Vec<_> = (0..5).map(|_| H256::random()).collect(); + let block_hashes: Vec<_> = (0..5).map(|_| H256::random()).collect(); + let db_config = DatabaseConfig::with_columns(::db::NUM_COLUMNS); + let gb = spec.genesis_block(); + let flag = ::std::sync::atomic::AtomicBool::new(true); + + let params = RestorationParams { + manifest: ManifestData { + version: 2, + state_hashes: state_hashes.clone(), + block_hashes: block_hashes.clone(), + state_root: H256::default(), + block_number: 100000, + block_hash: H256::default(), + }, + pruning: Algorithm::Archive, + db_path: dir.as_path().to_owned(), + db_config: &db_config, + writer: None, + genesis: &gb, + guard: Guard::benign(), + engine: &*spec.engine.clone(), + }; + + let mut restoration = Restoration::new(params).unwrap(); + let definitely_bad_chunk = [1, 2, 3, 4, 5]; + + for hash in state_hashes { + assert!(restoration.feed_state(hash, &definitely_bad_chunk, &flag).is_err()); + assert!(!restoration.is_done()); + } + + for hash in block_hashes { + assert!(restoration.feed_blocks(hash, &definitely_bad_chunk, &*spec.engine, &flag).is_err()); + assert!(!restoration.is_done()); + } + } } From e3a8780da7a888401811dda13cba4555a6c94ce3 Mon Sep 17 00:00:00 2001 From: Jaco Greeff Date: Fri, 21 Jul 2017 18:23:41 +0200 Subject: [PATCH 10/19] Check QR before lowercase (#6119) --- js/src/modals/CreateAccount/store.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/js/src/modals/CreateAccount/store.js b/js/src/modals/CreateAccount/store.js index ab9879b8d..cc2160ab9 100644 --- a/js/src/modals/CreateAccount/store.js +++ b/js/src/modals/CreateAccount/store.js @@ -120,7 +120,6 @@ export default class Store { } @computed get qrAddressValid () { - console.log('qrValid', this.qrAddress, this._api.util.isAddressValid(this.qrAddress)); return this._api.util.isAddressValid(this.qrAddress); } @@ -191,7 +190,7 @@ export default class Store { } // FIXME: Current native signer encoding is not 100% for EIP-55, lowercase for now - this.qrAddress = this._api.util + this.qrAddress = qrAddress && this._api.util ? this._api.util.toChecksumAddress(qrAddress.toLowerCase()) : qrAddress; } From 3605593d37c661f431046f4553456c8758e69b94 Mon Sep 17 00:00:00 2001 From: GitLab Build Bot Date: Fri, 21 Jul 2017 16:58:58 +0000 Subject: [PATCH 11/19] [ci skip] js-precompiled 20170721-165246 --- Cargo.lock | 2 +- js/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index f985d99bd..3b7d4880f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2003,7 +2003,7 @@ dependencies = [ [[package]] name = "parity-ui-precompiled" version = "1.4.0" -source = "git+https://github.com/paritytech/js-precompiled.git#b4c17fb0478fc9655ca373637816ee6e325da0d7" +source = "git+https://github.com/paritytech/js-precompiled.git#c9d24713d0bb67c5aad0d89e44b7e832ed676048" dependencies = [ "parity-dapps-glue 1.7.0 (registry+https://github.com/rust-lang/crates.io-index)", ] diff --git a/js/package.json b/js/package.json index 70a6e7f52..5d4fd3c9a 100644 --- a/js/package.json +++ b/js/package.json @@ -1,6 +1,6 @@ { "name": "parity.js", - "version": "1.8.3", + "version": "1.8.4", "main": "release/index.js", "jsnext:main": "src/index.js", "author": "Parity Team ", From c369bba03bb144b036514f76c372b0462bbb456e Mon Sep 17 00:00:00 2001 From: Jaco Greeff Date: Fri, 21 Jul 2017 21:19:38 +0200 Subject: [PATCH 12/19] Fix QR scanner returning null on confirm (#6122) --- .../transactionPendingFormConfirm.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/js/src/views/Signer/components/TransactionPendingForm/TransactionPendingFormConfirm/transactionPendingFormConfirm.js b/js/src/views/Signer/components/TransactionPendingForm/TransactionPendingFormConfirm/transactionPendingFormConfirm.js index f6c4883a8..e327a0322 100644 --- a/js/src/views/Signer/components/TransactionPendingForm/TransactionPendingFormConfirm/transactionPendingFormConfirm.js +++ b/js/src/views/Signer/components/TransactionPendingForm/TransactionPendingFormConfirm/transactionPendingFormConfirm.js @@ -407,7 +407,11 @@ export default class TransactionPendingFormConfirm extends Component { onScan = (signature) => { const { chainId, rlp, tx, data, decrypt } = this.state.qr; - if (signature && signature.substr(0, 2) !== '0x') { + if (!signature) { + return; + } + + if (signature.substr(0, 2) !== '0x') { signature = `0x${signature}`; } From c72c020182f98a2ac2ad4e400c92f53254b70840 Mon Sep 17 00:00:00 2001 From: GitLab Build Bot Date: Fri, 21 Jul 2017 20:18:51 +0000 Subject: [PATCH 13/19] [ci skip] js-precompiled 20170721-201403 --- Cargo.lock | 2 +- js/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 3b7d4880f..f08e53717 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2003,7 +2003,7 @@ dependencies = [ [[package]] name = "parity-ui-precompiled" version = "1.4.0" -source = "git+https://github.com/paritytech/js-precompiled.git#c9d24713d0bb67c5aad0d89e44b7e832ed676048" +source = "git+https://github.com/paritytech/js-precompiled.git#fef524b2c679407d32a9ddef3af5dced97cdd3d0" dependencies = [ "parity-dapps-glue 1.7.0 (registry+https://github.com/rust-lang/crates.io-index)", ] diff --git a/js/package.json b/js/package.json index 5d4fd3c9a..fd32c522a 100644 --- a/js/package.json +++ b/js/package.json @@ -1,6 +1,6 @@ { "name": "parity.js", - "version": "1.8.4", + "version": "1.8.5", "main": "release/index.js", "jsnext:main": "src/index.js", "author": "Parity Team ", From abe7518424a112d4d7397b0ca5c70011456dc0fb Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Sat, 22 Jul 2017 07:41:58 +0200 Subject: [PATCH 14/19] add security policy (#6121) --- README.md | 2 ++ SECURITY.md | 44 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 SECURITY.md diff --git a/README.md b/README.md index 92d74c8d2..1f98d037b 100644 --- a/README.md +++ b/README.md @@ -46,6 +46,8 @@ of RPC APIs. If you run into an issue while using parity, feel free to file one in this repository or hop on our [gitter chat room][gitter-url] to ask a question. We are glad to help! +**For security-critical issues**, please refer to the security policy outlined in `SECURITY.MD`. + Parity's current release is 1.6. You can download it at https://github.com/paritytech/parity/releases or follow the instructions below to build from source. diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 000000000..ed7c83ab1 --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,44 @@ +# Security Policy + +For security inquiries or vulnerability reports, please send a message to security@parity.io. + +Please use a descriptive subject line so we can identify the report as such. + +If you send a report, we will respond to the e-mail within 48 hours, and provide regular updates from that time onwards. + +If you would like to encrypt your report, please use the PGP key provided below. +It is also reproduced [on MIT's key server](https://pgp.mit.edu/pks/lookup?op=get&search=0x5D0F03018D07DE73) + +``` +-----BEGIN PGP PUBLIC KEY BLOCK----- + +mQENBFlyIAwBCACe0keNPjgYzZ1Oy/8t3zj/Qw9bHHqrzx7FWy8NbXnYBM19NqOZ +DIP7Oe0DvCaf/uruBskCS0iVstHlEFQ2AYe0Ei0REt9lQdy61GylU/DEB3879IG+ +6FO0SnFeYeerv1/hFI2K6uv8v7PyyVDiiJSW0I1KIs2OBwJicTKmWxLAeQsRgx9G +yRGalrVk4KP+6pWTA7k3DxmDZKZyfYV/Ej10NtuzmsemwDbv98HKeomp/kgFOfSy +3AZjeCpctlsNqpjUuXa0/HudmH2WLxZ0fz8XeoRh8XM9UudNIecjrDqmAFrt/btQ +/3guvlzhFCdhYPVGsUusKMECk/JG+Xx1/1ZjABEBAAG0LFBhcml0eSBTZWN1cml0 +eSBDb250YWN0IDxzZWN1cml0eUBwYXJpdHkuaW8+iQFUBBMBCAA+FiEE2uUVYCjP +N6B8aTiDXQ8DAY0H3nMFAllyIAwCGwMFCQPCZwAFCwkIBwIGFQgJCgsCBBYCAwEC +HgECF4AACgkQXQ8DAY0H3nM60wgAkS3A36Zc+upiaxU7tumcGv+an17j7gin0sif ++0ELSjVfrXInM6ovai+NhUdcLkJ7tCrKS90fvlaELK5Sg9CXBWCTFccKN4A/B7ey +rOg2NPXUecnyBB/XqQgKYH7ujYlOlqBDXMfz6z8Hj6WToxg9PPMGGomyMGh8AWxM +3yRPFs5RKt0VKgN++5N00oly5Y8ri5pgCidDvCLYMGTVDHFKwkuc9w6BlWlu1R1e +/hXFWUFAP1ffTAul3QwyKhjPn2iotCdxXjvt48KaU8DN4iL7aMBN/ZBKqGS7yRdF +D/JbJyaaJ0ZRvFSTSXy/sWY3z1B5mtCPBxco8hqqNfRkCwuZ6LkBDQRZciAMAQgA +8BP8xrwe12TOUTqL/Vrbxv/FLdhKh53J6TrPKvC2TEEKOrTNo5ahRq+XOS5E7G2N +x3b+fq8gR9BzFcldAx0XWUtGs/Wv++ulaSNqTBxj13J3G3WGsUfMKxRgj//piCUD +bCFLQfGZdKk0M1o9QkPVARwwmvCNiNB/l++xGqPtfc44H5jWj3GoGvL2MkShPzrN +yN/bJ+m+R5gtFGdInqa5KXBuxxuW25eDKJ+LzjbgUgeC76wNcfOiQHTdMkcupjdO +bbGFwo10hcbRAOcZEv6//Zrlmk/6nPxEd2hN20St2bSN0+FqfZ267mWEu3ejsgF8 +ArdCpv5h4fBvJyNwiTZwIQARAQABiQE8BBgBCAAmFiEE2uUVYCjPN6B8aTiDXQ8D +AY0H3nMFAllyIAwCGwwFCQPCZwAACgkQXQ8DAY0H3nNisggAl4fqhRlA34wIb190 +sqXHVxiCuzPaqS6krE9xAa1+gncX485OtcJNqnjugHm2rFE48lv7oasviuPXuInE +/OgVFnXYv9d/Xx2JUeDs+bFTLouCDRY2Unh7KJZasfqnMcCHWcxHx5FvRNZRssaB +WTZVo6sizPurGUtbpYe4/OLFhadBqAE0EUmVRFEUMc1YTnu4eLaRBzoWN4d2UWwi +LN25RSrVSke7LTSFbgn9ntQrQ2smXSR+cdNkkfRCjFcpUaecvFl9HwIqoyVbT4Ym +0hbpbbX/cJdc91tKa+psa29uMeGL/cgL9fAu19yNFRyOTMxjZnvql1X/WE1pLmoP +ETBD1Q== +=K9Qw +-----END PGP PUBLIC KEY BLOCK----- +``` From 0fa9c93f6f6ca6e3be580da8bb3e03f6315d6022 Mon Sep 17 00:00:00 2001 From: Vurich Date: Sat, 22 Jul 2017 14:49:02 +0200 Subject: [PATCH 15/19] Style reungrumble --- ethash/src/lib.rs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/ethash/src/lib.rs b/ethash/src/lib.rs index d8e4d39b4..d870adc0e 100644 --- a/ethash/src/lib.rs +++ b/ethash/src/lib.rs @@ -14,10 +14,11 @@ // You should have received a copy of the GNU General Public License // along with Parity. If not, see . -#![cfg_attr(feature = "benches", feature(test))] - //! Ethash implementation //! See https://github.com/ethereum/wiki/wiki/Ethash + +#![cfg_attr(feature = "benches", feature(test))] + extern crate primal; extern crate sha3; extern crate parking_lot; From e33f9c1d11405d3b969134fdaae2acc05a9e6699 Mon Sep 17 00:00:00 2001 From: Afri Date: Sun, 23 Jul 2017 15:18:58 +0200 Subject: [PATCH 16/19] Changelog for 1.6.9, 1.6.10, and 1.7.0 (#6075) * Update CHANGELOG for 1.6.9 stable release. * [WIP] Prepare CHANGELOG for 1.7.0 beta release. * Contract warp * Update changes for 1.7.0 * Update description for 1.7.0 in changelog * Update Changelog for 1.7.0 beta and 1.6.10 stable * Address reviews for the Changelog. * Fix blog URL in changelog. * Fix typo in Changelog. * Update changelog for 1.7.0 beta and 1.6.10 stable --- CHANGELOG.md | 465 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 465 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 29f84462d..59eb1d0b4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,468 @@ +## Parity [v1.6.10](https://github.com/paritytech/parity/releases/tag/v1.6.10) (2017-07-23) + +This is a hotfix release for the stable channel addressing the recent [multi-signature wallet vulnerability](https://blog.parity.io/security-alert-high-2/). Note, upgrading is not mandatory, and all future multi-sig wallets created by any version of Parity are secure. + +All Changes: + +- Backports for stable [#6116](https://github.com/paritytech/parity/pull/6116) + - Remove chunk to restore from pending set only upon successful import [#6112](https://github.com/paritytech/parity/pull/6112) + - Blacklist bad snapshot manifest hashes upon failure [#5874](https://github.com/paritytech/parity/pull/5874) + - Bump snap version and tweak importing detection logic [#6079](https://github.com/paritytech/parity/pull/6079) (modified to work) +- Fix docker build for stable [#6118](https://github.com/paritytech/parity/pull/6118) +- Backported wallet fix [#6104](https://github.com/paritytech/parity/pull/6104) + - Fix initialisation bug. ([#6102](https://github.com/paritytech/parity/pull/6102)) + - Update wallet library modifiers ([#6103](https://github.com/paritytech/parity/pull/6103)) +- Bump to v1.6.10 + +## Parity [v1.7.0](https://github.com/paritytech/parity/releases/tag/v1.7.0) (2017-07-23) + +Parity 1.7.0 is a major release introducing several important features: + +- **Experimental [Light client](https://github.com/paritytech/parity/wiki/The-Parity-Light-Protocol-(PIP)) support**. Start Parity with `--light` to enable light mode. +- **Experimental web wallet**. A hosted version of Parity that keeps the keys and signs transactions using your browser storage. Try it at https://wallet.parity.io or run your own with `--public-node`. +- **WASM contract support**. Private networks can run contracts compiled into WASM bytecode. _More information and documentation to follow_. +- **DApps and RPC server merge**. DApp and RPC are now available through a single API endpoint. DApp server related settings are deprecated. +- **Export accounts from the wallet**. Backing up your keys can now simply be managed through the wallet interface. +- **PoA/Kovan validator set contract**. The PoA network validator-set management via smart contract is now supported by warp and light sync. +- **PubSub API**. https://github.com/paritytech/parity/wiki/JSONRPC-Parity-Pub-Sub-module +- **Signer apps for IOS and Android**. + +Full list of included changes: + +- Check QR before lowercase ([#6119](https://github.com/paritytech/parity/pull/6119)) [#6120](https://github.com/paritytech/parity/pull/6120) +- Remove chunk to restore from pending set only upon successful import [#6117](https://github.com/paritytech/parity/pull/6117) +- Fixed node address detection on incoming connection [#6094](https://github.com/paritytech/parity/pull/6094) +- Place RETURNDATA behind block number gate [#6095](https://github.com/paritytech/parity/pull/6095) +- Backported wallet fix [#6105](https://github.com/paritytech/parity/pull/6105) + - Fix initialisation bug. ([#6102](https://github.com/paritytech/parity/pull/6102)) + - Update wallet library modifiers ([#6103](https://github.com/paritytech/parity/pull/6103)) +- Bump snap version and tweak importing detection logic ([#6079](https://github.com/paritytech/parity/pull/6079)) [#6081](https://github.com/paritytech/parity/pull/6081) + - bump last tick just before printing info and restore sync detection + - bump kovan snapshot version + - Fixed sync tests + - Fixed rpc tests +- Acquire client report under lock in informant [#6071](https://github.com/paritytech/parity/pull/6071) +- Show busy indicator on Address forget [#6069](https://github.com/paritytech/parity/pull/6069) +- Add CSP for worker-src ([#6059](https://github.com/paritytech/parity/pull/6059)) [#6064](https://github.com/paritytech/parity/pull/6064) + - Specify worker-src seperately, add blob + - Upgrade react-qr-scan to latest version +- Set release channel to beta +- Limit transaction queue memory & limit future queue [#6038](https://github.com/paritytech/parity/pull/6038) +- Fix CI build issue [#6050](https://github.com/paritytech/parity/pull/6050) +- New contract PoA sync fixes [#5991](https://github.com/paritytech/parity/pull/5991) +- Fixed link to Multisig Contract Wallet on master [#5984](https://github.com/paritytech/parity/pull/5984) +- Ethcore crate split part 1 [#6041](https://github.com/paritytech/parity/pull/6041) +- Fix status icon [#6039](https://github.com/paritytech/parity/pull/6039) +- Errors & warnings for inappropriate RPCs [#6029](https://github.com/paritytech/parity/pull/6029) +- Add missing CSP for web3.site [#5992](https://github.com/paritytech/parity/pull/5992) +- Remove cargo install --git from README.md [#6037](https://github.com/paritytech/parity/pull/6037) +- Node Health warnings [#5951](https://github.com/paritytech/parity/pull/5951) +- RPC cpu pool [#6023](https://github.com/paritytech/parity/pull/6023) +- Use crates.io dependencies for parity-wasm [#6036](https://github.com/paritytech/parity/pull/6036) +- Add test for loading the chain specs [#6028](https://github.com/paritytech/parity/pull/6028) +- Whitelist APIs for generic Pub-Sub [#5840](https://github.com/paritytech/parity/pull/5840) +- WASM contracts MVP [#5679](https://github.com/paritytech/parity/pull/5679) +- Fix valid QR scan not advancing [#6033](https://github.com/paritytech/parity/pull/6033) +- --reseal-on-uncle [#5940](https://github.com/paritytech/parity/pull/5940) +- Support comments in reserved peers file ([#6004](https://github.com/paritytech/parity/pull/6004)) [#6012](https://github.com/paritytech/parity/pull/6012) +- Add new md tnc [#5937](https://github.com/paritytech/parity/pull/5937) +- Fix output of parity-evm in case of bad instruction [#5955](https://github.com/paritytech/parity/pull/5955) +- Don't send notifications to unsubscribed clients of PubSub [#5960](https://github.com/paritytech/parity/pull/5960) +- Proper light client informant and more verification of imported headers [#5897](https://github.com/paritytech/parity/pull/5897) +- New Kovan bootnodes [#6017](https://github.com/paritytech/parity/pull/6017) +- Use standard paths for Ethash cache [#5881](https://github.com/paritytech/parity/pull/5881) +- Defer code hash calculation. [#5959](https://github.com/paritytech/parity/pull/5959) +- Fix first run wizard. [#6000](https://github.com/paritytech/parity/pull/6000) +- migration to serde 1.0 [#5996](https://github.com/paritytech/parity/pull/5996) +- SecretStore: generating signatures [#5764](https://github.com/paritytech/parity/pull/5764) +- bigint upgraded to version 3.0 [#5986](https://github.com/paritytech/parity/pull/5986) +- config: don't allow dev chain with force sealing option [#5965](https://github.com/paritytech/parity/pull/5965) +- Update lockfile for miniz-sys and gcc [#5969](https://github.com/paritytech/parity/pull/5969) +- Clean up function naming in RPC error module [#5995](https://github.com/paritytech/parity/pull/5995) +- Fix underflow in gas calculation [#5975](https://github.com/paritytech/parity/pull/5975) +- PubSub for parity-js [#5830](https://github.com/paritytech/parity/pull/5830) +- Report whether a peer was kept from `Handler::on_connect` [#5958](https://github.com/paritytech/parity/pull/5958) +- Implement skeleton for transaction index and epoch transition proof PIP messages [#5908](https://github.com/paritytech/parity/pull/5908) +- TransactionQueue improvements [#5917](https://github.com/paritytech/parity/pull/5917) +- constant time HMAC comparison and clarify docs in ethkey [#5952](https://github.com/paritytech/parity/pull/5952) +- Avoid pre-computing jump destinations [#5954](https://github.com/paritytech/parity/pull/5954) +- Upgrade elastic array [#5949](https://github.com/paritytech/parity/pull/5949) +- PoA: Wait for transition finality before applying [#5774](https://github.com/paritytech/parity/pull/5774) +- Logs Pub-Sub [#5705](https://github.com/paritytech/parity/pull/5705) +- Add the command to install the parity snap [#5945](https://github.com/paritytech/parity/pull/5945) +- Reduce unnecessary allocations [#5944](https://github.com/paritytech/parity/pull/5944) +- Clarify confusing messages. [#5935](https://github.com/paritytech/parity/pull/5935) +- Content Security Policy [#5790](https://github.com/paritytech/parity/pull/5790) +- CLI: Export error message and less verbose peer counter. [#5870](https://github.com/paritytech/parity/pull/5870) +- network: make it more explicit about StreamToken and TimerToken [#5939](https://github.com/paritytech/parity/pull/5939) +- sync: make it more idiomatic rust [#5938](https://github.com/paritytech/parity/pull/5938) +- Prioritize accounts over address book [#5909](https://github.com/paritytech/parity/pull/5909) +- Fixing failing compilation of RPC test on master. [#5916](https://github.com/paritytech/parity/pull/5916) +- Empty local middleware, until explicitly requested [#5912](https://github.com/paritytech/parity/pull/5912) +- Cancel propagated TX [#5899](https://github.com/paritytech/parity/pull/5899) +- fix minor race condition in aura seal generation [#5910](https://github.com/paritytech/parity/pull/5910) +- Docs for Pub-Sub, optional parameter for parity_subscribe [#5833](https://github.com/paritytech/parity/pull/5833) +- Fix gas editor doubling-up on gas [#5820](https://github.com/paritytech/parity/pull/5820) +- Information about used paths added to general output block [#5904](https://github.com/paritytech/parity/pull/5904) +- Domain-locked web tokens. [#5894](https://github.com/paritytech/parity/pull/5894) +- Removed panic handlers [#5895](https://github.com/paritytech/parity/pull/5895) +- Latest changes from Rust RocksDB binding merged [#5905](https://github.com/paritytech/parity/pull/5905) +- Adjust keyethereum/secp256 aliasses [#5903](https://github.com/paritytech/parity/pull/5903) +- Keyethereum fs dependency [#5902](https://github.com/paritytech/parity/pull/5902) +- Ethereum Classic Monetary Policy [#5741](https://github.com/paritytech/parity/pull/5741) +- Initial token should allow full access. [#5873](https://github.com/paritytech/parity/pull/5873) +- Fixed account selection for Dapps on public node [#5856](https://github.com/paritytech/parity/pull/5856) +- blacklist bad snapshot manifest hashes upon failure [#5874](https://github.com/paritytech/parity/pull/5874) +- Fix wrongly called timeouts [#5838](https://github.com/paritytech/parity/pull/5838) +- ArchiveDB and other small fixes [#5867](https://github.com/paritytech/parity/pull/5867) +- convert try!() to ? [#5866](https://github.com/paritytech/parity/pull/5866) +- Make config file optional in systemd [#5847](https://github.com/paritytech/parity/pull/5847) +- EIP-116 (214), [#4833](https://github.com/paritytech/parity/issues/4833) [#4851](https://github.com/paritytech/parity/pull/4851) +- all executables are workspace members [#5865](https://github.com/paritytech/parity/pull/5865) +- minor optimizations of the modexp builtin [#5860](https://github.com/paritytech/parity/pull/5860) +- three small commits for HashDB and MemoryDB [#5766](https://github.com/paritytech/parity/pull/5766) +- use rust 1.18's retain to boost the purge performance [#5801](https://github.com/paritytech/parity/pull/5801) +- Allow IPFS server to accept POST requests [#5858](https://github.com/paritytech/parity/pull/5858) +- Dutch i18n from [#5802](https://github.com/paritytech/parity/issues/5802) for master [#5836](https://github.com/paritytech/parity/pull/5836) +- Typos in token deploy dapp ui [#5851](https://github.com/paritytech/parity/pull/5851) +- A CLI flag to allow fast transaction signing when account is unlocked. [#5778](https://github.com/paritytech/parity/pull/5778) +- Removing `additional` field from EVM instructions [#5821](https://github.com/paritytech/parity/pull/5821) +- Don't fail on wrong log decoding [#5813](https://github.com/paritytech/parity/pull/5813) +- Use randomized subscription ids for PubSub [#5756](https://github.com/paritytech/parity/pull/5756) +- Fixed mem write for empty slice [#5827](https://github.com/paritytech/parity/pull/5827) +- Fix party technologies [#5810](https://github.com/paritytech/parity/pull/5810) +- Revert "Fixed mem write for empty slice" [#5826](https://github.com/paritytech/parity/pull/5826) +- Fixed mem write for empty slice [#5825](https://github.com/paritytech/parity/pull/5825) +- Fix JS tests [#5822](https://github.com/paritytech/parity/pull/5822) +- Bump native-tls and openssl crates. [#5817](https://github.com/paritytech/parity/pull/5817) +- Public node using WASM [#5734](https://github.com/paritytech/parity/pull/5734) +- enforce block signer == author field in PoA [#5808](https://github.com/paritytech/parity/pull/5808) +- Fix stack display in evmbin. [#5733](https://github.com/paritytech/parity/pull/5733) +- Disable UI if it's not compiled in. [#5773](https://github.com/paritytech/parity/pull/5773) +- Require phrase confirmation. [#5731](https://github.com/paritytech/parity/pull/5731) +- Duration limit made optional for EthashParams [#5777](https://github.com/paritytech/parity/pull/5777) +- Update Changelog for 1.6.8 [#5798](https://github.com/paritytech/parity/pull/5798) +- Replace Ethcore comany name in T&C and some other places [#5796](https://github.com/paritytech/parity/pull/5796) +- PubSub for IPC. [#5800](https://github.com/paritytech/parity/pull/5800) +- Fix terminology distributed -> decentralized applications [#5797](https://github.com/paritytech/parity/pull/5797) +- Disable compression for RLP strings [#5786](https://github.com/paritytech/parity/pull/5786) +- update the source for the snapcraft package [#5781](https://github.com/paritytech/parity/pull/5781) +- Fixed default UI port for mac installer [#5782](https://github.com/paritytech/parity/pull/5782) +- Block invalid account name creation [#5784](https://github.com/paritytech/parity/pull/5784) +- Update Cid/multihash/ring/tinykeccak [#5785](https://github.com/paritytech/parity/pull/5785) +- use NULL_RLP, remove NULL_RLP_STATIC [#5742](https://github.com/paritytech/parity/pull/5742) +- Blacklist empty phrase account. [#5730](https://github.com/paritytech/parity/pull/5730) +- EIP-211 RETURNDATACOPY and RETURNDATASIZE [#5678](https://github.com/paritytech/parity/pull/5678) +- Bump mio [#5763](https://github.com/paritytech/parity/pull/5763) +- Fixing UI issues after UI server refactor [#5710](https://github.com/paritytech/parity/pull/5710) +- Fix WS server expose issue. [#5728](https://github.com/paritytech/parity/pull/5728) +- Fix local transactions without condition. [#5716](https://github.com/paritytech/parity/pull/5716) +- Bump parity-wordlist. [#5748](https://github.com/paritytech/parity/pull/5748) +- two small changes in evm [#5700](https://github.com/paritytech/parity/pull/5700) +- Evmbin: JSON format printing pre-state. [#5712](https://github.com/paritytech/parity/pull/5712) +- Recover from empty phrase in dev mode [#5698](https://github.com/paritytech/parity/pull/5698) +- EIP-210 BLOCKHASH changes [#5505](https://github.com/paritytech/parity/pull/5505) +- fixes typo [#5708](https://github.com/paritytech/parity/pull/5708) +- Bump rocksdb [#5707](https://github.com/paritytech/parity/pull/5707) +- Fixed --datadir option [#5697](https://github.com/paritytech/parity/pull/5697) +- rpc -> weak to arc [#5688](https://github.com/paritytech/parity/pull/5688) +- typo fix [#5699](https://github.com/paritytech/parity/pull/5699) +- Revamping parity-evmbin [#5696](https://github.com/paritytech/parity/pull/5696) +- Update dependencies and bigint api [#5685](https://github.com/paritytech/parity/pull/5685) +- UI server refactoring [#5580](https://github.com/paritytech/parity/pull/5580) +- Fix from/into electrum in ethkey [#5686](https://github.com/paritytech/parity/pull/5686) +- Add unit tests [#5668](https://github.com/paritytech/parity/pull/5668) +- Guanqun add unit tests [#5671](https://github.com/paritytech/parity/pull/5671) +- Parity-PubSub as a separate API. [#5676](https://github.com/paritytech/parity/pull/5676) +- EIP-140 REVERT opcode [#5477](https://github.com/paritytech/parity/pull/5477) +- Update CHANGELOG for 1.6.7 [#5683](https://github.com/paritytech/parity/pull/5683) +- Updated docs slightly. [#5674](https://github.com/paritytech/parity/pull/5674) +- Fix build [#5684](https://github.com/paritytech/parity/pull/5684) +- Back-references for the on-demand service [#5573](https://github.com/paritytech/parity/pull/5573) +- Dynamically adjust PIP request costs based on gathered data [#5603](https://github.com/paritytech/parity/pull/5603) +- use cargo workspace [#5601](https://github.com/paritytech/parity/pull/5601) +- Latest headers Pub-Sub [#5655](https://github.com/paritytech/parity/pull/5655) +- improved dockerfile builds [#5659](https://github.com/paritytech/parity/pull/5659) +- Adding CLI options: port shift and unsafe expose. [#5677](https://github.com/paritytech/parity/pull/5677) +- Report missing author in Aura [#5583](https://github.com/paritytech/parity/pull/5583) +- typo fix [#5669](https://github.com/paritytech/parity/pull/5669) +- Remove public middleware (temporary) [#5665](https://github.com/paritytech/parity/pull/5665) +- Remove additional polyfill [#5663](https://github.com/paritytech/parity/pull/5663) +- Importing accounts from files. [#5644](https://github.com/paritytech/parity/pull/5644) +- remove the deprecated options in rustfmt.toml [#5616](https://github.com/paritytech/parity/pull/5616) +- Update the Console dapp [#5602](https://github.com/paritytech/parity/pull/5602) +- Create an account for chain=dev [#5612](https://github.com/paritytech/parity/pull/5612) +- Use babel-runtime as opposed to babel-polyfill [#5662](https://github.com/paritytech/parity/pull/5662) +- Connection dialog timestamp info [#5554](https://github.com/paritytech/parity/pull/5554) +- use copy_from_slice instead of for loop [#5647](https://github.com/paritytech/parity/pull/5647) +- Light friendly dapps [#5634](https://github.com/paritytech/parity/pull/5634) +- Add Recover button to Accounts and warnings [#5645](https://github.com/paritytech/parity/pull/5645) +- Update eth_sign docs. [#5631](https://github.com/paritytech/parity/pull/5631) +- Proper signer Pub-Sub for pending requests. [#5594](https://github.com/paritytech/parity/pull/5594) +- Bump bigint to 1.0.5 [#5641](https://github.com/paritytech/parity/pull/5641) +- PoA warp implementation [#5488](https://github.com/paritytech/parity/pull/5488) +- Improve on-demand dispatch and add support for batch requests [#5419](https://github.com/paritytech/parity/pull/5419) +- Use default account for sending transactions [#5588](https://github.com/paritytech/parity/pull/5588) +- Add peer management to the Status tab [#5566](https://github.com/paritytech/parity/pull/5566) +- Add monotonic step transition [#5587](https://github.com/paritytech/parity/pull/5587) +- Decrypting for external accounts. [#5581](https://github.com/paritytech/parity/pull/5581) +- only enable warp sync when engine supports it [#5595](https://github.com/paritytech/parity/pull/5595) +- fix the doc of installing rust [#5586](https://github.com/paritytech/parity/pull/5586) +- Small fixes [#5584](https://github.com/paritytech/parity/pull/5584) +- SecretStore: remove session on master node [#5545](https://github.com/paritytech/parity/pull/5545) +- run-clean [#5607](https://github.com/paritytech/parity/pull/5607) +- relicense RLP to MIT/Apache2 [#5591](https://github.com/paritytech/parity/pull/5591) +- Fix eth_sign signature encoding. [#5597](https://github.com/paritytech/parity/pull/5597) +- Check pending request on Node local transactions [#5564](https://github.com/paritytech/parity/pull/5564) +- Add tooltips on ActionBar [#5562](https://github.com/paritytech/parity/pull/5562) +- Can't deploy without compiling Contract [#5593](https://github.com/paritytech/parity/pull/5593) +- Add a warning when node is syncing [#5565](https://github.com/paritytech/parity/pull/5565) +- Update registry middleware [#5585](https://github.com/paritytech/parity/pull/5585) +- Set block condition to BigNumber in MethodDecoding [#5592](https://github.com/paritytech/parity/pull/5592) +- Load the sources immediately in Contract Dev [#5575](https://github.com/paritytech/parity/pull/5575) +- Remove formal verification messages in Dev Contract [#5574](https://github.com/paritytech/parity/pull/5574) +- Fix event params decoding when no names for parameters [#5567](https://github.com/paritytech/parity/pull/5567) +- Do not convert to Dates twice [#5563](https://github.com/paritytech/parity/pull/5563) +- Fix Multisig wallet settings [#5560](https://github.com/paritytech/parity/pull/5560) +- Typo [#5547](https://github.com/paritytech/parity/pull/5547) +- Generic PubSub implementation [#5456](https://github.com/paritytech/parity/pull/5456) +- Fix CI paths. [#5570](https://github.com/paritytech/parity/pull/5570) +- reorg into blocks before minimum history [#5558](https://github.com/paritytech/parity/pull/5558) +- EIP-86 update [#5506](https://github.com/paritytech/parity/pull/5506) +- Secretstore RPCs + integration [#5439](https://github.com/paritytech/parity/pull/5439) +- Fixes Parity Bar position [#5557](https://github.com/paritytech/parity/pull/5557) +- Fixes invalid log in BadgeReg events [#5556](https://github.com/paritytech/parity/pull/5556) +- Fix issues in Contract Development view [#5555](https://github.com/paritytech/parity/pull/5555) +- Added missing methods [#5542](https://github.com/paritytech/parity/pull/5542) +- option to disable persistent txqueue [#5544](https://github.com/paritytech/parity/pull/5544) +- Bump jsonrpc [#5552](https://github.com/paritytech/parity/pull/5552) +- Retrieve block headers only for header-only info [#5480](https://github.com/paritytech/parity/pull/5480) +- add snap to CI [#5519](https://github.com/paritytech/parity/pull/5519) +- Pass additional data when reporting [#5527](https://github.com/paritytech/parity/pull/5527) +- Calculate post-constructors state root in spec at load time [#5523](https://github.com/paritytech/parity/pull/5523) +- Fix utf8 decoding [#5533](https://github.com/paritytech/parity/pull/5533) +- Add CHANGELOG.md [#5513](https://github.com/paritytech/parity/pull/5513) +- Change all occurrences of ethcore.io into parity.io [#5528](https://github.com/paritytech/parity/pull/5528) +- Memory usage optimization [#5526](https://github.com/paritytech/parity/pull/5526) +- Compose transaction RPC. [#5524](https://github.com/paritytech/parity/pull/5524) +- Support external eth_sign [#5481](https://github.com/paritytech/parity/pull/5481) +- Treat block numbers as strings, not BigNums. [#5449](https://github.com/paritytech/parity/pull/5449) +- npm cleanups [#5512](https://github.com/paritytech/parity/pull/5512) +- Export acc js [#4973](https://github.com/paritytech/parity/pull/4973) +- YARN [#5395](https://github.com/paritytech/parity/pull/5395) +- Fix linting issues [#5511](https://github.com/paritytech/parity/pull/5511) +- Chinese Translation [#5460](https://github.com/paritytech/parity/pull/5460) +- Fixing secretstore TODOs - part 2 [#5416](https://github.com/paritytech/parity/pull/5416) +- fix json format of state snapshot [#5504](https://github.com/paritytech/parity/pull/5504) +- Bump jsonrpc version [#5489](https://github.com/paritytech/parity/pull/5489) +- Groundwork for generalized warp sync [#5454](https://github.com/paritytech/parity/pull/5454) +- Add the packaging metadata to build the parity snap [#5496](https://github.com/paritytech/parity/pull/5496) +- Cancel tx JS [#4958](https://github.com/paritytech/parity/pull/4958) +- EIP-212 (bn128 curve pairing) [#5307](https://github.com/paritytech/parity/pull/5307) +- fix panickers in tree-route [#5479](https://github.com/paritytech/parity/pull/5479) +- Update links to etherscan.io [#5455](https://github.com/paritytech/parity/pull/5455) +- Refresh UI on nodeKind changes, e.g. personal -> public [#5312](https://github.com/paritytech/parity/pull/5312) +- Correct contract address for EIP-86 [#5473](https://github.com/paritytech/parity/pull/5473) +- Force two decimals for USD conversion rate [#5471](https://github.com/paritytech/parity/pull/5471) +- Refactoring of Tokens & Balances [#5372](https://github.com/paritytech/parity/pull/5372) +- Background-repeat round [#5475](https://github.com/paritytech/parity/pull/5475) +- nl i18n updated [#5461](https://github.com/paritytech/parity/pull/5461) +- Show ETH value (even 0) if ETH transfer in transaction list [#5406](https://github.com/paritytech/parity/pull/5406) +- Store the pending requests per network version [#5405](https://github.com/paritytech/parity/pull/5405) +- Use in-memory database for tests [#5451](https://github.com/paritytech/parity/pull/5451) +- WebSockets RPC server [#5425](https://github.com/paritytech/parity/pull/5425) +- Added missing docs [#5452](https://github.com/paritytech/parity/pull/5452) +- Tests and tweaks for public node middleware [#5417](https://github.com/paritytech/parity/pull/5417) +- Fix removal of hash-mismatched files. [#5440](https://github.com/paritytech/parity/pull/5440) +- parity_getBlockHeaderByNumber and LightFetch utility [#5383](https://github.com/paritytech/parity/pull/5383) +- New state tests [#5418](https://github.com/paritytech/parity/pull/5418) +- Fix buffer length for QR code gen. [#5447](https://github.com/paritytech/parity/pull/5447) +- Add raw hash signing [#5423](https://github.com/paritytech/parity/pull/5423) +- Filters and block RPCs for the light client [#5320](https://github.com/paritytech/parity/pull/5320) +- Work around mismatch for QR checksum [#5374](https://github.com/paritytech/parity/pull/5374) +- easy to use conversion from and to string for ethstore::Crypto [#5437](https://github.com/paritytech/parity/pull/5437) +- Tendermint fixes [#5415](https://github.com/paritytech/parity/pull/5415) +- Adrianbrink lightclientcache branch. [#5428](https://github.com/paritytech/parity/pull/5428) +- Add caching to HeaderChain struct [#5403](https://github.com/paritytech/parity/pull/5403) +- Add decryption to the UI (in the Signer) [#5422](https://github.com/paritytech/parity/pull/5422) +- Add CIDv0 RPC [#5414](https://github.com/paritytech/parity/pull/5414) +- Updating documentation for RPCs [#5392](https://github.com/paritytech/parity/pull/5392) +- Fixing secretstore TODOs - part 1 [#5386](https://github.com/paritytech/parity/pull/5386) +- Fixing disappearing content. [#5399](https://github.com/paritytech/parity/pull/5399) +- Snapshot chunks packed by size [#5318](https://github.com/paritytech/parity/pull/5318) +- APIs wildcards and simple arithmetic. [#5402](https://github.com/paritytech/parity/pull/5402) +- Fixing compilation without dapps. [#5410](https://github.com/paritytech/parity/pull/5410) +- Don't use port 8080 anymore [#5397](https://github.com/paritytech/parity/pull/5397) +- Quick'n'dirty CLI for the light client [#5002](https://github.com/paritytech/parity/pull/5002) +- set gas limit before proving transactions [#5401](https://github.com/paritytech/parity/pull/5401) +- Public node: perf and fixes [#5390](https://github.com/paritytech/parity/pull/5390) +- Straight download path in the readme [#5393](https://github.com/paritytech/parity/pull/5393) +- On-chain ACL checker for secretstore [#5015](https://github.com/paritytech/parity/pull/5015) +- Allow empty-encoded values from QR encoding [#5385](https://github.com/paritytech/parity/pull/5385) +- Update npm build for new inclusions [#5381](https://github.com/paritytech/parity/pull/5381) +- Fix for Ubuntu Dockerfile [#5356](https://github.com/paritytech/parity/pull/5356) +- Secretstore over network [#4974](https://github.com/paritytech/parity/pull/4974) +- Dapps and RPC server merge [#5365](https://github.com/paritytech/parity/pull/5365) +- trigger js build release [#5379](https://github.com/paritytech/parity/pull/5379) +- Update expanse json with fork at block 600000 [#5351](https://github.com/paritytech/parity/pull/5351) +- Futures-based native wrappers for contract ABIs [#5341](https://github.com/paritytech/parity/pull/5341) +- Kovan warp sync fixed [#5337](https://github.com/paritytech/parity/pull/5337) +- Aura eip155 validation transition [#5362](https://github.com/paritytech/parity/pull/5362) +- Shared wordlist for brain wallets [#5331](https://github.com/paritytech/parity/pull/5331) +- Allow signing via Qr [#4881](https://github.com/paritytech/parity/pull/4881) +- Allow entry of url or hash for DappReg meta [#5360](https://github.com/paritytech/parity/pull/5360) +- Adjust tx overlay colours [#5353](https://github.com/paritytech/parity/pull/5353) +- Add ability to disallow API subscriptions [#5366](https://github.com/paritytech/parity/pull/5366) +- EIP-213 (bn128 curve operations) [#4999](https://github.com/paritytech/parity/pull/4999) +- Fix analize output file name [#5357](https://github.com/paritytech/parity/pull/5357) +- Add default eip155 validation [#5346](https://github.com/paritytech/parity/pull/5346) +- Add new seed nodes for Classic chain [#5345](https://github.com/paritytech/parity/pull/5345) +- Shared wordlist for frontend [#5336](https://github.com/paritytech/parity/pull/5336) +- fix rpc tests [#5338](https://github.com/paritytech/parity/pull/5338) +- Public node with accounts and signing in Frontend [#5304](https://github.com/paritytech/parity/pull/5304) +- Rename Status/Status -> Status/NodeStatus [#5332](https://github.com/paritytech/parity/pull/5332) +- Updating paths to repos. [#5330](https://github.com/paritytech/parity/pull/5330) +- Separate status for canceled local transactions. [#5319](https://github.com/paritytech/parity/pull/5319) +- Cleanup the Status View [#5317](https://github.com/paritytech/parity/pull/5317) +- Update UI minimised requests [#5324](https://github.com/paritytech/parity/pull/5324) +- Order signer transactions FIFO [#5321](https://github.com/paritytech/parity/pull/5321) +- updating dependencies [#5028](https://github.com/paritytech/parity/pull/5028) +- Minimise transactions progress [#4942](https://github.com/paritytech/parity/pull/4942) +- Fix eth_sign showing as wallet account [#5309](https://github.com/paritytech/parity/pull/5309) +- Ropsten revival [#5302](https://github.com/paritytech/parity/pull/5302) +- Strict validation transitions [#4988](https://github.com/paritytech/parity/pull/4988) +- Fix default list sorting [#5303](https://github.com/paritytech/parity/pull/5303) +- Use unique owners for multisig wallets [#5298](https://github.com/paritytech/parity/pull/5298) +- Copy all existing i18n strings into zh (as-is translation aid) [#5305](https://github.com/paritytech/parity/pull/5305) +- Fix booleans in Typedinput [#5295](https://github.com/paritytech/parity/pull/5295) +- node kind RPC [#5025](https://github.com/paritytech/parity/pull/5025) +- Fix the use of MobX in playground [#5294](https://github.com/paritytech/parity/pull/5294) +- Fine grained snapshot chunking [#5019](https://github.com/paritytech/parity/pull/5019) +- Add lint:i18n to find missing & extra keys [#5290](https://github.com/paritytech/parity/pull/5290) +- Scaffolding for zh translations, including first-round by @btceth [#5289](https://github.com/paritytech/parity/pull/5289) +- JS package bumps [#5287](https://github.com/paritytech/parity/pull/5287) +- Auto-extract new i18n strings (update) [#5288](https://github.com/paritytech/parity/pull/5288) +- eip100b [#5027](https://github.com/paritytech/parity/pull/5027) +- Set earliest era in snapshot restoration [#5021](https://github.com/paritytech/parity/pull/5021) +- Avoid clogging up tmp when updater dir has bad permissions. [#5024](https://github.com/paritytech/parity/pull/5024) +- Resilient warp sync [#5018](https://github.com/paritytech/parity/pull/5018) +- Create webpack analysis files (size) [#5009](https://github.com/paritytech/parity/pull/5009) +- Dispatch an open event on drag of Parity Bar [#4987](https://github.com/paritytech/parity/pull/4987) +- Various installer and tray apps fixes [#4970](https://github.com/paritytech/parity/pull/4970) +- Export account RPC [#4967](https://github.com/paritytech/parity/pull/4967) +- Switching ValidatorSet [#4961](https://github.com/paritytech/parity/pull/4961) +- Implement PIP messages, request builder, and handlers [#4945](https://github.com/paritytech/parity/pull/4945) +- auto lint [#5003](https://github.com/paritytech/parity/pull/5003) +- Fix FireFox overflows [#5000](https://github.com/paritytech/parity/pull/5000) +- Show busy indicator, focus first field in password change [#4997](https://github.com/paritytech/parity/pull/4997) +- Consistent store naming in the Signer components [#4996](https://github.com/paritytech/parity/pull/4996) +- second (and last) part of rlp refactor [#4901](https://github.com/paritytech/parity/pull/4901) +- Double click to select account creation type [#4986](https://github.com/paritytech/parity/pull/4986) +- Fixes to the Registry dapp [#4984](https://github.com/paritytech/parity/pull/4984) +- Extend api.util [#4979](https://github.com/paritytech/parity/pull/4979) +- Updating JSON-RPC crates [#4934](https://github.com/paritytech/parity/pull/4934) +- splitting part of util into smaller crates [#4956](https://github.com/paritytech/parity/pull/4956) +- Updating syntex et al [#4983](https://github.com/paritytech/parity/pull/4983) +- EIP198 and built-in activation [#4926](https://github.com/paritytech/parity/pull/4926) +- Fix MethodDecoding for Arrays [#4977](https://github.com/paritytech/parity/pull/4977) +- Try to fix WS race condition connection [#4976](https://github.com/paritytech/parity/pull/4976) +- eth_sign where account === undefined [#4964](https://github.com/paritytech/parity/pull/4964) +- Fix references to api outside of `parity.js` [#4981](https://github.com/paritytech/parity/pull/4981) +- Fix Password Dialog form overflow [#4968](https://github.com/paritytech/parity/pull/4968) +- Changing Mutex into RwLock for transaction queue [#4951](https://github.com/paritytech/parity/pull/4951) +- Disable max seal period for external sealing [#4927](https://github.com/paritytech/parity/pull/4927) +- Attach hardware wallets already in addressbook [#4912](https://github.com/paritytech/parity/pull/4912) +- rlp serialization refactor [#4873](https://github.com/paritytech/parity/pull/4873) +- Bump nanomsg [#4965](https://github.com/paritytech/parity/pull/4965) +- Fixed multi-chunk ledger transactions on windows [#4960](https://github.com/paritytech/parity/pull/4960) +- Fix outputs in Contract Constant Queries [#4953](https://github.com/paritytech/parity/pull/4953) +- systemd: Start parity after network.target [#4952](https://github.com/paritytech/parity/pull/4952) +- Remove transaction RPC [#4949](https://github.com/paritytech/parity/pull/4949) +- Swap out ethcore.io url for parity.io [#4947](https://github.com/paritytech/parity/pull/4947) +- Don't remove confirmed requests to early. [#4933](https://github.com/paritytech/parity/pull/4933) +- Ensure sealing work enabled in miner once subscribers added [#4930](https://github.com/paritytech/parity/pull/4930) +- Add z-index to small modals as well [#4923](https://github.com/paritytech/parity/pull/4923) +- Bump nanomsg [#4946](https://github.com/paritytech/parity/pull/4946) +- Bumping multihash and libc [#4943](https://github.com/paritytech/parity/pull/4943) +- Edit ETH value, gas and gas price in Contract Deployment [#4919](https://github.com/paritytech/parity/pull/4919) +- Add ability to configure Secure API [#4922](https://github.com/paritytech/parity/pull/4922) +- Add Token image from URL [#4916](https://github.com/paritytech/parity/pull/4916) +- Use the registry fee in Token Deployment dapp [#4915](https://github.com/paritytech/parity/pull/4915) +- Add reseal max period [#4903](https://github.com/paritytech/parity/pull/4903) +- Detect rust compiler version in Parity build script, closes 4742 [#4907](https://github.com/paritytech/parity/pull/4907) +- Add Vaults logic to First Run [#4914](https://github.com/paritytech/parity/pull/4914) +- Updated gcc and rayon crates to remove outdated num_cpus dependency [#4909](https://github.com/paritytech/parity/pull/4909) +- Renaming evm binary to avoid conflicts. [#4899](https://github.com/paritytech/parity/pull/4899) +- Better error handling for traces RPC [#4849](https://github.com/paritytech/parity/pull/4849) +- Safari SectionList fix [#4895](https://github.com/paritytech/parity/pull/4895) +- Safari Dialog scrolling fix [#4893](https://github.com/paritytech/parity/pull/4893) +- Spelling :) [#4900](https://github.com/paritytech/parity/pull/4900) +- Additional kovan params [#4892](https://github.com/paritytech/parity/pull/4892) +- trigger js-precompiled build [#4898](https://github.com/paritytech/parity/pull/4898) +- Recalculate receipt roots in close_and_lock [#4884](https://github.com/paritytech/parity/pull/4884) +- Reload UI on network switch [#4864](https://github.com/paritytech/parity/pull/4864) +- Update parity-ui-precompiled with branch [#4850](https://github.com/paritytech/parity/pull/4850) +- OSX Installer is no longer experimental [#4882](https://github.com/paritytech/parity/pull/4882) +- Chain-selection from UI [#4859](https://github.com/paritytech/parity/pull/4859) +- removed redundant (and unused) FromJson trait [#4871](https://github.com/paritytech/parity/pull/4871) +- fix typos and grammar [#4880](https://github.com/paritytech/parity/pull/4880) +- Remove old experimental remote-db code [#4872](https://github.com/paritytech/parity/pull/4872) +- removed redundant FixedHash trait, fixes [#4029](https://github.com/paritytech/parity/issues/4029) [#4866](https://github.com/paritytech/parity/pull/4866) +- Reference JSON-RPC more changes-friendly [#4870](https://github.com/paritytech/parity/pull/4870) +- Better handling of Solidity compliation [#4860](https://github.com/paritytech/parity/pull/4860) +- Go through contract links in Transaction List display [#4863](https://github.com/paritytech/parity/pull/4863) +- Fix Gas Price Selector Tooltips [#4865](https://github.com/paritytech/parity/pull/4865) +- Fix auto-updater [#4867](https://github.com/paritytech/parity/pull/4867) +- Make the UI work offline [#4861](https://github.com/paritytech/parity/pull/4861) +- Subscribe to accounts info in Signer / ParityBar [#4856](https://github.com/paritytech/parity/pull/4856) +- Don't link libsnappy explicitly [#4841](https://github.com/paritytech/parity/pull/4841) +- Fix paste in Inputs [#4854](https://github.com/paritytech/parity/pull/4854) +- Extract i18n from shared UI components [#4834](https://github.com/paritytech/parity/pull/4834) +- Fix paste in Inputs [#4844](https://github.com/paritytech/parity/pull/4844) +- Pull contract deployment title from available steps [#4848](https://github.com/paritytech/parity/pull/4848) +- Supress USB error message [#4839](https://github.com/paritytech/parity/pull/4839) +- Fix getTransactionCount in --geth mode [#4837](https://github.com/paritytech/parity/pull/4837) +- CI: test coverage (for core and js) [#4832](https://github.com/paritytech/parity/pull/4832) +- Lowering threshold for transactions above gas limit [#4831](https://github.com/paritytech/parity/pull/4831) +- Fix TxViewer when no `to` (contract deployment) [#4847](https://github.com/paritytech/parity/pull/4847) +- Fix method decoding [#4845](https://github.com/paritytech/parity/pull/4845) +- Add React Hot Reload to dapps + TokenDeploy fix [#4846](https://github.com/paritytech/parity/pull/4846) +- Dapps show multiple times in some cases [#4843](https://github.com/paritytech/parity/pull/4843) +- Fixes to the Registry dapp [#4838](https://github.com/paritytech/parity/pull/4838) +- Show token icons on list summary pages [#4826](https://github.com/paritytech/parity/pull/4826) +- Calibrate step before rejection [#4800](https://github.com/paritytech/parity/pull/4800) +- Add replay protection [#4808](https://github.com/paritytech/parity/pull/4808) +- Better icon on windows [#4804](https://github.com/paritytech/parity/pull/4804) +- Better logic for contract deployments detection [#4821](https://github.com/paritytech/parity/pull/4821) +- Fix wrong default values for contract queries inputs [#4819](https://github.com/paritytech/parity/pull/4819) +- Adjust selection colours/display [#4811](https://github.com/paritytech/parity/pull/4811) +- Update the Wallet Library Registry key [#4817](https://github.com/paritytech/parity/pull/4817) +- Update Wallet to new Wallet Code [#4805](https://github.com/paritytech/parity/pull/4805) + +## Parity [v1.6.9](https://github.com/paritytech/parity/releases/tag/v1.6.9) (2017-07-16) + +This is a first stable release of 1.6 series. It contains a number of minor fixes and introduces the `--reseal-on-uncles` option for miners. + +Full list of changes: + +- Backports [#6061](https://github.com/paritytech/parity/pull/6061) + - Ethereum Classic Monetary Policy [#5741](https://github.com/paritytech/parity/pull/5741) + - Update rewards for uncle miners for ECIP1017 + - Fix an off-by-one error in ECIP1017 era calculation + - `ecip1017_era_rounds` missing from EthashParams when run in build bot + - strip out ecip1017_eras_block_reward function and add unit test + - JS precompiled set to stable +- Backports [#6060](https://github.com/paritytech/parity/pull/6060) + - --reseal-on-uncle [#5940](https://github.com/paritytech/parity/pull/5940) + - Optimized uncle check + - Additional uncle check + - Updated comment + - Bump to v1.6.9 + - CLI: Export error message and less verbose peer counter. [#5870](https://github.com/paritytech/parity/pull/5870) + - Removed numbed of active connections from informant + - Print error message when fatdb is required + - Remove peers from UI + ## Parity [v1.6.8](https://github.com/paritytech/parity/releases/tag/v1.6.8) (2017-06-08) This release addresses: From 5fb32229f9784beffe6b917564d8f0927ade6fe7 Mon Sep 17 00:00:00 2001 From: Nikolay Volf Date: Mon, 24 Jul 2017 14:44:42 +0300 Subject: [PATCH 17/19] bump jsonrpc (#6129) --- Cargo.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 7207ac7ab..c7046b759 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1175,7 +1175,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "jsonrpc-core" version = "7.0.0" -source = "git+https://github.com/paritytech/jsonrpc.git?branch=parity-1.7#5e79be8a098cdda221713992f4a46b41a1d4d8f0" +source = "git+https://github.com/paritytech/jsonrpc.git?branch=parity-1.7#4d3ec22c7aba426988a678b489b2791e95283699" dependencies = [ "futures 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1187,7 +1187,7 @@ dependencies = [ [[package]] name = "jsonrpc-http-server" version = "7.0.0" -source = "git+https://github.com/paritytech/jsonrpc.git?branch=parity-1.7#5e79be8a098cdda221713992f4a46b41a1d4d8f0" +source = "git+https://github.com/paritytech/jsonrpc.git?branch=parity-1.7#4d3ec22c7aba426988a678b489b2791e95283699" dependencies = [ "hyper 0.10.0-a.0 (git+https://github.com/paritytech/hyper)", "jsonrpc-core 7.0.0 (git+https://github.com/paritytech/jsonrpc.git?branch=parity-1.7)", @@ -1200,7 +1200,7 @@ dependencies = [ [[package]] name = "jsonrpc-ipc-server" version = "7.0.0" -source = "git+https://github.com/paritytech/jsonrpc.git?branch=parity-1.7#5e79be8a098cdda221713992f4a46b41a1d4d8f0" +source = "git+https://github.com/paritytech/jsonrpc.git?branch=parity-1.7#4d3ec22c7aba426988a678b489b2791e95283699" dependencies = [ "bytes 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", "jsonrpc-core 7.0.0 (git+https://github.com/paritytech/jsonrpc.git?branch=parity-1.7)", @@ -1213,7 +1213,7 @@ dependencies = [ [[package]] name = "jsonrpc-macros" version = "7.0.0" -source = "git+https://github.com/paritytech/jsonrpc.git?branch=parity-1.7#5e79be8a098cdda221713992f4a46b41a1d4d8f0" +source = "git+https://github.com/paritytech/jsonrpc.git?branch=parity-1.7#4d3ec22c7aba426988a678b489b2791e95283699" dependencies = [ "jsonrpc-core 7.0.0 (git+https://github.com/paritytech/jsonrpc.git?branch=parity-1.7)", "jsonrpc-pubsub 7.0.0 (git+https://github.com/paritytech/jsonrpc.git?branch=parity-1.7)", @@ -1223,7 +1223,7 @@ dependencies = [ [[package]] name = "jsonrpc-minihttp-server" version = "7.0.0" -source = "git+https://github.com/paritytech/jsonrpc.git?branch=parity-1.7#5e79be8a098cdda221713992f4a46b41a1d4d8f0" +source = "git+https://github.com/paritytech/jsonrpc.git?branch=parity-1.7#4d3ec22c7aba426988a678b489b2791e95283699" dependencies = [ "bytes 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", "jsonrpc-core 7.0.0 (git+https://github.com/paritytech/jsonrpc.git?branch=parity-1.7)", @@ -1238,7 +1238,7 @@ dependencies = [ [[package]] name = "jsonrpc-pubsub" version = "7.0.0" -source = "git+https://github.com/paritytech/jsonrpc.git?branch=parity-1.7#5e79be8a098cdda221713992f4a46b41a1d4d8f0" +source = "git+https://github.com/paritytech/jsonrpc.git?branch=parity-1.7#4d3ec22c7aba426988a678b489b2791e95283699" dependencies = [ "jsonrpc-core 7.0.0 (git+https://github.com/paritytech/jsonrpc.git?branch=parity-1.7)", "log 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1248,7 +1248,7 @@ dependencies = [ [[package]] name = "jsonrpc-server-utils" version = "7.0.0" -source = "git+https://github.com/paritytech/jsonrpc.git?branch=parity-1.7#5e79be8a098cdda221713992f4a46b41a1d4d8f0" +source = "git+https://github.com/paritytech/jsonrpc.git?branch=parity-1.7#4d3ec22c7aba426988a678b489b2791e95283699" dependencies = [ "bytes 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", "globset 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1261,7 +1261,7 @@ dependencies = [ [[package]] name = "jsonrpc-tcp-server" version = "7.0.0" -source = "git+https://github.com/paritytech/jsonrpc.git?branch=parity-1.7#5e79be8a098cdda221713992f4a46b41a1d4d8f0" +source = "git+https://github.com/paritytech/jsonrpc.git?branch=parity-1.7#4d3ec22c7aba426988a678b489b2791e95283699" dependencies = [ "bytes 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", "jsonrpc-core 7.0.0 (git+https://github.com/paritytech/jsonrpc.git?branch=parity-1.7)", @@ -1275,7 +1275,7 @@ dependencies = [ [[package]] name = "jsonrpc-ws-server" version = "7.0.0" -source = "git+https://github.com/paritytech/jsonrpc.git?branch=parity-1.7#5e79be8a098cdda221713992f4a46b41a1d4d8f0" +source = "git+https://github.com/paritytech/jsonrpc.git?branch=parity-1.7#4d3ec22c7aba426988a678b489b2791e95283699" dependencies = [ "jsonrpc-core 7.0.0 (git+https://github.com/paritytech/jsonrpc.git?branch=parity-1.7)", "jsonrpc-server-utils 7.0.0 (git+https://github.com/paritytech/jsonrpc.git?branch=parity-1.7)", From 2d6a1160d593935e3c3d135f0c604088a7912b80 Mon Sep 17 00:00:00 2001 From: Nikolay Volf Date: Mon, 24 Jul 2017 18:26:49 +0300 Subject: [PATCH 18/19] don't return 412 (#6133) --- dapps/src/api/api.rs | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/dapps/src/api/api.rs b/dapps/src/api/api.rs index 7d38e288f..3f1c50de8 100644 --- a/dapps/src/api/api.rs +++ b/dapps/src/api/api.rs @@ -147,13 +147,7 @@ impl RestApiRouter { HealthInfo { status, message, details, } }; - let status = if [&peers.status, &sync.status, &time.status].iter().any(|x| *x != &HealthStatus::Ok) { - StatusCode::PreconditionFailed // HTTP 412 - } else { - StatusCode::Ok // HTTP 200 - }; - - response::as_json(status, &Health { peers, sync, time }) + response::as_json(StatusCode::Ok, &Health { peers, sync, time }) }; let time = self.api.time.time_drift(); From 78fab4e4716a8874ac24a11db87f59f864204956 Mon Sep 17 00:00:00 2001 From: Evan Date: Mon, 24 Jul 2017 16:27:27 +0100 Subject: [PATCH 19/19] Add a snapcraft badge (#6135) Congrats on the snap of Parity! Here's a shiny green build status badge :) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1f98d037b..37b06f01c 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ ### [Download latest release](https://github.com/paritytech/parity/releases) -[![build status](https://gitlab.parity.io/parity/parity/badges/master/build.svg)](https://gitlab.parity.io/parity/parity/commits/master) [![Coverage Status][coveralls-image]][coveralls-url] [![GPLv3][license-image]][license-url] +[![build status](https://gitlab.parity.io/parity/parity/badges/master/build.svg)](https://gitlab.parity.io/parity/parity/commits/master) [![Coverage Status][coveralls-image]][coveralls-url] [![GPLv3][license-image]][license-url] [![Snap Status](https://build.snapcraft.io/badge/paritytech/parity.svg)](https://build.snapcraft.io/user/paritytech/parity) ### Join the chat!