Merge branch 'master' into new-jsonrpc
This commit is contained in:
		
						commit
						6fa9393a25
					
				@ -516,6 +516,7 @@ test-coverage:
 | 
				
			|||||||
 #   - echo "Coverage:" $COVERAGE   
 | 
					 #   - echo "Coverage:" $COVERAGE   
 | 
				
			||||||
  tags:
 | 
					  tags:
 | 
				
			||||||
    - kcov
 | 
					    - kcov
 | 
				
			||||||
 | 
					  allow_failure: true
 | 
				
			||||||
test-darwin:
 | 
					test-darwin:
 | 
				
			||||||
  stage: test
 | 
					  stage: test
 | 
				
			||||||
  only:
 | 
					  only:
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										129
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										129
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
								
							@ -214,7 +214,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			|||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "integer-encoding 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "integer-encoding 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "multibase 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "multibase 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "multihash 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "multihash 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
@ -263,7 +263,7 @@ version = "0.2.2"
 | 
				
			|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "core-foundation-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "core-foundation-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "libc 0.2.16 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
@ -271,7 +271,7 @@ name = "core-foundation-sys"
 | 
				
			|||||||
version = "0.2.2"
 | 
					version = "0.2.2"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "libc 0.2.16 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
@ -294,7 +294,7 @@ version = "1.1.1"
 | 
				
			|||||||
source = "git+https://github.com/paritytech/rust-ctrlc.git#b523017108bb2d571a7a69bd97bc406e63bc7a9d"
 | 
					source = "git+https://github.com/paritytech/rust-ctrlc.git#b523017108bb2d571a7a69bd97bc406e63bc7a9d"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "libc 0.2.16 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -303,7 +303,7 @@ name = "daemonize"
 | 
				
			|||||||
version = "0.2.2"
 | 
					version = "0.2.2"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "libc 0.2.16 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
@ -358,7 +358,7 @@ source = "git+https://github.com/ethcore/rust-secp256k1#98ad9b9ecae44a563efdd642
 | 
				
			|||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "arrayvec 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "arrayvec 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "gcc 0.3.43 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "gcc 0.3.43 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "libc 0.2.16 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "rand 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "rand 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
@ -432,7 +432,7 @@ version = "0.1.2"
 | 
				
			|||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "bigint 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "bigint 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "heapsize 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "heapsize 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "libc 0.2.16 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "rand 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "rand 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
@ -502,7 +502,7 @@ version = "1.7.0"
 | 
				
			|||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "ethcore-devtools 1.7.0",
 | 
					 "ethcore-devtools 1.7.0",
 | 
				
			||||||
 "ethcore-util 1.7.0",
 | 
					 "ethcore-util 1.7.0",
 | 
				
			||||||
 "nanomsg 0.5.1 (git+https://github.com/ethcore/nanomsg.rs.git)",
 | 
					 "nanomsg 0.5.1 (git+https://github.com/ethcore/nanomsg.rs.git?branch=parity-1.7)",
 | 
				
			||||||
 "semver 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "semver 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -525,7 +525,7 @@ dependencies = [
 | 
				
			|||||||
 "ethcore-ipc-codegen 1.7.0",
 | 
					 "ethcore-ipc-codegen 1.7.0",
 | 
				
			||||||
 "ethcore-ipc-nano 1.7.0",
 | 
					 "ethcore-ipc-nano 1.7.0",
 | 
				
			||||||
 "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "nanomsg 0.5.1 (git+https://github.com/ethcore/nanomsg.rs.git)",
 | 
					 "nanomsg 0.5.1 (git+https://github.com/ethcore/nanomsg.rs.git?branch=parity-1.7)",
 | 
				
			||||||
 "semver 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "semver 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "time 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "time 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
@ -537,7 +537,7 @@ dependencies = [
 | 
				
			|||||||
 "ethcore-ipc 1.7.0",
 | 
					 "ethcore-ipc 1.7.0",
 | 
				
			||||||
 "lazy_static 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "lazy_static 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "nanomsg 0.5.1 (git+https://github.com/ethcore/nanomsg.rs.git)",
 | 
					 "nanomsg 0.5.1 (git+https://github.com/ethcore/nanomsg.rs.git?branch=parity-1.7)",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
@ -550,7 +550,7 @@ dependencies = [
 | 
				
			|||||||
 "ethcore-ipc-nano 1.7.0",
 | 
					 "ethcore-ipc-nano 1.7.0",
 | 
				
			||||||
 "ethcore-util 1.7.0",
 | 
					 "ethcore-util 1.7.0",
 | 
				
			||||||
 "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "nanomsg 0.5.1 (git+https://github.com/ethcore/nanomsg.rs.git)",
 | 
					 "nanomsg 0.5.1 (git+https://github.com/ethcore/nanomsg.rs.git?branch=parity-1.7)",
 | 
				
			||||||
 "semver 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "semver 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -599,7 +599,7 @@ dependencies = [
 | 
				
			|||||||
 "ethcrypto 0.1.0",
 | 
					 "ethcrypto 0.1.0",
 | 
				
			||||||
 "ethkey 0.2.0",
 | 
					 "ethkey 0.2.0",
 | 
				
			||||||
 "igd 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "igd 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "libc 0.2.16 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "mio 0.6.1 (git+https://github.com/ethcore/mio)",
 | 
					 "mio 0.6.1 (git+https://github.com/ethcore/mio)",
 | 
				
			||||||
 "parking_lot 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "parking_lot 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
@ -723,7 +723,7 @@ dependencies = [
 | 
				
			|||||||
 "heapsize 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "heapsize 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "itertools 0.5.9 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "itertools 0.5.9 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "lazy_static 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "lazy_static 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "libc 0.2.16 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "lru-cache 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "lru-cache 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "parking_lot 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "parking_lot 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
@ -791,7 +791,7 @@ dependencies = [
 | 
				
			|||||||
 "ethkey 0.2.0",
 | 
					 "ethkey 0.2.0",
 | 
				
			||||||
 "itertools 0.5.9 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "itertools 0.5.9 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "lazy_static 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "lazy_static 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "libc 0.2.16 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "parking_lot 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "parking_lot 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "rand 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "rand 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
@ -852,7 +852,7 @@ name = "fdlimit"
 | 
				
			|||||||
version = "0.1.1"
 | 
					version = "0.1.1"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "libc 0.2.16 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
@ -872,7 +872,7 @@ name = "flate2"
 | 
				
			|||||||
version = "0.2.14"
 | 
					version = "0.2.14"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "libc 0.2.16 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "miniz-sys 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "miniz-sys 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -944,7 +944,7 @@ version = "0.3.1"
 | 
				
			|||||||
source = "git+https://github.com/ethcore/hidapi-rs#9a127c1dca7e327e4fdd428406a76c9f5ef48563"
 | 
					source = "git+https://github.com/ethcore/hidapi-rs#9a127c1dca7e327e4fdd428406a76c9f5ef48563"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "gcc 0.3.43 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "gcc 0.3.43 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "libc 0.2.16 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
@ -1060,7 +1060,7 @@ name = "iovec"
 | 
				
			|||||||
version = "0.1.0"
 | 
					version = "0.1.0"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "libc 0.2.16 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -1080,7 +1080,7 @@ version = "0.1.1"
 | 
				
			|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "libc 0.2.16 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -1209,7 +1209,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "libc"
 | 
					name = "libc"
 | 
				
			||||||
version = "0.2.16"
 | 
					version = "0.2.21"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
@ -1218,7 +1218,7 @@ version = "0.3.0"
 | 
				
			|||||||
source = "git+https://github.com/ethcore/libusb-rs#32bacf61abd981d5cbd4a8fecca5a2dc0b762a96"
 | 
					source = "git+https://github.com/ethcore/libusb-rs#32bacf61abd981d5cbd4a8fecca5a2dc0b762a96"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "bit-set 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "bit-set 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "libc 0.2.16 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "libusb-sys 0.2.3 (git+https://github.com/ethcore/libusb-sys)",
 | 
					 "libusb-sys 0.2.3 (git+https://github.com/ethcore/libusb-sys)",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -1228,7 +1228,7 @@ version = "0.2.3"
 | 
				
			|||||||
source = "git+https://github.com/ethcore/libusb-sys#c10b1180646c9dc3f23a9b6bb825abcd3b7487ce"
 | 
					source = "git+https://github.com/ethcore/libusb-sys#c10b1180646c9dc3f23a9b6bb825abcd3b7487ce"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "gcc 0.3.43 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "gcc 0.3.43 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "libc 0.2.16 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
@ -1264,7 +1264,7 @@ name = "memchr"
 | 
				
			|||||||
version = "0.1.11"
 | 
					version = "0.1.11"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "libc 0.2.16 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
@ -1292,7 +1292,7 @@ version = "0.1.7"
 | 
				
			|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "gcc 0.3.43 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "gcc 0.3.43 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "libc 0.2.16 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
@ -1301,7 +1301,7 @@ version = "0.6.0-dev"
 | 
				
			|||||||
source = "git+https://github.com/ethcore/mio?branch=timer-fix#31eccc40ece3d47abaefaf23bb2114033175b972"
 | 
					source = "git+https://github.com/ethcore/mio?branch=timer-fix#31eccc40ece3d47abaefaf23bb2114033175b972"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "libc 0.2.16 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "miow 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "miow 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "net2 0.2.23 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "net2 0.2.23 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
@ -1313,11 +1313,11 @@ dependencies = [
 | 
				
			|||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "mio"
 | 
					name = "mio"
 | 
				
			||||||
version = "0.6.1"
 | 
					version = "0.6.1"
 | 
				
			||||||
source = "git+https://github.com/ethcore/mio#ef182bae193a9c7457cd2cf661fcaffb226e3eef"
 | 
					source = "git+https://github.com/ethcore/mio#15a577039bed3c72f2952459f8ad687a56f63e29"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "lazycell 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "lazycell 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "libc 0.2.16 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "miow 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "miow 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "net2 0.2.23 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "net2 0.2.23 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
@ -1333,7 +1333,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			|||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "lazycell 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "lazycell 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "libc 0.2.16 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "miow 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "miow 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "net2 0.2.23 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "net2 0.2.23 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
@ -1360,7 +1360,7 @@ name = "mio-uds"
 | 
				
			|||||||
version = "0.6.2"
 | 
					version = "0.6.2"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "libc 0.2.16 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "mio 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "mio 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -1406,29 +1406,29 @@ dependencies = [
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "multihash"
 | 
					name = "multihash"
 | 
				
			||||||
version = "0.5.0"
 | 
					version = "0.5.1"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "ring 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "ring 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "tiny-keccak 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "tiny-keccak 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "nanomsg"
 | 
					name = "nanomsg"
 | 
				
			||||||
version = "0.5.1"
 | 
					version = "0.5.1"
 | 
				
			||||||
source = "git+https://github.com/ethcore/nanomsg.rs.git#c40fe442c9afaea5b38009a3d992ca044dcceb00"
 | 
					source = "git+https://github.com/ethcore/nanomsg.rs.git?branch=parity-1.7#26ec71ecbdb284d7a5d596bdb3d0fde02c55d0bc"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "libc 0.2.16 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "nanomsg-sys 0.5.0 (git+https://github.com/ethcore/nanomsg.rs.git)",
 | 
					 "nanomsg-sys 0.5.0 (git+https://github.com/ethcore/nanomsg.rs.git?branch=parity-1.7)",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "nanomsg-sys"
 | 
					name = "nanomsg-sys"
 | 
				
			||||||
version = "0.5.0"
 | 
					version = "0.5.0"
 | 
				
			||||||
source = "git+https://github.com/ethcore/nanomsg.rs.git#c40fe442c9afaea5b38009a3d992ca044dcceb00"
 | 
					source = "git+https://github.com/ethcore/nanomsg.rs.git?branch=parity-1.7#26ec71ecbdb284d7a5d596bdb3d0fde02c55d0bc"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "gcc 0.3.43 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "gcc 0.3.43 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "libc 0.2.16 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
@ -1450,7 +1450,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			|||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "cfg-if 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "cfg-if 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "libc 0.2.16 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
@ -1462,7 +1462,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			|||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "bitflags 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "bitflags 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "cfg-if 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "cfg-if 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "libc 0.2.16 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "rustc_version 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "rustc_version 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "semver 0.1.20 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "semver 0.1.20 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
@ -1475,7 +1475,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			|||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "bitflags 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "bitflags 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "cfg-if 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "cfg-if 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "libc 0.2.16 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "rustc_version 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "rustc_version 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "semver 0.1.20 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "semver 0.1.20 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
@ -1565,7 +1565,7 @@ name = "num_cpus"
 | 
				
			|||||||
version = "1.2.0"
 | 
					version = "1.2.0"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "libc 0.2.16 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
@ -1597,7 +1597,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			|||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "bitflags 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "bitflags 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "lazy_static 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "lazy_static 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "libc 0.2.16 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "openssl-sys 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "openssl-sys 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -1607,7 +1607,7 @@ version = "0.9.3"
 | 
				
			|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "gdi32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "gdi32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "libc 0.2.16 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "pkg-config 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "pkg-config 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "user32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "user32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
@ -1661,7 +1661,7 @@ dependencies = [
 | 
				
			|||||||
 "ethcore-util 1.7.0",
 | 
					 "ethcore-util 1.7.0",
 | 
				
			||||||
 "jsonrpc-http-server 7.0.0 (git+https://github.com/paritytech/jsonrpc.git?branch=parity-1.7)",
 | 
					 "jsonrpc-http-server 7.0.0 (git+https://github.com/paritytech/jsonrpc.git?branch=parity-1.7)",
 | 
				
			||||||
 "mime 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "mime 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "multihash 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "multihash 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "rlp 0.1.0",
 | 
					 "rlp 0.1.0",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -1741,7 +1741,7 @@ dependencies = [
 | 
				
			|||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "parity-ui-precompiled"
 | 
					name = "parity-ui-precompiled"
 | 
				
			||||||
version = "1.4.0"
 | 
					version = "1.4.0"
 | 
				
			||||||
source = "git+https://github.com/ethcore/js-precompiled.git#547a5352d779bc7821a7a2ec14c6d480833aeabb"
 | 
					source = "git+https://github.com/ethcore/js-precompiled.git#7039b5b8e44196718333dc3fcdfcadae2a97c7fd"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "parity-dapps-glue 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "parity-dapps-glue 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
@ -1778,7 +1778,7 @@ version = "0.2.0"
 | 
				
			|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "libc 0.2.16 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "rand 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "rand 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "smallvec 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "smallvec 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
@ -1907,7 +1907,7 @@ name = "rand"
 | 
				
			|||||||
version = "0.3.14"
 | 
					version = "0.3.14"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "libc 0.2.16 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
@ -1916,7 +1916,7 @@ version = "0.6.0"
 | 
				
			|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "deque 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "deque 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "libc 0.2.16 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "num_cpus 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "num_cpus 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "rand 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "rand 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
@ -1954,10 +1954,11 @@ dependencies = [
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "ring"
 | 
					name = "ring"
 | 
				
			||||||
version = "0.6.2"
 | 
					version = "0.7.1"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "lazy_static 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "lazy_static 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 | 
					 "libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "untrusted 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "untrusted 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -1976,7 +1977,7 @@ name = "rocksdb"
 | 
				
			|||||||
version = "0.4.5"
 | 
					version = "0.4.5"
 | 
				
			||||||
source = "git+https://github.com/ethcore/rust-rocksdb#64c63ccbe1f62c2e2b39262486f9ba813793af58"
 | 
					source = "git+https://github.com/ethcore/rust-rocksdb#64c63ccbe1f62c2e2b39262486f9ba813793af58"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "libc 0.2.16 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "rocksdb-sys 0.3.0 (git+https://github.com/ethcore/rust-rocksdb)",
 | 
					 "rocksdb-sys 0.3.0 (git+https://github.com/ethcore/rust-rocksdb)",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -1986,7 +1987,7 @@ version = "0.3.0"
 | 
				
			|||||||
source = "git+https://github.com/ethcore/rust-rocksdb#64c63ccbe1f62c2e2b39262486f9ba813793af58"
 | 
					source = "git+https://github.com/ethcore/rust-rocksdb#64c63ccbe1f62c2e2b39262486f9ba813793af58"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "gcc 0.3.43 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "gcc 0.3.43 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "libc 0.2.16 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
@ -2007,7 +2008,7 @@ version = "0.2.2"
 | 
				
			|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "libc 0.2.16 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "termios 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "termios 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
@ -2018,7 +2019,7 @@ version = "0.3.0"
 | 
				
			|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "libc 0.2.16 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "termios 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "termios 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
@ -2041,7 +2042,7 @@ version = "0.2.36"
 | 
				
			|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "gcc 0.3.43 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "gcc 0.3.43 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "libc 0.2.16 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "rand 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "rand 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "time 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "time 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
@ -2103,7 +2104,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			|||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "core-foundation 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "core-foundation 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "core-foundation-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "core-foundation-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "libc 0.2.16 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "security-framework-sys 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "security-framework-sys 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -2113,7 +2114,7 @@ version = "0.1.9"
 | 
				
			|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "core-foundation-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "core-foundation-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "libc 0.2.16 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
@ -2314,7 +2315,7 @@ version = "0.33.0"
 | 
				
			|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "bitflags 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "bitflags 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "libc 0.2.16 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "term 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "term 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
@ -2357,7 +2358,7 @@ name = "termios"
 | 
				
			|||||||
version = "0.2.2"
 | 
					version = "0.2.2"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "libc 0.2.16 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
@ -2366,7 +2367,7 @@ version = "2.0.0"
 | 
				
			|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "libc 0.2.16 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
@ -2383,7 +2384,7 @@ version = "0.1.35"
 | 
				
			|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "libc 0.2.16 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
 "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
					 "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -2740,7 +2741,7 @@ dependencies = [
 | 
				
			|||||||
"checksum lazy_static 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "49247ec2a285bb3dcb23cbd9c35193c025e7251bfce77c1d5da97e6362dffe7f"
 | 
					"checksum lazy_static 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "49247ec2a285bb3dcb23cbd9c35193c025e7251bfce77c1d5da97e6362dffe7f"
 | 
				
			||||||
"checksum lazycell 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ce12306c4739d86ee97c23139f3a34ddf0387bbf181bc7929d287025a8c3ef6b"
 | 
					"checksum lazycell 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ce12306c4739d86ee97c23139f3a34ddf0387bbf181bc7929d287025a8c3ef6b"
 | 
				
			||||||
"checksum lazycell 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ec38a5c22f1ef3e30d2642aa875620d60edeef36cef43c4739d86215ce816331"
 | 
					"checksum lazycell 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ec38a5c22f1ef3e30d2642aa875620d60edeef36cef43c4739d86215ce816331"
 | 
				
			||||||
"checksum libc 0.2.16 (registry+https://github.com/rust-lang/crates.io-index)" = "408014cace30ee0f767b1c4517980646a573ec61a57957aeeabcac8ac0a02e8d"
 | 
					"checksum libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)" = "88ee81885f9f04bff991e306fea7c1c60a5f0f9e409e99f6b40e3311a3363135"
 | 
				
			||||||
"checksum libusb 0.3.0 (git+https://github.com/ethcore/libusb-rs)" = "<none>"
 | 
					"checksum libusb 0.3.0 (git+https://github.com/ethcore/libusb-rs)" = "<none>"
 | 
				
			||||||
"checksum libusb-sys 0.2.3 (git+https://github.com/ethcore/libusb-sys)" = "<none>"
 | 
					"checksum libusb-sys 0.2.3 (git+https://github.com/ethcore/libusb-sys)" = "<none>"
 | 
				
			||||||
"checksum linked-hash-map 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "bda158e0dabeb97ee8a401f4d17e479d6b891a14de0bba79d5cc2d4d325b5e48"
 | 
					"checksum linked-hash-map 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "bda158e0dabeb97ee8a401f4d17e479d6b891a14de0bba79d5cc2d4d325b5e48"
 | 
				
			||||||
@ -2761,9 +2762,9 @@ dependencies = [
 | 
				
			|||||||
"checksum miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919"
 | 
					"checksum miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919"
 | 
				
			||||||
"checksum msdos_time 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "c04b68cc63a8480fb2550343695f7be72effdec953a9d4508161c3e69041c7d8"
 | 
					"checksum msdos_time 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "c04b68cc63a8480fb2550343695f7be72effdec953a9d4508161c3e69041c7d8"
 | 
				
			||||||
"checksum multibase 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b9c35dac080fd6e16a99924c8dfdef0af89d797dd851adab25feaffacf7850d6"
 | 
					"checksum multibase 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b9c35dac080fd6e16a99924c8dfdef0af89d797dd851adab25feaffacf7850d6"
 | 
				
			||||||
"checksum multihash 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "755d5a39bee3faaf649437e873beab334990221b2faf1f2e56ca10a9e4600235"
 | 
					"checksum multihash 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c9f70f2402fa07c16c40be8fd0a748a39257c5dc3ff5c857cbbde2f39135c505"
 | 
				
			||||||
"checksum nanomsg 0.5.1 (git+https://github.com/ethcore/nanomsg.rs.git)" = "<none>"
 | 
					"checksum nanomsg 0.5.1 (git+https://github.com/ethcore/nanomsg.rs.git?branch=parity-1.7)" = "<none>"
 | 
				
			||||||
"checksum nanomsg-sys 0.5.0 (git+https://github.com/ethcore/nanomsg.rs.git)" = "<none>"
 | 
					"checksum nanomsg-sys 0.5.0 (git+https://github.com/ethcore/nanomsg.rs.git?branch=parity-1.7)" = "<none>"
 | 
				
			||||||
"checksum native-tls 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "aa4e52995154bb6f0b41e4379a279482c9387c1632e3798ba4e511ef8c54ee09"
 | 
					"checksum native-tls 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "aa4e52995154bb6f0b41e4379a279482c9387c1632e3798ba4e511ef8c54ee09"
 | 
				
			||||||
"checksum net2 0.2.23 (registry+https://github.com/rust-lang/crates.io-index)" = "6a816012ca11cb47009693c1e0c6130e26d39e4d97ee2a13c50e868ec83e3204"
 | 
					"checksum net2 0.2.23 (registry+https://github.com/rust-lang/crates.io-index)" = "6a816012ca11cb47009693c1e0c6130e26d39e4d97ee2a13c50e868ec83e3204"
 | 
				
			||||||
"checksum nix 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7a7bb1da2be7da3cbffda73fc681d509ffd9e665af478d2bee1907cee0bc64b2"
 | 
					"checksum nix 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7a7bb1da2be7da3cbffda73fc681d509ffd9e665af478d2bee1907cee0bc64b2"
 | 
				
			||||||
@ -2811,7 +2812,7 @@ dependencies = [
 | 
				
			|||||||
"checksum regex 0.1.68 (registry+https://github.com/rust-lang/crates.io-index)" = "b4329b8928a284580a1c63ec9d846b12f6d3472317243ff7077aff11f23f2b29"
 | 
					"checksum regex 0.1.68 (registry+https://github.com/rust-lang/crates.io-index)" = "b4329b8928a284580a1c63ec9d846b12f6d3472317243ff7077aff11f23f2b29"
 | 
				
			||||||
"checksum regex-syntax 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "841591b1e05609a643e3b4d0045fce04f701daba7151ddcd3ad47b080693d5a9"
 | 
					"checksum regex-syntax 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "841591b1e05609a643e3b4d0045fce04f701daba7151ddcd3ad47b080693d5a9"
 | 
				
			||||||
"checksum reqwest 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3bef9ed8fdfcc30947d6b774938dc0c3f369a474efe440df2c7f278180b2d2e6"
 | 
					"checksum reqwest 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3bef9ed8fdfcc30947d6b774938dc0c3f369a474efe440df2c7f278180b2d2e6"
 | 
				
			||||||
"checksum ring 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "87ac4fce2ee4bb10dd106788e90fdfa4c5a7f3f9f6aae29824db77dc57e2767d"
 | 
					"checksum ring 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "595afba2db7545b940ec900dc59b5281f719d327fc0674eeadc9953617e55357"
 | 
				
			||||||
"checksum rocksdb 0.4.5 (git+https://github.com/ethcore/rust-rocksdb)" = "<none>"
 | 
					"checksum rocksdb 0.4.5 (git+https://github.com/ethcore/rust-rocksdb)" = "<none>"
 | 
				
			||||||
"checksum rocksdb-sys 0.3.0 (git+https://github.com/ethcore/rust-rocksdb)" = "<none>"
 | 
					"checksum rocksdb-sys 0.3.0 (git+https://github.com/ethcore/rust-rocksdb)" = "<none>"
 | 
				
			||||||
"checksum rotor 0.6.3 (git+https://github.com/ethcore/rotor)" = "<none>"
 | 
					"checksum rotor 0.6.3 (git+https://github.com/ethcore/rotor)" = "<none>"
 | 
				
			||||||
 | 
				
			|||||||
@ -45,7 +45,7 @@ of RPC APIs.
 | 
				
			|||||||
If you run into an issue while using parity, feel free to file one in this repository
 | 
					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!
 | 
					or hop on our [gitter chat room][gitter-url] to ask a question. We are glad to help!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Parity's current release is 1.5. You can download it at https://ethcore.io/parity.html or follow the instructions
 | 
					Parity's current release is 1.5. You can download it at https://parity.io or follow the instructions
 | 
				
			||||||
below to build from source.
 | 
					below to build from source.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
----
 | 
					----
 | 
				
			||||||
 | 
				
			|||||||
@ -234,7 +234,8 @@ pub struct Miner {
 | 
				
			|||||||
impl Miner {
 | 
					impl Miner {
 | 
				
			||||||
	/// Push notifier that will handle new jobs
 | 
						/// Push notifier that will handle new jobs
 | 
				
			||||||
	pub fn push_notifier(&self, notifier: Box<NotifyWork>) {
 | 
						pub fn push_notifier(&self, notifier: Box<NotifyWork>) {
 | 
				
			||||||
		self.notifiers.write().push(notifier)
 | 
							self.notifiers.write().push(notifier);
 | 
				
			||||||
 | 
							self.sealing_work.lock().enabled = true;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/// Creates new instance of miner Arc.
 | 
						/// Creates new instance of miner Arc.
 | 
				
			||||||
@ -304,7 +305,7 @@ impl Miner {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	fn forced_sealing(&self) -> bool {
 | 
						fn forced_sealing(&self) -> bool {
 | 
				
			||||||
		self.options.force_sealing
 | 
							self.options.force_sealing
 | 
				
			||||||
			|| !self.options.new_work_notify.is_empty()
 | 
								|| !self.notifiers.read().is_empty()
 | 
				
			||||||
			|| Instant::now() > *self.next_mandatory_reseal.read()
 | 
								|| Instant::now() > *self.next_mandatory_reseal.read()
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -1017,6 +1018,16 @@ impl MinerService for Miner {
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fn remove_pending_transaction(&self, chain: &MiningBlockChainClient, hash: &H256) -> Option<PendingTransaction> {
 | 
				
			||||||
 | 
							let mut queue = self.transaction_queue.lock();
 | 
				
			||||||
 | 
							let tx = queue.find(hash);
 | 
				
			||||||
 | 
							if tx.is_some() {
 | 
				
			||||||
 | 
								let fetch_nonce = |a: &Address| chain.latest_nonce(a);
 | 
				
			||||||
 | 
								queue.remove_invalid(hash, &fetch_nonce);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							tx
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	fn pending_receipt(&self, best_block: BlockNumber, hash: &H256) -> Option<RichReceipt> {
 | 
						fn pending_receipt(&self, best_block: BlockNumber, hash: &H256) -> Option<RichReceipt> {
 | 
				
			||||||
		self.from_pending_block(
 | 
							self.from_pending_block(
 | 
				
			||||||
			best_block,
 | 
								best_block,
 | 
				
			||||||
 | 
				
			|||||||
@ -150,6 +150,10 @@ pub trait MinerService : Send + Sync {
 | 
				
			|||||||
	/// Query pending transactions for hash.
 | 
						/// Query pending transactions for hash.
 | 
				
			||||||
	fn transaction(&self, best_block: BlockNumber, hash: &H256) -> Option<PendingTransaction>;
 | 
						fn transaction(&self, best_block: BlockNumber, hash: &H256) -> Option<PendingTransaction>;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/// Removes transaction from the queue.
 | 
				
			||||||
 | 
						/// NOTE: The transaction is not removed from pending block if mining.
 | 
				
			||||||
 | 
						fn remove_pending_transaction(&self, chain: &MiningBlockChainClient, hash: &H256) -> Option<PendingTransaction>;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/// Get a list of all pending transactions in the queue.
 | 
						/// Get a list of all pending transactions in the queue.
 | 
				
			||||||
	fn pending_transactions(&self) -> Vec<PendingTransaction>;
 | 
						fn pending_transactions(&self) -> Vec<PendingTransaction>;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -211,6 +211,8 @@ impl From<AddrParseError> for Error {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
impl super::work_notify::NotifyWork for Stratum {
 | 
					impl super::work_notify::NotifyWork for Stratum {
 | 
				
			||||||
	fn notify(&self, pow_hash: H256, difficulty: U256, number: u64) {
 | 
						fn notify(&self, pow_hash: H256, difficulty: U256, number: u64) {
 | 
				
			||||||
 | 
							trace!(target: "stratum", "Notify work");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		self.service.push_work_all(
 | 
							self.service.push_work_all(
 | 
				
			||||||
			self.dispatcher.payload(pow_hash, difficulty, number)
 | 
								self.dispatcher.payload(pow_hash, difficulty, number)
 | 
				
			||||||
		).unwrap_or_else(
 | 
							).unwrap_or_else(
 | 
				
			||||||
 | 
				
			|||||||
@ -271,7 +271,7 @@ impl Manager {
 | 
				
			|||||||
					chunk_size += size;
 | 
										chunk_size += size;
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
				trace!("writing {:?}", &hid_chunk[..]);
 | 
									trace!("writing {:?}", &hid_chunk[..]);
 | 
				
			||||||
				let n = handle.write(&hid_chunk[0..chunk_size])?;
 | 
									let n = handle.write(&hid_chunk[..])?;
 | 
				
			||||||
				if n < chunk_size {
 | 
									if n < chunk_size {
 | 
				
			||||||
					return Err(Error::Protocol("Write data size mismatch"));
 | 
										return Err(Error::Protocol("Write data size mismatch"));
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
 | 
				
			|||||||
@ -9,7 +9,7 @@ build = "build.rs"
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
[dependencies]
 | 
					[dependencies]
 | 
				
			||||||
ethcore-ipc = { path = "../rpc" }
 | 
					ethcore-ipc = { path = "../rpc" }
 | 
				
			||||||
nanomsg = { git = "https://github.com/ethcore/nanomsg.rs.git" }
 | 
					nanomsg = { git = "https://github.com/ethcore/nanomsg.rs.git", branch = "parity-1.7" }
 | 
				
			||||||
ethcore-ipc-nano = { path = "../nano" }
 | 
					ethcore-ipc-nano = { path = "../nano" }
 | 
				
			||||||
semver = "0.5"
 | 
					semver = "0.5"
 | 
				
			||||||
log = "0.3"
 | 
					log = "0.3"
 | 
				
			||||||
 | 
				
			|||||||
@ -8,6 +8,6 @@ license = "GPL-3.0"
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
[dependencies]
 | 
					[dependencies]
 | 
				
			||||||
ethcore-ipc = { path = "../rpc" }
 | 
					ethcore-ipc = { path = "../rpc" }
 | 
				
			||||||
nanomsg = { git = "https://github.com/ethcore/nanomsg.rs.git" }
 | 
					nanomsg = { git = "https://github.com/ethcore/nanomsg.rs.git", branch = "parity-1.7" }
 | 
				
			||||||
log = "0.3"
 | 
					log = "0.3"
 | 
				
			||||||
lazy_static = "0.2"
 | 
					lazy_static = "0.2"
 | 
				
			||||||
 | 
				
			|||||||
@ -8,6 +8,6 @@ license = "GPL-3.0"
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
[dependencies]
 | 
					[dependencies]
 | 
				
			||||||
ethcore-devtools = { path = "../../devtools" }
 | 
					ethcore-devtools = { path = "../../devtools" }
 | 
				
			||||||
nanomsg = { git = "https://github.com/ethcore/nanomsg.rs.git" }
 | 
					nanomsg = { git = "https://github.com/ethcore/nanomsg.rs.git", branch = "parity-1.7" }
 | 
				
			||||||
ethcore-util = { path = "../../util" }
 | 
					ethcore-util = { path = "../../util" }
 | 
				
			||||||
semver = "0.5"
 | 
					semver = "0.5"
 | 
				
			||||||
 | 
				
			|||||||
@ -11,7 +11,7 @@ path = "run.rs"
 | 
				
			|||||||
ethcore-ipc = { path = "../rpc" }
 | 
					ethcore-ipc = { path = "../rpc" }
 | 
				
			||||||
ethcore-devtools = { path = "../../devtools" }
 | 
					ethcore-devtools = { path = "../../devtools" }
 | 
				
			||||||
semver = "0.5"
 | 
					semver = "0.5"
 | 
				
			||||||
nanomsg = { git = "https://github.com/ethcore/nanomsg.rs.git" }
 | 
					nanomsg = { git = "https://github.com/ethcore/nanomsg.rs.git", branch = "parity-1.7" }
 | 
				
			||||||
ethcore-ipc-nano = { path = "../nano" }
 | 
					ethcore-ipc-nano = { path = "../nano" }
 | 
				
			||||||
ethcore-util = { path = "../../util" }
 | 
					ethcore-util = { path = "../../util" }
 | 
				
			||||||
log = "0.3"
 | 
					log = "0.3"
 | 
				
			||||||
 | 
				
			|||||||
@ -1,6 +1,6 @@
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
  "name": "parity.js",
 | 
					  "name": "parity.js",
 | 
				
			||||||
  "version": "1.7.18",
 | 
					  "version": "1.7.19",
 | 
				
			||||||
  "main": "release/index.js",
 | 
					  "main": "release/index.js",
 | 
				
			||||||
  "jsnext:main": "src/index.js",
 | 
					  "jsnext:main": "src/index.js",
 | 
				
			||||||
  "author": "Parity Team <admin@parity.io>",
 | 
					  "author": "Parity Team <admin@parity.io>",
 | 
				
			||||||
 | 
				
			|||||||
@ -68,12 +68,13 @@ $popoverZ: 3600;
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  &.modal {
 | 
					  &.modal {
 | 
				
			||||||
 | 
					    z-index: $modalZ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    &:not(.small) {
 | 
					    &:not(.small) {
 | 
				
			||||||
      bottom: $modalBottom;
 | 
					      bottom: $modalBottom;
 | 
				
			||||||
      left: $modalLeft;
 | 
					      left: $modalLeft;
 | 
				
			||||||
      right: $modalRight;
 | 
					      right: $modalRight;
 | 
				
			||||||
      top: $modalTop;
 | 
					      top: $modalTop;
 | 
				
			||||||
      z-index: $modalZ;
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /* TODO: Small Portals don't adjust their overall height like we have with the
 | 
					    /* TODO: Small Portals don't adjust their overall height like we have with the
 | 
				
			||||||
 | 
				
			|||||||
@ -40,7 +40,6 @@ export default class Queries extends Component {
 | 
				
			|||||||
    if (!contract) {
 | 
					    if (!contract) {
 | 
				
			||||||
      return null;
 | 
					      return null;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					 | 
				
			||||||
    const queries = contract.functions
 | 
					    const queries = contract.functions
 | 
				
			||||||
      .filter((fn) => fn.constant)
 | 
					      .filter((fn) => fn.constant)
 | 
				
			||||||
      .sort(this._sortEntries);
 | 
					      .sort(this._sortEntries);
 | 
				
			||||||
@ -113,7 +112,12 @@ export default class Queries extends Component {
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  renderQuery (fn) {
 | 
					  renderQuery (fn) {
 | 
				
			||||||
    const { values } = this.props;
 | 
					    const { abi } = fn;
 | 
				
			||||||
 | 
					    let values = this.props.values[fn.name] || [];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (values && typeof values.slice === 'function') {
 | 
				
			||||||
 | 
					      values = values.slice();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return (
 | 
					    return (
 | 
				
			||||||
      <div className={ styles.container } key={ fn.signature }>
 | 
					      <div className={ styles.container } key={ fn.signature }>
 | 
				
			||||||
@ -125,40 +129,59 @@ export default class Queries extends Component {
 | 
				
			|||||||
          <CardText
 | 
					          <CardText
 | 
				
			||||||
            className={ styles.methodContent }
 | 
					            className={ styles.methodContent }
 | 
				
			||||||
          >
 | 
					          >
 | 
				
			||||||
            { this.renderValue(values[fn.name], fn.outputs[0].kind.type) }
 | 
					            {
 | 
				
			||||||
 | 
					              abi.outputs
 | 
				
			||||||
 | 
					                .map((output, index) => this.renderValue(values[index], output, index))
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
          </CardText>
 | 
					          </CardText>
 | 
				
			||||||
        </Card>
 | 
					        </Card>
 | 
				
			||||||
      </div>
 | 
					      </div>
 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  renderValue (value, type) {
 | 
					  renderValue (tokenValue, output, key) {
 | 
				
			||||||
    if (typeof value === 'undefined') {
 | 
					    if (typeof tokenValue === 'undefined') {
 | 
				
			||||||
      return null;
 | 
					      return null;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    const { api } = this.context;
 | 
					 | 
				
			||||||
    const { accountsInfo } = this.props;
 | 
					    const { accountsInfo } = this.props;
 | 
				
			||||||
 | 
					    const { name, type } = output;
 | 
				
			||||||
 | 
					    const label = `${name ? `${name}: ` : ''}${type}`;
 | 
				
			||||||
 | 
					    const value = this.getTokenValue(tokenValue);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    let valueToDisplay = value;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if (api.util.isArray(value)) {
 | 
					 | 
				
			||||||
      valueToDisplay = api.util.bytesToHex(value);
 | 
					 | 
				
			||||||
    } else if (typeof value === 'boolean') {
 | 
					 | 
				
			||||||
      valueToDisplay = value ? 'true' : 'false';
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    return (
 | 
					    return (
 | 
				
			||||||
      <TypedInput
 | 
					      <TypedInput
 | 
				
			||||||
        accounts={ accountsInfo }
 | 
					        accounts={ accountsInfo }
 | 
				
			||||||
        allowCopy
 | 
					        allowCopy
 | 
				
			||||||
 | 
					        key={ key }
 | 
				
			||||||
        isEth={ false }
 | 
					        isEth={ false }
 | 
				
			||||||
        param={ type }
 | 
					        label={ label }
 | 
				
			||||||
 | 
					        param={ output.type }
 | 
				
			||||||
        readOnly
 | 
					        readOnly
 | 
				
			||||||
        value={ valueToDisplay }
 | 
					        value={ value }
 | 
				
			||||||
      />
 | 
					      />
 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  getTokenValue (token) {
 | 
				
			||||||
 | 
					    const { api } = this.context;
 | 
				
			||||||
 | 
					    const { type, value } = token;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (value === null || value === undefined) {
 | 
				
			||||||
 | 
					      return 'no data';
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (type === 'array' || type === 'fixedArray') {
 | 
				
			||||||
 | 
					      return value.map((tok) => this.getTokenValue(tok));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (Array.isArray(value)) {
 | 
				
			||||||
 | 
					      return api.util.bytesToHex(value);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return value;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  _sortEntries (a, b) {
 | 
					  _sortEntries (a, b) {
 | 
				
			||||||
    return a.name.localeCompare(b.name);
 | 
					    return a.name.localeCompare(b.name);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
				
			|||||||
@ -363,12 +363,15 @@ class Contract extends Component {
 | 
				
			|||||||
      .filter((fn) => !fn.inputs.length);
 | 
					      .filter((fn) => !fn.inputs.length);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    Promise
 | 
					    Promise
 | 
				
			||||||
      .all(queries.map((query) => query.call()))
 | 
					      .all(queries.map((query) => query.call({ rawTokens: true })))
 | 
				
			||||||
      .then(results => {
 | 
					      .then(results => {
 | 
				
			||||||
        const values = queries.reduce((object, fn, idx) => {
 | 
					        const values = queries.reduce((object, fn, idx) => {
 | 
				
			||||||
          const key = fn.name;
 | 
					          const key = fn.name;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
          object[key] = results[idx];
 | 
					          object[key] = fn.outputs.length === 1
 | 
				
			||||||
 | 
					            ? [ results[idx] ]
 | 
				
			||||||
 | 
					            : results[idx];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
          return object;
 | 
					          return object;
 | 
				
			||||||
        }, {});
 | 
					        }, {});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -39,5 +39,6 @@ pub use self::requests::{
 | 
				
			|||||||
};
 | 
					};
 | 
				
			||||||
pub use self::signing_queue::{
 | 
					pub use self::signing_queue::{
 | 
				
			||||||
	ConfirmationsQueue, ConfirmationPromise, ConfirmationResult, SigningQueue, QueueEvent, DefaultAccount,
 | 
						ConfirmationsQueue, ConfirmationPromise, ConfirmationResult, SigningQueue, QueueEvent, DefaultAccount,
 | 
				
			||||||
 | 
						QUEUE_LIMIT as SIGNING_QUEUE_LIMIT,
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
pub use self::signer::SignerService;
 | 
					pub use self::signer::SignerService;
 | 
				
			||||||
 | 
				
			|||||||
@ -77,7 +77,7 @@ pub enum QueueAddError {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// TODO [todr] to consider: timeout instead of limit?
 | 
					// TODO [todr] to consider: timeout instead of limit?
 | 
				
			||||||
const QUEUE_LIMIT: usize = 50;
 | 
					pub const QUEUE_LIMIT: usize = 50;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// A queue of transactions awaiting to be confirmed and signed.
 | 
					/// A queue of transactions awaiting to be confirmed and signed.
 | 
				
			||||||
pub trait SigningQueue: Send + Sync {
 | 
					pub trait SigningQueue: Send + Sync {
 | 
				
			||||||
 | 
				
			|||||||
@ -28,7 +28,7 @@ use util::sha3;
 | 
				
			|||||||
use jsonrpc_core::Error;
 | 
					use jsonrpc_core::Error;
 | 
				
			||||||
use v1::helpers::errors;
 | 
					use v1::helpers::errors;
 | 
				
			||||||
use v1::traits::ParitySet;
 | 
					use v1::traits::ParitySet;
 | 
				
			||||||
use v1::types::{Bytes, H160, H256, U256, ReleaseInfo};
 | 
					use v1::types::{Bytes, H160, H256, U256, ReleaseInfo, Transaction};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// Parity-specific rpc interface for operations altering the settings.
 | 
					/// Parity-specific rpc interface for operations altering the settings.
 | 
				
			||||||
pub struct ParitySetClient<F> {
 | 
					pub struct ParitySetClient<F> {
 | 
				
			||||||
@ -139,4 +139,8 @@ impl<F: Fetch> ParitySet for ParitySetClient<F> {
 | 
				
			|||||||
	fn execute_upgrade(&self) -> Result<bool, Error> {
 | 
						fn execute_upgrade(&self) -> Result<bool, Error> {
 | 
				
			||||||
		Err(errors::light_unimplemented(None))
 | 
							Err(errors::light_unimplemented(None))
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fn remove_transaction(&self, _hash: H256) -> Result<Option<Transaction>, Error> {
 | 
				
			||||||
 | 
							Err(errors::light_unimplemented(None))
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -30,15 +30,10 @@ use updater::{Service as UpdateService};
 | 
				
			|||||||
use jsonrpc_core::Error;
 | 
					use jsonrpc_core::Error;
 | 
				
			||||||
use v1::helpers::errors;
 | 
					use v1::helpers::errors;
 | 
				
			||||||
use v1::traits::ParitySet;
 | 
					use v1::traits::ParitySet;
 | 
				
			||||||
use v1::types::{Bytes, H160, H256, U256, ReleaseInfo};
 | 
					use v1::types::{Bytes, H160, H256, U256, ReleaseInfo, Transaction};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// Parity-specific rpc interface for operations altering the settings.
 | 
					/// Parity-specific rpc interface for operations altering the settings.
 | 
				
			||||||
pub struct ParitySetClient<C, M, U, F=fetch::Client> where
 | 
					pub struct ParitySetClient<C, M, U, F = fetch::Client> {
 | 
				
			||||||
	C: MiningBlockChainClient,
 | 
					 | 
				
			||||||
	M: MinerService,
 | 
					 | 
				
			||||||
	U: UpdateService,
 | 
					 | 
				
			||||||
	F: Fetch,
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	client: Weak<C>,
 | 
						client: Weak<C>,
 | 
				
			||||||
	miner: Weak<M>,
 | 
						miner: Weak<M>,
 | 
				
			||||||
	updater: Weak<U>,
 | 
						updater: Weak<U>,
 | 
				
			||||||
@ -46,12 +41,7 @@ pub struct ParitySetClient<C, M, U, F=fetch::Client> where
 | 
				
			|||||||
	fetch: F,
 | 
						fetch: F,
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
impl<C, M, U, F> ParitySetClient<C, M, U, F> where
 | 
					impl<C, M, U, F> ParitySetClient<C, M, U, F> {
 | 
				
			||||||
	C: MiningBlockChainClient,
 | 
					 | 
				
			||||||
	M: MinerService,
 | 
					 | 
				
			||||||
	U: UpdateService,
 | 
					 | 
				
			||||||
	F: Fetch,
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	/// Creates new `ParitySetClient` with given `Fetch`.
 | 
						/// Creates new `ParitySetClient` with given `Fetch`.
 | 
				
			||||||
	pub fn new(client: &Arc<C>, miner: &Arc<M>, updater: &Arc<U>, net: &Arc<ManageNetwork>, fetch: F) -> Self {
 | 
						pub fn new(client: &Arc<C>, miner: &Arc<M>, updater: &Arc<U>, net: &Arc<ManageNetwork>, fetch: F) -> Self {
 | 
				
			||||||
		ParitySetClient {
 | 
							ParitySetClient {
 | 
				
			||||||
@ -181,4 +171,12 @@ impl<C, M, U, F> ParitySet for ParitySetClient<C, M, U, F> where
 | 
				
			|||||||
		let updater = take_weak!(self.updater);
 | 
							let updater = take_weak!(self.updater);
 | 
				
			||||||
		Ok(updater.execute_upgrade())
 | 
							Ok(updater.execute_upgrade())
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fn remove_transaction(&self, hash: H256) -> Result<Option<Transaction>, Error> {
 | 
				
			||||||
 | 
							let miner = take_weak!(self.miner);
 | 
				
			||||||
 | 
							let client = take_weak!(self.client);
 | 
				
			||||||
 | 
							let hash = hash.into();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							Ok(miner.remove_pending_transaction(&*client, &hash).map(Into::into))
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -27,7 +27,7 @@ use jsonrpc_core::Error;
 | 
				
			|||||||
use v1::helpers::{
 | 
					use v1::helpers::{
 | 
				
			||||||
	errors, oneshot,
 | 
						errors, oneshot,
 | 
				
			||||||
	DefaultAccount,
 | 
						DefaultAccount,
 | 
				
			||||||
	SigningQueue, ConfirmationPromise, ConfirmationResult, SignerService
 | 
						SIGNING_QUEUE_LIMIT, SigningQueue, ConfirmationPromise, ConfirmationResult, SignerService
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
use v1::helpers::dispatch::{self, Dispatcher};
 | 
					use v1::helpers::dispatch::{self, Dispatcher};
 | 
				
			||||||
use v1::metadata::Metadata;
 | 
					use v1::metadata::Metadata;
 | 
				
			||||||
@ -42,7 +42,10 @@ use v1::types::{
 | 
				
			|||||||
	Origin,
 | 
						Origin,
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const MAX_PENDING_DURATION: u64 = 60 * 60;
 | 
					/// After 60s entries that are not queried with `check_request` will get garbage collected.
 | 
				
			||||||
 | 
					const MAX_PENDING_DURATION_SEC: u64 = 60;
 | 
				
			||||||
 | 
					/// Max number of total requests pending and completed, before we start garbage collecting them.
 | 
				
			||||||
 | 
					const MAX_TOTAL_REQUESTS: usize = SIGNING_QUEUE_LIMIT;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
enum DispatchResult {
 | 
					enum DispatchResult {
 | 
				
			||||||
	Promise(ConfirmationPromise),
 | 
						Promise(ConfirmationPromise),
 | 
				
			||||||
@ -71,6 +74,21 @@ fn handle_dispatch<OnResponse>(res: Result<DispatchResult, Error>, on_response:
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					fn collect_garbage(map: &mut TransientHashMap<U256, ConfirmationPromise>) {
 | 
				
			||||||
 | 
						map.prune();
 | 
				
			||||||
 | 
						if map.len() > MAX_TOTAL_REQUESTS {
 | 
				
			||||||
 | 
							// Remove all non-waiting entries.
 | 
				
			||||||
 | 
							let non_waiting: Vec<_> = map
 | 
				
			||||||
 | 
								.iter()
 | 
				
			||||||
 | 
								.filter(|&(_, val)| val.result() != ConfirmationResult::Waiting)
 | 
				
			||||||
 | 
								.map(|(key, _)| *key)
 | 
				
			||||||
 | 
								.collect();
 | 
				
			||||||
 | 
							for k in non_waiting {
 | 
				
			||||||
 | 
								map.remove(&k);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
impl<D: Dispatcher + 'static> SigningQueueClient<D> {
 | 
					impl<D: Dispatcher + 'static> SigningQueueClient<D> {
 | 
				
			||||||
	/// Creates a new signing queue client given shared signing queue.
 | 
						/// Creates a new signing queue client given shared signing queue.
 | 
				
			||||||
	pub fn new(signer: &Arc<SignerService>, dispatcher: D, accounts: &Arc<AccountProvider>) -> Self {
 | 
						pub fn new(signer: &Arc<SignerService>, dispatcher: D, accounts: &Arc<AccountProvider>) -> Self {
 | 
				
			||||||
@ -78,7 +96,7 @@ impl<D: Dispatcher + 'static> SigningQueueClient<D> {
 | 
				
			|||||||
			signer: Arc::downgrade(signer),
 | 
								signer: Arc::downgrade(signer),
 | 
				
			||||||
			accounts: Arc::downgrade(accounts),
 | 
								accounts: Arc::downgrade(accounts),
 | 
				
			||||||
			dispatcher: dispatcher,
 | 
								dispatcher: dispatcher,
 | 
				
			||||||
			pending: Arc::new(Mutex::new(TransientHashMap::new(MAX_PENDING_DURATION))),
 | 
								pending: Arc::new(Mutex::new(TransientHashMap::new(MAX_PENDING_DURATION_SEC))),
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -124,7 +142,10 @@ impl<D: Dispatcher + 'static> ParitySigning for SigningQueueClient<D> {
 | 
				
			|||||||
			DispatchResult::Value(v) => RpcEither::Or(v),
 | 
								DispatchResult::Value(v) => RpcEither::Or(v),
 | 
				
			||||||
			DispatchResult::Promise(promise) => {
 | 
								DispatchResult::Promise(promise) => {
 | 
				
			||||||
				let id = promise.id();
 | 
									let id = promise.id();
 | 
				
			||||||
				pending.lock().insert(id, promise);
 | 
									let mut pending = pending.lock();
 | 
				
			||||||
 | 
									collect_garbage(&mut pending);
 | 
				
			||||||
 | 
									pending.insert(id, promise);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				RpcEither::Either(id.into())
 | 
									RpcEither::Either(id.into())
 | 
				
			||||||
			},
 | 
								},
 | 
				
			||||||
		})
 | 
							})
 | 
				
			||||||
@ -138,7 +159,10 @@ impl<D: Dispatcher + 'static> ParitySigning for SigningQueueClient<D> {
 | 
				
			|||||||
				DispatchResult::Value(v) => RpcEither::Or(v),
 | 
									DispatchResult::Value(v) => RpcEither::Or(v),
 | 
				
			||||||
				DispatchResult::Promise(promise) => {
 | 
									DispatchResult::Promise(promise) => {
 | 
				
			||||||
					let id = promise.id();
 | 
										let id = promise.id();
 | 
				
			||||||
					pending.lock().insert(id, promise);
 | 
										let mut pending = pending.lock();
 | 
				
			||||||
 | 
										collect_garbage(&mut pending);
 | 
				
			||||||
 | 
										pending.insert(id, promise);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
					RpcEither::Either(id.into())
 | 
										RpcEither::Either(id.into())
 | 
				
			||||||
				},
 | 
									},
 | 
				
			||||||
			})
 | 
								})
 | 
				
			||||||
@ -146,18 +170,15 @@ impl<D: Dispatcher + 'static> ParitySigning for SigningQueueClient<D> {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	fn check_request(&self, id: RpcU256) -> Result<Option<RpcConfirmationResponse>, Error> {
 | 
						fn check_request(&self, id: RpcU256) -> Result<Option<RpcConfirmationResponse>, Error> {
 | 
				
			||||||
		let mut pending = self.pending.lock();
 | 
					 | 
				
			||||||
		let id: U256 = id.into();
 | 
							let id: U256 = id.into();
 | 
				
			||||||
		let res = match pending.get(&id) {
 | 
							match self.pending.lock().get(&id) {
 | 
				
			||||||
			Some(ref promise) => match promise.result() {
 | 
								Some(ref promise) => match promise.result() {
 | 
				
			||||||
				ConfirmationResult::Waiting => { return Ok(None); }
 | 
									ConfirmationResult::Waiting => Ok(None),
 | 
				
			||||||
				ConfirmationResult::Rejected => Err(errors::request_rejected()),
 | 
									ConfirmationResult::Rejected => Err(errors::request_rejected()),
 | 
				
			||||||
				ConfirmationResult::Confirmed(rpc_response) => rpc_response.map(Some),
 | 
									ConfirmationResult::Confirmed(rpc_response) => rpc_response.map(Some),
 | 
				
			||||||
			},
 | 
								},
 | 
				
			||||||
			_ => { return Err(errors::request_not_found()); }
 | 
								_ => Err(errors::request_not_found()),
 | 
				
			||||||
		};
 | 
							}
 | 
				
			||||||
		pending.remove(&id);
 | 
					 | 
				
			||||||
		res
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	fn decrypt_message(&self, meta: Metadata, address: RpcH160, data: RpcBytes) -> BoxFuture<RpcBytes, Error> {
 | 
						fn decrypt_message(&self, meta: Metadata, address: RpcH160, data: RpcBytes) -> BoxFuture<RpcBytes, Error> {
 | 
				
			||||||
 | 
				
			|||||||
@ -221,6 +221,10 @@ impl MinerService for TestMinerService {
 | 
				
			|||||||
		self.pending_transactions.lock().get(hash).cloned().map(Into::into)
 | 
							self.pending_transactions.lock().get(hash).cloned().map(Into::into)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fn remove_pending_transaction(&self, _chain: &MiningBlockChainClient, hash: &H256) -> Option<PendingTransaction> {
 | 
				
			||||||
 | 
							self.pending_transactions.lock().remove(hash).map(Into::into)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	fn pending_transactions(&self) -> Vec<PendingTransaction> {
 | 
						fn pending_transactions(&self) -> Vec<PendingTransaction> {
 | 
				
			||||||
		self.pending_transactions.lock().values().cloned().map(Into::into).collect()
 | 
							self.pending_transactions.lock().values().cloned().map(Into::into).collect()
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
				
			|||||||
@ -204,3 +204,31 @@ fn rpc_parity_set_hash_content() {
 | 
				
			|||||||
	assert_eq!(io.handle_request_sync(request), Some(response.to_owned()));
 | 
						assert_eq!(io.handle_request_sync(request), Some(response.to_owned()));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#[test]
 | 
				
			||||||
 | 
					fn rpc_parity_remove_transaction() {
 | 
				
			||||||
 | 
						use ethcore::transaction::{Transaction, Action};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						let miner = miner_service();
 | 
				
			||||||
 | 
						let client = client_service();
 | 
				
			||||||
 | 
						let network = network_service();
 | 
				
			||||||
 | 
						let updater = updater_service();
 | 
				
			||||||
 | 
						let mut io = IoHandler::new();
 | 
				
			||||||
 | 
						io.extend_with(parity_set_client(&client, &miner, &updater, &network).to_delegate());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						let tx = Transaction {
 | 
				
			||||||
 | 
							nonce: 1.into(),
 | 
				
			||||||
 | 
							gas_price: 0x9184e72a000u64.into(),
 | 
				
			||||||
 | 
							gas: 0x76c0.into(),
 | 
				
			||||||
 | 
							action: Action::Call(5.into()),
 | 
				
			||||||
 | 
							value: 0x9184e72au64.into(),
 | 
				
			||||||
 | 
							data: vec![]
 | 
				
			||||||
 | 
						};
 | 
				
			||||||
 | 
						let signed = tx.fake_sign(2.into());
 | 
				
			||||||
 | 
						let hash = signed.hash();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						let request = r#"{"jsonrpc": "2.0", "method": "parity_removeTransaction", "params":[""#.to_owned() + &format!("0x{:?}", hash) + r#""], "id": 1}"#;
 | 
				
			||||||
 | 
						let response = r#"{"jsonrpc":"2.0","result":{"blockHash":null,"blockNumber":null,"condition":null,"creates":null,"from":"0x0000000000000000000000000000000000000002","gas":"0x76c0","gasPrice":"0x9184e72a000","hash":"0x0072c69d780cdfbfc02fed5c7d184151f9a166971d045e55e27695aaa5bcb55e","input":"0x","networkId":null,"nonce":"0x1","publicKey":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","r":"0x0","raw":"0xe9018609184e72a0008276c0940000000000000000000000000000000000000005849184e72a80808080","s":"0x0","standardV":"0x4","to":"0x0000000000000000000000000000000000000005","transactionIndex":null,"v":"0x0","value":"0x9184e72a"},"id":1}"#;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						miner.pending_transactions.lock().insert(hash, signed);
 | 
				
			||||||
 | 
						assert_eq!(io.handle_request_sync(&request), Some(response.to_owned()));
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -19,7 +19,7 @@
 | 
				
			|||||||
use jsonrpc_core::Error;
 | 
					use jsonrpc_core::Error;
 | 
				
			||||||
use futures::BoxFuture;
 | 
					use futures::BoxFuture;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use v1::types::{Bytes, H160, H256, U256, ReleaseInfo};
 | 
					use v1::types::{Bytes, H160, H256, U256, ReleaseInfo, Transaction};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
build_rpc_trait! {
 | 
					build_rpc_trait! {
 | 
				
			||||||
	/// Parity-specific rpc interface for operations altering the settings.
 | 
						/// Parity-specific rpc interface for operations altering the settings.
 | 
				
			||||||
@ -103,5 +103,14 @@ build_rpc_trait! {
 | 
				
			|||||||
		/// Execute a release which is ready according to upgrade_ready().
 | 
							/// Execute a release which is ready according to upgrade_ready().
 | 
				
			||||||
		#[rpc(name = "parity_executeUpgrade")]
 | 
							#[rpc(name = "parity_executeUpgrade")]
 | 
				
			||||||
		fn execute_upgrade(&self) -> Result<bool, Error>;
 | 
							fn execute_upgrade(&self) -> Result<bool, Error>;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							/// Removes transaction from transaction queue.
 | 
				
			||||||
 | 
							/// Makes sense only for transactions that were not propagated to other peers yet
 | 
				
			||||||
 | 
							/// like scheduled transactions or transactions in future.
 | 
				
			||||||
 | 
							/// It might also work for some local transactions with to low gas price
 | 
				
			||||||
 | 
							/// or excessive gas limit that are not accepted by other peers whp.
 | 
				
			||||||
 | 
							/// Returns `true` when transaction was removed, `false` if it was not found.
 | 
				
			||||||
 | 
							#[rpc(name = "parity_removeTransaction")]
 | 
				
			||||||
 | 
							fn remove_transaction(&self, H256) -> Result<Option<Transaction>, Error>;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -1,5 +1,6 @@
 | 
				
			|||||||
[Unit]
 | 
					[Unit]
 | 
				
			||||||
Description=Parity Daemon
 | 
					Description=Parity Daemon
 | 
				
			||||||
 | 
					After=network.target
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[Service]
 | 
					[Service]
 | 
				
			||||||
EnvironmentFile=%h/.parity/parity.conf
 | 
					EnvironmentFile=%h/.parity/parity.conf
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user