Compare commits

...

362 Commits

Author SHA1 Message Date
Artem Vorotnikov
8ca8089e9b v3.0.1 2020-06-01 18:41:09 +03:00
Artem Vorotnikov
c4892cefbe Add missing forks to fork ID (#11747) 2020-06-01 18:37:13 +03:00
Artem Vorotnikov
b079d17468 Add 3.0.0 changelog (#11690) 2020-05-11 16:08:54 +03:00
Artem Vorotnikov
938f361f4a Fix typo (#11698) 2020-05-11 16:08:36 +03:00
Artem Vorotnikov
7875b786be Add deprecation warnings (#11682) 2020-05-11 14:51:05 +03:00
Denis Granha
fdf5f671cf Add Curl to Docker image (#11687) 2020-05-11 12:55:35 +03:00
Denis Granha
44f088bb47 v3 release version strings and track stable (#11680)
Co-authored-by: Denis Granha <denis@gnosis.io>
2020-05-05 19:29:29 +02:00
Denis S. Soldatov aka General-Beck
28207a83ac Fix sccache server errors (#11675)
* actions

* add build scripts

* chmod +x

* remove clang env

* add ARM builds

* install LLVM for Windows

* check LLVM

* remove fi

* check platform

* fix LLVM install on windows

* diff cache

* remove unexpected token &&

* remove build directory cache from windows

* remove Show ENV

* fix cross and RUSTFLAGS

* final fix for ARM and Windows build

* typo

* fix PATH for artifacts

* sudo for install
set PATH . for artifacts.zip

* target names for artifacts

* platform names for artifacts

* remove ARM builds
PLATFORM for build scripts

* remove PLATFORM and change PATH for artifacts.zip

* change PATH for artifacts

* fix sccache

* set sccache env

* Update install-sccache.ps1

* Update install-sccache.ps1

* global env

* set global sccache env

* SCCACHE_CACHE_SIZE       "1G"
SCCACHE_IDLE_TIMEOUT     0

* Update build-windows.sh
2020-05-04 17:32:40 +02:00
David
748a8e384d Don't delete old db after migration (#11662)
* Don't delete old db after migration

Fixes unwanted shuffling&deletion of the old database after a
migration that merely deletes data in one of the existing database
columns.

* Update util/migration-rocksdb/src/lib.rs

Co-Authored-By: Andronik Ordian <write@reusable.software>

Co-authored-by: Andronik Ordian <write@reusable.software>
2020-04-29 16:58:14 +02:00
Andronik Ordian
cb9800f04c rename inject to drain_transaction_overlay (#11657)
* Drain the transaction overlay

* journaldb: rename inject to drain_transaction_overlay

Co-authored-by: David Palm <dvdplm@gmail.com>
2020-04-27 15:36:07 +02:00
David
114074c939 Drain the transaction overlay (#11654) 2020-04-27 13:51:39 +02:00
Denis Granha
f9633e69fe vergen library seems to depend not only on the .git folder content but also on the git binary (#11651)
for generating COMMIT DATE and SHA reference used by the openethereum binary to display in the log. This commit
tries to solve it in the alpine docker image

Co-authored-by: Denis Granha <denis@gnosis.io>
2020-04-27 12:40:05 +02:00
Artem Vorotnikov
74e9293f0f New default paths (#11641) 2020-04-24 20:05:15 +02:00
Adam Z. Nagy
4f3a128194 Update EWF's chains with Istanbul transition block numbers (#11482)
* update(ewf-chainspec): istanbul fork transition blocks

- volta and ewc chains

* update(ewf-istanbul): 1 wei to blake 2 + new transition blocks

* update(ewf-istanbul): future proofing 1 wei for builtins

* update(ewf-chainspec): final transition block numbers for volta and ewc

- frok already went down
2020-04-24 08:39:54 +02:00
Denis Granha
ec85686c63 add openethereum supplementary bootnodes, those are not active right now, but will be in case the network needs more power (#11650)
Co-authored-by: Denis Granha <denis@gnosis.io>
2020-04-24 08:30:47 +02:00
David
e3abea34e9 Remove Parity bootnodes (#11644)
* Remove Parity bootnodes

* Remove parity Ropsten bootnode
2020-04-24 08:29:55 +02:00
David
c85300ca6b Remove accounts bloom (#11589) 2020-04-22 11:04:18 +03:00
Denis Granha
b7dd06b1ff Deploy docker images on master (#11640)
Previously it was defined to deploy on tags and stable branch. Stable branch is not used so, the stable branch nowadays is master.
2020-04-20 11:31:47 +02:00
David
4ed0a454f0 Fix some compiler warnings (#11632) 2020-04-15 14:01:26 +02:00
Wei Tang
2b77203526 Add support for non-fork side of Phoenix (#11627)
* Add support for non-fork side of Phoenix

* Change the primary identifier to ClassicNoPhoenix

* Fix precompile config for non-fork side of Phoenix
2020-04-15 13:04:18 +02:00
Raw Pong Ghmoa
2a3b321a34 validate mainnet specs against all forks (#11625)
* ethcore/res: move test specifications in test-specs subdirectory

* ethcore/spec: update paths for test machines

* scripts/actions: validate mainnet specs against all forks

* fix unexpected end of macro invocation

* scripts/actions: remove first empty line

Co-Authored-By: Niklas Adolfsson <niklasadolfsson1@gmail.com>

Co-authored-by: Niklas Adolfsson <niklasadolfsson1@gmail.com>
2020-04-15 12:15:04 +02:00
David
4b5e9ddfa6 Fix ecrecover builtin (#11623)
* Upgrade parity-crypto to 0.6

* More fixes

* Upgrade ethabi and ethabi-derive

* Fix lockfile

* Patch ethabi from master

* quickfix for ethash

* Update forkid

* Add secret store back

* Fetch ethabi from crates

* fetch secret-store from the right place

* update to keccak-hash 0.5.1

* ethash: upgrade keccak-hash

* ethash: sneaky spaces

* ethash: use overlapping bytes after all

* revert submodule update

* wip

* Use new method to impl ecrecover builtin

* Fetch patches from git

* Sort out todo

* Remove patches

Co-authored-by: Andronik Ordian <write@reusable.software>
2020-04-14 10:12:40 +02:00
Dean Eigenmann
90c0be0231 Update .gitmodules (#11628) 2020-04-13 22:49:47 +02:00
Raw Pong Ghmoa
56885fe458 ethcore/res: activate ecip-1088 phoenix on classic (#11598)
* ethcore/res: activate ecip-1088 phoenix on classic

* scripts: validate classic mainnet spec for phoenix eips

* Revert "scripts: validate classic mainnet spec for phoenix eips"

This reverts commit baa0051d80d37c343ff673ca4f8c381cc87fb0b5.
2020-04-11 18:01:40 +02:00
David
1b23af3fa9 Upgrade parity-common deps to latest (#11620)
* Upgrade parity-crypto to 0.6

* More fixes

* Upgrade ethabi and ethabi-derive

* Fix lockfile

* Patch ethabi from master

* quickfix for ethash

* Update forkid

* Add secret store back

* Fetch ethabi from crates

* fetch secret-store from the right place

* update to keccak-hash 0.5.1

* ethash: upgrade keccak-hash

* ethash: sneaky spaces

* ethash: use overlapping bytes after all

* revert submodule update

Co-authored-by: Andronik Ordian <write@reusable.software>
2020-04-11 13:16:37 +02:00
David
b8e4f142d1 Fix Goerli syncing (#11604)
The Clique engine changes the header during the call to `check_and_lock_block()` and so when the block is committed we need to use the original header from the `PreverifiedBlock`, so we're back to cloning the `Header`.

Fixes https://github.com/openethereum/openethereum/issues/11603
2020-04-10 20:43:17 +02:00
Andronik Ordian
51e4a6dcbc deps: switch to upstream ctrlc (#11617) 2020-04-09 18:24:27 +02:00
Valentin Shergin
a5820b6ef9 Deduplicating crate dependencies (part 3 of n) (#11614)
* Deduplicating crate dependencies (part 3 of n, `tiny_keccak`, `tokio-timer`, and co) (#11613)

The change includes:
```
tiny-keccak
tokio-timer
textwrap
winapi
rand
rand_xorshift
scopeguard
url
```

* Update rpc/src/v1/helpers/secretstore.rs

Co-Authored-By: Andronik Ordian <write@reusable.software>

* Update util/network-devp2p/src/connection.rs

Co-Authored-By: Andronik Ordian <write@reusable.software>

Co-authored-by: Andronik Ordian <write@reusable.software>
2020-04-09 11:03:27 +02:00
Valentin Shergin
12cbe93fbe Deduplicating crate dependencies (part 2 of n, slab) (#11613)
The change includes only `slab` module.
2020-04-07 21:50:45 +02:00
Artem Vorotnikov
c92a15dad0 Actually save ENR on creation and modification (#11602)
* Actually save ENR on creation and modification

* Add test
2020-04-07 20:40:54 +02:00
varasev
78a0e8d312 Activate POSDAO on xDai chain and update bootnodes (#11610) 2020-04-07 20:38:52 +02:00
varasev
5ccc98beba Activate on-chain randomness in POA Core (#11609) 2020-04-07 20:36:47 +02:00
Valentin Shergin
d78565593b Deduplicating crate dependencies (part 1 of n) (#11606)
This fixes (partially) #11468.
The change includes:
```
arrayvec
base64
crossbeam-deque
crossbeam-epoch
crossbeam-utils
home
idna
impl-serde
keccak-hasher
lock_api
miow
num-traits
parking_lot
parking_lot_core
percent-encoding
```
2020-04-07 16:18:56 +02:00
varasev
1cf37cca0d Update enodes for POA Sokol (#11611) 2020-04-07 15:14:16 +02:00
Denis Granha
6ae613eaca Remove .git folder from dogerignore file so vergen library can get build date and commit hash in the binary generatio vergen library can get build date and commit hash in the binary generation (#11608)
Co-authored-by: Denis Granha <denis@gnosis.io>
2020-04-07 10:42:54 +02:00
adria0.eth
c0920b30ee Reduced gas cost for static calls made to precompiles EIP2046/1352 (#11583)
* Implemented eip2046

* Update ethcore/builtin/src/lib.rs

Co-Authored-By: Wei Tang <accounts@that.world>

* Update ethcore/builtin/src/lib.rs

Co-Authored-By: Wei Tang <accounts@that.world>

* Update ethcore/builtin/src/lib.rs

Co-Authored-By: Andronik Ordian <write@reusable.software>

* Update ethcore/builtin/src/lib.rs

Co-Authored-By: Wei Tang <accounts@that.world>

* move precompile address limit def to gasometer

* use const instead lazy_static

Co-authored-by: Wei Tang <accounts@that.world>
Co-authored-by: Andronik Ordian <write@reusable.software>
2020-04-06 22:31:12 +02:00
Valentin Shergin
5627f049a7 [easy] ethcore-bloom-journal was renamed to accounts-bloom (#11605)
It fixes #11585.
2020-04-06 21:32:34 +02:00
marktoda
b683c22c98 Use serde_json to export hardcoded sync (#11601)
The exported hardcoded sync was previously generating invalid JSON, with
the CHT list ending in a trailing comma. In order to remedy this, this
commit uses serde_json to serialize the SpecHardcodedSync struct
into valid JSON.

Fixes #11415
2020-04-06 10:30:12 +02:00
Artem Vorotnikov
e047bb4bb5 Node Discovery v4 ENR Extension (EIP-868) (#11540) 2020-04-04 10:52:22 +02:00
Artem Vorotnikov
47637538e4 Fix compile warnings (#11595)
* Fix compile warnings

* oops

* oops

* Fix
2020-04-03 21:00:09 +02:00
Eduardo Antuña Díez
d4b5720df0 Update version to 3.0.0-alpha.1 (#11592) 2020-04-01 11:07:09 +02:00
/raw PONG _GHMoaCXLT
1840102edd ethcore/res: bump canon fork hash for mordor and kotti testnets (#11584)
* ethcore/res: bump canon fork hash for mordor and kotti testnets

* ethcore/res: add kotti bootnodes for parity, besu, and geth
2020-03-31 12:20:50 +02:00
Eduardo Antuña Díez
302a388d96 Update on push tags (#11590)
With this change we want to be able to trigger the release of v3.x.x versions
2020-03-31 10:35:27 +02:00
marktoda
2a3217d8d8 Replace deprecated tempdir dependency with tempfile (#11588)
`Tempdir` is deprecated, but the functionality has been merged into
another crate: `tempfile`. This commit removes all `tempdir` dependencies
and replaces them with `tempfile` and the equivalent bindings.

Fixes #11560
2020-03-29 22:31:17 +02:00
Artem Vorotnikov
4f26ffd447 Fix project name, links, rename the binaries (#11580)
* Fix project name, links, rename binary

* Update util/version/Cargo.toml

Co-Authored-By: David <dvdplm@gmail.com>

* Update updater/Cargo.toml

Co-Authored-By: David <dvdplm@gmail.com>

* Update util/version/Cargo.toml

Co-Authored-By: David <dvdplm@gmail.com>

Co-authored-by: David <dvdplm@gmail.com>
2020-03-25 17:16:51 +01:00
Artem Vorotnikov
0ac15a0883 Update Cargo.lock (#11573) 2020-03-24 09:47:37 +03:00
Andronik Ordian
78916beb1a ci: workaround for the cache bug on Linux (#11568)
* ci: workaround for the cache bug

* ci: use the workaround only for linux

* cleanup

* REVERTME: invalidate cache

* test I

* test II

* simplify checkout

* try bash on windows

* fix checkout

* sudo bash?

* ok, I don't have time for this sh*t

* revert Cargo.lock change

* Test rules for .cargo in windows-latest

* update rules

* Get Acl

* new path to windows cargo home

7584c7b879/images/win/scripts/Installers/Install-Rust.ps1 (L10)

* Set-ExecutionPolicy

* Test

* another experiment

* another experiment II

* revert temp changes

Co-authored-by: Denis S. Soldatov aka General-Beck <general.beck@gmail.com>
2020-03-21 15:01:10 +01:00
David
87fd914c94 Increase the default pruning parameters (#11558)
* Log block number and earliest available block when snapshots fail to start

* Increase default pruning history to 128
Increase default pruning memory to 48Mb

* Decrease SNAPSHOT_PERIOD to 200 to get them snapshots started quicker

* Sync updates to defaults with the args parser

* Fix tests

* Restore the SNAPSHOT_PERIOD to 5000

* One more

* Update ethcore/src/client/config.rs
2020-03-19 11:34:30 +01:00
Denis Granha
874462bfc0 Add Docker build and push to github actions (#11555)
* Add github action for dockerhub deployment

* Add VCS_REF and BUILD_DATE as buildargs for docker image

* deploy docker images also based on tag

* move docker deployment to it's own github action so it can be parallelized

* remove unnecesary OS check in the docker deployment script

* adding initial steps of checkout and basic toolchain for docker github action

* Update deploy-docker.yml

Remove unnecesary line for checkout sources on deploy docker script

* remove build args from deploy docker script

* Update deploy-docker.yml
2020-03-18 23:21:12 +01:00
Artem Vorotnikov
bb2d7fb8c9 Update README (#11578)
* Update README

* Update README.md

Co-Authored-By: David <dvdplm@gmail.com>

* Update README.md

Co-Authored-By: David <dvdplm@gmail.com>

* Update README.md

Co-Authored-By: David <dvdplm@gmail.com>

* more

* fix link

* discord badge style

Co-authored-by: David <dvdplm@gmail.com>
2020-03-18 19:22:51 +01:00
Andronik Ordian
70c4ed7fa0 informant: display I/O stats (#11523)
* informant: collect I/O stats for state_db

* informat: debug i/o log

* informat: remove unused cache hit ratio

* Cargo.lock: cargo update -p librocksdb-sys

* [deps]: upgrade kvdb-rocksdb to 0.6

* Update ethcore/types/src/client_types.rs

Co-Authored-By: David <dvdplm@gmail.com>

Co-authored-by: David <dvdplm@gmail.com>
2020-03-17 16:44:27 +01:00
Niklas Adolfsson
3231454bb1 [devp2p discovery]: remove deprecated_echo_hash (#11564)
Removes support for `deprecated_echo_hash` ping/pong in devp2p-discovery.
It will not work with nodes prior to `stable 2.0.5` (#9526)
2020-03-17 16:43:48 +01:00
Julian Sparber
2bcc31928e [secretstore] create db_version file when database doesn't exist (#11570)
Fixes: https://github.com/openethereum/openethereum/issues/11569
2020-03-16 19:53:47 +01:00
Kirill Pimenov
9da1304539 Remove Parity's Security Policy (#11565)
OpenEthereum is outside of the current scope for Parity's BugBounty program.
Unfortunately, this means that this Security Policy needs to go.

I urge other OpenEthereum stakeholders to come up with a replacement policy ASAP, and will glad to provide help in setting those processes up/sharing some templates and accumulated knowledge.
2020-03-13 14:41:41 +01:00
/raw PONG _GHMoaCXLT
ba0a380df9 ethcore/res: enable ecip-1088 phoenix upgrade for kotti and mordor testnets (#11529)
* ethcore/res: enable ecip-1088 phoenix upgrade for classic

* ethcore/res: fix eip-2200 config for the classic networks

* ethcore/res: add fork block checkpoint for mordor classic

* ethcore/res: fix whitespacing for mordor classic config

* ethcore/res: fix mordor bootnode entries

* ethcore/res: shuffle mordor bootnodes

* ethcore/res: use hex prefix for classic specs

* ethcore/res: revert classic spec to pre-phoenix

Co-authored-by: q9f <q9f@users.noreply.github.com>
2020-03-13 10:59:50 +01:00
David
5be4924672 Misc docs and renames …and one less clone (#11556)
* Misc docs and renames
…and one less clone

* unused import

* Docs

* Update ethcore/src/client/client.rs

Co-Authored-By: Niklas Adolfsson <niklasadolfsson1@gmail.com>

Co-authored-by: Niklas Adolfsson <niklasadolfsson1@gmail.com>
2020-03-10 23:58:54 +01:00
Niklas Adolfsson
e88ac4dbcf [secretstore]: don't sign message with only zeroes (#11561) 2020-03-10 20:09:12 +01:00
Niklas Adolfsson
b7c97f90b6 [devp2p discovery]: cleanup (#11547)
* [devp2p discovery]: cleanup

* [devp2p]: remove lifetime from Discovery

This commit it removes the lifetime on type `Discovery` by making `request_backoff: &'static [Duration]`
instead.

* [devp2p discovery]: pass SockAddr by value

* [devp2p discovery]: remove needless clones

* [devp2p discovery]: take payload by value
2020-03-10 18:35:49 +01:00
David
9e77e7e193 Code cleanup in the sync module (#11552)
* Code cleanup

`flush_queue()` is mostly used by tests
remove some unused params
avoid clones in a few places

* Consistent params naming
Consistent use of log calls

* Fix todo

It'a actually not trivial to find out the size of these collections, likely we keep blocks from all kinds of forks in the `self.blocks`/`self.parents` collections and there's no good way to anticipate how many blocks we're going to drain. Most of the time we end up draining 0 blocks and then we drain a whole bunch of them, up to 30 000.

* Revert making flush_queue() test-only
Address review grumbles

* More review grumbles

* fix build
2020-03-09 20:04:50 +01:00
Andronik Ordian
10d82ef119 initial cleanup (#11542)
* cleanup

* upbork

* review grumble: rename client id prefix

* rpc-tests: make one of the clients open-ethereum

* fix doctest

* README: mention clang version and that our wiki is old
2020-03-09 15:07:15 +01:00
Atkins
c190092750 Warn if genesis constructor revert (#11550) 2020-03-07 11:36:40 +01:00
Andronik Ordian
5c3c979798 ethcore: cleanup after #11531 (#11546)
* ethcore: cleanup after #11531

* fix verification benches

* ethcore: remove enact_verified

* ethcore: replace PreverifiedBlock with a tuple

* ethcore: more descriptive Vec<u8> type alias
2020-03-05 16:59:59 +01:00
Andronik Ordian
3ccfe735aa license update (#11543)
* update license_header

* run ./scripts/add_license.sh

* update eip-152 license
2020-03-05 12:19:39 +01:00
David
6c0134f2ee Less cloning when importing blocks (#11531)
* WIP

* cleanup

* check_and_lock_block() only needs reference

* Cleanup&docs

* Push uncles by ref to clone at the last possible time.

* Missing import

* Review grumbles

* Update util/journaldb/src/overlayrecentdb.rs

Co-Authored-By: Niklas Adolfsson <niklasadolfsson1@gmail.com>

* Update ethcore/types/src/client_types.rs

Co-Authored-By: Andronik Ordian <write@reusable.software>

* deref U256 before adding

* More review grumbles

* review grumbles: pass by value

* cleanup

* Move the block

* Don't clone the header

* Update ethcore/src/client/client.rs

Co-Authored-By: Niklas Adolfsson <niklasadolfsson1@gmail.com>

* Update ethcore/src/client/client.rs

Co-Authored-By: Niklas Adolfsson <niklasadolfsson1@gmail.com>

* Add comment

Co-authored-by: Niklas Adolfsson <niklasadolfsson1@gmail.com>
Co-authored-by: Andronik Ordian <write@reusable.software>
2020-03-04 18:34:29 +01:00
Denis S. Soldatov aka General-Beck
729b10e1e0 Github Actions (#11528)
* actions

* add build scripts

* chmod +x

* remove clang env

* add ARM builds

* install LLVM for Windows

* check LLVM

* remove fi

* check platform

* fix LLVM install on windows

* diff cache

* remove unexpected token &&

* remove build directory cache from windows

* remove Show ENV

* remove checksum

* fix cross and RUSTFLAGS

* final fix for ARM and Windows build

* typo

* fix PATH for artifacts

* sudo for install
set PATH . for artifacts.zip

* target names for artifacts

* platform names for artifacts

* remove ARM builds
PLATFORM for build scripts

* remove PLATFORM and change PATH for artifacts.zip

* change PATH for artifacts

* add sccache
div to test and build

* env RUSTC_WRAPPER sccache

* sccache tag 0.2.13 
up cache to latest v1.1.2
set SCCACHE_CACHE_SIZE: "1G"

* remove dependencies from build

* add audit check
add tags for Build sccache --show-stats

* remove beta and nightly toolchains

* refactoring cache && sccache

* fix Windows PATH o sccache HOME

* "*"->'*'

* install scache from https://github.com/mozilla/sccache/releases

* fix lint

* url for sccache

* sccache up

* shell: pwsh for sccache

* up install script for sccache

* fix link

* splitting tests into multiple tasks

* Jobs renaming

* typo fix

* remove Continue on error

* TEST: remove cargo build cache

* TEST: sccache show stats before

* TEST: 1

* TEST: 2

* TEST: 3 
MacOS fix sccache PATH

* TEST 4: enable target cache

* remove build

* TEST 5: check cache and up Cargo.toml

* TEST 6

* TEST 7: restore cargo cache
splt build-tests and run-tests

* TEST 8: fix build-test

* TEST 9: fix sccache

* TEST 10: lint run-test

* TEST 11: build and test in one job

* prepare for merge

* test.yml -> check.yml

* add install sccache script

* sh -> ps1

* add os arg to ps cript

* os up

* fix os arg

* ls sccache tar

* echo url

* echo sccache url

* add swith for select platform

* fix args

* TEST CLEAN 1: clean biuld dir for all platforms

* TEST CLEAN 2: incude build step 
continue-on-error in test

* TEST CLEAN 3: script for clean

* ready for merge
2020-03-04 15:49:43 +01:00
Eduardo Antuña Díez
bfbb92f0a1 Fix Alpine Dockerfile (#11538) 2020-03-04 13:33:21 +01:00
David
7d54e9258d Remove AuxiliaryData/AuxiliaryRequest (#11533)
* Remove AuxiliaryRequest
Remove bytes member from AuxiliaryData

* Remove AuxiliaryData

* Address review grumbles
2020-03-03 15:17:37 +01:00
Niklas Adolfsson
0c385de921 [journaldb]: cleanup (#11534)
I was annoyed by the manual `clone` implementations which this removes and I fixed a few of clippy warnings.
2020-03-03 12:18:26 +01:00
s3krit
62b73a6460 Remove references to parity-ethereum (#11525)
* update all the changelogs

* update only github URLs in README.md

* sed magic

find . -type f -exec sed -i 's_paritytech/parity-ethereum_OpenEthereum/open-ethereum_g' {} \;
2020-03-01 23:40:59 +01:00
Artem Vorotnikov
597cbc2d6c Drop IPFS support (#11532) 2020-02-29 11:57:43 +01:00
Andronik Ordian
0edd55f42f chain-supplier: fix warning reporting for GetNodeData request (#11530) 2020-02-28 15:31:01 +01:00
David
8572d612a7 Faster kill_garbage (#11514)
* Faster kill_garbage

Benchmark shows that almost half the time `apply()`-ing a transaction is spent in garbage collection. This PR avoids visiting each cache item and `collect()`-ing accounts to clean up.

* Walk back panicking behaviour

* Review grumble: prefer `and_then` to `if let`
2020-02-27 13:56:48 +01:00
Niklas Adolfsson
11abf3ea2e [EngineSigner]: don't sign message with only zeroes (#11524)
* [EngineSigner]: don't sign message only zeroes

Fixes #11521, caused by switching to `upstream rust-secp256k1`

* address grumbles

* forgot formatting change
2020-02-27 12:22:11 +01:00
Andronik Ordian
ec8dbb36e6 fix compilation warnings (#11522) 2020-02-26 12:58:09 +01:00
Niklas Adolfsson
cd7018007e [ethcore cleanup]: various unrelated fixes from #11493 (#11507)
* [cleanup]: various unrelated fixes from `#11493`

* [revert]: too verbose logging `seal`

* fix nit: don't mix from() and into()
2020-02-25 15:32:13 +01:00
David
ad56eb48b5 Add benchmark for transaction execution (#11509)
* Add benchmark for transaction execution

* Address review grumbles

* Address review grumbles and extend benches to test both blocks with both Constantinople and Istanbul rules
2020-02-25 11:25:02 +01:00
Parity Technologies
fa6b6a19a4 Add Smart Contract License v1.0 2020-02-24 20:02:35 +01:00
David
bbcd094906 Misc fixes (#11510)
* Misc fixes

Did some code reading and made random changes as I went.

* Update ethcore/src/client/client.rs

Co-Authored-By: Andronik Ordian <write@reusable.software>

Co-authored-by: Andronik Ordian <write@reusable.software>
2020-02-23 16:49:17 +01:00
Niklas Adolfsson
2018f5b0ab [dependencies]: unify rustc-hex (#11506)
* [dependency]: unify `rustc-hex`

* [private tx]: fix upgrade to `rustc hex 2.1.0`
2020-02-21 15:10:00 +01:00
varasev
bec867be03 Activate on-chain randomness in POA Sokol (#11505) 2020-02-21 10:40:53 +01:00
David
fa0c1efb8d Grab bag of cleanup (#11504)
Formatting, docs, pass TransactOptions instead of tracers.
2020-02-19 16:12:27 +01:00
Artem Vorotnikov
06df521eff Implement eth/64 (EIP-2364) and drop support for eth/62 (#11472)
* sync: make code friendlier to future conditional parsing

* Implement eth/64 (EIP-2364) and drop support for eth/62
2020-02-19 14:42:52 +01:00
Niklas Adolfsson
a49950e9c0 [dependencies]: remove util/macros (#11501)
* [dependencies]: remove `util/macros`

* fix typo: `flish` -> flush`

* [json tests]: add log if `write` or `flush` fails

`write` is performed to `stdout`
`logging` is performed to `stderr`

* [rocksdb-migration]: remove unused `Progress`

* [rpc test]: BTreeMap -> `btreemap!`
2020-02-19 13:07:33 +01:00
Eduardo Antuña Díez
70f08e1549 OpenEthereum bootnodes are added (#11499) 2020-02-18 14:57:51 +01:00
Niklas Adolfsson
4e2010f2d9 [ci benches]: use all-features (#11496)
* [ci benches]: use `all-features`

Our benches are hidden behind feature flags, this PR enables to type check on those.

`--all` is deprecated

* [bench verification]: remove block_family_partial

* [global allocator]: rm `feature=memory_profiling`

The `memory_profiling` feature doesn't work because `parity_util_mem` crate configures it globally.
2020-02-17 12:25:07 +01:00
Niklas Adolfsson
ff78f4318a [verification]: make test-build compile standalone (#11495)
This commit makes `cargo test -p verification` work again, by using `common-types` with
the `test-helpers` feature
2020-02-15 23:32:21 +01:00
Andronik Ordian
a4aef98acd complete null-signatures removal (#11491)
* complete null-signatures removal

* unsigned transactions are disallowed by the type system

* "fix" verification test

* machine: bring the test back

* machine: simplify the test
2020-02-15 13:26:08 +01:00
David
856a075588 Include the seal when populating the header for a new block (#11475)
* debug signer

* Don't panic if empty_steps_transition already happened

Before this the `header_empty_steps_raw` would panic if the chain has already progressed beyond the block number set in `emptyStepsTransition`. As this is a user accessible configuration option I don't think we should panic.

* Cleanup some code in Aura

Nothing really interesting here, renames or removes some methods. Adds some docs and extends a test a bit to clarify the behaviour of the code.

* Include the seal when populating the header for a new block (fixes #11445)

* cleanup

* cleanup2

* Review grumbles

* Update ethcore/engines/authority-round/src/lib.rs

Co-Authored-By: André Silva <andre.beat@gmail.com>

* Update ethcore/engines/authority-round/src/lib.rs

Co-Authored-By: André Silva <andre.beat@gmail.com>

* Update ethcore/src/block.rs

Co-Authored-By: André Silva <andre.beat@gmail.com>

Co-authored-by: André Silva <andre.beat@gmail.com>
2020-02-14 19:01:17 +01:00
Andronik Ordian
ea9322f9c1 fix compilation warnings (#11492) 2020-02-14 17:04:19 +01:00
Andronik Ordian
452aeec0bb cargo update -p cmake (#11490) 2020-02-13 16:46:00 +01:00
Andronik Ordian
3424697313 update to published rlp-derive (#11489) 2020-02-13 15:34:50 +01:00
Anton Gavrilov
9477bae6dc Switch usage of Secret Store to the external lib (#11487) 2020-02-12 18:37:34 +01:00
Anton Gavrilov
3357cfb3e5 Switch from the internal runtime lib to external one from crates.io (#11480)
* Parity runtime switched to the version from crates

* Tests fixed
2020-02-11 22:02:25 +01:00
Gregory Markou
6b61ef8aa7 Update params.rs (#11474) 2020-02-11 14:49:39 +01:00
Artem Vorotnikov
1a8c0391c5 weak_counts has been stabilized (#11476) 2020-02-11 09:41:23 +01:00
Andronik Ordian
c5123e1ecd sync: remove broken eth_protocol_version method (#11473)
* sync: fix eth_protocol_version

* sync: remove eth_protocol_version altogether
2020-02-10 21:22:34 +01:00
David
99271db9d3 Use parity-crypto updated to use upstream rust-secp256k1 (#11406)
* Use parity-crypto updated to use upstream rust-secp256k1

* Fetch dependency from git

* Missed a session ID

* Add free-standing inversion function that uses `libsecp256k1`

* fixed tests

* Update deps

* Use parity-crypto 0.5.0
Use libsecp256k1 0.3.5

* Review grumble

Co-authored-by: Svyatoslav Nikolsky <svyatonik@gmail.com>
2020-02-10 18:29:21 +01:00
David
2c4b51c3ea Cleanup some code in Aura (#11466)
* Cleanup some code in Aura

Nothing really interesting here, renames or removes some methods. Adds some docs and extends a test a bit to clarify the behaviour of the code.

* Update ethcore/engines/authority-round/src/lib.rs

Co-Authored-By: Niklas Adolfsson <niklasadolfsson1@gmail.com>

Co-authored-by: Niklas Adolfsson <niklasadolfsson1@gmail.com>
2020-02-10 14:26:35 +01:00
Andronik Ordian
654632264b upgrade some of the dependencies (#11467)
* bump parity-util-mem and related deps

* upgrade some of the dependencies

* deduplicate static_assertions
2020-02-07 17:23:45 +01:00
Marius Kjærstad
cb7df2053d Some more release track changes to README.md (#11465)
Some more release track changes to README.md
2020-02-07 12:37:05 +01:00
Marius Kjærstad
218299969d Update simple one-line installer due to switching to a single stable release track (#11463) 2020-02-07 11:37:30 +01:00
s3krit
77f755bbe1 update Dockerfile (#11461) 2020-02-06 18:13:58 +01:00
Artem Vorotnikov
090c3322a5 Implement EIP-2124 (#11456)
* Implement EIP-2124

* Implement ForkFilter

* ForkId deserialization

* Derive RLP for ForkId

* docs

* comments by @dvdplm

* docs

* clippy

* period
2020-02-06 14:40:19 +01:00
Niklas Adolfsson
06138ec7d3 [eth classic chainspec]: remove balance = 1 (#11459) 2020-02-06 11:12:42 +01:00
Andronik Ordian
e20d5b639e just to make sure we don't screw up this again (#11455) 2020-02-05 16:18:28 +01:00
Andronik Ordian
626543326d backwards compatible call_type creation_method (#11450)
* rlp_derive: update syn & co

* rlp_derive: remove dummy_const

* rlp_derive: remove unused attirubutes

* rlp-derive: change authors

* rlp_derive: add rlp(default) attribute

* Revert "Revert "[Trace] Distinguish between `create` and `create2` (#11311)" (#11427)"

This reverts commit 5d4993b0f8.

* trace: backwards compatible call_type and creation_method

* trace: add rlp backward compatibility tests

* cleanup

* i know, i hate backwards compatibility too

* address review grumbles
2020-02-05 15:30:45 +01:00
Denis S. Soldatov aka General-Beck
7108b3f048 gcc to clang (#11453)
* gcc to clang

test
```
export CC="sccache "$CC
export CXX="sccache "$CXX
```
darwin build
```
CC=clang
CXX=clang
```

* darwin - > default clang
2020-02-05 13:30:49 +01:00
David
49f338a173 Avoid copies (#11451)
* Avoid copies

* Unused import
2020-02-04 23:38:05 +01:00
Andronik Ordian
e9fa4d00d2 Cargo.lock: cargo lock translate (#11448) 2020-02-04 23:32:58 +01:00
David
cf6fa63f55 Avoid long state queries when serving GetNodeData requests (#11444)
* Remove dead bootnodes, add new geth bootnodes

* More granular locking when fetching state
Finish GetDataNode requests early if queries take too long

* typo

* Use latest kvdb-rocksdb

* Cleanup

* Update ethcore/sync/src/chain/supplier.rs

Co-Authored-By: Andronik Ordian <write@reusable.software>

* Address review grumbles

* Fix compilation

* Address review grumbles

Co-authored-by: Andronik Ordian <write@reusable.software>
2020-02-04 20:59:16 +01:00
Andronik Ordian
edf59a1394 Cargo.lock: cargo update -p kvdb-rocksdb (#11447) 2020-02-04 20:54:29 +01:00
Andronik Ordian
e4a4a3cb55 rlp_derive: cleanup (#11446)
* rlp_derive: update syn & co

* rlp_derive: remove dummy_const

* rlp_derive: remove unused attirubutes

* rlp-derive: change authors
2020-02-04 17:35:48 +01:00
Niklas Adolfsson
1b96f98296 chore: remove unused dependencies (#11432)
* fix: compiler warnings

* chore: remove unused dependencies
2020-02-03 23:26:43 +01:00
Andronik Ordian
ccaa514eec update kvdb-rocksdb to 0.4 (#11442) 2020-02-03 19:00:23 +01:00
Tomasz Drwięga
296fac0fe7 Rough architecutre diagram. (#11396) 2020-02-03 16:29:27 +01:00
Artem Vorotnikov
3c3c19d37c ethjson: impl Copy for hash type wrapper (#11423) 2020-02-03 16:24:20 +01:00
David
7d9ff1d810 Remove dead bootnodes, add new geth bootnodes (#11441) 2020-02-03 14:34:03 +01:00
Martin Holst Swende
9c94dcb8ab goerli: replace foundation bootnode (#11433) 2020-01-31 15:53:02 +01:00
s3krit
9faa823f53 Update publish-docker.sh (#11428)
Add :latest tag to building stable releases
2020-01-30 16:18:36 +01:00
David
5d4993b0f8 Revert "[Trace] Distinguish between create and create2 (#11311)" (#11427)
This reverts commit 87e1080581.
2020-01-30 15:21:29 +01:00
Andreas Fackler
bf44f024c6 Add POSDAO transition and malice report queue. (#11245)
* Add POSDAO transition; call emitInitiateChange.

* Retry failed malice reports.

* Make malice reports with zero gas price.

* Address review comments.

* Extract ReportQueue from ValidatorSafeContract.

* Add shouldValidatorReport to validator set contract.

* Rename queue_report to enqueue_report

* Increment nonce between randomness and POSDAO transactions.

* Refactor the test ValidatorSet contract

* Address review comments, docs

* Update ethcore/res/validator_contract.sol

Co-Authored-By: David <dvdplm@gmail.com>

* Update ethcore/res/validator_contract.sol

Co-Authored-By: David <dvdplm@gmail.com>

Co-authored-by: varasev <33550681+varasev@users.noreply.github.com>
Co-authored-by: David <dvdplm@gmail.com>
2020-01-29 15:08:03 +01:00
s3krit
ceda9d95de update master/nightly version: v2.8.0 (#11419) 2020-01-29 15:07:24 +01:00
/raw PONG _GHMoaCXLT
c7c18d067d ethcore/res: remove morden testnet (#11392)
* ethcore/res: remove morden testnet

* ethcore: replace morden by ropsten and null_morden

* json/spec: rename morden test to null morden

* parity/{cli,params}: remove morden testnet

* ethcore/engines: fix tests

* ethcore/engines: fix test

* ethcore/tests: remove `0x` prefix from registrar

Co-Authored-By: Andronik Ordian <write@reusable.software>

* ethcore/chain: fix tests for ropsten

Co-authored-by: Andronik Ordian <write@reusable.software>
2020-01-28 17:24:36 +01:00
Niklas Adolfsson
1113682555 fix: export hardcoded sync format (#11416)
* fix: export hardcoded sync format

* address grumbles

* make tests compile with rustc_hex 2.0

* fix grumbles: impl LowerHex for encoded Header
2020-01-28 17:08:56 +01:00
Niklas Adolfsson
283d0773fe update hardcoded headers: mainnet and ropsten (#11414)
mainnet: #9361409
ropsten: #7202817
2020-01-28 14:43:16 +01:00
Andreas Fackler
e69539357f AuthorityEngine: Minor cleanups. (#11408) 2020-01-27 14:30:42 +01:00
varasev
6ab7789604 Update POA bootnodes (#11411) 2020-01-27 12:50:04 +01:00
EtherCore Contributor
33bfcec4ab Add EtherCore support (#11402)
* support ethercore mainnet with basic token metrics and ProgPoW support, ecip1017, bomb defuse & istanbul
2020-01-24 23:33:42 -08:00
Niklas Adolfsson
a47a5b1992 verification: fix race same block + misc (#11400)
* ethcore: fix race in verification

* verification: fix some nits

* verification: refactor err type `Kind::create`

* fix: tests

* address grumbles

* address grumbles: don't panic
2020-01-24 16:51:11 +01:00
EtherCore Contributor
108daf1861 Update ProgPoW to 0.9.3 (#11407)
0.9.2 version is deprecated due to efficiency
2020-01-24 15:46:13 +00:00
Talha Cross
b69a33b3ab update classic testnet bootnodes (#11398)
* update classic testnet bootnodes

* Update kotti.json

* Update kotti.json

* Update kotti.json

* Update mordor.json
2020-01-24 15:03:00 +01:00
Niklas Adolfsson
a9d337f7f3 dependencies: bump derive_more v0.99 (#11405)
* engine error: remove faulty/unused `From`

* dependencies: bump `derive_more v0.99`

The primilary motivation behind this is to have hard errors on `From` conversions that are ignored by
duplicated `variants` with the same value type
2020-01-24 14:52:50 +01:00
Niklas Adolfsson
bbc6fb5db6 engine error: remove faulty/unused From (#11404) 2020-01-24 14:52:12 +01:00
Denis S. Soldatov aka General-Beck
e1d06efe60 Switching to stable-track (#11377)
* sccache "stop server" - > "show stats"

* remove testing and beta from update, cli, etc.

* Beta->Nigthly updater

* Beta->Nightly

* ->Nightly and fix

* updater ->Stable

* Testing->Nightly

* Update scripts/gitlab/test-linux.sh

Co-Authored-By: Denis Pisarev <denis.pisarev@parity.io>

* sccache "stop server" - > "show stats"

* remove testing and beta from update, cli, etc.

* Beta->Nigthly updater

* Beta->Nightly

* ->Nightly and fix

* updater ->Stable

* Testing->Nightly

* Update scripts/gitlab/test-linux.sh

Co-Authored-By: Denis Pisarev <denis.pisarev@parity.io>

* Update CHANGELOGs and version

* temporarily allow darwin and windows to be built on any branch

* fix check-benches job

* Revert "temporarily allow darwin and windows to be built on any branch"

This reverts commit 45c72f69e99cbe891f694e528a53eb3c3bd8f331.

* fix check-benches job

* Revert changing track from `nightly` to `stable`

* fix test: rpc_parity_upgrade_ready

* fix tests: rpc_parity_version_info, rpc_parity_releases_info

Co-authored-by: Denis Pisarev <denis.pisarev@parity.io>
Co-authored-by: s3krit <pugh@s3kr.it>
2020-01-22 17:34:34 +01:00
/raw PONG _GHMoaCXLT
171526c1a1 ethcore/res: fix ethereum classic chainspec blake2_f activation block num (#11391) 2020-01-20 16:20:38 +01:00
s3krit
77643c13e8 Update copyright notice 2020 (#11386)
* Update copyright noticed 2020

* Update copyright in two overlooked files
2020-01-17 14:27:28 +01:00
Akihito Nakano
d3b4898339 json-tests: Fix compile error (#11384) 2020-01-16 10:15:22 +01:00
Niklas Adolfsson
a9214081c0 miner: fix deprecation warning Error::description (#11380) 2020-01-14 13:54:43 +01:00
Wei Tang
d8a0d38229 Fix Aztlan hard fork issues (#11347)
* Fix Aztlan hard fork issues

* Fix mordor block number

* Fix classic block number

* Add missing precompiles

* Make EIP-1283's comments reflact the current spec

Co-authored-by: Niklas Adolfsson <niklasadolfsson1@gmail.com>
2020-01-13 22:54:00 +01:00
Andreas Fackler
ea8e7fcf73 authority_round: Fix next_step_time_duration. (#11379)
It's supposed to find the first step at or after `time`.
To compute that step's timestamp, it needs to add the total length
of all steps since the previous transitions to the timestamp of the
previous transition, not to `time`.
2020-01-13 22:42:14 +01:00
Vladimir Komendantskiy
73354d8d93 Set the block gas limit to the value returned by a contract call (#10928)
* Block gas limit contract

Lower gas limit if TxPermission.limitBlockGas.

Call blockGasLimit before every block.

Make the block gas limit contract a separate config option.

Add `info` level logging of block gas limit switching

block-gas-limit subcrate and responses to review comments

simplified call_contract_before

moved block_gas_limit_contract_transitions to AuRa params

removed call_contract_before

Update and fix test_verify_block.

Remove some unused imports and functions.

* Move gas limit override check to verify_block_basic.

Co-authored-by: Andreas Fackler <afck@users.noreply.github.com>
2020-01-13 11:27:03 +01:00
Felix Leupold
87e1080581 [Trace] Distinguish between create and create2 (#11311)
* adding a CreateType to ActionParams

* rename calltype to action type

* comments & line lengths

* rebame ActionParams.call_type

* Making call/create type optional

* Moving strict create/call type into trace package instead of storing loosely typed action type

* fix build

* Deriving ActionType from address_scheme in ext.create

* trigger build

* more detailed comments

* Change actions_type to call in vmtests

* skipping serialization for Option::None and using TryFrom instead of maybe_new

* retrigger build

* trigger build
2020-01-13 11:10:24 +01:00
Andronik Ordian
e95bbe36cb fix cargo audit (#11378)
* Cargo.lock: cargo update -p http

* fetch: cargo upgrade hyper-rustls@0.18 --all
2020-01-10 17:43:49 +01:00
meowsbits
b6afc81d69 Fix esoteric test config variable (#11292)
* Fix esoteric test config variable

EIP155 canonically (on Ethereum mainnet, for which these test were developed)
happens simultaneously with EIP158/161 and other "Spurious Dragon" upgrades.

This test is intended to test the transition from the EIP158/161 era (Spurious Dragon)
to the Byzantium era, with Byzantium changes happening at 5.

* Add missing 'modexp' precompiled contract

modexp was introduced via EIP198 as a part of the Byzantium fork,
which this test should be testing against.
2020-01-10 15:12:32 +01:00
Demi Obenour
b8d9b6f826 Rip out the C and Java bindings (#11346)
* Remove the C and Java bindings

* update Cargo.lock

* [ci]: don't build removed `parity-clib`

* [ci]: fix grumbles

Co-authored-by: Niklas Adolfsson <niklasadolfsson1@gmail.com>
2020-01-07 15:53:02 +00:00
Anton Gavrilov
424b38a8d7 Encapsulate access to the client for secret store (#11232)
* Move all client usages into trusted_client

* Move confirmed hash method to trusted client

* Tree route and logs encapsuluted

* Remove not used method for keys sharing

* NodeKeyPair renamed and moved to trusted client

* Use public key error in trusted client

* Move contract address definition into trusted client

* Block id and number types from ethcore wrapped

* Trusted client renamed to more general Blockchain

* Trusted client implementation moved to parity code

* Move node key pair under secret store feature as well

* Registar crate removed from deps

* Accounts feature removed from secret store

* Fix after merge

* Blockchain renamed to SecretStoreChain

* Module documentations added
2020-01-07 14:37:02 +01:00
David
5bd6b208af Forward-port #11356 (#11359) 2020-01-06 10:46:05 +03:00
Max Johansen
23a23e7a18 Fix error message typo (#11363) 2020-01-02 19:54:29 +01:00
Niklas Adolfsson
9d8e6ee4c9 [util/migration]: remove needless static bounds (#11348) 2019-12-30 14:43:38 -08:00
RJ
280894691e Replace stale boot nodes with latest list (#11351) 2019-12-30 08:01:00 -08:00
David
b9f9d11929 Update to latest kvdb-*: no default column, DBValue is Vec (#11312)
* Only use kvdb "column families"

This PR contains the changes necessary to use the `kvdb-*` crates from https://github.com/paritytech/parity-common/pull/278 (so a synchronized merge is required) which drops support for the old-style rocksdb "default" column to get a smaller and less complex API.

As it stands this PR is working correctly except for secret-store; we need to migrate it to use a new column family.

* Fix secretstore build

* Fix secretstore build: include ethkey when building with the "accounts" feature

* typos

* Restore state test commit

* Override all of parity-common from git

* Be precise about version requirement to migrate secretstore code

* Update ethcore/db/src/db.rs

Co-Authored-By: Niklas Adolfsson <niklasadolfsson1@gmail.com>

* Address review grumbles

* Review grumbles

* Cleanup

Co-authored-by: Niklas Adolfsson <niklasadolfsson1@gmail.com>
2019-12-20 12:27:38 +01:00
Denis Pisarev
860ef19e95 we do not profit from incremental now (#11302) 2019-12-19 16:57:00 +01:00
joshua-mir
f8f22245ec update autoupdate fork blocks for nightly (#11308) 2019-12-19 13:05:04 +01:00
Cho
e14d68e559 Add Nat PMP method to P2P module (#11210)
* Add Nat PMP method to P2P module

* Add test fn

* Use closure

* print richer error messages.

* reformat long code line

* remove closures
2019-12-19 09:01:39 +01:00
Andreas Fackler
2b1d148ceb Add randomness contract support to AuthorityRound. (#10946)
* Add randomness contract support to Authority Round.

Changes have been cherry-picked from poanetwork's aura-pos branch.
Most of the work has been done by @mbr.

* Address review comments for randomness contract.

Co-Authored-By: David <dvdplm@gmail.com>

* Rename revealSecret to revealNumber

* Update Randomness contract bytecode

* Use H256, rename secret to random number.

* Use get_commit_and_cipher

* Clean up Miner::prepare_block.

* Remove is_reveal_phase call.

* Add more comments, require randomness contract map.

* Simplify run_randomness_phase

* Address review comments.

* Remove Client::transact_contract.
2019-12-17 11:34:14 +01:00
Talha Cross
f6909d8243 ethcore/res: activate ecip-1061 on kotti and mordor (#11338)
* ethcore/res: activate ecip-1061 on kotti and mordor

* ethcore/res: update bootnodes for mordor
2019-12-16 07:32:12 +01:00
Andronik Ordian
fd29926a21 tx-q: enable basic verification of local transactions (#11332)
* tx-q: basic verification of local transactions

* miner: basic test for local import

* miner: info log when rejecting local txn

* Hernandofmt

Co-Authored-By: Hernando Castano <HCastano@users.noreply.github.com>

* miner: assert in a test with the concrete error type

* tx-q: info! -> warn! on local tx rejection
2019-12-13 20:25:51 +01:00
Andronik Ordian
63535860bc remove null signatures (#11335)
* tx: clean up legacy eip-86 based null signature

* tx: add a test for null signature rejection

* tx: revert json txn changes

* fix evmbin bench build

* tx: put UNSIGNED_SENDER behind 'test-helpers' feature

* Revert "tx: put UNSIGNED_SENDER behind 'test-helpers' feature"

This reverts commit 1dde47831e4dc5098d064e6022ead43512c31efb.

* tx: add comment for null_sign

* even more cleanup

* Revert "even more cleanup"

This reverts commit be29f032415c53d4d40842f93f1fd1fb6f9cc6bd.
2019-12-13 18:12:22 +01:00
Talha Cross
6e76be7fad ethcore/res: activate agharta on classic 9573000 (#11331) 2019-12-13 12:07:29 +01:00
Andronik Ordian
ae74e8df78 [secretstore] migrate to version 4 (#11322)
* secret-store: migrate the db to version 4

* Fix secretstore build

* Fix secretstore build: include ethkey when building with the "accounts" feature

* fix build

* secret-store: actually use new column

* a bunch of fixes

* last nits

* Apply suggestions from code review

Co-Authored-By: Niklas Adolfsson <niklasadolfsson1@gmail.com>

* secret-store: move db stuff to secret-store as per Anton's request
2019-12-12 13:21:51 +01:00
Wei Tang
4fa78e0537 Enable EIP-2384 for ice age hard fork (#11281)
* Enable EIP-2384 for Istanbul hard fork

* Update bomb delay block number

* Update ropsten.json
2019-12-11 22:32:20 +01:00
Boqin Qin
f1f64930cf Fix atomicity violation in network-devp2p (#11277) 2019-12-10 07:46:32 +01:00
varasev
4c6b282bee Istanbul activation on xDai (#11299) 2019-12-09 14:36:16 +01:00
varasev
07e3a7f3d4 Istanbul activation on POA Core (#11298) 2019-12-09 14:36:06 +01:00
Seun LanLege
64295fde62 Adds support for ipc socket permissions (#11273)
* adds support for ipc socket permissions

* bumped jsonrpc to 14.0.5

* change chmod default to 660, use casting

* set 660 default for --ipc-chmod

Co-Authored-By: Andronik Ordian <write@reusable.software>

* Update parity/cli/mod.rs

Co-Authored-By: David <dvdplm@gmail.com>

* represent octal value as string

* return error for invalid octal values

* fix tests

* check if supplied octal range is within 0 to 7777

* Apply suggestions from code review

Co-Authored-By: Andronik Ordian <write@reusable.software>

* temporary fix

* bump jsonrpc-ipc-server

* fix: update `Cargo.lock`
2019-12-06 16:39:56 +01:00
Lewis Belcher
a6350c65aa Add check for deserialising hex values over U256 limit (#11309)
* Add check for hex values over U256 limit

* Update test in account.rs

Update spec.json field to match test name.

* Update json/src/uint.rs

Co-Authored-By: David <dvdplm@gmail.com>

* Add test for expected deserialisation error

* Update json/src/uint.rs

Co-Authored-By: Niklas Adolfsson <niklasadolfsson1@gmail.com>

* Update json/src/uint.rs

Co-Authored-By: Niklas Adolfsson <niklasadolfsson1@gmail.com>

* Remove superfluous serialisation test

The test `uint_deserialization_error_for_hex_too_large` sufficiently
covers the need for this test.
2019-12-06 14:07:44 +01:00
Andronik Ordian
36c917eb7a validate-chainspecs: check istanbul eips are in the foundation spec (#11305)
* validate-chainspecs: check istanbul eips are in foundation spec

* foundation: specify 1283 disable/reenable transitions
2019-12-06 13:12:08 +01:00
Niklas Adolfsson
cfe57633fa [chainspec]: add eip1344_transition for istanbul (#11301) 2019-12-05 12:58:01 +01:00
Seun LanLege
80a83c95d3 only add transactions to signing-queue if it is enabled (#11272)
* only add transactions to signing-queue if it is enabled

* Update rpc/src/v1/helpers/errors.rs

Co-Authored-By: David <dvdplm@gmail.com>

* use errors::codes::ACCOUNT_LOCKED

* bail early if account isn't unlocked

* use errors::signing

* Update rpc/src/v1/helpers/errors.rs

* Update rpc/src/v1/helpers/errors.rs

* test

* adds cli flag to enable signing queue.

* use helper method siginig_queue_disabled instead of accounts::SignError

* fix typo, use raw i64

* fixed tests
2019-12-05 09:38:14 +01:00
David
f6c3d4c695 Use upstream rocksdb (#11248)
* Use upstream rocksdb

…by way of https://github.com/paritytech/parity-common/pull/257 by @ordian.

* Hint at how `parity db reset` works in the error message

* migration-rocksdb: fix build

* Cargo.toml: use git dependency instead of path

* update to latest kvdb-rocksdb

* fix tests

* saner default for light client

* rename open_db to open_db_light

* update to latest kvdb-rocksdb

* moar update to latest kvdb-rocksdb

* even moar update to latest kvdb-rocksdb

* use kvdb-rocksdb from crates.io

* Update parity/db/rocksdb/helpers.rs

* add docs to memory_budget division
2019-12-03 16:59:11 +01:00
Anton Gavrilov
2895e3b2ab Treat only blocks in queue as synced (#11264) 2019-12-03 15:59:15 +01:00
Sebastian Dechant
f2f4217e3c add support for evan.network chains (#11289)
* add support for evan.network chains

* fix chainspec parsing errror

* add missing core param

* missing colon
2019-12-03 15:00:29 +01:00
David
4c3be46f93 Add benchmarks and tests for RlpNodeCodec decoding (#11287) 2019-12-03 12:30:07 +01:00
Andronik Ordian
71f4f61146 upgrade vergen to 3.0 (#11293)
* version: upgrade vergen to 3.0

* version: use vergen for target triple
2019-12-02 22:18:44 +01:00
Denis Pisarev
a016dc5c6c interruptible test and build jobs (#11294) 2019-12-02 18:16:14 +01:00
varasev
cf2cb58e1d Istanbul HF on POA Sokol (#11282) 2019-11-25 23:10:55 +01:00
Niklas Adolfsson
dcb69ba353 [ethcore]: apply filter when PendingSet::AlwaysQueue in ready_transactions_filtered (#11227)
* [ethcore]: apply filter when `from_queue`

In `ready_transactions_filtered` the filter were never applied when
the options PendingSet::AlwaysQueue` was configured which this fixes

It also adds a two tests for it

* [ethcore test-helpers]: stray printlns

* docs(ethcore filter options): more generic desc

* tests(ethcore miner): simply filter tests

* [ethcore filter_options]: fix nits

* doc: nit

Co-Authored-By: David <dvdplm@gmail.com>

* doc: nit

Co-Authored-By: David <dvdplm@gmail.com>

* doc: nit

Co-Authored-By: David <dvdplm@gmail.com>

* doc: nit

Co-Authored-By: David <dvdplm@gmail.com>

* doc: nit

Co-Authored-By: David <dvdplm@gmail.com>

* doc(miner filter): simplify documentation

* [rpc]: make tests compile
2019-11-25 12:03:50 +01:00
deke997
1b0948d9d1 Update lib.rs (#11286)
typo in stratum trace: pusing to pushing
2019-11-25 11:45:31 +01:00
David
6e34ee6837 Don't prune ancient state when instantiating a Client (#11270) 2019-11-22 12:18:24 +01:00
Marek Kotewicz
1986c4ee79 fixed verify_uncles error type (#11276)
* fixed verify_uncles error type

* cleanup and document fn verify_uncles bounds checking

* find_uncle_headers and find_uncle_hashes take u64 instead of u32 as an input param

* Update ethcore/verification/src/verification.rs

Co-Authored-By: David <dvdplm@gmail.com>
2019-11-22 10:26:50 +01:00
Andronik Ordian
df1c5ac616 ethcore: fix rlp deprecation warnings (#11280) 2019-11-21 17:23:49 +01:00
Jim Posen
c7219aae30 Upgrade trie-db to 0.16.0. (#11274)
* Upgrade trie-db to 0.16.0.

* Respond to review comments.
2019-11-21 11:08:49 +01:00
David
ee01612768 Clarify what first_block None means (#11269) 2019-11-20 11:26:47 +08:00
Marek Kotewicz
e0091c672a removed redundant VMType enum with one variant (#11266) 2019-11-20 11:11:36 +08:00
David
82c3265858 Ensure jsonrpc threading settings are sane (#11267)
* Ensure jsonrpc threading settings are sane

Starting with `jsonrpc` v14, the "server threads" setting is more important than before and the current default of 1 means the https server is effectively single-threaded. This PR proposes a new default of 4 (and ensures that crazy settings like e.g. `0` are bumped to at least `1`).

Also included: some docs, tests and cosmetics.

* Update parity/rpc.rs

Co-Authored-By: Tomasz Drwięga <tomusdrw@users.noreply.github.com>

* Update parity/rpc.rs

Co-Authored-By: Tomasz Drwięga <tomusdrw@users.noreply.github.com>

* Remove (i.e. deprecate) `--jsonrpc-threads` command line option

* Call numbers NUM

* Don't show a default for --jsonrpc-threads (deprecated)

* Show deprecation warning when using `--jsonrpc-threads` or `processing_threads`

* Update parity/deprecated.rs

Co-Authored-By: Niklas Adolfsson <niklasadolfsson1@gmail.com>

* Fix test

* Fix tests for real
2019-11-18 19:40:48 +01:00
David
93f700d961 Return Ok(None) when the registrar contract returns empty slice (#11257) 2019-11-15 14:27:34 +01:00
David
eb565a7e2b Add a benchmark for snapshot::account::to_fat_rlps() (#11185)
* Add a benchmark for snapshot::account::to_fat_rlps()

`to_fat_rlps()` is a hot call during snapshots. I don't think it has a perf problem per se, but better to have benchmark for it.

The data used is a piece of Ropsten data sized to the ~95% percentile of account size on that network.

* Benchmark with more chunks, including mainnet data

* whitespace

* Move `used_code` inside the benchmark iteration

* Revert "Move `used_code` inside the benchmark iteration"

This reverts commit cff33ab30acbd1c009e745f646f1cc655ee01d8c.
2019-11-15 12:27:24 +01:00
David
e194a2c6e3 Fix misc compile warnings (#11258) 2019-11-14 00:01:21 +01:00
Marek Kotewicz
db1ea1dcd8 simplify verification (#11249)
* simplify verifier, remove NoopVerifier

* simplify verifier by removing Verifier trait and its only implementation

* remove unused imports

* fixed verification test failing to compile
2019-11-12 15:05:49 +01:00
joshua-mir
9d55f0b4ab update ropsten forkCanonHash, forkBlock (#11247)
value taken from https://ropsten.etherscan.io/block/6485847
2019-11-11 12:38:32 +01:00
Seun LanLege
887aa62fdb Make InstantSeal Instant again (#11186)
* Make InstantSeal Instant again

* update_sealing if there are transactions in pool after impoerting a block, some line formatting

* Apply suggestions from code review

Co-Authored-By: Tomasz Drwięga <tomusdrw@users.noreply.github.com>

* InstantSeal specific behaviour

* introduce engine.should_reseal_on_update, remove InstantSealService

* remove unused code

* add force param to update_sealing

* better docc

* even better docs

* revert code changes, doc corrections, sort dep

* code optimization

* fix test

* fix bench
2019-11-10 11:41:31 +01:00
Thibaut Sardan
8adde605e9 ropsten #6631425 foundation #8798209 (#11201) 2019-11-05 12:15:24 +01:00
phahulin
5fdf6be798 Update list of bootnodes for xDai chain (#11236)
Reference PR in POA repository: https://github.com/poanetwork/poa-chain-spec/pull/127
2019-11-05 12:07:52 +01:00
Talha Cross
1b4d23fd20 ethcore/res: add mordor testnet configuration (#11200)
* ethcore/res: add mordor testnet configuration

* ethcore/spec: add mordor testnet configuration

* parity/cli: add mordor testnet configuration

* parity/config: fix tests

* ethcore/res: update mordor spec with agharta hardfork block 301243

*  ethcore/res: update kotti with agharta block 1705549

* ethcore/res: update morden with agharta block 5000381

* ethcore/res: multiple prices and activations for mordor testnet

* fix mordor spec json

* fix mordor spec json
2019-11-02 12:26:38 +01:00
Niklas Adolfsson
43dc9af03b [chain specs]: activate Istanbul on mainnet (#11228)
* [chains spec]: activate istanbul at mainnet

* Activate `Block >= 9,069,000` on the Ethereum mainnet
* Enable Blake2 compression function `F` precompile

* [chain specs]: add comments for EIP1108 activation

* [chainspec mainnet]: enable Istanbul transitions

* [chainspec mainnet]: simply configuration
2019-11-01 20:27:14 +01:00
Niklas Adolfsson
13729a0f7f [builtin]: support multiple prices and activations in chain spec (#11039)
* [builtin]: impl new builtin type

Have an enum to deserialize either a builtin of a single price or several prices

* [builtin]: style cleanup

* [builtin]: fix tests

* [builtin]: replace boxing with wrapper enum

* cleanup

* fix: make it backward compatible with old builtin

* fix: update chain specs

* fix: revert use of `type alias` on enum

The CI doesn't use the latest rust.

This commit reverts that change

* fix: builtin tests

* fix: revert use of `type alias` on enum

* [basic-authority]: update test-chainspec

* fix failing tests

* [builtin]: multi-prices add `info field`

It might be hard to read chain specs with several activations points.
This commit introduces a `info` field which may be used to write some
information about the current activation such as:

`Istanbul hardfork EIP-1108` or something similar.

* fix: bad rebase

Co-Authored-By: David <dvdplm@gmail.com>

* fix(grumbles): make it backward compatible

* grumbles: resolve `NOTE`

* revert chain specs changes

* rename test

Co-Authored-By: David <dvdplm@gmail.com>

* [builtin docs]: price -> Fixed price

Co-Authored-By: Andronik Ordian <write@reusable.software>

* [json]: address naming grumbles

InnerPricing -> PricingInner
PriceWithActivationAt -> PricingAt

* docs: revert changes for `AltBn128ConstOperations`

* [json]: usize -> u64

Use explicit types to cope with platform dependent issues for `usize`

* grumble: simplify `spec_backward_compability.json`

* docs: add issue link to `TODO`

* [builtin]: replace `match` with `map`

* [builtin]: add deprecation message `eip1108` params

* nits

* [json spec tests]: fix json indentation

* [json docs]: fix typos

* [json]: `compability layer` + deser to BTreeMap

Previously we had to match `Pricing::Single` and `PricingMulti` which this fixes.
It does by introducing a compability layer and into() implemenentation.

In addition, I switched the deserialization to `BTreeMap` instead of `Vec`.
That changes the format of the chain spec again

* [json]: rename `BuiltinCombat` -> `BuiltinCompat`

* Update ethcore/builtin/src/lib.rs

Co-Authored-By: David <dvdplm@gmail.com>

* [json builtin]: improve docs

Co-Authored-By: David <dvdplm@gmail.com>

* [json builtin]: improve docs

Co-Authored-By: David <dvdplm@gmail.com>

* chore(builtin): sort dependencies

* [json builtin]: deprecate `eip1108` params

* [machine]: add bench for calling builtin contract

* [machine]: reduce calls to `Builtin::is_active`

* [builtin]: fix nits

* [json]: revert breakage of chain specs

* [json builtin]: remove `eip1108` params

* [chain specs]: update to new format

* [machine]: revert changes

* [devp2p]: revert change

* [builtin]: doc nits
2019-10-31 17:09:08 +01:00
Anton Gavrilov
80754c3426 Insert explicit warning into the panic hook (#11225) 2019-10-31 16:17:12 +01:00
David
8c2199dd2a Snapshot restoration overhaul (#11219)
* Comments and todos
Use `snapshot_sync` as logging target

* fix compilation

* More todos, more logs

* Fix picking snapshot peer: prefer the one with the highest block number
More docs, comments, todos

* Adjust WAIT_PEERS_TIMEOUT to be a multiple of MAINTAIN_SYNC_TIMER to try to fix snapshot startup problems
Docs, todos, comments

* Tabs

* Formatting

* Don't build new rlp::EMPTY_LIST_RLP instances

* Dial down debug logging

* Don't warn about missing hashes in the manifest: it's normal
Log client version on peer connect

* Cleanup

* Do not skip snapshots further away than 30k block from the highest block seen

Currently we look for peers that seed snapshots that are close to the highest block seen on the network (where "close" means withing 30k blocks). When a node starts up we wait for some time (5sec, increased here to 10sec) to let peers connect and if we have found a suitable peer to sync a snapshot from at the end of that delay, we start the download; if none is found and --warp-barrier is used we stall, otherwise we start a slow-sync.
When looking for a suitable snapshot, we use the highest block seen on the network to check if a peer has a snapshot that is within 30k blocks of that highest block number. This means that in a situation where all available snapshots are older than that, we will often fail to start a snapshot at all. What's worse is that the longer we delay starting a snapshot sync (to let more peers connect, in the hope of finding a good snapshot), the more likely we are to have seen a high block and thus the more likely we become to accept a snapshot.
This commit removes this comparison with the highest blocknumber criteria entirely and picks the best snapshot we find in 10sec.

* lockfile

* Add a `ChunkType::Dupe` variant so that we do not disconnect a peer if they happen to send us a duplicate chunk (just ignore the chunk and keep going)
Resolve some documentation todos, add more

* tweak log message

* Don't warp sync twice
Check if our own block is beyond the given warp barrier (can happen after we've completed a warp sync but are not quite yet synced up to the tip) and if so, don't sync.
More docs, resolve todos.
Dial down some `sync` debug level logging to trace

* Avoid iterating over all snapshot block/state hashes to find the next work item

Use a HashSet instead of a Vec and remove items from the set as chunks are processed. Calculate and store the total number of chunks in the `Snapshot`  struct instead of counting pending chunks each time.

* Address review grumbles

* Log correct number of bytes written to disk

* Revert ChunkType::Dup change

* whitespace grumble

* Cleanup debugging code

* Fix docs

* Fix import and a typo

* Fix test impl

* Use `indexmap::IndexSet` to ensure chunk hashes are accessed in order

* Revert increased SNAPSHOT_MANIFEST_TIMEOUT: 5sec should be enough
2019-10-31 16:07:21 +01:00
Louis Pérez
6b17e321df Fix docker centos build (#11226)
- Update shell script to build docker centos
  image with the new path.
  - Update REAMDE.md with build instructions.

Closes [#11224](https://github.com/paritytech/parity-ethereum/issues/11224)
2019-10-31 14:59:51 +01:00
Denis Pisarev
f743829759 retry on gitlab system failures (#11222) 2019-10-30 19:16:18 +01:00
Jonathan Brown
29c364be43 Update bootnodes. (#11203) 2019-10-29 12:43:46 +01:00
Rakan Alhneiti
6993ec9531 Use provided usd-per-eth value if an endpoint is specified (#11209)
* Fix `invalid transaction price` error message

* Setup Calibrated GasPriceConfig when usd-per-eth is an endpoint

The change will try to check if the specified value is an endpoint.
If the value of `auto` is specified, the default endpoint URL will be used
otherwise, the user-provided value will be taken as-is for an endpoint.

* Use if-let and check for usd-per-eth arg:

1. auto = use etherscan
2. value = use fixed pricer
3. endpoint = use the provided endpoint as-is

* Fix typo in to_pricce error message

* Correct whitespace indentation

* Use arg_usd_per_eth directly
2019-10-29 12:18:30 +01:00
David
0d3423cbe0 Use a lock instead of atomics for snapshot Progress (#11197)
* WIP. Typos and logging.

* Format todos

* Pause pruning while a snapshot is under way
Logs, docs and todos

* Allocate memory for the full chunk

* Name snapshotting threads

* Ensure `taking_snapshot` is set to false whenever and however `take_snapshot`returns
Rename `take_at` to `request_snapshot_at`
Cleanup

* Let "in_progress" deletion fail
Fix tests

* Just use an atomic

* Review grumbles

* Finish the sentence

* Resolve a few todos and clarify comments.

* Calculate progress rate since last update

* Lockfile

* Fix tests

* typo

* Reinstate default snapshotting frequency
Cut down on the logging noise

* Use a lock instead of atomics for snapshot Progress

* Update ethcore/types/src/snapshot.rs

Co-Authored-By: Andronik Ordian <write@reusable.software>

* Avoid truncating cast
Cleanup
2019-10-28 18:24:45 +01:00
Niklas Adolfsson
293e06e0f4 [informant]: MillisecondDuration -> as_millis() (#11211)
* [informant]: `MillisecondDuration` -> `as_millis()`

This commit removes the trait `MillisecondDuration` and
replaces it with `Duration::as_millis` instead

* [grumble]: extract `elapsed()` to variable
2019-10-28 15:03:28 +01:00
Vladimir Komendantskiy
e0e79fdee0 Step duration map configuration parameter ported from the POA Network fork (#10902)
* step duration map configuration parameter ported from POA Network fork

* step duration map refactoring

* added a test of step duration change

* refactoring of vector search; return Err instead of panicking

* removed dead code and the Config engine error variant

* doc correction

* converted triples to struct StepDurationInfo
2019-10-28 14:39:18 +01:00
David
2c97bcc1a4 Upgrade jsonrpc to latest (#11206) 2019-10-26 11:26:04 +02:00
Niklas Adolfsson
c4ca84cdf3 [export hardcoded sync]: use debug for H256 (#11204)
Fixes #11202

The `Display` implementation for `SpecHardcodedSync` used the `Display` implementation of
`ethereum_types::H256` which doesn't show the full hash which this fixes.
2019-10-25 18:12:14 +02:00
David
ffeaee778c Pause pruning while snapshotting (#11178)
* WIP. Typos and logging.

* Format todos

* Pause pruning while a snapshot is under way
Logs, docs and todos

* Allocate memory for the full chunk

* Name snapshotting threads

* Ensure `taking_snapshot` is set to false whenever and however `take_snapshot`returns
Rename `take_at` to `request_snapshot_at`
Cleanup

* Let "in_progress" deletion fail
Fix tests

* Just use an atomic

* Review grumbles

* Finish the sentence

* Resolve a few todos and clarify comments.

* Calculate progress rate since last update

* Lockfile

* Fix tests

* typo

* Reinstate default snapshotting frequency
Cut down on the logging noise

* address grumble

* Log memory use with `journal_size()` and explain why.
2019-10-24 16:46:32 +02:00
Fabio Lama
acf7c48d7e Type annotation for next_key() matching of json filter options (#11192)
* type annotation for next_key matching of json filter options

* rpc tests for pending transactions

* mention git submodules in the readme
2019-10-23 14:20:47 +02:00
Anton Gavrilov
834585d61b Crypto primitives removed from ethkey (#11174)
* Crypto utils removed from ethkey

* Fix ethkey lib

* Switch ethsore to new crypto

* Accounts crate fixed

* Secret store crate switched to new crypto

* Ethcore builtin fixed

* Accounts crate fixed

* Ethcore crate fixed

* Util network fixed

* Util network-devp2p fixed

* Private tx fixed

* Ethcore sync fixed

* Secret store fixed

* Rpc fixed

* Parity fixed

* Ethkey cli fixed

* Local store fixed

* Ethcore blockchain fixed

* Cargo.lock pushed; doc comment added for reversed nonce

* Ethstore tests fixed

* Ethstore cli fixed

* Miner fixed

* Snapshot tests are fixed

* Single brackets removed

* Machine fixed

* Verification fixed

* Executive state fixed

* More single brackets removed

* Update version of parity-crypto

* Use published version 0.4.2 of parity-crypto

* New test in tx_filter fixed
2019-10-23 13:03:46 +02:00
Tino Breddin
81ca599f2a Made ecrecover implementation trait public (#11188)
* Made ecrecover Implementation trait public

* Make all builtin contract types public

This ensure the API is consistent in terms of visibility.
2019-10-22 22:03:52 +02:00
Andreas Fackler
20bd1fa789 Remove unused macro_use. (#11191) 2019-10-22 15:59:58 +02:00
Niklas Adolfsson
6960d35abb [dependencies]: jsonrpc 14.0.1 (#11183)
Closing #11169
2019-10-19 14:14:25 +02:00
Niklas Adolfsson
c8b4373e13 [receipt]: add sender & receiver to RichReceipts (#11179)
* [receipts]: add `to` & `from` to `RichReceipts`

* [rpc]: add test for `pending_receipt`

* docs(common_types/receipt): add note Option field
2019-10-18 18:12:02 +02:00
Niklas Adolfsson
2d2513b35a [dependencies] bump rand 0.7 (#11022)
* network-devp2p: bump rand `0.7`

* updater: bump rand `0.7`

* hash-fetch: bump rand `0.7`

* ethcore-sync: bump rand `0.7`

* rpc: dont work yet

* [private-tx] remove unused rand

* [ethcore-snapshot] bump rand 0.7

* [engine clique]: bump rand 0.7

* [engine authority-round]: remove rand

* [ethcore-blockchain]: bump rand 0.7

* [ethcore]: bump rand 0.7

* [ethcore-light]: bump rand 0.7

* [ethstore]: bump rand 0.7

* Fix for rand usage in rpc

* [rpc]: fix test build

* [ethcore-sync]: fix test build

* [snapshot tests]: rand 0.7

* [ethkey]: bump rand 0.7

* [rpc]: resolve TODO incompatible `rand versions`

* [ethkey] use `rust-secp256k1` master branch

* fix(bad merge): ethcoore-light remove itertools

* [rpc tests]: revert rpc test changes in #11139

`#11139` makes use a different `RNG/seed`, not `H64::random_using(&mut self.rand)`

This commit reverts the changed tests (the generated id by `Subscribers::next_id`)

* [ethkey/random]: resolve introduced `TODO`
2019-10-18 15:12:16 +02:00
Andronik Ordian
3696f68626 [ethcore/builtin]: do not panic in blake2pricer on short input (#11180)
* [ethcore/builtin]: do not panic in blake2pricer on short input

* [ethcore/builtin]: add a test for blake2pricer
2019-10-18 15:10:00 +02:00
Andreas Fackler
ff697b64b3 TxPermissions ver 3: gas price & data (#11170) 2019-10-18 12:12:06 +02:00
Niklas Adolfsson
9c8b7c23d1 [ethash] chainspec validate ecip1017EraRounds non-zero (#11123)
* [ethash]: validate `ecip1017EraRounds` non-zero

When `ecip1017EraRounds` ethash will divide by zero.

This commit ensures that the chainspec deserialization fails and
gives a better error message.

* [ecip1017_eras_block_reward]: document behaviour

* nit

* docs(ethash ecip1071): resolve `TODO`
2019-10-17 14:02:41 +02:00
Boqin Qin
f99819d326 util Host: fix a double Read Lock bug in fn Host::session_readable() (#11175) 2019-10-17 10:59:37 +02:00
Boqin Qin
6b57429d72 ethcore client: fix a double Read Lock bug in fn Client::logs() (#11172) 2019-10-16 12:03:48 +02:00
Andreas Fackler
f59ed47b1b Aura: Report malice on sibling blocks from the same validator (#11160)
* Aura: Report malice on sibling blocks from the same validator

This was originally written by @vkomenda, then squashed for
easier rebasing on master. Cleanup of `received_step_hashes`
was moved to `verify_block_family`, since `on_prepare_block`
does not exist on master, and a unit test was added.
Original commit messages:

added the map of received block header hashes

do not return an error and remove older received block records

optimised older record removal

block hash comparison optimisation and the weak client ref fix

SIBLING_MALICE_DETECTION_PERIOD constant

review comments

using step numbers instead of block numbers

* Add docs; use map_or.

* Update step hash record comment.

Co-Authored-By: David <dvdplm@gmail.com>

* Remove hash records after 2 rounds instead of 100 steps.
2019-10-14 12:56:38 +02:00
David
aefa8d5f59 Change how RPCs eth_call and eth_estimateGas handle "Pending" (#11127)
* Change how RPCs eth_call and eth_estimateGas handle "Pending"

Before this PR we would return a rather confusing error when calling `eth_call` and `eth_estimateGas` with `"Pending"`, e.g.:

```
{"jsonrpc":"2.0","error":{"code":-32000,"message":"This request is not supported because your node is running with state pruning. Run with --pruning=archive."},"id":"e237678f6648ed12ff05a74933d06d17"}
```

In reality what is going on is that users often use `"Pending"` when they really mean `"Latest"` (e.g. MyCrypto…) and when the block in question is not actually pending. This changes our behaviour for these two RPC calls to fall back to `"Latest"` when the query with `"Pending"` fails.
Note that we already behave this way for many other RPCs:

	- eth_call (after this PR)
	- eth_estimateGas (after this PR)
	- eth_getBalance
	- eth_getCode
	- eth_getStorageAt

Closes https://github.com/paritytech/parity-ethereum/issues/10096

* Fetch jsonrpc from git

* No real need to wait for new jsonrpc

* Add tests for calling eth_call/eth_estimateGas with "Pending"

* Fix a todo, add another

* Change client.latest_state to return the best header as well so we avoid potential data races and do less work

* Impl review suggestions

* Update rpc/src/v1/impls/eth.rs

Co-Authored-By: Niklas Adolfsson <niklasadolfsson1@gmail.com>

* Review grumbles

* update docs
2019-10-11 15:54:36 +02:00
David
f3015ce0c6 Cleanup stratum a bit (#11161)
* Cleanup stratum a bit

Salvage some code from https://github.com/paritytech/parity-ethereum/pull/10884 + some cleanup and typos.

* HashSet::new does not allocate before first insert

* Remove unused method push_work()
2019-10-11 11:52:09 +02:00
Niklas Adolfsson
4f25d43516 [keccak-hasher]: rust2018 (#11163) 2019-10-10 19:43:33 +02:00
David
9d313e31e6 Upgrade to jsonrpc v14 (#11151)
* Upgrade to jsonrpc v14

Contains https://github.com/paritytech/jsonrpc/pull/495 with good bugfixes to resource usage.

* Bump tokio & futures.

* Bump even further.

* Upgrade tokio to 0.1.22

* Partially revert "Bump tokio & futures."

This reverts commit 100907eb91907aa124d856d52374637256118e86.
2019-10-10 15:56:22 +01:00
Svyatoslav Nikolsky
330cdc1a4d Secret store: fix Instant::now() related race in net_keep_alive (#11155)
* try Instant fix in SS

* proper fix + add comment

* fix compilation
2019-10-10 11:19:23 +03:00
Vladimir Komendantskiy
93fbbb9aaf RPC method for clearing the engine signer (#10920)
* RPC method parity_clearEngineSigner

Add RPC method parity_clearEngineSigner
Fixes https://github.com/poanetwork/parity-ethereum/issues/113

* corrected the return type of clear_author

* review comment responses and a rebase fix

* removed a spurrious warning

* moved clear_signer functionality to set_signer

* Merge clear_author into MinerService::set_author.

* Add trace logs to Clique::set_signer.

* Clique: Don't lock signer multiple times.
2019-10-09 14:42:51 +02:00
Andy Weiss
a404dd5415 Use TryFrom instead of From+panic for Builtin (#11140)
* Use TryFrom instead of From+panic for Builtin

* fix tests

* change expect text to be more descriptive

* fix formatting
2019-10-09 14:42:03 +02:00
Denis S. Soldatov aka General-Beck
11c447dfbe Fix sccache statistics (#11145)
* Fix sccache statictics

* warning update for non x86_64 architectures

* sccache -s -> sccache --show-stats
2019-10-08 21:58:34 +03:00
Anton Gavrilov
f48780c29b Update ethereum types to 0.8.0 version (#11139)
* Ethereum types updated to 0.8 version

* Fix for rand usage in rpc

* Cargo lock fixed after rebase

* TODO added
2019-10-08 14:18:44 +02:00
Niklas Adolfsson
35513b14de [json]: add docs to hardfork specification (#11138)
* [json]: add docs to `hardfork specification`

* address grumbles
2019-10-07 15:25:03 +02:00
Toby Dimmick
63c7ae9a89 ServiceTransactionChecker::refresh_cache: allow registrar unavailable (#11126)
Return `Ok(false)` instead of `Err(...)`. Fixes regression from PR #11110.
2019-10-07 12:04:41 +02:00
David
b31bff5ce2 Fix some random typos, formatting/whitespace (#11128)
* Fix some random typos, formatting/whitespace

* Remove unecessary lifetime annotations

* Revert "Remove unecessary lifetime annotations"

This reverts commit 2357ccc3743a234e3181a79aff825370461543bf.
2019-10-04 19:54:28 +02:00
Juan Aguilar
4fd1ec643f Refactor parity_listStorageKeys with count parameter optional (#11124) 2019-10-04 14:38:57 +02:00
Patrick Tescher
79aeb95272 Make EIP712Domain Fields Optional (#11103)
According to
https://github.com/ethereum/EIPs/blob/master/EIPS/eip-712.md#definition-
of-domainseparator “Protocol designers only need to include the fields
that make sense for their signing domain.”
2019-10-03 22:20:20 +02:00
David
ca329078f5 EIP-712: bump version in prep for publishing (#11106)
* version 0.1.1

* lock file
2019-10-03 19:34:06 +02:00
Juan Aguilar
acc5bdfc35 move StateResult to common-types (#11121) 2019-10-03 16:52:29 +02:00
Toby Dimmick
79a17dedd0 Deduplicate registrar contract & calling logic (#11110)
* Rename RegistryInfo -> RegistryInfoDeprecated

* Add BlockId parameter to Registrar::get_address and RegistrarClient::call_contract

* Remove RegistrarClient::Call (use async for now); add RegistrarClient::get_address

* Remove Registrar type in favour of naked trait

* Use CallContract trait bound instead of separate call_contract method

* Make RegistrarClient::get_address and URLHint::resolve synchronous

* RegistrarClient::get_address: return check if address is zero

* Modify RegistryInfo::registry_address to take &str

* return Result from RegistryInfo::registry_address

* Replace RegistryInfo with RegistrarClient

- Modifed RegistrarClient::registrar_address to return Option
- Removed BlockChainClient::registrar_address

* Fix other build configs

* Fix unit test builds

* Remove local RegistrarClient type from run::execute_impl

* Remove registrar.json from ethcore

* Formatting/line breaks

* Update RegistrarClient docs, remove explicit lifetime

* Weak ref to ethcore client from hash fetch client

* Fix unit tests
2019-10-03 15:15:25 +02:00
Juan Aguilar
0c0f965354 Refactor return type of BlockChainClient::code #7098 (#11102)
* fix: refactor return type of `BlockChainClient::code`

* Add TODO move to `common-types`

Co-Authored-By: David <dvdplm@gmail.com>
2019-10-03 13:21:26 +02:00
Denis S. Soldatov aka General-Beck
0bd2979c04 Switching sccache from local to Redis (#10971)
* Switching cache from local to Radis

* sccache -s won't work. All the images are taken from own registry

* new images addresses

* statisticss after stop sccache server
sccache CC&CXX
2019-10-02 23:01:20 +03:00
Seun LanLege
f24bff5998 SIMD Implementation for EIP-152 (#11056)
* simd implementation

* adds benchmarks

* Update util/EIP-152/src/avx.rs

Co-Authored-By: David <dvdplm@gmail.com>

* enable avx 😅

* better benchmark, docs

* rename avx to avx2, compile on android

* fix android again

* remove ifunc, code formatting

* license

* nits

* docs, nits

* fix test
2019-10-02 14:32:21 +01:00
Juan Aguilar
ad633de6d9 Fix deprecated trait objects without an explicit dyn (#11112) 2019-10-02 10:55:31 +02:00
Andronik Ordian
d243b15ae0 [spec] fix rinkeby spec (#11108) 2019-10-02 10:52:25 +02:00
David
fcd042a487 Update to latest jsonrpc (#11111)
* Update to latest jsonrpc

* Fix percent_encoding not re-exported from url anymore
2019-10-02 10:25:51 +02:00
Denis Pisarev
1b1b44bb20 use images from our registry (#11105) 2019-10-01 13:58:12 +02:00
Seun LanLege
8471b91002 Correct EIP-712 encoding (#11092)
* support encoding custom array types as fields

* new line

* removed expect

* Update util/EIP-712/src/encode.rs

Co-Authored-By: Andronik Ordian <write@reusable.software>

* bump lunarity

* update cargo lock

* nits

* nits
2019-09-30 22:16:30 +01:00
Andronik Ordian
4979c62bb5 [CI] check evmbin build (#11096) 2019-09-27 23:29:25 +02:00
David
2b8b8851ab Update kvdb, kvdb-rocksdb and h2 (#11091)
* Update a few dependencies

Updates two dependencies: `kvdb-rocksdb` and `h2`. Brings in `parking_lot 0.9` which is unintended but possibly fine.

* Bump parking_lot to 0.9
Bump kvdb-memorydb to 0.2 (from git atm)

* New kvdb-memorydb is not breaking

* Remove [patch]
2019-09-27 23:29:14 +02:00
David Forstenlechner
7c5fd042f3 [client]: Fix for incorrectly dropped consensus messages (#11082) (#11086)
Fixes a race condition causing the currently_queued counter to underflow and consensus messages getting dropped incorrectly as a consequence.
2019-09-25 19:45:49 +02:00
David
d9201aa6f2 Update JSON tests to d4f86ecf4aa7c (#11054)
* new ethereum consensus tests, #10908

* Update JSON tests to 725dbc73a

This PR reverts the controversial changes of the previous PR and skips the failing tests.

Maybe I misunderstand the suggested workaround of putting the fix under `#[cfg(test)]` but it seems odd to run different code in production than we run in tests. Instead here I suggest we skip the failing tests with the argument that we do not wish to fix this issue (at least not at this time) because it does not affect us. If I am wrong, and I likely am, I look forward to hearing why and what a better approach to updating the state tests is.

Branched off https://github.com/paritytech/parity-ethereum/pull/10923

ref #10908

* Update json test commit to 1dc9d20e97165708f7db0bbf2d1a87a6b4285827

* Fail with error message

* Handle missing r, s, v params in json tests
Light cleanup of json test runner

* Include the path to the test file

* Handle new `postState` format: string or map
Sort out tests
Missing docs

* WIP

* Include test-helpers from ethjson

* Sort out new paths

* Remove dead code

* Fix warnings stemming from code called only from macros
Skip failing tests in stRevert/ and stTransactionTest/ (too course a filter!)
Docs and light touch refactorings for readability

* Skip all failing tests

* Document the single-test-skipping madness

* Update tests to latest commit on the `develop` branch

* Rename test skipping types to reflect actual purpose

* Switch to skipping individual tests in currents.json
Add some logging to help debug skipping

* Fix rpc test by curve fitting to new json test source file

* Add refs to all issues for fixing failing&skipped json tests

* Sort out the need for Clone for tests

* [json-tests] populate state from genesis pod state (#11083)

* [json-tests] populate state from genesis pod state

* [json-tests] #11075 is resolved as well

* [json-tests] #11076 hopefully too

* [json-tests] #11077 🎉

* [json-tests] fix trailing comma

* Update ethcore/src/json_tests/chain.rs

Co-Authored-By: Andronik Ordian <write@reusable.software>

* Add issue numbers to TODOs

* Apply @ordians fix for wrong state_root

* Warn on invalid RLP

* Remove the `ci-skip-tests` feature
2019-09-25 10:02:04 +02:00
Cho
7f5ac8ba7a fix(network): typo (#11088) 2019-09-25 09:54:47 +02:00
Andronik Ordian
fc22c58408 [ethash] remove manual unrolling (#11069)
* [ethash] remove unroll in calculate_dag_item

* [ethash] add keccak bench

* [ethash] remove unroll! completely

* [ethash] specify required-features for benches

* [ethcore/verification] specify required-features for benches

* [CI] simplify cargo-check-benches step
2019-09-24 11:45:28 +02:00
Talha Cross
2627288311 ethcore/res: activate Istanbul on Ropsten, Görli, Rinkeby, Kovan (#11068)
* ethcore/res: activate Istanbul on Ropsten block 6485846

* ethcore/res: activate Istanbul on Goerli block 1561651

* ethcore/res: use hex values for Istanbul specs

* ethcore/res: fix trailing comma

* ethcore/res: be pedantic about EIP-1283 in Petersburg and Istanbul test specs

* ethcore/res: activate Istanbul on Rinkeby block 5435345

* ethcore/res: activate Istanbul on Kovan block 14111141

* ethcore/res: fix kovan istanbul number to 0xd751a5
2019-09-20 15:53:35 +08:00
Niklas Adolfsson
19184e8529 [sync]: rust 2018 (#11067)
* [sync]: rust 2018

* fix(grumble): explicit use for RlpResponseResult

* fix(grumble): types -> common_types

* fix: bad rebase

* fix: wildcard import

* fix(grumble): rename crate hash to `keccak_hash`
2019-09-19 13:12:07 +02:00
Niklas Adolfsson
b6415c6196 [ethcore]: move client test types to test-helpers (#11062) 2019-09-17 15:42:22 +01:00
Niklas Adolfsson
acad59b300 [sync]: remove unused dependencies or make dev (#11061) 2019-09-16 21:56:53 +02:00
Niklas Adolfsson
0051c26acf [ethcore]: reduce re-exports (#11059)
* [ethcore]: reduce re-exports

Last piece of refactoring to close #10130 after work done by @dvdplm et. al

After this PR, we have the following re-exports from other crates in `non-testbuilds`:
- evm::VMType (client)
- ethcore_miner::local_accounts::LocalAccounts (miner)
- ethcore_miner::pool::PendingOrdering (miner)

I think the miner re-exports make sense (closely tied to the module) and `VMType` (related to module but not closely)

* fix(grumbles): remove re-export `VerifierType`
2019-09-16 17:12:21 +02:00
Andronik Ordian
bceb1d5691 [evmbin] fix time formatting (#11060) 2019-09-16 15:14:34 +02:00
joshua-mir
61a7c30ed5 Update hardcoded headers (foundation, classic, kovan, xdai, ewc, ...) (#11053)
* update hardcoded headers for foundation

* update classic headers

* update kovan headers

* formatting and xdai hardcoded headers

* ewc headers and formatting

* volta formatting and headers

* headers for poacore and sokol

* indentation

* indentation volta

* remove unnecessary space

Co-Authored-By: Niklas Adolfsson <niklasadolfsson1@gmail.com>

* remove unnecessary space

Co-Authored-By: Niklas Adolfsson <niklasadolfsson1@gmail.com>

* remove random typo haha
2019-09-16 12:25:52 +02:00
Andronik Ordian
0659cb8592 cargo update -p eth-secp256k1 (#11052) 2019-09-13 19:48:51 +02:00
Niklas Adolfsson
a665116eb1 ethcore: remove test-helper feat from build (#11047) 2019-09-13 11:13:41 +02:00
David
0bd2348ca1 Include test-helpers from ethjson (#11045)
Closes https://github.com/paritytech/parity-ethereum/issues/11044
2019-09-13 09:38:24 +02:00
Niklas Adolfsson
eb81168674 [ethcore]: cleanup dependencies (#11043) 2019-09-12 22:56:59 +02:00
Andronik Ordian
ad9a53f486 add more tx tests (#11038) 2019-09-12 16:38:25 +02:00
Nicolas Gotchac
5e2def1b23 Fix parallel transactions race-condition (#10995)
* WiP : clear pending txs cache & tick in Miner

* Fixed pending transactions

* Revert debugging code

* Add ToDo comment

* Remove commented-out code

* Reverse LTO setting

* WiP

* Try to seal a new block if there are pending transactions

* Try resealing only for internal imports

* Remove logging

* Use AtomicU64 instead of Mutex<BlockNumber>

* Remove TxQueue cache clear // Update AtomicUint logic

* Update comments in Miner

* Revert import of `parking_lot`

* Update `transaction-pool` dependency

* Call directly `update_sealing`

* Call `update_sealing` directly
2019-09-11 18:44:31 +02:00
Niklas Adolfsson
240ef46c72 [ethcore]: make it compile without test-helpers feature (#11036)
* [ethcore]: rustc_hex not longer `optional`

Used by `ethcore/client/client` when importing blocks

* [ethcore-types]: `DataFormat` add docs + tabify

* fix(grumbles): bump `rustc-hex = 2`
2019-09-11 17:35:50 +02:00
David
f4d14e271f Benchmarks for block verification (#11035)
* WIP

* wip

* Benchmarks for block verification

Uses real blocks from mainnet to benchmark the `verify_*` family of methods in the `verification` module.

Also exposes the `TestBlockChain` in a test helper.

* Cleanup, fix CI

* Bash syntax error

* One more try

* Fix review grumbles
	Revert unwanted changes
	Tweak CI benchmark checks
2019-09-11 14:15:19 +02:00
David
48629c2bd4 Move snapshot related traits to their proper place (#11012)
* Move snapshot to own crate
Sort out imports

* WIP cargo toml

* Make snapshotting generic over the client
Sort out tests

* Sort out types from blockchain and client

* Sort out sync

* Sort out imports and generics

* Sort out main binary

* Fix sync test-helpers

* Sort out import for secret-store

* Sort out more imports

* Fix easy todos

* cleanup

* Move SnapshotClient and SnapshotWriter to their proper places
Sort out the circular dependency between snapshot and ethcore by moving all snapshot tests to own crate, snapshot-tests

* cleanup

* Cleanup

* fix merge issues

* Update ethcore/snapshot/snapshot-tests/Cargo.toml

Co-Authored-By: Andronik Ordian <write@reusable.software>

* Sort out botched merge

* Ensure snapshot-tests run

* Docs

* Fix grumbles
2019-09-10 22:44:33 +02:00
Niklas Adolfsson
d311bebaee cleanup json crate (#11027)
* [json]: cleanup

write something here....

* nit: commit new/moved files

* nit: remove needless features

* nits

* fix(grumbles): use explicit import `DifficultyTest`

* fix(grumbles): remove needless type hints

* fix(grumble): docs `from -> used by`

Co-Authored-By: David <dvdplm@gmail.com>

* fix(grumbles): use explicit `imports`

* fix(grumble): merge `tx` and `tx_with_signing_info`

* fix(grumbles): resolve introduced `TODO's`
2019-09-10 20:46:50 +02:00
Andronik Ordian
fc9a2933af [spec] add istanbul test spec (#11033)
* [spec] add istanbul test spec (wip)

* [spec] fix trailing comma

* [spec] add blake2_f precompiled

* [spec] specify eip1283ReenableTransition

* [spec] update istanbul spec to new blake2 pricing spec
2019-09-10 18:28:21 +02:00
Andronik Ordian
feb87c901e [json-spec] make blake2 pricing spec more readable (#11034)
* [json-spec] make blake2 pricing spec more readable

* [ethcore] fix compilation
2019-09-10 17:52:04 +02:00
David
d8d7abc848 Add blake2_f precompile (#11017)
* feat: implement eip1108

* doc nit: price per point pair

Co-Authored-By: David <dvdplm@gmail.com>

* fix: test-build

* fix: update chain specs

* fix: basic_authority.json chain spec

* fix: change `eip_transition == 0x7fffffffffffff`

* Merge na-eip1108

* Pre-compile plumbing

* Use type alias instead of struct

* Extract the data from incoming EVM call and forward it to blake2_f

* Fetch parity-common from git for now

* Fix broken cost impl
Add remaining test vectors

* cleanup

* Trailing comma in json spec

* Update ethcore/builtin/src/lib.rs

Co-Authored-By: Andronik Ordian <write@reusable.software>

* Update ethcore/builtin/src/lib.rs

Co-Authored-By: Andronik Ordian <write@reusable.software>

* Rename pricer to be Blake2-specific
Return a cost of u32::MAX if conversion fails
Fix docs and todos

* Fix error handling in cost()

* fix chainspec

* EIP-152 crate

* Update ethcore/builtin/src/lib.rs

Co-Authored-By: Seun LanLege <seunlanlege@gmail.com>

* Address grumbles

* Update ethcore/builtin/src/lib.rs

Co-Authored-By: Niklas Adolfsson <niklasadolfsson1@gmail.com>

* Switch tests to use hex!

* remove parity-crypto from git

* Sort out the SIGMA

* Prefer arrays to vecs

* Update util/EIP-152/src/lib.rs

Co-Authored-By: Niklas Adolfsson <niklasadolfsson1@gmail.com>

* Update json/src/spec/builtin.rs

Co-Authored-By: Andronik Ordian <write@reusable.software>

* Update json/src/spec/builtin.rs

Co-Authored-By: Andronik Ordian <write@reusable.software>

* Review feedback

* Do not change chainspecs yet

* Do not assume endianess: precompile output is LE
2019-09-10 00:26:45 +02:00
Seun LanLege
80f0e4b58f Add new line after writing block to hex file. (#10984)
* add new line after writing block to hex file.

* refactor for testability

* correct import

* better error reporting, code formatting

* multiline imports

* docs

* better docs, move type to common types, merge ImportBlocks and ExportBlocks

* tabs over spaces

* correct test imports

* Apply suggestions from code review

Co-Authored-By: David <dvdplm@gmail.com>

* correct typo

* fixed test import
2019-09-09 13:46:05 +02:00
Niklas Adolfsson
53e590f54b fix: remove unused error-chain (#11028) 2019-09-09 09:55:06 +02:00
Niklas Adolfsson
a4969ca498 fix: remove needless use of itertools (#11029)
* Remove needless use of `itertools` in `ethcore-light`
* Replace `itertools::repeat::call` with `std::iter::repeat_with`
2019-09-08 14:30:54 +02:00
Toby Dimmick
680807e601 Convert std::test benchmarks to use Criterion (#10999)
* Convert std::test benches to Criterion

* Required feature for ethash benches

* gitlab-ci: Check all bench targets

* check ethash benches

* evmbin/benches/mod.rs: Update bench sample command

Co-Authored-By: Andronik Ordian <write@reusable.software>

* Upgrade to criterion 0.3
2019-09-05 19:28:01 +02:00
Atkins
a89bbfe366 Fix block detail updating (#11015)
* Add finality parameter to `null engine`

* Add testcase for finalization marking in `ethcore` client

* Add double cache read for db

* Prevent lost update of block details

* Read with pending update for block details in batch
2019-09-05 19:27:05 +02:00
Andronik Ordian
44c00b1f74 [trace] introduce trace failed to Ext (#11019)
* [trace] add trace_failed to Ext, manage stack of trace data

* [evm] call trace_failed only if self.do_trace

* [evm] add a comment about do_trace set to true

* [vm] improve the doc in trace_prepare_execute

* [trace] add the bounds check back
2019-09-05 16:11:51 +02:00
Talha Cross
11d3cb3f08 cli: update usage and version headers (#10924) 2019-09-05 16:07:26 +02:00
Niklas Adolfsson
8c286125e6 [private-tx] remove unused rand (#11024) 2019-09-05 13:26:28 +02:00
David
d193ddde19 Extract snapshot to own crate (#11010)
* Move snapshot to own crate
Sort out imports

* WIP cargo toml

* Make snapshotting generic over the client
Sort out tests

* Sort out types from blockchain and client

* Sort out sync

* Sort out imports and generics

* Sort out main binary

* Fix sync test-helpers

* Sort out import for secret-store

* Sort out more imports

* Fix easy todos

* cleanup

* Cleanup

* remove unneded workspace member

* cleanup

* Sort out test-helpers dependency on account-db

* Update ethcore/client-traits/src/lib.rs

Co-Authored-By: Niklas Adolfsson <niklasadolfsson1@gmail.com>

* Update ethcore/snapshot/Cargo.toml
2019-09-03 11:29:25 +02:00
s3krit
396ccdbcc1 Edit publish-onchain.sh to use https (#11016)
`update.parity.io` supports HTTPS, so it makes sense to use it.
2019-09-03 10:37:21 +02:00
Niklas Adolfsson
a9cb572238 EIP 1108: Reduce alt_bn128 precompile gas costs (#11008)
* feat: implement eip1108

* doc nit: price per point pair

Co-Authored-By: David <dvdplm@gmail.com>

* fix: test-build

* fix: update chain specs

* fix: basic_authority.json chain spec

* fix: change `eip_transition == 0x7fffffffffffff`

* add issue link to `TODO`
2019-09-02 11:38:27 +02:00
Atkins
05f9606bf2 Fix deadlock in network-devp2p (#11013)
* Fix deadlock in `network-devp2p`

* Add note for locking order in `network-devp2p`
2019-09-02 10:56:08 +02:00
Wei Tang
00124b5a4b Implement EIP-1283 reenable transition, EIP-1706 and EIP-2200 (#10191)
* Add reentry protection for EIP-1283

* typo: should use <=

* Put things behind flag eip1706

* Fix compile

* Fix missing config in json and add eip1283_reenable_transition
2019-08-29 21:31:52 +02:00
David
dabfa2c663 EIP 1884 Re-pricing of trie-size dependent operations (#10992)
* Add client-traits crate
Move the BlockInfo trait to new crate

* New crate `machine`
Contains code extracted from ethcore that defines `Machine`, `Externalities` and other execution related code.

* Use new machine and client-traits crates in ethcore

* Use new crates machine and client-traits instead of ethcore where appropriate

* Fix tests

* Don't re-export so many types from ethcore::client

* Fixing more fallout from removing re-export

* fix test

* More fallout from not re-exporting types

* Add some docs

* cleanup

* import the macro edition style

* Tweak docs

* Add missing import

* remove unused ethabi_derive imports

* Use latest ethabi-contract

* Move many traits from ethcore/client/traits to client-traits crate
Initial version of extracted Engine trait

* Move snapshot related traits to the engine crate (eew)

* Move a few snapshot related types to common_types
Cleanup Executed as exported from machine crate

* fix warning

* Gradually introduce new engine crate: snapshot

* ethcore typechecks with new engine crate

* Sort out types outside ethcore

* Add an EpochVerifier to ethash and use that in Engine.epoch_verifier()
Cleanup

* Document pub members

* Sort out tests
Sort out default impls for EpochVerifier

* Add test-helpers feature and move EngineSigner impl to the right place

* Sort out tests

* Sort out tests and refactor verification types

* Fix missing traits

* More missing traits
Fix Histogram

* Fix tests and cleanup

* cleanup

* Put back needed logger import

* Don't rexport common_types from ethcore/src/client
Don't export ethcore::client::*

* Remove files no longer used
Use types from the engine crate
Explicit exports from engine::engine

* Get rid of itertools

* Move a few more traits from ethcore to client-traits: BlockChainReset, ScheduleInfo, StateClient

* Move ProvingBlockChainClient to client-traits

* Don't re-export ForkChoice and Transition from ethcore

* Address grumbles: sort imports, remove commented out code

* Fix merge resolution error

* Extract the Clique engine to own crate

* Extract NullEngine and the block_reward module from ethcore

* Extract InstantSeal engine to own crate

* Extract remaining engines

* Extract executive_state to own crate so it can be used by engine crates

* Remove snapshot stuff from the engine crate

* Put snapshot traits back in ethcore

* cleanup

* Remove stuff from ethcore

* Don't use itertools

* itertools in aura is legit-ish

* More post-merge fixes

* Re-export less types in client

* cleanup

* Extract spec to own crate

* Put back the test-helpers from basic-authority

* Fix ethcore benchmarks

* Reduce the public api of ethcore/verification

* WIP

* Add Cargo.toml

* Fix compilation outside ethcore

* Audit uses of import_verified_blocks() and remove unneeded calls
Cleanup

* cleanup

* Remove unused imports from ethcore

* Cleanup

* remove double semi-colons

* Add missing generic param

* More missing generics

* Update ethcore/block-reward/Cargo.toml

Co-Authored-By: Tomasz Drwięga <tomusdrw@users.noreply.github.com>

* Update ethcore/engines/basic-authority/Cargo.toml

Co-Authored-By: Tomasz Drwięga <tomusdrw@users.noreply.github.com>

* Update ethcore/engines/ethash/Cargo.toml

Co-Authored-By: Tomasz Drwięga <tomusdrw@users.noreply.github.com>

* Update ethcore/engines/clique/src/lib.rs

Co-Authored-By: Tomasz Drwięga <tomusdrw@users.noreply.github.com>

* signers is already a ref

* Add an EngineType enum to tighten up Engine.name()

* Add CHAINID opcode

* Introduce Snapshotting enum to distinguish the type of snapshots a chain uses

* Rename supports_warp to snapshot_mode

* Missing import

* Add chain_id wherever we instantiate EnvInfo

* more missing chain_id

* Tell serde to ignore the chain_id field on Env

* Update ethcore/src/snapshot/consensus/mod.rs

Co-Authored-By: Tomasz Drwięga <tomusdrw@users.noreply.github.com>

* Use the chain_id from the machine by adding chain_id() to the Ext trait

* cleanup

* add missing impl
cleanup

* missing import

* Fix import

* Add transition marker for EIP 1344

* double semi

* Fix merge problem

* cleanup

* reprice SLOAD to 800 gas

* Reprice BALANCE and EXTCODEHASH

* Add SELFBALANCE opcode

* Add test for SELFBALANCE
Use InstructionParams.address as the self-address

* Use easier to read values in test

* merge conflict error

* Fix a few warnings

* Update ethcore/vm/src/schedule.rs

Co-Authored-By: Andronik Ordian <write@reusable.software>

* more merge fallout
2019-08-29 13:19:55 +02:00
phahulin
3420c2bac0 xDai chain support and nodes list update (#10989)
* Update bootnodes list for known networks

* Add XDai chain

* Rename xdai chain in config

* Fix missing comma
2019-08-29 09:33:33 +02:00
Andronik Ordian
4f12d7ad12 [trace] check mem diff within range (#11002) 2019-08-28 18:24:06 +02:00
David
5ce249ac64 EIP-1344 Add CHAINID op-code (#10983)
* Add client-traits crate
Move the BlockInfo trait to new crate

* New crate `machine`
Contains code extracted from ethcore that defines `Machine`, `Externalities` and other execution related code.

* Use new machine and client-traits crates in ethcore

* Use new crates machine and client-traits instead of ethcore where appropriate

* Fix tests

* Don't re-export so many types from ethcore::client

* Fixing more fallout from removing re-export

* fix test

* More fallout from not re-exporting types

* Add some docs

* cleanup

* import the macro edition style

* Tweak docs

* Add missing import

* remove unused ethabi_derive imports

* Use latest ethabi-contract

* Move many traits from ethcore/client/traits to client-traits crate
Initial version of extracted Engine trait

* Move snapshot related traits to the engine crate (eew)

* Move a few snapshot related types to common_types
Cleanup Executed as exported from machine crate

* fix warning

* Gradually introduce new engine crate: snapshot

* ethcore typechecks with new engine crate

* Sort out types outside ethcore

* Add an EpochVerifier to ethash and use that in Engine.epoch_verifier()
Cleanup

* Document pub members

* Sort out tests
Sort out default impls for EpochVerifier

* Add test-helpers feature and move EngineSigner impl to the right place

* Sort out tests

* Sort out tests and refactor verification types

* Fix missing traits

* More missing traits
Fix Histogram

* Fix tests and cleanup

* cleanup

* Put back needed logger import

* Don't rexport common_types from ethcore/src/client
Don't export ethcore::client::*

* Remove files no longer used
Use types from the engine crate
Explicit exports from engine::engine

* Get rid of itertools

* Move a few more traits from ethcore to client-traits: BlockChainReset, ScheduleInfo, StateClient

* Move ProvingBlockChainClient to client-traits

* Don't re-export ForkChoice and Transition from ethcore

* Address grumbles: sort imports, remove commented out code

* Fix merge resolution error

* Extract the Clique engine to own crate

* Extract NullEngine and the block_reward module from ethcore

* Extract InstantSeal engine to own crate

* Extract remaining engines

* Extract executive_state to own crate so it can be used by engine crates

* Remove snapshot stuff from the engine crate

* Put snapshot traits back in ethcore

* cleanup

* Remove stuff from ethcore

* Don't use itertools

* itertools in aura is legit-ish

* More post-merge fixes

* Re-export less types in client

* cleanup

* Extract spec to own crate

* Put back the test-helpers from basic-authority

* Fix ethcore benchmarks

* Reduce the public api of ethcore/verification

* WIP

* Add Cargo.toml

* Fix compilation outside ethcore

* Audit uses of import_verified_blocks() and remove unneeded calls
Cleanup

* cleanup

* Remove unused imports from ethcore

* Cleanup

* remove double semi-colons

* Add missing generic param

* More missing generics

* Update ethcore/block-reward/Cargo.toml

Co-Authored-By: Tomasz Drwięga <tomusdrw@users.noreply.github.com>

* Update ethcore/engines/basic-authority/Cargo.toml

Co-Authored-By: Tomasz Drwięga <tomusdrw@users.noreply.github.com>

* Update ethcore/engines/ethash/Cargo.toml

Co-Authored-By: Tomasz Drwięga <tomusdrw@users.noreply.github.com>

* Update ethcore/engines/clique/src/lib.rs

Co-Authored-By: Tomasz Drwięga <tomusdrw@users.noreply.github.com>

* signers is already a ref

* Add an EngineType enum to tighten up Engine.name()

* Add CHAINID opcode

* Introduce Snapshotting enum to distinguish the type of snapshots a chain uses

* Rename supports_warp to snapshot_mode

* Missing import

* Add chain_id wherever we instantiate EnvInfo

* more missing chain_id

* Tell serde to ignore the chain_id field on Env

* Update ethcore/src/snapshot/consensus/mod.rs

Co-Authored-By: Tomasz Drwięga <tomusdrw@users.noreply.github.com>

* Use the chain_id from the machine by adding chain_id() to the Ext trait

* cleanup

* add missing impl
cleanup

* missing import

* Fix import

* Add transition marker for EIP 1344

* double semi

* Fix merge problem

* cleanup

* merge conflict error

* Fix a few warnings

* Update ethcore/vm/src/schedule.rs

Co-Authored-By: Andronik Ordian <write@reusable.software>

* more merge fallout
2019-08-28 16:15:50 +02:00
David
cd26526868 Make ClientIoMessage generic over the Client (#10981)
* Add client-traits crate
Move the BlockInfo trait to new crate

* New crate `machine`
Contains code extracted from ethcore that defines `Machine`, `Externalities` and other execution related code.

* Use new machine and client-traits crates in ethcore

* Use new crates machine and client-traits instead of ethcore where appropriate

* Fix tests

* Don't re-export so many types from ethcore::client

* Fixing more fallout from removing re-export

* fix test

* More fallout from not re-exporting types

* Add some docs

* cleanup

* import the macro edition style

* Tweak docs

* Add missing import

* remove unused ethabi_derive imports

* Use latest ethabi-contract

* Move many traits from ethcore/client/traits to client-traits crate
Initial version of extracted Engine trait

* Move snapshot related traits to the engine crate (eew)

* Move a few snapshot related types to common_types
Cleanup Executed as exported from machine crate

* fix warning

* Gradually introduce new engine crate: snapshot

* ethcore typechecks with new engine crate

* Sort out types outside ethcore

* Add an EpochVerifier to ethash and use that in Engine.epoch_verifier()
Cleanup

* Document pub members

* Sort out tests
Sort out default impls for EpochVerifier

* Add test-helpers feature and move EngineSigner impl to the right place

* Sort out tests

* Sort out tests and refactor verification types

* Fix missing traits

* More missing traits
Fix Histogram

* Fix tests and cleanup

* cleanup

* Put back needed logger import

* Don't rexport common_types from ethcore/src/client
Don't export ethcore::client::*

* Remove files no longer used
Use types from the engine crate
Explicit exports from engine::engine

* Get rid of itertools

* Move a few more traits from ethcore to client-traits: BlockChainReset, ScheduleInfo, StateClient

* Move ProvingBlockChainClient to client-traits

* Don't re-export ForkChoice and Transition from ethcore

* Address grumbles: sort imports, remove commented out code

* Fix merge resolution error

* Extract the Clique engine to own crate

* Extract NullEngine and the block_reward module from ethcore

* Extract InstantSeal engine to own crate

* Extract remaining engines

* Extract executive_state to own crate so it can be used by engine crates

* Remove snapshot stuff from the engine crate

* Put snapshot traits back in ethcore

* cleanup

* Remove stuff from ethcore

* Don't use itertools

* itertools in aura is legit-ish

* More post-merge fixes

* Re-export less types in client

* cleanup

* Extract spec to own crate

* Put back the test-helpers from basic-authority

* Fix ethcore benchmarks

* Reduce the public api of ethcore/verification

* WIP

* Add Cargo.toml

* Fix compilation outside ethcore

* Audit uses of import_verified_blocks() and remove unneeded calls
Cleanup

* cleanup

* Remove unused imports from ethcore

* Cleanup

* remove double semi-colons

* Add missing generic param

* More missing generics

* Update ethcore/block-reward/Cargo.toml

Co-Authored-By: Tomasz Drwięga <tomusdrw@users.noreply.github.com>

* Update ethcore/engines/basic-authority/Cargo.toml

Co-Authored-By: Tomasz Drwięga <tomusdrw@users.noreply.github.com>

* Update ethcore/engines/ethash/Cargo.toml

Co-Authored-By: Tomasz Drwięga <tomusdrw@users.noreply.github.com>

* Update ethcore/engines/clique/src/lib.rs

Co-Authored-By: Tomasz Drwięga <tomusdrw@users.noreply.github.com>

* signers is already a ref

* Add an EngineType enum to tighten up Engine.name()

* Introduce Snapshotting enum to distinguish the type of snapshots a chain uses

* Rename supports_warp to snapshot_mode

* Missing import

* Update ethcore/src/snapshot/consensus/mod.rs

Co-Authored-By: Tomasz Drwięga <tomusdrw@users.noreply.github.com>

* missing import

* Fix import

* double semi

* Fix merge problem

* cleanup

* Parametrise `ClientIoMessage` with `()` for the light client

* Add impl Tick for ()

* Address review feedback

* Move ClientIoMessage to common-types

* remove superseeded fixme

* fix merge conflict errors
2019-08-28 10:09:42 +02:00
Niklas Adolfsson
974b24549b bump spin to 0.5.2 (#10996)
patch vulnerability https://github.com/RustSec/advisory-db/pull/132
2019-08-27 23:59:39 +02:00
Niklas Adolfsson
dab2a6bd4b fix compile warnings (#10993)
* fix warnings

* fix: failing build, use `spec` as dev-dependency
2019-08-27 17:29:33 +02:00
David
505e284932 Fix compilation on recent nightlies (#10991)
For reasons unknown (to me) recent rustc nightlies can't find the `format!`-macro in `core` when there is an import named `core`. This PR removes the package rename and uses the full `jsonrpc_core` crate name instead.
2019-08-27 09:45:13 +02:00
David
b1e3acaf0c [ipfs] Convert to edition 2018 (#10979)
* [ipfs] Converto to edition 2018

Also: whitespace

* Review feedback
2019-08-26 12:09:44 +02:00
David
fbf425c4e2 Extract spec to own crate (#10978)
* Add client-traits crate
Move the BlockInfo trait to new crate

* New crate `machine`
Contains code extracted from ethcore that defines `Machine`, `Externalities` and other execution related code.

* Use new machine and client-traits crates in ethcore

* Use new crates machine and client-traits instead of ethcore where appropriate

* Fix tests

* Don't re-export so many types from ethcore::client

* Fixing more fallout from removing re-export

* fix test

* More fallout from not re-exporting types

* Add some docs

* cleanup

* import the macro edition style

* Tweak docs

* Add missing import

* remove unused ethabi_derive imports

* Use latest ethabi-contract

* Move many traits from ethcore/client/traits to client-traits crate
Initial version of extracted Engine trait

* Move snapshot related traits to the engine crate (eew)

* Move a few snapshot related types to common_types
Cleanup Executed as exported from machine crate

* fix warning

* Gradually introduce new engine crate: snapshot

* ethcore typechecks with new engine crate

* Sort out types outside ethcore

* Add an EpochVerifier to ethash and use that in Engine.epoch_verifier()
Cleanup

* Document pub members

* Sort out tests
Sort out default impls for EpochVerifier

* Add test-helpers feature and move EngineSigner impl to the right place

* Sort out tests

* Sort out tests and refactor verification types

* Fix missing traits

* More missing traits
Fix Histogram

* Fix tests and cleanup

* cleanup

* Put back needed logger import

* Don't rexport common_types from ethcore/src/client
Don't export ethcore::client::*

* Remove files no longer used
Use types from the engine crate
Explicit exports from engine::engine

* Get rid of itertools

* Move a few more traits from ethcore to client-traits: BlockChainReset, ScheduleInfo, StateClient

* Move ProvingBlockChainClient to client-traits

* Don't re-export ForkChoice and Transition from ethcore

* Address grumbles: sort imports, remove commented out code

* Fix merge resolution error

* Extract the Clique engine to own crate

* Extract NullEngine and the block_reward module from ethcore

* Extract InstantSeal engine to own crate

* Extract remaining engines

* Extract executive_state to own crate so it can be used by engine crates

* Remove snapshot stuff from the engine crate

* Put snapshot traits back in ethcore

* cleanup

* Remove stuff from ethcore

* Don't use itertools

* itertools in aura is legit-ish

* More post-merge fixes

* Re-export less types in client

* cleanup

* Extract spec to own crate

* Put back the test-helpers from basic-authority

* Fix ethcore benchmarks

* Reduce the public api of ethcore/verification

* Update ethcore/block-reward/Cargo.toml

Co-Authored-By: Tomasz Drwięga <tomusdrw@users.noreply.github.com>

* Update ethcore/engines/basic-authority/Cargo.toml

Co-Authored-By: Tomasz Drwięga <tomusdrw@users.noreply.github.com>

* Update ethcore/engines/ethash/Cargo.toml

Co-Authored-By: Tomasz Drwięga <tomusdrw@users.noreply.github.com>

* Update ethcore/engines/clique/src/lib.rs

Co-Authored-By: Tomasz Drwięga <tomusdrw@users.noreply.github.com>

* signers is already a ref

* Add an EngineType enum to tighten up Engine.name()

* Introduce Snapshotting enum to distinguish the type of snapshots a chain uses

* Rename supports_warp to snapshot_mode

* Missing import

* Update ethcore/src/snapshot/consensus/mod.rs

Co-Authored-By: Tomasz Drwięga <tomusdrw@users.noreply.github.com>

* missing import

* Fix import

* double semi
2019-08-23 15:32:58 +02:00
David
79b671f6c7 EIP 2028: transaction gas lowered from 68 to 16 (#10987) 2019-08-23 14:13:02 +02:00
David
2af3140a26 Extract engines to own crates (#10966)
* Add client-traits crate
Move the BlockInfo trait to new crate

* New crate `machine`
Contains code extracted from ethcore that defines `Machine`, `Externalities` and other execution related code.

* Use new machine and client-traits crates in ethcore

* Use new crates machine and client-traits instead of ethcore where appropriate

* Fix tests

* Don't re-export so many types from ethcore::client

* Fixing more fallout from removing re-export

* fix test

* More fallout from not re-exporting types

* Add some docs

* cleanup

* import the macro edition style

* Tweak docs

* Add missing import

* remove unused ethabi_derive imports

* Use latest ethabi-contract

* Move many traits from ethcore/client/traits to client-traits crate
Initial version of extracted Engine trait

* Move snapshot related traits to the engine crate (eew)

* Move a few snapshot related types to common_types
Cleanup Executed as exported from machine crate

* fix warning

* Gradually introduce new engine crate: snapshot

* ethcore typechecks with new engine crate

* Sort out types outside ethcore

* Add an EpochVerifier to ethash and use that in Engine.epoch_verifier()
Cleanup

* Document pub members

* Sort out tests
Sort out default impls for EpochVerifier

* Add test-helpers feature and move EngineSigner impl to the right place

* Sort out tests

* Sort out tests and refactor verification types

* Fix missing traits

* More missing traits
Fix Histogram

* Fix tests and cleanup

* cleanup

* Put back needed logger import

* Don't rexport common_types from ethcore/src/client
Don't export ethcore::client::*

* Remove files no longer used
Use types from the engine crate
Explicit exports from engine::engine

* Get rid of itertools

* Move a few more traits from ethcore to client-traits: BlockChainReset, ScheduleInfo, StateClient

* Move ProvingBlockChainClient to client-traits

* Don't re-export ForkChoice and Transition from ethcore

* Address grumbles: sort imports, remove commented out code

* Fix merge resolution error

* Extract the Clique engine to own crate

* Extract NullEngine and the block_reward module from ethcore

* Extract InstantSeal engine to own crate

* Extract remaining engines

* Extract executive_state to own crate so it can be used by engine crates

* Remove snapshot stuff from the engine crate

* Put snapshot traits back in ethcore

* cleanup

* Remove stuff from ethcore

* Don't use itertools

* itertools in aura is legit-ish

* More post-merge fixes

* Re-export less types in client

* cleanup

* Update ethcore/block-reward/Cargo.toml

Co-Authored-By: Tomasz Drwięga <tomusdrw@users.noreply.github.com>

* Update ethcore/engines/basic-authority/Cargo.toml

Co-Authored-By: Tomasz Drwięga <tomusdrw@users.noreply.github.com>

* Update ethcore/engines/ethash/Cargo.toml

Co-Authored-By: Tomasz Drwięga <tomusdrw@users.noreply.github.com>

* Update ethcore/engines/clique/src/lib.rs

Co-Authored-By: Tomasz Drwięga <tomusdrw@users.noreply.github.com>

* signers is already a ref

* Add an EngineType enum to tighten up Engine.name()

* Introduce Snapshotting enum to distinguish the type of snapshots a chain uses

* Rename supports_warp to snapshot_mode

* Missing import

* Update ethcore/src/snapshot/consensus/mod.rs

Co-Authored-By: Tomasz Drwięga <tomusdrw@users.noreply.github.com>

* remove double-semicolons
2019-08-22 18:25:49 +02:00
Vladimir Komendantskiy
efb390eb60 Configuration map of block reward contract addresses (#10875)
* configuration map of block reward contract addresses

* Revert test module updates.

* re-added block reward transition map tests and docs

* review comment
2019-08-22 10:45:24 +02:00
Andreas Fackler
175051bac7 Add a 2/3 quorum option to Authority Round. (#10909)
* Add a 2/3 quorum option to Authority Round.

This prevents the "Attack of the Clones":
https://arxiv.org/pdf/1902.10244.pdf

* Make RollingFinality::remove_signers more tolerant.

* Rename parameter to two_thirds_majority_transition.
2019-08-21 14:55:51 +02:00
cheme
0a654afecc Fix rlp decode for inline trie nodes. (#10980)
* Fix rlp decode test.

* Proper fix, with associated tests.

* Put tests in their own module.
2019-08-19 23:31:57 +02:00
Anton Gavrilov
66e4410be7 Private contract migration and offchain state sync (#10748)
* Temp storage for the private state added

* Temp storage for the private state added

* Request message added

* Store and retrieve offchain state logic

* State sync cache

* Private state column added to key value db

* Private state column added to key value db

* Indexing stored states via its hash

* Works with errors changed

* Private state stored into the local db

* Access to private state db added to sync io

* Private state db file added

* Rlp packets for retrieiving private state data added

* Handling of private sync completed message

* Test code fixed

* External flag for offchain storing added

* Test for private state sync added

* Saving private state logic corrected

* Migration code corrected

* Fixes after merge with master

* Merge with head

* Additional checks for slices

* Log for private state retrieval added

* Limit time of retrieving private states

* Store required hashes for every request, mark them stale if needed

* Store requested private state hashes and check received data

* Log stale requests

* State insertion fix

* Refactoring of how logging passed to state store

* Heapsize removed, syncing hashes structure reworked

* Check state length returned by contract

* Get rid of OverlayDB

* hash-db version updated

* Test fixed

* One more test fixed
2019-08-16 14:45:52 +02:00
TriplEight
bd1a578f93 manual publish jobs for releases, no changes for nightlies (#10977) 2019-08-16 12:59:36 +02:00
David
6a9de9b11e Extract the Engine trait (#10958)
* Add client-traits crate
Move the BlockInfo trait to new crate

* New crate `machine`
Contains code extracted from ethcore that defines `Machine`, `Externalities` and other execution related code.

* Use new machine and client-traits crates in ethcore

* Use new crates machine and client-traits instead of ethcore where appropriate

* Fix tests

* Don't re-export so many types from ethcore::client

* Fixing more fallout from removing re-export

* fix test

* More fallout from not re-exporting types

* Add some docs

* cleanup

* import the macro edition style

* Tweak docs

* Add missing import

* remove unused ethabi_derive imports

* Use latest ethabi-contract

* Move many traits from ethcore/client/traits to client-traits crate
Initial version of extracted Engine trait

* Move snapshot related traits to the engine crate (eew)

* Move a few snapshot related types to common_types
Cleanup Executed as exported from machine crate

* fix warning

* Gradually introduce new engine crate: snapshot

* ethcore typechecks with new engine crate

* Sort out types outside ethcore

* Add an EpochVerifier to ethash and use that in Engine.epoch_verifier()
Cleanup

* Document pub members

* Sort out tests
Sort out default impls for EpochVerifier

* Add test-helpers feature and move EngineSigner impl to the right place

* Sort out tests

* Sort out tests and refactor verification types

* Fix missing traits

* More missing traits
Fix Histogram

* Fix tests and cleanup

* cleanup

* Put back needed logger import

* Don't rexport common_types from ethcore/src/client
Don't export ethcore::client::*

* Remove files no longer used
Use types from the engine crate
Explicit exports from engine::engine

* Get rid of itertools

* Move a few more traits from ethcore to client-traits: BlockChainReset, ScheduleInfo, StateClient

* Move ProvingBlockChainClient to client-traits

* Don't re-export ForkChoice and Transition from ethcore

* Address grumbles: sort imports, remove commented out code

* Fix merge resolution error

* merge failure
2019-08-15 17:59:22 +02:00
Seun LanLege
1ba4df08f9 Better error message for rpc gas price errors (#10931)
* Better error message for rpc gas price errors

* correct tests

* dedupe error variants

* fixed tests, removed spacing
2019-08-15 16:48:41 +02:00
Andronik Ordian
abb2a8c5a2 [.gitlab.yml] cargo check ethcore benches (#10965) 2019-08-15 16:28:25 +02:00
Anton Gavrilov
fd75491103 Verify transaction against its block during import (#10954)
* Verify transaction against its block during import

* Client method for transaction verification added

* Verification methods united

* Verification sequence for transaction verifier returned
2019-08-15 16:10:39 +02:00
David
ef47426a93 [evmbin] fix compilation (#10976)
* Fix compilation error

Include the test-helpers from `machine` (used by json-tests, although I'm not sure why evmbin needs ethcore/json-tests)

* Update to edition
2019-08-15 16:06:43 +02:00
cheme
5807402a0b Update to latest trie version. (#10972)
* Switch to 'trie' crates, there is an unpublished deps to staging
parity-common triehash still.

* Use crates.io dependency.

* indentation

* Update util/journaldb/src/traits.rs

indentation

Co-Authored-By: cheme <emericchevalier.pro@gmail.com>

* Rem import braces

* switch deps to simple-codec branch (code broken)

* painfull update of trie and memdb, plus rework codec to be compatible
with simple_codec changes

* Removed useless implementation from trait.

* Remove some malloc size until update and patch triehash, seems ok
otherwhise.

* Update parity-util-mem.

* Switch to published triehash 0.8.

* Avoid redundancy in encode_partial functions.
Use better namings.

* Update util/patricia-trie-ethereum/src/rlp_node_codec.rs

Co-Authored-By: Andronik Ordian <write@reusable.software>

* Update util/patricia-trie-ethereum/src/rlp_node_codec.rs

Co-Authored-By: Andronik Ordian <write@reusable.software>

* Restore previous child rlp header length check.
Better comments and formatting.

* Update util/patricia-trie-ethereum/src/rlp_node_codec.rs

Co-Authored-By: David <dvdplm@gmail.com>

* Update util/patricia-trie-ethereum/src/rlp_node_codec.rs

Co-Authored-By: David <dvdplm@gmail.com>
2019-08-15 15:36:48 +02:00
David
e50eafe6e1 [blooms-db] Fix benchmarks (#10974)
* [blooms-db] Fix benchmarks

* Use Bloom::zero()
2019-08-15 15:36:07 +02:00
Andreas Fackler
a23f5b8fd9 Fix ethcore/benches build. (#10964) 2019-08-13 15:27:28 +02:00
Andrew Jones
bd2e4f9c13 tx-pool: accept local tx with higher gas price when pool full (#10901)
* tx-pool: accept local tx with higher gas price when pool full

* Revert "tx-pool: accept local tx with higher gas price when pool full"

This reverts commit 9d4adc5a

* tx-pool: new tx with same nonce as existing is ready

* tx-pool: explicit check for replacement tx (same sender & nonce)

* Update comment

Co-Authored-By: Tomasz Drwięga <tomusdrw@users.noreply.github.com>

* Replace `ReplaceOld` with `InsertNew` for replacement txs
2019-08-13 14:20:59 +01:00
joshua-mir
e551122ab9 Disable unsyncable expanse chain (#10926)
* Only remove expanse from cli

* remove whitespace

* remove whitespace (restart CI)

* (restart CI)
2019-08-13 13:37:43 +02:00
David
73f4564b66 Extract Machine from ethcore (#10949)
* Add client-traits crate
Move the BlockInfo trait to new crate

* New crate `machine`
Contains code extracted from ethcore that defines `Machine`, `Externalities` and other execution related code.

* Use new machine and client-traits crates in ethcore

* Use new crates machine and client-traits instead of ethcore where appropriate

* Fix tests

* Don't re-export so many types from ethcore::client

* Fixing more fallout from removing re-export

* fix test

* More fallout from not re-exporting types

* Add some docs

* cleanup

* import the macro edition style

* Tweak docs

* Add missing import

* remove unused ethabi_derive imports

* Use latest ethabi-contract
2019-08-13 12:33:34 +02:00
Marek Kotewicz
509fda727b removed redundant state_root function from spec, improve spec error types (#10955) 2019-08-12 16:10:46 +02:00
Adam Z. Nagy
ffc066e5a4 Add support for Energy Web Foundation's new chains (#10957)
* add(chain-support): new ewf chains support added

- volta test network
- ewc production chain

* remove(tobalaba): ewf chain tobalaba support removal

- tobalaba is deprecated so not officially supported by ewf any more
2019-08-12 13:20:12 +02:00
Andronik Ordian
cafdfa8107 [evmbin] add more tests to main.rs (#10956) 2019-08-09 13:14:41 +02:00
David
49f219451b Fix compiler warnings in util/io and upgrade to edition 2018 Upgrade mio to latest (#10953)
* Initial cleanup

* Fix compiler warnings in util/io and upgrade to edition 2018
Upgrade mio to latest version

* cleanup

* Update util/io/src/service_mio.rs

Co-Authored-By: Niklas Adolfsson <niklasadolfsson1@gmail.com>

* review suggestion
2019-08-08 09:41:22 +02:00
Marek Kotewicz
45978bc2bd unify loading spec && further spec cleanups (#10948)
* bundle_* macros for spec

* fixed failing tests

* renamed bundle.rs to chain.rs

* removed unused derives

* updated spec/chain.rs description
2019-08-07 16:52:48 +02:00
Luke Schoen
c689495826 refactor: Refactor evmbin CLI (#10742)
* docs: Add comments to run_transaction arguments

* docs: Add general state test example from github.com/ethereum/test

* docs: Add state test file used in ethjson

* refactor: Reorder CLI options. Modify CLI descriptions. See commit comments

* Reorder parity-evm CLI options
* Update descriptions for CLI options
* Change to `--chain PATH` (general) and `--chain CHAIN` (state test)
* Remove unncessary 'Display result state dump in standardized JSON format.

* refactor: Move  function to be ordered after

* refactor: Refactor run_state_test

* refactor: Modify run_stats_jsontests_vm comment to be more specific

* refactor: Refactor run_call

* refactor: Update Args struct including rustdocs

* refactor: Reorder functions in Args struct to match other orders

* tests: Update tests for evmbin

* revert unintentional changes

* comply with style guide

* docs: Info and Display Modules made public so appear in rustdocs

* docs: Rename VM to EVM

* docs: Update rustdocs

* docs: Update state-test cli command comments

Co-Authored-By: David <dvdplm@gmail.com>

* docs: Update chain path cli command description

Co-Authored-By: David <dvdplm@gmail.com>

* docs: Prefix to specify only one chain type to be provided

Co-Authored-By: David <dvdplm@gmail.com>

* docs: Update to be lowercase fat

Co-Authored-By: David <dvdplm@gmail.com>

* rename err to stderr, out to stdout

* revert to wei for gas price

* review-fix: Do not expose private modules but still show docs

View docs with:
```
cargo doc -p evmbin --document-private-items --open
```

* test: Read from file. Add initial tests for state-test CLI command

* review-fix: Change to single TODO that links to new issue to create integration tests

* refactor: Move run_transaction params into fields of a TxInput struct and make doc comments of its fields (#10769)

* Question

* refactor: Further changes for doc comments to be part of public struct

* refactor: Rename InputData to TxInput for clarity in docs

* docs: Change String to fixed length str

Co-Authored-By: Tomasz Drwięga <tomusdrw@users.noreply.github.com>

* refactor: Update evmbin/src/info.rs moving mut into fn declaration

Co-Authored-By: Tomasz Drwięga <tomusdrw@users.noreply.github.com>

* refactor: Update evmbin/src/info.rs moving mut into fn declaration part 2

Co-Authored-By: Tomasz Drwięga <tomusdrw@users.noreply.github.com>

* review-fix: Add missing docs to TxInput transaction and trie_spec

* docs: Improve grammar

* review-fix: Destructure tx_input

* WIP

* review-fix: Rename variables of InputTx

* rename `spec_from_json` to `fork_spec_from_json`
* rename `name` to `state_test_name`
* rename `spec` to `fork_spec_name`
* rename `spec_checked` to `fork_spec`

* review-fix: Rename idx to tx_index

* fix indentation

* review-fix: Add missing part of tests. Yet to fix tests and add assertions

* [evmbin] remove state-db dependency

* [evmbin] run_transaction returns bool

* [evmbin] more cleanup
2019-08-07 16:51:08 +02:00
Marek Kotewicz
46954527e7 journaldb changes (#10929)
* inject_batch && commit_batch are no longer a part of journaldb

* get rid of redundant KeyedHashDB trait

* journaldb edition 2018

* journaldb trait moved to the lib.rs file

* making journaldb more idiomatic

* fix parity_bytes reexport

* rename parity-util-mem package in Cargo.toml file
2019-08-07 01:45:10 +02:00
Seun LanLege
72279856cd Allow default block parameter to be blockHash (#10932)
* allow default block parameter to be blockHash

* requireCanonical

* block check takes precedence over canon check
2019-08-06 11:08:05 +02:00
Anton Gavrilov
13ccb9f827 Enable sealing when engine is ready (#10938) 2019-08-06 11:07:27 +02:00
Andreas Fackler
1503348782 Fix some warnings and typos. (#10941) 2019-08-06 11:07:07 +02:00
Kirill Pimenov
5de32a70da Updated security@parity.io key (#10939) 2019-08-05 14:09:32 +01:00
Ao Li
8e0c522931 Change the return type of step_inner function. (#10940)
* Change the return type of step_inner function.

* Fix indention.
2019-08-05 14:58:48 +02:00
Marek Kotewicz
6c7d0fef4e get rid of hidden mutability of Spec (#10904)
* get rid of hidden mutabilityof Spec

* small cleanups

* fixed SpecHardcodedSync printing
2019-07-30 12:48:54 +02:00
Marek Kotewicz
12256a1e97 simplify BlockReward::reward implementation (#10906)
* simplify BlockReward::reward implementation

* fixed failing tests
2019-07-30 12:05:06 +02:00
s3krit
ec90fc47bc Kaspersky AV whitelisting (#10919)
* Add Kaspersky's FTP to AV Whitelisting release script

* Uncommented lines commented for debugging
2019-07-29 16:44:19 +02:00
Vladimir Komendantskiy
ee9bfac625 additional arithmetic EVM opcode benchmarks (#10916) 2019-07-29 15:50:57 +02:00
Andronik Ordian
27786f014c [Cargo.lock] cargo update -p crossbeam-epoch (#10921) 2019-07-29 12:27:18 +02:00
Micah Zoltu
8099efe215 Fixes incorrect comment. (#10913)
I _believe_ (someone please double-check my work) that this comment is subtly incorrect and in fact the replacement will occur if the new gas price is exactly 12.5% (given current configuration) higher.

Relevant pieces of code:
```rust
fn bump_gas_price(old_gp: U256) -> U256 {
	old_gp.saturating_add(old_gp >> GAS_PRICE_BUMP_SHIFT)
}
```
```rust
let min_required_gp = bump_gas_price(*old_gp);
match min_required_gp.cmp(&new_gp) {
	cmp::Ordering::Greater => scoring::Choice::RejectNew,
	_ => scoring::Choice::ReplaceOld,
}
```
2019-07-24 12:28:48 +02:00
Vladyslav Lupashevskyi
cc796a232a Add file path to disk map write/read warnings (#10911) 2019-07-24 12:26:43 +02:00
Marek Kotewicz
d1b28bf57e remove verify_transaction_unordered from engine (#10891) 2019-07-21 21:15:08 +02:00
s3krit
acb1243214 Avast whitelist script (#10900)
* Add Avast AV whitelisting publish script

* Update gitlab-ci.yml, publish-av-whitelists.sh

* remove debug print
2019-07-21 15:03:31 +02:00
Marek Kotewicz
fa1f81b5a3 cleanup ethcore ethereum module (#10899) 2019-07-18 14:22:59 +02:00
David
1ef9d5b52f Move more types out of ethcore (#10880)
* WIP move errors, pod_account and state account to own crates

* Sort out dependencies, fix broken code and tests
Remove botched ethcore-error crate

* remove template line

* fix review feedback

* Remove test-only AccountDBMut::new

* Extract AccountDB to account-db

* Move Substate to state-account – wip

* Add lib.rs

* cleanup

* test failure

* test failure 2

* third time's the charm

* Add factories crate

* Use new factories crate

* Use factories crate

* Extract trace

* Fix tests

* Sort out parity-util-mem and parking_lot

* cleanup

* WIP port over the rest of state from ethcore

* Collect all impls for Machine

* some notes

* Rename pod-account to pod

* Move PodState to pod crate

* Use PodState from pod crate

* Fix use clause for json tests

* Sort out evmbin

* Add missing code and use PodState

* Move code that depends on Machine and Executive to own module

* Sort out cloning errors, fix ethcore to use new state crate

* Do without funky From impls

* Fix ethcore tests

* Fixes around the project to use new state crate

* Add back the more specific impls of StateOrBlock From conversions

* Move execute to freestanding function and remove it from trait
Sort out the error handling in executive_state by moving the result types from state to ethcore
Undo the verbose code added to work around the StateOrBlock From conversions

* cleanup

* Fix "error: enum variants on type aliases are experimental"

* Bring back the state tests
Fix whitespace

* remove ethcore/state/mod.rs

* cleanup

* cleanup

* Cleanup state-account errors

* Fix more todos
Add module docs

* Add error.rs

* Fixup Cargo.lock

* Smaller ethcore API is fine

* Add `to-pod-full` feature to state-account
Fix evmbin

* Fix a few more test failures

* Fix RPC test build

* Baptize the new trait

* Remove resolved TODOs

* Rename state-account to account-state

* Do not re-export the trace crate

* Don't export state_db from ethcore

* Let private-tx use StateDB. :(

* Remove ethcore/src/pod_state.rs

* Inner type does not need to be pub/pub(crate)

* optimise imports

* Revert "Inner type does not need to be pub/pub(crate)"

This reverts commit 2f839f8a0f72f71334da64620f57e6dd6039f06b.

* Move DatabaseExtras to ethcore-blockchain

* Add database_extra module to ethcore-blockchain

* Remove to-pod-full feature

* cosmetics

* New crate: state-db

* Add new crate

* Move PreverifiedBlock and BlockError to types

* Sort out the merge

* Add missing `license` meta data keys

* wip

* wip client-traits

* merge conflict

* verification crate type checks

* Move impls for CommonParams to common_types
Fix misc stuff in ethcore

* Fix tests

* Implement VerifyingEngine for all engines except Ethash
Temporarily sort out error handling
Move more types to common_types

* Split Engine in two and move code around

* cleanup

* verification: don't rexport common_types

* Use error from common_types

* Consolidate error types

* VerifyingEngine use Errors from common_types

* verification: Use error type from common_types

* SnapshotError moved to common_types

* Move more code from Engne to VerifyingEngine
Add a VerifyingClient trait: BlockInfo + CallContract
Whitespace

* Add MAX_UNCLE_AGE const

* Port over remaining code from ethcore/verification

* Use errors from common_types

* Fix the confusing "io" naming

* Move more types into common_types

* Add todos

* Experiment with Engine trait outside ethcore

* Hook up types from common_types in ethcore
Don't use verification crate
Don't use client-traits crate

* Revert to impl Engine for Arc<Ethash> and add note to explain why
Revert moving ClientIoMessage to common_types
Fix build

* Remove ClientIoMessage from common_types

* Cleanup

* More cleanup

* Sort error handling changes in the rest of parity

* Remove unused code

* Remove WIP types

* Cleanup todos not tackled here

* remove cruft

* Fix some whitespace and a merge error

* ethcore tests

* test failures

* Restore Engine impls to master to make review a bit easier

* cleanup

* whitespace

* applied review suggestions

* types does not depend on rustc-hex

* ethash engine moved to engine module

* applied review suggestion
2019-07-18 12:27:08 +02:00
Marek Kotewicz
7f707fa524 return block nonce when engine is clique (#10892)
* return block nonce when engine is clique, closes #10534

* Apply suggestions from code review

Co-Authored-By: Niklas Adolfsson <niklasadolfsson1@gmail.com>
2019-07-16 12:52:29 +02:00
Marek Kotewicz
c62e97d3c4 TransactionQueue::import accepts iterator (#10889) 2019-07-16 12:46:13 +02:00
Marek Kotewicz
27d1c2d7d1 rename is_pruned to is_prunable (#10888) 2019-07-16 12:45:24 +02:00
Marek Kotewicz
e3665ed9e3 simplify create_address_scheme (#10890)
* simplify create_address_scheme

* fix compilation errors
2019-07-16 12:43:46 +02:00
David
14e7641835 Move DatabaseExtras back to trace (#10868)
* Move DatabaseExtras back to trace
Add a new BlockChainWithExtras newtype to ethcore
Impl DatabaseExtras for BlockChainWithExtras

* Avoid double Arcs
Impl From for BlockChainWithExtras for convenient instantiation
Change TraceDB::new to take a T: DatabaseExtras (instead of an Arc)

* Use local type for BlockNumber and reduce dependencies

* Update ethcore/src/client/client.rs

Co-Authored-By: Tomasz Drwięga <tomusdrw@users.noreply.github.com>

* Update ethcore/src/client/client.rs

Co-Authored-By: Tomasz Drwięga <tomusdrw@users.noreply.github.com>

* Revert "Update ethcore/src/client/client.rs"

This reverts commit cbf8a251d4acaff8b29e999aedcdaac473ddf300.

* Revert "Update ethcore/src/client/client.rs"

This reverts commit 2518873b3139e832fa57c11793624bf1bfe48d05.

* address grumbles

* Be explicit about using the BlockProvider provided block_hash()
2019-07-14 18:35:43 +02:00
s3krit
5baa7e8fb5 Update README.md and Changelogs (#10866)
* Update README.md and Changelogs
* Update changelogs
2019-07-12 15:50:58 +02:00
Marek Kotewicz
cfe826fae9 whisper is no longer a part of parity-ethereum repo (#10855)
* whisper is no longer a part of parity-ethereum repo

* fix failing tests

* update whisper help with the link to the new repo

* Removed AttachedProtocols

* updated whisper info in README.md files

* Update parity/deprecated.rs

Co-Authored-By: Andronik Ordian <write@reusable.software>
2019-07-12 14:15:30 +02:00
Andronik Ordian
5a131175e8 [ethash] remove mem::uninitialized (#10861)
* [ethash] replace mem::uninitialized with MaybeUninit

* [ethash] replace another occurence of mem::uninitialized

* [ethash] remove last mem::uninitialized

* [ethash] clean up benches

* [ethash] update outdated comment

* [ethash] compile error on big endian targets

* [ethash] extract 32 into a constant

* [ethash] rename the constant to KECCAK_LEN

* [ethash] bench quick_get_difficulty

* [ethash] remove MaybeUninit completely

* [ethash] replace ptr::copy_nonoverlapping with copy_from_slice

* [ethash] s/header_len/hash_len

* [ethash] remove duplication in bench

* [ethash] add a config for basic benches

* [ethash] fix a typo in bench fn name

* [ethash] remove needless cast
2019-07-12 10:04:41 +02:00
TriplEight
d850eb0dd5 Docker images renaming (#10863)
* docker images renaming [skip ci]
2019-07-11 15:31:48 +02:00
Marek Kotewicz
34cdeac2a6 Move the substate module into ethcore/executive (#10867)
* substate is not a part of account-state

* fn cleanup_mode is a part of executive.rs

* test_cleanup_mode
2019-07-10 11:55:37 +03:00
David
f53c3e582c Run cargo fix on a few of the worst offenders (#10854)
* Run cargo fix on `vm`

* Run cargo fix on ethcore-db

* Run cargo fix on evm

* Run cargo fix on ethcore-light

* Run cargo fix on journaldb

* Run cargo fix on wasm

* Missing docs

* Run cargo fix on ethcore-sync
2019-07-09 09:04:20 +01:00
Marek Kotewicz
fdc7b0fdaa removed redundant fork choice abstraction (#10849) 2019-07-09 04:27:33 +02:00
David
0f337171bf Extract state-db from ethcore (#10858)
* WIP move errors, pod_account and state account to own crates

* Sort out dependencies, fix broken code and tests
Remove botched ethcore-error crate

* remove template line

* fix review feedback

* Remove test-only AccountDBMut::new

* Extract AccountDB to account-db

* Move Substate to state-account – wip

* Add lib.rs

* cleanup

* test failure

* test failure 2

* third time's the charm

* Add factories crate

* Use new factories crate

* Use factories crate

* Extract trace

* Fix tests

* Sort out parity-util-mem and parking_lot

* cleanup

* WIP port over the rest of state from ethcore

* Collect all impls for Machine

* some notes

* Rename pod-account to pod

* Move PodState to pod crate

* Use PodState from pod crate

* Fix use clause for json tests

* Sort out evmbin

* Add missing code and use PodState

* Move code that depends on Machine and Executive to own module

* Sort out cloning errors, fix ethcore to use new state crate

* Do without funky From impls

* Fix ethcore tests

* Fixes around the project to use new state crate

* Add back the more specific impls of StateOrBlock From conversions

* Move execute to freestanding function and remove it from trait
Sort out the error handling in executive_state by moving the result types from state to ethcore
Undo the verbose code added to work around the StateOrBlock From conversions

* cleanup

* Fix "error: enum variants on type aliases are experimental"

* Bring back the state tests
Fix whitespace

* remove ethcore/state/mod.rs

* cleanup

* cleanup

* Cleanup state-account errors

* Fix more todos
Add module docs

* Add error.rs

* Fixup Cargo.lock

* Smaller ethcore API is fine

* Add `to-pod-full` feature to state-account
Fix evmbin

* Fix a few more test failures

* Fix RPC test build

* Baptize the new trait

* Remove resolved TODOs

* Rename state-account to account-state

* Do not re-export the trace crate

* Don't export state_db from ethcore

* Let private-tx use StateDB. :(

* Remove ethcore/src/pod_state.rs

* Inner type does not need to be pub/pub(crate)

* optimise imports

* Revert "Inner type does not need to be pub/pub(crate)"

This reverts commit 2f839f8a0f72f71334da64620f57e6dd6039f06b.

* Move DatabaseExtras to ethcore-blockchain

* Add database_extra module to ethcore-blockchain

* Remove to-pod-full feature

* cosmetics

* New crate: state-db

* Add new crate

* Sort out the merge

* Fix unclean merge

* Add license
2019-07-08 22:01:47 +01:00
Nicolas Gotchac
073d242d1e Fix fork choice (#10837)
* Fix fork choice:
`is_from_route_finalized` check before switching to parent

* Add tests for `tree_route` with finalization

* Fix Cargo dependencies

* Add comment on `tree_route` for finalization.
Refactor a test.

* Fix compilation error

* Checkout Cargo.lock from master
2019-07-08 19:21:06 +02:00
David
44cc442d12 Move more code into state-account (#10840)
* WIP move errors, pod_account and state account to own crates

* Sort out dependencies, fix broken code and tests
Remove botched ethcore-error crate

* remove template line

* fix review feedback

* Remove test-only AccountDBMut::new

* Extract AccountDB to account-db

* Move Substate to state-account – wip

* Add lib.rs

* cleanup

* test failure

* test failure 2

* third time's the charm

* Add factories crate

* Use new factories crate

* Use factories crate

* Extract trace

* Fix tests

* Sort out parity-util-mem and parking_lot

* cleanup

* WIP port over the rest of state from ethcore

* Collect all impls for Machine

* some notes

* Rename pod-account to pod

* Move PodState to pod crate

* Use PodState from pod crate

* Fix use clause for json tests

* Sort out evmbin

* Add missing code and use PodState

* Move code that depends on Machine and Executive to own module

* Sort out cloning errors, fix ethcore to use new state crate

* Do without funky From impls

* Fix ethcore tests

* Fixes around the project to use new state crate

* Add back the more specific impls of StateOrBlock From conversions

* Move execute to freestanding function and remove it from trait
Sort out the error handling in executive_state by moving the result types from state to ethcore
Undo the verbose code added to work around the StateOrBlock From conversions

* cleanup

* Fix "error: enum variants on type aliases are experimental"

* Bring back the state tests
Fix whitespace

* remove ethcore/state/mod.rs

* cleanup

* cleanup

* Cleanup state-account errors

* Fix more todos
Add module docs

* Add error.rs

* Fixup Cargo.lock

* Smaller ethcore API is fine

* Add `to-pod-full` feature to state-account
Fix evmbin

* Fix a few more test failures

* Fix RPC test build

* Baptize the new trait

* Remove resolved TODOs

* Rename state-account to account-state

* Do not re-export the trace crate

* Don't export state_db from ethcore

* Let private-tx use StateDB. :(

* Remove ethcore/src/pod_state.rs

* Inner type does not need to be pub/pub(crate)

* optimise imports

* Revert "Inner type does not need to be pub/pub(crate)"

This reverts commit 2f839f8a0f72f71334da64620f57e6dd6039f06b.

* Move DatabaseExtras to ethcore-blockchain

* Add database_extra module to ethcore-blockchain

* Remove to-pod-full feature

* Sort out the merge

* sort imports

* address grumbles

* rename crate

* address more grumbles
2019-07-08 18:17:48 +02:00
Anton Gavrilov
d5c19bae1c Remove compiler warning (#10865) 2019-07-08 18:04:18 +02:00
Andronik Ordian
88e0cfe5ca [ethash] use static_assertions crate (#10860) 2019-07-08 17:25:49 +02:00
Wei Tang
141f6a047e EIP-1702: Generalized Account Versioning Scheme (#10771)
* EIP-1702: Generalized Account Versioning Scheme

* Fix pWASM's `create` and `create2` contract creation version

* Update ethcore/src/snapshot/account.rs

Co-Authored-By: Andronik Ordian <write@reusable.software>

* Update ethcore/src/factory.rs

Co-Authored-By: Andronik Ordian <write@reusable.software>

* Add pWasm frontend config

* Add snapshot testing with version

* Fix merge conflict
2019-07-08 12:03:27 +02:00
Marek Kotewicz
fe7bc545bf ethcore-builtin (#10850)
* ethcore-builtin

* rename ethcore-builtin Impl to Implementation
2019-07-07 16:59:30 +02:00
Marek Kotewicz
c4c5d79a0f removed QueueError type (#10852) 2019-07-06 20:40:56 +02:00
Marek Kotewicz
0a9095626d removed unused macros (#10851) 2019-07-06 20:38:33 +02:00
Marek Kotewicz
a6e96b052e bump crossbeam (#10848) 2019-07-06 16:16:53 +02:00
Marek Kotewicz
86ef490a94 removed unused trait PrivateNotify and unused Error types (#10847) 2019-07-05 19:14:01 +02:00
Marek Kotewicz
b97bf81adf make fn submit_seal more idiomatic (#10843)
* make fn submit_seal more idiomatic

* applied review suggestions
2019-07-05 18:58:45 +02:00
Marek Kotewicz
d5584a01c7 update parking-lot to 0.8 (#10845) 2019-07-05 15:19:38 +02:00
s3krit
d83798db62 Update version to 2.7.0 (#10846) 2019-07-05 11:49:51 +02:00
1076 changed files with 99304 additions and 71452 deletions

View File

@@ -18,10 +18,13 @@ rustflags = ["-Ctarget-feature=+aes,+sse2,+ssse3"]
[target.x86_64-pc-windows-msvc] [target.x86_64-pc-windows-msvc]
# Enables the aes-ni instructions for RustCrypto dependency. # Enables the aes-ni instructions for RustCrypto dependency.
# Link the C runtime statically ; https://github.com/paritytech/parity-ethereum/issues/6643 # Link the C runtime statically ; https://github.com/openethereum/openethereum/issues/6643
rustflags = ["-Ctarget-feature=+aes,+sse2,+ssse3", "-Ctarget-feature=+crt-static"] rustflags = ["-Ctarget-feature=+aes,+sse2,+ssse3", "-Ctarget-feature=+crt-static"]
[target.x86_64-apple-darwin] [target.x86_64-apple-darwin]
# Enables the aes-ni instructions for RustCrypto dependency. # Enables the aes-ni instructions for RustCrypto dependency.
rustflags = ["-Ctarget-feature=+aes,+sse2,+ssse3"] rustflags = ["-Ctarget-feature=+aes,+sse2,+ssse3"]
[target.x86_64-unknown-linux-musl]
# Enables the aes-ni instructions for RustCrypto dependency.
rustflags = ["-Ctarget-feature=+aes,+sse2,+ssse3"]

View File

@@ -16,7 +16,7 @@ target
# idea ide # idea ide
.idea .idea
# git stuff # git folder is not ignored so vergen library can get the commit hash and date for the build
.git #.git
ethcore/res/ethereum/tests ethcore/res/ethereum/tests

View File

@@ -2,11 +2,11 @@
## 1. Purpose ## 1. Purpose
A primary goal of Parity is to be inclusive to the largest number of contributors, with the most varied and diverse backgrounds possible. As such, we are committed to providing a friendly, safe and welcoming environment for all, regardless of gender, sexual orientation, ability, ethnicity, socioeconomic status, and religion (or lack thereof). A primary goal of OpenEthereum project is to be inclusive to the largest number of contributors, with the most varied and diverse backgrounds possible. As such, we are committed to providing a friendly, safe and welcoming environment for all, regardless of gender, sexual orientation, ability, ethnicity, socioeconomic status, and religion (or lack thereof).
This code of conduct outlines our expectations for all those who participate in our community, as well as the consequences for unacceptable behavior. This code of conduct outlines our expectations for all those who participate in our community, as well as the consequences for unacceptable behavior.
We invite all those who participate in Parity to help us create safe and positive experiences for everyone. We invite all those who participate in OpenEthereum to help us create safe and positive experiences for everyone.
## 2. Open Source Citizenship ## 2. Open Source Citizenship

View File

@@ -10,11 +10,11 @@ See also frequently asked questions [tagged with `parity`](https://ethereum.stac
Do **not** open an issue on Github if you think your discovered bug could be a **security-relevant vulnerability**. Please, read our [security policy](../SECURITY.md) instead. Do **not** open an issue on Github if you think your discovered bug could be a **security-relevant vulnerability**. Please, read our [security policy](../SECURITY.md) instead.
Otherwise, just create a [new issue](https://github.com/paritytech/parity-ethereum/issues/new) in our repository and state: Otherwise, just create a [new issue](https://github.com/openethereum/openethereum/issues/new) in our repository and state:
- What's your Parity Ethereum version? - What's your OpenEthereum version?
- What's your operating system and version? - What's your operating system and version?
- How did you install Parity Ethereum? - How did you install OpenEthereum?
- Is your node fully synchronized? - Is your node fully synchronized?
- Did you try turning it off and on again? - Did you try turning it off and on again?
@@ -22,11 +22,11 @@ Also, try to include **steps to reproduce** the issue and expand on the **actual
## Contribute! ## Contribute!
If you would like to contribute to Parity Ethereum, please **fork it**, fix bugs or implement features, and [propose a pull request](https://github.com/paritytech/parity-ethereum/compare). If you would like to contribute to OpenEthereum, please **fork it**, fix bugs or implement features, and [propose a pull request](https://github.com/openethereum/openethereum/compare).
### Labels & Milestones ### Labels & Milestones
We use [labels](https://github.com/paritytech/parity-ethereum/labels) to manage PRs and issues and communicate the state of a PR. Please familiarize yourself with them. Furthermore we are organizing issues in [milestones](https://github.com/paritytech/parity-ethereum/milestones). Best way to get started is to a pick a ticket from the current milestone tagged [`easy`](https://github.com/paritytech/parity-ethereum/labels/Q2-easy%20%F0%9F%92%83) and get going, or [`mentor`](https://github.com/paritytech/parity-ethereum/labels/Q1-mentor%20%F0%9F%95%BA) and get in contact with the mentor offering their support on that larger task. We use [labels](https://github.com/openethereum/openethereum/labels) to manage PRs and issues and communicate the state of a PR. Please familiarize yourself with them. Furthermore we are organizing issues in [milestones](https://github.com/openethereum/openethereum/milestones). Best way to get started is to a pick a ticket from the current milestone tagged [`easy`](https://github.com/openethereum/openethereum/labels/Q2-easy%20%F0%9F%92%83) and get going, or [`mentor`](https://github.com/openethereum/openethereum/labels/Q1-mentor%20%F0%9F%95%BA) and get in contact with the mentor offering their support on that larger task.
### Rules ### Rules
@@ -39,18 +39,18 @@ There are a few basic ground-rules for contributors (including the maintainer(s)
### Recommendations ### Recommendations
* **Non-master branch names** *should* be prefixed with a short name moniker, followed by the associated Github Issue ID (if any), and a brief description of the task using the format `<GITHUB_USERNAME>-<ISSUE_ID>-<BRIEF_DESCRIPTION>` (e.g. `gavin-123-readme`). The name moniker helps people to inquiry about their unfinished work, and the GitHub Issue ID helps your future self and other developers (particularly those who are onboarding) find out about and understand the original scope of the task, and where it fits into Parity Ethereum [Projects](https://github.com/paritytech/parity-ethereum/projects). * **Non-master branch names** *should* be prefixed with a short name moniker, followed by the associated Github Issue ID (if any), and a brief description of the task using the format `<GITHUB_USERNAME>-<ISSUE_ID>-<BRIEF_DESCRIPTION>` (e.g. `gavin-123-readme`). The name moniker helps people to inquiry about their unfinished work, and the GitHub Issue ID helps your future self and other developers (particularly those who are onboarding) find out about and understand the original scope of the task, and where it fits into OpenEthereum [Projects](https://github.com/openethereum/openethereum/projects).
* **Remove stale branches periodically** * **Remove stale branches periodically**
### Preparing Pull Requests ### Preparing Pull Requests
* If your PR does not alter any logic (e.g. comments, dependencies, docs), then it may be tagged [`insubstantial`](https://github.com/paritytech/parity-ethereum/pulls?q=is%3Aopen+is%3Apr+label%3A%22A2-insubstantial+%F0%9F%91%B6%22). * If your PR does not alter any logic (e.g. comments, dependencies, docs), then it may be tagged [`insubstantial`](https://github.com/openethereum/openethereum/pulls?q=is%3Aopen+is%3Apr+label%3A%22A2-insubstantial+%F0%9F%91%B6%22).
* Once a PR is ready for review please add the [`pleasereview`](https://github.com/paritytech/parity-ethereum/pulls?utf8=%E2%9C%93&q=is%3Aopen+is%3Apr+label%3A%22A0-pleasereview+%F0%9F%A4%93%22+) label. * Once a PR is ready for review please add the [`pleasereview`](https://github.com/openethereum/openethereum/pulls?utf8=%E2%9C%93&q=is%3Aopen+is%3Apr+label%3A%22A0-pleasereview+%F0%9F%A4%93%22+) label.
### Reviewing Pull Requests*: ### Reviewing Pull Requests*:
* At least two reviewers are required to review PRs (even for PRs tagged [`insubstantial`](https://github.com/paritytech/parity-ethereum/pulls?q=is%3Aopen+is%3Apr+label%3A%22A2-insubstantial+%F0%9F%91%B6%22)). * At least two reviewers are required to review PRs (even for PRs tagged [`insubstantial`](https://github.com/openethereum/openethereum/pulls?q=is%3Aopen+is%3Apr+label%3A%22A2-insubstantial+%F0%9F%91%B6%22)).
When doing a review, make sure to look for any: When doing a review, make sure to look for any:
@@ -63,6 +63,4 @@ When doing a review, make sure to look for any:
## License. ## License.
By contributing to Parity Ethereum, you agree that your contributions will be licensed under the [GPLv3 License](../LICENSE). By contributing to OpenEthereum, you agree that your contributions will be licensed under the [GPLv3 License](../LICENSE).
Each contributor has to sign our Contributor License Agreement. The purpose of the CLA is to ensure that the guardian of a project's outputs has the necessary ownership or grants of rights over all contributions to allow them to distribute under the chosen license. You can read and sign our full Contributor License Agreement at [cla.parity.io](https://cla.parity.io) before submitting a pull request.

View File

@@ -1,10 +1,10 @@
_Before filing a new issue, please **provide the following information**._ _Before filing a new issue, please **provide the following information**._
_If you think that your issue is an exploitable security vulnerability, please mail your bugreport to security@parity.io instead; your submission might be eligible for our Bug Bounty._ _If you think that your issue is an exploitable security vulnerability, please mail your bugreport to security@parity.io instead; your submission might be eligible for our Bug Bounty._
_You can find mode info on the reporting process in [SECURITY.md](https://github.com/paritytech/parity-ethereum/blob/master/SECURITY.md)_ _You can find mode info on the reporting process in [SECURITY.md](https://github.com/openethereum/openethereum/blob/master/SECURITY.md)_
- **Parity Ethereum version**: 0.0.0 - **OpenEthereum version**: 0.0.0
- **Operating system**: Windows / MacOS / Linux - **Operating system**: Windows / MacOS / Linux
- **Installation**: homebrew / one-line installer / built from source - **Installation**: homebrew / one-line installer / built from source
- **Fully synchronized**: no / yes - **Fully synchronized**: no / yes
@@ -12,4 +12,3 @@ _You can find mode info on the reporting process in [SECURITY.md](https://github
- **Restarted**: no / yes - **Restarted**: no / yes
_Your issue description goes here below. Try to include **actual** vs. **expected behavior** and **steps to reproduce** the issue._ _Your issue description goes here below. Try to include **actual** vs. **expected behavior** and **steps to reproduce** the issue._

18
.github/workflows/audit.yml vendored Normal file
View File

@@ -0,0 +1,18 @@
name: Security audit
on:
pull_request:
paths: Cargo.lock
schedule:
- cron: '0 0 * * *'
jobs:
security_audit:
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v1
with:
fetch-depth: 50
- name: Run cargo audit
uses: actions-rs/audit-check@v1
with:
token: ${{ secrets.GITHUB_TOKEN }}

103
.github/workflows/build-test.yml vendored Normal file
View File

@@ -0,0 +1,103 @@
name: Build and Test Suite
on:
pull_request:
push:
branches:
- master
- stable
jobs:
build-tests:
name: Test and Build
env:
SCCACHE_CACHE_SIZE: "1G"
SCCACHE_IDLE_TIMEOUT: 0
strategy:
matrix:
platform:
- ubuntu-16.04
- macos-latest
- windows-latest
toolchain:
- stable
runs-on: ${{ matrix.platform }}
steps:
- name: Checkout sources
uses: actions/checkout@master
with:
submodules: true
# https://github.com/actions/cache/issues/133
- name: Fixup the owner of ~/.cargo/
if: matrix.platform == 'ubuntu-16.04'
run: sudo chown -R $(whoami):$(id -ng) ~/.cargo/
- name: Install toolchain
uses: actions-rs/toolchain@v1
with:
toolchain: ${{ matrix.toolchain }}
profile: minimal
override: true
- name: Cache cargo registry
uses: actions/cache@v1.1.2
with:
path: ~/.cargo/registry
key: ${{ runner.os }}-cargo-registry-build-tests-${{ hashFiles('**/Cargo.lock') }}
- name: Cache cargo index
uses: actions/cache@v1.1.2
with:
path: ~/.cargo/git
key: ${{ runner.os }}-cargo-git-build-tests-${{ hashFiles('**/Cargo.lock') }}
- name: Cache cargo build
uses: actions/cache@v1.1.2
with:
path: target
key: ${{ runner.os }}-cargo-build-target-build-tests-${{ hashFiles('**/Cargo.lock') }}
- name: Cache sccache linux
if: matrix.platform == 'ubuntu-16.04'
uses: actions/cache@v1.1.2
with:
path: "/home/runner/.cache/sccache"
key: ${{ runner.os }}-sccache-build-tests-${{ hashFiles('**/Cargo.lock') }}
- name: Cache sccache MacOS
if: matrix.platform == 'macos-latest'
uses: actions/cache@v1.1.2
with:
path: "/Users/runner/Library/Caches/Mozilla.sccache"
key: ${{ runner.os }}-sccache-build-tests-${{ hashFiles('**/Cargo.lock') }}
- name: Cache sccache Windows
if: matrix.platform == 'windows-latest'
uses: actions/cache@v1.1.2
with:
path: "C:\\Users\\runneradmin\\AppData\\Local\\Mozilla\\sccache\\cache"
key: ${{ runner.os }}-sccache-build-tests-${{ hashFiles('**/Cargo.lock') }}
- name: Install sccache for ${{ matrix.platform }}
shell: pwsh
run: pwsh scripts/actions/install-sccache.ps1 ${{ runner.os}}
- name: Install LLVM for Windows
if: matrix.platform == 'windows-latest'
run: choco install llvm
- name: Sccache statistics
run: sccache --show-stats
- name: Build tests
uses: actions-rs/cargo@v1
with:
command: test
args: --locked --all --release --features "json-tests" --verbose --no-run
- name: Run tests for ${{ matrix.platform }}
if: matrix.platform == 'windows-latest'
continue-on-error: true #Skip step if Windows tests failure
uses: actions-rs/cargo@v1
with:
command: test
args: --locked --all --release --features "json-tests" --verbose
- name: Run tests for ${{ matrix.platform }}
if: matrix.platform != 'windows-latest'
uses: actions-rs/cargo@v1
with:
command: test
args: --locked --all --release --features "json-tests" --verbose
- name: Stop sccache
if: always()
run: sccache --stop-server
- name: Prepare build directory for cache
shell: bash
run: bash scripts/actions/clean-target.sh

95
.github/workflows/build.yml vendored Normal file
View File

@@ -0,0 +1,95 @@
name: Build Release Suite
on:
push:
branches:
- stable
tags:
- v*
jobs:
build:
name: Build Release
env:
SCCACHE_CACHE_SIZE: "1G"
SCCACHE_IDLE_TIMEOUT: 0
strategy:
matrix:
platform:
- ubuntu-16.04
- macos-latest
- windows-latest
toolchain:
- stable
runs-on: ${{ matrix.platform }}
steps:
- name: Checkout sources
uses: actions/checkout@master
# https://github.com/actions/cache/issues/133
- name: Fixup the owner of ~/.cargo/
if: matrix.platform == 'ubuntu-16.04'
run: sudo chown -R $(whoami):$(id -ng) ~/.cargo/
- name: Install toolchain
uses: actions-rs/toolchain@v1
with:
toolchain: ${{ matrix.toolchain }}
profile: minimal
override: true
- name: Cache cargo registry
uses: actions/cache@v1.1.2
with:
path: ~/.cargo/registry
key: ${{ runner.os }}-cargo-registry-build-${{ hashFiles('**/Cargo.lock') }}
- name: Cache cargo index
uses: actions/cache@v1.1.2
with:
path: ~/.cargo/git
key: ${{ runner.os }}-cargo-git-build-${{ hashFiles('**/Cargo.lock') }}
- name: Cache cargo build
uses: actions/cache@v1.1.2
with:
path: target
key: ${{ runner.os }}-cargo-build-target-build-${{ hashFiles('**/Cargo.lock') }}
- name: Cache sccache linux
if: matrix.platform == 'ubuntu-16.04'
uses: actions/cache@v1.1.2
with:
path: "/home/runner/.cache/sccache"
key: ${{ runner.os }}-sccache-build-${{ hashFiles('**/Cargo.lock') }}
- name: Cache sccache MacOS
if: matrix.platform == 'macos-latest'
uses: actions/cache@v1.1.2
with:
path: "/Users/runner/Library/Caches/Mozilla.sccache"
key: ${{ runner.os }}-sccache-build-${{ hashFiles('**/Cargo.lock') }}
- name: Cache sccache Windows
if: matrix.platform == 'windows-latest'
uses: actions/cache@v1.1.2
with:
path: "C:\\Users\\runneradmin\\AppData\\Local\\Mozilla\\sccache\\cache"
key: ${{ runner.os }}-sccache-build-${{ hashFiles('**/Cargo.lock') }}
- name: Install sccache for ${{ matrix.platform }}
shell: pwsh
run: pwsh scripts/actions/install-sccache.ps1 ${{ runner.os}}
- name: Install LLVM for Windows
if: matrix.platform == 'windows-latest'
run: choco install llvm
- name: Sccache statistics
run: sccache --show-stats
- name: Build OpenEthereum for windows
if: matrix.platform == 'windows-latest'
run: sh scripts/actions/build-windows.sh ${{matrix.platform}}
- name: Build OpenEthereum for ${{matrix.platform}}
if: matrix.platform != 'windows-latest'
run: sh scripts/actions/build-linux.sh ${{matrix.platform}}
- name: Stop sccache
if: always()
run: sccache --stop-server
- name: Download artifact
uses: actions/upload-artifact@v1
with:
name: ${{matrix.platform}}.artifacts.zip
path: artifacts/
- name: Prepare build directory for cache
shell: bash
run: bash scripts/actions/clean-target.sh

88
.github/workflows/check.yml vendored Normal file
View File

@@ -0,0 +1,88 @@
name: Check
on:
pull_request:
push:
branches:
- master
- stable
jobs:
check:
name: Check
runs-on: ubuntu-16.04
env:
SCCACHE_CACHE_SIZE: "1G"
SCCACHE_IDLE_TIMEOUT: 0
steps:
- name: Checkout sources
uses: actions/checkout@master
with:
submodules: true
# https://github.com/actions/cache/issues/133
- name: Fixup the owner of ~/.cargo/
run: sudo chown -R $(whoami):$(id -ng) ~/.cargo/
- name: Install stable toolchain
uses: actions-rs/toolchain@v1
with:
toolchain: stable
profile: minimal
override: true
- name: Cache cargo registry
uses: actions/cache@v1.1.2
with:
path: ~/.cargo/registry
key: ${{ runner.os }}-cargo-registry-${{ hashFiles('**/Cargo.lock') }}
- name: Cache cargo index
uses: actions/cache@v1.1.2
with:
path: ~/.cargo/git
key: ${{ runner.os }}-cargo-git-${{ hashFiles('**/Cargo.lock') }}
- name: Cache cargo build
uses: actions/cache@v1.1.2
with:
path: target
key: ${{ runner.os }}-cargo-build-target-${{ hashFiles('**/Cargo.lock') }}
# Install sccache based on https://github.com/denoland/rusty_v8/blob/master/.github/workflows/ci.yml#L69
- name: Cache sccache
uses: actions/cache@v1.1.2
with:
path: "/home/runner/.cache/sccache"
key: ${{ runner.os }}-sccache-check-${{ hashFiles('**/Cargo.lock') }}
- name: Install sccache for Linux
shell: pwsh
run: pwsh scripts/actions/install-sccache.ps1 ${{ runner.os}}
- name: Sccache statistics
run: sccache --show-stats
- name: Run cargo check 1/3
uses: actions-rs/cargo@v1
with:
command: check
args: --locked --no-default-features --verbose
- name: Run cargo check 2/3
uses: actions-rs/cargo@v1
with:
command: check
args: --locked --manifest-path util/io/Cargo.toml --no-default-features --verbose
- name: Run cargo check 3/3
uses: actions-rs/cargo@v1
with:
command: check
args: --locked --manifest-path util/io/Cargo.toml --features "mio" --verbose
- name: Run cargo check evmbin
uses: actions-rs/cargo@v1
with:
command: check
args: --locked -p evmbin --verbose
- name: Run cargo check benches
uses: actions-rs/cargo@v1
with:
command: check
args: --locked --all --benches --verbose
- name: Run validate chainspecs
run: ./scripts/actions/validate-chainspecs.sh
- name: Stop sccache
if: always()
run: sccache --stop-server
- name: Prepare build directory for cache
shell: bash
run: bash scripts/actions/clean-target.sh

30
.github/workflows/deploy-docker.yml vendored Normal file
View File

@@ -0,0 +1,30 @@
name: Docker Image Release
on:
push:
branches:
- master
tags:
- v*
jobs:
deploy-docker:
name: Build Release
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@master
- name: Install toolchain
uses: actions-rs/toolchain@v1
with:
toolchain: stable
profile: minimal
override: true
- name: Deploy to docker hub
uses: elgohr/Publish-Docker-Github-Action@master
with:
name: openethereum/openethereum
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
dockerfile: scripts/docker/alpine/Dockerfile
tag_names: true

2
.gitignore vendored
View File

@@ -42,4 +42,4 @@ parity-clib-examples/cpp/build/
.vscode .vscode
rls/ rls/
/parity.* /openethereum.*

View File

@@ -1,325 +0,0 @@
stages:
- test
- build
- publish
- optional
image: parity/parity-ci-linux:latest
variables:
GIT_STRATEGY: fetch
GIT_SUBMODULE_STRATEGY: recursive
CI_SERVER_NAME: "GitLab CI"
CARGO_HOME: "/ci-cache/${CI_PROJECT_NAME}/cargo/${CI_JOB_NAME}"
SCCACHE_DIR: "/ci-cache/${CI_PROJECT_NAME}/sccache"
CARGO_TARGET: x86_64-unknown-linux-gnu
.no_git: &no_git # disable git strategy
variables:
GIT_STRATEGY: none
GIT_SUBMODULE_STRATEGY: none
.releaseable_branches: # list of git refs for building GitLab artifacts (think "pre-release binaries")
only: &releaseable_branches
- stable
- beta
- tags
- schedules
.collect_artifacts: &collect_artifacts
artifacts:
name: "${CI_JOB_NAME}_${SCHEDULE_TAG:-${CI_COMMIT_REF_NAME}}"
when: on_success
expire_in: 1 mos
paths:
- artifacts/
- tools/
.docker-cache-status: &docker-cache-status
variables:
CARGO_HOME: "/ci-cache/parity-ethereum/cargo/${CI_JOB_NAME}"
dependencies: []
before_script:
- rustup show
- cargo --version
- SCCACHE_ERROR_LOG=/builds/parity/parity-ethereum/sccache_debug.log
RUST_LOG=sccache=debug
sccache --start-server
- sccache -s
after_script:
# sccache debug info
- if test -e sccache_debug.log;
then
echo "_____All crate-types:_____";
grep 'parse_arguments.*--crate-type' sccache_debug.log | sed -re 's/.*"--crate-type", "([^"]+)".*/\1/' | sort | uniq -c;
echo "_____Non-cacheable reasons:_____";
grep CannotCache sccache_debug.log | sed -re 's/.*CannotCache\((.+)\).*/\1/' | sort | uniq -c;
else
echo "_____No logs from sccache_____";
exit 0;
fi
tags:
- linux-docker
.build-on-linux: &build-on-linux
stage: build
<<: *docker-cache-status
<<: *collect_artifacts
script:
- scripts/gitlab/build-linux.sh
- sccache -s
after_script:
- mkdir -p tools
- cp -r scripts/docker/hub/* ./tools
- cp scripts/gitlab/publish-snap.sh ./tools
- cp scripts/gitlab/publish-onchain.sh ./tools
- cp scripts/gitlab/safe-curl.sh ./tools
- echo v"$(sed -r -n '1,/^version/s/^version\s*=\s*"([^"]+)".*$/\1/p' Cargo.toml)" |
tee ./tools/VERSION
- echo "$(sed -r -n '1,/^track/s/^track\s*=\s*"([^"]+)".*$/\1/p' ./util/version/Cargo.toml)" |
tee ./tools/TRACK
cargo-check 0 3:
stage: test
<<: *docker-cache-status
script:
- time cargo check --target $CARGO_TARGET --locked --no-default-features --verbose --color=always
- sccache -s
cargo-check 1 3:
stage: test
<<: *docker-cache-status
script:
- time cargo check --target $CARGO_TARGET --locked --manifest-path util/io/Cargo.toml --no-default-features --verbose --color=always
- sccache -s
cargo-check 2 3:
stage: test
<<: *docker-cache-status
script:
- time cargo check --target $CARGO_TARGET --locked --manifest-path util/io/Cargo.toml --features "mio" --verbose --color=always
- sccache -s
cargo-audit:
stage: test
<<: *docker-cache-status
script:
- cargo audit
allow_failure: true # failed cargo audit shouldn't prevent a PR from being merged
validate-chainspecs:
stage: test
<<: *docker-cache-status
script:
- ./scripts/gitlab/validate-chainspecs.sh
- sccache -s
test-cpp:
stage: build
<<: *docker-cache-status
script:
- ./scripts/gitlab/test-cpp.sh
- sccache -s
test-linux:
stage: build
<<: *docker-cache-status
script:
- ./scripts/gitlab/test-linux.sh stable
- sccache -s
test-linux-beta:
stage: build
only: *releaseable_branches
<<: *docker-cache-status
script:
- ./scripts/gitlab/test-linux.sh beta
- sccache -s
test-linux-nightly:
stage: build
only: *releaseable_branches
<<: *docker-cache-status
script:
- ./scripts/gitlab/test-linux.sh nightly
- sccache -s
allow_failure: true
build-android:
<<: *build-on-linux
image: parity/rust-parity-ethereum-android-build:stretch
variables:
CARGO_TARGET: armv7-linux-androideabi
build-linux:
<<: *build-on-linux
only: *releaseable_branches
build-linux-i386:
<<: *build-on-linux
only: *releaseable_branches
image: parity/rust-parity-ethereum-build:i386
variables:
CARGO_TARGET: i686-unknown-linux-gnu
build-linux-arm64:
<<: *build-on-linux
only: *releaseable_branches
image: parity/rust-parity-ethereum-build:arm64
variables:
CARGO_TARGET: aarch64-unknown-linux-gnu
build-linux-armhf:
<<: *build-on-linux
only: *releaseable_branches
image: parity/rust-parity-ethereum-build:armhf
variables:
CARGO_TARGET: armv7-unknown-linux-gnueabihf
build-darwin:
stage: build
<<: *collect_artifacts
only: *releaseable_branches
variables:
CARGO_TARGET: x86_64-apple-darwin
CARGO_HOME: "${CI_PROJECT_DIR}/.cargo"
CC: gcc
CXX: g++
script:
- scripts/gitlab/build-linux.sh
tags:
- rust-osx
build-windows:
stage: build
<<: *collect_artifacts
only: *releaseable_branches
variables:
CARGO_TARGET: x86_64-pc-windows-msvc
CARGO_HOME: "C:/ci-cache/parity-ethereum/cargo/$CI_JOB_NAME"
GIT_SUBMODULE_STRATEGY: none
script:
- sh scripts/gitlab/build-windows.sh
tags:
- rust-windows
publish-docker:
stage: publish
<<: *no_git
only: *releaseable_branches
except:
variables:
- $SCHEDULE_TAG == "nightly"
dependencies:
- build-linux
environment:
name: parity-build
cache: {}
image: docker:stable
services:
- docker:dind
variables:
DOCKER_HOST: tcp://localhost:2375
DOCKER_DRIVER: overlay2
GIT_STRATEGY: none
# DOCKERFILE: tools/Dockerfile
# CONTAINER_IMAGE: parity/parity
script:
# we stopped pushing nightlies to dockerhub, will push to own registry prb.
- ./tools/publish-docker.sh
tags:
- kubernetes-parity-build
publish-snap: &publish-snap
stage: publish
<<: *no_git
only: *releaseable_branches
image: snapcore/snapcraft
variables:
BUILD_ARCH: amd64
cache: {}
dependencies:
- build-linux
tags:
- linux-docker
script:
- ./tools/publish-snap.sh
publish-snap-i386:
<<: *publish-snap
variables:
BUILD_ARCH: i386
CARGO_TARGET: i686-unknown-linux-gnu
dependencies:
- build-linux-i386
publish-snap-arm64:
<<: *publish-snap
variables:
BUILD_ARCH: arm64
CARGO_TARGET: aarch64-unknown-linux-gnu
dependencies:
- build-linux-arm64
publish-snap-armhf:
<<: *publish-snap
variables:
BUILD_ARCH: armhf
CARGO_TARGET: armv7-unknown-linux-gnueabihf
dependencies:
- build-linux-armhf
publish-onchain:
stage: publish
<<: *no_git
only: *releaseable_branches
cache: {}
dependencies:
- build-linux
- build-darwin
- build-windows
script:
- ./tools/publish-onchain.sh
tags:
- linux-docker
publish-awss3-release:
image: parity/awscli:latest
stage: publish
only: *releaseable_branches
<<: *no_git
cache: {}
dependencies:
- build-linux
- build-darwin
- build-windows
script:
- echo "__________Push binaries to AWS S3____________"
- case "${SCHEDULE_TAG:-${CI_COMMIT_REF_NAME}}" in
(beta|stable|nightly)
export BUCKET=releases.parity.io/ethereum;
;;
(*)
export BUCKET=builds-parity;
;;
esac
- aws s3 sync ./artifacts s3://${BUCKET}/${SCHEDULE_TAG:-${CI_COMMIT_REF_NAME}}/
- echo "__________Read from S3____________"
- aws s3 ls s3://${BUCKET}/${SCHEDULE_TAG:-${CI_COMMIT_REF_NAME}} --recursive --human-readable --summarize
tags:
- linux-docker
publish-docs:
stage: publish
image: parity/rust-parity-ethereum-docs:xenial
only:
- tags
except:
- nightly
cache: {}
dependencies: []
script:
- scripts/gitlab/publish-docs.sh
tags:
- linux-docker
allow_failure: true

2
.gitmodules vendored
View File

@@ -4,4 +4,4 @@
branch = develop branch = develop
[submodule "ethcore/res/wasm-tests"] [submodule "ethcore/res/wasm-tests"]
path = ethcore/res/wasm-tests path = ethcore/res/wasm-tests
url = https://github.com/paritytech/wasm-tests url = https://github.com/openethereum/wasm-tests

View File

@@ -1,164 +1,123 @@
## Parity-Ethereum [v2.4.3](https://github.com/paritytech/parity-ethereum/releases/tag/v2.4.3) (2019-03-22) ## OpenEthereum [v3.0.1](https://github.com/openethereum/openethereum/releases/tag/v3.0.1)
Parity-Ethereum 2.4.3-beta is a bugfix release that improves performance and stability. This patch release contains a critical bug fix where serving light clients previously led to client crashes. Upgrading is highly recommended. - Add missing forks to fork ID (#11747)
## OpenEthereum [v3.0.0](https://github.com/openethereum/openethereum/releases/tag/v3.0.0)
OpenEthereum v3.0.0 is the first release of OpenEthereum client as part of OpenEthereum project, divested from Parity Technologies.
This release marks the transition from Parity Technologies infrastructure and bootnodes to the one managed by OpenEthereum project.
Parity-Ethereum v2.7 users can continue using their existing data folders. Command-line interface has also stayed identical.
Unless specified otherwise, OpenEthereum v3.0.0 will detect if the user's database in the old Parity-Ethereum default path,
and only if it's not found will write to the new default location.
This release includes several major improvements to network and database stack:
- Support for `eth/64` protocol and Node Discovery v4 `Ethereum Node Records` extension.
- Accounts bloom is removed which should decrease the database size.
**Due to database changes this is a one-way upgrade. Please back up your database if you plan to continue using Parity-Ethereum v2.7.2.**
Note that this release drops support for IPFS and `eth/62` protocol. Additionally, it marks light client, private transactions and updater as deprecated features which may be removed in a future release.
The full list of included changes: The full list of included changes:
- 2.4.3 beta backports ([#10508](https://github.com/paritytech/parity-ethereum/pull/10508)) - Add deprecation warnings (#11682)
- Version: bump beta - Add Curl to Docker image (#11687)
- Add additional request tests ([#10503](https://github.com/paritytech/parity-ethereum/pull/10503)) - v3 release version strings and track stable (#11680)
- Fix sccache server errors (#11675)
## Parity-Ethereum [v2.4.2](https://github.com/paritytech/parity-ethereum/releases/tag/v2.4.2) (2019-03-20) - Don't delete old db after migration (#11662)
- rename inject to drain_transaction_overlay (#11657)
Parity-Ethereum 2.4.2-beta is a bugfix release that improves performance and stability. - Drain the transaction overlay (#11654)
- vergen library seems to depend not only on the .git folder content but also on the git binary (#11651)
The full list of included changes: - New default paths (#11641)
- 2.4.2 beta backports ([#10488](https://github.com/paritytech/parity-ethereum/pull/10488)) - Update EWF's chains with Istanbul transition block numbers (#11482)
- Version: bump beta - add openethereum supplementary bootnodes, those are not active right now, but will be in case the network needs more power (#11650)
- Сaching through docker volume ([#10477](https://github.com/paritytech/parity-ethereum/pull/10477)) - Remove Parity bootnodes (#11644)
- fix win&mac build ([#10486](https://github.com/paritytech/parity-ethereum/pull/10486)) - Remove accounts bloom (#11589)
- fix(extract `timestamp_checked_add` as lib) ([#10383](https://github.com/paritytech/parity-ethereum/pull/10383)) - Deploy docker images on master (#11640)
- Fix some compiler warnings (#11632)
## Parity-Ethereum [v2.4.1](https://github.com/paritytech/parity-ethereum/releases/tag/v2.4.1) (2019-03-19) - Add support for non-fork side of Phoenix (#11627)
- validate mainnet specs against all forks (#11625)
Parity-Ethereum 2.4.1-beta is a bugfix release that improves performance and stability. - Fix ecrecover builtin (#11623)
- Update .gitmodules (#11628)
The full list of included changes: - ethcore/res: activate ecip-1088 phoenix on classic (#11598)
- 2.4.1 beta backports ([#10471](https://github.com/paritytech/parity-ethereum/pull/10471)) - Upgrade parity-common deps to latest (#11620)
- Version: bump beta - Fix Goerli syncing (#11604)
- Implement parity_versionInfo & parity_setChain on LC; fix parity_setChain ([#10312](https://github.com/paritytech/parity-ethereum/pull/10312)) - deps: switch to upstream ctrlc (#11617)
- CI publish to aws ([#10446](https://github.com/paritytech/parity-ethereum/pull/10446)) - Deduplicating crate dependencies (part 3 of n) (#11614)
- CI aws git checkout ([#10451](https://github.com/paritytech/parity-ethereum/pull/10451)) - Deduplicating crate dependencies (part 2 of n, `slab`) (#11613)
- Revert "CI aws git checkout ([#10451](https://github.com/paritytech/parity-ethereum/pull/10451))" ([#10456](https://github.com/paritytech/parity-ethereum/pull/10456)) - Actually save ENR on creation and modification (#11602)
- Tests parallelized ([#10452](https://github.com/paritytech/parity-ethereum/pull/10452)) - Activate POSDAO on xDai chain and update bootnodes (#11610)
- Ensure static validator set changes are recognized ([#10467](https://github.com/paritytech/parity-ethereum/pull/10467)) - Activate on-chain randomness in POA Core (#11609)
- Deduplicating crate dependencies (part 1 of n) (#11606)
## Parity-Ethereum [v2.4.0](https://github.com/paritytech/parity-ethereum/releases/tag/v2.4.0) (2019-02-25) - Update enodes for POA Sokol (#11611)
- Remove .git folder from dogerignore file so vergen library can get build date and commit hash in the binary generatio vergen library can get build date and commit hash in the binary generation (#11608)
Parity-Ethereum 2.4.0-beta is our trifortnightly minor version release coming with a lot of new features as well as bugfixes and performance improvements. - Reduced gas cost for static calls made to precompiles EIP2046/1352 (#11583)
- `ethcore-bloom-journal` was renamed to `accounts-bloom` (#11605)
Notable changes: - Use serde_json to export hardcoded sync (#11601)
- Account management is now deprecated ([#10213](https://github.com/paritytech/parity-ethereum/pull/10213)) - Node Discovery v4 ENR Extension (EIP-868) (#11540)
- Local accounts can now be specified via CLI ([#9960](https://github.com/paritytech/parity-ethereum/pull/9960)) - Fix compile warnings (#11595)
- Chains can now be reset to a particular block via CLI ([#9782](https://github.com/paritytech/parity-ethereum/pull/9782)) - Update version to 3.0.0-alpha.1 (#11592)
- Ethash now additionally implements ProgPoW ([#9762](https://github.com/paritytech/parity-ethereum/pull/9762)) - ethcore/res: bump canon fork hash for mordor and kotti testnets (#11584)
- The `eip1283DisableTransition` flag was added to revert EIP-1283 ([#10214](https://github.com/paritytech/parity-ethereum/pull/10214)) - Update on push tags (#11590)
- Replace deprecated tempdir dependency with tempfile (#11588)
The full list of included changes: - Fix project name, links, rename the binaries (#11580)
- More Backports for Beta 2.4.0 ([#10431](https://github.com/paritytech/parity-ethereum/pull/10431)) - Update Cargo.lock (#11573)
- Revert some changes, could be buggy ([#10399](https://github.com/paritytech/parity-ethereum/pull/10399)) - ci: workaround for the cache bug on Linux (#11568)
- Ci: clean up gitlab-ci.yml leftovers from previous merge ([#10429](https://github.com/paritytech/parity-ethereum/pull/10429)) - Increase the default pruning parameters (#11558)
- 10000 > 5000 ([#10422](https://github.com/paritytech/parity-ethereum/pull/10422)) - Add Docker build and push to github actions (#11555)
- Fix underflow in pip, closes [#10419](https://github.com/paritytech/parity-ethereum/pull/10419) ([#10423](https://github.com/paritytech/parity-ethereum/pull/10423)) - Update README (#11578)
- Fix panic when logging directory does not exist, closes [#10420](https://github.com/paritytech/parity-ethereum/pull/10420) ([#10424](https://github.com/paritytech/parity-ethereum/pull/10424)) - informant: display I/O stats (#11523)
- Update hardcoded headers for Foundation, Ropsten, Kovan and Classic ([#10417](https://github.com/paritytech/parity-ethereum/pull/10417)) - [devp2p discovery]: remove `deprecated_echo_hash` (#11564)
- Backports for Beta 2.4.0 ([#10416](https://github.com/paritytech/parity-ethereum/pull/10416)) - [secretstore] create db_version file when database doesn't exist (#11570)
- No-git for publish jobs, empty artifacts dir ([#10393](https://github.com/paritytech/parity-ethereum/pull/10393)) - Remove Parity's Security Policy (#11565)
- Snap: reenable i386, arm64, armhf architecture publishing ([#10386](https://github.com/paritytech/parity-ethereum/pull/10386)) - ethcore/res: enable ecip-1088 phoenix upgrade for kotti and mordor testnets (#11529)
- Tx pool: always accept local transactions ([#10375](https://github.com/paritytech/parity-ethereum/pull/10375)) - Misc docs and renames …and one less clone (#11556)
- Fix to_pod storage trie value decoding ([#10368](https://github.com/paritytech/parity-ethereum/pull/10368)) - [secretstore]: don't sign message with only zeroes (#11561)
- Version: mark 2.4.0 beta - [devp2p discovery]: cleanup (#11547)
- Update to latest mem-db, hash-db and trie-db. ([#10314](https://github.com/paritytech/parity-ethereum/pull/10314)) - Code cleanup in the sync module (#11552)
- Tx pool: always accept local transactions ([#10375](https://github.com/paritytech/parity-ethereum/pull/10375)) - initial cleanup (#11542)
- Fix(trace_main! macro): don't re-export ([#10384](https://github.com/paritytech/parity-ethereum/pull/10384)) - Warn if genesis constructor revert (#11550)
- Exchanged old(azure) bootnodes with new(ovh) ones ([#10309](https://github.com/paritytech/parity-ethereum/pull/10309)) - ethcore: cleanup after #11531 (#11546)
- Ethash: implement Progpow ([#9762](https://github.com/paritytech/parity-ethereum/pull/9762)) - license update (#11543)
- Snap: add the removable-media plug ([#10377](https://github.com/paritytech/parity-ethereum/pull/10377)) - Less cloning when importing blocks (#11531)
- Add message to IO errors ([#10324](https://github.com/paritytech/parity-ethereum/pull/10324)) - Github Actions (#11528)
- Chore(bump parity-daemonize): require rust >= 1.31 ([#10359](https://github.com/paritytech/parity-ethereum/pull/10359)) - Fix Alpine Dockerfile (#11538)
- Secretstore: use in-memory transport in cluster tests ([#9850](https://github.com/paritytech/parity-ethereum/pull/9850)) - Remove AuxiliaryData/AuxiliaryRequest (#11533)
- Add fields to `memzero`'s Cargo.toml ([#10362](https://github.com/paritytech/parity-ethereum/pull/10362)) - [journaldb]: cleanup (#11534)
- Snap: release untagged versions from branches to the candidate snap channel ([#10357](https://github.com/paritytech/parity-ethereum/pull/10357)) - Remove references to parity-ethereum (#11525)
- Fix(compilation warns): `no-default-features` ([#10346](https://github.com/paritytech/parity-ethereum/pull/10346)) - Drop IPFS support (#11532)
- No volumes are needed, just run -v volume:/path/in/the/container ([#10345](https://github.com/paritytech/parity-ethereum/pull/10345)) - chain-supplier: fix warning reporting for GetNodeData request (#11530)
- Fixed misstype ([#10351](https://github.com/paritytech/parity-ethereum/pull/10351)) - Faster kill_garbage (#11514)
- Snap: prefix version and populate candidate channel ([#10343](https://github.com/paritytech/parity-ethereum/pull/10343)) - [EngineSigner]: don't sign message with only zeroes (#11524)
- Bundle protocol and packet_id together in chain sync ([#10315](https://github.com/paritytech/parity-ethereum/pull/10315)) - fix compilation warnings (#11522)
- Role back docker build image and docker deploy image to ubuntu:xenial… ([#10338](https://github.com/paritytech/parity-ethereum/pull/10338)) - [ethcore cleanup]: various unrelated fixes from `#11493` (#11507)
- Change docker image based on debian instead of ubuntu due to the chan… ([#10336](https://github.com/paritytech/parity-ethereum/pull/10336)) - Add benchmark for transaction execution (#11509)
- Don't add discovery initiators to the node table ([#10305](https://github.com/paritytech/parity-ethereum/pull/10305)) - Add Smart Contract License v1.0
- Fix(docker): fix not receives SIGINT ([#10059](https://github.com/paritytech/parity-ethereum/pull/10059)) - Misc fixes (#11510)
- Snap: official image / test ([#10168](https://github.com/paritytech/parity-ethereum/pull/10168)) - [dependencies]: unify `rustc-hex` (#11506)
- Fix(add helper for timestamp overflows) ([#10330](https://github.com/paritytech/parity-ethereum/pull/10330)) - Activate on-chain randomness in POA Sokol (#11505)
- Additional error for invalid gas ([#10327](https://github.com/paritytech/parity-ethereum/pull/10327)) - Grab bag of cleanup (#11504)
- Revive parity_setMinGasPrice RPC call ([#10294](https://github.com/paritytech/parity-ethereum/pull/10294)) - Implement eth/64 (EIP-2364) and drop support for eth/62 (#11472)
- Add Statetest support for Constantinople Fix ([#10323](https://github.com/paritytech/parity-ethereum/pull/10323)) - [dependencies]: remove `util/macros` (#11501)
- Fix(parity-clib): grumbles that were not addressed in [#9920](https://github.com/paritytech/parity-ethereum/pull/9920) ([#10154](https://github.com/paritytech/parity-ethereum/pull/10154)) - OpenEthereum bootnodes are added (#11499)
- Fix(light-rpc): Make `light_sync` generic ([#10238](https://github.com/paritytech/parity-ethereum/pull/10238)) - [ci benches]: use `all-features` (#11496)
- Fix publish job ([#10317](https://github.com/paritytech/parity-ethereum/pull/10317)) - [verification]: make test-build compile standalone (#11495)
- Secure WS-RPC: grant access to all apis ([#10246](https://github.com/paritytech/parity-ethereum/pull/10246)) - complete null-signatures removal (#11491)
- Make specification of protocol in SyncRequester::send_request explicit ([#10295](https://github.com/paritytech/parity-ethereum/pull/10295)) - Include the seal when populating the header for a new block (#11475)
- Fix: parity-clib/examples/cpp/CMakeLists.txt ([#10313](https://github.com/paritytech/parity-ethereum/pull/10313)) - fix compilation warnings (#11492)
- Ci optimizations ([#10297](https://github.com/paritytech/parity-ethereum/pull/10297)) - cargo update -p cmake (#11490)
- Increase number of requested block bodies in chain sync ([#10247](https://github.com/paritytech/parity-ethereum/pull/10247)) - update to published rlp-derive (#11489)
- Deprecate account management ([#10213](https://github.com/paritytech/parity-ethereum/pull/10213)) - Switch usage of Secret Store to the external lib (#11487)
- Properly handle check_epoch_end_signal errors ([#10015](https://github.com/paritytech/parity-ethereum/pull/10015)) - Switch from the internal runtime lib to external one from crates.io (#11480)
- Fix(osx and windows builds): bump parity-daemonize ([#10291](https://github.com/paritytech/parity-ethereum/pull/10291)) - Update params.rs (#11474)
- Add missing step for Using `systemd` service file ([#10175](https://github.com/paritytech/parity-ethereum/pull/10175)) - weak_counts has been stabilized (#11476)
- Call private contract methods from another private contract (read-onl… ([#10086](https://github.com/paritytech/parity-ethereum/pull/10086)) - sync: remove broken eth_protocol_version method (#11473)
- Update ring to 0.14 ([#10262](https://github.com/paritytech/parity-ethereum/pull/10262)) - Use parity-crypto updated to use upstream rust-secp256k1 (#11406)
- Fix(secret-store): deprecation warning ([#10301](https://github.com/paritytech/parity-ethereum/pull/10301)) - Cleanup some code in Aura (#11466)
- Update to jsonrpc-derive 10.0.2, fixes aliases bug ([#10300](https://github.com/paritytech/parity-ethereum/pull/10300)) - upgrade some of the dependencies (#11467)
- Convert to jsonrpc-derive, use jsonrpc-* from crates.io ([#10298](https://github.com/paritytech/parity-ethereum/pull/10298)) - Some more release track changes to README.md (#11465)
- Fix Windows build ([#10284](https://github.com/paritytech/parity-ethereum/pull/10284)) - Update simple one-line installer due to switching to a single stable release track (#11463)
- Don't run the CPP example on CI ([#10285](https://github.com/paritytech/parity-ethereum/pull/10285)) - update Dockerfile (#11461)
- Additional tests for uint deserialization. ([#10279](https://github.com/paritytech/parity-ethereum/pull/10279)) - Implement EIP-2124 (#11456)
- Prevent silent errors in daemon mode ([#10007](https://github.com/paritytech/parity-ethereum/pull/10007)) - [eth classic chainspec]: remove `balance = 1` (#11459)
- Fix join-set test to be deterministic. ([#10263](https://github.com/paritytech/parity-ethereum/pull/10263))
- Update CHANGELOG-2.2.md ([#10254](https://github.com/paritytech/parity-ethereum/pull/10254))
- Macos heapsize force jemalloc ([#10234](https://github.com/paritytech/parity-ethereum/pull/10234))
- Allow specifying local accounts via CLI ([#9960](https://github.com/paritytech/parity-ethereum/pull/9960))
- Take in account zero gas price certification when doing transact_cont… ([#10232](https://github.com/paritytech/parity-ethereum/pull/10232))
- Update CHANGELOG.md ([#10249](https://github.com/paritytech/parity-ethereum/pull/10249))
- Fix typo: CHANGELOG-2.1 -> CHANGELOG-2.2 ([#10233](https://github.com/paritytech/parity-ethereum/pull/10233))
- Update copyright year to 2019. ([#10181](https://github.com/paritytech/parity-ethereum/pull/10181))
- Fixed: types::transaction::SignedTransaction; ([#10229](https://github.com/paritytech/parity-ethereum/pull/10229))
- Fix(ManageNetwork): replace Range with RangeInclusive ([#10209](https://github.com/paritytech/parity-ethereum/pull/10209))
- Import rpc transactions sequentially ([#10051](https://github.com/paritytech/parity-ethereum/pull/10051))
- Enable St-Peters-Fork ("Constantinople Fix") ([#10223](https://github.com/paritytech/parity-ethereum/pull/10223))
- Add EIP-1283 disable transition ([#10214](https://github.com/paritytech/parity-ethereum/pull/10214))
- Echo CORS request headers by default ([#10221](https://github.com/paritytech/parity-ethereum/pull/10221))
- Happy New Year! ([#10211](https://github.com/paritytech/parity-ethereum/pull/10211))
- Perform stripping during build ([#10208](https://github.com/paritytech/parity-ethereum/pull/10208))
- Remove CallContract and RegistryInfo re-exports from `ethcore/client` ([#10205](https://github.com/paritytech/parity-ethereum/pull/10205))
- Extract CallContract and RegistryInfo traits into their own crate ([#10178](https://github.com/paritytech/parity-ethereum/pull/10178))
- Update the changelogs for 2.1.11, 2.2.6, 2.2.7, and 2.3.0 ([#10197](https://github.com/paritytech/parity-ethereum/pull/10197))
- Cancel Constantinople HF on POA Core ([#10198](https://github.com/paritytech/parity-ethereum/pull/10198))
- Adds cli interface to allow reseting chain to a particular block ([#9782](https://github.com/paritytech/parity-ethereum/pull/9782))
- Run all `igd` methods in its own thread ([#10195](https://github.com/paritytech/parity-ethereum/pull/10195))
- Pull constantinople on ethereum network ([#10189](https://github.com/paritytech/parity-ethereum/pull/10189))
- Update for Android cross-compilation. ([#10180](https://github.com/paritytech/parity-ethereum/pull/10180))
- Version: bump fork blocks for kovan and foundation ([#10186](https://github.com/paritytech/parity-ethereum/pull/10186))
- Handle the case for contract creation on an empty but exist account w… ([#10065](https://github.com/paritytech/parity-ethereum/pull/10065))
- Align personal_unlockAccount behaviour when permanent unlock is disab… ([#10060](https://github.com/paritytech/parity-ethereum/pull/10060))
- Drop `runtime` after others (especially `ws_server`) ([#10179](https://github.com/paritytech/parity-ethereum/pull/10179))
- Version: bump nightly to 2.4 ([#10165](https://github.com/paritytech/parity-ethereum/pull/10165))
- Skip locking in statedb for non-canon blocks ([#10141](https://github.com/paritytech/parity-ethereum/pull/10141))
- Remove reference to ui-interface command-line option ([#10170](https://github.com/paritytech/parity-ethereum/pull/10170))
- Fix [#9822](https://github.com/paritytech/parity-ethereum/pull/9822): trace_filter does not return failed contract creation ([#10140](https://github.com/paritytech/parity-ethereum/pull/10140))
- Fix _cannot recursively call into `Core`_ issue ([#10144](https://github.com/paritytech/parity-ethereum/pull/10144))
- Fix(whisper): correct PoW calculation ([#10166](https://github.com/paritytech/parity-ethereum/pull/10166))
- Bump JSON-RPC ([#10151](https://github.com/paritytech/parity-ethereum/pull/10151))
- Ping nodes from discovery ([#10167](https://github.com/paritytech/parity-ethereum/pull/10167))
- Fix(android): remove dependency to libusb ([#10161](https://github.com/paritytech/parity-ethereum/pull/10161))
- Refactor(trim_right_matches -> trim_end_matches) ([#10159](https://github.com/paritytech/parity-ethereum/pull/10159))
- Merge Machine and WithRewards ([#10071](https://github.com/paritytech/parity-ethereum/pull/10071))
## Previous releases
- [CHANGELOG-2.3](docs/CHANGELOG-2.3.md) (_stable_)
- [CHANGELOG-2.2](docs/CHANGELOG-2.2.md) (EOL: 2019-02-25)
- [CHANGELOG-2.1](docs/CHANGELOG-2.1.md) (EOL: 2019-01-16)
- [CHANGELOG-2.0](docs/CHANGELOG-2.0.md) (EOL: 2018-11-15)
- [CHANGELOG-1.11](docs/CHANGELOG-1.11.md) (EOL: 2018-09-19)
- [CHANGELOG-1.10](docs/CHANGELOG-1.10.md) (EOL: 2018-07-18)
- [CHANGELOG-1.9](docs/CHANGELOG-1.9.md) (EOL: 2018-05-09)
- [CHANGELOG-1.8](docs/CHANGELOG-1.8.md) (EOL: 2018-03-22)
- [CHANGELOG-1.7](docs/CHANGELOG-1.7.md) (EOL: 2018-01-25)
- [CHANGELOG-1.6](docs/CHANGELOG-1.6.md) (EOL: 2017-10-15)
- [CHANGELOG-1.5](docs/CHANGELOG-1.5.md) (EOL: 2017-07-28)
- [CHANGELOG-1.4](docs/CHANGELOG-1.4.md) (EOL: 2017-03-13)
- [CHANGELOG-1.3](docs/CHANGELOG-1.3.md) (EOL: 2017-01-19)
- [CHANGELOG-1.2](docs/CHANGELOG-1.2.md) (EOL: 2016-11-07)
- [CHANGELOG-1.1](docs/CHANGELOG-1.1.md) (EOL: 2016-08-12)
- [CHANGELOG-1.0](docs/CHANGELOG-1.0.md) (EOL: 2016-06-24)
- [CHANGELOG-0.9](docs/CHANGELOG-0.9.md) (EOL: 2016-05-02)

6463
Cargo.lock generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,41 +1,31 @@
[package] [package]
description = "Parity Ethereum client" description = "OpenEthereum"
name = "parity-ethereum" name = "openethereum"
# NOTE Make sure to update util/version/Cargo.toml as well # NOTE Make sure to update util/version/Cargo.toml as well
version = "2.6.0" version = "3.0.1"
license = "GPL-3.0" license = "GPL-3.0"
authors = ["Parity Technologies <admin@parity.io>"] authors = [
"OpenEthereum developers",
"Parity Technologies <admin@parity.io>"
]
[dependencies] [dependencies]
blooms-db = { path = "util/blooms-db" }
log = "0.4"
rustc-hex = "1.0"
docopt = "1.0"
clap = "2"
term_size = "0.3"
textwrap = "0.9"
num_cpus = "1.2"
number_prefix = "0.2"
rpassword = "1.0"
semver = "0.9"
ansi_term = "0.11" ansi_term = "0.11"
parking_lot = "0.7"
regex = "1.0"
atty = "0.2.8" atty = "0.2.8"
toml = "0.4" blooms-db = { path = "util/blooms-db" }
serde = "1.0" clap = "2"
serde_json = "1.0" cli-signer= { path = "cli-signer" }
serde_derive = "1.0" client-traits = { path = "ethcore/client-traits" }
futures = "0.1"
fdlimit = "0.1"
ctrlc = { git = "https://github.com/paritytech/rust-ctrlc.git" }
jsonrpc-core = "12.0.0"
parity-bytes = "0.1"
common-types = { path = "ethcore/types" } common-types = { path = "ethcore/types" }
ctrlc = { version = "3.1.4", features = ["termination"] }
dir = { path = "util/dir" }
docopt = "1.0"
engine = { path = "ethcore/engine" }
ethabi = { version = "12.0", optional = true }
ethcore = { path = "ethcore", features = ["parity"] } ethcore = { path = "ethcore", features = ["parity"] }
ethcore-accounts = { path = "accounts", optional = true } ethcore-accounts = { path = "accounts", optional = true }
ethcore-blockchain = { path = "ethcore/blockchain" } ethcore-blockchain = { path = "ethcore/blockchain" }
ethcore-call-contract = { path = "ethcore/call-contract"} ethcore-call-contract = { path = "ethcore/call-contract", optional = true }
ethcore-db = { path = "ethcore/db" } ethcore-db = { path = "ethcore/db" }
ethcore-io = { path = "util/io" } ethcore-io = { path = "util/io" }
ethcore-light = { path = "ethcore/light" } ethcore-light = { path = "ethcore/light" }
@@ -45,35 +35,50 @@ ethcore-network = { path = "util/network" }
ethcore-private-tx = { path = "ethcore/private-tx" } ethcore-private-tx = { path = "ethcore/private-tx" }
ethcore-service = { path = "ethcore/service" } ethcore-service = { path = "ethcore/service" }
ethcore-sync = { path = "ethcore/sync" } ethcore-sync = { path = "ethcore/sync" }
ethereum-types = "0.6.0" ethereum-types = "0.9.0"
ethkey = { path = "accounts/ethkey" } ethkey = { path = "accounts/ethkey" }
ethstore = { path = "accounts/ethstore" } ethstore = { path = "accounts/ethstore" }
fdlimit = "0.1"
futures = "0.1"
journaldb = { path = "util/journaldb" }
jsonrpc-core = "14.0.3"
keccak-hash = "0.5.0"
kvdb = "0.5.0"
kvdb-rocksdb = "0.7.0"
log = "0.4"
migration-rocksdb = { path = "util/migration-rocksdb" }
node-filter = { path = "ethcore/node-filter" } node-filter = { path = "ethcore/node-filter" }
rlp = "0.4.0" num_cpus = "1.2"
cli-signer= { path = "cli-signer" } number_prefix = "0.2"
panic_hook = { path = "util/panic-hook" }
parity-bytes = "0.1"
parity-crypto = { version = "0.6.1", features = ["publickey"] }
parity-daemonize = "0.3" parity-daemonize = "0.3"
parity-hash-fetch = { path = "updater/hash-fetch" } parity-hash-fetch = { path = "updater/hash-fetch" }
parity-ipfs-api = { path = "ipfs" }
parity-local-store = { path = "miner/local-store" } parity-local-store = { path = "miner/local-store" }
parity-runtime = { path = "util/runtime" }
parity-rpc = { path = "rpc" }
parity-updater = { path = "updater" }
parity-version = { path = "util/version" }
parity-whisper = { path = "whisper" }
parity-path = "0.1" parity-path = "0.1"
dir = { path = "util/dir" } parity-rpc = { path = "rpc" }
panic_hook = { path = "util/panic-hook" } parity-runtime = "0.1.1"
keccak-hash = "0.2.0" parity-secretstore = { git = "https://github.com/paritytech/secret-store", branch = "v1.x", optional = true }
migration-rocksdb = { path = "util/migration-rocksdb" } parity-updater = { path = "updater" }
kvdb = "0.1" parity-util-mem = { version = "0.6.0", features = ["jemalloc-global"] }
kvdb-rocksdb = "0.1.3" parity-version = { path = "util/version" }
journaldb = { path = "util/journaldb" } parking_lot = "0.10.0"
regex = "1.0"
ethcore-secretstore = { path = "secret-store", optional = true }
registrar = { path = "util/registrar" } registrar = { path = "util/registrar" }
rlp = "0.4.5"
parity-util-mem = { version = "0.1", features = ["jemalloc-global"] } rpassword = "1.0"
rustc-hex = "2.1.0"
semver = "0.9"
serde = "1.0"
serde_derive = "1.0"
serde_json = "1.0"
snapshot = { path = "ethcore/snapshot" }
spec = { path = "ethcore/spec" }
term_size = "0.3"
textwrap = "0.11.0"
toml = "0.5.6"
verification = { path = "ethcore/verification" }
[build-dependencies] [build-dependencies]
rustc_version = "0.2" rustc_version = "0.2"
@@ -81,32 +86,24 @@ rustc_version = "0.2"
[dev-dependencies] [dev-dependencies]
pretty_assertions = "0.1" pretty_assertions = "0.1"
ipnetwork = "0.12.6" ipnetwork = "0.12.6"
tempdir = "0.3" tempfile = "3.1"
fake-fetch = { path = "util/fake-fetch" } fake-fetch = { path = "util/fake-fetch" }
[target.'cfg(windows)'.dependencies] [target.'cfg(windows)'.dependencies]
winapi = { version = "0.3.4", features = ["winsock2", "winuser", "shellapi"] } winapi = { version = "0.3.8", features = ["winsock2", "winuser", "shellapi"] }
[features] [features]
default = ["accounts"] default = ["accounts"]
accounts = ["ethcore-accounts", "parity-rpc/accounts"] accounts = ["ethcore-accounts", "parity-rpc/accounts"]
miner-debug = ["ethcore/miner-debug"] miner-debug = ["ethcore/miner-debug"]
json-tests = ["ethcore/json-tests"] json-tests = ["ethcore/json-tests"]
ci-skip-tests = ["ethcore/ci-skip-tests"]
test-heavy = ["ethcore/test-heavy"] test-heavy = ["ethcore/test-heavy"]
evm-debug = ["ethcore/evm-debug"] evm-debug = ["ethcore/evm-debug"]
evm-debug-tests = ["ethcore/evm-debug-tests"] evm-debug-tests = ["ethcore/evm-debug-tests"]
slow-blocks = ["ethcore/slow-blocks"] slow-blocks = ["ethcore/slow-blocks"]
secretstore = ["ethcore-secretstore", "ethcore-secretstore/accounts"] secretstore = ["parity-secretstore", "accounts", "ethabi", "ethcore-call-contract"]
final = ["parity-version/final"] final = ["parity-version/final"]
deadlock_detection = ["parking_lot/deadlock_detection"] deadlock_detection = ["parking_lot/deadlock_detection"]
# to create a memory profile (requires nightly rust), use e.g.
# `heaptrack /path/to/parity <parity params>`,
# to visualize a memory profile, use `heaptrack_gui`
# or
# `valgrind --tool=massif /path/to/parity <parity params>`
# and `massif-visualizer` for visualization
memory_profiling = []
# hardcode version number 1.3.7 of parity to force an update # hardcode version number 1.3.7 of parity to force an update
# in order to manually test that parity fall-over to the local version # in order to manually test that parity fall-over to the local version
# in case of invalid or deprecated command line arguments are entered # in case of invalid or deprecated command line arguments are entered
@@ -117,7 +114,7 @@ path = "parity/lib.rs"
[[bin]] [[bin]]
path = "parity/main.rs" path = "parity/main.rs"
name = "parity" name = "openethereum"
[profile.release] [profile.release]
debug = false debug = false
@@ -133,11 +130,4 @@ members = [
"chainspec", "chainspec",
"ethcore/wasm/run", "ethcore/wasm/run",
"evmbin", "evmbin",
"parity-clib",
"whisper/cli",
"util/triehash-ethereum",
"util/keccak-hasher",
"util/patricia-trie-ethereum",
"util/fastmap",
"util/time-utils",
] ]

233
README.md
View File

@@ -1,11 +1,19 @@
![Parity Ethereum](docs/logo-parity-ethereum.svg) # OpenEthereum
<h2 align="center">The Fastest and most Advanced Ethereum Client.</h2> Fast and feature-rich multi-network Ethereum client.
<p align="center"><strong><a href="https://github.com/paritytech/parity-ethereum/releases/latest">» Download the latest release «</a></strong></p> [» Download the latest release «](https://github.com/openethereum/openethereum/releases/latest)
<p align="center"><a href="https://gitlab.parity.io/parity/parity-ethereum/commits/master" target="_blank"><img src="https://gitlab.parity.io/parity/parity-ethereum/badges/master/build.svg" /></a> [![GPL licensed][license-badge]][license-url]
<a href="https://www.gnu.org/licenses/gpl-3.0.en.html" target="_blank"><img src="https://img.shields.io/badge/license-GPL%20v3-green.svg" /></a></p> [![Build Status][ci-badge]][ci-url]
[![Discord chat][chat-badge]][chat-url]
[license-badge]: https://img.shields.io/badge/license-GPL_v3-green.svg
[license-url]: LICENSE
[ci-badge]: https://github.com/openethereum/openethereum/workflows/Build%20and%20Test%20Suite/badge.svg
[ci-url]: https://github.com/openethereum/openethereum/actions
[chat-badge]: https://img.shields.io/discord/669192218728202270.svg?logo=discord
[chat-url]: https://discord.io/openethereum
## Table of Contents ## Table of Contents
@@ -14,19 +22,17 @@
3. [Building](#chapter-003)<br> 3. [Building](#chapter-003)<br>
3.1 [Building Dependencies](#chapter-0031)<br> 3.1 [Building Dependencies](#chapter-0031)<br>
3.2 [Building from Source Code](#chapter-0032)<br> 3.2 [Building from Source Code](#chapter-0032)<br>
3.3 [Simple One-Line Installer for Mac and Linux](#chapter-0033)<br> 3.3 [Starting OpenEthereum](#chapter-0034)
3.4 [Starting Parity Ethereum](#chapter-0034)
4. [Testing](#chapter-004) 4. [Testing](#chapter-004)
5. [Documentation](#chapter-005) 5. [Documentation](#chapter-005)
6. [Toolchain](#chapter-006) 6. [Toolchain](#chapter-006)
7. [Community](#chapter-007) 7. [Contributing](#chapter-008)
8. [Contributing](#chapter-008) 8. [License](#chapter-009)
9. [License](#chapter-009)
## 1. Description <a id="chapter-001"></a> ## 1. Description <a id="chapter-001"></a>
**Built for mission-critical use**: Miners, service providers, and exchanges need fast synchronisation and maximum uptime. Parity Ethereum provides the core infrastructure essential for speedy and reliable services. **Built for mission-critical use**: Miners, service providers, and exchanges need fast synchronisation and maximum uptime. OpenEthereum provides the core infrastructure essential for speedy and reliable services.
- Clean, modular codebase for easy customisation - Clean, modular codebase for easy customisation
- Advanced CLI-based client - Advanced CLI-based client
@@ -36,19 +42,19 @@
## 2. Technical Overview <a id="chapter-002"></a> ## 2. Technical Overview <a id="chapter-002"></a>
Parity Ethereum's goal is to be the fastest, lightest, and most secure Ethereum client. We are developing Parity Ethereum using the sophisticated and cutting-edge **Rust programming language**. Parity Ethereum is licensed under the GPLv3 and can be used for all your Ethereum needs. OpenEthereum's goal is to be the fastest, lightest, and most secure Ethereum client. We are developing OpenEthereum using the **Rust programming language**. OpenEthereum is licensed under the GPLv3 and can be used for all your Ethereum needs.
By default, Parity Ethereum runs a JSON-RPC HTTP server on port `:8545` and a Web-Sockets server on port `:8546`. This is fully configurable and supports a number of APIs. By default, OpenEthereum runs a JSON-RPC HTTP server on port `:8545` and a Web-Sockets server on port `:8546`. This is fully configurable and supports a number of APIs.
If you run into problems while using Parity Ethereum, check out the [wiki for documentation](https://wiki.parity.io/), feel free to [file an issue in this repository](https://github.com/paritytech/parity-ethereum/issues/new), or hop on our [Gitter](https://gitter.im/paritytech/parity) or [Riot](https://riot.im/app/#/group/+parity:matrix.parity.io) chat room to ask a question. We are glad to help! **For security-critical issues**, please refer to the security policy outlined in [SECURITY.md](SECURITY.md). If you run into problems while using OpenEthereum, check out the [old wiki for documentation](https://wiki.parity.io/), feel free to [file an issue in this repository](https://github.com/openethereum/openethereum/issues/new), or hop on our [Discord](https://discord.io/openethereum) chat room to ask a question. We are glad to help!
Parity Ethereum's current beta-release is 2.1. You can download it at [the releases page](https://github.com/paritytech/parity-ethereum/releases) or follow the instructions below to build from source. Please, mind the [CHANGELOG.md](CHANGELOG.md) for a list of all changes between different versions. You can download OpenEthereum's latest release at [the releases page](https://github.com/openethereum/openethereum/releases) or follow the instructions below to build from source. Read the [CHANGELOG.md](CHANGELOG.md) for a list of all changes between different versions.
## 3. Building <a id="chapter-003"></a> ## 3. Building <a id="chapter-003"></a>
### 3.1 Build Dependencies <a id="chapter-0031"></a> ### 3.1 Build Dependencies <a id="chapter-0031"></a>
Parity Ethereum requires **latest stable Rust version** to build. OpenEthereum requires **latest stable Rust version** to build.
We recommend installing Rust through [rustup](https://www.rustup.rs/). If you don't already have `rustup`, you can install it like this: We recommend installing Rust through [rustup](https://www.rustup.rs/). If you don't already have `rustup`, you can install it like this:
@@ -57,7 +63,7 @@ We recommend installing Rust through [rustup](https://www.rustup.rs/). If you do
$ curl https://sh.rustup.rs -sSf | sh $ curl https://sh.rustup.rs -sSf | sh
``` ```
Parity Ethereum also requires `gcc`, `g++`, `pkg-config`, `file`, `make`, and `cmake` packages to be installed. OpenEthereum also requires `clang` (>= 9.0), `clang++`, `pkg-config`, `file`, `make`, and `cmake` packages to be installed.
- OSX: - OSX:
```bash ```bash
@@ -66,7 +72,7 @@ We recommend installing Rust through [rustup](https://www.rustup.rs/). If you do
`clang` is required. It comes with Xcode command line tools or can be installed with homebrew. `clang` is required. It comes with Xcode command line tools or can be installed with homebrew.
- Windows: - Windows:
Make sure you have Visual Studio 2015 with C++ support installed. Next, download and run the `rustup` installer from Make sure you have Visual Studio 2015 with C++ support installed. Next, download and run the `rustup` installer from
https://static.rust-lang.org/rustup/dist/x86_64-pc-windows-msvc/rustup-init.exe, start "VS2015 x64 Native Tools Command Prompt", and use the following command to install and set up the `msvc` toolchain: https://static.rust-lang.org/rustup/dist/x86_64-pc-windows-msvc/rustup-init.exe, start "VS2015 x64 Native Tools Command Prompt", and use the following command to install and set up the `msvc` toolchain:
```bash ```bash
@@ -77,14 +83,14 @@ Once you have `rustup` installed, then you need to install:
* [Perl](https://www.perl.org) * [Perl](https://www.perl.org)
* [Yasm](https://yasm.tortall.net) * [Yasm](https://yasm.tortall.net)
Make sure that these binaries are in your `PATH`. After that, you should be able to build Parity Ethereum from source. Make sure that these binaries are in your `PATH`. After that, you should be able to build OpenEthereum from source.
### 3.2 Build from Source Code <a id="chapter-0032"></a> ### 3.2 Build from Source Code <a id="chapter-0032"></a>
```bash ```bash
# download Parity Ethereum code # download OpenEthereum code
$ git clone https://github.com/paritytech/parity-ethereum $ git clone https://github.com/openethereum/openethereum
$ cd parity-ethereum $ cd openethereum
# build in release mode # build in release mode
$ cargo build --release --features final $ cargo build --release --features final
@@ -104,54 +110,36 @@ Note, when compiling a crate and you receive errors, it's in most cases your out
$ cargo clean $ cargo clean
``` ```
This always compiles the latest nightly builds. If you want to build stable or beta, do a This always compiles the latest nightly builds. If you want to build stable, do a
```bash ```bash
$ git checkout stable $ git checkout stable
``` ```
or ### 3.3 Starting OpenEthereum <a id="chapter-0034"></a>
```bash
$ git checkout beta
```
### 3.3 Simple One-Line Installer for Mac and Linux <a id="chapter-0033"></a>
```bash
bash <(curl https://get.parity.io -L)
```
The one-line installer always defaults to the latest beta release. To install a stable release, run:
```bash
bash <(curl https://get.parity.io -L) -r stable
```
### 3.4 Starting Parity Ethereum <a id="chapter-0034"></a>
#### Manually #### Manually
To start Parity Ethereum manually, just run To start OpenEthereum manually, just run
```bash ```bash
$ ./target/release/parity $ ./target/release/openethereum
``` ```
so Parity Ethereum begins syncing the Ethereum blockchain. so OpenEthereum begins syncing the Ethereum blockchain.
#### Using `systemd` service file #### Using `systemd` service file
To start Parity Ethereum as a regular user using `systemd` init: To start OpenEthereum as a regular user using `systemd` init:
1. Copy `./scripts/parity.service` to your 1. Copy `./scripts/openethereum.service` to your
`systemd` user directory (usually `~/.config/systemd/user`). `systemd` user directory (usually `~/.config/systemd/user`).
2. Copy release to bin folder, write `sudo install ./target/release/parity /usr/bin/parity` 2. Copy release to bin folder, write `sudo install ./target/release/openethereum /usr/bin/openethereum`
3. To configure Parity Ethereum, write a `/etc/parity/config.toml` config file, see [Configuring Parity Ethereum](https://paritytech.github.io/wiki/Configuring-Parity) for details. 3. To configure OpenEthereum, see [our old wiki](https://paritytech.github.io/wiki/Configuring-Parity) for details.
## 4. Testing <a id="chapter-004"></a> ## 4. Testing <a id="chapter-004"></a>
You can run tests with the following commands: Download the required test files: `git submodule update --init --recursive`. You can run tests with the following commands:
* **All** packages * **All** packages
``` ```
@@ -169,13 +157,11 @@ You can show your logs in the test output by passing `--nocapture` (i.e. `cargo
## 5. Documentation <a id="chapter-005"></a> ## 5. Documentation <a id="chapter-005"></a>
Official website: https://parity.io Be sure to [check out our old wiki](https://wiki.parity.io) for more information.
Be sure to [check out our wiki](https://wiki.parity.io) for more information. ### Viewing documentation for OpenEthereum packages
### Viewing documentation for Parity Ethereum packages You can generate documentation for OpenEthereum Rust packages that automatically opens in your web browser using [rustdoc with Cargo](https://doc.rust-lang.org/rustdoc/what-is-rustdoc.html#using-rustdoc-with-cargo) (of the The Rustdoc Book), by running the the following commands:
You can generate documentation for Parity Ethereum Rust packages that automatically opens in your web browser using [rustdoc with Cargo](https://doc.rust-lang.org/rustdoc/what-is-rustdoc.html#using-rustdoc-with-cargo) (of the The Rustdoc Book), by running the the following commands:
* **All** packages * **All** packages
``` ```
@@ -189,196 +175,141 @@ You can generate documentation for Parity Ethereum Rust packages that automatica
Use`--document-private-items` to also view private documentation and `--no-deps` to exclude building documentation for dependencies. Use`--document-private-items` to also view private documentation and `--no-deps` to exclude building documentation for dependencies.
Replacing `<spec>` with one of the following from the details section below (i.e. `cargo doc --package parity-ethereum --open`): Replacing `<spec>` with one of the following from the details section below (i.e. `cargo doc --package openethereum --open`):
<a id="package-list"></a> <a id="package-list"></a>
**Package List** **Package List**
<details><p> <details><p>
* Parity Ethereum (EthCore) Client Application * OpenEthereum Client Application
```bash ```bash
parity-ethereum openethereum
``` ```
* Parity Ethereum Account Management, Key Management Tool, and Keys Generator * OpenEthereum Account Management, Key Management Tool, and Keys Generator
```bash ```bash
ethcore-accounts, ethkey-cli, ethstore, ethstore-cli ethcore-accounts, ethkey-cli, ethstore, ethstore-cli
``` ```
* Parity Chain Specification * OpenEthereum Chain Specification
```bash ```bash
chainspec chainspec
``` ```
* Parity CLI Signer Tool & RPC Client * OpenEthereum CLI Signer Tool & RPC Client
```bash ```bash
cli-signer parity-rpc-client cli-signer parity-rpc-client
``` ```
* Parity Ethereum Ethash & ProgPoW Implementations * OpenEthereum Ethash & ProgPoW Implementations
```bash ```bash
ethash ethash
``` ```
* Parity (EthCore) Library * EthCore Library
```bash ```bash
ethcore ethcore
``` ```
* Parity Ethereum Blockchain Database, Test Generator, Configuration, * OpenEthereum Blockchain Database, Test Generator, Configuration,
Caching, Importing Blocks, and Block Information Caching, Importing Blocks, and Block Information
```bash ```bash
ethcore-blockchain ethcore-blockchain
``` ```
* Parity Ethereum (EthCore) Contract Calls and Blockchain Service & Registry Information * OpenEthereum Contract Calls and Blockchain Service & Registry Information
```bash ```bash
ethcore-call-contract ethcore-call-contract
``` ```
* Parity Ethereum (EthCore) Database Access & Utilities, Database Cache Manager * OpenEthereum Database Access & Utilities, Database Cache Manager
```bash ```bash
ethcore-db ethcore-db
``` ```
* Parity Ethereum Virtual Machine (EVM) Rust Implementation * OpenEthereum Virtual Machine (EVM) Rust Implementation
```bash ```bash
evm evm
``` ```
* Parity Ethereum (EthCore) Light Client Implementation * OpenEthereum Light Client Implementation
```bash ```bash
ethcore-light ethcore-light
``` ```
* Parity Smart Contract based Node Filter, Manage Permissions of Network Connections * Smart Contract based Node Filter, Manage Permissions of Network Connections
```bash ```bash
node-filter node-filter
``` ```
* Parity Private Transactions * Private Transactions
```bash ```bash
ethcore-private-tx ethcore-private-tx
``` ```
* Parity Ethereum (EthCore) Client & Network Service Creation & Registration with the I/O Subsystem * OpenEthereum Client & Network Service Creation & Registration with the I/O Subsystem
```bash ```bash
ethcore-service ethcore-service
``` ```
* Parity Ethereum (EthCore) Blockchain Synchronization * OpenEthereum Blockchain Synchronization
```bash ```bash
ethcore-sync ethcore-sync
``` ```
* Parity Ethereum Common Types * OpenEthereum Common Types
```bash ```bash
common-types common-types
``` ```
* Parity Ethereum Virtual Machines (VM) Support Library * OpenEthereum Virtual Machines (VM) Support Library
```bash ```bash
vm vm
``` ```
* Parity Ethereum WASM Interpreter * OpenEthereum WASM Interpreter
```bash ```bash
wasm wasm
``` ```
* Parity Ethereum WASM Test Runner * OpenEthereum WASM Test Runner
```bash ```bash
pwasm-run-test pwasm-run-test
``` ```
* Parity EVM Implementation * OpenEthereum EVM Implementation
```bash ```bash
evmbin evmbin
``` ```
* Parity Ethereum IPFS-compatible API * OpenEthereum JSON Deserialization
```bash
parity-ipfs-api
```
* Parity Ethereum JSON Deserialization
```bash ```bash
ethjson ethjson
``` ```
* Parity Ethereum State Machine Generalization for Consensus Engines * OpenEthereum State Machine Generalization for Consensus Engines
```bash ```bash
parity-machine parity-machine
``` ```
* Parity Ethereum (EthCore) Miner Interface * OpenEthereum Miner Interface
```bash ```bash
ethcore-miner parity-local-store price-info ethcore-stratum using_queue ethcore-miner parity-local-store price-info ethcore-stratum using_queue
``` ```
* Parity Ethereum (EthCore) Logger Implementation * OpenEthereum Logger Implementation
```bash ```bash
ethcore-logger ethcore-logger
``` ```
* C bindings library for the Parity Ethereum client * OpenEthereum JSON-RPC Servers
```bash
parity-clib
```
* Parity Ethereum JSON-RPC Servers
```bash ```bash
parity-rpc parity-rpc
``` ```
* Parity Ethereum (EthCore) Secret Store * OpenEthereum Updater Service
```bash
ethcore-secretstore
```
* Parity Updater Service
```bash ```bash
parity-updater parity-hash-fetch parity-updater parity-hash-fetch
``` ```
* Parity Core Libraries (Parity Util) * OpenEthereum Core Libraries (`util`)
```bash ```bash
ethcore-bloom-journal blooms-db dir eip-712 fake-fetch fastmap fetch ethcore-io accounts-bloom blooms-db dir eip-712 fake-fetch fastmap fetch ethcore-io
journaldb keccak-hasher len-caching-lock macros memory-cache memzero journaldb keccak-hasher len-caching-lock memory-cache memzero
migration-rocksdb ethcore-network ethcore-network-devp2p panic_hook migration-rocksdb ethcore-network ethcore-network-devp2p panic_hook
patricia-trie-ethereum registrar rlp_compress rlp_derive parity-runtime stats patricia-trie-ethereum registrar rlp_compress stats
time-utils triehash-ethereum unexpected parity-version time-utils triehash-ethereum unexpected parity-version
``` ```
* Parity Whisper Protocol Implementation
```bash
parity-whisper whisper-cli
```
</p></details> </p></details>
### Contributing to documentation for Parity Ethereum packages
[Document source code](https://doc.rust-lang.org/1.9.0/book/documentation.html) for Parity Ethereum packages by annotating the source code with documentation comments.
Example (generic documentation comment):
```markdown
/// Summary
///
/// Description
///
/// # Panics
///
/// # Errors
///
/// # Safety
///
/// # Examples
///
/// Summary of Example 1
///
/// ```rust
/// // insert example 1 code here for use with documentation as tests
/// ```
///
```
## 6. Toolchain <a id="chapter-006"></a> ## 6. Toolchain <a id="chapter-006"></a>
In addition to the Parity Ethereum client, there are additional tools in this repository available: In addition to the OpenEthereum client, there are additional tools in this repository available:
- [evmbin](./evmbin) - Parity Ethereum EVM Implementation. - [evmbin](./evmbin) - OpenEthereum EVM Implementation.
- [ethstore](./accounts/ethstore) - Parity Ethereum Key Management. - [ethstore](./accounts/ethstore) - OpenEthereum Key Management.
- [ethkey](./accounts/ethkey) - Parity Ethereum Keys Generator. - [ethkey](./accounts/ethkey) - OpenEthereum Keys Generator.
- [whisper](./whisper) - Parity Ethereum Whisper-v2 PoC Implementation.
The following tool is available in a separate repository: The following tools are available in a separate repository:
- [ethabi](https://github.com/paritytech/ethabi) - Parity Ethereum Encoding of Function Calls. [Docs here](https://crates.io/crates/ethabi) - [ethabi](https://github.com/openethereum/ethabi) - OpenEthereum Encoding of Function Calls. [Docs here](https://crates.io/crates/ethabi)
- [whisper](https://github.com/openethereum/whisper) - OpenEthereum Whisper-v2 PoC Implementation.
## 7. Community <a id="chapter-007"></a> ## 7. Contributing <a id="chapter-007"></a>
### Join the chat!
Questions? Get in touch with us on Gitter:
[![Gitter: Parity](https://img.shields.io/badge/gitter-parity-4AB495.svg)](https://gitter.im/paritytech/parity)
[![Gitter: Parity.js](https://img.shields.io/badge/gitter-parity.js-4AB495.svg)](https://gitter.im/paritytech/parity.js)
[![Gitter: Parity/Miners](https://img.shields.io/badge/gitter-parity/miners-4AB495.svg)](https://gitter.im/paritytech/parity/miners)
[![Gitter: Parity-PoA](https://img.shields.io/badge/gitter-parity--poa-4AB495.svg)](https://gitter.im/paritytech/parity-poa)
Alternatively, join our community on Matrix:
[![Riot: +Parity](https://img.shields.io/badge/riot-%2Bparity%3Amatrix.parity.io-orange.svg)](https://riot.im/app/#/group/+parity:matrix.parity.io)
## 8. Contributing <a id="chapter-008"></a>
An introduction has been provided in the ["So You Want to be a Core Developer" presentation slides by Hernando Castano](http://tiny.cc/contrib-to-parity-eth). Additional guidelines are provided in [CONTRIBUTING](./.github/CONTRIBUTING.md). An introduction has been provided in the ["So You Want to be a Core Developer" presentation slides by Hernando Castano](http://tiny.cc/contrib-to-parity-eth). Additional guidelines are provided in [CONTRIBUTING](./.github/CONTRIBUTING.md).
@@ -386,6 +317,6 @@ An introduction has been provided in the ["So You Want to be a Core Developer" p
[CODE_OF_CONDUCT](./.github/CODE_OF_CONDUCT.md) [CODE_OF_CONDUCT](./.github/CODE_OF_CONDUCT.md)
## 9. License <a id="chapter-009"></a> ## 8. License <a id="chapter-008"></a>
[LICENSE](./LICENSE) [LICENSE](./LICENSE)

View File

@@ -1,80 +0,0 @@
# Security Policy
Parity Technologies is committed to resolving security vulnerabilities in our software quickly and carefully. We take the necessary steps to minimize risk, provide timely information, and deliver vulnerability fixes and mitigations required to address security issues.
## Reporting a Vulnerability
Security vulnerabilities in Parity software should be reported by email to security@parity.io. If you think your report might be eligible for the Parity Bug Bounty Program, your email should be send to bugbounty@parity.io.
Your report should include the following:
- your name
- description of the vulnerability
- attack scenario (if any)
- components
- reproduction
- other details
Try to include as much information in your report as you can, including a description of the vulnerability, its potential impact, and steps for reproducing it. Be sure to use a descriptive subject line.
You'll receive a response to your email within two business days indicating the next steps in handling your report. We encourage finders to use encrypted communication channels to protect the confidentiality of vulnerability reports. You can encrypt your report using our public key. This key is [on MIT's key server](https://pgp.mit.edu/pks/lookup?op=get&search=0x5D0F03018D07DE73) server and reproduced below.
After the initial reply to your report, our team will endeavor to keep you informed of the progress being made towards a fix. These updates will be sent at least every five business days.
Thank you for taking the time to responsibly disclose any vulnerabilities you find.
## Responsible Investigation and Reporting
Responsible investigation and reporting includes, but isn't limited to, the following:
- Don't violate the privacy of other users, destroy data, etc.
- Dont defraud or harm Parity Technologies Ltd or its users during your research; you should make a good faith effort to not interrupt or degrade our services.
- Don't target our physical security measures, or attempt to use social engineering, spam, distributed denial of service (DDOS) attacks, etc.
- Initially report the bug only to us and not to anyone else.
- Give us a reasonable amount of time to fix the bug before disclosing it to anyone else, and give us adequate written warning before disclosing it to anyone else.
- In general, please investigate and report bugs in a way that makes a reasonable, good faith effort not to be disruptive or harmful to us or our users. Otherwise your actions might be interpreted as an attack rather than an effort to be helpful.
## Bug Bounty Program
Our Bug Bounty Program allows us to recognise and reward members of the Parity community for helping us find and address significant bugs, in accordance with the terms of the Parity Bug Bounty Program. A detailed description on eligibility, rewards, legal information and terms & conditions for contributors can be found on [our website](https://paritytech.io/bug-bounty.html).
## Plaintext PGP Key
```
-----BEGIN PGP PUBLIC KEY BLOCK-----
mQENBFlyIAwBCACe0keNPjgYzZ1Oy/8t3zj/Qw9bHHqrzx7FWy8NbXnYBM19NqOZ
DIP7Oe0DvCaf/uruBskCS0iVstHlEFQ2AYe0Ei0REt9lQdy61GylU/DEB3879IG+
6FO0SnFeYeerv1/hFI2K6uv8v7PyyVDiiJSW0I1KIs2OBwJicTKmWxLAeQsRgx9G
yRGalrVk4KP+6pWTA7k3DxmDZKZyfYV/Ej10NtuzmsemwDbv98HKeomp/kgFOfSy
3AZjeCpctlsNqpjUuXa0/HudmH2WLxZ0fz8XeoRh8XM9UudNIecjrDqmAFrt/btQ
/3guvlzhFCdhYPVGsUusKMECk/JG+Xx1/1ZjABEBAAG0LFBhcml0eSBTZWN1cml0
eSBDb250YWN0IDxzZWN1cml0eUBwYXJpdHkuaW8+iQFUBBMBCAA+FiEE2uUVYCjP
N6B8aTiDXQ8DAY0H3nMFAllyIAwCGwMFCQPCZwAFCwkIBwIGFQgJCgsCBBYCAwEC
HgECF4AACgkQXQ8DAY0H3nM60wgAkS3A36Zc+upiaxU7tumcGv+an17j7gin0sif
+0ELSjVfrXInM6ovai+NhUdcLkJ7tCrKS90fvlaELK5Sg9CXBWCTFccKN4A/B7ey
rOg2NPXUecnyBB/XqQgKYH7ujYlOlqBDXMfz6z8Hj6WToxg9PPMGGomyMGh8AWxM
3yRPFs5RKt0VKgN++5N00oly5Y8ri5pgCidDvCLYMGTVDHFKwkuc9w6BlWlu1R1e
/hXFWUFAP1ffTAul3QwyKhjPn2iotCdxXjvt48KaU8DN4iL7aMBN/ZBKqGS7yRdF
D/JbJyaaJ0ZRvFSTSXy/sWY3z1B5mtCPBxco8hqqNfRkCwuZ6LkBDQRZciAMAQgA
8BP8xrwe12TOUTqL/Vrbxv/FLdhKh53J6TrPKvC2TEEKOrTNo5ahRq+XOS5E7G2N
x3b+fq8gR9BzFcldAx0XWUtGs/Wv++ulaSNqTBxj13J3G3WGsUfMKxRgj//piCUD
bCFLQfGZdKk0M1o9QkPVARwwmvCNiNB/l++xGqPtfc44H5jWj3GoGvL2MkShPzrN
yN/bJ+m+R5gtFGdInqa5KXBuxxuW25eDKJ+LzjbgUgeC76wNcfOiQHTdMkcupjdO
bbGFwo10hcbRAOcZEv6//Zrlmk/6nPxEd2hN20St2bSN0+FqfZ267mWEu3ejsgF8
ArdCpv5h4fBvJyNwiTZwIQARAQABiQE8BBgBCAAmFiEE2uUVYCjPN6B8aTiDXQ8D
AY0H3nMFAllyIAwCGwwFCQPCZwAACgkQXQ8DAY0H3nNisggAl4fqhRlA34wIb190
sqXHVxiCuzPaqS6krE9xAa1+gncX485OtcJNqnjugHm2rFE48lv7oasviuPXuInE
/OgVFnXYv9d/Xx2JUeDs+bFTLouCDRY2Unh7KJZasfqnMcCHWcxHx5FvRNZRssaB
WTZVo6sizPurGUtbpYe4/OLFhadBqAE0EUmVRFEUMc1YTnu4eLaRBzoWN4d2UWwi
LN25RSrVSke7LTSFbgn9ntQrQ2smXSR+cdNkkfRCjFcpUaecvFl9HwIqoyVbT4Ym
0hbpbbX/cJdc91tKa+psa29uMeGL/cgL9fAu19yNFRyOTMxjZnvql1X/WE1pLmoP
ETBD1Q==
=K9Qw
-----END PGP PUBLIC KEY BLOCK-----
```

49
SMART_CONTRACT_LICENSE Normal file
View File

@@ -0,0 +1,49 @@
SMART CONTRACT LICENSE v1.0
Anyone may run, modify, publicly perform, distribute and redistribute this
software, and create derivative works based on it in each case in compliance
with the permissions granted by the document (“Permissions Document”) whose
**KECCAK256 HASH** equals the value found in the PUBLICLY READABLE VARIABLE
named permissionsDocumentHash on the **ETHEREUM MAINNET** **SMART CONTRACT
ACCOUNT** with the following ADDRESS 0x5a88CA36Fd58Efde3b955758285E8e3347D1eAe3
which is deemed incorporated into this license by reference. In case of any
conflicts between this license and the Permissions Document, this license shall
prevail.
Where:
- KECCAK256 HASH is the cryptographic hash algorithm that may take any document,
expressed as a series of bytes, and convert it to a single value which may be
expressed as a number from 0 to `2**256`;
- ETHEREUM MAINNET is the peer-to-peer blockchain network and shared account
ledger initiated and recognised by the Ethereum Foundation as "Ethereum";
- SMART CONTRACT ACCOUNT is a single account to be found on the ETHEREUM MAINNET
identified by an ADDRESS and which represents the combination of a computer
programme and some associated values;
- ADDRESS is a number between 0 and `2**160`, which is the primary means of
identifying a single account on the ETHEREUM MAINNET;
- PUBLICLY READABLE VARIABLE is an item in a smart contract storage, publicly
accessible via the smart contracts ABI using a getter function matching its
name.
This license supplements and does not replace any other license pertaining to
this software.
No permissions are granted if no **KECCAK256 HASH** appears in the *ETHEREUM
MAINNET** **SMART CONTRACT ACCOUNT**.
This license takes effect as a bare licence, and has the effect of granting
rights to each licensee (which may be subject to conditions), BUT IMPOSES NO
OBLIGATIONS OR LIABILITY ON ANY LICENSOR, ANY OWNER OF RIGHTS IN THE SOFTWARE,
OR ANY PERSON INVOLVED IN THE DESIGN, DEVELOPMENT AND CODING OF THE SOFTWARE
(“GRANTOR”).
Each Grantor shall, to the maximum extent permitted by law, have no liability
for direct, indirect, special, incidental, consequential, exemplary, punitive or
other damages of any character including, without limitation, procurement of
substitute software or services, loss of use, data or profits, or business
interruption, however caused and on any theory of contract, warranty, tort
(including negligence), product liability or otherwise, arising in any way in
relation to the supply, licensing or operation of the software, even if advised
of the possibility of such damages.

View File

@@ -1,6 +1,5 @@
[package] [package]
description = "Parity Ethereum Account Management" description = "OpenEthereum Account Management"
homepage = "http://parity.io"
license = "GPL-3.0" license = "GPL-3.0"
name = "ethcore-accounts" name = "ethcore-accounts"
version = "0.1.0" version = "0.1.0"
@@ -11,11 +10,12 @@ edition = "2018"
ethkey = { path = "ethkey" } ethkey = { path = "ethkey" }
ethstore = { path = "ethstore" } ethstore = { path = "ethstore" }
log = "0.4" log = "0.4"
parking_lot = "0.7" parity-crypto = { version = "0.6.1", features = ["publickey"] }
parking_lot = "0.10.0"
serde = "1.0" serde = "1.0"
serde_derive = "1.0" serde_derive = "1.0"
serde_json = "1.0" serde_json = "1.0"
[dev-dependencies] [dev-dependencies]
ethereum-types = "0.6.0" ethereum-types = "0.9.0"
tempdir = "0.3" tempfile = "3.1"

View File

@@ -1,21 +1,13 @@
[package] [package]
description = "Parity Ethereum Keys Generator" description = "OpenEthereum Keys Generator"
name = "ethkey" name = "ethkey"
version = "0.3.0" version = "0.4.0"
authors = ["Parity Technologies <admin@parity.io>"] authors = ["Parity Technologies <admin@parity.io>"]
[dependencies] [dependencies]
edit-distance = "2.0" edit-distance = "2.0"
parity-crypto = "0.4.0"
eth-secp256k1 = { git = "https://github.com/paritytech/rust-secp256k1" }
ethereum-types = "0.6.0"
lazy_static = "1.0"
log = "0.4" log = "0.4"
parity-wordlist = "1.3"
quick-error = "1.2.2"
rand = "0.6"
rustc-hex = "1.0"
serde = "1.0" serde = "1.0"
serde_derive = "1.0" serde_derive = "1.0"
tiny-keccak = "1.4" parity-crypto = { version = "0.6.1", features = ["publickey"] }
zeroize = "0.9.1" parity-wordlist = "1.3.1"

View File

@@ -1,12 +1,12 @@
## ethkey-cli ## ethkey-cli
Parity Ethereum keys generator. OpenEthereum keys generator.
### Usage ### Usage
``` ```
Parity Ethereum Keys Generator. OpenEthereum Keys Generator.
Copyright 2015-2019 Parity Technologies (UK) Ltd. Copyright 2015-2020 Parity Technologies (UK) Ltd.
Usage: Usage:
ethkey info <secret-or-phrase> [options] ethkey info <secret-or-phrase> [options]
@@ -211,11 +211,11 @@ public: 4e19a5fdae82596e1485c69b687c9cc52b5078e5b0668ef3ce8543cd90e712cb00df822
address: 00cf3711cbd3a1512570639280758118ba0b2bcb address: 00cf3711cbd3a1512570639280758118ba0b2bcb
``` ```
## Parity Ethereum toolchain ## OpenEthereum toolchain
_This project is a part of the Parity Ethereum toolchain._ _This project is a part of the OpenEthereum toolchain._
- [evmbin](https://github.com/paritytech/parity-ethereum/blob/master/evmbin/) - EVM implementation for Parity Ethereum. - [evmbin](https://github.com/openethereum/openethereum/blob/master/evmbin/) - EVM implementation for OpenEthereum.
- [ethabi](https://github.com/paritytech/ethabi) - Parity Ethereum function calls encoding. - [ethabi](https://github.com/OpenEthereum/ethabi) - OpenEthereum function calls encoding.
- [ethstore](https://github.com/paritytech/parity-ethereum/blob/master/accounts/ethstore) - Parity Ethereum key management. - [ethstore](https://github.com/openethereum/openethereum/blob/master/accounts/ethstore) - OpenEthereum key management.
- [ethkey](https://github.com/paritytech/parity-ethereum/blob/master/accounts/ethkey) - Parity Ethereum keys generator. - [ethkey](https://github.com/openethereum/openethereum/blob/master/accounts/ethkey) - OpenEthereum keys generator.
- [whisper](https://github.com/paritytech/parity-ethereum/blob/master/whisper/) - Implementation of Whisper-v2 PoC. - [whisper](https://github.com/OpenEthereum/whisper) - Implementation of Whisper-v2 PoC.

View File

@@ -1,5 +1,5 @@
[package] [package]
description = "Parity Ethereum Keys Generator CLI" description = "OpenEthereum Keys Generator CLI"
name = "ethkey-cli" name = "ethkey-cli"
version = "0.1.0" version = "0.1.0"
authors = ["Parity Technologies <admin@parity.io>"] authors = ["Parity Technologies <admin@parity.io>"]
@@ -9,8 +9,9 @@ docopt = "1.0"
env_logger = "0.5" env_logger = "0.5"
ethkey = { path = "../" } ethkey = { path = "../" }
panic_hook = { path = "../../../util/panic-hook" } panic_hook = { path = "../../../util/panic-hook" }
parity-wordlist="1.2" parity-crypto = { version = "0.6.1", features = ["publickey"] }
rustc-hex = "1.0" parity-wordlist= "1.3.1"
rustc-hex = "2.1.0"
serde = "1.0" serde = "1.0"
serde_derive = "1.0" serde_derive = "1.0"
threadpool = "1.7" threadpool = "1.7"

View File

@@ -1,24 +1,25 @@
// Copyright 2015-2019 Parity Technologies (UK) Ltd. // Copyright 2015-2020 Parity Technologies (UK) Ltd.
// This file is part of Parity Ethereum. // This file is part of Open Ethereum.
// Parity Ethereum is free software: you can redistribute it and/or modify // Open Ethereum is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or // the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version. // (at your option) any later version.
// Parity Ethereum is distributed in the hope that it will be useful, // Open Ethereum is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details. // GNU General Public License for more details.
// You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
// along with Parity Ethereum. If not, see <http://www.gnu.org/licenses/>. // along with Open Ethereum. If not, see <http://www.gnu.org/licenses/>.
extern crate docopt; extern crate docopt;
extern crate env_logger; extern crate env_logger;
extern crate ethkey; extern crate ethkey;
extern crate panic_hook; extern crate panic_hook;
extern crate parity_wordlist; extern crate parity_wordlist;
extern crate parity_crypto;
extern crate rustc_hex; extern crate rustc_hex;
extern crate serde; extern crate serde;
extern crate threadpool; extern crate threadpool;
@@ -30,12 +31,13 @@ use std::num::ParseIntError;
use std::{env, fmt, process, io, sync}; use std::{env, fmt, process, io, sync};
use docopt::Docopt; use docopt::Docopt;
use ethkey::{KeyPair, Random, Brain, BrainPrefix, Prefix, Error as EthkeyError, Generator, sign, verify_public, verify_address, brain_recover}; use ethkey::{Brain, BrainPrefix, Prefix, brain_recover};
use parity_crypto::publickey::{KeyPair, Random, Error as EthkeyError, Generator, sign, verify_public, verify_address};
use rustc_hex::{FromHex, FromHexError}; use rustc_hex::{FromHex, FromHexError};
const USAGE: &'static str = r#" const USAGE: &'static str = r#"
Parity Ethereum keys generator. OpenEthereum keys generator.
Copyright 2015-2019 Parity Technologies (UK) Ltd. Copyright 2015-2020 Parity Technologies (UK) Ltd.
Usage: Usage:
ethkey info <secret-or-phrase> [options] ethkey info <secret-or-phrase> [options]
@@ -197,10 +199,10 @@ fn execute<S, I>(command: I) -> Result<String, Error> where I: IntoIterator<Item
let result = if args.flag_brain { let result = if args.flag_brain {
let phrase = args.arg_secret_or_phrase; let phrase = args.arg_secret_or_phrase;
let phrase_info = validate_phrase(&phrase); let phrase_info = validate_phrase(&phrase);
let keypair = Brain::new(phrase).generate().expect("Brain wallet generator is infallible; qed"); let keypair = Brain::new(phrase).generate();
(keypair, Some(phrase_info)) (keypair, Some(phrase_info))
} else { } else {
let secret = args.arg_secret_or_phrase.parse().map_err(|_| EthkeyError::InvalidSecret)?; let secret = args.arg_secret_or_phrase.parse().map_err(|_| EthkeyError::InvalidSecretKey)?;
(KeyPair::from_secret(secret)?, None) (KeyPair::from_secret(secret)?, None)
}; };
Ok(display(result, display_mode)) Ok(display(result, display_mode))
@@ -213,10 +215,10 @@ fn execute<S, I>(command: I) -> Result<String, Error> where I: IntoIterator<Item
let phrase = format!("recovery phrase: {}", brain.phrase()); let phrase = format!("recovery phrase: {}", brain.phrase());
(keypair, Some(phrase)) (keypair, Some(phrase))
} else { } else {
(Random.generate()?, None) (Random.generate(), None)
} }
} else if args.cmd_prefix { } else if args.cmd_prefix {
let prefix = args.arg_prefix.from_hex()?; let prefix: Vec<_> = args.arg_prefix.from_hex()?;
let brain = args.flag_brain; let brain = args.flag_brain;
in_threads(move || { in_threads(move || {
let iterations = 1024; let iterations = 1024;
@@ -241,7 +243,7 @@ fn execute<S, I>(command: I) -> Result<String, Error> where I: IntoIterator<Item
}; };
Ok(display(result, display_mode)) Ok(display(result, display_mode))
} else if args.cmd_sign { } else if args.cmd_sign {
let secret = args.arg_secret.parse().map_err(|_| EthkeyError::InvalidSecret)?; let secret = args.arg_secret.parse().map_err(|_| EthkeyError::InvalidSecretKey)?;
let message = args.arg_message.parse().map_err(|_| EthkeyError::InvalidMessage)?; let message = args.arg_message.parse().map_err(|_| EthkeyError::InvalidMessage)?;
let signature = sign(&secret, &message)?; let signature = sign(&secret, &message)?;
Ok(format!("{}", signature)) Ok(format!("{}", signature))
@@ -249,7 +251,7 @@ fn execute<S, I>(command: I) -> Result<String, Error> where I: IntoIterator<Item
let signature = args.arg_signature.parse().map_err(|_| EthkeyError::InvalidSignature)?; let signature = args.arg_signature.parse().map_err(|_| EthkeyError::InvalidSignature)?;
let message = args.arg_message.parse().map_err(|_| EthkeyError::InvalidMessage)?; let message = args.arg_message.parse().map_err(|_| EthkeyError::InvalidMessage)?;
let ok = if args.cmd_public { let ok = if args.cmd_public {
let public = args.arg_public.parse().map_err(|_| EthkeyError::InvalidPublic)?; let public = args.arg_public.parse().map_err(|_| EthkeyError::InvalidPublicKey)?;
verify_public(&public, &signature, &message)? verify_public(&public, &signature, &message)?
} else if args.cmd_address { } else if args.cmd_address {
let address = args.arg_address.parse().map_err(|_| EthkeyError::InvalidAddress)?; let address = args.arg_address.parse().map_err(|_| EthkeyError::InvalidAddress)?;
@@ -269,7 +271,7 @@ fn execute<S, I>(command: I) -> Result<String, Error> where I: IntoIterator<Item
while let Some(phrase) = it.next() { while let Some(phrase) = it.next() {
i += 1; i += 1;
let keypair = Brain::new(phrase.clone()).generate().unwrap(); let keypair = Brain::new(phrase.clone()).generate();
if keypair.address() == address { if keypair.address() == address {
return Ok(Some((phrase, keypair))) return Ok(Some((phrase, keypair)))
} }

View File

@@ -1,21 +1,21 @@
// Copyright 2015-2019 Parity Technologies (UK) Ltd. // Copyright 2015-2020 Parity Technologies (UK) Ltd.
// This file is part of Parity Ethereum. // This file is part of Open Ethereum.
// Parity Ethereum is free software: you can redistribute it and/or modify // Open Ethereum is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or // the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version. // (at your option) any later version.
// Parity Ethereum is distributed in the hope that it will be useful, // Open Ethereum is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details. // GNU General Public License for more details.
// You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
// along with Parity Ethereum. If not, see <http://www.gnu.org/licenses/>. // along with Open Ethereum. If not, see <http://www.gnu.org/licenses/>.
use keccak::Keccak256; use parity_crypto::publickey::{KeyPair, Generator, Secret};
use super::{KeyPair, Generator, Secret}; use parity_crypto::Keccak256;
use parity_wordlist; use parity_wordlist;
/// Simple brainwallet. /// Simple brainwallet.
@@ -32,9 +32,7 @@ impl Brain {
} }
impl Generator for Brain { impl Generator for Brain {
type Error = ::Void; fn generate(&mut self) -> KeyPair {
fn generate(&mut self) -> Result<KeyPair, Self::Error> {
let seed = self.0.clone(); let seed = self.0.clone();
let mut secret = seed.into_bytes().keccak256(); let mut secret = seed.into_bytes().keccak256();
@@ -45,12 +43,12 @@ impl Generator for Brain {
match i > 16384 { match i > 16384 {
false => i += 1, false => i += 1,
true => { true => {
if let Ok(pair) = Secret::from_unsafe_slice(&secret) if let Ok(pair) = Secret::import_key(&secret)
.and_then(KeyPair::from_secret) .and_then(KeyPair::from_secret)
{ {
if pair.address()[0] == 0 { if pair.address()[0] == 0 {
trace!("Testing: {}, got: {:?}", self.0, pair.address()); trace!("Testing: {}, got: {:?}", self.0, pair.address());
return Ok(pair) return pair
} }
} }
}, },
@@ -61,13 +59,14 @@ impl Generator for Brain {
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use {Brain, Generator}; use Brain;
use parity_crypto::publickey::Generator;
#[test] #[test]
fn test_brain() { fn test_brain() {
let words = "this is sparta!".to_owned(); let words = "this is sparta!".to_owned();
let first_keypair = Brain::new(words.clone()).generate().unwrap(); let first_keypair = Brain::new(words.clone()).generate();
let second_keypair = Brain::new(words.clone()).generate().unwrap(); let second_keypair = Brain::new(words.clone()).generate();
assert_eq!(first_keypair.secret(), second_keypair.secret()); assert_eq!(first_keypair.secret(), second_keypair.secret());
} }
} }

View File

@@ -1,20 +1,21 @@
// Copyright 2015-2019 Parity Technologies (UK) Ltd. // Copyright 2015-2020 Parity Technologies (UK) Ltd.
// This file is part of Parity Ethereum. // This file is part of Open Ethereum.
// Parity Ethereum is free software: you can redistribute it and/or modify // Open Ethereum is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or // the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version. // (at your option) any later version.
// Parity Ethereum is distributed in the hope that it will be useful, // Open Ethereum is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details. // GNU General Public License for more details.
// You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
// along with Parity Ethereum. If not, see <http://www.gnu.org/licenses/>. // along with Open Ethereum. If not, see <http://www.gnu.org/licenses/>.
use super::{Generator, KeyPair, Error, Brain}; use super::Brain;
use parity_crypto::publickey::{Generator, KeyPair, Error};
use parity_wordlist as wordlist; use parity_wordlist as wordlist;
/// Tries to find brain-seed keypair with address starting with given prefix. /// Tries to find brain-seed keypair with address starting with given prefix.
@@ -38,15 +39,11 @@ impl BrainPrefix {
pub fn phrase(&self) -> &str { pub fn phrase(&self) -> &str {
&self.last_phrase &self.last_phrase
} }
}
impl Generator for BrainPrefix { pub fn generate(&mut self) -> Result<KeyPair, Error> {
type Error = Error;
fn generate(&mut self) -> Result<KeyPair, Error> {
for _ in 0..self.iterations { for _ in 0..self.iterations {
let phrase = wordlist::random_phrase(self.no_of_words); let phrase = wordlist::random_phrase(self.no_of_words);
let keypair = Brain::new(phrase.clone()).generate().unwrap(); let keypair = Brain::new(phrase.clone()).generate();
if keypair.address().as_ref().starts_with(&self.prefix) { if keypair.address().as_ref().starts_with(&self.prefix) {
self.last_phrase = phrase; self.last_phrase = phrase;
return Ok(keypair) return Ok(keypair)
@@ -59,7 +56,7 @@ impl Generator for BrainPrefix {
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use {Generator, BrainPrefix}; use BrainPrefix;
#[test] #[test]
fn prefix_generator() { fn prefix_generator() {

View File

@@ -1,25 +1,26 @@
// Copyright 2015-2019 Parity Technologies (UK) Ltd. // Copyright 2015-2020 Parity Technologies (UK) Ltd.
// This file is part of Parity Ethereum. // This file is part of Open Ethereum.
// Parity Ethereum is free software: you can redistribute it and/or modify // Open Ethereum is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or // the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version. // (at your option) any later version.
// Parity Ethereum is distributed in the hope that it will be useful, // Open Ethereum is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details. // GNU General Public License for more details.
// You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
// along with Parity Ethereum. If not, see <http://www.gnu.org/licenses/>. // along with Open Ethereum. If not, see <http://www.gnu.org/licenses/>.
use std::collections::HashSet; use std::collections::HashSet;
use edit_distance::edit_distance; use edit_distance::edit_distance;
use parity_wordlist; use parity_wordlist;
use super::{Address, Brain, Generator}; use super::Brain;
use parity_crypto::publickey::{Address, Generator};
/// Tries to find a phrase for address, given the number /// Tries to find a phrase for address, given the number
/// of expected words and a partial phrase. /// of expected words and a partial phrase.
@@ -32,7 +33,7 @@ pub fn brain_recover(
) -> Option<String> { ) -> Option<String> {
let it = PhrasesIterator::from_known_phrase(known_phrase, expected_words); let it = PhrasesIterator::from_known_phrase(known_phrase, expected_words);
for phrase in it { for phrase in it {
let keypair = Brain::new(phrase.clone()).generate().expect("Brain wallets are infallible; qed"); let keypair = Brain::new(phrase.clone()).generate();
trace!("Testing: {}, got: {:?}", phrase, keypair.address()); trace!("Testing: {}, got: {:?}", phrase, keypair.address());
if &keypair.address() == address { if &keypair.address() == address {
return Some(phrase); return Some(phrase);

View File

@@ -1,189 +0,0 @@
// Copyright 2015-2019 Parity Technologies (UK) Ltd.
// This file is part of Parity Ethereum.
// Parity Ethereum is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// Parity Ethereum is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with Parity Ethereum. If not, see <http://www.gnu.org/licenses/>.
use secp256k1;
use std::io;
use parity_crypto::error::SymmError;
quick_error! {
#[derive(Debug)]
pub enum Error {
Secp(e: secp256k1::Error) {
display("secp256k1 error: {}", e)
cause(e)
from()
}
Io(e: io::Error) {
display("i/o error: {}", e)
cause(e)
from()
}
InvalidMessage {
display("invalid message")
}
Symm(e: SymmError) {
cause(e)
from()
}
}
}
/// ECDH functions
pub mod ecdh {
use secp256k1::{self, ecdh, key};
use super::Error;
use {Secret, Public, SECP256K1};
/// Agree on a shared secret
pub fn agree(secret: &Secret, public: &Public) -> Result<Secret, Error> {
let context = &SECP256K1;
let pdata = {
let mut temp = [4u8; 65];
(&mut temp[1..65]).copy_from_slice(&public[0..64]);
temp
};
let publ = key::PublicKey::from_slice(context, &pdata)?;
let sec = key::SecretKey::from_slice(context, secret.as_bytes())?;
let shared = ecdh::SharedSecret::new_raw(context, &publ, &sec);
Secret::from_unsafe_slice(&shared[0..32])
.map_err(|_| Error::Secp(secp256k1::Error::InvalidSecretKey))
}
}
/// ECIES function
pub mod ecies {
use parity_crypto::{aes, digest, hmac, is_equal};
use ethereum_types::H128;
use super::{ecdh, Error};
use {Random, Generator, Public, Secret};
/// Encrypt a message with a public key, writing an HMAC covering both
/// the plaintext and authenticated data.
///
/// Authenticated data may be empty.
pub fn encrypt(public: &Public, auth_data: &[u8], plain: &[u8]) -> Result<Vec<u8>, Error> {
let r = Random.generate()?;
let z = ecdh::agree(r.secret(), public)?;
let mut key = [0u8; 32];
kdf(&z, &[0u8; 0], &mut key);
let ekey = &key[0..16];
let mkey = hmac::SigKey::sha256(&digest::sha256(&key[16..32]));
let mut msg = vec![0u8; 1 + 64 + 16 + plain.len() + 32];
msg[0] = 0x04u8;
{
let msgd = &mut msg[1..];
msgd[0..64].copy_from_slice(r.public().as_bytes());
let iv = H128::random();
msgd[64..80].copy_from_slice(iv.as_bytes());
{
let cipher = &mut msgd[(64 + 16)..(64 + 16 + plain.len())];
aes::encrypt_128_ctr(ekey, iv.as_bytes(), plain, cipher)?;
}
let mut hmac = hmac::Signer::with(&mkey);
{
let cipher_iv = &msgd[64..(64 + 16 + plain.len())];
hmac.update(cipher_iv);
}
hmac.update(auth_data);
let sig = hmac.sign();
msgd[(64 + 16 + plain.len())..].copy_from_slice(&sig);
}
Ok(msg)
}
/// Decrypt a message with a secret key, checking HMAC for ciphertext
/// and authenticated data validity.
pub fn decrypt(secret: &Secret, auth_data: &[u8], encrypted: &[u8]) -> Result<Vec<u8>, Error> {
let meta_len = 1 + 64 + 16 + 32;
if encrypted.len() < meta_len || encrypted[0] < 2 || encrypted[0] > 4 {
return Err(Error::InvalidMessage); //invalid message: publickey
}
let e = &encrypted[1..];
let p = Public::from_slice(&e[0..64]);
let z = ecdh::agree(secret, &p)?;
let mut key = [0u8; 32];
kdf(&z, &[0u8; 0], &mut key);
let ekey = &key[0..16];
let mkey = hmac::SigKey::sha256(&digest::sha256(&key[16..32]));
let clen = encrypted.len() - meta_len;
let cipher_with_iv = &e[64..(64+16+clen)];
let cipher_iv = &cipher_with_iv[0..16];
let cipher_no_iv = &cipher_with_iv[16..];
let msg_mac = &e[(64+16+clen)..];
// Verify tag
let mut hmac = hmac::Signer::with(&mkey);
hmac.update(cipher_with_iv);
hmac.update(auth_data);
let mac = hmac.sign();
if !is_equal(&mac.as_ref()[..], msg_mac) {
return Err(Error::InvalidMessage);
}
let mut msg = vec![0u8; clen];
aes::decrypt_128_ctr(ekey, cipher_iv, cipher_no_iv, &mut msg[..])?;
Ok(msg)
}
fn kdf(secret: &Secret, s1: &[u8], dest: &mut [u8]) {
// SEC/ISO/Shoup specify counter size SHOULD be equivalent
// to size of hash output, however, it also notes that
// the 4 bytes is okay. NIST specifies 4 bytes.
let mut ctr = 1u32;
let mut written = 0usize;
while written < dest.len() {
let mut hasher = digest::Hasher::sha256();
let ctrs = [(ctr >> 24) as u8, (ctr >> 16) as u8, (ctr >> 8) as u8, ctr as u8];
hasher.update(&ctrs);
hasher.update(secret.as_bytes());
hasher.update(s1);
let d = hasher.finish();
&mut dest[written..(written + 32)].copy_from_slice(&d);
written += 32;
ctr += 1;
}
}
}
#[cfg(test)]
mod tests {
use super::ecies;
use {Random, Generator};
#[test]
fn ecies_shared() {
let kp = Random.generate().unwrap();
let message = b"So many books, so little time";
let shared = b"shared";
let wrong_shared = b"incorrect";
let encrypted = ecies::encrypt(kp.public(), shared, message).unwrap();
assert!(encrypted[..] != message[..]);
assert_eq!(encrypted[0], 0x04);
assert!(ecies::decrypt(kp.secret(), wrong_shared, &encrypted).is_err());
let decrypted = ecies::decrypt(kp.secret(), shared, &encrypted).unwrap();
assert_eq!(decrypted[..message.len()], message[..]);
}
}

View File

@@ -1,81 +0,0 @@
// Copyright 2015-2019 Parity Technologies (UK) Ltd.
// This file is part of Parity Ethereum.
// Parity Ethereum is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// Parity Ethereum is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with Parity Ethereum. If not, see <http://www.gnu.org/licenses/>.
use std::{fmt, error};
#[derive(Debug)]
/// Crypto error
pub enum Error {
/// Invalid secret key
InvalidSecret,
/// Invalid public key
InvalidPublic,
/// Invalid address
InvalidAddress,
/// Invalid EC signature
InvalidSignature,
/// Invalid AES message
InvalidMessage,
/// IO Error
Io(::std::io::Error),
/// Custom
Custom(String),
}
impl fmt::Display for Error {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
let msg = match *self {
Error::InvalidSecret => "Invalid secret".into(),
Error::InvalidPublic => "Invalid public".into(),
Error::InvalidAddress => "Invalid address".into(),
Error::InvalidSignature => "Invalid EC signature".into(),
Error::InvalidMessage => "Invalid AES message".into(),
Error::Io(ref err) => format!("I/O error: {}", err),
Error::Custom(ref s) => s.clone(),
};
f.write_fmt(format_args!("Crypto error ({})", msg))
}
}
impl error::Error for Error {
fn description(&self) -> &str {
"Crypto error"
}
}
impl Into<String> for Error {
fn into(self) -> String {
format!("{}", self)
}
}
impl From<::secp256k1::Error> for Error {
fn from(e: ::secp256k1::Error) -> Error {
match e {
::secp256k1::Error::InvalidMessage => Error::InvalidMessage,
::secp256k1::Error::InvalidPublicKey => Error::InvalidPublic,
::secp256k1::Error::InvalidSecretKey => Error::InvalidSecret,
_ => Error::InvalidSignature,
}
}
}
impl From<::std::io::Error> for Error {
fn from(err: ::std::io::Error) -> Error {
Error::Io(err)
}
}

View File

@@ -1,517 +0,0 @@
// Copyright 2015-2019 Parity Technologies (UK) Ltd.
// This file is part of Parity Ethereum.
// Parity Ethereum is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// Parity Ethereum is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with Parity Ethereum. If not, see <http://www.gnu.org/licenses/>.
//! Extended keys
use secret::Secret;
use Public;
use ethereum_types::H256;
pub use self::derivation::Error as DerivationError;
/// Represents label that can be stored as a part of key derivation
pub trait Label {
/// Length of the data that label occupies
fn len() -> usize;
/// Store label data to the key derivation sequence
/// Must not use more than `len()` bytes from slice
fn store(&self, target: &mut [u8]);
}
impl Label for u32 {
fn len() -> usize { 4 }
fn store(&self, target: &mut [u8]) {
let bytes = self.to_be_bytes();
target[0..4].copy_from_slice(&bytes);
}
}
/// Key derivation over generic label `T`
pub enum Derivation<T: Label> {
/// Soft key derivation (allow proof of parent)
Soft(T),
/// Hard key derivation (does not allow proof of parent)
Hard(T),
}
impl From<u32> for Derivation<u32> {
fn from(index: u32) -> Self {
if index < (2 << 30) {
Derivation::Soft(index)
}
else {
Derivation::Hard(index)
}
}
}
impl Label for H256 {
fn len() -> usize { 32 }
fn store(&self, target: &mut [u8]) {
(&mut target[0..32]).copy_from_slice(self.as_bytes());
}
}
/// Extended secret key, allows deterministic derivation of subsequent keys.
pub struct ExtendedSecret {
secret: Secret,
chain_code: H256,
}
impl ExtendedSecret {
/// New extended key from given secret and chain code.
pub fn with_code(secret: Secret, chain_code: H256) -> ExtendedSecret {
ExtendedSecret {
secret: secret,
chain_code: chain_code,
}
}
/// New extended key from given secret with the random chain code.
pub fn new_random(secret: Secret) -> ExtendedSecret {
ExtendedSecret::with_code(secret, H256::random())
}
/// New extended key from given secret.
/// Chain code will be derived from the secret itself (in a deterministic way).
pub fn new(secret: Secret) -> ExtendedSecret {
let chain_code = derivation::chain_code(*secret);
ExtendedSecret::with_code(secret, chain_code)
}
/// Derive new private key
pub fn derive<T>(&self, index: Derivation<T>) -> ExtendedSecret where T: Label {
let (derived_key, next_chain_code) = derivation::private(*self.secret, self.chain_code, index);
let derived_secret = Secret::from(derived_key.0);
ExtendedSecret::with_code(derived_secret, next_chain_code)
}
/// Private key component of the extended key.
pub fn as_raw(&self) -> &Secret {
&self.secret
}
}
/// Extended public key, allows deterministic derivation of subsequent keys.
pub struct ExtendedPublic {
public: Public,
chain_code: H256,
}
impl ExtendedPublic {
/// New extended public key from known parent and chain code
pub fn new(public: Public, chain_code: H256) -> Self {
ExtendedPublic { public: public, chain_code: chain_code }
}
/// Create new extended public key from known secret
pub fn from_secret(secret: &ExtendedSecret) -> Result<Self, DerivationError> {
Ok(
ExtendedPublic::new(
derivation::point(**secret.as_raw())?,
secret.chain_code.clone(),
)
)
}
/// Derive new public key
/// Operation is defined only for index belongs [0..2^31)
pub fn derive<T>(&self, index: Derivation<T>) -> Result<Self, DerivationError> where T: Label {
let (derived_key, next_chain_code) = derivation::public(self.public, self.chain_code, index)?;
Ok(ExtendedPublic::new(derived_key, next_chain_code))
}
pub fn public(&self) -> &Public {
&self.public
}
}
pub struct ExtendedKeyPair {
secret: ExtendedSecret,
public: ExtendedPublic,
}
impl ExtendedKeyPair {
pub fn new(secret: Secret) -> Self {
let extended_secret = ExtendedSecret::new(secret);
let extended_public = ExtendedPublic::from_secret(&extended_secret)
.expect("Valid `Secret` always produces valid public; qed");
ExtendedKeyPair {
secret: extended_secret,
public: extended_public,
}
}
pub fn with_code(secret: Secret, public: Public, chain_code: H256) -> Self {
ExtendedKeyPair {
secret: ExtendedSecret::with_code(secret, chain_code.clone()),
public: ExtendedPublic::new(public, chain_code),
}
}
pub fn with_secret(secret: Secret, chain_code: H256) -> Self {
let extended_secret = ExtendedSecret::with_code(secret, chain_code);
let extended_public = ExtendedPublic::from_secret(&extended_secret)
.expect("Valid `Secret` always produces valid public; qed");
ExtendedKeyPair {
secret: extended_secret,
public: extended_public,
}
}
pub fn with_seed(seed: &[u8]) -> Result<ExtendedKeyPair, DerivationError> {
let (master_key, chain_code) = derivation::seed_pair(seed);
Ok(ExtendedKeyPair::with_secret(
Secret::from_unsafe_slice(master_key.as_bytes()).map_err(|_| DerivationError::InvalidSeed)?,
chain_code,
))
}
pub fn secret(&self) -> &ExtendedSecret {
&self.secret
}
pub fn public(&self) -> &ExtendedPublic {
&self.public
}
pub fn derive<T>(&self, index: Derivation<T>) -> Result<Self, DerivationError> where T: Label {
let derived = self.secret.derive(index);
Ok(ExtendedKeyPair {
public: ExtendedPublic::from_secret(&derived)?,
secret: derived,
})
}
}
// Derivation functions for private and public keys
// Work is based on BIP0032
// https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki
mod derivation {
use parity_crypto::hmac;
use ethereum_types::{BigEndianHash, U256, U512, H512, H256};
use secp256k1::key::{SecretKey, PublicKey};
use SECP256K1;
use keccak;
use math::curve_order;
use super::{Label, Derivation};
use std::convert::TryInto;
#[derive(Debug)]
pub enum Error {
InvalidHardenedUse,
InvalidPoint,
MissingIndex,
InvalidSeed,
}
// Deterministic derivation of the key using secp256k1 elliptic curve.
// Derivation can be either hardened or not.
// For hardened derivation, pass u32 index at least 2^31 or custom Derivation::Hard(T) enum
//
// Can panic if passed `private_key` is not a valid secp256k1 private key
// (outside of (0..curve_order()]) field
pub fn private<T>(private_key: H256, chain_code: H256, index: Derivation<T>) -> (H256, H256) where T: Label {
match index {
Derivation::Soft(index) => private_soft(private_key, chain_code, index),
Derivation::Hard(index) => private_hard(private_key, chain_code, index),
}
}
fn hmac_pair(data: &[u8], private_key: H256, chain_code: H256) -> (H256, H256) {
let private: U256 = private_key.into_uint();
// produces 512-bit derived hmac (I)
let skey = hmac::SigKey::sha512(chain_code.as_bytes());
let i_512 = hmac::sign(&skey, &data[..]);
// left most 256 bits are later added to original private key
let hmac_key: U256 = H256::from_slice(&i_512[0..32]).into_uint();
// right most 256 bits are new chain code for later derivations
let next_chain_code = H256::from_slice(&i_512[32..64]);
let child_key = BigEndianHash::from_uint(&private_add(hmac_key, private));
(child_key, next_chain_code)
}
// Can panic if passed `private_key` is not a valid secp256k1 private key
// (outside of (0..curve_order()]) field
fn private_soft<T>(private_key: H256, chain_code: H256, index: T) -> (H256, H256) where T: Label {
let mut data = vec![0u8; 33 + T::len()];
let sec_private = SecretKey::from_slice(&SECP256K1, private_key.as_bytes())
.expect("Caller should provide valid private key");
let sec_public = PublicKey::from_secret_key(&SECP256K1, &sec_private)
.expect("Caller should provide valid private key");
let public_serialized = sec_public.serialize_vec(&SECP256K1, true);
// curve point (compressed public key) -- index
// 0.33 -- 33..end
data[0..33].copy_from_slice(&public_serialized);
index.store(&mut data[33..]);
hmac_pair(&data, private_key, chain_code)
}
// Deterministic derivation of the key using secp256k1 elliptic curve
// This is hardened derivation and does not allow to associate
// corresponding public keys of the original and derived private keys
fn private_hard<T>(private_key: H256, chain_code: H256, index: T) -> (H256, H256) where T: Label {
let mut data: Vec<u8> = vec![0u8; 33 + T::len()];
let private: U256 = private_key.into_uint();
// 0x00 (padding) -- private_key -- index
// 0 -- 1..33 -- 33..end
private.to_big_endian(&mut data[1..33]);
index.store(&mut data[33..(33 + T::len())]);
hmac_pair(&data, private_key, chain_code)
}
fn private_add(k1: U256, k2: U256) -> U256 {
let sum = U512::from(k1) + U512::from(k2);
modulo(sum, curve_order())
}
// todo: surely can be optimized
fn modulo(u1: U512, u2: U256) -> U256 {
let m = u1 % U512::from(u2);
m.try_into().expect("U512 modulo U256 should fit into U256; qed")
}
pub fn public<T>(public_key: H512, chain_code: H256, derivation: Derivation<T>) -> Result<(H512, H256), Error> where T: Label {
let index = match derivation {
Derivation::Soft(index) => index,
Derivation::Hard(_) => { return Err(Error::InvalidHardenedUse); }
};
let mut public_sec_raw = [0u8; 65];
public_sec_raw[0] = 4;
public_sec_raw[1..65].copy_from_slice(public_key.as_bytes());
let public_sec = PublicKey::from_slice(&SECP256K1, &public_sec_raw).map_err(|_| Error::InvalidPoint)?;
let public_serialized = public_sec.serialize_vec(&SECP256K1, true);
let mut data = vec![0u8; 33 + T::len()];
// curve point (compressed public key) -- index
// 0.33 -- 33..end
data[0..33].copy_from_slice(&public_serialized);
index.store(&mut data[33..(33 + T::len())]);
// HMAC512SHA produces [derived private(256); new chain code(256)]
let skey = hmac::SigKey::sha512(chain_code.as_bytes());
let i_512 = hmac::sign(&skey, &data[..]);
let new_private = H256::from_slice(&i_512[0..32]);
let new_chain_code = H256::from_slice(&i_512[32..64]);
// Generated private key can (extremely rarely) be out of secp256k1 key field
if curve_order() <= new_private.into_uint() { return Err(Error::MissingIndex); }
let new_private_sec = SecretKey::from_slice(&SECP256K1, new_private.as_bytes())
.expect("Private key belongs to the field [0..CURVE_ORDER) (checked above); So initializing can never fail; qed");
let mut new_public = PublicKey::from_secret_key(&SECP256K1, &new_private_sec)
.expect("Valid private key produces valid public key");
// Adding two points on the elliptic curves (combining two public keys)
new_public.add_assign(&SECP256K1, &public_sec)
.expect("Addition of two valid points produce valid point");
let serialized = new_public.serialize_vec(&SECP256K1, false);
Ok((
H512::from_slice(&serialized[1..65]),
new_chain_code,
))
}
fn sha3(slc: &[u8]) -> H256 {
keccak::Keccak256::keccak256(slc).into()
}
pub fn chain_code(secret: H256) -> H256 {
// 10,000 rounds of sha3
let mut running_sha3 = sha3(secret.as_bytes());
for _ in 0..99999 { running_sha3 = sha3(running_sha3.as_bytes()); }
running_sha3
}
pub fn point(secret: H256) -> Result<H512, Error> {
let sec = SecretKey::from_slice(&SECP256K1, secret.as_bytes())
.map_err(|_| Error::InvalidPoint)?;
let public_sec = PublicKey::from_secret_key(&SECP256K1, &sec)
.map_err(|_| Error::InvalidPoint)?;
let serialized = public_sec.serialize_vec(&SECP256K1, false);
Ok(H512::from_slice(&serialized[1..65]))
}
pub fn seed_pair(seed: &[u8]) -> (H256, H256) {
let skey = hmac::SigKey::sha512(b"Bitcoin seed");
let i_512 = hmac::sign(&skey, seed);
let master_key = H256::from_slice(&i_512[0..32]);
let chain_code = H256::from_slice(&i_512[32..64]);
(master_key, chain_code)
}
}
#[cfg(test)]
mod tests {
use super::{ExtendedSecret, ExtendedPublic, ExtendedKeyPair};
use secret::Secret;
use std::str::FromStr;
use ethereum_types::{H128, H256, H512};
use super::{derivation, Derivation};
fn master_chain_basic() -> (H256, H256) {
let seed = H128::from_str("000102030405060708090a0b0c0d0e0f")
.expect("Seed should be valid H128")
.as_bytes()
.to_vec();
derivation::seed_pair(&*seed)
}
fn test_extended<F>(f: F, test_private: H256) where F: Fn(ExtendedSecret) -> ExtendedSecret {
let (private_seed, chain_code) = master_chain_basic();
let extended_secret = ExtendedSecret::with_code(Secret::from(private_seed.0), chain_code);
let derived = f(extended_secret);
assert_eq!(**derived.as_raw(), test_private);
}
#[test]
fn smoky() {
let secret = Secret::from_str("a100df7a048e50ed308ea696dc600215098141cb391e9527329df289f9383f65").unwrap();
let extended_secret = ExtendedSecret::with_code(secret.clone(), H256::zero());
// hardened
assert_eq!(&**extended_secret.as_raw(), &*secret);
assert_eq!(
**extended_secret.derive(2147483648.into()).as_raw(),
H256::from_str("0927453daed47839608e414a3738dfad10aed17c459bbd9ab53f89b026c834b6").unwrap(),
);
assert_eq!(
**extended_secret.derive(2147483649.into()).as_raw(),
H256::from_str("44238b6a29c6dcbe9b401364141ba11e2198c289a5fed243a1c11af35c19dc0f").unwrap(),
);
// normal
assert_eq!(**extended_secret.derive(0.into()).as_raw(), H256::from_str("bf6a74e3f7b36fc4c96a1e12f31abc817f9f5904f5a8fc27713163d1f0b713f6").unwrap());
assert_eq!(**extended_secret.derive(1.into()).as_raw(), H256::from_str("bd4fca9eb1f9c201e9448c1eecd66e302d68d4d313ce895b8c134f512205c1bc").unwrap());
assert_eq!(**extended_secret.derive(2.into()).as_raw(), H256::from_str("86932b542d6cab4d9c65490c7ef502d89ecc0e2a5f4852157649e3251e2a3268").unwrap());
let extended_public = ExtendedPublic::from_secret(&extended_secret).expect("Extended public should be created");
let derived_public = extended_public.derive(0.into()).expect("First derivation of public should succeed");
assert_eq!(
*derived_public.public(),
H512::from_str("f7b3244c96688f92372bfd4def26dc4151529747bab9f188a4ad34e141d47bd66522ff048bc6f19a0a4429b04318b1a8796c000265b4fa200dae5f6dda92dd94").unwrap(),
);
let keypair = ExtendedKeyPair::with_secret(
Secret::from_str("a100df7a048e50ed308ea696dc600215098141cb391e9527329df289f9383f65").unwrap(),
H256::from_low_u64_be(64),
);
assert_eq!(
**keypair.derive(2147483648u32.into()).expect("Derivation of keypair should succeed").secret().as_raw(),
H256::from_str("edef54414c03196557cf73774bc97a645c9a1df2164ed34f0c2a78d1375a930c").unwrap(),
);
}
#[test]
fn h256_soft_match() {
let secret = Secret::from_str("a100df7a048e50ed308ea696dc600215098141cb391e9527329df289f9383f65").unwrap();
let derivation_secret = H256::from_str("51eaf04f9dbbc1417dc97e789edd0c37ecda88bac490434e367ea81b71b7b015").unwrap();
let extended_secret = ExtendedSecret::with_code(secret.clone(), H256::zero());
let extended_public = ExtendedPublic::from_secret(&extended_secret).expect("Extended public should be created");
let derived_secret0 = extended_secret.derive(Derivation::Soft(derivation_secret));
let derived_public0 = extended_public.derive(Derivation::Soft(derivation_secret)).expect("First derivation of public should succeed");
let public_from_secret0 = ExtendedPublic::from_secret(&derived_secret0).expect("Extended public should be created");
assert_eq!(public_from_secret0.public(), derived_public0.public());
}
#[test]
fn h256_hard() {
let secret = Secret::from_str("a100df7a048e50ed308ea696dc600215098141cb391e9527329df289f9383f65").unwrap();
let derivation_secret = H256::from_str("51eaf04f9dbbc1417dc97e789edd0c37ecda88bac490434e367ea81b71b7b015").unwrap();
let extended_secret = ExtendedSecret::with_code(secret.clone(), H256::from_low_u64_be(1));
assert_eq!(
**extended_secret.derive(Derivation::Hard(derivation_secret)).as_raw(),
H256::from_str("2bc2d696fb744d77ff813b4a1ef0ad64e1e5188b622c54ba917acc5ebc7c5486").unwrap(),
);
}
#[test]
fn match_() {
let secret = Secret::from_str("a100df7a048e50ed308ea696dc600215098141cb391e9527329df289f9383f65").unwrap();
let extended_secret = ExtendedSecret::with_code(secret.clone(), H256::from_low_u64_be(1));
let extended_public = ExtendedPublic::from_secret(&extended_secret).expect("Extended public should be created");
let derived_secret0 = extended_secret.derive(0.into());
let derived_public0 = extended_public.derive(0.into()).expect("First derivation of public should succeed");
let public_from_secret0 = ExtendedPublic::from_secret(&derived_secret0).expect("Extended public should be created");
assert_eq!(public_from_secret0.public(), derived_public0.public());
}
#[test]
fn test_seeds() {
let seed = H128::from_str("000102030405060708090a0b0c0d0e0f")
.expect("Seed should be valid H128")
.as_bytes()
.to_vec();
// private key from bitcoin test vector
// xprv9wTYmMFdV23N2TdNG573QoEsfRrWKQgWeibmLntzniatZvR9BmLnvSxqu53Kw1UmYPxLgboyZQaXwTCg8MSY3H2EU4pWcQDnRnrVA1xe8fs
let test_private = H256::from_str("e8f32e723decf4051aefac8e2c93c9c5b214313817cdb01a1494b917c8436b35")
.expect("Private should be decoded ok");
let (private_seed, _) = derivation::seed_pair(&*seed);
assert_eq!(private_seed, test_private);
}
#[test]
fn test_vector_1() {
// xprv9uHRZZhk6KAJC1avXpDAp4MDc3sQKNxDiPvvkX8Br5ngLNv1TxvUxt4cV1rGL5hj6KCesnDYUhd7oWgT11eZG7XnxHrnYeSvkzY7d2bhkJ7
// H(0)
test_extended(
|secret| secret.derive(2147483648.into()),
H256::from_str("edb2e14f9ee77d26dd93b4ecede8d16ed408ce149b6cd80b0715a2d911a0afea")
.expect("Private should be decoded ok")
);
}
#[test]
fn test_vector_2() {
// xprv9wTYmMFdV23N2TdNG573QoEsfRrWKQgWeibmLntzniatZvR9BmLnvSxqu53Kw1UmYPxLgboyZQaXwTCg8MSY3H2EU4pWcQDnRnrVA1xe8fs
// H(0)/1
test_extended(
|secret| secret.derive(2147483648.into()).derive(1.into()),
H256::from_str("3c6cb8d0f6a264c91ea8b5030fadaa8e538b020f0a387421a12de9319dc93368")
.expect("Private should be decoded ok")
);
}
}

View File

@@ -1,31 +0,0 @@
// Copyright 2015-2019 Parity Technologies (UK) Ltd.
// This file is part of Parity Ethereum.
// Parity Ethereum is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// Parity Ethereum is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with Parity Ethereum. If not, see <http://www.gnu.org/licenses/>.
use tiny_keccak::Keccak;
pub trait Keccak256<T> {
fn keccak256(&self) -> T where T: Sized;
}
impl Keccak256<[u8; 32]> for [u8] {
fn keccak256(&self) -> [u8; 32] {
let mut keccak = Keccak::new_keccak256();
let mut result = [0u8; 32];
keccak.update(self);
keccak.finalize(&mut result);
result
}
}

View File

@@ -1,114 +0,0 @@
// Copyright 2015-2019 Parity Technologies (UK) Ltd.
// This file is part of Parity Ethereum.
// Parity Ethereum is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// Parity Ethereum is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with Parity Ethereum. If not, see <http://www.gnu.org/licenses/>.
use std::fmt;
use secp256k1::key;
use super::{Secret, Public, Address, SECP256K1, Error};
use parity_crypto::Keccak256 as _;
pub fn public_to_address(public: &Public) -> Address {
let hash = public.keccak256();
let mut result = Address::zero();
result.as_bytes_mut().copy_from_slice(&hash[12..]);
result
}
#[derive(Debug, Clone, PartialEq)]
/// secp256k1 key pair
pub struct KeyPair {
secret: Secret,
public: Public,
}
impl fmt::Display for KeyPair {
fn fmt(&self, f: &mut fmt::Formatter) -> Result<(), fmt::Error> {
writeln!(f, "secret: {:x}", self.secret)?;
writeln!(f, "public: {:x}", self.public)?;
write!(f, "address: {:x}", self.address())
}
}
impl KeyPair {
/// Create a pair from secret key
pub fn from_secret(secret: Secret) -> Result<KeyPair, Error> {
let context = &SECP256K1;
let s: key::SecretKey = key::SecretKey::from_slice(context, &secret[..])?;
let pub_key = key::PublicKey::from_secret_key(context, &s)?;
let serialized = pub_key.serialize_vec(context, false);
let mut public = Public::default();
public.as_bytes_mut().copy_from_slice(&serialized[1..65]);
let keypair = KeyPair {
secret: secret,
public: public,
};
Ok(keypair)
}
pub fn from_secret_slice(slice: &[u8]) -> Result<KeyPair, Error> {
Self::from_secret(Secret::from_unsafe_slice(slice)?)
}
pub fn from_keypair(sec: key::SecretKey, publ: key::PublicKey) -> Self {
let context = &SECP256K1;
let serialized = publ.serialize_vec(context, false);
let secret = Secret::from(sec);
let mut public = Public::default();
public.as_bytes_mut().copy_from_slice(&serialized[1..65]);
KeyPair {
secret: secret,
public: public,
}
}
pub fn secret(&self) -> &Secret {
&self.secret
}
pub fn public(&self) -> &Public {
&self.public
}
pub fn address(&self) -> Address {
public_to_address(&self.public)
}
}
#[cfg(test)]
mod tests {
use std::str::FromStr;
use {KeyPair, Secret};
#[test]
fn from_secret() {
let secret = Secret::from_str("a100df7a048e50ed308ea696dc600215098141cb391e9527329df289f9383f65").unwrap();
let _ = KeyPair::from_secret(secret).unwrap();
}
#[test]
fn keypair_display() {
let expected =
"secret: a100df7a048e50ed308ea696dc600215098141cb391e9527329df289f9383f65
public: 8ce0db0b0359ffc5866ba61903cc2518c3675ef2cf380a7e54bde7ea20e6fa1ab45b7617346cd11b7610001ee6ae5b0155c41cad9527cbcdff44ec67848943a4
address: 5b073e9233944b5e729e46d618f0d8edf3d9c34a".to_owned();
let secret = Secret::from_str("a100df7a048e50ed308ea696dc600215098141cb391e9527329df289f9383f65").unwrap();
let kp = KeyPair::from_secret(secret).unwrap();
assert_eq!(format!("{}", kp), expected);
}
}

View File

@@ -1,36 +1,26 @@
// Copyright 2015-2019 Parity Technologies (UK) Ltd. // Copyright 2015-2020 Parity Technologies (UK) Ltd.
// This file is part of Parity Ethereum. // This file is part of Open Ethereum.
// Parity Ethereum is free software: you can redistribute it and/or modify // Open Ethereum is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or // the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version. // (at your option) any later version.
// Parity Ethereum is distributed in the hope that it will be useful, // Open Ethereum is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details. // GNU General Public License for more details.
// You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
// along with Parity Ethereum. If not, see <http://www.gnu.org/licenses/>. // along with Open Ethereum. If not, see <http://www.gnu.org/licenses/>.
// #![warn(missing_docs)] // #![warn(missing_docs)]
extern crate edit_distance; extern crate edit_distance;
extern crate parity_crypto; extern crate parity_crypto;
extern crate ethereum_types;
extern crate parity_wordlist; extern crate parity_wordlist;
#[macro_use]
extern crate quick_error;
extern crate rand;
extern crate rustc_hex;
extern crate secp256k1;
extern crate serde; extern crate serde;
extern crate tiny_keccak;
extern crate zeroize;
#[macro_use]
extern crate lazy_static;
#[macro_use] #[macro_use]
extern crate log; extern crate log;
#[macro_use] #[macro_use]
@@ -38,50 +28,13 @@ extern crate serde_derive;
mod brain; mod brain;
mod brain_prefix; mod brain_prefix;
mod error;
mod keypair;
mod keccak;
mod password; mod password;
mod prefix; mod prefix;
mod random;
mod signature;
mod secret;
mod extended;
pub mod brain_recover; pub mod brain_recover;
pub mod crypto;
pub mod math;
pub use self::parity_wordlist::Error as WordlistError; pub use self::parity_wordlist::Error as WordlistError;
pub use self::brain::Brain; pub use self::brain::Brain;
pub use self::brain_prefix::BrainPrefix; pub use self::brain_prefix::BrainPrefix;
pub use self::error::Error;
pub use self::keypair::{KeyPair, public_to_address};
pub use self::math::public_is_valid;
pub use self::password::Password; pub use self::password::Password;
pub use self::prefix::Prefix; pub use self::prefix::Prefix;
pub use self::random::Random;
pub use self::signature::{sign, verify_public, verify_address, recover, Signature};
pub use self::secret::Secret;
pub use self::extended::{ExtendedPublic, ExtendedSecret, ExtendedKeyPair, DerivationError, Derivation};
use ethereum_types::H256;
pub use ethereum_types::{Address, Public};
pub type Message = H256;
lazy_static! {
pub static ref SECP256K1: secp256k1::Secp256k1 = secp256k1::Secp256k1::new();
}
/// Uninstantiatable error type for infallible generators.
#[derive(Debug)]
pub enum Void {}
/// Generates new keypair.
pub trait Generator {
type Error;
/// Should be called to generate new keypair.
fn generate(&mut self) -> Result<KeyPair, Self::Error>;
}

View File

@@ -1,129 +0,0 @@
// Copyright 2015-2019 Parity Technologies (UK) Ltd.
// This file is part of Parity Ethereum.
// Parity Ethereum is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// Parity Ethereum is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with Parity Ethereum. If not, see <http://www.gnu.org/licenses/>.
use super::{SECP256K1, Public, Secret, Error};
use secp256k1::key;
use secp256k1::constants::{GENERATOR_X, GENERATOR_Y, CURVE_ORDER};
use ethereum_types::{BigEndianHash as _, U256, H256};
/// Whether the public key is valid.
pub fn public_is_valid(public: &Public) -> bool {
to_secp256k1_public(public).ok()
.map_or(false, |p| p.is_valid())
}
/// Inplace multiply public key by secret key (EC point * scalar)
pub fn public_mul_secret(public: &mut Public, secret: &Secret) -> Result<(), Error> {
let key_secret = secret.to_secp256k1_secret()?;
let mut key_public = to_secp256k1_public(public)?;
key_public.mul_assign(&SECP256K1, &key_secret)?;
set_public(public, &key_public);
Ok(())
}
/// Inplace add one public key to another (EC point + EC point)
pub fn public_add(public: &mut Public, other: &Public) -> Result<(), Error> {
let mut key_public = to_secp256k1_public(public)?;
let other_public = to_secp256k1_public(other)?;
key_public.add_assign(&SECP256K1, &other_public)?;
set_public(public, &key_public);
Ok(())
}
/// Inplace sub one public key from another (EC point - EC point)
pub fn public_sub(public: &mut Public, other: &Public) -> Result<(), Error> {
let mut key_neg_other = to_secp256k1_public(other)?;
key_neg_other.mul_assign(&SECP256K1, &key::MINUS_ONE_KEY)?;
let mut key_public = to_secp256k1_public(public)?;
key_public.add_assign(&SECP256K1, &key_neg_other)?;
set_public(public, &key_public);
Ok(())
}
/// Replace public key with its negation (EC point = - EC point)
pub fn public_negate(public: &mut Public) -> Result<(), Error> {
let mut key_public = to_secp256k1_public(public)?;
key_public.mul_assign(&SECP256K1, &key::MINUS_ONE_KEY)?;
set_public(public, &key_public);
Ok(())
}
/// Return base point of secp256k1
pub fn generation_point() -> Public {
let mut public_sec_raw = [0u8; 65];
public_sec_raw[0] = 4;
public_sec_raw[1..33].copy_from_slice(&GENERATOR_X);
public_sec_raw[33..65].copy_from_slice(&GENERATOR_Y);
let public_key = key::PublicKey::from_slice(&SECP256K1, &public_sec_raw)
.expect("constructing using predefined constants; qed");
let mut public = Public::default();
set_public(&mut public, &public_key);
public
}
/// Return secp256k1 elliptic curve order
pub fn curve_order() -> U256 {
H256::from_slice(&CURVE_ORDER).into_uint()
}
fn to_secp256k1_public(public: &Public) -> Result<key::PublicKey, Error> {
let public_data = {
let mut temp = [4u8; 65];
(&mut temp[1..65]).copy_from_slice(&public[0..64]);
temp
};
Ok(key::PublicKey::from_slice(&SECP256K1, &public_data)?)
}
fn set_public(public: &mut Public, key_public: &key::PublicKey) {
let key_public_serialized = key_public.serialize_vec(&SECP256K1, false);
public.as_bytes_mut().copy_from_slice(&key_public_serialized[1..65]);
}
#[cfg(test)]
mod tests {
use super::super::{Random, Generator};
use super::{public_add, public_sub};
#[test]
fn public_addition_is_commutative() {
let public1 = Random.generate().unwrap().public().clone();
let public2 = Random.generate().unwrap().public().clone();
let mut left = public1.clone();
public_add(&mut left, &public2).unwrap();
let mut right = public2.clone();
public_add(&mut right, &public1).unwrap();
assert_eq!(left, right);
}
#[test]
fn public_addition_is_reversible_with_subtraction() {
let public1 = Random.generate().unwrap().public().clone();
let public2 = Random.generate().unwrap().public().clone();
let mut sum = public1.clone();
public_add(&mut sum, &public2).unwrap();
public_sub(&mut sum, &public2).unwrap();
assert_eq!(sum, public1);
}
}

View File

@@ -1,18 +1,18 @@
// Copyright 2015-2019 Parity Technologies (UK) Ltd. // Copyright 2015-2020 Parity Technologies (UK) Ltd.
// This file is part of Parity Ethereum. // This file is part of Open Ethereum.
// Parity Ethereum is free software: you can redistribute it and/or modify // Open Ethereum is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or // the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version. // (at your option) any later version.
// Parity Ethereum is distributed in the hope that it will be useful, // Open Ethereum is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details. // GNU General Public License for more details.
// You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
// along with Parity Ethereum. If not, see <http://www.gnu.org/licenses/>. // along with Open Ethereum. If not, see <http://www.gnu.org/licenses/>.
use std::{fmt, ptr}; use std::{fmt, ptr};

View File

@@ -1,20 +1,20 @@
// Copyright 2015-2019 Parity Technologies (UK) Ltd. // Copyright 2015-2020 Parity Technologies (UK) Ltd.
// This file is part of Parity Ethereum. // This file is part of Open Ethereum.
// Parity Ethereum is free software: you can redistribute it and/or modify // Open Ethereum is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or // the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version. // (at your option) any later version.
// Parity Ethereum is distributed in the hope that it will be useful, // Open Ethereum is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details. // GNU General Public License for more details.
// You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
// along with Parity Ethereum. If not, see <http://www.gnu.org/licenses/>. // along with Open Ethereum. If not, see <http://www.gnu.org/licenses/>.
use super::{Random, Generator, KeyPair, Error}; use parity_crypto::publickey::{Random, Generator, KeyPair, Error};
/// Tries to find keypair with address starting with given prefix. /// Tries to find keypair with address starting with given prefix.
pub struct Prefix { pub struct Prefix {
@@ -24,19 +24,12 @@ pub struct Prefix {
impl Prefix { impl Prefix {
pub fn new(prefix: Vec<u8>, iterations: usize) -> Self { pub fn new(prefix: Vec<u8>, iterations: usize) -> Self {
Prefix { Prefix { prefix, iterations }
prefix: prefix,
iterations: iterations,
}
} }
}
impl Generator for Prefix { pub fn generate(&mut self) -> Result<KeyPair, Error> {
type Error = Error;
fn generate(&mut self) -> Result<KeyPair, Error> {
for _ in 0..self.iterations { for _ in 0..self.iterations {
let keypair = Random.generate()?; let keypair = Random.generate();
if keypair.address().as_ref().starts_with(&self.prefix) { if keypair.address().as_ref().starts_with(&self.prefix) {
return Ok(keypair) return Ok(keypair)
} }
@@ -48,7 +41,7 @@ impl Generator for Prefix {
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use {Generator, Prefix}; use Prefix;
#[test] #[test]
fn prefix_generator() { fn prefix_generator() {

View File

@@ -1,44 +0,0 @@
// Copyright 2015-2019 Parity Technologies (UK) Ltd.
// This file is part of Parity Ethereum.
// Parity Ethereum is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// Parity Ethereum is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with Parity Ethereum. If not, see <http://www.gnu.org/licenses/>.
use rand::rngs::OsRng;
use super::{Generator, KeyPair, SECP256K1};
/// Randomly generates new keypair, instantiating the RNG each time.
pub struct Random;
impl Generator for Random {
type Error = ::std::io::Error;
fn generate(&mut self) -> Result<KeyPair, Self::Error> {
let mut rng = OsRng::new()?;
match rng.generate() {
Ok(pair) => Ok(pair),
Err(void) => match void {}, // LLVM unreachable
}
}
}
impl Generator for OsRng {
type Error = ::Void;
fn generate(&mut self) -> Result<KeyPair, Self::Error> {
let (sec, publ) = SECP256K1.generate_keypair(self)
.expect("context always created with full capabilities; qed");
Ok(KeyPair::from_keypair(sec, publ))
}
}

View File

@@ -1,304 +0,0 @@
// Copyright 2015-2019 Parity Technologies (UK) Ltd.
// This file is part of Parity Ethereum.
// Parity Ethereum is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// Parity Ethereum is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with Parity Ethereum. If not, see <http://www.gnu.org/licenses/>.
use std::fmt;
use std::ops::Deref;
use std::str::FromStr;
use rustc_hex::ToHex;
use secp256k1::constants::{SECRET_KEY_SIZE as SECP256K1_SECRET_KEY_SIZE};
use secp256k1::key;
use ethereum_types::H256;
use zeroize::Zeroize;
use {Error, SECP256K1};
#[derive(Clone, PartialEq, Eq)]
pub struct Secret {
inner: H256,
}
impl Drop for Secret {
fn drop(&mut self) {
self.inner.0.zeroize()
}
}
impl ToHex for Secret {
fn to_hex(&self) -> String {
format!("{:x}", self.inner)
}
}
impl fmt::LowerHex for Secret {
fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
self.inner.fmt(fmt)
}
}
impl fmt::Debug for Secret {
fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
self.inner.fmt(fmt)
}
}
impl fmt::Display for Secret {
fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
write!(fmt, "Secret: 0x{:x}{:x}..{:x}{:x}", self.inner[0], self.inner[1], self.inner[30], self.inner[31])
}
}
impl Secret {
/// Creates a `Secret` from the given slice, returning `None` if the slice length != 32.
pub fn from_slice(key: &[u8]) -> Option<Self> {
if key.len() != 32 {
return None
}
let mut h = H256::zero();
h.as_bytes_mut().copy_from_slice(&key[0..32]);
Some(Secret { inner: h })
}
/// Creates zero key, which is invalid for crypto operations, but valid for math operation.
pub fn zero() -> Self {
Secret { inner: H256::zero() }
}
/// Imports and validates the key.
pub fn from_unsafe_slice(key: &[u8]) -> Result<Self, Error> {
let secret = key::SecretKey::from_slice(&super::SECP256K1, key)?;
Ok(secret.into())
}
/// Checks validity of this key.
pub fn check_validity(&self) -> Result<(), Error> {
self.to_secp256k1_secret().map(|_| ())
}
/// Inplace add one secret key to another (scalar + scalar)
pub fn add(&mut self, other: &Secret) -> Result<(), Error> {
match (self.is_zero(), other.is_zero()) {
(true, true) | (false, true) => Ok(()),
(true, false) => {
*self = other.clone();
Ok(())
},
(false, false) => {
let mut key_secret = self.to_secp256k1_secret()?;
let other_secret = other.to_secp256k1_secret()?;
key_secret.add_assign(&SECP256K1, &other_secret)?;
*self = key_secret.into();
Ok(())
},
}
}
/// Inplace subtract one secret key from another (scalar - scalar)
pub fn sub(&mut self, other: &Secret) -> Result<(), Error> {
match (self.is_zero(), other.is_zero()) {
(true, true) | (false, true) => Ok(()),
(true, false) => {
*self = other.clone();
self.neg()
},
(false, false) => {
let mut key_secret = self.to_secp256k1_secret()?;
let mut other_secret = other.to_secp256k1_secret()?;
other_secret.mul_assign(&SECP256K1, &key::MINUS_ONE_KEY)?;
key_secret.add_assign(&SECP256K1, &other_secret)?;
*self = key_secret.into();
Ok(())
},
}
}
/// Inplace decrease secret key (scalar - 1)
pub fn dec(&mut self) -> Result<(), Error> {
match self.is_zero() {
true => {
*self = key::MINUS_ONE_KEY.into();
Ok(())
},
false => {
let mut key_secret = self.to_secp256k1_secret()?;
key_secret.add_assign(&SECP256K1, &key::MINUS_ONE_KEY)?;
*self = key_secret.into();
Ok(())
},
}
}
/// Inplace multiply one secret key to another (scalar * scalar)
pub fn mul(&mut self, other: &Secret) -> Result<(), Error> {
match (self.is_zero(), other.is_zero()) {
(true, true) | (true, false) => Ok(()),
(false, true) => {
*self = Self::zero();
Ok(())
},
(false, false) => {
let mut key_secret = self.to_secp256k1_secret()?;
let other_secret = other.to_secp256k1_secret()?;
key_secret.mul_assign(&SECP256K1, &other_secret)?;
*self = key_secret.into();
Ok(())
},
}
}
/// Inplace negate secret key (-scalar)
pub fn neg(&mut self) -> Result<(), Error> {
match self.is_zero() {
true => Ok(()),
false => {
let mut key_secret = self.to_secp256k1_secret()?;
key_secret.mul_assign(&SECP256K1, &key::MINUS_ONE_KEY)?;
*self = key_secret.into();
Ok(())
},
}
}
/// Inplace inverse secret key (1 / scalar)
pub fn inv(&mut self) -> Result<(), Error> {
let mut key_secret = self.to_secp256k1_secret()?;
key_secret.inv_assign(&SECP256K1)?;
*self = key_secret.into();
Ok(())
}
/// Compute power of secret key inplace (secret ^ pow).
/// This function is not intended to be used with large powers.
pub fn pow(&mut self, pow: usize) -> Result<(), Error> {
if self.is_zero() {
return Ok(());
}
match pow {
0 => *self = key::ONE_KEY.into(),
1 => (),
_ => {
let c = self.clone();
for _ in 1..pow {
self.mul(&c)?;
}
},
}
Ok(())
}
/// Create `secp256k1::key::SecretKey` based on this secret
pub fn to_secp256k1_secret(&self) -> Result<key::SecretKey, Error> {
Ok(key::SecretKey::from_slice(&SECP256K1, &self[..])?)
}
}
impl FromStr for Secret {
type Err = Error;
fn from_str(s: &str) -> Result<Self, Self::Err> {
Ok(H256::from_str(s).map_err(|e| Error::Custom(format!("{:?}", e)))?.into())
}
}
impl From<[u8; 32]> for Secret {
fn from(k: [u8; 32]) -> Self {
Secret { inner: H256(k) }
}
}
impl From<H256> for Secret {
fn from(s: H256) -> Self {
s.0.into()
}
}
impl From<&'static str> for Secret {
fn from(s: &'static str) -> Self {
s.parse().expect(&format!("invalid string literal for {}: '{}'", stringify!(Self), s))
}
}
impl From<key::SecretKey> for Secret {
fn from(key: key::SecretKey) -> Self {
let mut a = [0; SECP256K1_SECRET_KEY_SIZE];
a.copy_from_slice(&key[0 .. SECP256K1_SECRET_KEY_SIZE]);
a.into()
}
}
impl Deref for Secret {
type Target = H256;
fn deref(&self) -> &Self::Target {
&self.inner
}
}
#[cfg(test)]
mod tests {
use std::str::FromStr;
use super::super::{Random, Generator};
use super::Secret;
#[test]
fn multiplicating_secret_inversion_with_secret_gives_one() {
let secret = Random.generate().unwrap().secret().clone();
let mut inversion = secret.clone();
inversion.inv().unwrap();
inversion.mul(&secret).unwrap();
assert_eq!(inversion, Secret::from_str("0000000000000000000000000000000000000000000000000000000000000001").unwrap());
}
#[test]
fn secret_inversion_is_reversible_with_inversion() {
let secret = Random.generate().unwrap().secret().clone();
let mut inversion = secret.clone();
inversion.inv().unwrap();
inversion.inv().unwrap();
assert_eq!(inversion, secret);
}
#[test]
fn secret_pow() {
let secret = Random.generate().unwrap().secret().clone();
let mut pow0 = secret.clone();
pow0.pow(0).unwrap();
assert_eq!(pow0, Secret::from_str("0000000000000000000000000000000000000000000000000000000000000001").unwrap());
let mut pow1 = secret.clone();
pow1.pow(1).unwrap();
assert_eq!(pow1, secret);
let mut pow2 = secret.clone();
pow2.pow(2).unwrap();
let mut pow2_expected = secret.clone();
pow2_expected.mul(&secret).unwrap();
assert_eq!(pow2, pow2_expected);
let mut pow3 = secret.clone();
pow3.pow(3).unwrap();
let mut pow3_expected = secret.clone();
pow3_expected.mul(&secret).unwrap();
pow3_expected.mul(&secret).unwrap();
assert_eq!(pow3, pow3_expected);
}
}

View File

@@ -1,314 +0,0 @@
// Copyright 2015-2019 Parity Technologies (UK) Ltd.
// This file is part of Parity Ethereum.
// Parity Ethereum is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// Parity Ethereum is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with Parity Ethereum. If not, see <http://www.gnu.org/licenses/>.
use std::ops::{Deref, DerefMut};
use std::cmp::PartialEq;
use std::fmt;
use std::str::FromStr;
use std::hash::{Hash, Hasher};
use secp256k1::{Message as SecpMessage, RecoverableSignature, RecoveryId, Error as SecpError};
use secp256k1::key::{SecretKey, PublicKey};
use rustc_hex::{ToHex, FromHex};
use ethereum_types::{H520, H256};
use {Secret, Public, SECP256K1, Error, Message, public_to_address, Address};
/// Signature encoded as RSV components
#[repr(C)]
pub struct Signature([u8; 65]);
impl Signature {
/// Get a slice into the 'r' portion of the data.
pub fn r(&self) -> &[u8] {
&self.0[0..32]
}
/// Get a slice into the 's' portion of the data.
pub fn s(&self) -> &[u8] {
&self.0[32..64]
}
/// Get the recovery byte.
pub fn v(&self) -> u8 {
self.0[64]
}
/// Encode the signature into RSV array (V altered to be in "Electrum" notation).
pub fn into_electrum(mut self) -> [u8; 65] {
self.0[64] += 27;
self.0
}
/// Parse bytes as a signature encoded as RSV (V in "Electrum" notation).
/// May return empty (invalid) signature if given data has invalid length.
pub fn from_electrum(data: &[u8]) -> Self {
if data.len() != 65 || data[64] < 27 {
// fallback to empty (invalid) signature
return Signature::default();
}
let mut sig = [0u8; 65];
sig.copy_from_slice(data);
sig[64] -= 27;
Signature(sig)
}
/// Create a signature object from the sig.
pub fn from_rsv(r: &H256, s: &H256, v: u8) -> Self {
let mut sig = [0u8; 65];
sig[0..32].copy_from_slice(r.as_ref());
sig[32..64].copy_from_slice(s.as_ref());
sig[64] = v;
Signature(sig)
}
/// Check if this is a "low" signature.
pub fn is_low_s(&self) -> bool {
// "7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0"
const MASK: H256 = H256([
0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0x5D, 0x57, 0x6E, 0x73, 0x57, 0xA4, 0x50, 0x1D,
0xDF, 0xE9, 0x2F, 0x46, 0x68, 0x1B, 0x20, 0xA0,
]);
H256::from_slice(self.s()) <= MASK
}
/// Check if each component of the signature is in range.
pub fn is_valid(&self) -> bool {
// "fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"
const MASK: H256 = H256([
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe,
0xba, 0xae, 0xdc, 0xe6, 0xaf, 0x48, 0xa0, 0x3b,
0xbf, 0xd2, 0x5e, 0x8c, 0xd0, 0x36, 0x41, 0x41,
]);
const ONE: H256 = H256([
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
]);
let r = H256::from_slice(self.r());
let s = H256::from_slice(self.s());
self.v() <= 1 &&
r < MASK && r >= ONE &&
s < MASK && s >= ONE
}
}
// manual implementation large arrays don't have trait impls by default.
// remove when integer generics exist
impl PartialEq for Signature {
fn eq(&self, other: &Self) -> bool {
&self.0[..] == &other.0[..]
}
}
// manual implementation required in Rust 1.13+, see `std::cmp::AssertParamIsEq`.
impl Eq for Signature { }
// also manual for the same reason, but the pretty printing might be useful.
impl fmt::Debug for Signature {
fn fmt(&self, f: &mut fmt::Formatter) -> Result<(), fmt::Error> {
f.debug_struct("Signature")
.field("r", &self.0[0..32].to_hex())
.field("s", &self.0[32..64].to_hex())
.field("v", &self.0[64..65].to_hex())
.finish()
}
}
impl fmt::Display for Signature {
fn fmt(&self, f: &mut fmt::Formatter) -> Result<(), fmt::Error> {
write!(f, "{}", self.to_hex())
}
}
impl FromStr for Signature {
type Err = Error;
fn from_str(s: &str) -> Result<Self, Self::Err> {
match s.from_hex() {
Ok(ref hex) if hex.len() == 65 => {
let mut data = [0; 65];
data.copy_from_slice(&hex[0..65]);
Ok(Signature(data))
},
_ => Err(Error::InvalidSignature)
}
}
}
impl Default for Signature {
fn default() -> Self {
Signature([0; 65])
}
}
impl Hash for Signature {
fn hash<H: Hasher>(&self, state: &mut H) {
H520::from(self.0).hash(state);
}
}
impl Clone for Signature {
fn clone(&self) -> Self {
Signature(self.0)
}
}
impl From<[u8; 65]> for Signature {
fn from(s: [u8; 65]) -> Self {
Signature(s)
}
}
impl Into<[u8; 65]> for Signature {
fn into(self) -> [u8; 65] {
self.0
}
}
impl From<Signature> for H520 {
fn from(s: Signature) -> Self {
H520::from(s.0)
}
}
impl From<H520> for Signature {
fn from(bytes: H520) -> Self {
Signature(bytes.into())
}
}
impl Deref for Signature {
type Target = [u8; 65];
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl DerefMut for Signature {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
pub fn sign(secret: &Secret, message: &Message) -> Result<Signature, Error> {
let context = &SECP256K1;
let sec = SecretKey::from_slice(context, secret.as_ref())?;
let s = context.sign_recoverable(&SecpMessage::from_slice(&message[..])?, &sec)?;
let (rec_id, data) = s.serialize_compact(context);
let mut data_arr = [0; 65];
// no need to check if s is low, it always is
data_arr[0..64].copy_from_slice(&data[0..64]);
data_arr[64] = rec_id.to_i32() as u8;
Ok(Signature(data_arr))
}
pub fn verify_public(public: &Public, signature: &Signature, message: &Message) -> Result<bool, Error> {
let context = &SECP256K1;
let rsig = RecoverableSignature::from_compact(context, &signature[0..64], RecoveryId::from_i32(signature[64] as i32)?)?;
let sig = rsig.to_standard(context);
let pdata: [u8; 65] = {
let mut temp = [4u8; 65];
temp[1..65].copy_from_slice(public.as_bytes());
temp
};
let publ = PublicKey::from_slice(context, &pdata)?;
match context.verify(&SecpMessage::from_slice(&message[..])?, &sig, &publ) {
Ok(_) => Ok(true),
Err(SecpError::IncorrectSignature) => Ok(false),
Err(x) => Err(Error::from(x))
}
}
pub fn verify_address(address: &Address, signature: &Signature, message: &Message) -> Result<bool, Error> {
let public = recover(signature, message)?;
let recovered_address = public_to_address(&public);
Ok(address == &recovered_address)
}
pub fn recover(signature: &Signature, message: &Message) -> Result<Public, Error> {
let context = &SECP256K1;
let rsig = RecoverableSignature::from_compact(context, &signature[0..64], RecoveryId::from_i32(signature[64] as i32)?)?;
let pubkey = context.recover(&SecpMessage::from_slice(&message[..])?, &rsig)?;
let serialized = pubkey.serialize_vec(context, false);
let mut public = Public::default();
public.as_bytes_mut().copy_from_slice(&serialized[1..65]);
Ok(public)
}
#[cfg(test)]
mod tests {
use std::str::FromStr;
use {Generator, Random, Message};
use super::{sign, verify_public, verify_address, recover, Signature};
#[test]
fn vrs_conversion() {
// given
let keypair = Random.generate().unwrap();
let message = Message::default();
let signature = sign(keypair.secret(), &message).unwrap();
// when
let vrs = signature.clone().into_electrum();
let from_vrs = Signature::from_electrum(&vrs);
// then
assert_eq!(signature, from_vrs);
}
#[test]
fn signature_to_and_from_str() {
let keypair = Random.generate().unwrap();
let message = Message::default();
let signature = sign(keypair.secret(), &message).unwrap();
let string = format!("{}", signature);
let deserialized = Signature::from_str(&string).unwrap();
assert_eq!(signature, deserialized);
}
#[test]
fn sign_and_recover_public() {
let keypair = Random.generate().unwrap();
let message = Message::default();
let signature = sign(keypair.secret(), &message).unwrap();
assert_eq!(keypair.public(), &recover(&signature, &message).unwrap());
}
#[test]
fn sign_and_verify_public() {
let keypair = Random.generate().unwrap();
let message = Message::default();
let signature = sign(keypair.secret(), &message).unwrap();
assert!(verify_public(keypair.public(), &signature, &message).unwrap());
}
#[test]
fn sign_and_verify_address() {
let keypair = Random.generate().unwrap();
let message = Message::default();
let signature = sign(keypair.secret(), &message).unwrap();
assert!(verify_address(&keypair.address(), &signature, &message).unwrap());
}
}

View File

@@ -1,28 +1,28 @@
[package] [package]
description = "Parity Ethereum Key Management" description = "OpenEthereum Key Management"
name = "ethstore" name = "ethstore"
version = "0.2.1" version = "0.2.1"
authors = ["Parity Technologies <admin@parity.io>"] authors = ["Parity Technologies <admin@parity.io>"]
repository = "https://github.com/openethereum/openethereum"
[dependencies] [dependencies]
log = "0.4" log = "0.4"
libc = "0.2" libc = "0.2"
rand = "0.6" rand = "0.7.3"
ethkey = { path = "../ethkey" } ethkey = { path = "../ethkey" }
serde = "1.0" serde = "1.0"
serde_json = "1.0" serde_json = "1.0"
serde_derive = "1.0" serde_derive = "1.0"
rustc-hex = "1.0" rustc-hex = "2.1.0"
tiny-keccak = "1.4" tiny-keccak = "2.0.2"
time = "0.1.34" time = "0.1.34"
itertools = "0.5" parking_lot = "0.10.0"
parking_lot = "0.7" parity-crypto = { version = "0.6.1", features = ["publickey"] }
parity-crypto = "0.4.0" ethereum-types = "0.9.0"
ethereum-types = "0.6.0"
dir = { path = "../../util/dir" } dir = { path = "../../util/dir" }
smallvec = "0.6" smallvec = "1.2.0"
parity-wordlist = "1.0" parity-wordlist = "1.3.1"
tempdir = "0.3" tempfile = "3.1"
[dev-dependencies] [dev-dependencies]
matches = "0.1" matches = "0.1"

View File

@@ -1,12 +1,12 @@
## ethstore-cli ## ethstore-cli
Parity Ethereum key management. OpenEthereum key management.
### Usage ### Usage
``` ```
Parity Ethereum key management tool. OpenEthereum key management tool.
Copyright 2015-2019 Parity Technologies (UK) Ltd. Copyright 2015-2020 Parity Technologies (UK) Ltd.
Usage: Usage:
ethstore insert <secret> <password> [--dir DIR] [--vault VAULT] [--vault-pwd VAULTPWD] ethstore insert <secret> <password> [--dir DIR] [--vault VAULT] [--vault-pwd VAULTPWD]
@@ -330,11 +330,11 @@ ethstore move-from-vault 00e63fdb87ceb815ec96ae185b8f7381a0b4a5ea vault1 vault1_
OK OK
``` ```
## Parity Ethereum toolchain ## OpenEthereum toolchain
_This project is a part of the Parity Ethereum toolchain._ _This project is a part of the OpenEthereum toolchain._
- [evmbin](https://github.com/paritytech/parity-ethereum/blob/master/evmbin/) - EVM implementation for Parity Ethereum. - [evmbin](https://github.com/openethereum/openethereum/blob/master/evmbin/) - EVM implementation for OpenEthereum.
- [ethabi](https://github.com/paritytech/ethabi) - Parity Ethereum function calls encoding. - [ethabi](https://github.com/OpenEthereum/ethabi) - OpenEthereum function calls encoding.
- [ethstore](https://github.com/paritytech/parity-ethereum/blob/master/accounts/ethstore) - Parity Ethereum key management. - [ethstore](https://github.com/openethereum/openethereum/blob/master/accounts/ethstore) - OpenEthereum key management.
- [ethkey](https://github.com/paritytech/parity-ethereum/blob/master/accounts/ethkey) - Parity Ethereum keys generator. - [ethkey](https://github.com/openethereum/openethereum/blob/master/accounts/ethkey) - OpenEthereum keys generator.
- [whisper](https://github.com/paritytech/parity-ethereum/blob/master/whisper/) - Implementation of Whisper-v2 PoC. - [whisper](https://github.com/OpenEthereum/whisper) - Implementation of Whisper-v2 PoC.

View File

@@ -1,5 +1,5 @@
[package] [package]
description = "Parity Ethereum Key Management CLI" description = "OpenEthereum Key Management CLI"
name = "ethstore-cli" name = "ethstore-cli"
version = "0.1.1" version = "0.1.1"
authors = ["Parity Technologies <admin@parity.io>"] authors = ["Parity Technologies <admin@parity.io>"]
@@ -8,11 +8,13 @@ authors = ["Parity Technologies <admin@parity.io>"]
docopt = "1.0" docopt = "1.0"
env_logger = "0.5" env_logger = "0.5"
num_cpus = "1.6" num_cpus = "1.6"
rustc-hex = "1.0" rustc-hex = "2.1.0"
serde = "1.0" serde = "1.0"
serde_derive = "1.0" serde_derive = "1.0"
parking_lot = "0.7" parking_lot = "0.10.0"
ethstore = { path = "../" } ethstore = { path = "../" }
ethkey = { path = "../../ethkey" }
parity-crypto = { version = "0.6.1", features = ["publickey"] }
dir = { path = '../../../util/dir' } dir = { path = '../../../util/dir' }
panic_hook = { path = "../../../util/panic-hook" } panic_hook = { path = "../../../util/panic-hook" }
@@ -22,4 +24,4 @@ path = "src/main.rs"
doc = false doc = false
[dev-dependencies] [dev-dependencies]
tempdir = "0.3" tempfile = "3.1"

View File

@@ -1,25 +1,26 @@
// Copyright 2015-2019 Parity Technologies (UK) Ltd. // Copyright 2015-2020 Parity Technologies (UK) Ltd.
// This file is part of Parity Ethereum. // This file is part of Open Ethereum.
// Parity Ethereum is free software: you can redistribute it and/or modify // Open Ethereum is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or // the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version. // (at your option) any later version.
// Parity Ethereum is distributed in the hope that it will be useful, // Open Ethereum is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details. // GNU General Public License for more details.
// You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
// along with Parity Ethereum. If not, see <http://www.gnu.org/licenses/>. // along with Open Ethereum. If not, see <http://www.gnu.org/licenses/>.
use std::{cmp, thread}; use std::{cmp, thread};
use std::sync::Arc; use std::sync::Arc;
use std::collections::VecDeque; use std::collections::VecDeque;
use parking_lot::Mutex; use parking_lot::Mutex;
use ethstore::{ethkey::Password, PresaleWallet, Error}; use ethstore::{PresaleWallet, Error};
use ethkey::Password;
use num_cpus; use num_cpus;
pub fn run(passwords: VecDeque<Password>, wallet_path: &str) -> Result<(), Error> { pub fn run(passwords: VecDeque<Password>, wallet_path: &str) -> Result<(), Error> {

View File

@@ -1,25 +1,27 @@
// Copyright 2015-2019 Parity Technologies (UK) Ltd. // Copyright 2015-2020 Parity Technologies (UK) Ltd.
// This file is part of Parity Ethereum. // This file is part of Open Ethereum.
// Parity Ethereum is free software: you can redistribute it and/or modify // Open Ethereum is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or // the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version. // (at your option) any later version.
// Parity Ethereum is distributed in the hope that it will be useful, // Open Ethereum is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details. // GNU General Public License for more details.
// You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
// along with Parity Ethereum. If not, see <http://www.gnu.org/licenses/>. // along with Open Ethereum. If not, see <http://www.gnu.org/licenses/>.
extern crate dir; extern crate dir;
extern crate docopt; extern crate docopt;
extern crate ethstore; extern crate ethstore;
extern crate ethkey;
extern crate num_cpus; extern crate num_cpus;
extern crate panic_hook; extern crate panic_hook;
extern crate parking_lot; extern crate parking_lot;
extern crate parity_crypto;
extern crate rustc_hex; extern crate rustc_hex;
extern crate serde; extern crate serde;
@@ -34,14 +36,15 @@ use std::{env, process, fs, fmt};
use docopt::Docopt; use docopt::Docopt;
use ethstore::accounts_dir::{KeyDirectory, RootDiskDirectory}; use ethstore::accounts_dir::{KeyDirectory, RootDiskDirectory};
use ethstore::ethkey::{Address, Password}; use ethkey::Password;
use parity_crypto::publickey::Address;
use ethstore::{EthStore, SimpleSecretStore, SecretStore, import_accounts, PresaleWallet, SecretVaultRef, StoreAccountRef}; use ethstore::{EthStore, SimpleSecretStore, SecretStore, import_accounts, PresaleWallet, SecretVaultRef, StoreAccountRef};
mod crack; mod crack;
pub const USAGE: &'static str = r#" pub const USAGE: &'static str = r#"
Parity Ethereum key management tool. OpenEthereum key management tool.
Copyright 2015-2019 Parity Technologies (UK) Ltd. Copyright 2015-2020 Parity Technologies (UK) Ltd.
Usage: Usage:
ethstore insert <secret> <password> [--dir DIR] [--vault VAULT] [--vault-pwd VAULTPWD] ethstore insert <secret> <password> [--dir DIR] [--vault VAULT] [--vault-pwd VAULTPWD]
@@ -163,13 +166,15 @@ fn main() {
} }
} }
fn key_dir(location: &str, password: Option<Password>) -> Result<Box<KeyDirectory>, Error> { fn key_dir(location: &str, password: Option<Password>) -> Result<Box<dyn KeyDirectory>, Error> {
let dir: RootDiskDirectory = match location { let dir: RootDiskDirectory = match location {
"geth" => RootDiskDirectory::create(dir::geth(false))?, "geth" => RootDiskDirectory::create(dir::geth(false))?,
"geth-test" => RootDiskDirectory::create(dir::geth(true))?, "geth-test" => RootDiskDirectory::create(dir::geth(true))?,
path if path.starts_with("parity") => { path if path.starts_with("parity") => {
let chain = path.split('-').nth(1).unwrap_or("ethereum"); let chain = path.split('-').nth(1).unwrap_or("ethereum");
let path = dir::parity(chain); let mut path = dir::default_data_pathbuf();
path.push("keys");
path.push(chain);
RootDiskDirectory::create(path)? RootDiskDirectory::create(path)?
}, },
path => RootDiskDirectory::create(path)?, path => RootDiskDirectory::create(path)?,

View File

@@ -1,22 +1,22 @@
// Copyright 2015-2019 Parity Technologies (UK) Ltd. // Copyright 2015-2020 Parity Technologies (UK) Ltd.
// This file is part of Parity Ethereum. // This file is part of Open Ethereum.
// Parity Ethereum is free software: you can redistribute it and/or modify // Open Ethereum is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or // the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version. // (at your option) any later version.
// Parity Ethereum is distributed in the hope that it will be useful, // Open Ethereum is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details. // GNU General Public License for more details.
// You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
// along with Parity Ethereum. If not, see <http://www.gnu.org/licenses/>. // along with Open Ethereum. If not, see <http://www.gnu.org/licenses/>.
extern crate tempdir; extern crate tempfile;
use std::process::Command; use std::process::Command;
use tempdir::TempDir; use tempfile::Builder;
use std::fs::File; use std::fs::File;
use std::io::Write; use std::io::Write;
@@ -37,7 +37,7 @@ fn cli_cmd() {
.output() .output()
.unwrap(); .unwrap();
let dir = TempDir::new("test-vault").unwrap(); let dir = Builder::new().prefix("test-vault").tempdir().unwrap();
let mut passwd = File::create(dir.path().join("test-password")).unwrap(); let mut passwd = File::create(dir.path().join("test-password")).unwrap();
writeln!(passwd, "password").unwrap(); writeln!(passwd, "password").unwrap();

View File

@@ -1,18 +1,18 @@
// Copyright 2015-2019 Parity Technologies (UK) Ltd. // Copyright 2015-2020 Parity Technologies (UK) Ltd.
// This file is part of Parity Ethereum. // This file is part of Open Ethereum.
// Parity Ethereum is free software: you can redistribute it and/or modify // Open Ethereum is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or // the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version. // (at your option) any later version.
// Parity Ethereum is distributed in the hope that it will be useful, // Open Ethereum is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details. // GNU General Public License for more details.
// You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
// along with Parity Ethereum. If not, see <http://www.gnu.org/licenses/>. // along with Open Ethereum. If not, see <http://www.gnu.org/licenses/>.
use json; use json;

View File

@@ -1,21 +1,22 @@
// Copyright 2015-2019 Parity Technologies (UK) Ltd. // Copyright 2015-2020 Parity Technologies (UK) Ltd.
// This file is part of Parity Ethereum. // This file is part of Open Ethereum.
// Parity Ethereum is free software: you can redistribute it and/or modify // Open Ethereum is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or // the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version. // (at your option) any later version.
// Parity Ethereum is distributed in the hope that it will be useful, // Open Ethereum is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details. // GNU General Public License for more details.
// You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
// along with Parity Ethereum. If not, see <http://www.gnu.org/licenses/>. // along with Open Ethereum. If not, see <http://www.gnu.org/licenses/>.
use std::str; use std::str;
use ethkey::{Password, Secret}; use crypto::publickey::Secret;
use ethkey::Password;
use {json, Error, crypto}; use {json, Error, crypto};
use crypto::Keccak256; use crypto::Keccak256;
use random::Random; use random::Random;
@@ -120,7 +121,7 @@ impl Crypto {
} }
let secret = self.do_decrypt(password, 32)?; let secret = self.do_decrypt(password, 32)?;
Ok(Secret::from_unsafe_slice(&secret)?) Ok(Secret::import_key(&secret)?)
} }
/// Try to decrypt and return result as is /// Try to decrypt and return result as is
@@ -158,12 +159,12 @@ impl Crypto {
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use ethkey::{Generator, Random}; use crypto::publickey::{Generator, Random};
use super::{Crypto, Error}; use super::{Crypto, Error};
#[test] #[test]
fn crypto_with_secret_create() { fn crypto_with_secret_create() {
let keypair = Random.generate().unwrap(); let keypair = Random.generate();
let passwd = "this is sparta".into(); let passwd = "this is sparta".into();
let crypto = Crypto::with_secret(keypair.secret(), &passwd, 10240).unwrap(); let crypto = Crypto::with_secret(keypair.secret(), &passwd, 10240).unwrap();
let secret = crypto.secret(&passwd).unwrap(); let secret = crypto.secret(&passwd).unwrap();
@@ -172,7 +173,7 @@ mod tests {
#[test] #[test]
fn crypto_with_secret_invalid_password() { fn crypto_with_secret_invalid_password() {
let keypair = Random.generate().unwrap(); let keypair = Random.generate();
let crypto = Crypto::with_secret(keypair.secret(), &"this is sparta".into(), 10240).unwrap(); let crypto = Crypto::with_secret(keypair.secret(), &"this is sparta".into(), 10240).unwrap();
assert_matches!(crypto.secret(&"this is sparta!".into()), Err(Error::InvalidPassword)) assert_matches!(crypto.secret(&"this is sparta!".into()), Err(Error::InvalidPassword))
} }

View File

@@ -1,18 +1,18 @@
// Copyright 2015-2019 Parity Technologies (UK) Ltd. // Copyright 2015-2020 Parity Technologies (UK) Ltd.
// This file is part of Parity Ethereum. // This file is part of Open Ethereum.
// Parity Ethereum is free software: you can redistribute it and/or modify // Open Ethereum is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or // the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version. // (at your option) any later version.
// Parity Ethereum is distributed in the hope that it will be useful, // Open Ethereum is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details. // GNU General Public License for more details.
// You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
// along with Parity Ethereum. If not, see <http://www.gnu.org/licenses/>. // along with Open Ethereum. If not, see <http://www.gnu.org/licenses/>.
use json; use json;

View File

@@ -1,18 +1,18 @@
// Copyright 2015-2019 Parity Technologies (UK) Ltd. // Copyright 2015-2020 Parity Technologies (UK) Ltd.
// This file is part of Parity Ethereum. // This file is part of Open Ethereum.
// Parity Ethereum is free software: you can redistribute it and/or modify // Open Ethereum is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or // the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version. // (at your option) any later version.
// Parity Ethereum is distributed in the hope that it will be useful, // Open Ethereum is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details. // GNU General Public License for more details.
// You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
// along with Parity Ethereum. If not, see <http://www.gnu.org/licenses/>. // along with Open Ethereum. If not, see <http://www.gnu.org/licenses/>.
mod cipher; mod cipher;
mod crypto; mod crypto;

View File

@@ -1,21 +1,22 @@
// Copyright 2015-2019 Parity Technologies (UK) Ltd. // Copyright 2015-2020 Parity Technologies (UK) Ltd.
// This file is part of Parity Ethereum. // This file is part of Open Ethereum.
// Parity Ethereum is free software: you can redistribute it and/or modify // Open Ethereum is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or // the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version. // (at your option) any later version.
// Parity Ethereum is distributed in the hope that it will be useful, // Open Ethereum is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details. // GNU General Public License for more details.
// You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
// along with Parity Ethereum. If not, see <http://www.gnu.org/licenses/>. // along with Open Ethereum. If not, see <http://www.gnu.org/licenses/>.
use ethkey::{self, KeyPair, sign, Address, Password, Signature, Message, Public, Secret}; use crypto::publickey::{KeyPair, sign, Address, Signature, Message, Public, Secret};
use ethkey::crypto::ecdh::agree; use ethkey::Password;
use crypto::publickey::ecdh::agree;
use {json, Error}; use {json, Error};
use account::Version; use account::Version;
use crypto; use crypto;
@@ -161,7 +162,7 @@ impl SafeAccount {
/// Decrypt a message. /// Decrypt a message.
pub fn decrypt(&self, password: &Password, shared_mac: &[u8], message: &[u8]) -> Result<Vec<u8>, Error> { pub fn decrypt(&self, password: &Password, shared_mac: &[u8], message: &[u8]) -> Result<Vec<u8>, Error> {
let secret = self.crypto.secret(password)?; let secret = self.crypto.secret(password)?;
ethkey::crypto::ecies::decrypt(&secret, shared_mac, message).map_err(From::from) crypto::publickey::ecies::decrypt(&secret, shared_mac, message).map_err(From::from)
} }
/// Agree on shared key. /// Agree on shared key.
@@ -199,14 +200,14 @@ impl SafeAccount {
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use ethkey::{Generator, Random, verify_public, Message}; use crypto::publickey::{Generator, Random, verify_public};
use super::SafeAccount; use super::SafeAccount;
#[test] #[test]
fn sign_and_verify_public() { fn sign_and_verify_public() {
let keypair = Random.generate().unwrap(); let keypair = Random.generate();
let password = "hello world".into(); let password = "hello world".into();
let message = Message::default(); let message = [1u8; 32].into();
let account = SafeAccount::create(&keypair, [0u8; 16], &password, 10240, "Test".to_owned(), "{}".to_owned()); let account = SafeAccount::create(&keypair, [0u8; 16], &password, 10240, "Test".to_owned(), "{}".to_owned());
let signature = account.unwrap().sign(&password, &message).unwrap(); let signature = account.unwrap().sign(&password, &message).unwrap();
assert!(verify_public(keypair.public(), &signature, &message).unwrap()); assert!(verify_public(keypair.public(), &signature, &message).unwrap());
@@ -214,11 +215,11 @@ mod tests {
#[test] #[test]
fn change_password() { fn change_password() {
let keypair = Random.generate().unwrap(); let keypair = Random.generate();
let first_password = "hello world".into(); let first_password = "hello world".into();
let sec_password = "this is sparta".into(); let sec_password = "this is sparta".into();
let i = 10240; let i = 10240;
let message = Message::default(); let message = [1u8; 32].into();
let account = SafeAccount::create(&keypair, [0u8; 16], &first_password, i, "Test".to_owned(), "{}".to_owned()).unwrap(); let account = SafeAccount::create(&keypair, [0u8; 16], &first_password, i, "Test".to_owned(), "{}".to_owned()).unwrap();
let new_account = account.change_password(&first_password, &sec_password, i).unwrap(); let new_account = account.change_password(&first_password, &sec_password, i).unwrap();
assert!(account.sign(&first_password, &message).is_ok()); assert!(account.sign(&first_password, &message).is_ok());

View File

@@ -1,18 +1,18 @@
// Copyright 2015-2019 Parity Technologies (UK) Ltd. // Copyright 2015-2020 Parity Technologies (UK) Ltd.
// This file is part of Parity Ethereum. // This file is part of Open Ethereum.
// Parity Ethereum is free software: you can redistribute it and/or modify // Open Ethereum is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or // the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version. // (at your option) any later version.
// Parity Ethereum is distributed in the hope that it will be useful, // Open Ethereum is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details. // GNU General Public License for more details.
// You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
// along with Parity Ethereum. If not, see <http://www.gnu.org/licenses/>. // along with Open Ethereum. If not, see <http://www.gnu.org/licenses/>.
use json; use json;

View File

@@ -1,18 +1,18 @@
// Copyright 2015-2019 Parity Technologies (UK) Ltd. // Copyright 2015-2020 Parity Technologies (UK) Ltd.
// This file is part of Parity Ethereum. // This file is part of Open Ethereum.
// Parity Ethereum is free software: you can redistribute it and/or modify // Open Ethereum is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or // the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version. // (at your option) any later version.
// Parity Ethereum is distributed in the hope that it will be useful, // Open Ethereum is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details. // GNU General Public License for more details.
// You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
// along with Parity Ethereum. If not, see <http://www.gnu.org/licenses/>. // along with Open Ethereum. If not, see <http://www.gnu.org/licenses/>.
use std::{fs, io}; use std::{fs, io};
use std::io::Write; use std::io::Write;
@@ -284,7 +284,7 @@ impl<T> KeyDirectory for DiskDirectory<T> where T: KeyFileManager {
fn path(&self) -> Option<&PathBuf> { Some(&self.path) } fn path(&self) -> Option<&PathBuf> { Some(&self.path) }
fn as_vault_provider(&self) -> Option<&VaultKeyDirectoryProvider> { fn as_vault_provider(&self) -> Option<&dyn VaultKeyDirectoryProvider> {
Some(self) Some(self)
} }
@@ -294,12 +294,12 @@ impl<T> KeyDirectory for DiskDirectory<T> where T: KeyFileManager {
} }
impl<T> VaultKeyDirectoryProvider for DiskDirectory<T> where T: KeyFileManager { impl<T> VaultKeyDirectoryProvider for DiskDirectory<T> where T: KeyFileManager {
fn create(&self, name: &str, key: VaultKey) -> Result<Box<VaultKeyDirectory>, Error> { fn create(&self, name: &str, key: VaultKey) -> Result<Box<dyn VaultKeyDirectory>, Error> {
let vault_dir = VaultDiskDirectory::create(&self.path, name, key)?; let vault_dir = VaultDiskDirectory::create(&self.path, name, key)?;
Ok(Box::new(vault_dir)) Ok(Box::new(vault_dir))
} }
fn open(&self, name: &str, key: VaultKey) -> Result<Box<VaultKeyDirectory>, Error> { fn open(&self, name: &str, key: VaultKey) -> Result<Box<dyn VaultKeyDirectory>, Error> {
let vault_dir = VaultDiskDirectory::at(&self.path, name, key)?; let vault_dir = VaultDiskDirectory::at(&self.path, name, key)?;
Ok(Box::new(vault_dir)) Ok(Box::new(vault_dir))
} }
@@ -351,20 +351,20 @@ fn account_filename(account: &SafeAccount) -> String {
#[cfg(test)] #[cfg(test)]
mod test { mod test {
extern crate tempdir; extern crate tempfile;
use std::{env, fs}; use std::{env, fs};
use super::{KeyDirectory, RootDiskDirectory, VaultKey}; use super::{KeyDirectory, RootDiskDirectory, VaultKey};
use account::SafeAccount; use account::SafeAccount;
use ethkey::{Random, Generator}; use crypto::publickey::{Random, Generator};
use self::tempdir::TempDir; use self::tempfile::TempDir;
#[test] #[test]
fn should_create_new_account() { fn should_create_new_account() {
// given // given
let mut dir = env::temp_dir(); let mut dir = env::temp_dir();
dir.push("ethstore_should_create_new_account"); dir.push("ethstore_should_create_new_account");
let keypair = Random.generate().unwrap(); let keypair = Random.generate();
let password = "hello world".into(); let password = "hello world".into();
let directory = RootDiskDirectory::create(dir.clone()).unwrap(); let directory = RootDiskDirectory::create(dir.clone()).unwrap();
@@ -385,7 +385,7 @@ mod test {
// given // given
let mut dir = env::temp_dir(); let mut dir = env::temp_dir();
dir.push("ethstore_should_handle_duplicate_filenames"); dir.push("ethstore_should_handle_duplicate_filenames");
let keypair = Random.generate().unwrap(); let keypair = Random.generate();
let password = "hello world".into(); let password = "hello world".into();
let directory = RootDiskDirectory::create(dir.clone()).unwrap(); let directory = RootDiskDirectory::create(dir.clone()).unwrap();
@@ -448,7 +448,7 @@ mod test {
#[test] #[test]
fn should_list_vaults() { fn should_list_vaults() {
// given // given
let temp_path = TempDir::new("").unwrap(); let temp_path = TempDir::new().unwrap();
let directory = RootDiskDirectory::create(&temp_path).unwrap(); let directory = RootDiskDirectory::create(&temp_path).unwrap();
let vault_provider = directory.as_vault_provider().unwrap(); let vault_provider = directory.as_vault_provider().unwrap();
vault_provider.create("vault1", VaultKey::new(&"password1".into(), 1)).unwrap(); vault_provider.create("vault1", VaultKey::new(&"password1".into(), 1)).unwrap();
@@ -463,7 +463,7 @@ mod test {
#[test] #[test]
fn hash_of_files() { fn hash_of_files() {
let temp_path = TempDir::new("").unwrap(); let temp_path = TempDir::new().unwrap();
let directory = RootDiskDirectory::create(&temp_path).unwrap(); let directory = RootDiskDirectory::create(&temp_path).unwrap();
let hash = directory.files_hash().expect("Files hash should be calculated ok"); let hash = directory.files_hash().expect("Files hash should be calculated ok");
@@ -472,7 +472,7 @@ mod test {
15130871412783076140 15130871412783076140
); );
let keypair = Random.generate().unwrap(); let keypair = Random.generate();
let password = "test pass".into(); let password = "test pass".into();
let account = SafeAccount::create(&keypair, [0u8; 16], &password, 1024, "Test".to_owned(), "{}".to_owned()); let account = SafeAccount::create(&keypair, [0u8; 16], &password, 1024, "Test".to_owned(), "{}".to_owned());
directory.insert(account.unwrap()).expect("Account should be inserted ok"); directory.insert(account.unwrap()).expect("Account should be inserted ok");

View File

@@ -1,23 +1,22 @@
// Copyright 2015-2019 Parity Technologies (UK) Ltd. // Copyright 2015-2020 Parity Technologies (UK) Ltd.
// This file is part of Parity Ethereum. // This file is part of Open Ethereum.
// Parity Ethereum is free software: you can redistribute it and/or modify // Open Ethereum is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or // the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version. // (at your option) any later version.
// Parity Ethereum is distributed in the hope that it will be useful, // Open Ethereum is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details. // GNU General Public License for more details.
// You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
// along with Parity Ethereum. If not, see <http://www.gnu.org/licenses/>. // along with Open Ethereum. If not, see <http://www.gnu.org/licenses/>.
use std::collections::HashMap; use std::collections::HashMap;
use parking_lot::RwLock; use parking_lot::RwLock;
use itertools; use crypto::publickey::Address;
use ethkey::Address;
use {SafeAccount, Error}; use {SafeAccount, Error};
use super::KeyDirectory; use super::KeyDirectory;
@@ -30,7 +29,7 @@ pub struct MemoryDirectory {
impl KeyDirectory for MemoryDirectory { impl KeyDirectory for MemoryDirectory {
fn load(&self) -> Result<Vec<SafeAccount>, Error> { fn load(&self) -> Result<Vec<SafeAccount>, Error> {
Ok(itertools::Itertools::flatten(self.accounts.read().values().cloned()).collect()) Ok(self.accounts.read().values().cloned().flatten().collect())
} }
fn update(&self, account: SafeAccount) -> Result<SafeAccount, Error> { fn update(&self, account: SafeAccount) -> Result<SafeAccount, Error> {

View File

@@ -1,18 +1,18 @@
// Copyright 2015-2019 Parity Technologies (UK) Ltd. // Copyright 2015-2020 Parity Technologies (UK) Ltd.
// This file is part of Parity Ethereum. // This file is part of Open Ethereum.
// Parity Ethereum is free software: you can redistribute it and/or modify // Open Ethereum is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or // the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version. // (at your option) any later version.
// Parity Ethereum is distributed in the hope that it will be useful, // Open Ethereum is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details. // GNU General Public License for more details.
// You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
// along with Parity Ethereum. If not, see <http://www.gnu.org/licenses/>. // along with Open Ethereum. If not, see <http://www.gnu.org/licenses/>.
//! Accounts Directory //! Accounts Directory
@@ -57,7 +57,7 @@ pub trait KeyDirectory: Send + Sync {
/// Get directory filesystem path, if available /// Get directory filesystem path, if available
fn path(&self) -> Option<&PathBuf> { None } fn path(&self) -> Option<&PathBuf> { None }
/// Return vault provider, if available /// Return vault provider, if available
fn as_vault_provider(&self) -> Option<&VaultKeyDirectoryProvider> { None } fn as_vault_provider(&self) -> Option<&dyn VaultKeyDirectoryProvider> { None }
/// Unique representation of directory account collection /// Unique representation of directory account collection
fn unique_repr(&self) -> Result<u64, Error>; fn unique_repr(&self) -> Result<u64, Error>;
} }
@@ -65,9 +65,9 @@ pub trait KeyDirectory: Send + Sync {
/// Vaults provider /// Vaults provider
pub trait VaultKeyDirectoryProvider { pub trait VaultKeyDirectoryProvider {
/// Create new vault with given key /// Create new vault with given key
fn create(&self, name: &str, key: VaultKey) -> Result<Box<VaultKeyDirectory>, Error>; fn create(&self, name: &str, key: VaultKey) -> Result<Box<dyn VaultKeyDirectory>, Error>;
/// Open existing vault with given key /// Open existing vault with given key
fn open(&self, name: &str, key: VaultKey) -> Result<Box<VaultKeyDirectory>, Error>; fn open(&self, name: &str, key: VaultKey) -> Result<Box<dyn VaultKeyDirectory>, Error>;
/// List all vaults /// List all vaults
fn list_vaults(&self) -> Result<Vec<String>, Error>; fn list_vaults(&self) -> Result<Vec<String>, Error>;
/// Get vault meta /// Get vault meta
@@ -77,7 +77,7 @@ pub trait VaultKeyDirectoryProvider {
/// Vault directory /// Vault directory
pub trait VaultKeyDirectory: KeyDirectory { pub trait VaultKeyDirectory: KeyDirectory {
/// Cast to `KeyDirectory` /// Cast to `KeyDirectory`
fn as_key_directory(&self) -> &KeyDirectory; fn as_key_directory(&self) -> &dyn KeyDirectory;
/// Vault name /// Vault name
fn name(&self) -> &str; fn name(&self) -> &str;
/// Get vault key /// Get vault key

View File

@@ -1,18 +1,18 @@
// Copyright 2015-2019 Parity Technologies (UK) Ltd. // Copyright 2015-2020 Parity Technologies (UK) Ltd.
// This file is part of Parity Ethereum. // This file is part of Open Ethereum.
// Parity Ethereum is free software: you can redistribute it and/or modify // Open Ethereum is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or // the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version. // (at your option) any later version.
// Parity Ethereum is distributed in the hope that it will be useful, // Open Ethereum is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details. // GNU General Public License for more details.
// You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
// along with Parity Ethereum. If not, see <http://www.gnu.org/licenses/>. // along with Open Ethereum. If not, see <http://www.gnu.org/licenses/>.
use std::{fs, io}; use std::{fs, io};
use std::path::{PathBuf, Path}; use std::path::{PathBuf, Path};
@@ -119,7 +119,7 @@ impl VaultDiskDirectory {
} }
impl VaultKeyDirectory for VaultDiskDirectory { impl VaultKeyDirectory for VaultDiskDirectory {
fn as_key_directory(&self) -> &KeyDirectory { fn as_key_directory(&self) -> &dyn KeyDirectory {
self self
} }
@@ -278,14 +278,14 @@ fn read_vault_file<P>(vault_dir_path: P, key: Option<&VaultKey>) -> Result<Strin
#[cfg(test)] #[cfg(test)]
mod test { mod test {
extern crate tempdir; extern crate tempfile;
use std::fs; use std::fs;
use std::io::Write; use std::io::Write;
use std::path::PathBuf; use std::path::PathBuf;
use super::VaultKey; use super::VaultKey;
use super::{VAULT_FILE_NAME, check_vault_name, make_vault_dir_path, create_vault_file, read_vault_file, VaultDiskDirectory}; use super::{VAULT_FILE_NAME, check_vault_name, make_vault_dir_path, create_vault_file, read_vault_file, VaultDiskDirectory};
use self::tempdir::TempDir; use self::tempfile::TempDir;
#[test] #[test]
fn check_vault_name_succeeds() { fn check_vault_name_succeeds() {
@@ -324,7 +324,7 @@ mod test {
#[test] #[test]
fn create_vault_file_succeeds() { fn create_vault_file_succeeds() {
// given // given
let temp_path = TempDir::new("").unwrap(); let temp_path = TempDir::new().unwrap();
let key = VaultKey::new(&"password".into(), 1024); let key = VaultKey::new(&"password".into(), 1024);
let mut vault_dir: PathBuf = temp_path.path().into(); let mut vault_dir: PathBuf = temp_path.path().into();
vault_dir.push("vault"); vault_dir.push("vault");
@@ -343,7 +343,7 @@ mod test {
#[test] #[test]
fn read_vault_file_succeeds() { fn read_vault_file_succeeds() {
// given // given
let temp_path = TempDir::new("").unwrap(); let temp_path = TempDir::new().unwrap();
let key = VaultKey::new(&"password".into(), 1024); let key = VaultKey::new(&"password".into(), 1024);
let vault_file_contents = r#"{"crypto":{"cipher":"aes-128-ctr","cipherparams":{"iv":"758696c8dc6378ab9b25bb42790da2f5"},"ciphertext":"54eb50683717d41caaeb12ea969f2c159daada5907383f26f327606a37dc7168","kdf":"pbkdf2","kdfparams":{"c":1024,"dklen":32,"prf":"hmac-sha256","salt":"3c320fa566a1a7963ac8df68a19548d27c8f40bf92ef87c84594dcd5bbc402b6"},"mac":"9e5c2314c2a0781962db85611417c614bd6756666b6b1e93840f5b6ed895f003"}}"#; let vault_file_contents = r#"{"crypto":{"cipher":"aes-128-ctr","cipherparams":{"iv":"758696c8dc6378ab9b25bb42790da2f5"},"ciphertext":"54eb50683717d41caaeb12ea969f2c159daada5907383f26f327606a37dc7168","kdf":"pbkdf2","kdfparams":{"c":1024,"dklen":32,"prf":"hmac-sha256","salt":"3c320fa566a1a7963ac8df68a19548d27c8f40bf92ef87c84594dcd5bbc402b6"},"mac":"9e5c2314c2a0781962db85611417c614bd6756666b6b1e93840f5b6ed895f003"}}"#;
let dir: PathBuf = temp_path.path().into(); let dir: PathBuf = temp_path.path().into();
@@ -364,7 +364,7 @@ mod test {
#[test] #[test]
fn read_vault_file_fails() { fn read_vault_file_fails() {
// given // given
let temp_path = TempDir::new("").unwrap(); let temp_path = TempDir::new().unwrap();
let key = VaultKey::new(&"password1".into(), 1024); let key = VaultKey::new(&"password1".into(), 1024);
let dir: PathBuf = temp_path.path().into(); let dir: PathBuf = temp_path.path().into();
let mut vault_file_path: PathBuf = dir.clone(); let mut vault_file_path: PathBuf = dir.clone();
@@ -393,7 +393,7 @@ mod test {
#[test] #[test]
fn vault_directory_can_be_created() { fn vault_directory_can_be_created() {
// given // given
let temp_path = TempDir::new("").unwrap(); let temp_path = TempDir::new().unwrap();
let key = VaultKey::new(&"password".into(), 1024); let key = VaultKey::new(&"password".into(), 1024);
let dir: PathBuf = temp_path.path().into(); let dir: PathBuf = temp_path.path().into();
@@ -413,7 +413,7 @@ mod test {
#[test] #[test]
fn vault_directory_cannot_be_created_if_already_exists() { fn vault_directory_cannot_be_created_if_already_exists() {
// given // given
let temp_path = TempDir::new("").unwrap(); let temp_path = TempDir::new().unwrap();
let key = VaultKey::new(&"password".into(), 1024); let key = VaultKey::new(&"password".into(), 1024);
let dir: PathBuf = temp_path.path().into(); let dir: PathBuf = temp_path.path().into();
let mut vault_dir = dir.clone(); let mut vault_dir = dir.clone();
@@ -430,7 +430,7 @@ mod test {
#[test] #[test]
fn vault_directory_cannot_be_opened_if_not_exists() { fn vault_directory_cannot_be_opened_if_not_exists() {
// given // given
let temp_path = TempDir::new("").unwrap(); let temp_path = TempDir::new().unwrap();
let key = VaultKey::new(&"password".into(), 1024); let key = VaultKey::new(&"password".into(), 1024);
let dir: PathBuf = temp_path.path().into(); let dir: PathBuf = temp_path.path().into();

View File

@@ -1,24 +1,23 @@
// Copyright 2015-2019 Parity Technologies (UK) Ltd. // Copyright 2015-2020 Parity Technologies (UK) Ltd.
// This file is part of Parity Ethereum. // This file is part of Open Ethereum.
// Parity Ethereum is free software: you can redistribute it and/or modify // Open Ethereum is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or // the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version. // (at your option) any later version.
// Parity Ethereum is distributed in the hope that it will be useful, // Open Ethereum is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details. // GNU General Public License for more details.
// You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
// along with Parity Ethereum. If not, see <http://www.gnu.org/licenses/>. // along with Open Ethereum. If not, see <http://www.gnu.org/licenses/>.
use std::fmt; use std::fmt;
use std::io::Error as IoError; use std::io::Error as IoError;
use ethkey::{self, Error as EthKeyError};
use crypto::{self, Error as EthCryptoError}; use crypto::{self, Error as EthCryptoError};
use ethkey::DerivationError; use crypto::publickey::{Error as EthPublicKeyCryptoError, DerivationError};
/// Account-related errors. /// Account-related errors.
#[derive(Debug)] #[derive(Debug)]
@@ -47,12 +46,10 @@ pub enum Error {
VaultNotFound, VaultNotFound,
/// Account creation failed. /// Account creation failed.
CreationFailed, CreationFailed,
/// `EthKey` error
EthKey(EthKeyError),
/// `ethkey::crypto::Error`
EthKeyCrypto(ethkey::crypto::Error),
/// `EthCrypto` error /// `EthCrypto` error
EthCrypto(EthCryptoError), EthCrypto(EthCryptoError),
/// `EthPublicKeyCryptoError` error
EthPublicKeyCrypto(EthPublicKeyCryptoError),
/// Derivation error /// Derivation error
Derivation(DerivationError), Derivation(DerivationError),
/// Custom error /// Custom error
@@ -74,9 +71,8 @@ impl fmt::Display for Error {
Error::InvalidVaultName => "Invalid vault name".into(), Error::InvalidVaultName => "Invalid vault name".into(),
Error::VaultNotFound => "Vault not found".into(), Error::VaultNotFound => "Vault not found".into(),
Error::CreationFailed => "Account creation failed".into(), Error::CreationFailed => "Account creation failed".into(),
Error::EthKey(ref err) => err.to_string(),
Error::EthKeyCrypto(ref err) => err.to_string(),
Error::EthCrypto(ref err) => err.to_string(), Error::EthCrypto(ref err) => err.to_string(),
Error::EthPublicKeyCrypto(ref err) => err.to_string(),
Error::Derivation(ref err) => format!("Derivation error: {:?}", err), Error::Derivation(ref err) => format!("Derivation error: {:?}", err),
Error::Custom(ref s) => s.clone(), Error::Custom(ref s) => s.clone(),
}; };
@@ -91,15 +87,9 @@ impl From<IoError> for Error {
} }
} }
impl From<EthKeyError> for Error { impl From<EthPublicKeyCryptoError> for Error {
fn from(err: EthKeyError) -> Self { fn from(err: EthPublicKeyCryptoError) -> Self {
Error::EthKey(err) Error::EthPublicKeyCrypto(err)
}
}
impl From<ethkey::crypto::Error> for Error {
fn from(err: ethkey::crypto::Error) -> Self {
Error::EthKeyCrypto(err)
} }
} }

View File

@@ -1,41 +0,0 @@
// Copyright 2015-2019 Parity Technologies (UK) Ltd.
// This file is part of Parity Ethereum.
// Parity Ethereum is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// Parity Ethereum is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with Parity Ethereum. If not, see <http://www.gnu.org/licenses/>.
//! ethkey reexport to make documentation look pretty.
pub use _ethkey::*;
use json;
impl Into<json::H160> for Address {
fn into(self) -> json::H160 {
let a: [u8; 20] = self.into();
From::from(a)
}
}
impl From<json::H160> for Address {
fn from(json: json::H160) -> Self {
let a: [u8; 20] = json.into();
From::from(a)
}
}
impl<'a> From<&'a json::H160> for Address {
fn from(json: &'a json::H160) -> Self {
let mut a = [0u8; 20];
a.copy_from_slice(json);
From::from(a)
}
}

View File

@@ -1,18 +1,18 @@
// Copyright 2015-2019 Parity Technologies (UK) Ltd. // Copyright 2015-2020 Parity Technologies (UK) Ltd.
// This file is part of Parity Ethereum. // This file is part of Open Ethereum.
// Parity Ethereum is free software: you can redistribute it and/or modify // Open Ethereum is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or // the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version. // (at your option) any later version.
// Parity Ethereum is distributed in the hope that it will be useful, // Open Ethereum is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details. // GNU General Public License for more details.
// You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
// along with Parity Ethereum. If not, see <http://www.gnu.org/licenses/>. // along with Open Ethereum. If not, see <http://www.gnu.org/licenses/>.
use std::collections::{BTreeMap, HashMap}; use std::collections::{BTreeMap, HashMap};
use std::mem; use std::mem;
@@ -22,7 +22,8 @@ use std::time::{Instant, Duration};
use crypto::KEY_ITERATIONS; use crypto::KEY_ITERATIONS;
use random::Random; use random::Random;
use ethkey::{self, Signature, Password, Address, Message, Secret, Public, KeyPair, ExtendedKeyPair}; use crypto::publickey::{Signature, Address, Message, Secret, Public, KeyPair, ExtendedKeyPair};
use ethkey::Password;
use accounts_dir::{KeyDirectory, VaultKeyDirectory, VaultKey, SetKeyError}; use accounts_dir::{KeyDirectory, VaultKeyDirectory, VaultKey, SetKeyError};
use account::SafeAccount; use account::SafeAccount;
use presale::PresaleWallet; use presale::PresaleWallet;
@@ -36,12 +37,12 @@ pub struct EthStore {
impl EthStore { impl EthStore {
/// Open a new accounts store with given key directory backend. /// Open a new accounts store with given key directory backend.
pub fn open(directory: Box<KeyDirectory>) -> Result<Self, Error> { pub fn open(directory: Box<dyn KeyDirectory>) -> Result<Self, Error> {
Self::open_with_iterations(directory, KEY_ITERATIONS as u32) Self::open_with_iterations(directory, KEY_ITERATIONS as u32)
} }
/// Open a new account store with given key directory backend and custom number of iterations. /// Open a new account store with given key directory backend and custom number of iterations.
pub fn open_with_iterations(directory: Box<KeyDirectory>, iterations: u32) -> Result<Self, Error> { pub fn open_with_iterations(directory: Box<dyn KeyDirectory>, iterations: u32) -> Result<Self, Error> {
Ok(EthStore { Ok(EthStore {
store: EthMultiStore::open_with_iterations(directory, iterations)?, store: EthMultiStore::open_with_iterations(directory, iterations)?,
}) })
@@ -184,7 +185,7 @@ impl SecretStore for EthStore {
Ok(account.check_password(password)) Ok(account.check_password(password))
} }
fn copy_account(&self, new_store: &SimpleSecretStore, new_vault: SecretVaultRef, account: &StoreAccountRef, password: &Password, new_password: &Password) -> Result<(), Error> { fn copy_account(&self, new_store: &dyn SimpleSecretStore, new_vault: SecretVaultRef, account: &StoreAccountRef, password: &Password, new_password: &Password) -> Result<(), Error> {
let account = self.get(account)?; let account = self.get(account)?;
let secret = account.crypto.secret(password)?; let secret = account.crypto.secret(password)?;
new_store.insert_account(new_vault, secret, new_password)?; new_store.insert_account(new_vault, secret, new_password)?;
@@ -256,11 +257,11 @@ impl SecretStore for EthStore {
/// Similar to `EthStore` but may store many accounts (with different passwords) for the same `Address` /// Similar to `EthStore` but may store many accounts (with different passwords) for the same `Address`
pub struct EthMultiStore { pub struct EthMultiStore {
dir: Box<KeyDirectory>, dir: Box<dyn KeyDirectory>,
iterations: u32, iterations: u32,
// order lock: cache, then vaults // order lock: cache, then vaults
cache: RwLock<BTreeMap<StoreAccountRef, Vec<SafeAccount>>>, cache: RwLock<BTreeMap<StoreAccountRef, Vec<SafeAccount>>>,
vaults: Mutex<HashMap<String, Box<VaultKeyDirectory>>>, vaults: Mutex<HashMap<String, Box<dyn VaultKeyDirectory>>>,
timestamp: Mutex<Timestamp>, timestamp: Mutex<Timestamp>,
} }
@@ -272,12 +273,12 @@ struct Timestamp {
impl EthMultiStore { impl EthMultiStore {
/// Open new multi-accounts store with given key directory backend. /// Open new multi-accounts store with given key directory backend.
pub fn open(directory: Box<KeyDirectory>) -> Result<Self, Error> { pub fn open(directory: Box<dyn KeyDirectory>) -> Result<Self, Error> {
Self::open_with_iterations(directory, KEY_ITERATIONS as u32) Self::open_with_iterations(directory, KEY_ITERATIONS as u32)
} }
/// Open new multi-accounts store with given key directory backend and custom number of iterations for new keys. /// Open new multi-accounts store with given key directory backend and custom number of iterations for new keys.
pub fn open_with_iterations(directory: Box<KeyDirectory>, iterations: u32) -> Result<Self, Error> { pub fn open_with_iterations(directory: Box<dyn KeyDirectory>, iterations: u32) -> Result<Self, Error> {
let store = EthMultiStore { let store = EthMultiStore {
dir: directory, dir: directory,
vaults: Mutex::new(HashMap::new()), vaults: Mutex::new(HashMap::new()),
@@ -442,13 +443,13 @@ impl EthMultiStore {
Derivation::Hierarchical(path) => { Derivation::Hierarchical(path) => {
for path_item in path { for path_item in path {
extended = extended.derive( extended = extended.derive(
if path_item.soft { ethkey::Derivation::Soft(path_item.index) } if path_item.soft { crypto::publickey::Derivation::Soft(path_item.index) }
else { ethkey::Derivation::Hard(path_item.index) } else { crypto::publickey::Derivation::Hard(path_item.index) }
)?; )?;
} }
}, },
Derivation::SoftHash(h256) => { extended = extended.derive(ethkey::Derivation::Soft(h256))?; } Derivation::SoftHash(h256) => { extended = extended.derive(crypto::publickey::Derivation::Soft(h256))?; }
Derivation::HardHash(h256) => { extended = extended.derive(ethkey::Derivation::Hard(h256))?; } Derivation::HardHash(h256) => { extended = extended.derive(crypto::publickey::Derivation::Hard(h256))?; }
} }
Ok(extended) Ok(extended)
} }
@@ -479,7 +480,7 @@ impl SimpleSecretStore for EthMultiStore {
let accounts = self.get_matching(&account_ref, password)?; let accounts = self.get_matching(&account_ref, password)?;
for account in accounts { for account in accounts {
let extended = self.generate(account.crypto.secret(password)?, derivation)?; let extended = self.generate(account.crypto.secret(password)?, derivation)?;
return Ok(ethkey::public_to_address(extended.public().public())); return Ok(crypto::publickey::public_to_address(extended.public().public()));
} }
Err(Error::InvalidPassword) Err(Error::InvalidPassword)
} }
@@ -491,7 +492,7 @@ impl SimpleSecretStore for EthMultiStore {
for account in accounts { for account in accounts {
let extended = self.generate(account.crypto.secret(password)?, derivation)?; let extended = self.generate(account.crypto.secret(password)?, derivation)?;
let secret = extended.secret().as_raw(); let secret = extended.secret().as_raw();
return Ok(ethkey::sign(&secret, message)?) return Ok(crypto::publickey::sign(&secret, message)?)
} }
Err(Error::InvalidPassword) Err(Error::InvalidPassword)
} }
@@ -687,17 +688,17 @@ impl SimpleSecretStore for EthMultiStore {
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
extern crate tempdir; extern crate tempfile;
use accounts_dir::{KeyDirectory, MemoryDirectory, RootDiskDirectory}; use accounts_dir::{KeyDirectory, MemoryDirectory, RootDiskDirectory};
use ethkey::{Random, Generator, KeyPair}; use crypto::publickey::{Random, Generator, KeyPair};
use secret_store::{SimpleSecretStore, SecretStore, SecretVaultRef, StoreAccountRef, Derivation}; use secret_store::{SimpleSecretStore, SecretStore, SecretVaultRef, StoreAccountRef, Derivation};
use super::{EthStore, EthMultiStore}; use super::{EthStore, EthMultiStore};
use self::tempdir::TempDir; use self::tempfile::TempDir;
use ethereum_types::H256; use ethereum_types::H256;
fn keypair() -> KeyPair { fn keypair() -> KeyPair {
Random.generate().unwrap() Random.generate()
} }
fn store() -> EthStore { fn store() -> EthStore {
@@ -709,13 +710,13 @@ mod tests {
} }
struct RootDiskDirectoryGuard { struct RootDiskDirectoryGuard {
pub key_dir: Option<Box<KeyDirectory>>, pub key_dir: Option<Box<dyn KeyDirectory>>,
_path: TempDir, _path: TempDir,
} }
impl RootDiskDirectoryGuard { impl RootDiskDirectoryGuard {
pub fn new() -> Self { pub fn new() -> Self {
let temp_path = TempDir::new("").unwrap(); let temp_path = TempDir::new().unwrap();
let disk_dir = Box::new(RootDiskDirectory::create(temp_path.path()).unwrap()); let disk_dir = Box::new(RootDiskDirectory::create(temp_path.path()).unwrap());
RootDiskDirectoryGuard { RootDiskDirectoryGuard {
@@ -819,6 +820,7 @@ mod tests {
let passwd2 = "xzy".into(); let passwd2 = "xzy".into();
let multi_store = multi_store(); let multi_store = multi_store();
let keypair = keypair(); let keypair = keypair();
let message = [1u8; 32].into();
let address = store.insert_account(SecretVaultRef::Root, keypair.secret().clone(), &passwd1).unwrap(); let address = store.insert_account(SecretVaultRef::Root, keypair.secret().clone(), &passwd1).unwrap();
assert_eq!(multi_store.accounts().unwrap().len(), 0); assert_eq!(multi_store.accounts().unwrap().len(), 0);
@@ -827,7 +829,7 @@ mod tests {
// then // then
assert!(store.test_password(&address, &passwd1).unwrap(), "First password should work for store."); assert!(store.test_password(&address, &passwd1).unwrap(), "First password should work for store.");
assert!(multi_store.sign(&address, &passwd2, &Default::default()).is_ok(), "Second password should work for second store."); assert!(multi_store.sign(&address, &passwd2, &message).is_ok(), "Second password should work for second store.");
assert_eq!(multi_store.accounts().unwrap().len(), 1); assert_eq!(multi_store.accounts().unwrap().len(), 1);
} }
@@ -1091,8 +1093,9 @@ mod tests {
let accounts = store.accounts().unwrap(); let accounts = store.accounts().unwrap();
assert_eq!(accounts.len(), 2); assert_eq!(accounts.len(), 2);
let message = [1u8; 32].into();
// and we can sign with the derived contract // and we can sign with the derived contract
assert!(store.sign(&derived, &"test".into(), &Default::default()).is_ok(), "Second password should work for second store."); assert!(store.sign(&derived, &"test".into(), &message).is_ok(), "Second password should work for second store.");
} }
#[test] #[test]

View File

@@ -1,30 +1,30 @@
// Copyright 2015-2019 Parity Technologies (UK) Ltd. // Copyright 2015-2020 Parity Technologies (UK) Ltd.
// This file is part of Parity Ethereum. // This file is part of Open Ethereum.
// Parity Ethereum is free software: you can redistribute it and/or modify // Open Ethereum is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or // the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version. // (at your option) any later version.
// Parity Ethereum is distributed in the hope that it will be useful, // Open Ethereum is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details. // GNU General Public License for more details.
// You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
// along with Parity Ethereum. If not, see <http://www.gnu.org/licenses/>. // along with Open Ethereum. If not, see <http://www.gnu.org/licenses/>.
use std::collections::HashSet; use std::collections::HashSet;
use std::path::Path; use std::path::Path;
use std::fs; use std::fs;
use ethkey::Address; use crypto::publickey::Address;
use accounts_dir::{KeyDirectory, RootDiskDirectory, DiskKeyFileManager, KeyFileManager}; use accounts_dir::{KeyDirectory, RootDiskDirectory, DiskKeyFileManager, KeyFileManager};
use dir; use dir;
use Error; use Error;
/// Import an account from a file. /// Import an account from a file.
pub fn import_account(path: &Path, dst: &KeyDirectory) -> Result<Address, Error> { pub fn import_account(path: &Path, dst: &dyn KeyDirectory) -> Result<Address, Error> {
let key_manager = DiskKeyFileManager::default(); let key_manager = DiskKeyFileManager::default();
let existing_accounts = dst.load()?.into_iter().map(|a| a.address).collect::<HashSet<_>>(); let existing_accounts = dst.load()?.into_iter().map(|a| a.address).collect::<HashSet<_>>();
let filename = path.file_name().and_then(|n| n.to_str()).map(|f| f.to_owned()); let filename = path.file_name().and_then(|n| n.to_str()).map(|f| f.to_owned());
@@ -40,7 +40,7 @@ pub fn import_account(path: &Path, dst: &KeyDirectory) -> Result<Address, Error>
} }
/// Import all accounts from one directory to the other. /// Import all accounts from one directory to the other.
pub fn import_accounts(src: &KeyDirectory, dst: &KeyDirectory) -> Result<Vec<Address>, Error> { pub fn import_accounts(src: &dyn KeyDirectory, dst: &dyn KeyDirectory) -> Result<Vec<Address>, Error> {
let accounts = src.load()?; let accounts = src.load()?;
let existing_accounts = dst.load()?.into_iter() let existing_accounts = dst.load()?.into_iter()
.map(|a| a.address) .map(|a| a.address)
@@ -64,7 +64,7 @@ pub fn read_geth_accounts(testnet: bool) -> Vec<Address> {
} }
/// Import specific `desired` accounts from the Geth keystore into `dst`. /// Import specific `desired` accounts from the Geth keystore into `dst`.
pub fn import_geth_accounts(dst: &KeyDirectory, desired: HashSet<Address>, testnet: bool) -> Result<Vec<Address>, Error> { pub fn import_geth_accounts(dst: &dyn KeyDirectory, desired: HashSet<Address>, testnet: bool) -> Result<Vec<Address>, Error> {
let src = RootDiskDirectory::at(dir::geth(testnet)); let src = RootDiskDirectory::at(dir::geth(testnet));
let accounts = src.load()?; let accounts = src.load()?;
let existing_accounts = dst.load()?.into_iter().map(|a| a.address).collect::<HashSet<_>>(); let existing_accounts = dst.load()?.into_iter().map(|a| a.address).collect::<HashSet<_>>();

View File

@@ -1,18 +1,18 @@
// Copyright 2015-2019 Parity Technologies (UK) Ltd. // Copyright 2015-2020 Parity Technologies (UK) Ltd.
// This file is part of Parity Ethereum. // This file is part of Open Ethereum.
// Parity Ethereum is free software: you can redistribute it and/or modify // Open Ethereum is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or // the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version. // (at your option) any later version.
// Parity Ethereum is distributed in the hope that it will be useful, // Open Ethereum is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details. // GNU General Public License for more details.
// You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
// along with Parity Ethereum. If not, see <http://www.gnu.org/licenses/>. // along with Open Ethereum. If not, see <http://www.gnu.org/licenses/>.
use std::{ops, str}; use std::{ops, str};
use serde::{Deserialize, Deserializer, Serialize, Serializer}; use serde::{Deserialize, Deserializer, Serialize, Serializer};
@@ -43,7 +43,7 @@ impl<'a> Deserialize<'a> for Bytes {
impl Serialize for Bytes { impl Serialize for Bytes {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where S: Serializer { where S: Serializer {
serializer.serialize_str(&self.0.to_hex()) serializer.serialize_str(&self.0.to_hex::<String>())
} }
} }

View File

@@ -1,18 +1,18 @@
// Copyright 2015-2019 Parity Technologies (UK) Ltd. // Copyright 2015-2020 Parity Technologies (UK) Ltd.
// This file is part of Parity Ethereum. // This file is part of Open Ethereum.
// Parity Ethereum is free software: you can redistribute it and/or modify // Open Ethereum is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or // the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version. // (at your option) any later version.
// Parity Ethereum is distributed in the hope that it will be useful, // Open Ethereum is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details. // GNU General Public License for more details.
// You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
// along with Parity Ethereum. If not, see <http://www.gnu.org/licenses/>. // along with Open Ethereum. If not, see <http://www.gnu.org/licenses/>.
use std::fmt; use std::fmt;
use serde::{Serialize, Serializer, Deserialize, Deserializer}; use serde::{Serialize, Serializer, Deserialize, Deserializer};

View File

@@ -1,18 +1,18 @@
// Copyright 2015-2019 Parity Technologies (UK) Ltd. // Copyright 2015-2020 Parity Technologies (UK) Ltd.
// This file is part of Parity Ethereum. // This file is part of Open Ethereum.
// Parity Ethereum is free software: you can redistribute it and/or modify // Open Ethereum is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or // the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version. // (at your option) any later version.
// Parity Ethereum is distributed in the hope that it will be useful, // Open Ethereum is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details. // GNU General Public License for more details.
// You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
// along with Parity Ethereum. If not, see <http://www.gnu.org/licenses/>. // along with Open Ethereum. If not, see <http://www.gnu.org/licenses/>.
use std::{fmt, str}; use std::{fmt, str};
use serde::{Deserialize, Deserializer, Serialize, Serializer}; use serde::{Deserialize, Deserializer, Serialize, Serializer};

View File

@@ -1,18 +1,18 @@
// Copyright 2015-2019 Parity Technologies (UK) Ltd. // Copyright 2015-2020 Parity Technologies (UK) Ltd.
// This file is part of Parity Ethereum. // This file is part of Open Ethereum.
// Parity Ethereum is free software: you can redistribute it and/or modify // Open Ethereum is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or // the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version. // (at your option) any later version.
// Parity Ethereum is distributed in the hope that it will be useful, // Open Ethereum is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details. // GNU General Public License for more details.
// You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
// along with Parity Ethereum. If not, see <http://www.gnu.org/licenses/>. // along with Open Ethereum. If not, see <http://www.gnu.org/licenses/>.
use std::fmt; use std::fmt;

View File

@@ -1,18 +1,18 @@
// Copyright 2015-2019 Parity Technologies (UK) Ltd. // Copyright 2015-2020 Parity Technologies (UK) Ltd.
// This file is part of Parity Ethereum. // This file is part of Open Ethereum.
// Parity Ethereum is free software: you can redistribute it and/or modify // Open Ethereum is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or // the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version. // (at your option) any later version.
// Parity Ethereum is distributed in the hope that it will be useful, // Open Ethereum is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details. // GNU General Public License for more details.
// You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
// along with Parity Ethereum. If not, see <http://www.gnu.org/licenses/>. // along with Open Ethereum. If not, see <http://www.gnu.org/licenses/>.
use std::{ops, fmt, str}; use std::{ops, fmt, str};
use rustc_hex::{FromHex, ToHex}; use rustc_hex::{FromHex, ToHex};
@@ -49,8 +49,9 @@ macro_rules! impl_hash {
impl Serialize for $name { impl Serialize for $name {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where S: Serializer { where S: Serializer
serializer.serialize_str(&self.0.to_hex()) {
serializer.serialize_str(&self.0.to_hex::<String>())
} }
} }
@@ -83,7 +84,7 @@ macro_rules! impl_hash {
type Err = Error; type Err = Error;
fn from_str(value: &str) -> Result<Self, Self::Err> { fn from_str(value: &str) -> Result<Self, Self::Err> {
match value.from_hex() { match value.from_hex::<Vec<u8>>() {
Ok(ref hex) if hex.len() == $size => { Ok(ref hex) if hex.len() == $size => {
let mut hash = [0u8; $size]; let mut hash = [0u8; $size];
hash.clone_from_slice(hex); hash.clone_from_slice(hex);

View File

@@ -1,20 +1,21 @@
// Copyright 2015-2019 Parity Technologies (UK) Ltd. // Copyright 2015-2020 Parity Technologies (UK) Ltd.
// This file is part of Parity Ethereum. // This file is part of Open Ethereum.
// Parity Ethereum is free software: you can redistribute it and/or modify // Open Ethereum is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or // the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version. // (at your option) any later version.
// Parity Ethereum is distributed in the hope that it will be useful, // Open Ethereum is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details. // GNU General Public License for more details.
// You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
// along with Parity Ethereum. If not, see <http://www.gnu.org/licenses/>. // along with Open Ethereum. If not, see <http://www.gnu.org/licenses/>.
//! Universaly unique identifier. //! Universaly unique identifier.
use std::{fmt, str}; use std::{fmt, str};
use rustc_hex::{ToHex, FromHex}; use rustc_hex::{ToHex, FromHex};
use serde::{Deserialize, Serialize, Deserializer, Serializer}; use serde::{Deserialize, Serialize, Deserializer, Serializer};
@@ -38,7 +39,7 @@ impl<'a> Into<String> for &'a Uuid {
let d3 = &self.0[6..8]; let d3 = &self.0[6..8];
let d4 = &self.0[8..10]; let d4 = &self.0[8..10];
let d5 = &self.0[10..16]; let d5 = &self.0[10..16];
[d1, d2, d3, d4, d5].into_iter().map(|d| d.to_hex()).collect::<Vec<String>>().join("-") [d1, d2, d3, d4, d5].iter().map(|d| d.to_hex()).collect::<Vec<String>>().join("-")
} }
} }
@@ -62,7 +63,7 @@ impl fmt::Display for Uuid {
} }
fn copy_into(from: &str, into: &mut [u8]) -> Result<(), Error> { fn copy_into(from: &str, into: &mut [u8]) -> Result<(), Error> {
let from = from.from_hex().map_err(|_| Error::InvalidUuid)?; let from: Vec<u8> = from.from_hex().map_err(|_| Error::InvalidUuid)?;
if from.len() != into.len() { if from.len() != into.len() {
return Err(Error::InvalidUuid); return Err(Error::InvalidUuid);

View File

@@ -1,18 +1,18 @@
// Copyright 2015-2019 Parity Technologies (UK) Ltd. // Copyright 2015-2020 Parity Technologies (UK) Ltd.
// This file is part of Parity Ethereum. // This file is part of Open Ethereum.
// Parity Ethereum is free software: you can redistribute it and/or modify // Open Ethereum is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or // the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version. // (at your option) any later version.
// Parity Ethereum is distributed in the hope that it will be useful, // Open Ethereum is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details. // GNU General Public License for more details.
// You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
// along with Parity Ethereum. If not, see <http://www.gnu.org/licenses/>. // along with Open Ethereum. If not, see <http://www.gnu.org/licenses/>.
use std::fmt; use std::fmt;
use serde::{Serialize, Serializer, Deserialize, Deserializer}; use serde::{Serialize, Serializer, Deserialize, Deserializer};

View File

@@ -1,18 +1,18 @@
// Copyright 2015-2019 Parity Technologies (UK) Ltd. // Copyright 2015-2020 Parity Technologies (UK) Ltd.
// This file is part of Parity Ethereum. // This file is part of Open Ethereum.
// Parity Ethereum is free software: you can redistribute it and/or modify // Open Ethereum is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or // the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version. // (at your option) any later version.
// Parity Ethereum is distributed in the hope that it will be useful, // Open Ethereum is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details. // GNU General Public License for more details.
// You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
// along with Parity Ethereum. If not, see <http://www.gnu.org/licenses/>. // along with Open Ethereum. If not, see <http://www.gnu.org/licenses/>.
use std::fmt; use std::fmt;
use std::io::{Read, Write}; use std::io::{Read, Write};

View File

@@ -1,18 +1,18 @@
// Copyright 2015-2019 Parity Technologies (UK) Ltd. // Copyright 2015-2020 Parity Technologies (UK) Ltd.
// This file is part of Parity Ethereum. // This file is part of Open Ethereum.
// Parity Ethereum is free software: you can redistribute it and/or modify // Open Ethereum is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or // the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version. // (at your option) any later version.
// Parity Ethereum is distributed in the hope that it will be useful, // Open Ethereum is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details. // GNU General Public License for more details.
// You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
// along with Parity Ethereum. If not, see <http://www.gnu.org/licenses/>. // along with Open Ethereum. If not, see <http://www.gnu.org/licenses/>.
//! Contract interface specification. //! Contract interface specification.

View File

@@ -1,18 +1,18 @@
// Copyright 2015-2019 Parity Technologies (UK) Ltd. // Copyright 2015-2020 Parity Technologies (UK) Ltd.
// This file is part of Parity Ethereum. // This file is part of Open Ethereum.
// Parity Ethereum is free software: you can redistribute it and/or modify // Open Ethereum is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or // the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version. // (at your option) any later version.
// Parity Ethereum is distributed in the hope that it will be useful, // Open Ethereum is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details. // GNU General Public License for more details.
// You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
// along with Parity Ethereum. If not, see <http://www.gnu.org/licenses/>. // along with Open Ethereum. If not, see <http://www.gnu.org/licenses/>.
use std::io::Read; use std::io::Read;
use serde_json; use serde_json;

View File

@@ -1,18 +1,18 @@
// Copyright 2015-2019 Parity Technologies (UK) Ltd. // Copyright 2015-2020 Parity Technologies (UK) Ltd.
// This file is part of Parity Ethereum. // This file is part of Open Ethereum.
// Parity Ethereum is free software: you can redistribute it and/or modify // Open Ethereum is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or // the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version. // (at your option) any later version.
// Parity Ethereum is distributed in the hope that it will be useful, // Open Ethereum is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details. // GNU General Public License for more details.
// You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
// along with Parity Ethereum. If not, see <http://www.gnu.org/licenses/>. // along with Open Ethereum. If not, see <http://www.gnu.org/licenses/>.
use std::io::{Read, Write}; use std::io::{Read, Write};
use serde_json; use serde_json;

View File

@@ -1,18 +1,18 @@
// Copyright 2015-2019 Parity Technologies (UK) Ltd. // Copyright 2015-2020 Parity Technologies (UK) Ltd.
// This file is part of Parity Ethereum. // This file is part of Open Ethereum.
// Parity Ethereum is free software: you can redistribute it and/or modify // Open Ethereum is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or // the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version. // (at your option) any later version.
// Parity Ethereum is distributed in the hope that it will be useful, // Open Ethereum is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details. // GNU General Public License for more details.
// You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
// along with Parity Ethereum. If not, see <http://www.gnu.org/licenses/>. // along with Open Ethereum. If not, see <http://www.gnu.org/licenses/>.
use std::io::{Read, Write}; use std::io::{Read, Write};
use serde::de::Error; use serde::de::Error;

View File

@@ -1,18 +1,18 @@
// Copyright 2015-2019 Parity Technologies (UK) Ltd. // Copyright 2015-2020 Parity Technologies (UK) Ltd.
// This file is part of Parity Ethereum. // This file is part of Open Ethereum.
// Parity Ethereum is free software: you can redistribute it and/or modify // Open Ethereum is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or // the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version. // (at your option) any later version.
// Parity Ethereum is distributed in the hope that it will be useful, // Open Ethereum is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details. // GNU General Public License for more details.
// You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
// along with Parity Ethereum. If not, see <http://www.gnu.org/licenses/>. // along with Open Ethereum. If not, see <http://www.gnu.org/licenses/>.
use std::fmt; use std::fmt;
use serde::{Serialize, Serializer, Deserialize, Deserializer}; use serde::{Serialize, Serializer, Deserialize, Deserializer};

View File

@@ -1,25 +1,24 @@
// Copyright 2015-2019 Parity Technologies (UK) Ltd. // Copyright 2015-2020 Parity Technologies (UK) Ltd.
// This file is part of Parity Ethereum. // This file is part of Open Ethereum.
// Parity Ethereum is free software: you can redistribute it and/or modify // Open Ethereum is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or // the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version. // (at your option) any later version.
// Parity Ethereum is distributed in the hope that it will be useful, // Open Ethereum is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details. // GNU General Public License for more details.
// You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
// along with Parity Ethereum. If not, see <http://www.gnu.org/licenses/>. // along with Open Ethereum. If not, see <http://www.gnu.org/licenses/>.
//! Ethereum key-management. //! Ethereum key-management.
#![warn(missing_docs)] #![warn(missing_docs)]
extern crate dir; extern crate dir;
extern crate itertools;
extern crate libc; extern crate libc;
extern crate parking_lot; extern crate parking_lot;
extern crate rand; extern crate rand;
@@ -29,11 +28,11 @@ extern crate serde_json;
extern crate smallvec; extern crate smallvec;
extern crate time; extern crate time;
extern crate tiny_keccak; extern crate tiny_keccak;
extern crate tempdir; extern crate tempfile;
extern crate parity_crypto as crypto; extern crate parity_crypto as crypto;
extern crate ethereum_types; extern crate ethereum_types;
extern crate ethkey as _ethkey; extern crate ethkey as ethkey;
extern crate parity_wordlist; extern crate parity_wordlist;
#[macro_use] #[macro_use]
@@ -46,7 +45,6 @@ extern crate serde_derive;
extern crate matches; extern crate matches;
pub mod accounts_dir; pub mod accounts_dir;
pub mod ethkey;
mod account; mod account;
mod json; mod json;
@@ -72,4 +70,29 @@ pub use self::random::random_string;
pub use self::parity_wordlist::random_phrase; pub use self::parity_wordlist::random_phrase;
/// An opaque wrapper for secret. /// An opaque wrapper for secret.
pub struct OpaqueSecret(::ethkey::Secret); pub struct OpaqueSecret(crypto::publickey::Secret);
// Additional converters for Address
use crypto::publickey::Address;
impl Into<json::H160> for Address {
fn into(self) -> json::H160 {
let a: [u8; 20] = self.into();
From::from(a)
}
}
impl From<json::H160> for Address {
fn from(json: json::H160) -> Self {
let a: [u8; 20] = json.into();
From::from(a)
}
}
impl<'a> From<&'a json::H160> for Address {
fn from(json: &'a json::H160) -> Self {
let mut a = [0u8; 20];
a.copy_from_slice(json);
From::from(a)
}
}

View File

@@ -1,23 +1,24 @@
// Copyright 2015-2019 Parity Technologies (UK) Ltd. // Copyright 2015-2020 Parity Technologies (UK) Ltd.
// This file is part of Parity Ethereum. // This file is part of Open Ethereum.
// Parity Ethereum is free software: you can redistribute it and/or modify // Open Ethereum is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or // the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version. // (at your option) any later version.
// Parity Ethereum is distributed in the hope that it will be useful, // Open Ethereum is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details. // GNU General Public License for more details.
// You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
// along with Parity Ethereum. If not, see <http://www.gnu.org/licenses/>. // along with Open Ethereum. If not, see <http://www.gnu.org/licenses/>.
use std::fs; use std::fs;
use std::path::Path; use std::path::Path;
use json; use json;
use ethkey::{Address, Secret, KeyPair, Password}; use crypto::publickey::{Address, Secret, KeyPair};
use ethkey::Password;
use crypto::{Keccak256, pbkdf2}; use crypto::{Keccak256, pbkdf2};
use {crypto, Error}; use {crypto, Error};
@@ -65,7 +66,7 @@ impl PresaleWallet {
.map_err(|_| Error::InvalidPassword)?; .map_err(|_| Error::InvalidPassword)?;
let unpadded = &key[..len]; let unpadded = &key[..len];
let secret = Secret::from_unsafe_slice(&unpadded.keccak256())?; let secret = Secret::import_key(&unpadded.keccak256())?;
if let Ok(kp) = KeyPair::from_secret(secret) { if let Ok(kp) = KeyPair::from_secret(secret) {
if kp.address() == self.address { if kp.address() == self.address {
return Ok(kp) return Ok(kp)

View File

@@ -1,18 +1,18 @@
// Copyright 2015-2019 Parity Technologies (UK) Ltd. // Copyright 2015-2020 Parity Technologies (UK) Ltd.
// This file is part of Parity Ethereum. // This file is part of Open Ethereum.
// Parity Ethereum is free software: you can redistribute it and/or modify // Open Ethereum is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or // the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version. // (at your option) any later version.
// Parity Ethereum is distributed in the hope that it will be useful, // Open Ethereum is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details. // GNU General Public License for more details.
// You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
// along with Parity Ethereum. If not, see <http://www.gnu.org/licenses/>. // along with Open Ethereum. If not, see <http://www.gnu.org/licenses/>.
use rand::{Rng, RngCore, rngs::OsRng, distributions::Alphanumeric}; use rand::{Rng, RngCore, rngs::OsRng, distributions::Alphanumeric};
@@ -23,7 +23,7 @@ pub trait Random {
impl Random for [u8; 16] { impl Random for [u8; 16] {
fn random() -> Self { fn random() -> Self {
let mut result = [0u8; 16]; let mut result = [0u8; 16];
let mut rng = OsRng::new().unwrap(); let mut rng = OsRng;
rng.fill_bytes(&mut result); rng.fill_bytes(&mut result);
result result
} }
@@ -32,7 +32,7 @@ impl Random for [u8; 16] {
impl Random for [u8; 32] { impl Random for [u8; 32] {
fn random() -> Self { fn random() -> Self {
let mut result = [0u8; 32]; let mut result = [0u8; 32];
let mut rng = OsRng::new().unwrap(); let mut rng = OsRng;
rng.fill_bytes(&mut result); rng.fill_bytes(&mut result);
result result
} }
@@ -40,6 +40,6 @@ impl Random for [u8; 32] {
/// Generate a random string of given length. /// Generate a random string of given length.
pub fn random_string(length: usize) -> String { pub fn random_string(length: usize) -> String {
let mut rng = OsRng::new().expect("Not able to operate without random source."); let rng = OsRng;
rng.sample_iter(&Alphanumeric).take(length).collect() rng.sample_iter(&Alphanumeric).take(length).collect()
} }

View File

@@ -1,23 +1,24 @@
// Copyright 2015-2019 Parity Technologies (UK) Ltd. // Copyright 2015-2020 Parity Technologies (UK) Ltd.
// This file is part of Parity Ethereum. // This file is part of Open Ethereum.
// Parity Ethereum is free software: you can redistribute it and/or modify // Open Ethereum is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or // the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version. // (at your option) any later version.
// Parity Ethereum is distributed in the hope that it will be useful, // Open Ethereum is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details. // GNU General Public License for more details.
// You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
// along with Parity Ethereum. If not, see <http://www.gnu.org/licenses/>. // along with Open Ethereum. If not, see <http://www.gnu.org/licenses/>.
use std::hash::{Hash, Hasher}; use std::hash::{Hash, Hasher};
use std::path::PathBuf; use std::path::PathBuf;
use std::cmp::Ordering; use std::cmp::Ordering;
use ethkey::{Address, Message, Signature, Secret, Password, Public}; use crypto::publickey::{Address, Message, Signature, Secret, Public};
use ethkey::Password;
use Error; use Error;
use json::{Uuid, OpaqueKeyFile}; use json::{Uuid, OpaqueKeyFile};
use ethereum_types::H256; use ethereum_types::H256;
@@ -110,7 +111,7 @@ pub trait SecretStore: SimpleSecretStore {
/// Signs a message with raw secret. /// Signs a message with raw secret.
fn sign_with_secret(&self, secret: &OpaqueSecret, message: &Message) -> Result<Signature, Error> { fn sign_with_secret(&self, secret: &OpaqueSecret, message: &Message) -> Result<Signature, Error> {
Ok(::ethkey::sign(&secret.0, message)?) Ok(crypto::publickey::sign(&secret.0, message)?)
} }
/// Imports presale wallet /// Imports presale wallet
@@ -118,7 +119,7 @@ pub trait SecretStore: SimpleSecretStore {
/// Imports existing JSON wallet /// Imports existing JSON wallet
fn import_wallet(&self, vault: SecretVaultRef, json: &[u8], password: &Password, gen_id: bool) -> Result<StoreAccountRef, Error>; fn import_wallet(&self, vault: SecretVaultRef, json: &[u8], password: &Password, gen_id: bool) -> Result<StoreAccountRef, Error>;
/// Copies account between stores and vaults. /// Copies account between stores and vaults.
fn copy_account(&self, new_store: &SimpleSecretStore, new_vault: SecretVaultRef, account: &StoreAccountRef, password: &Password, new_password: &Password) -> Result<(), Error>; fn copy_account(&self, new_store: &dyn SimpleSecretStore, new_vault: SecretVaultRef, account: &StoreAccountRef, password: &Password, new_password: &Password) -> Result<(), Error>;
/// Checks if password matches given account. /// Checks if password matches given account.
fn test_password(&self, account: &StoreAccountRef, password: &Password) -> Result<bool, Error>; fn test_password(&self, account: &StoreAccountRef, password: &Password) -> Result<bool, Error>;

View File

@@ -1,27 +1,28 @@
// Copyright 2015-2019 Parity Technologies (UK) Ltd. // Copyright 2015-2020 Parity Technologies (UK) Ltd.
// This file is part of Parity Ethereum. // This file is part of Open Ethereum.
// Parity Ethereum is free software: you can redistribute it and/or modify // Open Ethereum is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or // the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version. // (at your option) any later version.
// Parity Ethereum is distributed in the hope that it will be useful, // Open Ethereum is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details. // GNU General Public License for more details.
// You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
// along with Parity Ethereum. If not, see <http://www.gnu.org/licenses/>. // along with Open Ethereum. If not, see <http://www.gnu.org/licenses/>.
extern crate rand; extern crate rand;
extern crate ethstore; extern crate ethstore;
extern crate ethereum_types; extern crate ethereum_types;
extern crate parity_crypto;
mod util; mod util;
use ethstore::{EthStore, SimpleSecretStore, SecretVaultRef, StoreAccountRef}; use ethstore::{EthStore, SimpleSecretStore, SecretVaultRef, StoreAccountRef};
use ethstore::ethkey::{Random, Generator, Secret, KeyPair, verify_address}; use parity_crypto::publickey::{Random, Generator, Secret, KeyPair, verify_address};
use ethstore::accounts_dir::RootDiskDirectory; use ethstore::accounts_dir::RootDiskDirectory;
use util::TransientDir; use util::TransientDir;
use ethereum_types::Address; use ethereum_types::Address;
@@ -41,7 +42,7 @@ fn secret_store_open_not_existing() {
} }
fn random_secret() -> Secret { fn random_secret() -> Secret {
Random.generate().unwrap().secret().clone() Random.generate().secret().clone()
} }
#[test] #[test]
@@ -61,9 +62,10 @@ fn secret_store_sign() {
let store = EthStore::open(Box::new(dir)).unwrap(); let store = EthStore::open(Box::new(dir)).unwrap();
assert!(store.insert_account(SecretVaultRef::Root, random_secret(), &"".into()).is_ok()); assert!(store.insert_account(SecretVaultRef::Root, random_secret(), &"".into()).is_ok());
let accounts = store.accounts().unwrap(); let accounts = store.accounts().unwrap();
let message = [1u8; 32].into();
assert_eq!(accounts.len(), 1); assert_eq!(accounts.len(), 1);
assert!(store.sign(&accounts[0], &"".into(), &Default::default()).is_ok()); assert!(store.sign(&accounts[0], &"".into(), &message).is_ok());
assert!(store.sign(&accounts[0], &"1".into(), &Default::default()).is_err()); assert!(store.sign(&accounts[0], &"1".into(), &message).is_err());
} }
#[test] #[test]
@@ -72,11 +74,12 @@ fn secret_store_change_password() {
let store = EthStore::open(Box::new(dir)).unwrap(); let store = EthStore::open(Box::new(dir)).unwrap();
assert!(store.insert_account(SecretVaultRef::Root, random_secret(), &"".into()).is_ok()); assert!(store.insert_account(SecretVaultRef::Root, random_secret(), &"".into()).is_ok());
let accounts = store.accounts().unwrap(); let accounts = store.accounts().unwrap();
let message = [1u8; 32].into();
assert_eq!(accounts.len(), 1); assert_eq!(accounts.len(), 1);
assert!(store.sign(&accounts[0], &"".into(), &Default::default()).is_ok()); assert!(store.sign(&accounts[0], &"".into(), &message).is_ok());
assert!(store.change_password(&accounts[0], &"".into(), &"1".into()).is_ok()); assert!(store.change_password(&accounts[0], &"".into(), &"1".into()).is_ok());
assert!(store.sign(&accounts[0], &"".into(), &Default::default()).is_err()); assert!(store.sign(&accounts[0], &"".into(), &message).is_err());
assert!(store.sign(&accounts[0], &"1".into(), &Default::default()).is_ok()); assert!(store.sign(&accounts[0], &"1".into(), &message).is_ok());
} }
#[test] #[test]
@@ -94,7 +97,7 @@ fn secret_store_remove_account() {
fn test_path() -> &'static str { fn test_path() -> &'static str {
match ::std::fs::metadata("ethstore") { match ::std::fs::metadata("ethstore") {
Ok(_) => "ethstore/tests/res/geth_keystore", Ok(_) => "ethstore/tests/res/geth_keystore",
Err(_) => "tests/res/geth_keystore", Err(_) => "tests/res/geth_keystore",
} }
} }
@@ -147,7 +150,7 @@ fn test_decrypting_files_with_short_ciphertext() {
StoreAccountRef::root(Address::from_str("d1e64e5480bfaf733ba7d48712decb8227797a4e").unwrap()), StoreAccountRef::root(Address::from_str("d1e64e5480bfaf733ba7d48712decb8227797a4e").unwrap()),
]); ]);
let message = Default::default(); let message = [1u8; 32].into();
let s1 = store.sign(&accounts[0], &"foo".into(), &message).unwrap(); let s1 = store.sign(&accounts[0], &"foo".into(), &message).unwrap();
let s2 = store.sign(&accounts[1], &"foo".into(), &message).unwrap(); let s2 = store.sign(&accounts[1], &"foo".into(), &message).unwrap();

View File

@@ -1,18 +1,18 @@
// Copyright 2015-2019 Parity Technologies (UK) Ltd. // Copyright 2015-2020 Parity Technologies (UK) Ltd.
// This file is part of Parity Ethereum. // This file is part of Open Ethereum.
// Parity Ethereum is free software: you can redistribute it and/or modify // Open Ethereum is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or // the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version. // (at your option) any later version.
// Parity Ethereum is distributed in the hope that it will be useful, // Open Ethereum is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details. // GNU General Public License for more details.
// You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
// along with Parity Ethereum. If not, see <http://www.gnu.org/licenses/>. // along with Open Ethereum. If not, see <http://www.gnu.org/licenses/>.
mod transient_dir; mod transient_dir;

View File

@@ -1,18 +1,18 @@
// Copyright 2015-2019 Parity Technologies (UK) Ltd. // Copyright 2015-2020 Parity Technologies (UK) Ltd.
// This file is part of Parity Ethereum. // This file is part of Open Ethereum.
// Parity Ethereum is free software: you can redistribute it and/or modify // Open Ethereum is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or // the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version. // (at your option) any later version.
// Parity Ethereum is distributed in the hope that it will be useful, // Open Ethereum is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details. // GNU General Public License for more details.
// You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
// along with Parity Ethereum. If not, see <http://www.gnu.org/licenses/>. // along with Open Ethereum. If not, see <http://www.gnu.org/licenses/>.
use std::path::PathBuf; use std::path::PathBuf;
use std::{env, fs}; use std::{env, fs};
@@ -21,7 +21,7 @@ use ethstore::accounts_dir::{KeyDirectory, RootDiskDirectory};
use ethstore::{Error, SafeAccount}; use ethstore::{Error, SafeAccount};
pub fn random_dir() -> PathBuf { pub fn random_dir() -> PathBuf {
let mut rng = OsRng::new().unwrap(); let mut rng = OsRng;
let mut dir = env::temp_dir(); let mut dir = env::temp_dir();
dir.push(format!("{:x}-{:x}", rng.next_u64(), rng.next_u64())); dir.push(format!("{:x}-{:x}", rng.next_u64(), rng.next_u64()));
dir dir

View File

@@ -1,18 +1,18 @@
// Copyright 2015-2019 Parity Technologies (UK) Ltd. // Copyright 2015-2020 Parity Technologies (UK) Ltd.
// This file is part of Parity Ethereum. // This file is part of Open Ethereum.
// Parity Ethereum is free software: you can redistribute it and/or modify // Open Ethereum is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or // the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version. // (at your option) any later version.
// Parity Ethereum is distributed in the hope that it will be useful, // Open Ethereum is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details. // GNU General Public License for more details.
// You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
// along with Parity Ethereum. If not, see <http://www.gnu.org/licenses/>. // along with Open Ethereum. If not, see <http://www.gnu.org/licenses/>.
//! Account Metadata //! Account Metadata
@@ -21,7 +21,8 @@ use std::{
time::Instant, time::Instant,
}; };
use ethkey::{Address, Password}; use parity_crypto::publickey::Address;
use ethkey::Password;
use serde_derive::{Serialize, Deserialize}; use serde_derive::{Serialize, Deserialize};
use serde_json; use serde_json;
@@ -70,4 +71,3 @@ impl AccountMeta {
serde_json::to_writer(writer, m) serde_json::to_writer(writer, m)
} }
} }

View File

@@ -1,18 +1,18 @@
// Copyright 2015-2018 Parity Technologies (UK) Ltd. // Copyright 2015-2020 Parity Technologies (UK) Ltd.
// This file is part of Parity. // This file is part of Open Ethereum.
// Parity is free software: you can redistribute it and/or modify // Open Ethereum is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or // the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version. // (at your option) any later version.
// Parity is distributed in the hope that it will be useful, // Open Ethereum is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details. // GNU General Public License for more details.
// You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
// along with Parity. If not, see <http://www.gnu.org/licenses/>. // along with Open Ethereum. If not, see <http://www.gnu.org/licenses/>.
use std::fmt; use std::fmt;

View File

@@ -1,18 +1,18 @@
// Copyright 2015-2019 Parity Technologies (UK) Ltd. // Copyright 2015-2020 Parity Technologies (UK) Ltd.
// This file is part of Parity Ethereum. // This file is part of Open Ethereum.
// Parity Ethereum is free software: you can redistribute it and/or modify // Open Ethereum is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or // the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version. // (at your option) any later version.
// Parity Ethereum is distributed in the hope that it will be useful, // Open Ethereum is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details. // GNU General Public License for more details.
// You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
// along with Parity Ethereum. If not, see <http://www.gnu.org/licenses/>. // along with Open Ethereum. If not, see <http://www.gnu.org/licenses/>.
#![warn(missing_docs)] #![warn(missing_docs)]
@@ -28,7 +28,8 @@ use self::stores::AddressBook;
use std::collections::HashMap; use std::collections::HashMap;
use std::time::{Instant, Duration}; use std::time::{Instant, Duration};
use ethkey::{Address, Message, Public, Secret, Password, Random, Generator}; use ethkey::Password;
use parity_crypto::publickey::{Address, Message, Public, Secret, Random, Generator, Signature};
use ethstore::accounts_dir::MemoryDirectory; use ethstore::accounts_dir::MemoryDirectory;
use ethstore::{ use ethstore::{
SimpleSecretStore, SecretStore, EthStore, EthMultiStore, SimpleSecretStore, SecretStore, EthStore, EthMultiStore,
@@ -37,7 +38,6 @@ use ethstore::{
use log::warn; use log::warn;
use parking_lot::RwLock; use parking_lot::RwLock;
pub use ethkey::Signature;
pub use ethstore::{Derivation, IndexDerivation, KeyFile, Error}; pub use ethstore::{Derivation, IndexDerivation, KeyFile, Error};
pub use self::account_data::AccountMeta; pub use self::account_data::AccountMeta;
@@ -64,7 +64,7 @@ pub struct AccountProvider {
/// Address book. /// Address book.
address_book: RwLock<AddressBook>, address_book: RwLock<AddressBook>,
/// Accounts on disk /// Accounts on disk
sstore: Box<SecretStore>, sstore: Box<dyn SecretStore>,
/// Accounts unlocked with rolling tokens /// Accounts unlocked with rolling tokens
transient_sstore: EthMultiStore, transient_sstore: EthMultiStore,
/// When unlocking account permanently we additionally keep a raw secret in memory /// When unlocking account permanently we additionally keep a raw secret in memory
@@ -80,7 +80,7 @@ fn transient_sstore() -> EthMultiStore {
impl AccountProvider { impl AccountProvider {
/// Creates new account provider. /// Creates new account provider.
pub fn new(sstore: Box<SecretStore>, settings: AccountProviderSettings) -> Self { pub fn new(sstore: Box<dyn SecretStore>, settings: AccountProviderSettings) -> Self {
if let Ok(accounts) = sstore.accounts() { if let Ok(accounts) = sstore.accounts() {
for account in accounts.into_iter().filter(|a| settings.blacklisted_accounts.contains(&a.address)) { for account in accounts.into_iter().filter(|a| settings.blacklisted_accounts.contains(&a.address)) {
warn!("Local Account {} has a blacklisted (known to be weak) address and will be ignored", warn!("Local Account {} has a blacklisted (known to be weak) address and will be ignored",
@@ -125,7 +125,7 @@ impl AccountProvider {
/// Creates new random account and returns address and public key /// Creates new random account and returns address and public key
pub fn new_account_and_public(&self, password: &Password) -> Result<(Address, Public), Error> { pub fn new_account_and_public(&self, password: &Password) -> Result<(Address, Public), Error> {
let acc = Random.generate().expect("secp context has generation capabilities; qed"); let acc = Random.generate();
let public = acc.public().clone(); let public = acc.public().clone();
let secret = acc.secret().clone(); let secret = acc.secret().clone();
let account = self.sstore.insert_account(SecretVaultRef::Root, secret, password)?; let account = self.sstore.insert_account(SecretVaultRef::Root, secret, password)?;
@@ -290,9 +290,10 @@ impl AccountProvider {
let secret = self.sstore.raw_secret(&account, &password)?; let secret = self.sstore.raw_secret(&account, &password)?;
self.unlocked_secrets.write().insert(account.clone(), secret); self.unlocked_secrets.write().insert(account.clone(), secret);
} else { } else {
// verify password by signing dump message // verify password by signing a dummy message
// result may be discarded // result may be discarded
let _ = self.sstore.sign(&account, &password, &Default::default())?; let dummy_msg = [1u8;32].into();
let _ = self.sstore.sign(&account, &password, &dummy_msg)?;
} }
let data = AccountData { unlock, password }; let data = AccountData { unlock, password };
@@ -503,24 +504,25 @@ impl AccountProvider {
mod tests { mod tests {
use super::{AccountProvider, Unlock}; use super::{AccountProvider, Unlock};
use std::time::{Duration, Instant}; use std::time::{Duration, Instant};
use ethkey::{Generator, Random, Address}; use parity_crypto::publickey::{Generator, Random, Address};
use ethstore::{StoreAccountRef, Derivation}; use ethstore::{StoreAccountRef, Derivation};
use ethereum_types::H256; use ethereum_types::H256;
#[test] #[test]
fn unlock_account_temp() { fn unlock_account_temp() {
let kp = Random.generate().unwrap(); let kp = Random.generate();
let ap = AccountProvider::transient_provider(); let ap = AccountProvider::transient_provider();
let dummy_msg = [1u8; 32].into();
assert!(ap.insert_account(kp.secret().clone(), &"test".into()).is_ok()); assert!(ap.insert_account(kp.secret().clone(), &"test".into()).is_ok());
assert!(ap.unlock_account_temporarily(kp.address(), "test1".into()).is_err()); assert!(ap.unlock_account_temporarily(kp.address(), "test1".into()).is_err());
assert!(ap.unlock_account_temporarily(kp.address(), "test".into()).is_ok()); assert!(ap.unlock_account_temporarily(kp.address(), "test".into()).is_ok());
assert!(ap.sign(kp.address(), None, Default::default()).is_ok()); assert!(ap.sign(kp.address(), None, dummy_msg).is_ok());
assert!(ap.sign(kp.address(), None, Default::default()).is_err()); assert!(ap.sign(kp.address(), None, dummy_msg).is_err());
} }
#[test] #[test]
fn derived_account_nosave() { fn derived_account_nosave() {
let kp = Random.generate().unwrap(); let kp = Random.generate();
let ap = AccountProvider::transient_provider(); let ap = AccountProvider::transient_provider();
assert!(ap.insert_account(kp.secret().clone(), &"base".into()).is_ok()); assert!(ap.insert_account(kp.secret().clone(), &"base".into()).is_ok());
assert!(ap.unlock_account_permanently(kp.address(), "base".into()).is_ok()); assert!(ap.unlock_account_permanently(kp.address(), "base".into()).is_ok());
@@ -538,7 +540,7 @@ mod tests {
#[test] #[test]
fn derived_account_save() { fn derived_account_save() {
let kp = Random.generate().unwrap(); let kp = Random.generate();
let ap = AccountProvider::transient_provider(); let ap = AccountProvider::transient_provider();
assert!(ap.insert_account(kp.secret().clone(), &"base".into()).is_ok()); assert!(ap.insert_account(kp.secret().clone(), &"base".into()).is_ok());
assert!(ap.unlock_account_permanently(kp.address(), "base".into()).is_ok()); assert!(ap.unlock_account_permanently(kp.address(), "base".into()).is_ok());
@@ -559,7 +561,7 @@ mod tests {
#[test] #[test]
fn derived_account_sign() { fn derived_account_sign() {
let kp = Random.generate().unwrap(); let kp = Random.generate();
let ap = AccountProvider::transient_provider(); let ap = AccountProvider::transient_provider();
assert!(ap.insert_account(kp.secret().clone(), &"base".into()).is_ok()); assert!(ap.insert_account(kp.secret().clone(), &"base".into()).is_ok());
assert!(ap.unlock_account_permanently(kp.address(), "base".into()).is_ok()); assert!(ap.unlock_account_permanently(kp.address(), "base".into()).is_ok());
@@ -573,7 +575,7 @@ mod tests {
ap.unlock_account_permanently(derived_addr, "base".into()) ap.unlock_account_permanently(derived_addr, "base".into())
.expect("Should be ok because account is saved and password is valid"); .expect("Should be ok because account is saved and password is valid");
let msg = Default::default(); let msg = [2u8; 32].into();
let signed_msg1 = ap.sign(derived_addr, None, msg) let signed_msg1 = ap.sign(derived_addr, None, msg)
.expect("Signing with existing unlocked account should not fail"); .expect("Signing with existing unlocked account should not fail");
let signed_msg2 = ap.sign_derived( let signed_msg2 = ap.sign_derived(
@@ -589,44 +591,48 @@ mod tests {
#[test] #[test]
fn unlock_account_perm() { fn unlock_account_perm() {
let kp = Random.generate().unwrap(); let kp = Random.generate();
let ap = AccountProvider::transient_provider(); let ap = AccountProvider::transient_provider();
let dummy_msg = [1u8; 32].into();
assert!(ap.insert_account(kp.secret().clone(), &"test".into()).is_ok()); assert!(ap.insert_account(kp.secret().clone(), &"test".into()).is_ok());
assert!(ap.unlock_account_permanently(kp.address(), "test1".into()).is_err()); assert!(ap.unlock_account_permanently(kp.address(), "test1".into()).is_err());
assert!(ap.unlock_account_permanently(kp.address(), "test".into()).is_ok()); assert!(ap.unlock_account_permanently(kp.address(), "test".into()).is_ok());
assert!(ap.sign(kp.address(), None, Default::default()).is_ok()); assert!(ap.sign(kp.address(), None, dummy_msg).is_ok());
assert!(ap.sign(kp.address(), None, Default::default()).is_ok()); assert!(ap.sign(kp.address(), None, dummy_msg).is_ok());
assert!(ap.unlock_account_temporarily(kp.address(), "test".into()).is_ok()); assert!(ap.unlock_account_temporarily(kp.address(), "test".into()).is_ok());
assert!(ap.sign(kp.address(), None, Default::default()).is_ok()); assert!(ap.sign(kp.address(), None, dummy_msg).is_ok());
assert!(ap.sign(kp.address(), None, Default::default()).is_ok()); assert!(ap.sign(kp.address(), None, dummy_msg).is_ok());
} }
#[test] #[test]
fn unlock_account_timer() { fn unlock_account_timer() {
let kp = Random.generate().unwrap(); let kp = Random.generate();
let ap = AccountProvider::transient_provider(); let ap = AccountProvider::transient_provider();
let dummy_msg = [1u8; 32].into();
assert!(ap.insert_account(kp.secret().clone(), &"test".into()).is_ok()); assert!(ap.insert_account(kp.secret().clone(), &"test".into()).is_ok());
assert!(ap.unlock_account_timed(kp.address(), "test1".into(), Duration::from_secs(60)).is_err()); assert!(ap.unlock_account_timed(kp.address(), "test1".into(), Duration::from_secs(60)).is_err());
assert!(ap.unlock_account_timed(kp.address(), "test".into(), Duration::from_secs(60)).is_ok()); assert!(ap.unlock_account_timed(kp.address(), "test".into(), Duration::from_secs(60)).is_ok());
assert!(ap.sign(kp.address(), None, Default::default()).is_ok()); assert!(ap.sign(kp.address(), None, dummy_msg).is_ok());
ap.unlocked.write().get_mut(&StoreAccountRef::root(kp.address())).unwrap().unlock = Unlock::Timed(Instant::now()); ap.unlocked.write().get_mut(&StoreAccountRef::root(kp.address())).unwrap().unlock = Unlock::Timed(Instant::now());
assert!(ap.sign(kp.address(), None, Default::default()).is_err()); assert!(ap.sign(kp.address(), None, dummy_msg).is_err());
} }
#[test] #[test]
fn should_sign_and_return_token() { fn should_sign_and_return_token() {
// given // given
let kp = Random.generate().unwrap(); let kp = Random.generate();
let ap = AccountProvider::transient_provider(); let ap = AccountProvider::transient_provider();
let dummy_msg = [1u8; 32].into();
assert!(ap.insert_account(kp.secret().clone(), &"test".into()).is_ok()); assert!(ap.insert_account(kp.secret().clone(), &"test".into()).is_ok());
// when // when
let (_signature, token) = ap.sign_with_token(kp.address(), "test".into(), Default::default()).unwrap(); let (_signature, token) = ap.sign_with_token(kp.address(), "test".into(), dummy_msg).unwrap();
// then // then
ap.sign_with_token(kp.address(), token.clone(), Default::default()) ap.sign_with_token(kp.address(), token.clone(), dummy_msg)
.expect("First usage of token should be correct."); .expect("First usage of token should be correct.");
assert!(ap.sign_with_token(kp.address(), token, Default::default()).is_err(), "Second usage of the same token should fail."); assert!(ap.sign_with_token(kp.address(), token, dummy_msg).is_err(), "Second usage of the same token should fail.");
} }
#[test] #[test]

View File

@@ -1,18 +1,18 @@
// Copyright 2015-2019 Parity Technologies (UK) Ltd. // Copyright 2015-2020 Parity Technologies (UK) Ltd.
// This file is part of Parity Ethereum. // This file is part of Open Ethereum.
// Parity Ethereum is free software: you can redistribute it and/or modify // Open Ethereum is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or // the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version. // (at your option) any later version.
// Parity Ethereum is distributed in the hope that it will be useful, // Open Ethereum is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details. // GNU General Public License for more details.
// You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
// along with Parity Ethereum. If not, see <http://www.gnu.org/licenses/>. // along with Open Ethereum. If not, see <http://www.gnu.org/licenses/>.
//! Address Book Store //! Address Book Store
@@ -20,7 +20,7 @@ use std::{fs, fmt, hash, ops};
use std::collections::HashMap; use std::collections::HashMap;
use std::path::{Path, PathBuf}; use std::path::{Path, PathBuf};
use ethkey::Address; use parity_crypto::publickey::Address;
use log::{trace, warn}; use log::{trace, warn};
use crate::AccountMeta; use crate::AccountMeta;
@@ -130,7 +130,7 @@ impl<K: hash::Hash + Eq, V> DiskMap<K, V> {
trace!(target: "diskmap", "revert {:?}", self.path); trace!(target: "diskmap", "revert {:?}", self.path);
let _ = fs::File::open(self.path.clone()) let _ = fs::File::open(self.path.clone())
.map_err(|e| trace!(target: "diskmap", "Couldn't open disk map: {}", e)) .map_err(|e| trace!(target: "diskmap", "Couldn't open disk map: {}", e))
.and_then(|f| read(f).map_err(|e| warn!(target: "diskmap", "Couldn't read disk map: {}", e))) .and_then(|f| read(f).map_err(|e| warn!(target: "diskmap", "Couldn't read disk map at: {:?} {}", self.path, e)))
.and_then(|m| { .and_then(|m| {
self.cache = m; self.cache = m;
Ok(()) Ok(())
@@ -144,9 +144,9 @@ impl<K: hash::Hash + Eq, V> DiskMap<K, V> {
if self.transient { return; } if self.transient { return; }
trace!(target: "diskmap", "save {:?}", self.path); trace!(target: "diskmap", "save {:?}", self.path);
let _ = fs::File::create(self.path.clone()) let _ = fs::File::create(self.path.clone())
.map_err(|e| warn!(target: "diskmap", "Couldn't open disk map for writing: {}", e)) .map_err(|e| warn!(target: "diskmap", "Couldn't open disk map for writing at: {:?} {}", self.path, e))
.and_then(|mut f| { .and_then(|mut f| {
write(&self.cache, &mut f).map_err(|e| warn!(target: "diskmap", "Couldn't write to disk map: {}", e)) write(&self.cache, &mut f).map_err(|e| warn!(target: "diskmap", "Couldn't write to disk map at: {:?} {}", self.path, e))
}); });
} }
} }
@@ -155,12 +155,12 @@ impl<K: hash::Hash + Eq, V> DiskMap<K, V> {
mod tests { mod tests {
use super::{AddressBook, Address}; use super::{AddressBook, Address};
use std::collections::HashMap; use std::collections::HashMap;
use tempdir::TempDir; use tempfile::TempDir;
use crate::account_data::AccountMeta; use crate::account_data::AccountMeta;
#[test] #[test]
fn should_save_and_reload_address_book() { fn should_save_and_reload_address_book() {
let tempdir = TempDir::new("").unwrap(); let tempdir = TempDir::new().unwrap();
let mut b = AddressBook::new(tempdir.path()); let mut b = AddressBook::new(tempdir.path());
b.set_name(Address::from_low_u64_be(1), "One".to_owned()); b.set_name(Address::from_low_u64_be(1), "One".to_owned());
b.set_meta(Address::from_low_u64_be(1), "{1:1}".to_owned()); b.set_meta(Address::from_low_u64_be(1), "{1:1}".to_owned());
@@ -172,7 +172,7 @@ mod tests {
#[test] #[test]
fn should_remove_address() { fn should_remove_address() {
let tempdir = TempDir::new("").unwrap(); let tempdir = TempDir::new().unwrap();
let mut b = AddressBook::new(tempdir.path()); let mut b = AddressBook::new(tempdir.path());
b.set_name(Address::from_low_u64_be(1), "One".to_owned()); b.set_name(Address::from_low_u64_be(1), "One".to_owned());

View File

@@ -1,5 +1,5 @@
[package] [package]
description = "Parity Ethereum Chain Specification" description = "OpenEthereum Chain Specification"
name = "chainspec" name = "chainspec"
version = "0.1.0" version = "0.1.0"
authors = ["Marek Kotewicz <marek@parity.io>"] authors = ["Marek Kotewicz <marek@parity.io>"]

View File

@@ -1,18 +1,18 @@
// Copyright 2015-2019 Parity Technologies (UK) Ltd. // Copyright 2015-2020 Parity Technologies (UK) Ltd.
// This file is part of Parity Ethereum. // This file is part of Open Ethereum.
// Parity Ethereum is free software: you can redistribute it and/or modify // Open Ethereum is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or // the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version. // (at your option) any later version.
// Parity Ethereum is distributed in the hope that it will be useful, // Open Ethereum is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details. // GNU General Public License for more details.
// You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
// along with Parity Ethereum. If not, see <http://www.gnu.org/licenses/>. // along with Open Ethereum. If not, see <http://www.gnu.org/licenses/>.
extern crate serde_json; extern crate serde_json;
extern crate ethjson; extern crate ethjson;

View File

@@ -1,13 +1,13 @@
[package] [package]
description = "Parity Ethereum CLI Signer Tool" description = "OpenEthereum CLI Signer Tool"
homepage = "http://parity.io" repository = "https://github.com/openethereum/openethereum"
license = "GPL-3.0" license = "GPL-3.0"
name = "cli-signer" name = "cli-signer"
version = "1.4.0" version = "1.4.0"
authors = ["Parity <admin@parity.io>"] authors = ["Parity <admin@parity.io>"]
[dependencies] [dependencies]
ethereum-types = "0.6.0" ethereum-types = "0.9.0"
futures = "0.1" futures = "0.1"
rpassword = "1.0" rpassword = "1.0"
parity-rpc = { path = "../rpc" } parity-rpc = { path = "../rpc" }

View File

@@ -1,21 +1,21 @@
[package] [package]
description = "Parity Ethereum RPC Client" description = "OpenEthereum RPC Client"
homepage = "http://parity.io" repository = "https://github.com/openethereum/openethereum"
license = "GPL-3.0" license = "GPL-3.0"
name = "parity-rpc-client" name = "parity-rpc-client"
version = "1.4.0" version = "1.4.0"
authors = ["Parity <admin@parity.io>"] authors = ["Parity <admin@parity.io>"]
[dependencies] [dependencies]
ethereum-types = "0.6.0" ethereum-types = "0.9.0"
futures = "0.1" futures = "0.1"
log = "0.4" log = "0.4"
serde = "1.0" serde = "1.0"
serde_json = "1.0" serde_json = "1.0"
url = "1.2.0" url = "2.1.1"
matches = "0.1" matches = "0.1"
parking_lot = "0.7" parking_lot = "0.10.0"
jsonrpc-core = "12.0.0" jsonrpc-core = "14.0.3"
jsonrpc-ws-server = "12.0.0" jsonrpc-ws-server = "14.0.3"
parity-rpc = { path = "../../rpc" } parity-rpc = { path = "../../rpc" }
keccak-hash = "0.2.0" keccak-hash = "0.5.0"

View File

@@ -1,18 +1,18 @@
// Copyright 2015-2019 Parity Technologies (UK) Ltd. // Copyright 2015-2020 Parity Technologies (UK) Ltd.
// This file is part of Parity Ethereum. // This file is part of Open Ethereum.
// Parity Ethereum is free software: you can redistribute it and/or modify // Open Ethereum is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or // the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version. // (at your option) any later version.
// Parity Ethereum is distributed in the hope that it will be useful, // Open Ethereum is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details. // GNU General Public License for more details.
// You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
// along with Parity Ethereum. If not, see <http://www.gnu.org/licenses/>. // along with Open Ethereum. If not, see <http://www.gnu.org/licenses/>.
use std::fmt::{Debug, Formatter, Error as FmtError}; use std::fmt::{Debug, Formatter, Error as FmtError};
use std::io::{BufReader, BufRead}; use std::io::{BufReader, BufRead};

View File

@@ -1,18 +1,18 @@
// Copyright 2015-2019 Parity Technologies (UK) Ltd. // Copyright 2015-2020 Parity Technologies (UK) Ltd.
// This file is part of Parity Ethereum. // This file is part of Open Ethereum.
// Parity Ethereum is free software: you can redistribute it and/or modify // Open Ethereum is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or // the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version. // (at your option) any later version.
// Parity Ethereum is distributed in the hope that it will be useful, // Open Ethereum is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details. // GNU General Public License for more details.
// You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
// along with Parity Ethereum. If not, see <http://www.gnu.org/licenses/>. // along with Open Ethereum. If not, see <http://www.gnu.org/licenses/>.
pub mod client; pub mod client;
pub mod signer_client; pub mod signer_client;
@@ -36,7 +36,7 @@ extern crate log;
extern crate matches; extern crate matches;
/// Boxed future response. /// Boxed future response.
pub type BoxFuture<T, E> = Box<futures::Future<Item=T, Error=E> + Send>; pub type BoxFuture<T, E> = Box<dyn futures::Future<Item=T, Error=E> + Send>;
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {

View File

@@ -1,18 +1,18 @@
// Copyright 2015-2019 Parity Technologies (UK) Ltd. // Copyright 2015-2020 Parity Technologies (UK) Ltd.
// This file is part of Parity Ethereum. // This file is part of Open Ethereum.
// Parity Ethereum is free software: you can redistribute it and/or modify // Open Ethereum is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or // the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version. // (at your option) any later version.
// Parity Ethereum is distributed in the hope that it will be useful, // Open Ethereum is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details. // GNU General Public License for more details.
// You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
// along with Parity Ethereum. If not, see <http://www.gnu.org/licenses/>. // along with Open Ethereum. If not, see <http://www.gnu.org/licenses/>.
use client::{Rpc, RpcError}; use client::{Rpc, RpcError};
use ethereum_types::U256; use ethereum_types::U256;

View File

@@ -1,18 +1,18 @@
// Copyright 2015-2019 Parity Technologies (UK) Ltd. // Copyright 2015-2020 Parity Technologies (UK) Ltd.
// This file is part of Parity Ethereum. // This file is part of Open Ethereum.
// Parity Ethereum is free software: you can redistribute it and/or modify // Open Ethereum is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or // the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version. // (at your option) any later version.
// Parity Ethereum is distributed in the hope that it will be useful, // Open Ethereum is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of // but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details. // GNU General Public License for more details.
// You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
// along with Parity Ethereum. If not, see <http://www.gnu.org/licenses/>. // along with Open Ethereum. If not, see <http://www.gnu.org/licenses/>.
extern crate ethereum_types; extern crate ethereum_types;
extern crate futures; extern crate futures;

View File

@@ -1,228 +1,228 @@
Note: Parity 0.9 reached End-of-Life on 2016-05-02 (EOL). Note: Parity 0.9 reached End-of-Life on 2016-05-02 (EOL).
## Parity [beta-0.9.1](https://github.com/paritytech/parity/releases/tag/beta-0.9.1) (2016-02-16) ## Parity [beta-0.9.1](https://github.com/openethereum/openethereum/releases/tag/beta-0.9.1) (2016-02-16)
Homestead transition block changed to 1100000. Homestead transition block changed to 1100000.
- Beta patch to 0.9.1 [#445](https://github.com/paritytech/parity/pull/445) - Beta patch to 0.9.1 [#445](https://github.com/openethereum/openethereum/pull/445)
- Delay homestead transition [#430](https://github.com/paritytech/parity/pull/430) - Delay homestead transition [#430](https://github.com/openethereum/openethereum/pull/430)
- (BETA) https link in the installer (?) [#392](https://github.com/paritytech/parity/pull/392) - (BETA) https link in the installer (?) [#392](https://github.com/openethereum/openethereum/pull/392)
- beta: Check for handshake expiration before attempting replace [#377](https://github.com/paritytech/parity/pull/377) - beta: Check for handshake expiration before attempting replace [#377](https://github.com/openethereum/openethereum/pull/377)
## Parity [beta-0.9](https://github.com/paritytech/parity/releases/tag/beta-0.9) (2016-02-08) ## Parity [beta-0.9](https://github.com/openethereum/openethereum/releases/tag/beta-0.9) (2016-02-08)
First Parity Beta 0.9 released. First Parity Beta 0.9 released.
- Panic on missing counters; Client cleanup [#368](https://github.com/paritytech/parity/pull/368) - Panic on missing counters; Client cleanup [#368](https://github.com/openethereum/openethereum/pull/368)
- Update README for new PPAs. [#369](https://github.com/paritytech/parity/pull/369) - Update README for new PPAs. [#369](https://github.com/openethereum/openethereum/pull/369)
- block_queue::clear should be more thorough [#365](https://github.com/paritytech/parity/pull/365) - block_queue::clear should be more thorough [#365](https://github.com/openethereum/openethereum/pull/365)
- Fixed an issue with forked counters [#363](https://github.com/paritytech/parity/pull/363) - Fixed an issue with forked counters [#363](https://github.com/openethereum/openethereum/pull/363)
- Install parity [#362](https://github.com/paritytech/parity/pull/362) - Install parity [#362](https://github.com/openethereum/openethereum/pull/362)
- DB directory versioning [#358](https://github.com/paritytech/parity/pull/358) - DB directory versioning [#358](https://github.com/openethereum/openethereum/pull/358)
- Raise FD limit for MacOS [#357](https://github.com/paritytech/parity/pull/357) - Raise FD limit for MacOS [#357](https://github.com/openethereum/openethereum/pull/357)
- Travis slack integration. [#356](https://github.com/paritytech/parity/pull/356) - Travis slack integration. [#356](https://github.com/openethereum/openethereum/pull/356)
- SignedTransaction structure [#350](https://github.com/paritytech/parity/pull/350) - SignedTransaction structure [#350](https://github.com/openethereum/openethereum/pull/350)
- License [#354](https://github.com/paritytech/parity/pull/354) - License [#354](https://github.com/openethereum/openethereum/pull/354)
- Performance optimizations [#353](https://github.com/paritytech/parity/pull/353) - Performance optimizations [#353](https://github.com/openethereum/openethereum/pull/353)
- Gitter in README. [#355](https://github.com/paritytech/parity/pull/355) - Gitter in README. [#355](https://github.com/openethereum/openethereum/pull/355)
- test efforts, receipt requests [#352](https://github.com/paritytech/parity/pull/352) - test efforts, receipt requests [#352](https://github.com/openethereum/openethereum/pull/352)
- sync tests setup & local module coverage [#348](https://github.com/paritytech/parity/pull/348) - sync tests setup & local module coverage [#348](https://github.com/openethereum/openethereum/pull/348)
- install parity script [#347](https://github.com/paritytech/parity/pull/347) - install parity script [#347](https://github.com/openethereum/openethereum/pull/347)
- evmjit homestead merge [#342](https://github.com/paritytech/parity/pull/342) - evmjit homestead merge [#342](https://github.com/openethereum/openethereum/pull/342)
- Fixed sync stalling on fork [#343](https://github.com/paritytech/parity/pull/343) - Fixed sync stalling on fork [#343](https://github.com/openethereum/openethereum/pull/343)
- Remerge 264 [#334](https://github.com/paritytech/parity/pull/334) - Remerge 264 [#334](https://github.com/openethereum/openethereum/pull/334)
- Ethsync tests bfix [#339](https://github.com/paritytech/parity/pull/339) - Ethsync tests bfix [#339](https://github.com/openethereum/openethereum/pull/339)
- Fix default options. [#335](https://github.com/paritytech/parity/pull/335) - Fix default options. [#335](https://github.com/openethereum/openethereum/pull/335)
- sync queue limit hotfix [#338](https://github.com/paritytech/parity/pull/338) - sync queue limit hotfix [#338](https://github.com/openethereum/openethereum/pull/338)
- Network tests, separate local coverage for utils [#333](https://github.com/paritytech/parity/pull/333) - Network tests, separate local coverage for utils [#333](https://github.com/openethereum/openethereum/pull/333)
- fix parity version so netstats can parse it [#332](https://github.com/paritytech/parity/pull/332) - fix parity version so netstats can parse it [#332](https://github.com/openethereum/openethereum/pull/332)
- reveal surprise [#331](https://github.com/paritytech/parity/pull/331) - reveal surprise [#331](https://github.com/openethereum/openethereum/pull/331)
- Revert removal of `new_code`. [#330](https://github.com/paritytech/parity/pull/330) - Revert removal of `new_code`. [#330](https://github.com/openethereum/openethereum/pull/330)
- Network mod tests first part [#329](https://github.com/paritytech/parity/pull/329) - Network mod tests first part [#329](https://github.com/openethereum/openethereum/pull/329)
- Look ma no `dead_code` [#323](https://github.com/paritytech/parity/pull/323) - Look ma no `dead_code` [#323](https://github.com/openethereum/openethereum/pull/323)
- Fixing JIT, Updating hook to run `ethcore` tests. [#326](https://github.com/paritytech/parity/pull/326) - Fixing JIT, Updating hook to run `ethcore` tests. [#326](https://github.com/openethereum/openethereum/pull/326)
- Final docs [#327](https://github.com/paritytech/parity/pull/327) - Final docs [#327](https://github.com/openethereum/openethereum/pull/327)
- update install-deps.sh [#316](https://github.com/paritytech/parity/pull/316) - update install-deps.sh [#316](https://github.com/openethereum/openethereum/pull/316)
- Finish all my docs. Fix previous test compilation. [#320](https://github.com/paritytech/parity/pull/320) - Finish all my docs. Fix previous test compilation. [#320](https://github.com/openethereum/openethereum/pull/320)
- Additional evm tests (extops, call, jumps) and some docs [#317](https://github.com/paritytech/parity/pull/317) - Additional evm tests (extops, call, jumps) and some docs [#317](https://github.com/openethereum/openethereum/pull/317)
- More documentation. [#318](https://github.com/paritytech/parity/pull/318) - More documentation. [#318](https://github.com/openethereum/openethereum/pull/318)
- Additional documentation. [#315](https://github.com/paritytech/parity/pull/315) - Additional documentation. [#315](https://github.com/openethereum/openethereum/pull/315)
- unused functions cleanup [#310](https://github.com/paritytech/parity/pull/310) - unused functions cleanup [#310](https://github.com/openethereum/openethereum/pull/310)
- update ethcore.github.io documentation automatically [#311](https://github.com/paritytech/parity/pull/311) - update ethcore.github.io documentation automatically [#311](https://github.com/openethereum/openethereum/pull/311)
- Another try with travis ci credentials [#314](https://github.com/paritytech/parity/pull/314) - Another try with travis ci credentials [#314](https://github.com/openethereum/openethereum/pull/314)
- Document some stuff. [#309](https://github.com/paritytech/parity/pull/309) - Document some stuff. [#309](https://github.com/openethereum/openethereum/pull/309)
- Check block parent on import; Peer timeouts [#303](https://github.com/paritytech/parity/pull/303) - Check block parent on import; Peer timeouts [#303](https://github.com/openethereum/openethereum/pull/303)
- Increasing coverage for evm. [#306](https://github.com/paritytech/parity/pull/306) - Increasing coverage for evm. [#306](https://github.com/openethereum/openethereum/pull/306)
- ethcore docs [#301](https://github.com/paritytech/parity/pull/301) - ethcore docs [#301](https://github.com/openethereum/openethereum/pull/301)
- Replacing secure token for deployment [#305](https://github.com/paritytech/parity/pull/305) - Replacing secure token for deployment [#305](https://github.com/openethereum/openethereum/pull/305)
- doc.sh [#299](https://github.com/paritytech/parity/pull/299) - doc.sh [#299](https://github.com/openethereum/openethereum/pull/299)
- Building beta-* and stable-* tags [#302](https://github.com/paritytech/parity/pull/302) - Building beta-* and stable-* tags [#302](https://github.com/openethereum/openethereum/pull/302)
- Deploying artifacts for tags (release/beta) [#300](https://github.com/paritytech/parity/pull/300) - Deploying artifacts for tags (release/beta) [#300](https://github.com/openethereum/openethereum/pull/300)
- cov.sh to show coverage locally [#298](https://github.com/paritytech/parity/pull/298) - cov.sh to show coverage locally [#298](https://github.com/openethereum/openethereum/pull/298)
- benchmark fixes [#297](https://github.com/paritytech/parity/pull/297) - benchmark fixes [#297](https://github.com/openethereum/openethereum/pull/297)
- Include JSONRPC CLI options. [#296](https://github.com/paritytech/parity/pull/296) - Include JSONRPC CLI options. [#296](https://github.com/openethereum/openethereum/pull/296)
- travis.yml fixes [#293](https://github.com/paritytech/parity/pull/293) - travis.yml fixes [#293](https://github.com/openethereum/openethereum/pull/293)
- Improve version string. [#295](https://github.com/paritytech/parity/pull/295) - Improve version string. [#295](https://github.com/openethereum/openethereum/pull/295)
- Fixed block queue test [#294](https://github.com/paritytech/parity/pull/294) - Fixed block queue test [#294](https://github.com/openethereum/openethereum/pull/294)
- Util docs [#292](https://github.com/paritytech/parity/pull/292) - Util docs [#292](https://github.com/openethereum/openethereum/pull/292)
- fixed building docs [#289](https://github.com/paritytech/parity/pull/289) - fixed building docs [#289](https://github.com/openethereum/openethereum/pull/289)
- update travis to build PRs only against master [#290](https://github.com/paritytech/parity/pull/290) - update travis to build PRs only against master [#290](https://github.com/openethereum/openethereum/pull/290)
- Coverage effort [#272](https://github.com/paritytech/parity/pull/272) - Coverage effort [#272](https://github.com/openethereum/openethereum/pull/272)
- updated docker containers [#288](https://github.com/paritytech/parity/pull/288) - updated docker containers [#288](https://github.com/openethereum/openethereum/pull/288)
- rpc module fixes [#287](https://github.com/paritytech/parity/pull/287) - rpc module fixes [#287](https://github.com/openethereum/openethereum/pull/287)
- Test for Receipt RLP. [#282](https://github.com/paritytech/parity/pull/282) - Test for Receipt RLP. [#282](https://github.com/openethereum/openethereum/pull/282)
- Building from source guide [#284](https://github.com/paritytech/parity/pull/284) - Building from source guide [#284](https://github.com/openethereum/openethereum/pull/284)
- Fixed neted empty list RLP encoding [#283](https://github.com/paritytech/parity/pull/283) - Fixed neted empty list RLP encoding [#283](https://github.com/openethereum/openethereum/pull/283)
- Fix CALLDATACOPY (and bonus CODECOPY, too!). [#279](https://github.com/paritytech/parity/pull/279) - Fix CALLDATACOPY (and bonus CODECOPY, too!). [#279](https://github.com/openethereum/openethereum/pull/279)
- added travis && coveralls badge to README.md [#280](https://github.com/paritytech/parity/pull/280) - added travis && coveralls badge to README.md [#280](https://github.com/openethereum/openethereum/pull/280)
- coveralls coverage [#277](https://github.com/paritytech/parity/pull/277) - coveralls coverage [#277](https://github.com/openethereum/openethereum/pull/277)
- Travis [in progress] [#257](https://github.com/paritytech/parity/pull/257) - Travis [in progress] [#257](https://github.com/openethereum/openethereum/pull/257)
- Travis on reorganized repo [#276](https://github.com/paritytech/parity/pull/276) - Travis on reorganized repo [#276](https://github.com/openethereum/openethereum/pull/276)
- umbrella project [#275](https://github.com/paritytech/parity/pull/275) - umbrella project [#275](https://github.com/openethereum/openethereum/pull/275)
- Ethash disk cache [#273](https://github.com/paritytech/parity/pull/273) - Ethash disk cache [#273](https://github.com/openethereum/openethereum/pull/273)
- Parity executable name and version [#274](https://github.com/paritytech/parity/pull/274) - Parity executable name and version [#274](https://github.com/openethereum/openethereum/pull/274)
- Dockerfile [#195](https://github.com/paritytech/parity/pull/195) - Dockerfile [#195](https://github.com/openethereum/openethereum/pull/195)
- Garbage collection test fix [#267](https://github.com/paritytech/parity/pull/267) - Garbage collection test fix [#267](https://github.com/openethereum/openethereum/pull/267)
- Fix stCallCreateCallCodeTest, add more tests [#271](https://github.com/paritytech/parity/pull/271) - Fix stCallCreateCallCodeTest, add more tests [#271](https://github.com/openethereum/openethereum/pull/271)
- Moved sync out of ethcore crate; Added block validation [#265](https://github.com/paritytech/parity/pull/265) - Moved sync out of ethcore crate; Added block validation [#265](https://github.com/openethereum/openethereum/pull/265)
- RLP encoder refactoring [#252](https://github.com/paritytech/parity/pull/252) - RLP encoder refactoring [#252](https://github.com/openethereum/openethereum/pull/252)
- Chain sync tests and minor refactoring [#264](https://github.com/paritytech/parity/pull/264) - Chain sync tests and minor refactoring [#264](https://github.com/openethereum/openethereum/pull/264)
- Common log init function [#263](https://github.com/paritytech/parity/pull/263) - Common log init function [#263](https://github.com/openethereum/openethereum/pull/263)
- changed max vm depth from 128 to 64, change homestead block to 1_000_000 [#262](https://github.com/paritytech/parity/pull/262) - changed max vm depth from 128 to 64, change homestead block to 1_000_000 [#262](https://github.com/openethereum/openethereum/pull/262)
- fixed blockchain tests crash on log init [#261](https://github.com/paritytech/parity/pull/261) - fixed blockchain tests crash on log init [#261](https://github.com/openethereum/openethereum/pull/261)
- Blockchain tests and some helpers for guarding temp directory [#256](https://github.com/paritytech/parity/pull/256) - Blockchain tests and some helpers for guarding temp directory [#256](https://github.com/openethereum/openethereum/pull/256)
- Fix logging and random tests. [#260](https://github.com/paritytech/parity/pull/260) - Fix logging and random tests. [#260](https://github.com/openethereum/openethereum/pull/260)
- Fix difficulty calculation algo. [#259](https://github.com/paritytech/parity/pull/259) - Fix difficulty calculation algo. [#259](https://github.com/openethereum/openethereum/pull/259)
- fix submodule version [#258](https://github.com/paritytech/parity/pull/258) - fix submodule version [#258](https://github.com/openethereum/openethereum/pull/258)
- temp dir spawn refactoring [#246](https://github.com/paritytech/parity/pull/246) - temp dir spawn refactoring [#246](https://github.com/openethereum/openethereum/pull/246)
- fixed tests submodule branch [#254](https://github.com/paritytech/parity/pull/254) - fixed tests submodule branch [#254](https://github.com/openethereum/openethereum/pull/254)
- rpc net methods returns real peer count && protocol version [#253](https://github.com/paritytech/parity/pull/253) - rpc net methods returns real peer count && protocol version [#253](https://github.com/openethereum/openethereum/pull/253)
- Add homestead & random tests. [#245](https://github.com/paritytech/parity/pull/245) - Add homestead & random tests. [#245](https://github.com/openethereum/openethereum/pull/245)
- Fixing suicide with self-refund to be consistent with CPP. [#247](https://github.com/paritytech/parity/pull/247) - Fixing suicide with self-refund to be consistent with CPP. [#247](https://github.com/openethereum/openethereum/pull/247)
- stubs for rpc methods [#251](https://github.com/paritytech/parity/pull/251) - stubs for rpc methods [#251](https://github.com/openethereum/openethereum/pull/251)
- clippy, missing docs, renaming etc. [#244](https://github.com/paritytech/parity/pull/244) - clippy, missing docs, renaming etc. [#244](https://github.com/openethereum/openethereum/pull/244)
- impl missing methods in tests [#243](https://github.com/paritytech/parity/pull/243) - impl missing methods in tests [#243](https://github.com/openethereum/openethereum/pull/243)
- General tests and some helpers [#239](https://github.com/paritytech/parity/pull/239) - General tests and some helpers [#239](https://github.com/openethereum/openethereum/pull/239)
- Note additional tests are fixed, fix doc test. [#242](https://github.com/paritytech/parity/pull/242) - Note additional tests are fixed, fix doc test. [#242](https://github.com/openethereum/openethereum/pull/242)
- jsonrpc http server [#193](https://github.com/paritytech/parity/pull/193) - jsonrpc http server [#193](https://github.com/openethereum/openethereum/pull/193)
- Ethash nonce is H64 not a u64 [#240](https://github.com/paritytech/parity/pull/240) - Ethash nonce is H64 not a u64 [#240](https://github.com/openethereum/openethereum/pull/240)
- Fix import for bcMultiChainTest [#236](https://github.com/paritytech/parity/pull/236) - Fix import for bcMultiChainTest [#236](https://github.com/openethereum/openethereum/pull/236)
- Client basic tests [#232](https://github.com/paritytech/parity/pull/232) - Client basic tests [#232](https://github.com/openethereum/openethereum/pull/232)
- Fix ensure_db_good() and flush_queue(), block refactoring, check block format, be strict. [#231](https://github.com/paritytech/parity/pull/231) - Fix ensure_db_good() and flush_queue(), block refactoring, check block format, be strict. [#231](https://github.com/openethereum/openethereum/pull/231)
- Rlp [#207](https://github.com/paritytech/parity/pull/207) - Rlp [#207](https://github.com/openethereum/openethereum/pull/207)
- Schedule documentation [#219](https://github.com/paritytech/parity/pull/219) - Schedule documentation [#219](https://github.com/openethereum/openethereum/pull/219)
- U256<->H256 Conversion [#206](https://github.com/paritytech/parity/pull/206) - U256<->H256 Conversion [#206](https://github.com/openethereum/openethereum/pull/206)
- Spawning new thread when we are reaching stack limit [#217](https://github.com/paritytech/parity/pull/217) - Spawning new thread when we are reaching stack limit [#217](https://github.com/openethereum/openethereum/pull/217)
- Blockchain tests [#211](https://github.com/paritytech/parity/pull/211) - Blockchain tests [#211](https://github.com/openethereum/openethereum/pull/211)
- fixed failing sync test [#218](https://github.com/paritytech/parity/pull/218) - fixed failing sync test [#218](https://github.com/openethereum/openethereum/pull/218)
- Removing println [#216](https://github.com/paritytech/parity/pull/216) - Removing println [#216](https://github.com/openethereum/openethereum/pull/216)
- Cleaning readme [#212](https://github.com/paritytech/parity/pull/212) - Cleaning readme [#212](https://github.com/openethereum/openethereum/pull/212)
- Fixing delegatecall [#196](https://github.com/paritytech/parity/pull/196) - Fixing delegatecall [#196](https://github.com/openethereum/openethereum/pull/196)
- Autogenerate the Args from the docopt macro. [#205](https://github.com/paritytech/parity/pull/205) - Autogenerate the Args from the docopt macro. [#205](https://github.com/openethereum/openethereum/pull/205)
- Networking fixes [#202](https://github.com/paritytech/parity/pull/202) - Networking fixes [#202](https://github.com/openethereum/openethereum/pull/202)
- Argument parsing from CLI [#204](https://github.com/paritytech/parity/pull/204) - Argument parsing from CLI [#204](https://github.com/openethereum/openethereum/pull/204)
- Removed wildcard from clippy version [#203](https://github.com/paritytech/parity/pull/203) - Removed wildcard from clippy version [#203](https://github.com/openethereum/openethereum/pull/203)
- Fixed tests and tweaked sync progress report [#201](https://github.com/paritytech/parity/pull/201) - Fixed tests and tweaked sync progress report [#201](https://github.com/openethereum/openethereum/pull/201)
- Heavy tests [#199](https://github.com/paritytech/parity/pull/199) - Heavy tests [#199](https://github.com/openethereum/openethereum/pull/199)
- Mutithreaded IO [#198](https://github.com/paritytech/parity/pull/198) - Mutithreaded IO [#198](https://github.com/openethereum/openethereum/pull/198)
- Populating last_hashes [#197](https://github.com/paritytech/parity/pull/197) - Populating last_hashes [#197](https://github.com/openethereum/openethereum/pull/197)
- Fixing clippy stuff [#170](https://github.com/paritytech/parity/pull/170) - Fixing clippy stuff [#170](https://github.com/openethereum/openethereum/pull/170)
- basic .travis.yml [#194](https://github.com/paritytech/parity/pull/194) - basic .travis.yml [#194](https://github.com/openethereum/openethereum/pull/194)
- Generating coverage reports. [#190](https://github.com/paritytech/parity/pull/190) - Generating coverage reports. [#190](https://github.com/openethereum/openethereum/pull/190)
- Adding doc requests comments [#192](https://github.com/paritytech/parity/pull/192) - Adding doc requests comments [#192](https://github.com/openethereum/openethereum/pull/192)
- moved src/bin/client.rs -> src/bin/client/main.rs [#185](https://github.com/paritytech/parity/pull/185) - moved src/bin/client.rs -> src/bin/client/main.rs [#185](https://github.com/openethereum/openethereum/pull/185)
- removed overflowing_shr [#188](https://github.com/paritytech/parity/pull/188) - removed overflowing_shr [#188](https://github.com/openethereum/openethereum/pull/188)
- fixed wrapping ops on latest nightly [#187](https://github.com/paritytech/parity/pull/187) - fixed wrapping ops on latest nightly [#187](https://github.com/openethereum/openethereum/pull/187)
- Pruned state DB [#176](https://github.com/paritytech/parity/pull/176) - Pruned state DB [#176](https://github.com/openethereum/openethereum/pull/176)
- Memory management for cache [#180](https://github.com/paritytech/parity/pull/180) - Memory management for cache [#180](https://github.com/openethereum/openethereum/pull/180)
- Implement signs having low-s. [#183](https://github.com/paritytech/parity/pull/183) - Implement signs having low-s. [#183](https://github.com/openethereum/openethereum/pull/183)
- Introduce sha3 crate and use it in ethash [#178](https://github.com/paritytech/parity/pull/178) - Introduce sha3 crate and use it in ethash [#178](https://github.com/openethereum/openethereum/pull/178)
- Multithreaded block queue [#173](https://github.com/paritytech/parity/pull/173) - Multithreaded block queue [#173](https://github.com/openethereum/openethereum/pull/173)
- Iterator for NibbleSlice and TrieDB. [#171](https://github.com/paritytech/parity/pull/171) - Iterator for NibbleSlice and TrieDB. [#171](https://github.com/openethereum/openethereum/pull/171)
- Handling all possible overflows [#145](https://github.com/paritytech/parity/pull/145) - Handling all possible overflows [#145](https://github.com/openethereum/openethereum/pull/145)
- Global secp256k1 context [#164](https://github.com/paritytech/parity/pull/164) - Global secp256k1 context [#164](https://github.com/openethereum/openethereum/pull/164)
- Ethash [#152](https://github.com/paritytech/parity/pull/152) - Ethash [#152](https://github.com/openethereum/openethereum/pull/152)
- Move util into here [#153](https://github.com/paritytech/parity/pull/153) - Move util into here [#153](https://github.com/openethereum/openethereum/pull/153)
- EVM Interpreter [#103](https://github.com/paritytech/parity/pull/103) - EVM Interpreter [#103](https://github.com/openethereum/openethereum/pull/103)
- Homestead transition support, maybe. [#141](https://github.com/paritytech/parity/pull/141) - Homestead transition support, maybe. [#141](https://github.com/openethereum/openethereum/pull/141)
- externalities refactor [#131](https://github.com/paritytech/parity/pull/131) - externalities refactor [#131](https://github.com/openethereum/openethereum/pull/131)
- More open files. [#140](https://github.com/paritytech/parity/pull/140) - More open files. [#140](https://github.com/openethereum/openethereum/pull/140)
- Single array for logs output. [#133](https://github.com/paritytech/parity/pull/133) - Single array for logs output. [#133](https://github.com/openethereum/openethereum/pull/133)
- Client app event handler [#132](https://github.com/paritytech/parity/pull/132) - Client app event handler [#132](https://github.com/openethereum/openethereum/pull/132)
- Various consensus fixes. [#130](https://github.com/paritytech/parity/pull/130) - Various consensus fixes. [#130](https://github.com/openethereum/openethereum/pull/130)
- callcode builtins tests pass [#127](https://github.com/paritytech/parity/pull/127) - callcode builtins tests pass [#127](https://github.com/openethereum/openethereum/pull/127)
- Client state syncing [#119](https://github.com/paritytech/parity/pull/119) - Client state syncing [#119](https://github.com/openethereum/openethereum/pull/119)
- Split externalities from executive. [#126](https://github.com/paritytech/parity/pull/126) - Split externalities from executive. [#126](https://github.com/openethereum/openethereum/pull/126)
- executive error on not enoguh base gas [#124](https://github.com/paritytech/parity/pull/124) - executive error on not enoguh base gas [#124](https://github.com/openethereum/openethereum/pull/124)
- Gav [#125](https://github.com/paritytech/parity/pull/125) - Gav [#125](https://github.com/openethereum/openethereum/pull/125)
- builtin sets excepted to true [#123](https://github.com/paritytech/parity/pull/123) - builtin sets excepted to true [#123](https://github.com/openethereum/openethereum/pull/123)
- More state tests. [#122](https://github.com/paritytech/parity/pull/122) - More state tests. [#122](https://github.com/openethereum/openethereum/pull/122)
- updated to rocksdb wrapper version 0.3 [#121](https://github.com/paritytech/parity/pull/121) - updated to rocksdb wrapper version 0.3 [#121](https://github.com/openethereum/openethereum/pull/121)
- out_of_gas -> excepted [#120](https://github.com/paritytech/parity/pull/120) - out_of_gas -> excepted [#120](https://github.com/openethereum/openethereum/pull/120)
- Parametrizing evm::Factory [#111](https://github.com/paritytech/parity/pull/111) - Parametrizing evm::Factory [#111](https://github.com/openethereum/openethereum/pull/111)
- stLogs tests passing [#118](https://github.com/paritytech/parity/pull/118) - stLogs tests passing [#118](https://github.com/openethereum/openethereum/pull/118)
- Fix executive. [#117](https://github.com/paritytech/parity/pull/117) - Fix executive. [#117](https://github.com/openethereum/openethereum/pull/117)
- Fixes for marek's shooting from the hip. [#116](https://github.com/paritytech/parity/pull/116) - Fixes for marek's shooting from the hip. [#116](https://github.com/openethereum/openethereum/pull/116)
- Executive revert fix [#115](https://github.com/paritytech/parity/pull/115) - Executive revert fix [#115](https://github.com/openethereum/openethereum/pull/115)
- Fix storage/account and add butress test. [#114](https://github.com/paritytech/parity/pull/114) - Fix storage/account and add butress test. [#114](https://github.com/openethereum/openethereum/pull/114)
- Refactored Pod & Diff types into separate files, JSON infrastructure revamp. [#113](https://github.com/paritytech/parity/pull/113) - Refactored Pod & Diff types into separate files, JSON infrastructure revamp. [#113](https://github.com/openethereum/openethereum/pull/113)
- Fix storage stuff and introduce per-item dirty-tracking. [#112](https://github.com/paritytech/parity/pull/112) - Fix storage stuff and introduce per-item dirty-tracking. [#112](https://github.com/openethereum/openethereum/pull/112)
- Check logs in state tests. [#109](https://github.com/paritytech/parity/pull/109) - Check logs in state tests. [#109](https://github.com/openethereum/openethereum/pull/109)
- executive gas calculation fixes [#108](https://github.com/paritytech/parity/pull/108) - executive gas calculation fixes [#108](https://github.com/openethereum/openethereum/pull/108)
- proper gas calculation in executive [#107](https://github.com/paritytech/parity/pull/107) - proper gas calculation in executive [#107](https://github.com/openethereum/openethereum/pull/107)
- Fixing MaxDepth param for executive [#105](https://github.com/paritytech/parity/pull/105) - Fixing MaxDepth param for executive [#105](https://github.com/openethereum/openethereum/pull/105)
- Fix determination of state roots. [#106](https://github.com/paritytech/parity/pull/106) - Fix determination of state roots. [#106](https://github.com/openethereum/openethereum/pull/106)
- transact substracts tx_gas [#104](https://github.com/paritytech/parity/pull/104) - transact substracts tx_gas [#104](https://github.com/openethereum/openethereum/pull/104)
- Pretty-print and fix for state. [#102](https://github.com/paritytech/parity/pull/102) - Pretty-print and fix for state. [#102](https://github.com/openethereum/openethereum/pull/102)
- Tier step price. [#101](https://github.com/paritytech/parity/pull/101) - Tier step price. [#101](https://github.com/openethereum/openethereum/pull/101)
- Refactor Diff datastructures. [#100](https://github.com/paritytech/parity/pull/100) - Refactor Diff datastructures. [#100](https://github.com/openethereum/openethereum/pull/100)
- externalities use u256 instead of u64 for gas calculation [#99](https://github.com/paritytech/parity/pull/99) - externalities use u256 instead of u64 for gas calculation [#99](https://github.com/openethereum/openethereum/pull/99)
- Executive tests [#97](https://github.com/paritytech/parity/pull/97) - Executive tests [#97](https://github.com/openethereum/openethereum/pull/97)
- State conensus tests now print mismatching diff on fail. [#98](https://github.com/paritytech/parity/pull/98) - State conensus tests now print mismatching diff on fail. [#98](https://github.com/openethereum/openethereum/pull/98)
- State testing framework. First test is failing. [#96](https://github.com/paritytech/parity/pull/96) - State testing framework. First test is failing. [#96](https://github.com/openethereum/openethereum/pull/96)
- executive tests [#95](https://github.com/paritytech/parity/pull/95) - executive tests [#95](https://github.com/openethereum/openethereum/pull/95)
- Use U512s for ether cost calculation, complete transaction API [#94](https://github.com/paritytech/parity/pull/94) - Use U512s for ether cost calculation, complete transaction API [#94](https://github.com/openethereum/openethereum/pull/94)
- Utils for consensus test decoding and better layout. [#93](https://github.com/paritytech/parity/pull/93) - Utils for consensus test decoding and better layout. [#93](https://github.com/openethereum/openethereum/pull/93)
- executive fixes + tests [#89](https://github.com/paritytech/parity/pull/89) - executive fixes + tests [#89](https://github.com/openethereum/openethereum/pull/89)
- All transaction tests pass. Nicer testing framework. [#92](https://github.com/paritytech/parity/pull/92) - All transaction tests pass. Nicer testing framework. [#92](https://github.com/openethereum/openethereum/pull/92)
- Block verification tests; BlockProvider blockchain trait for testing [#88](https://github.com/paritytech/parity/pull/88) - Block verification tests; BlockProvider blockchain trait for testing [#88](https://github.com/openethereum/openethereum/pull/88)
- State::exists, docs and tests. [#87](https://github.com/paritytech/parity/pull/87) - State::exists, docs and tests. [#87](https://github.com/openethereum/openethereum/pull/87)
- Add tests module, add two more transaction tests. [#86](https://github.com/paritytech/parity/pull/86) - Add tests module, add two more transaction tests. [#86](https://github.com/openethereum/openethereum/pull/86)
- bring back removed tests, removed build warnings [#82](https://github.com/paritytech/parity/pull/82) - bring back removed tests, removed build warnings [#82](https://github.com/openethereum/openethereum/pull/82)
- Nicer transaction validation API. Nicer OutOfBounds API in general. [#85](https://github.com/paritytech/parity/pull/85) - Nicer transaction validation API. Nicer OutOfBounds API in general. [#85](https://github.com/openethereum/openethereum/pull/85)
- Transaction fixes and consensus tests (all passing) [#84](https://github.com/paritytech/parity/pull/84) - Transaction fixes and consensus tests (all passing) [#84](https://github.com/openethereum/openethereum/pull/84)
- fixed getting block info in evmjit + tests [#81](https://github.com/paritytech/parity/pull/81) - fixed getting block info in evmjit + tests [#81](https://github.com/openethereum/openethereum/pull/81)
- evm tests cleanup [#80](https://github.com/paritytech/parity/pull/80) - evm tests cleanup [#80](https://github.com/openethereum/openethereum/pull/80)
- renamed VmFactory -> Factory [#77](https://github.com/paritytech/parity/pull/77) - renamed VmFactory -> Factory [#77](https://github.com/openethereum/openethereum/pull/77)
- fixed rust-evmjit description of improper_ctypes usage [#76](https://github.com/paritytech/parity/pull/76) - fixed rust-evmjit description of improper_ctypes usage [#76](https://github.com/openethereum/openethereum/pull/76)
- jit feature enabled by default [#75](https://github.com/paritytech/parity/pull/75) - jit feature enabled by default [#75](https://github.com/openethereum/openethereum/pull/75)
- evm [#52](https://github.com/paritytech/parity/pull/52) - evm [#52](https://github.com/openethereum/openethereum/pull/52)
- state clone [#74](https://github.com/paritytech/parity/pull/74) - state clone [#74](https://github.com/openethereum/openethereum/pull/74)
- Block Verification (no tests yet) [#72](https://github.com/paritytech/parity/pull/72) - Block Verification (no tests yet) [#72](https://github.com/openethereum/openethereum/pull/72)
- Improvements to LogEntry and Transaction [#73](https://github.com/paritytech/parity/pull/73) - Improvements to LogEntry and Transaction [#73](https://github.com/openethereum/openethereum/pull/73)
- Use getter in header in preparation for a Header trait; additional testing in enact_block(). [#64](https://github.com/paritytech/parity/pull/64) - Use getter in header in preparation for a Header trait; additional testing in enact_block(). [#64](https://github.com/openethereum/openethereum/pull/64)
- BlockChain sync and Client app [#55](https://github.com/paritytech/parity/pull/55) - BlockChain sync and Client app [#55](https://github.com/openethereum/openethereum/pull/55)
- Block enactment (including test) [#63](https://github.com/paritytech/parity/pull/63) - Block enactment (including test) [#63](https://github.com/openethereum/openethereum/pull/63)
- Block complete. Needs tests. [#62](https://github.com/paritytech/parity/pull/62) - Block complete. Needs tests. [#62](https://github.com/openethereum/openethereum/pull/62)
- More on OpenBlock::close; State::kill_account added [#61](https://github.com/paritytech/parity/pull/61) - More on OpenBlock::close; State::kill_account added [#61](https://github.com/openethereum/openethereum/pull/61)
- Remove genesis module, add more chain specs and separate out ethereum-specific stuff [#60](https://github.com/paritytech/parity/pull/60) - Remove genesis module, add more chain specs and separate out ethereum-specific stuff [#60](https://github.com/openethereum/openethereum/pull/60)
- State::new_contract, camelCase engine params, missing param [#59](https://github.com/paritytech/parity/pull/59) - State::new_contract, camelCase engine params, missing param [#59](https://github.com/openethereum/openethereum/pull/59)
- Use reorganisation [#58](https://github.com/paritytech/parity/pull/58) - Use reorganisation [#58](https://github.com/openethereum/openethereum/pull/58)
- Initial Ethash/Block skeleton implementations. [#57](https://github.com/paritytech/parity/pull/57) - Initial Ethash/Block skeleton implementations. [#57](https://github.com/openethereum/openethereum/pull/57)
- Spec with tested Morden genesis decoder and builtins. [#54](https://github.com/paritytech/parity/pull/54) - Spec with tested Morden genesis decoder and builtins. [#54](https://github.com/openethereum/openethereum/pull/54)
- Move all chain parameters into `engine_params` [#50](https://github.com/paritytech/parity/pull/50) - Move all chain parameters into `engine_params` [#50](https://github.com/openethereum/openethereum/pull/50)
- jit ffi improvements [please review] [#51](https://github.com/paritytech/parity/pull/51) - jit ffi improvements [please review] [#51](https://github.com/openethereum/openethereum/pull/51)
- blockchain [please review] [#34](https://github.com/paritytech/parity/pull/34) - blockchain [please review] [#34](https://github.com/openethereum/openethereum/pull/34)
- Move information from networkparams.rs into spec.rs [#48](https://github.com/paritytech/parity/pull/48) - Move information from networkparams.rs into spec.rs [#48](https://github.com/openethereum/openethereum/pull/48)
- Move bulking out in Engine/Params. [#47](https://github.com/paritytech/parity/pull/47) - Move bulking out in Engine/Params. [#47](https://github.com/openethereum/openethereum/pull/47)
- Removed need for mutation in State. [#46](https://github.com/paritytech/parity/pull/46) - Removed need for mutation in State. [#46](https://github.com/openethereum/openethereum/pull/46)
- State::code and State::storage_at + tests. [#45](https://github.com/paritytech/parity/pull/45) - State::code and State::storage_at + tests. [#45](https://github.com/openethereum/openethereum/pull/45)
- State functions for balance and nonce operations [#44](https://github.com/paritytech/parity/pull/44) - State functions for balance and nonce operations [#44](https://github.com/openethereum/openethereum/pull/44)
- Account::storage_at, Account::ensure_cached and tests. [#43](https://github.com/paritytech/parity/pull/43) - Account::storage_at, Account::ensure_cached and tests. [#43](https://github.com/openethereum/openethereum/pull/43)
- Additional tests. [#42](https://github.com/paritytech/parity/pull/42) - Additional tests. [#42](https://github.com/openethereum/openethereum/pull/42)
- seal todo done [#41](https://github.com/paritytech/parity/pull/41) - seal todo done [#41](https://github.com/openethereum/openethereum/pull/41)
- missing rustc_serialize crate && rlp `as_list` function [#40](https://github.com/paritytech/parity/pull/40) - missing rustc_serialize crate && rlp `as_list` function [#40](https://github.com/openethereum/openethereum/pull/40)
- More methods in Account, documentation and tests. [#39](https://github.com/paritytech/parity/pull/39) - More methods in Account, documentation and tests. [#39](https://github.com/openethereum/openethereum/pull/39)
- Minor reworking of Account. [#38](https://github.com/paritytech/parity/pull/38) - Minor reworking of Account. [#38](https://github.com/openethereum/openethereum/pull/38)
- Add Account and State classes. [#37](https://github.com/paritytech/parity/pull/37) - Add Account and State classes. [#37](https://github.com/openethereum/openethereum/pull/37)
- Revert regressions [#36](https://github.com/paritytech/parity/pull/36) - Revert regressions [#36](https://github.com/openethereum/openethereum/pull/36)

View File

@@ -1,29 +1,29 @@
Note: Parity 1.0 reached End-of-Life on 2016-06-24 (EOL). Note: Parity 1.0 reached End-of-Life on 2016-06-24 (EOL).
## Parity [v1.0.2](https://github.com/paritytech/parity/releases/tag/v1.0.2) (2016-04-11) ## Parity [v1.0.2](https://github.com/openethereum/openethereum/releases/tag/v1.0.2) (2016-04-11)
Parity 1.0.2 release improves Json RPC compatibility and fixes a number of stability issues. Parity 1.0.2 release improves Json RPC compatibility and fixes a number of stability issues.
- Flush password prompt [#1031](https://github.com/paritytech/parity/pull/1031) - Flush password prompt [#1031](https://github.com/openethereum/openethereum/pull/1031)
- [beta] dependencies update [#949](https://github.com/paritytech/parity/pull/949) - [beta] dependencies update [#949](https://github.com/openethereum/openethereum/pull/949)
- Master to beta v1.0.2 [#922](https://github.com/paritytech/parity/pull/922) - Master to beta v1.0.2 [#922](https://github.com/openethereum/openethereum/pull/922)
- Master to beta 1.0.2 [#908](https://github.com/paritytech/parity/pull/908) - Master to beta 1.0.2 [#908](https://github.com/openethereum/openethereum/pull/908)
## Parity [v1.0.1](https://github.com/paritytech/parity/releases/tag/v1.0.1) (2016-03-28) ## Parity [v1.0.1](https://github.com/openethereum/openethereum/releases/tag/v1.0.1) (2016-03-28)
Parity 1.0.1 update fixes a number of issues with Json RPC, transaction propagation and syncing. Parity 1.0.1 update fixes a number of issues with Json RPC, transaction propagation and syncing.
- Imporved sync error handling [#905](https://github.com/paritytech/parity/pull/905) - Imporved sync error handling [#905](https://github.com/openethereum/openethereum/pull/905)
- Publish locally-made transactions to peers. [#851](https://github.com/paritytech/parity/pull/851) - Publish locally-made transactions to peers. [#851](https://github.com/openethereum/openethereum/pull/851)
- Merge fixes from master to beta [#845](https://github.com/paritytech/parity/pull/845) - Merge fixes from master to beta [#845](https://github.com/openethereum/openethereum/pull/845)
- Full sync restart on bad block [#844](https://github.com/paritytech/parity/pull/844) - Full sync restart on bad block [#844](https://github.com/openethereum/openethereum/pull/844)
- Make BlockNumber optional, fix eth_call [#828](https://github.com/paritytech/parity/pull/828) - Make BlockNumber optional, fix eth_call [#828](https://github.com/openethereum/openethereum/pull/828)
- Web3sha3 beta [#826](https://github.com/paritytech/parity/pull/826) - Web3sha3 beta [#826](https://github.com/openethereum/openethereum/pull/826)
- Use network id for the web3_net_version return. [#821](https://github.com/paritytech/parity/pull/821) - Use network id for the web3_net_version return. [#821](https://github.com/openethereum/openethereum/pull/821)
- Fix mining from spinning [#806](https://github.com/paritytech/parity/pull/806) - Fix mining from spinning [#806](https://github.com/openethereum/openethereum/pull/806)
- Merge master to beta [#796](https://github.com/paritytech/parity/pull/796) - Merge master to beta [#796](https://github.com/openethereum/openethereum/pull/796)
## Parity [v1.0.0](https://github.com/paritytech/parity/releases/tag/v1.0.0) (2016-03-24) ## Parity [v1.0.0](https://github.com/openethereum/openethereum/releases/tag/v1.0.0) (2016-03-24)
Parity 1.0.0 release adds the following features: Parity 1.0.0 release adds the following features:
@@ -41,277 +41,277 @@ Parity 1.0.0 release adds the following features:
Note that in this release the state database is in archive (full) mode by default. Run with one of the `--pruning` options to enable pruning. Note that in this release the state database is in archive (full) mode by default. Run with one of the `--pruning` options to enable pruning.
- First part of multi-mining support [#804](https://github.com/paritytech/parity/pull/804) - First part of multi-mining support [#804](https://github.com/openethereum/openethereum/pull/804)
- Fixing future-current transactions clash [#802](https://github.com/paritytech/parity/pull/802) - Fixing future-current transactions clash [#802](https://github.com/openethereum/openethereum/pull/802)
- Increase threads to num_cpus & fix author reporting [#800](https://github.com/paritytech/parity/pull/800) - Increase threads to num_cpus & fix author reporting [#800](https://github.com/openethereum/openethereum/pull/800)
- another batch of rpc improvements [#798](https://github.com/paritytech/parity/pull/798) - another batch of rpc improvements [#798](https://github.com/openethereum/openethereum/pull/798)
- Avoid tracing DELEGATECALL and CALLCODE. Plus tests for it. [#794](https://github.com/paritytech/parity/pull/794) - Avoid tracing DELEGATECALL and CALLCODE. Plus tests for it. [#794](https://github.com/openethereum/openethereum/pull/794)
- complete getting started steps for OS X [#793](https://github.com/paritytech/parity/pull/793) - complete getting started steps for OS X [#793](https://github.com/openethereum/openethereum/pull/793)
- Auto detect available port (with fixed test) [#788](https://github.com/paritytech/parity/pull/788) - Auto detect available port (with fixed test) [#788](https://github.com/openethereum/openethereum/pull/788)
- eth_getTransactionReceipt [#792](https://github.com/paritytech/parity/pull/792) - eth_getTransactionReceipt [#792](https://github.com/openethereum/openethereum/pull/792)
- Comprehensive tests for tracing transactions [#791](https://github.com/paritytech/parity/pull/791) - Comprehensive tests for tracing transactions [#791](https://github.com/openethereum/openethereum/pull/791)
- Disable preparing work package if miners don't ask for it. [#771](https://github.com/paritytech/parity/pull/771) - Disable preparing work package if miners don't ask for it. [#771](https://github.com/openethereum/openethereum/pull/771)
- Listen on all interfaces for JSONRPC by default. [#786](https://github.com/paritytech/parity/pull/786) - Listen on all interfaces for JSONRPC by default. [#786](https://github.com/openethereum/openethereum/pull/786)
- eth_call [#783](https://github.com/paritytech/parity/pull/783) - eth_call [#783](https://github.com/openethereum/openethereum/pull/783)
- Revert "Auto detect available port" [#789](https://github.com/paritytech/parity/pull/789) - Revert "Auto detect available port" [#789](https://github.com/openethereum/openethereum/pull/789)
- added output to execution result [#777](https://github.com/paritytech/parity/pull/777) - added output to execution result [#777](https://github.com/openethereum/openethereum/pull/777)
- Auto detect available port [#782](https://github.com/paritytech/parity/pull/782) - Auto detect available port [#782](https://github.com/openethereum/openethereum/pull/782)
- Allow 0x prefix for --author. [#785](https://github.com/paritytech/parity/pull/785) - Allow 0x prefix for --author. [#785](https://github.com/openethereum/openethereum/pull/785)
- updated dependencies, moved rpctest to its own submodule [#784](https://github.com/paritytech/parity/pull/784) - updated dependencies, moved rpctest to its own submodule [#784](https://github.com/openethereum/openethereum/pull/784)
- use ethjson module to load chain json tests [#778](https://github.com/paritytech/parity/pull/778) - use ethjson module to load chain json tests [#778](https://github.com/openethereum/openethereum/pull/778)
- Tracing implemented. [#772](https://github.com/paritytech/parity/pull/772) - Tracing implemented. [#772](https://github.com/openethereum/openethereum/pull/772)
- test ethjson module on travis [#780](https://github.com/paritytech/parity/pull/780) - test ethjson module on travis [#780](https://github.com/openethereum/openethereum/pull/780)
- batch of rpc fixes [#775](https://github.com/paritytech/parity/pull/775) - batch of rpc fixes [#775](https://github.com/openethereum/openethereum/pull/775)
- rpctest executable [#757](https://github.com/paritytech/parity/pull/757) - rpctest executable [#757](https://github.com/openethereum/openethereum/pull/757)
- Refactoring error transaction_queue error handling and `update_sealing` method. [#753](https://github.com/paritytech/parity/pull/753) - Refactoring error transaction_queue error handling and `update_sealing` method. [#753](https://github.com/openethereum/openethereum/pull/753)
- Avoid importing transactions with gas above 1.1*block_gas_limit to transaction queue [#760](https://github.com/paritytech/parity/pull/760) - Avoid importing transactions with gas above 1.1*block_gas_limit to transaction queue [#760](https://github.com/openethereum/openethereum/pull/760)
- Removing transactions that failed to be pushed to block. [#752](https://github.com/paritytech/parity/pull/752) - Removing transactions that failed to be pushed to block. [#752](https://github.com/openethereum/openethereum/pull/752)
- Updating clippy [#766](https://github.com/paritytech/parity/pull/766) - Updating clippy [#766](https://github.com/openethereum/openethereum/pull/766)
- Attempting to add all transactions to mined block [#754](https://github.com/paritytech/parity/pull/754) - Attempting to add all transactions to mined block [#754](https://github.com/openethereum/openethereum/pull/754)
- Prettier version w/o git dir; Use rustc compile time version [#761](https://github.com/paritytech/parity/pull/761) - Prettier version w/o git dir; Use rustc compile time version [#761](https://github.com/openethereum/openethereum/pull/761)
- Stop adding transactions to queue while not fully synced [#751](https://github.com/paritytech/parity/pull/751) - Stop adding transactions to queue while not fully synced [#751](https://github.com/openethereum/openethereum/pull/751)
- Verify sender's balance before importing transaction to queue [#746](https://github.com/paritytech/parity/pull/746) - Verify sender's balance before importing transaction to queue [#746](https://github.com/openethereum/openethereum/pull/746)
- Returning number of transactions pending in block not queue [#750](https://github.com/paritytech/parity/pull/750) - Returning number of transactions pending in block not queue [#750](https://github.com/openethereum/openethereum/pull/750)
- Speeding up build [#733](https://github.com/paritytech/parity/pull/733) - Speeding up build [#733](https://github.com/openethereum/openethereum/pull/733)
- adding check for a sync when giving work to miner [#742](https://github.com/paritytech/parity/pull/742) - adding check for a sync when giving work to miner [#742](https://github.com/openethereum/openethereum/pull/742)
- json deserialization module [#745](https://github.com/paritytech/parity/pull/745) - json deserialization module [#745](https://github.com/openethereum/openethereum/pull/745)
- Update install-parity.sh [#749](https://github.com/paritytech/parity/pull/749) - Update install-parity.sh [#749](https://github.com/openethereum/openethereum/pull/749)
- Restart sync on getting old unknown header [#747](https://github.com/paritytech/parity/pull/747) - Restart sync on getting old unknown header [#747](https://github.com/openethereum/openethereum/pull/747)
- Missing return for #737 [#744](https://github.com/paritytech/parity/pull/744) - Missing return for #737 [#744](https://github.com/openethereum/openethereum/pull/744)
- Enact block with uncles test [#741](https://github.com/paritytech/parity/pull/741) - Enact block with uncles test [#741](https://github.com/openethereum/openethereum/pull/741)
- Fix outdated libc version on dependency [#740](https://github.com/paritytech/parity/pull/740) - Fix outdated libc version on dependency [#740](https://github.com/openethereum/openethereum/pull/740)
- Fixing possible race in transaction queue [#735](https://github.com/paritytech/parity/pull/735) - Fixing possible race in transaction queue [#735](https://github.com/openethereum/openethereum/pull/735)
- Sync fixed again [#737](https://github.com/paritytech/parity/pull/737) - Sync fixed again [#737](https://github.com/openethereum/openethereum/pull/737)
- Don't change best block until extras is committed. [#734](https://github.com/paritytech/parity/pull/734) - Don't change best block until extras is committed. [#734](https://github.com/openethereum/openethereum/pull/734)
- stable only until travis speedup [#736](https://github.com/paritytech/parity/pull/736) - stable only until travis speedup [#736](https://github.com/openethereum/openethereum/pull/736)
- Optimizing uint operations (architecture independent) [#629](https://github.com/paritytech/parity/pull/629) - Optimizing uint operations (architecture independent) [#629](https://github.com/openethereum/openethereum/pull/629)
- Add RLP, not a data item. [#725](https://github.com/paritytech/parity/pull/725) - Add RLP, not a data item. [#725](https://github.com/openethereum/openethereum/pull/725)
- PV63 receipts response [#687](https://github.com/paritytech/parity/pull/687) - PV63 receipts response [#687](https://github.com/openethereum/openethereum/pull/687)
- another batch of rpc tests [#723](https://github.com/paritytech/parity/pull/723) - another batch of rpc tests [#723](https://github.com/openethereum/openethereum/pull/723)
- dockerfiles update [#726](https://github.com/paritytech/parity/pull/726) - dockerfiles update [#726](https://github.com/openethereum/openethereum/pull/726)
- Lock reports to avoid out of order badness. [#721](https://github.com/paritytech/parity/pull/721) - Lock reports to avoid out of order badness. [#721](https://github.com/openethereum/openethereum/pull/721)
- Fixed handshake leak [#722](https://github.com/paritytech/parity/pull/722) - Fixed handshake leak [#722](https://github.com/openethereum/openethereum/pull/722)
- Allow configuration of target gas limit. [#719](https://github.com/paritytech/parity/pull/719) - Allow configuration of target gas limit. [#719](https://github.com/openethereum/openethereum/pull/719)
- Version 1.1 in master [#714](https://github.com/paritytech/parity/pull/714) - Version 1.1 in master [#714](https://github.com/openethereum/openethereum/pull/714)
- Silence UDP warnings [#720](https://github.com/paritytech/parity/pull/720) - Silence UDP warnings [#720](https://github.com/openethereum/openethereum/pull/720)
- Rpc personal tests [#715](https://github.com/paritytech/parity/pull/715) - Rpc personal tests [#715](https://github.com/openethereum/openethereum/pull/715)
- Fixing warnings [#704](https://github.com/paritytech/parity/pull/704) - Fixing warnings [#704](https://github.com/openethereum/openethereum/pull/704)
- docopts cleanups [#713](https://github.com/paritytech/parity/pull/713) - docopts cleanups [#713](https://github.com/openethereum/openethereum/pull/713)
- Removed rocksdb build dependency [#717](https://github.com/paritytech/parity/pull/717) - Removed rocksdb build dependency [#717](https://github.com/openethereum/openethereum/pull/717)
- Fixed splitting Neighbours packet [#710](https://github.com/paritytech/parity/pull/710) - Fixed splitting Neighbours packet [#710](https://github.com/openethereum/openethereum/pull/710)
- management of account expiration & memory [#701](https://github.com/paritytech/parity/pull/701) - management of account expiration & memory [#701](https://github.com/openethereum/openethereum/pull/701)
- Remove EarlyMerge from user docs. [#708](https://github.com/paritytech/parity/pull/708) - Remove EarlyMerge from user docs. [#708](https://github.com/openethereum/openethereum/pull/708)
- Fixes and traces for refcountdb. [#705](https://github.com/paritytech/parity/pull/705) - Fixes and traces for refcountdb. [#705](https://github.com/openethereum/openethereum/pull/705)
- Check for NULL_RLP in AccountDB [#706](https://github.com/paritytech/parity/pull/706) - Check for NULL_RLP in AccountDB [#706](https://github.com/openethereum/openethereum/pull/706)
- ethminer as crate [#700](https://github.com/paritytech/parity/pull/700) - ethminer as crate [#700](https://github.com/openethereum/openethereum/pull/700)
- Old ref-counted DB code [#692](https://github.com/paritytech/parity/pull/692) - Old ref-counted DB code [#692](https://github.com/openethereum/openethereum/pull/692)
- next batch of rpc tests and fixes [#699](https://github.com/paritytech/parity/pull/699) - next batch of rpc tests and fixes [#699](https://github.com/openethereum/openethereum/pull/699)
- implemented eth_geStorageAt rpc method, added more tests for rpc [#695](https://github.com/paritytech/parity/pull/695) - implemented eth_geStorageAt rpc method, added more tests for rpc [#695](https://github.com/openethereum/openethereum/pull/695)
- Fix JournalDB era marker [#690](https://github.com/paritytech/parity/pull/690) - Fix JournalDB era marker [#690](https://github.com/openethereum/openethereum/pull/690)
- More sync fixes [#685](https://github.com/paritytech/parity/pull/685) - More sync fixes [#685](https://github.com/openethereum/openethereum/pull/685)
- mark some key tests as heavy [#694](https://github.com/paritytech/parity/pull/694) - mark some key tests as heavy [#694](https://github.com/openethereum/openethereum/pull/694)
- Limit incoming connections [#693](https://github.com/paritytech/parity/pull/693) - Limit incoming connections [#693](https://github.com/openethereum/openethereum/pull/693)
- Updating clippy [#688](https://github.com/paritytech/parity/pull/688) - Updating clippy [#688](https://github.com/openethereum/openethereum/pull/688)
- eth_accounts, eth_getBalance rpc functions && tests [#691](https://github.com/paritytech/parity/pull/691) - eth_accounts, eth_getBalance rpc functions && tests [#691](https://github.com/openethereum/openethereum/pull/691)
- state query for archive jdb [#683](https://github.com/paritytech/parity/pull/683) - state query for archive jdb [#683](https://github.com/openethereum/openethereum/pull/683)
- Fix for option 1 of JournalDB [#658](https://github.com/paritytech/parity/pull/658) - Fix for option 1 of JournalDB [#658](https://github.com/openethereum/openethereum/pull/658)
- Rename into something that is a little more descriptive. [#689](https://github.com/paritytech/parity/pull/689) - Rename into something that is a little more descriptive. [#689](https://github.com/openethereum/openethereum/pull/689)
- JournalDB with in-memory overlay (option2) [#634](https://github.com/paritytech/parity/pull/634) - JournalDB with in-memory overlay (option2) [#634](https://github.com/openethereum/openethereum/pull/634)
- additional (failing) SecretStore test [#682](https://github.com/paritytech/parity/pull/682) - additional (failing) SecretStore test [#682](https://github.com/openethereum/openethereum/pull/682)
- Updating clippy & fixing warnings. [#670](https://github.com/paritytech/parity/pull/670) - Updating clippy & fixing warnings. [#670](https://github.com/openethereum/openethereum/pull/670)
- rpc web3 tests [#681](https://github.com/paritytech/parity/pull/681) - rpc web3 tests [#681](https://github.com/openethereum/openethereum/pull/681)
- Making personal json-rpc configurable via cli [#677](https://github.com/paritytech/parity/pull/677) - Making personal json-rpc configurable via cli [#677](https://github.com/openethereum/openethereum/pull/677)
- RPC Pending Transactions Filter [#661](https://github.com/paritytech/parity/pull/661) - RPC Pending Transactions Filter [#661](https://github.com/openethereum/openethereum/pull/661)
- Rearrange journaldb infrastructure to make more extensible [#678](https://github.com/paritytech/parity/pull/678) - Rearrange journaldb infrastructure to make more extensible [#678](https://github.com/openethereum/openethereum/pull/678)
- JournalDB -> Box<JournalDB>, and it's a trait. [#673](https://github.com/paritytech/parity/pull/673) - JournalDB -> Box<JournalDB>, and it's a trait. [#673](https://github.com/openethereum/openethereum/pull/673)
- fix warning for transaction_queue.add usage [#676](https://github.com/paritytech/parity/pull/676) - fix warning for transaction_queue.add usage [#676](https://github.com/openethereum/openethereum/pull/676)
- Adding std::mem back (only for asm) [#680](https://github.com/paritytech/parity/pull/680) - Adding std::mem back (only for asm) [#680](https://github.com/openethereum/openethereum/pull/680)
- update readme to exclude beta step (stable is ok) [#679](https://github.com/paritytech/parity/pull/679) - update readme to exclude beta step (stable is ok) [#679](https://github.com/openethereum/openethereum/pull/679)
- fixed U256 and transaction request deserialization [#675](https://github.com/paritytech/parity/pull/675) - fixed U256 and transaction request deserialization [#675](https://github.com/openethereum/openethereum/pull/675)
- More geth compatibility. [#666](https://github.com/paritytech/parity/pull/666) - More geth compatibility. [#666](https://github.com/openethereum/openethereum/pull/666)
- Removing running clippy by default on nightly. [#671](https://github.com/paritytech/parity/pull/671) - Removing running clippy by default on nightly. [#671](https://github.com/openethereum/openethereum/pull/671)
- rpc net submodule tests [#667](https://github.com/paritytech/parity/pull/667) - rpc net submodule tests [#667](https://github.com/openethereum/openethereum/pull/667)
- Client module overhaul [#665](https://github.com/paritytech/parity/pull/665) - Client module overhaul [#665](https://github.com/openethereum/openethereum/pull/665)
- Rpc transaction signing [#587](https://github.com/paritytech/parity/pull/587) - Rpc transaction signing [#587](https://github.com/openethereum/openethereum/pull/587)
- Transaction queue exposed via JSON rpc. [#652](https://github.com/paritytech/parity/pull/652) - Transaction queue exposed via JSON rpc. [#652](https://github.com/openethereum/openethereum/pull/652)
- Remove unneeded locking [#499](https://github.com/paritytech/parity/pull/499) - Remove unneeded locking [#499](https://github.com/openethereum/openethereum/pull/499)
- extend sync status interface to sync provider [#664](https://github.com/paritytech/parity/pull/664) - extend sync status interface to sync provider [#664](https://github.com/openethereum/openethereum/pull/664)
- --archive is default. --pruning is option. [#663](https://github.com/paritytech/parity/pull/663) - --archive is default. --pruning is option. [#663](https://github.com/openethereum/openethereum/pull/663)
- jsonrpc uses client and sync interfaces [#641](https://github.com/paritytech/parity/pull/641) - jsonrpc uses client and sync interfaces [#641](https://github.com/openethereum/openethereum/pull/641)
- Expose transaction insertion in sync lib [#609](https://github.com/paritytech/parity/pull/609) - Expose transaction insertion in sync lib [#609](https://github.com/openethereum/openethereum/pull/609)
- Removing get prefix from poll_info [#660](https://github.com/paritytech/parity/pull/660) - Removing get prefix from poll_info [#660](https://github.com/openethereum/openethereum/pull/660)
- Tx queue update height bug [#657](https://github.com/paritytech/parity/pull/657) - Tx queue update height bug [#657](https://github.com/openethereum/openethereum/pull/657)
- Tx_queue_docs -> To master [#651](https://github.com/paritytech/parity/pull/651) - Tx_queue_docs -> To master [#651](https://github.com/openethereum/openethereum/pull/651)
- blockchain import_route [#645](https://github.com/paritytech/parity/pull/645) - blockchain import_route [#645](https://github.com/openethereum/openethereum/pull/645)
- Stop workers before stopping event loop [#655](https://github.com/paritytech/parity/pull/655) - Stop workers before stopping event loop [#655](https://github.com/openethereum/openethereum/pull/655)
- Validate sender before importing to queue [#650](https://github.com/paritytech/parity/pull/650) - Validate sender before importing to queue [#650](https://github.com/openethereum/openethereum/pull/650)
- Gas price threshold for transactions [#640](https://github.com/paritytech/parity/pull/640) - Gas price threshold for transactions [#640](https://github.com/openethereum/openethereum/pull/640)
- `dev` feature enabled when compiling without `--release` [#627](https://github.com/paritytech/parity/pull/627) - `dev` feature enabled when compiling without `--release` [#627](https://github.com/openethereum/openethereum/pull/627)
- Don't call mark_as_bad needlessly [#648](https://github.com/paritytech/parity/pull/648) - Don't call mark_as_bad needlessly [#648](https://github.com/openethereum/openethereum/pull/648)
- Fixed sync handling large forks [#647](https://github.com/paritytech/parity/pull/647) - Fixed sync handling large forks [#647](https://github.com/openethereum/openethereum/pull/647)
- Additional documentation for transaction queue [#631](https://github.com/paritytech/parity/pull/631) - Additional documentation for transaction queue [#631](https://github.com/openethereum/openethereum/pull/631)
- Transaction Queue Integration [#607](https://github.com/paritytech/parity/pull/607) - Transaction Queue Integration [#607](https://github.com/openethereum/openethereum/pull/607)
- Keys cli [#639](https://github.com/paritytech/parity/pull/639) - Keys cli [#639](https://github.com/openethereum/openethereum/pull/639)
- fix build warning [#643](https://github.com/paritytech/parity/pull/643) - fix build warning [#643](https://github.com/openethereum/openethereum/pull/643)
- updated jsonrpc-core and http-server libs [#642](https://github.com/paritytech/parity/pull/642) - updated jsonrpc-core and http-server libs [#642](https://github.com/openethereum/openethereum/pull/642)
- jsonrpc panics gracefully shutdown client [#638](https://github.com/paritytech/parity/pull/638) - jsonrpc panics gracefully shutdown client [#638](https://github.com/openethereum/openethereum/pull/638)
- Fixing CLI parameters [#633](https://github.com/paritytech/parity/pull/633) - Fixing CLI parameters [#633](https://github.com/openethereum/openethereum/pull/633)
- Normal CLI options with geth. [#628](https://github.com/paritytech/parity/pull/628) - Normal CLI options with geth. [#628](https://github.com/openethereum/openethereum/pull/628)
- Do not remove the peer immediatelly on send error [#626](https://github.com/paritytech/parity/pull/626) - Do not remove the peer immediatelly on send error [#626](https://github.com/openethereum/openethereum/pull/626)
- Jsonrpc block behind [#622](https://github.com/paritytech/parity/pull/622) - Jsonrpc block behind [#622](https://github.com/openethereum/openethereum/pull/622)
- Remove println!s. [#624](https://github.com/paritytech/parity/pull/624) - Remove println!s. [#624](https://github.com/openethereum/openethereum/pull/624)
- JournalDB option 1 fix [#613](https://github.com/paritytech/parity/pull/613) - JournalDB option 1 fix [#613](https://github.com/openethereum/openethereum/pull/613)
- Network tracing cleanup [#611](https://github.com/paritytech/parity/pull/611) - Network tracing cleanup [#611](https://github.com/openethereum/openethereum/pull/611)
- Revert "Transaction Queue integration" [#602](https://github.com/paritytech/parity/pull/602) - Revert "Transaction Queue integration" [#602](https://github.com/openethereum/openethereum/pull/602)
- fix benches compilation [#601](https://github.com/paritytech/parity/pull/601) - fix benches compilation [#601](https://github.com/openethereum/openethereum/pull/601)
- Transaction Queue integration [#595](https://github.com/paritytech/parity/pull/595) - Transaction Queue integration [#595](https://github.com/openethereum/openethereum/pull/595)
- verifier trait improvements [#597](https://github.com/paritytech/parity/pull/597) - verifier trait improvements [#597](https://github.com/openethereum/openethereum/pull/597)
- build on rust stable [#600](https://github.com/paritytech/parity/pull/600) - build on rust stable [#600](https://github.com/openethereum/openethereum/pull/600)
- Geth import silent if no geth [#599](https://github.com/paritytech/parity/pull/599) - Geth import silent if no geth [#599](https://github.com/openethereum/openethereum/pull/599)
- Additional journaldb logging and assert [#593](https://github.com/paritytech/parity/pull/593) - Additional journaldb logging and assert [#593](https://github.com/openethereum/openethereum/pull/593)
- Uncle inclusion in block authoring. [#578](https://github.com/paritytech/parity/pull/578) - Uncle inclusion in block authoring. [#578](https://github.com/openethereum/openethereum/pull/578)
- Fixed potential deadlock on startup [#592](https://github.com/paritytech/parity/pull/592) - Fixed potential deadlock on startup [#592](https://github.com/openethereum/openethereum/pull/592)
- Fixing an overflow panic [#591](https://github.com/paritytech/parity/pull/591) - Fixing an overflow panic [#591](https://github.com/openethereum/openethereum/pull/591)
- Fixed one more case of sync stalling [#590](https://github.com/paritytech/parity/pull/590) - Fixed one more case of sync stalling [#590](https://github.com/openethereum/openethereum/pull/590)
- JournalDB can now operate in "archive" mode [#589](https://github.com/paritytech/parity/pull/589) - JournalDB can now operate in "archive" mode [#589](https://github.com/openethereum/openethereum/pull/589)
- Secret store integration with client [#586](https://github.com/paritytech/parity/pull/586) - Secret store integration with client [#586](https://github.com/openethereum/openethereum/pull/586)
- fix build on nightly rust [#588](https://github.com/paritytech/parity/pull/588) - fix build on nightly rust [#588](https://github.com/openethereum/openethereum/pull/588)
- deserialization for uint generic [#585](https://github.com/paritytech/parity/pull/585) - deserialization for uint generic [#585](https://github.com/openethereum/openethereum/pull/585)
- TransactionsQueue implementation [#559](https://github.com/paritytech/parity/pull/559) - TransactionsQueue implementation [#559](https://github.com/openethereum/openethereum/pull/559)
- JSON-RPC personal service (follows #582) [#583](https://github.com/paritytech/parity/pull/583) - JSON-RPC personal service (follows #582) [#583](https://github.com/openethereum/openethereum/pull/583)
- making key directory thread-safe [#582](https://github.com/paritytech/parity/pull/582) - making key directory thread-safe [#582](https://github.com/openethereum/openethereum/pull/582)
- verifier trait [#581](https://github.com/paritytech/parity/pull/581) - verifier trait [#581](https://github.com/openethereum/openethereum/pull/581)
- shrink_to_fit after removing hashes. [#580](https://github.com/paritytech/parity/pull/580) - shrink_to_fit after removing hashes. [#580](https://github.com/openethereum/openethereum/pull/580)
- support for rpc polling [#504](https://github.com/paritytech/parity/pull/504) - support for rpc polling [#504](https://github.com/openethereum/openethereum/pull/504)
- limit serde codegen only to rpc types submodule [#569](https://github.com/paritytech/parity/pull/569) - limit serde codegen only to rpc types submodule [#569](https://github.com/openethereum/openethereum/pull/569)
- fork test for Issue test/568 [#573](https://github.com/paritytech/parity/pull/573) - fork test for Issue test/568 [#573](https://github.com/openethereum/openethereum/pull/573)
- Fixing clippy warnings = small refactoring of `request_blocks` [#560](https://github.com/paritytech/parity/pull/560) - Fixing clippy warnings = small refactoring of `request_blocks` [#560](https://github.com/openethereum/openethereum/pull/560)
- Improved journaldb logging [#571](https://github.com/paritytech/parity/pull/571) - Improved journaldb logging [#571](https://github.com/openethereum/openethereum/pull/571)
- Additional check to ancient enactments. [#570](https://github.com/paritytech/parity/pull/570) - Additional check to ancient enactments. [#570](https://github.com/openethereum/openethereum/pull/570)
- chainfilter shouldnt exclude to_block from results [#564](https://github.com/paritytech/parity/pull/564) - chainfilter shouldnt exclude to_block from results [#564](https://github.com/openethereum/openethereum/pull/564)
- Fix coverage test run [#567](https://github.com/paritytech/parity/pull/567) - Fix coverage test run [#567](https://github.com/openethereum/openethereum/pull/567)
- Mining [#547](https://github.com/paritytech/parity/pull/547) - Mining [#547](https://github.com/openethereum/openethereum/pull/547)
- fix uint warnings [#565](https://github.com/paritytech/parity/pull/565) - fix uint warnings [#565](https://github.com/openethereum/openethereum/pull/565)
- Finished blockchain generator. [#562](https://github.com/paritytech/parity/pull/562) - Finished blockchain generator. [#562](https://github.com/openethereum/openethereum/pull/562)
- fixed broken master [#563](https://github.com/paritytech/parity/pull/563) - fixed broken master [#563](https://github.com/openethereum/openethereum/pull/563)
- uint to separate crate [#544](https://github.com/paritytech/parity/pull/544) - uint to separate crate [#544](https://github.com/openethereum/openethereum/pull/544)
- improved test chain generator [#554](https://github.com/paritytech/parity/pull/554) - improved test chain generator [#554](https://github.com/openethereum/openethereum/pull/554)
- Fixing spelling in propagade->propagate [#558](https://github.com/paritytech/parity/pull/558) - Fixing spelling in propagade->propagate [#558](https://github.com/openethereum/openethereum/pull/558)
- Changing RefCell to Cell in transaction. [#557](https://github.com/paritytech/parity/pull/557) - Changing RefCell to Cell in transaction. [#557](https://github.com/openethereum/openethereum/pull/557)
- Fix for morden consensus. [#556](https://github.com/paritytech/parity/pull/556) - Fix for morden consensus. [#556](https://github.com/openethereum/openethereum/pull/556)
- blockchain generator [#550](https://github.com/paritytech/parity/pull/550) - blockchain generator [#550](https://github.com/openethereum/openethereum/pull/550)
- Sparse Table Implementation (Row, Col) -> Val [#545](https://github.com/paritytech/parity/pull/545) - Sparse Table Implementation (Row, Col) -> Val [#545](https://github.com/openethereum/openethereum/pull/545)
- fixup install script [#548](https://github.com/paritytech/parity/pull/548) - fixup install script [#548](https://github.com/openethereum/openethereum/pull/548)
- Fixing clippy warnings [#546](https://github.com/paritytech/parity/pull/546) - Fixing clippy warnings [#546](https://github.com/openethereum/openethereum/pull/546)
- ignore out directory [#543](https://github.com/paritytech/parity/pull/543) - ignore out directory [#543](https://github.com/openethereum/openethereum/pull/543)
- u256 full multiplication [#539](https://github.com/paritytech/parity/pull/539) - u256 full multiplication [#539](https://github.com/openethereum/openethereum/pull/539)
- Fix panic when downloading stales, update homestead transition [#537](https://github.com/paritytech/parity/pull/537) - Fix panic when downloading stales, update homestead transition [#537](https://github.com/openethereum/openethereum/pull/537)
- changing x64 asm config [#534](https://github.com/paritytech/parity/pull/534) - changing x64 asm config [#534](https://github.com/openethereum/openethereum/pull/534)
- uncomment state transition tests [#533](https://github.com/paritytech/parity/pull/533) - uncomment state transition tests [#533](https://github.com/openethereum/openethereum/pull/533)
- jsonrpc uses weak pointers to client [#532](https://github.com/paritytech/parity/pull/532) - jsonrpc uses weak pointers to client [#532](https://github.com/openethereum/openethereum/pull/532)
- Morden switch to Homestead rules at #494,000. [#531](https://github.com/paritytech/parity/pull/531) - Morden switch to Homestead rules at #494,000. [#531](https://github.com/openethereum/openethereum/pull/531)
- Blockchain module cleanup [#524](https://github.com/paritytech/parity/pull/524) - Blockchain module cleanup [#524](https://github.com/openethereum/openethereum/pull/524)
- Multiplication issue + very exhaustive tests for it [#528](https://github.com/paritytech/parity/pull/528) - Multiplication issue + very exhaustive tests for it [#528](https://github.com/openethereum/openethereum/pull/528)
- EIP-8 [#498](https://github.com/paritytech/parity/pull/498) - EIP-8 [#498](https://github.com/openethereum/openethereum/pull/498)
- Make "random" trie tests fully deterministic. [#527](https://github.com/paritytech/parity/pull/527) - Make "random" trie tests fully deterministic. [#527](https://github.com/openethereum/openethereum/pull/527)
- udpated serde to version 0.7.0 [#526](https://github.com/paritytech/parity/pull/526) - udpated serde to version 0.7.0 [#526](https://github.com/openethereum/openethereum/pull/526)
- Better memory management [#516](https://github.com/paritytech/parity/pull/516) - Better memory management [#516](https://github.com/openethereum/openethereum/pull/516)
- Typo [#523](https://github.com/paritytech/parity/pull/523) - Typo [#523](https://github.com/openethereum/openethereum/pull/523)
- U512 add/sub optimize [#521](https://github.com/paritytech/parity/pull/521) - U512 add/sub optimize [#521](https://github.com/openethereum/openethereum/pull/521)
- Account management + geth keystore import (no utility crate added) [#509](https://github.com/paritytech/parity/pull/509) - Account management + geth keystore import (no utility crate added) [#509](https://github.com/openethereum/openethereum/pull/509)
- Delayed UPnP initialization [#505](https://github.com/paritytech/parity/pull/505) - Delayed UPnP initialization [#505](https://github.com/openethereum/openethereum/pull/505)
- Fixing marking blocks as bad & SyncMessage bugs + small client refactoring. [#503](https://github.com/paritytech/parity/pull/503) - Fixing marking blocks as bad & SyncMessage bugs + small client refactoring. [#503](https://github.com/openethereum/openethereum/pull/503)
- optimization of U256 [#515](https://github.com/paritytech/parity/pull/515) - optimization of U256 [#515](https://github.com/openethereum/openethereum/pull/515)
- Removed rocksdb from build scripts and instructions [#520](https://github.com/paritytech/parity/pull/520) - Removed rocksdb from build scripts and instructions [#520](https://github.com/openethereum/openethereum/pull/520)
- RocksDB abstraction layer + Hash index for state DB [#464](https://github.com/paritytech/parity/pull/464) - RocksDB abstraction layer + Hash index for state DB [#464](https://github.com/openethereum/openethereum/pull/464)
- bloomfilter [#418](https://github.com/paritytech/parity/pull/418) - bloomfilter [#418](https://github.com/openethereum/openethereum/pull/418)
- Fixed a race condition when connecting peer disconnects immediately [#519](https://github.com/paritytech/parity/pull/519) - Fixed a race condition when connecting peer disconnects immediately [#519](https://github.com/openethereum/openethereum/pull/519)
- ignore intellij idea project files as well [#518](https://github.com/paritytech/parity/pull/518) - ignore intellij idea project files as well [#518](https://github.com/openethereum/openethereum/pull/518)
- updated version of unicase [#517](https://github.com/paritytech/parity/pull/517) - updated version of unicase [#517](https://github.com/openethereum/openethereum/pull/517)
- jsonrpc security, cors headers, fixed #359 [#493](https://github.com/paritytech/parity/pull/493) - jsonrpc security, cors headers, fixed #359 [#493](https://github.com/openethereum/openethereum/pull/493)
- Rust implementations to replace data tables (#161) [#482](https://github.com/paritytech/parity/pull/482) - Rust implementations to replace data tables (#161) [#482](https://github.com/openethereum/openethereum/pull/482)
- fix issue with starting requested block number was not included itself [#512](https://github.com/paritytech/parity/pull/512) - fix issue with starting requested block number was not included itself [#512](https://github.com/openethereum/openethereum/pull/512)
- fixed travis --org GH_TOKEN [#510](https://github.com/paritytech/parity/pull/510) - fixed travis --org GH_TOKEN [#510](https://github.com/openethereum/openethereum/pull/510)
- Improved log format [#506](https://github.com/paritytech/parity/pull/506) - Improved log format [#506](https://github.com/openethereum/openethereum/pull/506)
- Log address on failed connection attempt [#502](https://github.com/paritytech/parity/pull/502) - Log address on failed connection attempt [#502](https://github.com/openethereum/openethereum/pull/502)
- Bumping clippy and fixing warnings. [#501](https://github.com/paritytech/parity/pull/501) - Bumping clippy and fixing warnings. [#501](https://github.com/openethereum/openethereum/pull/501)
- Bumping versions. Fixes #496 [#500](https://github.com/paritytech/parity/pull/500) - Bumping versions. Fixes #496 [#500](https://github.com/openethereum/openethereum/pull/500)
- Manage final user-input errors. [#494](https://github.com/paritytech/parity/pull/494) - Manage final user-input errors. [#494](https://github.com/openethereum/openethereum/pull/494)
- Remove unneeded code, fix minor potential issue with length. [#495](https://github.com/paritytech/parity/pull/495) - Remove unneeded code, fix minor potential issue with length. [#495](https://github.com/openethereum/openethereum/pull/495)
- Remove "unknown" from version string. [#488](https://github.com/paritytech/parity/pull/488) - Remove "unknown" from version string. [#488](https://github.com/openethereum/openethereum/pull/488)
- Include git commit date & hash. [#486](https://github.com/paritytech/parity/pull/486) - Include git commit date & hash. [#486](https://github.com/openethereum/openethereum/pull/486)
- Use proper version string. [#485](https://github.com/paritytech/parity/pull/485) - Use proper version string. [#485](https://github.com/openethereum/openethereum/pull/485)
- Networking fixes [#480](https://github.com/paritytech/parity/pull/480) - Networking fixes [#480](https://github.com/openethereum/openethereum/pull/480)
- Fix potential deadlock on node table update [#484](https://github.com/paritytech/parity/pull/484) - Fix potential deadlock on node table update [#484](https://github.com/openethereum/openethereum/pull/484)
- Squash more warnings [#481](https://github.com/paritytech/parity/pull/481) - Squash more warnings [#481](https://github.com/openethereum/openethereum/pull/481)
- dev/test/build tools to separate crate [#477](https://github.com/paritytech/parity/pull/477) - dev/test/build tools to separate crate [#477](https://github.com/openethereum/openethereum/pull/477)
- Back to original slab crate [#479](https://github.com/paritytech/parity/pull/479) - Back to original slab crate [#479](https://github.com/openethereum/openethereum/pull/479)
- Better user errors. [#476](https://github.com/paritytech/parity/pull/476) - Better user errors. [#476](https://github.com/openethereum/openethereum/pull/476)
- UDP Discovery [#440](https://github.com/paritytech/parity/pull/440) - UDP Discovery [#440](https://github.com/openethereum/openethereum/pull/440)
- update readme with rust override [#475](https://github.com/paritytech/parity/pull/475) - update readme with rust override [#475](https://github.com/openethereum/openethereum/pull/475)
- fixed warnings on rust beta [#474](https://github.com/paritytech/parity/pull/474) - fixed warnings on rust beta [#474](https://github.com/openethereum/openethereum/pull/474)
- Secret store (part2 - encrypted key/value svc) [#449](https://github.com/paritytech/parity/pull/449) - Secret store (part2 - encrypted key/value svc) [#449](https://github.com/openethereum/openethereum/pull/449)
- Kill bad test. [#473](https://github.com/paritytech/parity/pull/473) - Kill bad test. [#473](https://github.com/openethereum/openethereum/pull/473)
- Make clippy an optional dependency [#422](https://github.com/paritytech/parity/pull/422) - Make clippy an optional dependency [#422](https://github.com/openethereum/openethereum/pull/422)
- parity compiling fine [#469](https://github.com/paritytech/parity/pull/469) - parity compiling fine [#469](https://github.com/openethereum/openethereum/pull/469)
- compiling ethcore on beta [#468](https://github.com/paritytech/parity/pull/468) - compiling ethcore on beta [#468](https://github.com/openethereum/openethereum/pull/468)
- Utils compiling in beta [#467](https://github.com/paritytech/parity/pull/467) - Utils compiling in beta [#467](https://github.com/openethereum/openethereum/pull/467)
- Get rid of lru_cache dependency [#466](https://github.com/paritytech/parity/pull/466) - Get rid of lru_cache dependency [#466](https://github.com/openethereum/openethereum/pull/466)
- Add daemonization. [#459](https://github.com/paritytech/parity/pull/459) - Add daemonization. [#459](https://github.com/openethereum/openethereum/pull/459)
- Master upgrade [#448](https://github.com/paritytech/parity/pull/448) - Master upgrade [#448](https://github.com/openethereum/openethereum/pull/448)
- Remove contributing stuff now that we have CLA bot. [#447](https://github.com/paritytech/parity/pull/447) - Remove contributing stuff now that we have CLA bot. [#447](https://github.com/openethereum/openethereum/pull/447)
- Add Morden bootnode. [#446](https://github.com/paritytech/parity/pull/446) - Add Morden bootnode. [#446](https://github.com/openethereum/openethereum/pull/446)
- beta fixes to master [#441](https://github.com/paritytech/parity/pull/441) - beta fixes to master [#441](https://github.com/openethereum/openethereum/pull/441)
- Secret store (part1 - key management) [#423](https://github.com/paritytech/parity/pull/423) - Secret store (part1 - key management) [#423](https://github.com/openethereum/openethereum/pull/423)
- Use 1100000 as the homestead transition, fix build instructions. [#438](https://github.com/paritytech/parity/pull/438) - Use 1100000 as the homestead transition, fix build instructions. [#438](https://github.com/openethereum/openethereum/pull/438)
- More sync and propagation fixes [#420](https://github.com/paritytech/parity/pull/420) - More sync and propagation fixes [#420](https://github.com/openethereum/openethereum/pull/420)
- back to cargo crates [#436](https://github.com/paritytech/parity/pull/436) - back to cargo crates [#436](https://github.com/openethereum/openethereum/pull/436)
- Fixing clippy warnings [#435](https://github.com/paritytech/parity/pull/435) - Fixing clippy warnings [#435](https://github.com/openethereum/openethereum/pull/435)
- preserving root cargo lock [#434](https://github.com/paritytech/parity/pull/434) - preserving root cargo lock [#434](https://github.com/openethereum/openethereum/pull/434)
- Nightly fix [#432](https://github.com/paritytech/parity/pull/432) - Nightly fix [#432](https://github.com/openethereum/openethereum/pull/432)
- nightly fixes [#431](https://github.com/paritytech/parity/pull/431) - nightly fixes [#431](https://github.com/openethereum/openethereum/pull/431)
- Delay Homestead transition from 1,000,000. [#429](https://github.com/paritytech/parity/pull/429) - Delay Homestead transition from 1,000,000. [#429](https://github.com/openethereum/openethereum/pull/429)
- Nightly fix effort (still should fail) [#428](https://github.com/paritytech/parity/pull/428) - Nightly fix effort (still should fail) [#428](https://github.com/openethereum/openethereum/pull/428)
- clippy version update, docopt-macro moving to fork [#425](https://github.com/paritytech/parity/pull/425) - clippy version update, docopt-macro moving to fork [#425](https://github.com/openethereum/openethereum/pull/425)
- Network/Sync fixes and optimizations [#416](https://github.com/paritytech/parity/pull/416) - Network/Sync fixes and optimizations [#416](https://github.com/openethereum/openethereum/pull/416)
- Use latest era instead of end era as journal marker [#414](https://github.com/paritytech/parity/pull/414) - Use latest era instead of end era as journal marker [#414](https://github.com/openethereum/openethereum/pull/414)
- api changes [#402](https://github.com/paritytech/parity/pull/402) - api changes [#402](https://github.com/openethereum/openethereum/pull/402)
- Option for no init nodes. [#408](https://github.com/paritytech/parity/pull/408) - Option for no init nodes. [#408](https://github.com/openethereum/openethereum/pull/408)
- Fixed block_bodies not returning a list [#406](https://github.com/paritytech/parity/pull/406) - Fixed block_bodies not returning a list [#406](https://github.com/openethereum/openethereum/pull/406)
- Fix test. [#405](https://github.com/paritytech/parity/pull/405) - Fix test. [#405](https://github.com/openethereum/openethereum/pull/405)
- Allow path to be configured. [#404](https://github.com/paritytech/parity/pull/404) - Allow path to be configured. [#404](https://github.com/openethereum/openethereum/pull/404)
- Upnp [#400](https://github.com/paritytech/parity/pull/400) - Upnp [#400](https://github.com/openethereum/openethereum/pull/400)
- eth_syncing, fixed #397 [#398](https://github.com/paritytech/parity/pull/398) - eth_syncing, fixed #397 [#398](https://github.com/openethereum/openethereum/pull/398)
- Using modified version of ctrlc that catches SIGTERM [#399](https://github.com/paritytech/parity/pull/399) - Using modified version of ctrlc that catches SIGTERM [#399](https://github.com/openethereum/openethereum/pull/399)
- Catching panics. [#396](https://github.com/paritytech/parity/pull/396) - Catching panics. [#396](https://github.com/openethereum/openethereum/pull/396)
- jsonrpc [#391](https://github.com/paritytech/parity/pull/391) - jsonrpc [#391](https://github.com/openethereum/openethereum/pull/391)
- Externalities tests (still clumsy) [#394](https://github.com/paritytech/parity/pull/394) - Externalities tests (still clumsy) [#394](https://github.com/openethereum/openethereum/pull/394)
- excluding test code itself from coverage [#395](https://github.com/paritytech/parity/pull/395) - excluding test code itself from coverage [#395](https://github.com/openethereum/openethereum/pull/395)
- Additional tweaks to options. [#390](https://github.com/paritytech/parity/pull/390) - Additional tweaks to options. [#390](https://github.com/openethereum/openethereum/pull/390)
- --chain option for setting which network to go on. [#388](https://github.com/paritytech/parity/pull/388) - --chain option for setting which network to go on. [#388](https://github.com/openethereum/openethereum/pull/388)
- Ethash unit tests final [#387](https://github.com/paritytech/parity/pull/387) - Ethash unit tests final [#387](https://github.com/openethereum/openethereum/pull/387)
- jsonrpc [#374](https://github.com/paritytech/parity/pull/374) - jsonrpc [#374](https://github.com/openethereum/openethereum/pull/374)
- Editorconfig file. [#384](https://github.com/paritytech/parity/pull/384) - Editorconfig file. [#384](https://github.com/openethereum/openethereum/pull/384)
- Coverage effort [in progress] [#382](https://github.com/paritytech/parity/pull/382) - Coverage effort [in progress] [#382](https://github.com/openethereum/openethereum/pull/382)
- making root kcov runner simular to the one running on CI [#380](https://github.com/paritytech/parity/pull/380) - making root kcov runner simular to the one running on CI [#380](https://github.com/openethereum/openethereum/pull/380)
- add gcc as a dependency to dockerfiles [#381](https://github.com/paritytech/parity/pull/381) - add gcc as a dependency to dockerfiles [#381](https://github.com/openethereum/openethereum/pull/381)
- Check for handshake expiration before attempting connection replace [#375](https://github.com/paritytech/parity/pull/375) - Check for handshake expiration before attempting connection replace [#375](https://github.com/openethereum/openethereum/pull/375)
- Blocks propagation [#364](https://github.com/paritytech/parity/pull/364) - Blocks propagation [#364](https://github.com/openethereum/openethereum/pull/364)
- Network params. [#376](https://github.com/paritytech/parity/pull/376) - Network params. [#376](https://github.com/openethereum/openethereum/pull/376)
- Add parity-node-zero to bootnodes. [#373](https://github.com/paritytech/parity/pull/373) - Add parity-node-zero to bootnodes. [#373](https://github.com/openethereum/openethereum/pull/373)
- kcov uses travis_job_id instead of coveralls token [#370](https://github.com/paritytech/parity/pull/370) - kcov uses travis_job_id instead of coveralls token [#370](https://github.com/openethereum/openethereum/pull/370)
- Add parity-node-zero.ethcore.io to boot nodes. [#371](https://github.com/paritytech/parity/pull/371) - Add parity-node-zero.ethcore.io to boot nodes. [#371](https://github.com/openethereum/openethereum/pull/371)
## Parity [v1.0.0-rc1](https://github.com/paritytech/parity/releases/tag/v1.0.0-rc1) (2016-03-15) ## Parity [v1.0.0-rc1](https://github.com/openethereum/openethereum/releases/tag/v1.0.0-rc1) (2016-03-15)
First Parity 1.0.0 release candidate. First Parity 1.0.0 release candidate.
- Version 1.0 in beta [#712](https://github.com/paritytech/parity/pull/712) - Version 1.0 in beta [#712](https://github.com/openethereum/openethereum/pull/712)
- Fix test for beta [#617](https://github.com/paritytech/parity/pull/617) - Fix test for beta [#617](https://github.com/openethereum/openethereum/pull/617)
- JournalDB fix option 1 for beta [#614](https://github.com/paritytech/parity/pull/614) - JournalDB fix option 1 for beta [#614](https://github.com/openethereum/openethereum/pull/614)
- Failing test. [#606](https://github.com/paritytech/parity/pull/606) - Failing test. [#606](https://github.com/openethereum/openethereum/pull/606)
- Fix transition points [#604](https://github.com/paritytech/parity/pull/604) - Fix transition points [#604](https://github.com/openethereum/openethereum/pull/604)
- (BETA) Update README.md [#549](https://github.com/paritytech/parity/pull/549) - (BETA) Update README.md [#549](https://github.com/openethereum/openethereum/pull/549)
- (BETA) instructions for beta release channel [#456](https://github.com/paritytech/parity/pull/456) - (BETA) instructions for beta release channel [#456](https://github.com/openethereum/openethereum/pull/456)
- (BETA) fix nightly - remerge [#454](https://github.com/paritytech/parity/pull/454) - (BETA) fix nightly - remerge [#454](https://github.com/openethereum/openethereum/pull/454)
- (BETA) fixing nightly version for beta [#452](https://github.com/paritytech/parity/pull/452) - (BETA) fixing nightly version for beta [#452](https://github.com/openethereum/openethereum/pull/452)

View File

@@ -1,6 +1,6 @@
Note: Parity 1.1 reached End-of-Life on 2016-08-12 (EOL). Note: Parity 1.1 reached End-of-Life on 2016-08-12 (EOL).
## Parity [v1.1.0](https://github.com/paritytech/parity/releases/tag/v1.1.0) (2016-05-02) ## Parity [v1.1.0](https://github.com/openethereum/openethereum/releases/tag/v1.1.0) (2016-05-02)
Parity 1.1.0 introduces: Parity 1.1.0 introduces:
@@ -12,143 +12,143 @@ Parity 1.1.0 introduces:
Full Changes: Full Changes:
- Exposing default extra data via ethcore RPC [#1032](https://github.com/paritytech/parity/pull/1032) - Exposing default extra data via ethcore RPC [#1032](https://github.com/openethereum/openethereum/pull/1032)
- Net etiquette [#1028](https://github.com/paritytech/parity/pull/1028) - Net etiquette [#1028](https://github.com/openethereum/openethereum/pull/1028)
- Bumping clippy & fixing warnings [#1024](https://github.com/paritytech/parity/pull/1024) - Bumping clippy & fixing warnings [#1024](https://github.com/openethereum/openethereum/pull/1024)
- Tracedb interface && cli [#997](https://github.com/paritytech/parity/pull/997) - Tracedb interface && cli [#997](https://github.com/openethereum/openethereum/pull/997)
- Switching to geth-attach supporting version of rpc core and server [#1022](https://github.com/paritytech/parity/pull/1022) - Switching to geth-attach supporting version of rpc core and server [#1022](https://github.com/openethereum/openethereum/pull/1022)
- Fixing status page displaying homestead [#1020](https://github.com/paritytech/parity/pull/1020) - Fixing status page displaying homestead [#1020](https://github.com/openethereum/openethereum/pull/1020)
- Core tracedb functionality. [#996](https://github.com/paritytech/parity/pull/996) - Core tracedb functionality. [#996](https://github.com/openethereum/openethereum/pull/996)
- RPC method for supported modules [#1019](https://github.com/paritytech/parity/pull/1019) - RPC method for supported modules [#1019](https://github.com/openethereum/openethereum/pull/1019)
- Updating status page [#1015](https://github.com/paritytech/parity/pull/1015) - Updating status page [#1015](https://github.com/openethereum/openethereum/pull/1015)
- Disabling wallet [#1017](https://github.com/paritytech/parity/pull/1017) - Disabling wallet [#1017](https://github.com/openethereum/openethereum/pull/1017)
- More detailed fatal error reporting [#1016](https://github.com/paritytech/parity/pull/1016) - More detailed fatal error reporting [#1016](https://github.com/openethereum/openethereum/pull/1016)
- Support 'pending' block in RPC [#1007](https://github.com/paritytech/parity/pull/1007) - Support 'pending' block in RPC [#1007](https://github.com/openethereum/openethereum/pull/1007)
- Enable pending block when there is local transaction pending. [#1005](https://github.com/paritytech/parity/pull/1005) - Enable pending block when there is local transaction pending. [#1005](https://github.com/openethereum/openethereum/pull/1005)
- updating key files permissions on save [#1010](https://github.com/paritytech/parity/pull/1010) - updating key files permissions on save [#1010](https://github.com/openethereum/openethereum/pull/1010)
- IPC JSON RPC (for external interface) [#1009](https://github.com/paritytech/parity/pull/1009) - IPC JSON RPC (for external interface) [#1009](https://github.com/openethereum/openethereum/pull/1009)
- Fixing Firefox authorization issues [#1013](https://github.com/paritytech/parity/pull/1013) - Fixing Firefox authorization issues [#1013](https://github.com/openethereum/openethereum/pull/1013)
- cargo update [#1012](https://github.com/paritytech/parity/pull/1012) - cargo update [#1012](https://github.com/openethereum/openethereum/pull/1012)
- Switching to rust-url@1.0.0 [#1011](https://github.com/paritytech/parity/pull/1011) - Switching to rust-url@1.0.0 [#1011](https://github.com/openethereum/openethereum/pull/1011)
- Exception handling in RPC & WebApps [#988](https://github.com/paritytech/parity/pull/988) - Exception handling in RPC & WebApps [#988](https://github.com/openethereum/openethereum/pull/988)
- Fixed uint deserialization from hex [#1008](https://github.com/paritytech/parity/pull/1008) - Fixed uint deserialization from hex [#1008](https://github.com/openethereum/openethereum/pull/1008)
- Tweak timeout and packet size to handle slow networks better [#1004](https://github.com/paritytech/parity/pull/1004) - Tweak timeout and packet size to handle slow networks better [#1004](https://github.com/openethereum/openethereum/pull/1004)
- db key is generic and can be made smaller [#1006](https://github.com/paritytech/parity/pull/1006) - db key is generic and can be made smaller [#1006](https://github.com/openethereum/openethereum/pull/1006)
- IPC with new serialization [#998](https://github.com/paritytech/parity/pull/998) - IPC with new serialization [#998](https://github.com/openethereum/openethereum/pull/998)
- make jsonrpc api engine agnostic [#1001](https://github.com/paritytech/parity/pull/1001) - make jsonrpc api engine agnostic [#1001](https://github.com/openethereum/openethereum/pull/1001)
- updated cargo.lock [#1002](https://github.com/paritytech/parity/pull/1002) - updated cargo.lock [#1002](https://github.com/openethereum/openethereum/pull/1002)
- updated parity dependencies [#993](https://github.com/paritytech/parity/pull/993) - updated parity dependencies [#993](https://github.com/openethereum/openethereum/pull/993)
- Auto (with codegen) binary serializer [#980](https://github.com/paritytech/parity/pull/980) - Auto (with codegen) binary serializer [#980](https://github.com/openethereum/openethereum/pull/980)
- Fixing transaction queue last_nonces update [#995](https://github.com/paritytech/parity/pull/995) - Fixing transaction queue last_nonces update [#995](https://github.com/openethereum/openethereum/pull/995)
- import route contains ommited blocks [#994](https://github.com/paritytech/parity/pull/994) - import route contains ommited blocks [#994](https://github.com/openethereum/openethereum/pull/994)
- fixed encoding 0u8 [#992](https://github.com/paritytech/parity/pull/992) - fixed encoding 0u8 [#992](https://github.com/openethereum/openethereum/pull/992)
- Use latest netstats [#989](https://github.com/paritytech/parity/pull/989) - Use latest netstats [#989](https://github.com/openethereum/openethereum/pull/989)
- RPC shared external miner [#984](https://github.com/paritytech/parity/pull/984) - RPC shared external miner [#984](https://github.com/openethereum/openethereum/pull/984)
- Additional RPC methods for settings [#983](https://github.com/paritytech/parity/pull/983) - Additional RPC methods for settings [#983](https://github.com/openethereum/openethereum/pull/983)
- Fixing transaction_queue deadlock [#985](https://github.com/paritytech/parity/pull/985) - Fixing transaction_queue deadlock [#985](https://github.com/openethereum/openethereum/pull/985)
- Refactoring of `parity/main.rs` [#981](https://github.com/paritytech/parity/pull/981) - Refactoring of `parity/main.rs` [#981](https://github.com/openethereum/openethereum/pull/981)
- Fixing clippy warnings. [#982](https://github.com/paritytech/parity/pull/982) - Fixing clippy warnings. [#982](https://github.com/openethereum/openethereum/pull/982)
- Bumping status page [#977](https://github.com/paritytech/parity/pull/977) - Bumping status page [#977](https://github.com/openethereum/openethereum/pull/977)
- querying extras separated to its own module [#972](https://github.com/paritytech/parity/pull/972) - querying extras separated to its own module [#972](https://github.com/openethereum/openethereum/pull/972)
- Exposing application logs via RPC. [#976](https://github.com/paritytech/parity/pull/976) - Exposing application logs via RPC. [#976](https://github.com/openethereum/openethereum/pull/976)
- Addressing binary serialization for db types [#966](https://github.com/paritytech/parity/pull/966) - Addressing binary serialization for db types [#966](https://github.com/openethereum/openethereum/pull/966)
- removed redundant unwraps [#935](https://github.com/paritytech/parity/pull/935) - removed redundant unwraps [#935](https://github.com/openethereum/openethereum/pull/935)
- fixed transaction queue merge conflict [#975](https://github.com/paritytech/parity/pull/975) - fixed transaction queue merge conflict [#975](https://github.com/openethereum/openethereum/pull/975)
- Configurable limit for transaction queue (CLI & Ethcore-RPC) [#974](https://github.com/paritytech/parity/pull/974) - Configurable limit for transaction queue (CLI & Ethcore-RPC) [#974](https://github.com/openethereum/openethereum/pull/974)
- Enforce limit caused `last_nonce` to return incorrect values. [#973](https://github.com/paritytech/parity/pull/973) - Enforce limit caused `last_nonce` to return incorrect values. [#973](https://github.com/openethereum/openethereum/pull/973)
- Even more detailed errors for transaction queue [#969](https://github.com/paritytech/parity/pull/969) - Even more detailed errors for transaction queue [#969](https://github.com/openethereum/openethereum/pull/969)
- temporary fix of panic in blockchain garbage collection [#970](https://github.com/paritytech/parity/pull/970) - temporary fix of panic in blockchain garbage collection [#970](https://github.com/openethereum/openethereum/pull/970)
- IPC codegen - some minor fixes & enhancements [#967](https://github.com/paritytech/parity/pull/967) - IPC codegen - some minor fixes & enhancements [#967](https://github.com/openethereum/openethereum/pull/967)
- Additional logging for transactions [#968](https://github.com/paritytech/parity/pull/968) - Additional logging for transactions [#968](https://github.com/openethereum/openethereum/pull/968)
- refactored blockchain extras keys building [#963](https://github.com/paritytech/parity/pull/963) - refactored blockchain extras keys building [#963](https://github.com/openethereum/openethereum/pull/963)
- Using hyper-mio branch in webapps. [#957](https://github.com/paritytech/parity/pull/957) - Using hyper-mio branch in webapps. [#957](https://github.com/openethereum/openethereum/pull/957)
- Remove nanomsg from build-dependencies [#965](https://github.com/paritytech/parity/pull/965) - Remove nanomsg from build-dependencies [#965](https://github.com/openethereum/openethereum/pull/965)
- Fix build for --target=armv7-unknown-linux-gnueabihf [#964](https://github.com/paritytech/parity/pull/964) - Fix build for --target=armv7-unknown-linux-gnueabihf [#964](https://github.com/openethereum/openethereum/pull/964)
- IPC RPC codegen extra feature [#962](https://github.com/paritytech/parity/pull/962) - IPC RPC codegen extra feature [#962](https://github.com/openethereum/openethereum/pull/962)
- IPC RPC codegen for generic implementation [#961](https://github.com/paritytech/parity/pull/961) - IPC RPC codegen for generic implementation [#961](https://github.com/openethereum/openethereum/pull/961)
- using db_path directory when upgrading [#960](https://github.com/paritytech/parity/pull/960) - using db_path directory when upgrading [#960](https://github.com/openethereum/openethereum/pull/960)
- IPC hypervisor [#958](https://github.com/paritytech/parity/pull/958) - IPC hypervisor [#958](https://github.com/openethereum/openethereum/pull/958)
- Removing a transaction from queue now removes all from this sender with lower nonces. [#950](https://github.com/paritytech/parity/pull/950) - Removing a transaction from queue now removes all from this sender with lower nonces. [#950](https://github.com/openethereum/openethereum/pull/950)
- bump status page version 0.1.7 [#955](https://github.com/paritytech/parity/pull/955) - bump status page version 0.1.7 [#955](https://github.com/openethereum/openethereum/pull/955)
- Changing cors header to be optional [#956](https://github.com/paritytech/parity/pull/956) - Changing cors header to be optional [#956](https://github.com/openethereum/openethereum/pull/956)
- Update ARM Dockerfile [#959](https://github.com/paritytech/parity/pull/959) - Update ARM Dockerfile [#959](https://github.com/openethereum/openethereum/pull/959)
- Sensible gas limits for eth_sendTransaction [#953](https://github.com/paritytech/parity/pull/953) - Sensible gas limits for eth_sendTransaction [#953](https://github.com/openethereum/openethereum/pull/953)
- Fix upgrade script and make parity run when no .parity dir. [#954](https://github.com/paritytech/parity/pull/954) - Fix upgrade script and make parity run when no .parity dir. [#954](https://github.com/openethereum/openethereum/pull/954)
- Tracing and docs for --pruning=auto. [#952](https://github.com/paritytech/parity/pull/952) - Tracing and docs for --pruning=auto. [#952](https://github.com/openethereum/openethereum/pull/952)
- IPC serialization for custom parameters [#946](https://github.com/paritytech/parity/pull/946) - IPC serialization for custom parameters [#946](https://github.com/openethereum/openethereum/pull/946)
- default filter from block should be Latest, not Earliest [#948](https://github.com/paritytech/parity/pull/948) - default filter from block should be Latest, not Earliest [#948](https://github.com/openethereum/openethereum/pull/948)
- README.md: removes sudo from multirust installation [#943](https://github.com/paritytech/parity/pull/943) - README.md: removes sudo from multirust installation [#943](https://github.com/openethereum/openethereum/pull/943)
- Disable long lines formatting + ethash example. [#939](https://github.com/paritytech/parity/pull/939) - Disable long lines formatting + ethash example. [#939](https://github.com/openethereum/openethereum/pull/939)
- Ethcore-specific RPC methods for altering miner parameters. [#934](https://github.com/paritytech/parity/pull/934) - Ethcore-specific RPC methods for altering miner parameters. [#934](https://github.com/openethereum/openethereum/pull/934)
- Use ethcore nanomsg bindings [#941](https://github.com/paritytech/parity/pull/941) - Use ethcore nanomsg bindings [#941](https://github.com/openethereum/openethereum/pull/941)
- Update IPC codegen to latest syntax libs [#938](https://github.com/paritytech/parity/pull/938) - Update IPC codegen to latest syntax libs [#938](https://github.com/openethereum/openethereum/pull/938)
- IPC documentation [#937](https://github.com/paritytech/parity/pull/937) - IPC documentation [#937](https://github.com/openethereum/openethereum/pull/937)
- Bumping clippy and fixing warnings. [#936](https://github.com/paritytech/parity/pull/936) - Bumping clippy and fixing warnings. [#936](https://github.com/openethereum/openethereum/pull/936)
- Pruning auto [#927](https://github.com/paritytech/parity/pull/927) - Pruning auto [#927](https://github.com/openethereum/openethereum/pull/927)
- IPC persistent client link [#933](https://github.com/paritytech/parity/pull/933) - IPC persistent client link [#933](https://github.com/openethereum/openethereum/pull/933)
- IPC persistent client link [#930](https://github.com/paritytech/parity/pull/930) - IPC persistent client link [#930](https://github.com/openethereum/openethereum/pull/930)
- IPC handshake (negotiating protocol/api version) [#928](https://github.com/paritytech/parity/pull/928) - IPC handshake (negotiating protocol/api version) [#928](https://github.com/openethereum/openethereum/pull/928)
- Upgrade logic between versions [#914](https://github.com/paritytech/parity/pull/914) - Upgrade logic between versions [#914](https://github.com/openethereum/openethereum/pull/914)
- executive tracing cleanup [#903](https://github.com/paritytech/parity/pull/903) - executive tracing cleanup [#903](https://github.com/openethereum/openethereum/pull/903)
- Ethcore-specific RPC methods [#923](https://github.com/paritytech/parity/pull/923) - Ethcore-specific RPC methods [#923](https://github.com/openethereum/openethereum/pull/923)
- Parameter to allow user to force the sealing mechanism [#918](https://github.com/paritytech/parity/pull/918) - Parameter to allow user to force the sealing mechanism [#918](https://github.com/openethereum/openethereum/pull/918)
- updated dependencies [#921](https://github.com/paritytech/parity/pull/921) - updated dependencies [#921](https://github.com/openethereum/openethereum/pull/921)
- Fixed send transaction deadlock [#920](https://github.com/paritytech/parity/pull/920) - Fixed send transaction deadlock [#920](https://github.com/openethereum/openethereum/pull/920)
- --unlock is comma-delimited. [#916](https://github.com/paritytech/parity/pull/916) - --unlock is comma-delimited. [#916](https://github.com/openethereum/openethereum/pull/916)
- fixed eth_getLogs [#915](https://github.com/paritytech/parity/pull/915) - fixed eth_getLogs [#915](https://github.com/openethereum/openethereum/pull/915)
- create provided custom dir for keys if none [#912](https://github.com/paritytech/parity/pull/912) - create provided custom dir for keys if none [#912](https://github.com/openethereum/openethereum/pull/912)
- spec loading cleanup [#858](https://github.com/paritytech/parity/pull/858) - spec loading cleanup [#858](https://github.com/openethereum/openethereum/pull/858)
- WebApps HTTP Basic Auth Support [#906](https://github.com/paritytech/parity/pull/906) - WebApps HTTP Basic Auth Support [#906](https://github.com/openethereum/openethereum/pull/906)
- Removing match on constant [#888](https://github.com/paritytech/parity/pull/888) - Removing match on constant [#888](https://github.com/openethereum/openethereum/pull/888)
- Update auth.rs [#907](https://github.com/paritytech/parity/pull/907) - Update auth.rs [#907](https://github.com/openethereum/openethereum/pull/907)
- Enabling webapps compilation by default [#904](https://github.com/paritytech/parity/pull/904) - Enabling webapps compilation by default [#904](https://github.com/openethereum/openethereum/pull/904)
- fixed #895 [#898](https://github.com/paritytech/parity/pull/898) - fixed #895 [#898](https://github.com/openethereum/openethereum/pull/898)
- Support for compile-time included WebApplications. [#899](https://github.com/paritytech/parity/pull/899) - Support for compile-time included WebApplications. [#899](https://github.com/openethereum/openethereum/pull/899)
- Propagate transaction queue [#894](https://github.com/paritytech/parity/pull/894) - Propagate transaction queue [#894](https://github.com/openethereum/openethereum/pull/894)
- Use new json RPC server [#901](https://github.com/paritytech/parity/pull/901) - Use new json RPC server [#901](https://github.com/openethereum/openethereum/pull/901)
- Gracefully dying when trying to enable RPC and app is compiled without it. [#900](https://github.com/paritytech/parity/pull/900) - Gracefully dying when trying to enable RPC and app is compiled without it. [#900](https://github.com/openethereum/openethereum/pull/900)
- Additional logging and friendlier error messages [#893](https://github.com/paritytech/parity/pull/893) - Additional logging and friendlier error messages [#893](https://github.com/openethereum/openethereum/pull/893)
- Avoid signalling readiness when app is about to be closed. [#897](https://github.com/paritytech/parity/pull/897) - Avoid signalling readiness when app is about to be closed. [#897](https://github.com/openethereum/openethereum/pull/897)
- fixed #875 and added tests for eth_sendTransaction [#890](https://github.com/paritytech/parity/pull/890) - fixed #875 and added tests for eth_sendTransaction [#890](https://github.com/openethereum/openethereum/pull/890)
- passing key path to all invocations [#891](https://github.com/paritytech/parity/pull/891) - passing key path to all invocations [#891](https://github.com/openethereum/openethereum/pull/891)
- Fixed eth_call nonce and gas handling [#892](https://github.com/paritytech/parity/pull/892) - Fixed eth_call nonce and gas handling [#892](https://github.com/openethereum/openethereum/pull/892)
- ipc rpc with nano transport (simple duplex) [#886](https://github.com/paritytech/parity/pull/886) - ipc rpc with nano transport (simple duplex) [#886](https://github.com/openethereum/openethereum/pull/886)
- Bumping clippy and fixing warnings [#889](https://github.com/paritytech/parity/pull/889) - Bumping clippy and fixing warnings [#889](https://github.com/openethereum/openethereum/pull/889)
- More descriptive expectations to transaction queue consistency. [#878](https://github.com/paritytech/parity/pull/878) - More descriptive expectations to transaction queue consistency. [#878](https://github.com/openethereum/openethereum/pull/878)
- uint bug - replace add with or [#879](https://github.com/paritytech/parity/pull/879) - uint bug - replace add with or [#879](https://github.com/openethereum/openethereum/pull/879)
- Fixing typo in bigint [#877](https://github.com/paritytech/parity/pull/877) - Fixing typo in bigint [#877](https://github.com/openethereum/openethereum/pull/877)
- update misleading cli help msg for author [#874](https://github.com/paritytech/parity/pull/874) - update misleading cli help msg for author [#874](https://github.com/openethereum/openethereum/pull/874)
- Find geth data store cross-platform. [#871](https://github.com/paritytech/parity/pull/871) - Find geth data store cross-platform. [#871](https://github.com/openethereum/openethereum/pull/871)
- Import geth 1.4.0 keys [#872](https://github.com/paritytech/parity/pull/872) - Import geth 1.4.0 keys [#872](https://github.com/openethereum/openethereum/pull/872)
- Syntax helpers for IPC RPC (part 2) [#854](https://github.com/paritytech/parity/pull/854) - Syntax helpers for IPC RPC (part 2) [#854](https://github.com/openethereum/openethereum/pull/854)
- Fixed bootnode URL and error message [#870](https://github.com/paritytech/parity/pull/870) - Fixed bootnode URL and error message [#870](https://github.com/openethereum/openethereum/pull/870)
- replace popcnt with mov (861) [#867](https://github.com/paritytech/parity/pull/867) - replace popcnt with mov (861) [#867](https://github.com/openethereum/openethereum/pull/867)
- weekly dependencies update [#865](https://github.com/paritytech/parity/pull/865) - weekly dependencies update [#865](https://github.com/openethereum/openethereum/pull/865)
- Remove unused mut [#866](https://github.com/paritytech/parity/pull/866) - Remove unused mut [#866](https://github.com/openethereum/openethereum/pull/866)
- fixed #855 [#864](https://github.com/paritytech/parity/pull/864) - fixed #855 [#864](https://github.com/openethereum/openethereum/pull/864)
- simplified trace from functions, removed clippy warnings [#862](https://github.com/paritytech/parity/pull/862) - simplified trace from functions, removed clippy warnings [#862](https://github.com/openethereum/openethereum/pull/862)
- Update deprecated HashDB methods in docs. [#857](https://github.com/paritytech/parity/pull/857) - Update deprecated HashDB methods in docs. [#857](https://github.com/openethereum/openethereum/pull/857)
- refactored loading transaction json tests [#853](https://github.com/paritytech/parity/pull/853) - refactored loading transaction json tests [#853](https://github.com/openethereum/openethereum/pull/853)
- reorganised price info lookup [#852](https://github.com/paritytech/parity/pull/852) - reorganised price info lookup [#852](https://github.com/openethereum/openethereum/pull/852)
- Publish locally-made transactions to peers. [#850](https://github.com/paritytech/parity/pull/850) - Publish locally-made transactions to peers. [#850](https://github.com/openethereum/openethereum/pull/850)
- Add generalbeck's token [#847](https://github.com/paritytech/parity/pull/847) - Add generalbeck's token [#847](https://github.com/openethereum/openethereum/pull/847)
- Fix response for mining. [#846](https://github.com/paritytech/parity/pull/846) - Fix response for mining. [#846](https://github.com/openethereum/openethereum/pull/846)
- USD-based pricing of gas. [#843](https://github.com/paritytech/parity/pull/843) - USD-based pricing of gas. [#843](https://github.com/openethereum/openethereum/pull/843)
- Parity can accept older work packages [#811](https://github.com/paritytech/parity/pull/811) - Parity can accept older work packages [#811](https://github.com/openethereum/openethereum/pull/811)
- Caching for computing seed hashes (#541) [#841](https://github.com/paritytech/parity/pull/841) - Caching for computing seed hashes (#541) [#841](https://github.com/openethereum/openethereum/pull/841)
- checking transaction queue for pending transaction [#838](https://github.com/paritytech/parity/pull/838) - checking transaction queue for pending transaction [#838](https://github.com/openethereum/openethereum/pull/838)
- refactored loading of state tests [#817](https://github.com/paritytech/parity/pull/817) - refactored loading of state tests [#817](https://github.com/openethereum/openethereum/pull/817)
- tests for deserialization of transaction from issue #835 [#837](https://github.com/paritytech/parity/pull/837) - tests for deserialization of transaction from issue #835 [#837](https://github.com/openethereum/openethereum/pull/837)
- unlocks with no expiration [on top of 833] [#834](https://github.com/paritytech/parity/pull/834) - unlocks with no expiration [on top of 833] [#834](https://github.com/openethereum/openethereum/pull/834)
- Unlock accounts on CLI. [#833](https://github.com/paritytech/parity/pull/833) - Unlock accounts on CLI. [#833](https://github.com/openethereum/openethereum/pull/833)
- Make BlockNumber optional, fix eth_call [#829](https://github.com/paritytech/parity/pull/829) - Make BlockNumber optional, fix eth_call [#829](https://github.com/openethereum/openethereum/pull/829)
- Test socket to common test code (ethcore-devtools) [#831](https://github.com/paritytech/parity/pull/831) - Test socket to common test code (ethcore-devtools) [#831](https://github.com/openethereum/openethereum/pull/831)
- Use network id for the web3_net_version return. [#822](https://github.com/paritytech/parity/pull/822) - Use network id for the web3_net_version return. [#822](https://github.com/openethereum/openethereum/pull/822)
- json-rpc web3_sha3 [#824](https://github.com/paritytech/parity/pull/824) - json-rpc web3_sha3 [#824](https://github.com/openethereum/openethereum/pull/824)
- remove some unused files [#819](https://github.com/paritytech/parity/pull/819) - remove some unused files [#819](https://github.com/openethereum/openethereum/pull/819)
- debug symbols for master/beta [#818](https://github.com/paritytech/parity/pull/818) - debug symbols for master/beta [#818](https://github.com/openethereum/openethereum/pull/818)
- Syntax helpers for IPC RPC [#809](https://github.com/paritytech/parity/pull/809) - Syntax helpers for IPC RPC [#809](https://github.com/openethereum/openethereum/pull/809)
- refactored loading of execution tests [#803](https://github.com/paritytech/parity/pull/803) - refactored loading of execution tests [#803](https://github.com/openethereum/openethereum/pull/803)
- Rustfmt.toml [#805](https://github.com/paritytech/parity/pull/805) - Rustfmt.toml [#805](https://github.com/openethereum/openethereum/pull/805)
- install-partiy runs brew reinstall parity on osx [#810](https://github.com/paritytech/parity/pull/810) - install-partiy runs brew reinstall parity on osx [#810](https://github.com/openethereum/openethereum/pull/810)
- Fix mining from spinning [#807](https://github.com/paritytech/parity/pull/807) - Fix mining from spinning [#807](https://github.com/openethereum/openethereum/pull/807)

View File

@@ -1,18 +1,18 @@
Note: Parity 1.10 reached End-of-Life on 2018-07-18 (EOL). Note: Parity 1.10 reached End-of-Life on 2018-07-18 (EOL).
## Parity [v1.10.9](https://github.com/paritytech/parity/releases/tag/v1.10.9) (2018-07-07) ## Parity [v1.10.9](https://github.com/openethereum/openethereum/releases/tag/v1.10.9) (2018-07-07)
Parity 1.10.9 is a bug-fix release to improve performance and stability. Parity 1.10.9 is a bug-fix release to improve performance and stability.
The full list of included changes: The full list of included changes:
- Stable: 1.10.9 backports ([#9016](https://github.com/paritytech/parity/pull/9016)) - Stable: 1.10.9 backports ([#9016](https://github.com/openethereum/openethereum/pull/9016))
- Parity-version: bump stable to 1.10.9 - Parity-version: bump stable to 1.10.9
- Scripts: remove md5 checksums ([#8884](https://github.com/paritytech/parity/pull/8884)) - Scripts: remove md5 checksums ([#8884](https://github.com/openethereum/openethereum/pull/8884))
- Add support for --chain tobalaba ([#8870](https://github.com/paritytech/parity/pull/8870)) - Add support for --chain tobalaba ([#8870](https://github.com/openethereum/openethereum/pull/8870))
- Add support for --chain tobalaba - Add support for --chain tobalaba
- Only return error log for rustls ([#9025](https://github.com/paritytech/parity/pull/9025)) - Only return error log for rustls ([#9025](https://github.com/openethereum/openethereum/pull/9025))
- Fixes for misbehavior reporting in AuthorityRound ([#8998](https://github.com/paritytech/parity/pull/8998)) - Fixes for misbehavior reporting in AuthorityRound ([#8998](https://github.com/openethereum/openethereum/pull/8998))
- Aura: only report after checking for repeated skipped primaries - Aura: only report after checking for repeated skipped primaries
- Aura: refactor duplicate code for getting epoch validator set - Aura: refactor duplicate code for getting epoch validator set
- Aura: verify_external: report on validator set contract instance - Aura: verify_external: report on validator set contract instance
@@ -26,62 +26,62 @@ The full list of included changes:
- Aura: let reporting fail on verify_block_basic - Aura: let reporting fail on verify_block_basic
- Aura: add comment about possible failure of reporting - Aura: add comment about possible failure of reporting
## Parity [v1.10.8](https://github.com/paritytech/parity/releases/tag/v1.10.8) (2018-06-29) ## Parity [v1.10.8](https://github.com/openethereum/openethereum/releases/tag/v1.10.8) (2018-06-29)
Parity 1.10.8 is a bug-fix release to improve performance and stability. Parity 1.10.8 is a bug-fix release to improve performance and stability.
The full list of included changes: The full list of included changes:
- Backports ([#8986](https://github.com/paritytech/parity/pull/8986)) - Backports ([#8986](https://github.com/openethereum/openethereum/pull/8986))
- Snap: downgrade rust to revision 1.26.2, ref snapcraft/+bug/1778530 ([#8984](https://github.com/paritytech/parity/pull/8984)) - Snap: downgrade rust to revision 1.26.2, ref snapcraft/+bug/1778530 ([#8984](https://github.com/openethereum/openethereum/pull/8984))
- Snap: downgrade rust to revision 1.26.2, ref snapcraft/+bug/1778530 - Snap: downgrade rust to revision 1.26.2, ref snapcraft/+bug/1778530
- Snap: use plugin rust - Snap: use plugin rust
- Fix deadlock in blockchain. ([#8977](https://github.com/paritytech/parity/pull/8977)) - Fix deadlock in blockchain. ([#8977](https://github.com/openethereum/openethereum/pull/8977))
- Remove js-glue from workspace - Remove js-glue from workspace
- Bump stable to 1.10.8 ([#8951](https://github.com/paritytech/parity/pull/8951)) - Bump stable to 1.10.8 ([#8951](https://github.com/openethereum/openethereum/pull/8951))
- Parity-version: bump stable to 1.10.8 - Parity-version: bump stable to 1.10.8
- Update ropsten.json ([#8926](https://github.com/paritytech/parity/pull/8926)) - Update ropsten.json ([#8926](https://github.com/openethereum/openethereum/pull/8926))
- Scripts: minor improvements ([#8930](https://github.com/paritytech/parity/pull/8930)) - Scripts: minor improvements ([#8930](https://github.com/openethereum/openethereum/pull/8930))
- CI: enable 'latest' docker tag on master pipeline - CI: enable 'latest' docker tag on master pipeline
- CI: mark both beta and stable as stable snap. - CI: mark both beta and stable as stable snap.
- CI: sign all windows binaries - CI: sign all windows binaries
- Scripts: remove whisper target not available in stable - Scripts: remove whisper target not available in stable
- Scripts: fix gitlab strip binaries - Scripts: fix gitlab strip binaries
- Scripts: fix docker build tag on latest using master ([#8952](https://github.com/paritytech/parity/pull/8952)) - Scripts: fix docker build tag on latest using master ([#8952](https://github.com/openethereum/openethereum/pull/8952))
- Rpc: cap gas limit of local calls ([#8943](https://github.com/paritytech/parity/pull/8943)) - Rpc: cap gas limit of local calls ([#8943](https://github.com/openethereum/openethereum/pull/8943))
## Parity [v1.10.7](https://github.com/paritytech/parity/releases/tag/v1.10.7) (2018-06-20) ## Parity [v1.10.7](https://github.com/openethereum/openethereum/releases/tag/v1.10.7) (2018-06-20)
Parity 1.10.7 is a bug-fix release to improve performance and stability. Parity 1.10.7 is a bug-fix release to improve performance and stability.
The full list of included changes: The full list of included changes:
- Backports ([#8919](https://github.com/paritytech/parity/pull/8919)) - Backports ([#8919](https://github.com/openethereum/openethereum/pull/8919))
- Fixed AuthorityRound deadlock on shutdown, closes [#8088](https://github.com/paritytech/parity/issues/8088) ([#8803](https://github.com/paritytech/parity/pull/8803)) - Fixed AuthorityRound deadlock on shutdown, closes [#8088](https://github.com/openethereum/openethereum/issues/8088) ([#8803](https://github.com/openethereum/openethereum/pull/8803))
- CI: Fix docker tags ([#8822](https://github.com/paritytech/parity/pull/8822)) - CI: Fix docker tags ([#8822](https://github.com/openethereum/openethereum/pull/8822))
- Scripts: enable docker builds for beta and stable - Scripts: enable docker builds for beta and stable
- Scripts: docker latest should be beta not master - Scripts: docker latest should be beta not master
- Scripts: docker latest is master - Scripts: docker latest is master
- Fix concurrent access to signer queue ([#8854](https://github.com/paritytech/parity/pull/8854)) - Fix concurrent access to signer queue ([#8854](https://github.com/openethereum/openethereum/pull/8854))
- Fix concurrent access to signer queue - Fix concurrent access to signer queue
- Put request back to the queue if confirmation failed - Put request back to the queue if confirmation failed
- Typo: fix docs and rename functions to be more specific - Typo: fix docs and rename functions to be more specific
- Change trace info "Transaction" -> "Request" - Change trace info "Transaction" -> "Request"
- Add new ovh bootnodes and fix port for foundation bootnode 3.2 ([#8886](https://github.com/paritytech/parity/pull/8886)) - Add new ovh bootnodes and fix port for foundation bootnode 3.2 ([#8886](https://github.com/openethereum/openethereum/pull/8886))
- Add new ovh bootnodes and fix port for foundation bootnode 3.2 - Add new ovh bootnodes and fix port for foundation bootnode 3.2
- Remove old bootnodes. - Remove old bootnodes.
- Remove duplicate 1118980bf48b0a3640bdba04e0fe78b1add18e1cd99bf22d53daac1fd9972ad650df52176e7c7d89d1114cfef2bc23a2959aa54998a46afcf7d91809f0855082 - Remove duplicate 1118980bf48b0a3640bdba04e0fe78b1add18e1cd99bf22d53daac1fd9972ad650df52176e7c7d89d1114cfef2bc23a2959aa54998a46afcf7d91809f0855082
- Block 0 is valid in queries ([#8891](https://github.com/paritytech/parity/pull/8891)) - Block 0 is valid in queries ([#8891](https://github.com/openethereum/openethereum/pull/8891))
- Update jsonrpc libs, fixed ipc leak, closes [#8774](https://github.com/paritytech/parity/issues/8774) ([#8876](https://github.com/paritytech/parity/pull/8876)) - Update jsonrpc libs, fixed ipc leak, closes [#8774](https://github.com/openethereum/openethereum/issues/8774) ([#8876](https://github.com/openethereum/openethereum/pull/8876))
- Add ETC Cooperative-run load balanced parity node ([#8892](https://github.com/paritytech/parity/pull/8892)) - Add ETC Cooperative-run load balanced parity node ([#8892](https://github.com/openethereum/openethereum/pull/8892))
- Minor fix in chain supplier and light provider ([#8906](https://github.com/paritytech/parity/pull/8906)) - Minor fix in chain supplier and light provider ([#8906](https://github.com/openethereum/openethereum/pull/8906))
- Fix chain supplier increment - Fix chain supplier increment
- Fix light provider block_headers - Fix light provider block_headers
- Parity-version: stable release 1.10.7 ([#8855](https://github.com/paritytech/parity/pull/8855)) - Parity-version: stable release 1.10.7 ([#8855](https://github.com/openethereum/openethereum/pull/8855))
- Cherry-pick network-specific release flag ([#8821](https://github.com/paritytech/parity/pull/8821)) - Cherry-pick network-specific release flag ([#8821](https://github.com/openethereum/openethereum/pull/8821))
- Parity-version: bump stable to 1.10.7 - Parity-version: bump stable to 1.10.7
## Parity [v1.10.6](https://github.com/paritytech/parity/releases/tag/v1.10.6) (2018-06-05) ## Parity [v1.10.6](https://github.com/openethereum/openethereum/releases/tag/v1.10.6) (2018-06-05)
Parity 1.10.6 is a security-relevant release. Please upgrade your nodes as soon as possible. Parity 1.10.6 is a security-relevant release. Please upgrade your nodes as soon as possible.
@@ -93,66 +93,66 @@ If you can not upgrade to 1.10+ yet, please use the following branches and build
The full list of included changes: The full list of included changes:
- Parity-version: bump stable to 1.10.6 ([#8805](https://github.com/paritytech/parity/pull/8805)) - Parity-version: bump stable to 1.10.6 ([#8805](https://github.com/openethereum/openethereum/pull/8805))
- Parity-version: bump stable to 1.10.6 - Parity-version: bump stable to 1.10.6
- Disallow unsigned transactions in case EIP-86 is disabled ([#8802](https://github.com/paritytech/parity/pull/8802)) - Disallow unsigned transactions in case EIP-86 is disabled ([#8802](https://github.com/openethereum/openethereum/pull/8802))
- Update shell32-sys to fix windows build ([#8793](https://github.com/paritytech/parity/pull/8793)) - Update shell32-sys to fix windows build ([#8793](https://github.com/openethereum/openethereum/pull/8793))
- Backports ([#8782](https://github.com/paritytech/parity/pull/8782)) - Backports ([#8782](https://github.com/openethereum/openethereum/pull/8782))
- Fix light sync with initial validator-set contract ([#8528](https://github.com/paritytech/parity/pull/8528)) - Fix light sync with initial validator-set contract ([#8528](https://github.com/openethereum/openethereum/pull/8528))
- Fix #8468 - Fix #8468
- Use U256::max_value() instead - Use U256::max_value() instead
- Fix again - Fix again
- Also change initial transaction gas - Also change initial transaction gas
- Don't open Browser post-install on Mac ([#8641](https://github.com/paritytech/parity/pull/8641)) - Don't open Browser post-install on Mac ([#8641](https://github.com/openethereum/openethereum/pull/8641))
- Prefix uint fmt with `0x` with alternate flag - Prefix uint fmt with `0x` with alternate flag
- Set the request index to that of the current request ([#8683](https://github.com/paritytech/parity/pull/8683)) - Set the request index to that of the current request ([#8683](https://github.com/openethereum/openethereum/pull/8683))
- Set the request index to that of the current request - Set the request index to that of the current request
- Node table sorting according to last contact data ([#8541](https://github.com/paritytech/parity/pull/8541)) - Node table sorting according to last contact data ([#8541](https://github.com/openethereum/openethereum/pull/8541))
- Network-devp2p: sort nodes in node table using last contact data - Network-devp2p: sort nodes in node table using last contact data
- Network-devp2p: rename node contact types in node table json output - Network-devp2p: rename node contact types in node table json output
- Network-devp2p: fix node table tests - Network-devp2p: fix node table tests
- Network-devp2p: note node failure when failed to establish connection - Network-devp2p: note node failure when failed to establish connection
- Network-devp2p: handle UselessPeer error - Network-devp2p: handle UselessPeer error
- Network-devp2p: note failure when marking node as useless - Network-devp2p: note failure when marking node as useless
- Network-devp2p: handle UselessPeer disconnect ([#8686](https://github.com/paritytech/parity/pull/8686)) - Network-devp2p: handle UselessPeer disconnect ([#8686](https://github.com/openethereum/openethereum/pull/8686))
- Parity: bump stable version to 1.10.5 ([#8749](https://github.com/paritytech/parity/pull/8749)) - Parity: bump stable version to 1.10.5 ([#8749](https://github.com/openethereum/openethereum/pull/8749))
- Parity: bump stable version to 1.10.5 - Parity: bump stable version to 1.10.5
- Fix failing doc tests running on non-code - Fix failing doc tests running on non-code
## Parity [v1.10.4](https://github.com/paritytech/parity/releases/tag/v1.10.4) (2018-05-15) ## Parity [v1.10.4](https://github.com/openethereum/openethereum/releases/tag/v1.10.4) (2018-05-15)
Parity 1.10.4 is a bug-fix release to improve performance and stability. Parity 1.10.4 is a bug-fix release to improve performance and stability.
The full list of included changes: The full list of included changes:
- Backports ([#8623](https://github.com/paritytech/parity/pull/8623)) - Backports ([#8623](https://github.com/openethereum/openethereum/pull/8623))
- Fix account list double 0x display ([#8596](https://github.com/paritytech/parity/pull/8596)) - Fix account list double 0x display ([#8596](https://github.com/openethereum/openethereum/pull/8596))
- Remove unused self import - Remove unused self import
- Fix account list double 0x display - Fix account list double 0x display
- Trace precompiled contracts when the transfer value is not zero ([#8486](https://github.com/paritytech/parity/pull/8486)) - Trace precompiled contracts when the transfer value is not zero ([#8486](https://github.com/openethereum/openethereum/pull/8486))
- Trace precompiled contracts when the transfer value is not zero - Trace precompiled contracts when the transfer value is not zero
- Add tests for precompiled CALL tracing - Add tests for precompiled CALL tracing
- Use byzantium test machine for the new test - Use byzantium test machine for the new test
- Add notes in comments on why we don't trace all precompileds - Add notes in comments on why we don't trace all precompileds
- Use is_transferred instead of transferred - Use is_transferred instead of transferred
- Gitlab test script fixes ([#8573](https://github.com/paritytech/parity/pull/8573)) - Gitlab test script fixes ([#8573](https://github.com/openethereum/openethereum/pull/8573))
- Exclude /docs from modified files. - Exclude /docs from modified files.
- Ensure all references in the working tree are available - Ensure all references in the working tree are available
- Remove duplicated line from test script - Remove duplicated line from test script
- Bump stable to 1.10.4 ([#8626](https://github.com/paritytech/parity/pull/8626)) - Bump stable to 1.10.4 ([#8626](https://github.com/openethereum/openethereum/pull/8626))
- Allow stable snaps to be stable. ([#8582](https://github.com/paritytech/parity/pull/8582)) - Allow stable snaps to be stable. ([#8582](https://github.com/openethereum/openethereum/pull/8582))
## Parity [v1.10.3](https://github.com/paritytech/parity/releases/tag/v1.10.3) (2018-05-08) ## Parity [v1.10.3](https://github.com/openethereum/openethereum/releases/tag/v1.10.3) (2018-05-08)
Parity 1.10.3 marks the first stable release on the 1.10 track. Among others, it improves performance and stability. Parity 1.10.3 marks the first stable release on the 1.10 track. Among others, it improves performance and stability.
The full list of included changes: The full list of included changes:
- Backports ([#8557](https://github.com/paritytech/parity/pull/8557)) - Backports ([#8557](https://github.com/openethereum/openethereum/pull/8557))
- Update wasmi and pwasm-utils ([#8493](https://github.com/paritytech/parity/pull/8493)) - Update wasmi and pwasm-utils ([#8493](https://github.com/openethereum/openethereum/pull/8493))
- Update wasmi to 0.2 - Update wasmi to 0.2
- Update pwasm-utils to 0.1.5 - Update pwasm-utils to 0.1.5
- Fetching logs by hash in blockchain database ([#8463](https://github.com/paritytech/parity/pull/8463)) - Fetching logs by hash in blockchain database ([#8463](https://github.com/openethereum/openethereum/pull/8463))
- Fetch logs by hash in blockchain database - Fetch logs by hash in blockchain database
- Fix tests - Fix tests
- Add unit test for branch block logs fetching - Add unit test for branch block logs fetching
@@ -165,7 +165,7 @@ The full list of included changes:
- typo: pass value by reference - typo: pass value by reference
- Use loop and wrap inside blocks to simplify the code - Use loop and wrap inside blocks to simplify the code
- typo: missed a comment - typo: missed a comment
- Pass on storage keys tracing to handle the case when it is not modified ([#8491](https://github.com/paritytech/parity/pull/8491)) - Pass on storage keys tracing to handle the case when it is not modified ([#8491](https://github.com/openethereum/openethereum/pull/8491))
- Pass on storage keys even if it is not modified - Pass on storage keys even if it is not modified
- typo: account and storage query `to_pod_diff` builds both `touched_addresses` merge and storage keys merge. - typo: account and storage query `to_pod_diff` builds both `touched_addresses` merge and storage keys merge.
- Fix tests - Fix tests
@@ -175,86 +175,86 @@ The full list of included changes:
- Address grumbles - Address grumbles
- typo: remove unwanted empty line - typo: remove unwanted empty line
- ensure_cached compiles with the original signature - ensure_cached compiles with the original signature
- Enable WebAssembly and Byzantium for Ellaism ([#8520](https://github.com/paritytech/parity/pull/8520)) - Enable WebAssembly and Byzantium for Ellaism ([#8520](https://github.com/openethereum/openethereum/pull/8520))
- Enable WebAssembly and Byzantium for Ellaism - Enable WebAssembly and Byzantium for Ellaism
- Fix indentation - Fix indentation
- Remove empty lines - Remove empty lines
- Fix compilation. - Fix compilation.
- Stabilize 1.10.3 ([#8474](https://github.com/paritytech/parity/pull/8474)) - Stabilize 1.10.3 ([#8474](https://github.com/openethereum/openethereum/pull/8474))
- Stabelize 1.10 - Stabelize 1.10
- Bump stable to 1.10.3 - Bump stable to 1.10.3
- Update Gitlab scripts - Update Gitlab scripts
- Fix snap builds ([#8483](https://github.com/paritytech/parity/pull/8483)) - Fix snap builds ([#8483](https://github.com/openethereum/openethereum/pull/8483))
- Fix docker build ([#8462](https://github.com/paritytech/parity/pull/8462)) - Fix docker build ([#8462](https://github.com/openethereum/openethereum/pull/8462))
- Use `master` as Docker's `latest` (`beta-release` is not used anymore) - Use `master` as Docker's `latest` (`beta-release` is not used anymore)
## Parity [v1.10.2](https://github.com/paritytech/parity/releases/tag/v1.10.2) (2018-04-24) ## Parity [v1.10.2](https://github.com/openethereum/openethereum/releases/tag/v1.10.2) (2018-04-24)
Parity 1.10.2 is a bug-fix release to improve performance and stability. Parity 1.10.2 is a bug-fix release to improve performance and stability.
The full list of included changes: The full list of included changes:
- Update Parity beta to 1.10.2 + Backports ([#8455](https://github.com/paritytech/parity/pull/8455)) - Update Parity beta to 1.10.2 + Backports ([#8455](https://github.com/openethereum/openethereum/pull/8455))
- Update Parity beta to 1.10.2 - Update Parity beta to 1.10.2
- Allow 32-bit pipelines to fail ([#8454](https://github.com/paritytech/parity/pull/8454)) - Allow 32-bit pipelines to fail ([#8454](https://github.com/openethereum/openethereum/pull/8454))
- Disable 32-bit targets for Gitlab - Disable 32-bit targets for Gitlab
- Rename Linux pipelines - Rename Linux pipelines
- Update wasmi ([#8452](https://github.com/paritytech/parity/pull/8452)) - Update wasmi ([#8452](https://github.com/openethereum/openethereum/pull/8452))
- Fix Cargo.lock - Fix Cargo.lock
- Backports ([#8450](https://github.com/paritytech/parity/pull/8450)) - Backports ([#8450](https://github.com/openethereum/openethereum/pull/8450))
- Use forked app_dirs crate for reverted Windows dir behavior ([#8438](https://github.com/paritytech/parity/pull/8438)) - Use forked app_dirs crate for reverted Windows dir behavior ([#8438](https://github.com/openethereum/openethereum/pull/8438))
- Remove unused app_dirs dependency in CLI - Remove unused app_dirs dependency in CLI
- Use forked app_dirs crate for reverted Windows dir behavior - Use forked app_dirs crate for reverted Windows dir behavior
- Remove Tendermint extra_info due to seal inconsistencies ([#8367](https://github.com/paritytech/parity/pull/8367)) - Remove Tendermint extra_info due to seal inconsistencies ([#8367](https://github.com/openethereum/openethereum/pull/8367))
- Handle queue import errors a bit more gracefully ([#8385](https://github.com/paritytech/parity/pull/8385)) - Handle queue import errors a bit more gracefully ([#8385](https://github.com/openethereum/openethereum/pull/8385))
- Improve VM executor stack size estimation rules ([#8439](https://github.com/paritytech/parity/pull/8439)) - Improve VM executor stack size estimation rules ([#8439](https://github.com/openethereum/openethereum/pull/8439))
- Improve VM executor stack size estimation rules - Improve VM executor stack size estimation rules
- Typo: docs add "(Debug build)" comment - Typo: docs add "(Debug build)" comment
- Fix an off by one typo and set minimal stack size - Fix an off by one typo and set minimal stack size
- Use saturating_sub to avoid potential overflow - Use saturating_sub to avoid potential overflow
## Parity [v1.10.1](https://github.com/paritytech/parity/releases/tag/v1.10.1) (2018-04-17) ## Parity [v1.10.1](https://github.com/openethereum/openethereum/releases/tag/v1.10.1) (2018-04-17)
Parity 1.10.1 is a bug-fix release to improve performance and stability. Among other changes, you can now use `--warp-barrier [BLOCK]` to specify a minimum block number to `--warp` to. This is useful in cases where clients restore to outdated snapshots far behind the latest chain head. Parity 1.10.1 is a bug-fix release to improve performance and stability. Among other changes, you can now use `--warp-barrier [BLOCK]` to specify a minimum block number to `--warp` to. This is useful in cases where clients restore to outdated snapshots far behind the latest chain head.
The full list of included changes: The full list of included changes:
- Bump beta to 1.10.1 ([#8350](https://github.com/paritytech/parity/pull/8350)) - Bump beta to 1.10.1 ([#8350](https://github.com/openethereum/openethereum/pull/8350))
- Bump beta to 1.10.1 - Bump beta to 1.10.1
- Unflag critical release - Unflag critical release
- Backports ([#8346](https://github.com/paritytech/parity/pull/8346)) - Backports ([#8346](https://github.com/openethereum/openethereum/pull/8346))
- Warp-only sync with warp-barrier [blocknumber] flag. ([#8228](https://github.com/paritytech/parity/pull/8228)) - Warp-only sync with warp-barrier [blocknumber] flag. ([#8228](https://github.com/openethereum/openethereum/pull/8228))
- Warp-only sync with warp-after [blocknumber] flag. - Warp-only sync with warp-after [blocknumber] flag.
- Fix tests. - Fix tests.
- Fix configuration tests. - Fix configuration tests.
- Rename to warp barrier. - Rename to warp barrier.
- Allow unsafe js eval on Parity Wallet. ([#8204](https://github.com/paritytech/parity/pull/8204)) - Allow unsafe js eval on Parity Wallet. ([#8204](https://github.com/openethereum/openethereum/pull/8204))
- Update musicoin spec in line with gmc v2.6.2 ([#8242](https://github.com/paritytech/parity/pull/8242)) - Update musicoin spec in line with gmc v2.6.2 ([#8242](https://github.com/openethereum/openethereum/pull/8242))
- Supress TemporaryInvalid verification failures. ([#8256](https://github.com/paritytech/parity/pull/8256)) - Supress TemporaryInvalid verification failures. ([#8256](https://github.com/openethereum/openethereum/pull/8256))
- Include suicided accounts in state diff ([#8297](https://github.com/paritytech/parity/pull/8297)) - Include suicided accounts in state diff ([#8297](https://github.com/openethereum/openethereum/pull/8297))
- Include suicided accounts in state diff - Include suicided accounts in state diff
- Shorten form match -> if let - Shorten form match -> if let
- Test suicide trace diff in State - Test suicide trace diff in State
- Replace_home for password_files, reserved_peers and log_file ([#8324](https://github.com/paritytech/parity/pull/8324)) - Replace_home for password_files, reserved_peers and log_file ([#8324](https://github.com/openethereum/openethereum/pull/8324))
- Replace_home for password_files, reserved_peers and log_file - Replace_home for password_files, reserved_peers and log_file
- Typo: arg_log_file is Option - Typo: arg_log_file is Option
- Enable UI by default, but only display info page. - Enable UI by default, but only display info page.
- Fix test. - Fix test.
- Fix naming and remove old todo. - Fix naming and remove old todo.
- Change "wallet" with "browser UI" - Change "wallet" with "browser UI"
- Change name Wallet -> UI ([#8164](https://github.com/paritytech/parity/pull/8164)) ([#8205](https://github.com/paritytech/parity/pull/8205)) - Change name Wallet -> UI ([#8164](https://github.com/openethereum/openethereum/pull/8164)) ([#8205](https://github.com/openethereum/openethereum/pull/8205))
- Change name Wallet -> UI - Change name Wallet -> UI
- Make warning bold - Make warning bold
- Backport [#8099](https://github.com/paritytech/parity/pull/8099) ([#8132](https://github.com/paritytech/parity/pull/8132)) - Backport [#8099](https://github.com/openethereum/openethereum/pull/8099) ([#8132](https://github.com/openethereum/openethereum/pull/8132))
- WASM libs ([#8220](https://github.com/paritytech/parity/pull/8220)) - WASM libs ([#8220](https://github.com/openethereum/openethereum/pull/8220))
- Bump wasm libs ([#8171](https://github.com/paritytech/parity/pull/8171)) - Bump wasm libs ([#8171](https://github.com/openethereum/openethereum/pull/8171))
- Bump wasmi version ([#8209](https://github.com/paritytech/parity/pull/8209)) - Bump wasmi version ([#8209](https://github.com/openethereum/openethereum/pull/8209))
- Update hyper to 0.11.24 ([#8203](https://github.com/paritytech/parity/pull/8203)) - Update hyper to 0.11.24 ([#8203](https://github.com/openethereum/openethereum/pull/8203))
- Updated jsonrpc to include latest backports (beta) ([#8181](https://github.com/paritytech/parity/pull/8181)) - Updated jsonrpc to include latest backports (beta) ([#8181](https://github.com/openethereum/openethereum/pull/8181))
- Updated jsonrpc to include latest backports - Updated jsonrpc to include latest backports
- Update dependencies. - Update dependencies.
## Parity [v1.10.0](https://github.com/paritytech/parity/releases/tag/v1.10.0) (2018-03-22) ## Parity [v1.10.0](https://github.com/openethereum/openethereum/releases/tag/v1.10.0) (2018-03-22)
This is the Parity 1.10.0-beta release! Cool! This is the Parity 1.10.0-beta release! Cool!
@@ -292,7 +292,7 @@ To enable empty step messages, set the `emptyStepsTransition` to your favorite b
We removed the old database migrations from 2016. In case you upgrade Parity from a really, really old version, you will have to reset your database manually first with `parity <options> db kill`. We removed the old database migrations from 2016. In case you upgrade Parity from a really, really old version, you will have to reset your database manually first with `parity <options> db kill`.
We fixed DELEGATECALL `from` and `to` fields, see [#7166](https://github.com/paritytech/parity/issues/7166). We fixed DELEGATECALL `from` and `to` fields, see [#7166](https://github.com/openethereum/openethereum/issues/7166).
We reduced the default USD per transaction value to 0.0001. Thanks, @MysticRyuujin! We reduced the default USD per transaction value to 0.0001. Thanks, @MysticRyuujin!
@@ -302,60 +302,60 @@ The Musicoin chain is now enabled with Byzantium features starting at block `2_2
The full list of included changes: The full list of included changes:
- Re-enable signer, even with no UI. ([#8167](https://github.com/paritytech/parity/pull/8167)) ([#8168](https://github.com/paritytech/parity/pull/8168)) - Re-enable signer, even with no UI. ([#8167](https://github.com/openethereum/openethereum/pull/8167)) ([#8168](https://github.com/openethereum/openethereum/pull/8168))
- Re-enable signer, even with no UI. - Re-enable signer, even with no UI.
- Fix message. - Fix message.
- Beta Backports ([#8136](https://github.com/paritytech/parity/pull/8136)) - Beta Backports ([#8136](https://github.com/openethereum/openethereum/pull/8136))
- Support parity protocol. ([#8035](https://github.com/paritytech/parity/pull/8035)) - Support parity protocol. ([#8035](https://github.com/openethereum/openethereum/pull/8035))
- updater: apply exponential backoff after download failure ([#8059](https://github.com/paritytech/parity/pull/8059)) - updater: apply exponential backoff after download failure ([#8059](https://github.com/openethereum/openethereum/pull/8059))
- updater: apply exponential backoff after download failure - updater: apply exponential backoff after download failure
- updater: reset backoff on new release - updater: reset backoff on new release
- Max code size on Kovan ([#8067](https://github.com/paritytech/parity/pull/8067)) - Max code size on Kovan ([#8067](https://github.com/openethereum/openethereum/pull/8067))
- Enable code size limit on kovan - Enable code size limit on kovan
- Fix formatting. - Fix formatting.
- Limit incoming connections. ([#8060](https://github.com/paritytech/parity/pull/8060)) - Limit incoming connections. ([#8060](https://github.com/openethereum/openethereum/pull/8060))
- Limit ingress connections - Limit ingress connections
- Optimized handshakes logging - Optimized handshakes logging
- WASM libraries bump ([#7970](https://github.com/paritytech/parity/pull/7970)) - WASM libraries bump ([#7970](https://github.com/openethereum/openethereum/pull/7970))
- update wasmi, parity-wasm, wasm-utils to latest version - update wasmi, parity-wasm, wasm-utils to latest version
- Update to new wasmi & error handling - Update to new wasmi & error handling
- also utilize new stack limiter - also utilize new stack limiter
- fix typo - fix typo
- replace dependency url - replace dependency url
- Cargo.lock update - Cargo.lock update
- add some dos protection ([#8084](https://github.com/paritytech/parity/pull/8084)) - add some dos protection ([#8084](https://github.com/openethereum/openethereum/pull/8084))
- revert removing blooms ([#8066](https://github.com/paritytech/parity/pull/8066)) - revert removing blooms ([#8066](https://github.com/openethereum/openethereum/pull/8066))
- Revert "fix traces, removed bloomchain crate, closes [#7228](https://github.com/paritytech/parity/issues/7228), closes [#7167](https://github.com/paritytech/parity/issues/7167)" - Revert "fix traces, removed bloomchain crate, closes [#7228](https://github.com/openethereum/openethereum/issues/7228), closes [#7167](https://github.com/openethereum/openethereum/issues/7167)"
- Revert "fixed broken logs ([#7934](https://github.com/paritytech/parity/pull/7934))" - Revert "fixed broken logs ([#7934](https://github.com/openethereum/openethereum/pull/7934))"
- fixed broken logs - fixed broken logs
- bring back old lock order - bring back old lock order
- remove migration v13 - remove migration v13
- revert CURRENT_VERSION to 12 in migration.rs - revert CURRENT_VERSION to 12 in migration.rs
- more dos protection ([#8104](https://github.com/paritytech/parity/pull/8104)) - more dos protection ([#8104](https://github.com/openethereum/openethereum/pull/8104))
- Const time comparison ([#8113](https://github.com/paritytech/parity/pull/8113)) - Const time comparison ([#8113](https://github.com/openethereum/openethereum/pull/8113))
- Use `subtle::slices_equal` for constant time comparison. - Use `subtle::slices_equal` for constant time comparison.
- Also update the existing version of subtle in `ethcrypto` from 0.1 to 0.5 - Also update the existing version of subtle in `ethcrypto` from 0.1 to 0.5
- Test specifically for InvalidPassword error. - Test specifically for InvalidPassword error.
- fix trace filter returning returning unrelated reward calls, closes #8070 ([#8098](https://github.com/paritytech/parity/pull/8098)) - fix trace filter returning returning unrelated reward calls, closes #8070 ([#8098](https://github.com/openethereum/openethereum/pull/8098))
- network: init discovery using healthy nodes ([#8061](https://github.com/paritytech/parity/pull/8061)) - network: init discovery using healthy nodes ([#8061](https://github.com/openethereum/openethereum/pull/8061))
- network: init discovery using healthy nodes - network: init discovery using healthy nodes
- network: fix style grumble - network: fix style grumble
- network: fix typo - network: fix typo
- Postpone Kovan hard fork ([#8137](https://github.com/paritytech/parity/pull/8137)) - Postpone Kovan hard fork ([#8137](https://github.com/openethereum/openethereum/pull/8137))
- ethcore: postpone Kovan hard fork - ethcore: postpone Kovan hard fork
- util: update version fork metadata - util: update version fork metadata
- Disable UI by default. ([#8105](https://github.com/paritytech/parity/pull/8105)) - Disable UI by default. ([#8105](https://github.com/openethereum/openethereum/pull/8105))
- dapps: update parity-ui dependencies ([#8160](https://github.com/paritytech/parity/pull/8160)) - dapps: update parity-ui dependencies ([#8160](https://github.com/openethereum/openethereum/pull/8160))
- Probe changes one step deeper ([#8134](https://github.com/paritytech/parity/pull/8134)) ([#8135](https://github.com/paritytech/parity/pull/8135)) - Probe changes one step deeper ([#8134](https://github.com/openethereum/openethereum/pull/8134)) ([#8135](https://github.com/openethereum/openethereum/pull/8135))
- Beta backports ([#8053](https://github.com/paritytech/parity/pull/8053)) - Beta backports ([#8053](https://github.com/openethereum/openethereum/pull/8053))
- CI: Fix cargo cache ([#7968](https://github.com/paritytech/parity/pull/7968)) - CI: Fix cargo cache ([#7968](https://github.com/openethereum/openethereum/pull/7968))
- Fix cache - Fix cache
- Only clean locked cargo cache on windows - Only clean locked cargo cache on windows
- fixed ethstore sign ([#8026](https://github.com/paritytech/parity/pull/8026)) - fixed ethstore sign ([#8026](https://github.com/openethereum/openethereum/pull/8026))
- fixed parsing ethash seals and verify_block_undordered ([#8031](https://github.com/paritytech/parity/pull/8031)) - fixed parsing ethash seals and verify_block_undordered ([#8031](https://github.com/openethereum/openethereum/pull/8031))
- fix for verify_block_basic crashing on invalid transaction rlp ([#8032](https://github.com/paritytech/parity/pull/8032)) - fix for verify_block_basic crashing on invalid transaction rlp ([#8032](https://github.com/openethereum/openethereum/pull/8032))
- fix cache & snapcraft CI build ([#8052](https://github.com/paritytech/parity/pull/8052)) - fix cache & snapcraft CI build ([#8052](https://github.com/openethereum/openethereum/pull/8052))
- Add MCIP-6 Byzyantium transition to Musicoin spec ([#7841](https://github.com/paritytech/parity/pull/7841)) - Add MCIP-6 Byzyantium transition to Musicoin spec ([#7841](https://github.com/openethereum/openethereum/pull/7841))
- Add test chain spec for musicoin byzantium testnet - Add test chain spec for musicoin byzantium testnet
- Add MCIP-6 Byzyantium transition to Musicoin spec - Add MCIP-6 Byzyantium transition to Musicoin spec
- Update mcip6_byz.json - Update mcip6_byz.json
@@ -363,96 +363,96 @@ The full list of included changes:
- ethcore: update musicoin bootnodes - ethcore: update musicoin bootnodes
- Update musicoin.json - Update musicoin.json
- More bootnodes. - More bootnodes.
- Make 1.10 beta ([#8022](https://github.com/paritytech/parity/pull/8022)) - Make 1.10 beta ([#8022](https://github.com/openethereum/openethereum/pull/8022))
- Make 1.10 beta - Make 1.10 beta
- Fix gitlab builds - Fix gitlab builds
- SecretStore: secretstore_generateDocumentKey RPC ([#7864](https://github.com/paritytech/parity/pull/7864)) - SecretStore: secretstore_generateDocumentKey RPC ([#7864](https://github.com/openethereum/openethereum/pull/7864))
- SecretStore: ECDSA session for cases when 2*t < N ([#7739](https://github.com/paritytech/parity/pull/7739)) - SecretStore: ECDSA session for cases when 2*t < N ([#7739](https://github.com/openethereum/openethereum/pull/7739))
- bump tiny-keccak ([#8019](https://github.com/paritytech/parity/pull/8019)) - bump tiny-keccak ([#8019](https://github.com/openethereum/openethereum/pull/8019))
- Remove un-necessary comment ([#8014](https://github.com/paritytech/parity/pull/8014)) - Remove un-necessary comment ([#8014](https://github.com/openethereum/openethereum/pull/8014))
- clean up account fmt::Debug ([#7983](https://github.com/paritytech/parity/pull/7983)) - clean up account fmt::Debug ([#7983](https://github.com/openethereum/openethereum/pull/7983))
- improve quality of vote_collector module ([#7984](https://github.com/paritytech/parity/pull/7984)) - improve quality of vote_collector module ([#7984](https://github.com/openethereum/openethereum/pull/7984))
- ExecutedBlock cleanup ([#7991](https://github.com/paritytech/parity/pull/7991)) - ExecutedBlock cleanup ([#7991](https://github.com/openethereum/openethereum/pull/7991))
- Hardware-wallet/usb-subscribe-refactor ([#7860](https://github.com/paritytech/parity/pull/7860)) - Hardware-wallet/usb-subscribe-refactor ([#7860](https://github.com/openethereum/openethereum/pull/7860))
- remove wildcard imports from views, make tests more idiomatic ([#7986](https://github.com/paritytech/parity/pull/7986)) - remove wildcard imports from views, make tests more idiomatic ([#7986](https://github.com/openethereum/openethereum/pull/7986))
- moved PerfTimer to a separate crate - "trace-time" ([#7985](https://github.com/paritytech/parity/pull/7985)) - moved PerfTimer to a separate crate - "trace-time" ([#7985](https://github.com/openethereum/openethereum/pull/7985))
- clean up ethcore::spec module imports ([#7990](https://github.com/paritytech/parity/pull/7990)) - clean up ethcore::spec module imports ([#7990](https://github.com/openethereum/openethereum/pull/7990))
- rpc: don't include current block in new_block_filter ([#7982](https://github.com/paritytech/parity/pull/7982)) - rpc: don't include current block in new_block_filter ([#7982](https://github.com/openethereum/openethereum/pull/7982))
- fix traces, removed bloomchain crate ([#7979](https://github.com/paritytech/parity/pull/7979)) - fix traces, removed bloomchain crate ([#7979](https://github.com/openethereum/openethereum/pull/7979))
- simplify compression and move it out of rlp crate ([#7957](https://github.com/paritytech/parity/pull/7957)) - simplify compression and move it out of rlp crate ([#7957](https://github.com/openethereum/openethereum/pull/7957))
- removed old migrations ([#7974](https://github.com/paritytech/parity/pull/7974)) - removed old migrations ([#7974](https://github.com/openethereum/openethereum/pull/7974))
- Reject too large packets in snapshot sync. ([#7977](https://github.com/paritytech/parity/pull/7977)) - Reject too large packets in snapshot sync. ([#7977](https://github.com/openethereum/openethereum/pull/7977))
- fixed broken logs ([#7934](https://github.com/paritytech/parity/pull/7934)) - fixed broken logs ([#7934](https://github.com/openethereum/openethereum/pull/7934))
- Increase max download limit to 128MB ([#7965](https://github.com/paritytech/parity/pull/7965)) - Increase max download limit to 128MB ([#7965](https://github.com/openethereum/openethereum/pull/7965))
- Calculate proper keccak256/sha3 using parity. ([#7953](https://github.com/paritytech/parity/pull/7953)) - Calculate proper keccak256/sha3 using parity. ([#7953](https://github.com/openethereum/openethereum/pull/7953))
- Add changelog for 1.8.10 stable and 1.9.3 beta ([#7947](https://github.com/paritytech/parity/pull/7947)) - Add changelog for 1.8.10 stable and 1.9.3 beta ([#7947](https://github.com/openethereum/openethereum/pull/7947))
- kvdb-rocksdb: remove buffered operations when committing transaction ([#7950](https://github.com/paritytech/parity/pull/7950)) - kvdb-rocksdb: remove buffered operations when committing transaction ([#7950](https://github.com/openethereum/openethereum/pull/7950))
- Bump WebSockets ([#7952](https://github.com/paritytech/parity/pull/7952)) - Bump WebSockets ([#7952](https://github.com/openethereum/openethereum/pull/7952))
- removed redundant Bloom conversions ([#7932](https://github.com/paritytech/parity/pull/7932)) - removed redundant Bloom conversions ([#7932](https://github.com/openethereum/openethereum/pull/7932))
- simplify RefInfo fmt ([#7929](https://github.com/paritytech/parity/pull/7929)) - simplify RefInfo fmt ([#7929](https://github.com/openethereum/openethereum/pull/7929))
- Kovan WASM fork code ([#7849](https://github.com/paritytech/parity/pull/7849)) - Kovan WASM fork code ([#7849](https://github.com/openethereum/openethereum/pull/7849))
- bring back trie and triehash benches ([#7926](https://github.com/paritytech/parity/pull/7926)) - bring back trie and triehash benches ([#7926](https://github.com/openethereum/openethereum/pull/7926))
- removed redundant PodAccount::new method ([#7928](https://github.com/paritytech/parity/pull/7928)) - removed redundant PodAccount::new method ([#7928](https://github.com/openethereum/openethereum/pull/7928))
- removed dummy wrapper structure - LogGroupPosition ([#7922](https://github.com/paritytech/parity/pull/7922)) - removed dummy wrapper structure - LogGroupPosition ([#7922](https://github.com/openethereum/openethereum/pull/7922))
- spec: Validate required divisor fields are not 0 ([#7933](https://github.com/paritytech/parity/pull/7933)) - spec: Validate required divisor fields are not 0 ([#7933](https://github.com/openethereum/openethereum/pull/7933))
- simplify Client::filter_traces method ([#7936](https://github.com/paritytech/parity/pull/7936)) - simplify Client::filter_traces method ([#7936](https://github.com/openethereum/openethereum/pull/7936))
- gitlab cache ([#7921](https://github.com/paritytech/parity/pull/7921)) - gitlab cache ([#7921](https://github.com/openethereum/openethereum/pull/7921))
- Fix a division by zero in light client RPC handler ([#7917](https://github.com/paritytech/parity/pull/7917)) - Fix a division by zero in light client RPC handler ([#7917](https://github.com/openethereum/openethereum/pull/7917))
- triehash optimisations ([#7920](https://github.com/paritytech/parity/pull/7920)) - triehash optimisations ([#7920](https://github.com/openethereum/openethereum/pull/7920))
- removed redundant Blockchain::db method ([#7919](https://github.com/paritytech/parity/pull/7919)) - removed redundant Blockchain::db method ([#7919](https://github.com/openethereum/openethereum/pull/7919))
- removed redundant Blockchain::rewind method ([#7918](https://github.com/paritytech/parity/pull/7918)) - removed redundant Blockchain::rewind method ([#7918](https://github.com/openethereum/openethereum/pull/7918))
- Pending transactions subscription ([#7906](https://github.com/paritytech/parity/pull/7906)) - Pending transactions subscription ([#7906](https://github.com/openethereum/openethereum/pull/7906))
- removed redundant otry! macro from ethcore ([#7916](https://github.com/paritytech/parity/pull/7916)) - removed redundant otry! macro from ethcore ([#7916](https://github.com/openethereum/openethereum/pull/7916))
- Make block generator easier to use ([#7888](https://github.com/paritytech/parity/pull/7888)) - Make block generator easier to use ([#7888](https://github.com/openethereum/openethereum/pull/7888))
- ECIP 1041 - Remove Difficulty Bomb ([#7905](https://github.com/paritytech/parity/pull/7905)) - ECIP 1041 - Remove Difficulty Bomb ([#7905](https://github.com/openethereum/openethereum/pull/7905))
- Fix CSP for dapps that require eval. ([#7867](https://github.com/paritytech/parity/pull/7867)) - Fix CSP for dapps that require eval. ([#7867](https://github.com/openethereum/openethereum/pull/7867))
- Fix gitlab ([#7901](https://github.com/paritytech/parity/pull/7901)) - Fix gitlab ([#7901](https://github.com/openethereum/openethereum/pull/7901))
- Gitlb snap master patch ([#7900](https://github.com/paritytech/parity/pull/7900)) - Gitlb snap master patch ([#7900](https://github.com/openethereum/openethereum/pull/7900))
- fix snap build master ([#7896](https://github.com/paritytech/parity/pull/7896)) - fix snap build master ([#7896](https://github.com/openethereum/openethereum/pull/7896))
- Fix wallet import ([#7873](https://github.com/paritytech/parity/pull/7873)) - Fix wallet import ([#7873](https://github.com/openethereum/openethereum/pull/7873))
- Fix snapcraft nightly ([#7884](https://github.com/paritytech/parity/pull/7884)) - Fix snapcraft nightly ([#7884](https://github.com/openethereum/openethereum/pull/7884))
- Add a timeout for light client sync requests ([#7848](https://github.com/paritytech/parity/pull/7848)) - Add a timeout for light client sync requests ([#7848](https://github.com/openethereum/openethereum/pull/7848))
- SecretStore: fixed test ([#7878](https://github.com/paritytech/parity/pull/7878)) - SecretStore: fixed test ([#7878](https://github.com/openethereum/openethereum/pull/7878))
- Fix checksums and auto-update push ([#7846](https://github.com/paritytech/parity/pull/7846)) - Fix checksums and auto-update push ([#7846](https://github.com/openethereum/openethereum/pull/7846))
- Forward-port snap fixes ([#7831](https://github.com/paritytech/parity/pull/7831)) - Forward-port snap fixes ([#7831](https://github.com/openethereum/openethereum/pull/7831))
- Update gitlab-test.sh ([#7883](https://github.com/paritytech/parity/pull/7883)) - Update gitlab-test.sh ([#7883](https://github.com/openethereum/openethereum/pull/7883))
- Fix installer binary names for macos and windows ([#7881](https://github.com/paritytech/parity/pull/7881)) - Fix installer binary names for macos and windows ([#7881](https://github.com/openethereum/openethereum/pull/7881))
- Fix string typo: "develoopment" -> "development" ([#7874](https://github.com/paritytech/parity/pull/7874)) - Fix string typo: "develoopment" -> "development" ([#7874](https://github.com/openethereum/openethereum/pull/7874))
- Update the instructions to install the stable snap ([#7876](https://github.com/paritytech/parity/pull/7876)) - Update the instructions to install the stable snap ([#7876](https://github.com/openethereum/openethereum/pull/7876))
- SecretStore: 'broadcast' decryption session ([#7843](https://github.com/paritytech/parity/pull/7843)) - SecretStore: 'broadcast' decryption session ([#7843](https://github.com/openethereum/openethereum/pull/7843))
- Flush keyfiles. Resolves #7632 ([#7868](https://github.com/paritytech/parity/pull/7868)) - Flush keyfiles. Resolves #7632 ([#7868](https://github.com/openethereum/openethereum/pull/7868))
- Read registry_address from given block ([#7866](https://github.com/paritytech/parity/pull/7866)) - Read registry_address from given block ([#7866](https://github.com/openethereum/openethereum/pull/7866))
- Clean up docs formatting for Wasm runtime ([#7869](https://github.com/paritytech/parity/pull/7869)) - Clean up docs formatting for Wasm runtime ([#7869](https://github.com/openethereum/openethereum/pull/7869))
- WASM: Disable internal memory ([#7842](https://github.com/paritytech/parity/pull/7842)) - WASM: Disable internal memory ([#7842](https://github.com/openethereum/openethereum/pull/7842))
- Update gitlab-build.sh ([#7855](https://github.com/paritytech/parity/pull/7855)) - Update gitlab-build.sh ([#7855](https://github.com/openethereum/openethereum/pull/7855))
- ethabi version 5 ([#7723](https://github.com/paritytech/parity/pull/7723)) - ethabi version 5 ([#7723](https://github.com/openethereum/openethereum/pull/7723))
- Light client: randomize the peer we dispatch requests to ([#7844](https://github.com/paritytech/parity/pull/7844)) - Light client: randomize the peer we dispatch requests to ([#7844](https://github.com/openethereum/openethereum/pull/7844))
- Store updater metadata in a single place ([#7832](https://github.com/paritytech/parity/pull/7832)) - Store updater metadata in a single place ([#7832](https://github.com/openethereum/openethereum/pull/7832))
- Add new EF ropstens nodes. ([#7824](https://github.com/paritytech/parity/pull/7824)) - Add new EF ropstens nodes. ([#7824](https://github.com/openethereum/openethereum/pull/7824))
- refactor stratum to remove retain cycle ([#7827](https://github.com/paritytech/parity/pull/7827)) - refactor stratum to remove retain cycle ([#7827](https://github.com/openethereum/openethereum/pull/7827))
- Bump jsonrpc. ([#7828](https://github.com/paritytech/parity/pull/7828)) - Bump jsonrpc. ([#7828](https://github.com/openethereum/openethereum/pull/7828))
- Add binary identifiers and sha256sum to builds ([#7830](https://github.com/paritytech/parity/pull/7830)) - Add binary identifiers and sha256sum to builds ([#7830](https://github.com/openethereum/openethereum/pull/7830))
- Update references to UI shell & wallet ([#7808](https://github.com/paritytech/parity/pull/7808)) - Update references to UI shell & wallet ([#7808](https://github.com/openethereum/openethereum/pull/7808))
- Adjust storage update evm-style ([#7812](https://github.com/paritytech/parity/pull/7812)) - Adjust storage update evm-style ([#7812](https://github.com/openethereum/openethereum/pull/7812))
- Updated WASM Runtime & new interpreter (wasmi) ([#7796](https://github.com/paritytech/parity/pull/7796)) - Updated WASM Runtime & new interpreter (wasmi) ([#7796](https://github.com/openethereum/openethereum/pull/7796))
- SecretStore: ignore removed authorities when running auto-migration ([#7674](https://github.com/paritytech/parity/pull/7674)) - SecretStore: ignore removed authorities when running auto-migration ([#7674](https://github.com/openethereum/openethereum/pull/7674))
- Fix build ([#7807](https://github.com/paritytech/parity/pull/7807)) - Fix build ([#7807](https://github.com/openethereum/openethereum/pull/7807))
- Move js & js-old code to github.com/parity-js ([#7685](https://github.com/paritytech/parity/pull/7685)) - Move js & js-old code to github.com/parity-js ([#7685](https://github.com/openethereum/openethereum/pull/7685))
- More changelogs :) ([#7782](https://github.com/paritytech/parity/pull/7782)) - More changelogs :) ([#7782](https://github.com/openethereum/openethereum/pull/7782))
- Actualized API set in help ([#7790](https://github.com/paritytech/parity/pull/7790)) - Actualized API set in help ([#7790](https://github.com/openethereum/openethereum/pull/7790))
- Removed obsolete file ([#7788](https://github.com/paritytech/parity/pull/7788)) - Removed obsolete file ([#7788](https://github.com/openethereum/openethereum/pull/7788))
- Update ropsten bootnodes ([#7776](https://github.com/paritytech/parity/pull/7776)) - Update ropsten bootnodes ([#7776](https://github.com/openethereum/openethereum/pull/7776))
- CHANGELOG for 1.9.1 and 1.8.8 ([#7775](https://github.com/paritytech/parity/pull/7775)) - CHANGELOG for 1.9.1 and 1.8.8 ([#7775](https://github.com/openethereum/openethereum/pull/7775))
- Enable byzantium features on non-ethash chains ([#7753](https://github.com/paritytech/parity/pull/7753)) - Enable byzantium features on non-ethash chains ([#7753](https://github.com/openethereum/openethereum/pull/7753))
- Fix client not being dropped on shutdown ([#7695](https://github.com/paritytech/parity/pull/7695)) - Fix client not being dropped on shutdown ([#7695](https://github.com/openethereum/openethereum/pull/7695))
- Filter-out nodes.json ([#7716](https://github.com/paritytech/parity/pull/7716)) - Filter-out nodes.json ([#7716](https://github.com/openethereum/openethereum/pull/7716))
- Removes redundant parentheses ([#7721](https://github.com/paritytech/parity/pull/7721)) - Removes redundant parentheses ([#7721](https://github.com/openethereum/openethereum/pull/7721))
- Transaction-pool fixes ([#7741](https://github.com/paritytech/parity/pull/7741)) - Transaction-pool fixes ([#7741](https://github.com/openethereum/openethereum/pull/7741))
- More visible download link in README.md ([#7707](https://github.com/paritytech/parity/pull/7707)) - More visible download link in README.md ([#7707](https://github.com/openethereum/openethereum/pull/7707))
- Changelog for 1.9.0 ([#7664](https://github.com/paritytech/parity/pull/7664)) - Changelog for 1.9.0 ([#7664](https://github.com/openethereum/openethereum/pull/7664))
- Add scroll when too many accounts ([#7677](https://github.com/paritytech/parity/pull/7677)) - Add scroll when too many accounts ([#7677](https://github.com/openethereum/openethereum/pull/7677))
- SecretStore: return HTTP 403 (access denied) if consensus is unreachable ([#7656](https://github.com/paritytech/parity/pull/7656)) - SecretStore: return HTTP 403 (access denied) if consensus is unreachable ([#7656](https://github.com/openethereum/openethereum/pull/7656))
- Moved StopGaurd to it's own crate ([#7635](https://github.com/paritytech/parity/pull/7635)) - Moved StopGaurd to it's own crate ([#7635](https://github.com/openethereum/openethereum/pull/7635))
## Previous releases ## Previous releases

File diff suppressed because it is too large Load Diff

View File

@@ -1,14 +1,14 @@
Note: Parity 1.2 reached End-of-Life on 2016-11-07 (EOL). Note: Parity 1.2 reached End-of-Life on 2016-11-07 (EOL).
## Parity [v1.2.4](https://github.com/paritytech/parity/releases/tag/v1.2.4) (2016-08-09) ## Parity [v1.2.4](https://github.com/openethereum/openethereum/releases/tag/v1.2.4) (2016-08-09)
Parity 1.2.4 Is a maintenance release that fixes a [few](https://github.com/paritytech/parity/pull/1888/commits) issues related to mining and peer synchronization. Parity 1.2.4 Is a maintenance release that fixes a [few](https://github.com/openethereum/openethereum/pull/1888/commits) issues related to mining and peer synchronization.
This release is marked as stable. This release is marked as stable.
- Backports for beta [#1888](https://github.com/paritytech/parity/pull/1888) - Backports for beta [#1888](https://github.com/openethereum/openethereum/pull/1888)
- BETA: fixed trace_transaction crash when block contained suicide [#1782](https://github.com/paritytech/parity/pull/1782) - BETA: fixed trace_transaction crash when block contained suicide [#1782](https://github.com/openethereum/openethereum/pull/1782)
## Parity [v1.2.3](https://github.com/paritytech/parity/releases/tag/v1.2.3) (2016-07-31) ## Parity [v1.2.3](https://github.com/openethereum/openethereum/releases/tag/v1.2.3) (2016-07-31)
Parity 1.2.3 is a patch release that addresses network stability issues for both Ethereum HF and Ethereum classic chains and brings a few changes to the transaction tracing API. Parity 1.2.3 is a patch release that addresses network stability issues for both Ethereum HF and Ethereum classic chains and brings a few changes to the transaction tracing API.
@@ -19,14 +19,14 @@ Parity 1.2.3 is a patch release that addresses network stability issues for both
Note that to continue using tracing features in this version you need to re-sync the blockchain. This can be done by using `parity export $HOME/ethereum-chain-backup.rlp` , deleting the database usually located at `~/.parity/906a34e69aec8c0d` followed by `parity import $HOME/ethereum-chain-backup.rlp`. Note that to continue using tracing features in this version you need to re-sync the blockchain. This can be done by using `parity export $HOME/ethereum-chain-backup.rlp` , deleting the database usually located at `~/.parity/906a34e69aec8c0d` followed by `parity import $HOME/ethereum-chain-backup.rlp`.
- [beta] Updating UI [#1778](https://github.com/paritytech/parity/pull/1778) - [beta] Updating UI [#1778](https://github.com/openethereum/openethereum/pull/1778)
- tracing backport [#1770](https://github.com/paritytech/parity/pull/1770) - tracing backport [#1770](https://github.com/openethereum/openethereum/pull/1770)
- Backport commits to beta [#1763](https://github.com/paritytech/parity/pull/1763) - Backport commits to beta [#1763](https://github.com/openethereum/openethereum/pull/1763)
- Deadlock on incoming connection (#1672) [#1675](https://github.com/paritytech/parity/pull/1675) - Deadlock on incoming connection (#1672) [#1675](https://github.com/openethereum/openethereum/pull/1675)
- [BETA] Removed DAO soft fork traces [#1640](https://github.com/paritytech/parity/pull/1640) - [BETA] Removed DAO soft fork traces [#1640](https://github.com/openethereum/openethereum/pull/1640)
## Parity [v1.2.2](https://github.com/paritytech/parity/releases/tag/v1.2.2) (2016-07-16) ## Parity [v1.2.2](https://github.com/openethereum/openethereum/releases/tag/v1.2.2) (2016-07-16)
#### New #### New
- DAO hard-fork. - DAO hard-fork.
@@ -47,17 +47,17 @@ DAO hard-fork implementation conforms to the [specification](https://blog.slock.
Full changelog Full changelog
- DAO hard-fork (#1483) [#1636](https://github.com/paritytech/parity/pull/1636) - DAO hard-fork (#1483) [#1636](https://github.com/openethereum/openethereum/pull/1636)
- Backports for beta [#1628](https://github.com/paritytech/parity/pull/1628) - Backports for beta [#1628](https://github.com/openethereum/openethereum/pull/1628)
- don't batch best block for branches (#1623) [#1626](https://github.com/paritytech/parity/pull/1626) - don't batch best block for branches (#1623) [#1626](https://github.com/openethereum/openethereum/pull/1626)
- Merge bugfixes from master to beta [#1605](https://github.com/paritytech/parity/pull/1605) - Merge bugfixes from master to beta [#1605](https://github.com/openethereum/openethereum/pull/1605)
- (BETA) using block options cache instead of general cache for rocksdb [#1613](https://github.com/paritytech/parity/pull/1613) - (BETA) using block options cache instead of general cache for rocksdb [#1613](https://github.com/openethereum/openethereum/pull/1613)
- Backport sealing fixes to beta [#1583](https://github.com/paritytech/parity/pull/1583) - Backport sealing fixes to beta [#1583](https://github.com/openethereum/openethereum/pull/1583)
- v1.2.2 in beta [#1581](https://github.com/paritytech/parity/pull/1581) - v1.2.2 in beta [#1581](https://github.com/openethereum/openethereum/pull/1581)
- Skipping transactions with invalid nonces when pushing to block. (#1545) [#1547](https://github.com/paritytech/parity/pull/1547) - Skipping transactions with invalid nonces when pushing to block. (#1545) [#1547](https://github.com/openethereum/openethereum/pull/1547)
## Parity [v1.2.1](https://github.com/paritytech/parity/releases/tag/v1.2.1) (2016-07-01) ## Parity [v1.2.1](https://github.com/openethereum/openethereum/releases/tag/v1.2.1) (2016-07-01)
#### New #### New
- Options for more precise mining tuning (see below). - Options for more precise mining tuning (see below).
@@ -86,10 +86,10 @@ DAO soft-fork control options have been replaced by the single `--fork` option w
#### Changes #### Changes
- v1.2.1 in beta [#1492](https://github.com/paritytech/parity/pull/1492) - v1.2.1 in beta [#1492](https://github.com/openethereum/openethereum/pull/1492)
- (BETA) add artifacts [#1420](https://github.com/paritytech/parity/pull/1420) - (BETA) add artifacts [#1420](https://github.com/openethereum/openethereum/pull/1420)
## Parity [v1.2.0: "Security"](https://github.com/paritytech/parity/releases/tag/v1.2.0) (2016-06-24) ## Parity [v1.2.0: "Security"](https://github.com/openethereum/openethereum/releases/tag/v1.2.0) (2016-06-24)
[Blog post](https://blog.parity.io/announcing-parity-1-2/) [Blog post](https://blog.parity.io/announcing-parity-1-2/)
@@ -139,238 +139,238 @@ By default, nodes vote "for" the DAO soft-fork (and try to reduce the gas limit
Full changes: Full changes:
- Signer enabled by default for UI [#1417](https://github.com/paritytech/parity/pull/1417) - Signer enabled by default for UI [#1417](https://github.com/openethereum/openethereum/pull/1417)
- Remove experimental pruning options. [#1415](https://github.com/paritytech/parity/pull/1415) - Remove experimental pruning options. [#1415](https://github.com/openethereum/openethereum/pull/1415)
- Fixing interface and port for parity ui [#1414](https://github.com/paritytech/parity/pull/1414) - Fixing interface and port for parity ui [#1414](https://github.com/openethereum/openethereum/pull/1414)
- Configurable gas limit cap. [#1405](https://github.com/paritytech/parity/pull/1405) - Configurable gas limit cap. [#1405](https://github.com/openethereum/openethereum/pull/1405)
- Bumping TopBar, Minimal SignerUI and wallet [#1413](https://github.com/paritytech/parity/pull/1413) - Bumping TopBar, Minimal SignerUI and wallet [#1413](https://github.com/openethereum/openethereum/pull/1413)
- Sync: Update highest block for progress reporting [#1411](https://github.com/paritytech/parity/pull/1411) - Sync: Update highest block for progress reporting [#1411](https://github.com/openethereum/openethereum/pull/1411)
- Tweaked CLI options for the release [#1407](https://github.com/paritytech/parity/pull/1407) - Tweaked CLI options for the release [#1407](https://github.com/openethereum/openethereum/pull/1407)
- Further rocksdb tuning [#1409](https://github.com/paritytech/parity/pull/1409) - Further rocksdb tuning [#1409](https://github.com/openethereum/openethereum/pull/1409)
- Fixing jit compilation [#1406](https://github.com/paritytech/parity/pull/1406) - Fixing jit compilation [#1406](https://github.com/openethereum/openethereum/pull/1406)
- Bump clippy [#1403](https://github.com/paritytech/parity/pull/1403) - Bump clippy [#1403](https://github.com/openethereum/openethereum/pull/1403)
- Shortcut SF condition when canon known [#1401](https://github.com/paritytech/parity/pull/1401) - Shortcut SF condition when canon known [#1401](https://github.com/openethereum/openethereum/pull/1401)
- Additional assertions for internal state of queue [#1402](https://github.com/paritytech/parity/pull/1402) - Additional assertions for internal state of queue [#1402](https://github.com/openethereum/openethereum/pull/1402)
- Replace deprecated hashdb trait names [#1394](https://github.com/paritytech/parity/pull/1394) - Replace deprecated hashdb trait names [#1394](https://github.com/openethereum/openethereum/pull/1394)
- rpc api by default for ipc [#1400](https://github.com/paritytech/parity/pull/1400) - rpc api by default for ipc [#1400](https://github.com/openethereum/openethereum/pull/1400)
- Ensure judging the SF trigger by relative branch [#1399](https://github.com/paritytech/parity/pull/1399) - Ensure judging the SF trigger by relative branch [#1399](https://github.com/openethereum/openethereum/pull/1399)
- Signer with unlocked account working as expected. [#1398](https://github.com/paritytech/parity/pull/1398) - Signer with unlocked account working as expected. [#1398](https://github.com/openethereum/openethereum/pull/1398)
- Make --signer default. [#1392](https://github.com/paritytech/parity/pull/1392) - Make --signer default. [#1392](https://github.com/openethereum/openethereum/pull/1392)
- Presale wallet [#1376](https://github.com/paritytech/parity/pull/1376) - Presale wallet [#1376](https://github.com/openethereum/openethereum/pull/1376)
- Removing signer connection limit [#1396](https://github.com/paritytech/parity/pull/1396) - Removing signer connection limit [#1396](https://github.com/openethereum/openethereum/pull/1396)
- Optional gas price in transactions come from statistics [#1388](https://github.com/paritytech/parity/pull/1388) - Optional gas price in transactions come from statistics [#1388](https://github.com/openethereum/openethereum/pull/1388)
- Update README.md with cargo install [ci-skip] [#1389](https://github.com/paritytech/parity/pull/1389) - Update README.md with cargo install [ci-skip] [#1389](https://github.com/openethereum/openethereum/pull/1389)
- Fixing possible overflow during multiplication [#1381](https://github.com/paritytech/parity/pull/1381) - Fixing possible overflow during multiplication [#1381](https://github.com/openethereum/openethereum/pull/1381)
- Update SF to latest spec [#1386](https://github.com/paritytech/parity/pull/1386) - Update SF to latest spec [#1386](https://github.com/openethereum/openethereum/pull/1386)
- Sync optimization [#1385](https://github.com/paritytech/parity/pull/1385) - Sync optimization [#1385](https://github.com/openethereum/openethereum/pull/1385)
- Fixing order of if statements to avoid overflows. [#1384](https://github.com/paritytech/parity/pull/1384) - Fixing order of if statements to avoid overflows. [#1384](https://github.com/openethereum/openethereum/pull/1384)
- New topbar & signer UI [#1383](https://github.com/paritytech/parity/pull/1383) - New topbar & signer UI [#1383](https://github.com/openethereum/openethereum/pull/1383)
- Install trigger for DAO-rescue soft-fork. [#1329](https://github.com/paritytech/parity/pull/1329) - Install trigger for DAO-rescue soft-fork. [#1329](https://github.com/openethereum/openethereum/pull/1329)
- Rocksdb flush/compact limit [#1375](https://github.com/paritytech/parity/pull/1375) - Rocksdb flush/compact limit [#1375](https://github.com/openethereum/openethereum/pull/1375)
- CentOS Dockerfile [#1377](https://github.com/paritytech/parity/pull/1377) - CentOS Dockerfile [#1377](https://github.com/openethereum/openethereum/pull/1377)
- RPC method to return number of unconfirmed transactions... [#1371](https://github.com/paritytech/parity/pull/1371) - RPC method to return number of unconfirmed transactions... [#1371](https://github.com/openethereum/openethereum/pull/1371)
- bump jsonrpc-http-server [#1369](https://github.com/paritytech/parity/pull/1369) - bump jsonrpc-http-server [#1369](https://github.com/openethereum/openethereum/pull/1369)
- Fix lock order when updating sealing [#1364](https://github.com/paritytech/parity/pull/1364) - Fix lock order when updating sealing [#1364](https://github.com/openethereum/openethereum/pull/1364)
- Update sealing on new transactions [#1365](https://github.com/paritytech/parity/pull/1365) - Update sealing on new transactions [#1365](https://github.com/openethereum/openethereum/pull/1365)
- Fixed panic on aborted connection [#1370](https://github.com/paritytech/parity/pull/1370) - Fixed panic on aborted connection [#1370](https://github.com/openethereum/openethereum/pull/1370)
- importing presale wallet [#1368](https://github.com/paritytech/parity/pull/1368) - importing presale wallet [#1368](https://github.com/openethereum/openethereum/pull/1368)
- Set default database file size large enough [#1363](https://github.com/paritytech/parity/pull/1363) - Set default database file size large enough [#1363](https://github.com/openethereum/openethereum/pull/1363)
- Reserved peers rpc API [#1360](https://github.com/paritytech/parity/pull/1360) - Reserved peers rpc API [#1360](https://github.com/openethereum/openethereum/pull/1360)
- Fixing replacing transaction with lower gas_price result. [#1343](https://github.com/paritytech/parity/pull/1343) - Fixing replacing transaction with lower gas_price result. [#1343](https://github.com/openethereum/openethereum/pull/1343)
- fixed migration of empty pruning dir [#1362](https://github.com/paritytech/parity/pull/1362) - fixed migration of empty pruning dir [#1362](https://github.com/openethereum/openethereum/pull/1362)
- Transaction processing queue [#1335](https://github.com/paritytech/parity/pull/1335) - Transaction processing queue [#1335](https://github.com/openethereum/openethereum/pull/1335)
- Fixing last nonce values in case transaction is replaced [#1359](https://github.com/paritytech/parity/pull/1359) - Fixing last nonce values in case transaction is replaced [#1359](https://github.com/openethereum/openethereum/pull/1359)
- docopt is an optional dependency of ethkey and ethstore [#1358](https://github.com/paritytech/parity/pull/1358) - docopt is an optional dependency of ethkey and ethstore [#1358](https://github.com/openethereum/openethereum/pull/1358)
- Fixing clippy warnings [#1354](https://github.com/paritytech/parity/pull/1354) - Fixing clippy warnings [#1354](https://github.com/openethereum/openethereum/pull/1354)
- Reduce locking when syncing [#1357](https://github.com/paritytech/parity/pull/1357) - Reduce locking when syncing [#1357](https://github.com/openethereum/openethereum/pull/1357)
- removed unnecessary logs [#1356](https://github.com/paritytech/parity/pull/1356) - removed unnecessary logs [#1356](https://github.com/openethereum/openethereum/pull/1356)
- Updating parity-dapps [#1353](https://github.com/paritytech/parity/pull/1353) - Updating parity-dapps [#1353](https://github.com/openethereum/openethereum/pull/1353)
- moved keystore tests files from util to ethstore [#1352](https://github.com/paritytech/parity/pull/1352) - moved keystore tests files from util to ethstore [#1352](https://github.com/openethereum/openethereum/pull/1352)
- removed redundant bigint deps [#1351](https://github.com/paritytech/parity/pull/1351) - removed redundant bigint deps [#1351](https://github.com/openethereum/openethereum/pull/1351)
- Reopen "reserved peers and reserved-only flag" [#1350](https://github.com/paritytech/parity/pull/1350) - Reopen "reserved peers and reserved-only flag" [#1350](https://github.com/openethereum/openethereum/pull/1350)
- Configurable rocksdb cache size [#1348](https://github.com/paritytech/parity/pull/1348) - Configurable rocksdb cache size [#1348](https://github.com/openethereum/openethereum/pull/1348)
- Fixing future order and errors when reaching limit. [#1346](https://github.com/paritytech/parity/pull/1346) - Fixing future order and errors when reaching limit. [#1346](https://github.com/openethereum/openethereum/pull/1346)
- Removing priority on local transactions [#1342](https://github.com/paritytech/parity/pull/1342) - Removing priority on local transactions [#1342](https://github.com/openethereum/openethereum/pull/1342)
- Revert "Reserved peers, reserved-only flag" [#1349](https://github.com/paritytech/parity/pull/1349) - Revert "Reserved peers, reserved-only flag" [#1349](https://github.com/openethereum/openethereum/pull/1349)
- Sync attack defense: Deactivate peers on invalid block bodies [#1345](https://github.com/paritytech/parity/pull/1345) - Sync attack defense: Deactivate peers on invalid block bodies [#1345](https://github.com/openethereum/openethereum/pull/1345)
- Reserved peers, reserved-only flag [#1347](https://github.com/paritytech/parity/pull/1347) - Reserved peers, reserved-only flag [#1347](https://github.com/openethereum/openethereum/pull/1347)
- CI for ethkey and ethstore [#1341](https://github.com/paritytech/parity/pull/1341) - CI for ethkey and ethstore [#1341](https://github.com/openethereum/openethereum/pull/1341)
- Fixed empty block body composition [#1340](https://github.com/paritytech/parity/pull/1340) - Fixed empty block body composition [#1340](https://github.com/openethereum/openethereum/pull/1340)
- Provide a signer UI token by default. [#1334](https://github.com/paritytech/parity/pull/1334) - Provide a signer UI token by default. [#1334](https://github.com/openethereum/openethereum/pull/1334)
- docker uses rustup, fixes #1337 [#1344](https://github.com/paritytech/parity/pull/1344) - docker uses rustup, fixes #1337 [#1344](https://github.com/openethereum/openethereum/pull/1344)
- Fixed network service dispose [#1339](https://github.com/paritytech/parity/pull/1339) - Fixed network service dispose [#1339](https://github.com/openethereum/openethereum/pull/1339)
- Sync: Cache last sync round block parents [#1331](https://github.com/paritytech/parity/pull/1331) - Sync: Cache last sync round block parents [#1331](https://github.com/openethereum/openethereum/pull/1331)
- secret store separated from util [#1304](https://github.com/paritytech/parity/pull/1304) - secret store separated from util [#1304](https://github.com/openethereum/openethereum/pull/1304)
- --geth prevent getTransactionReceipt from using pending. [#1325](https://github.com/paritytech/parity/pull/1325) - --geth prevent getTransactionReceipt from using pending. [#1325](https://github.com/openethereum/openethereum/pull/1325)
- Fixing locks order in miner. [#1328](https://github.com/paritytech/parity/pull/1328) - Fixing locks order in miner. [#1328](https://github.com/openethereum/openethereum/pull/1328)
- Update default gas limit, rename field [#1324](https://github.com/paritytech/parity/pull/1324) - Update default gas limit, rename field [#1324](https://github.com/openethereum/openethereum/pull/1324)
- Use constants for DatabaseConfig [#1318](https://github.com/paritytech/parity/pull/1318) - Use constants for DatabaseConfig [#1318](https://github.com/openethereum/openethereum/pull/1318)
- Fixing clippy warnings [#1321](https://github.com/paritytech/parity/pull/1321) - Fixing clippy warnings [#1321](https://github.com/openethereum/openethereum/pull/1321)
- Bumping topbar. Fixing ws server closing when suspending [#1312](https://github.com/paritytech/parity/pull/1312) - Bumping topbar. Fixing ws server closing when suspending [#1312](https://github.com/openethereum/openethereum/pull/1312)
- Syncing fix [#1320](https://github.com/paritytech/parity/pull/1320) - Syncing fix [#1320](https://github.com/openethereum/openethereum/pull/1320)
- Filling-in optional fields of TransactionRequest... [#1305](https://github.com/paritytech/parity/pull/1305) - Filling-in optional fields of TransactionRequest... [#1305](https://github.com/openethereum/openethereum/pull/1305)
- Removing MakerOTC and DAO dapps [#1319](https://github.com/paritytech/parity/pull/1319) - Removing MakerOTC and DAO dapps [#1319](https://github.com/openethereum/openethereum/pull/1319)
- Disabling ethcore_set* APIs by default (+ Status page update) [#1315](https://github.com/paritytech/parity/pull/1315) - Disabling ethcore_set* APIs by default (+ Status page update) [#1315](https://github.com/openethereum/openethereum/pull/1315)
- fixed #1180 [#1282](https://github.com/paritytech/parity/pull/1282) - fixed #1180 [#1282](https://github.com/openethereum/openethereum/pull/1282)
- Network start/stop [#1313](https://github.com/paritytech/parity/pull/1313) - Network start/stop [#1313](https://github.com/openethereum/openethereum/pull/1313)
- Additional logging for own transactions in queue [#1311](https://github.com/paritytech/parity/pull/1311) - Additional logging for own transactions in queue [#1311](https://github.com/openethereum/openethereum/pull/1311)
- DAO Rescue soft fork [#1309](https://github.com/paritytech/parity/pull/1309) - DAO Rescue soft fork [#1309](https://github.com/openethereum/openethereum/pull/1309)
- Appveyor config for windows build+installer [#1302](https://github.com/paritytech/parity/pull/1302) - Appveyor config for windows build+installer [#1302](https://github.com/openethereum/openethereum/pull/1302)
- Key load avoid warning [#1303](https://github.com/paritytech/parity/pull/1303) - Key load avoid warning [#1303](https://github.com/openethereum/openethereum/pull/1303)
- More meaningful errors when sending transaction [#1290](https://github.com/paritytech/parity/pull/1290) - More meaningful errors when sending transaction [#1290](https://github.com/openethereum/openethereum/pull/1290)
- Gas price statistics. [#1291](https://github.com/paritytech/parity/pull/1291) - Gas price statistics. [#1291](https://github.com/openethereum/openethereum/pull/1291)
- Fix read-ahead bug. [#1298](https://github.com/paritytech/parity/pull/1298) - Fix read-ahead bug. [#1298](https://github.com/openethereum/openethereum/pull/1298)
- firewall rules for windows installer [#1297](https://github.com/paritytech/parity/pull/1297) - firewall rules for windows installer [#1297](https://github.com/openethereum/openethereum/pull/1297)
- x64 program files path for installer [#1296](https://github.com/paritytech/parity/pull/1296) - x64 program files path for installer [#1296](https://github.com/openethereum/openethereum/pull/1296)
- Fixed loosing peers on incoming connections. [#1293](https://github.com/paritytech/parity/pull/1293) - Fixed loosing peers on incoming connections. [#1293](https://github.com/openethereum/openethereum/pull/1293)
- fixed #1261, overflow when calculating work [#1283](https://github.com/paritytech/parity/pull/1283) - fixed #1261, overflow when calculating work [#1283](https://github.com/openethereum/openethereum/pull/1283)
- snappy and minor block compression [#1286](https://github.com/paritytech/parity/pull/1286) - snappy and minor block compression [#1286](https://github.com/openethereum/openethereum/pull/1286)
- clarify build instructions [#1287](https://github.com/paritytech/parity/pull/1287) - clarify build instructions [#1287](https://github.com/openethereum/openethereum/pull/1287)
- fixed #1255 [#1280](https://github.com/paritytech/parity/pull/1280) - fixed #1255 [#1280](https://github.com/openethereum/openethereum/pull/1280)
- bump rust-crypto [#1289](https://github.com/paritytech/parity/pull/1289) - bump rust-crypto [#1289](https://github.com/openethereum/openethereum/pull/1289)
- Security audit issues fixed [#1279](https://github.com/paritytech/parity/pull/1279) - Security audit issues fixed [#1279](https://github.com/openethereum/openethereum/pull/1279)
- Fixing origin/host validation [#1273](https://github.com/paritytech/parity/pull/1273) - Fixing origin/host validation [#1273](https://github.com/openethereum/openethereum/pull/1273)
- windows installer + parity start ui cli option [#1284](https://github.com/paritytech/parity/pull/1284) - windows installer + parity start ui cli option [#1284](https://github.com/openethereum/openethereum/pull/1284)
- ipc lib version bump [#1285](https://github.com/paritytech/parity/pull/1285) - ipc lib version bump [#1285](https://github.com/openethereum/openethereum/pull/1285)
- Syncing improvements [#1274](https://github.com/paritytech/parity/pull/1274) - Syncing improvements [#1274](https://github.com/openethereum/openethereum/pull/1274)
- removed redundant if condition [#1270](https://github.com/paritytech/parity/pull/1270) - removed redundant if condition [#1270](https://github.com/openethereum/openethereum/pull/1270)
- Naive chunk creation, snapshotting [#1263](https://github.com/paritytech/parity/pull/1263) - Naive chunk creation, snapshotting [#1263](https://github.com/openethereum/openethereum/pull/1263)
- Fixing generating new token while another parity instance is running. [#1272](https://github.com/paritytech/parity/pull/1272) - Fixing generating new token while another parity instance is running. [#1272](https://github.com/openethereum/openethereum/pull/1272)
- README: rustup and windows instructions [#1266](https://github.com/paritytech/parity/pull/1266) - README: rustup and windows instructions [#1266](https://github.com/openethereum/openethereum/pull/1266)
- Windows build [#1253](https://github.com/paritytech/parity/pull/1253) - Windows build [#1253](https://github.com/openethereum/openethereum/pull/1253)
- removed try_seal from MiningBlockChainClient [#1262](https://github.com/paritytech/parity/pull/1262) - removed try_seal from MiningBlockChainClient [#1262](https://github.com/openethereum/openethereum/pull/1262)
- simplified block opening [#1232](https://github.com/paritytech/parity/pull/1232) - simplified block opening [#1232](https://github.com/openethereum/openethereum/pull/1232)
- Clippy bump [#1259](https://github.com/paritytech/parity/pull/1259) - Clippy bump [#1259](https://github.com/openethereum/openethereum/pull/1259)
- Fixing uint ASM macros compilation [#1258](https://github.com/paritytech/parity/pull/1258) - Fixing uint ASM macros compilation [#1258](https://github.com/openethereum/openethereum/pull/1258)
- Signer port returned from RPC + Topbar showing count of unconfirmed transactions. [#1252](https://github.com/paritytech/parity/pull/1252) - Signer port returned from RPC + Topbar showing count of unconfirmed transactions. [#1252](https://github.com/openethereum/openethereum/pull/1252)
- codegen - avoid unwraps leading to compilation crash [#1250](https://github.com/paritytech/parity/pull/1250) - codegen - avoid unwraps leading to compilation crash [#1250](https://github.com/openethereum/openethereum/pull/1250)
- Dapps bump [#1257](https://github.com/paritytech/parity/pull/1257) - Dapps bump [#1257](https://github.com/openethereum/openethereum/pull/1257)
- Windows named pipes [#1254](https://github.com/paritytech/parity/pull/1254) - Windows named pipes [#1254](https://github.com/openethereum/openethereum/pull/1254)
- remove unsafety from util/hash.rs and util/bigint/uint.rs [#1236](https://github.com/paritytech/parity/pull/1236) - remove unsafety from util/hash.rs and util/bigint/uint.rs [#1236](https://github.com/openethereum/openethereum/pull/1236)
- Fixing CORS settings for special values: * & null. [#1247](https://github.com/paritytech/parity/pull/1247) - Fixing CORS settings for special values: * & null. [#1247](https://github.com/openethereum/openethereum/pull/1247)
- JSONRPC test strings avoid using \ char [#1246](https://github.com/paritytech/parity/pull/1246) - JSONRPC test strings avoid using \ char [#1246](https://github.com/openethereum/openethereum/pull/1246)
- Tests for JSON serialisation of statediff/vmtrace [#1241](https://github.com/paritytech/parity/pull/1241) - Tests for JSON serialisation of statediff/vmtrace [#1241](https://github.com/openethereum/openethereum/pull/1241)
- Bumping Dapps & TopBar to newest version. [#1245](https://github.com/paritytech/parity/pull/1245) - Bumping Dapps & TopBar to newest version. [#1245](https://github.com/openethereum/openethereum/pull/1245)
- keys import [#1240](https://github.com/paritytech/parity/pull/1240) - keys import [#1240](https://github.com/openethereum/openethereum/pull/1240)
- Splitting RPC Apis into more fine-grained sets [#1234](https://github.com/paritytech/parity/pull/1234) - Splitting RPC Apis into more fine-grained sets [#1234](https://github.com/openethereum/openethereum/pull/1234)
- Refactor triedb constructors to error on invalid state root [#1230](https://github.com/paritytech/parity/pull/1230) - Refactor triedb constructors to error on invalid state root [#1230](https://github.com/openethereum/openethereum/pull/1230)
- Signer RPC method to check if signer is enabled [#1238](https://github.com/paritytech/parity/pull/1238) - Signer RPC method to check if signer is enabled [#1238](https://github.com/openethereum/openethereum/pull/1238)
- Fixing signer behaviour when confirming transaction with wrong password. [#1237](https://github.com/paritytech/parity/pull/1237) - Fixing signer behaviour when confirming transaction with wrong password. [#1237](https://github.com/openethereum/openethereum/pull/1237)
- SystemUIs authorization [#1233](https://github.com/paritytech/parity/pull/1233) - SystemUIs authorization [#1233](https://github.com/openethereum/openethereum/pull/1233)
- IPC path for tesetnet with --geth compatibility [#1231](https://github.com/paritytech/parity/pull/1231) - IPC path for tesetnet with --geth compatibility [#1231](https://github.com/openethereum/openethereum/pull/1231)
- Transaction tracing for eth_call [#1210](https://github.com/paritytech/parity/pull/1210) - Transaction tracing for eth_call [#1210](https://github.com/openethereum/openethereum/pull/1210)
- Removing compilation warnings [#1227](https://github.com/paritytech/parity/pull/1227) - Removing compilation warnings [#1227](https://github.com/openethereum/openethereum/pull/1227)
- Allowing connections only from chrome-extension and self-hosted client [#1226](https://github.com/paritytech/parity/pull/1226) - Allowing connections only from chrome-extension and self-hosted client [#1226](https://github.com/openethereum/openethereum/pull/1226)
- Clippy bump & fixing warnings [#1219](https://github.com/paritytech/parity/pull/1219) - Clippy bump & fixing warnings [#1219](https://github.com/openethereum/openethereum/pull/1219)
- Bumping serde & syntex [#1216](https://github.com/paritytech/parity/pull/1216) - Bumping serde & syntex [#1216](https://github.com/openethereum/openethereum/pull/1216)
- Minimal Signer UI (System UI) exposed over websockets. [#1211](https://github.com/paritytech/parity/pull/1211) - Minimal Signer UI (System UI) exposed over websockets. [#1211](https://github.com/openethereum/openethereum/pull/1211)
- Switch RPC namespace form ethcore_ to trace_ [#1208](https://github.com/paritytech/parity/pull/1208) - Switch RPC namespace form ethcore_ to trace_ [#1208](https://github.com/openethereum/openethereum/pull/1208)
- Verify the state root exists before creating a State [#1217](https://github.com/paritytech/parity/pull/1217) - Verify the state root exists before creating a State [#1217](https://github.com/openethereum/openethereum/pull/1217)
- Integrate state diffing into the ethcore JSONRPC [#1206](https://github.com/paritytech/parity/pull/1206) - Integrate state diffing into the ethcore JSONRPC [#1206](https://github.com/openethereum/openethereum/pull/1206)
- Updating topbar to latest version [#1220](https://github.com/paritytech/parity/pull/1220) - Updating topbar to latest version [#1220](https://github.com/openethereum/openethereum/pull/1220)
- Loading local Dapps from FS. [#1214](https://github.com/paritytech/parity/pull/1214) - Loading local Dapps from FS. [#1214](https://github.com/openethereum/openethereum/pull/1214)
- Ipc serialization & protocol fixes [#1188](https://github.com/paritytech/parity/pull/1188) - Ipc serialization & protocol fixes [#1188](https://github.com/openethereum/openethereum/pull/1188)
- Have Ext::ret take self by value [#1187](https://github.com/paritytech/parity/pull/1187) - Have Ext::ret take self by value [#1187](https://github.com/openethereum/openethereum/pull/1187)
- Simple WebSockets notification about new request [#1202](https://github.com/paritytech/parity/pull/1202) - Simple WebSockets notification about new request [#1202](https://github.com/openethereum/openethereum/pull/1202)
- Removing leftovers of ethminer [#1207](https://github.com/paritytech/parity/pull/1207) - Removing leftovers of ethminer [#1207](https://github.com/openethereum/openethereum/pull/1207)
- fixed #1204 [#1205](https://github.com/paritytech/parity/pull/1205) - fixed #1204 [#1205](https://github.com/openethereum/openethereum/pull/1205)
- VM tracing and JSON RPC endpoint for it. [#1169](https://github.com/paritytech/parity/pull/1169) - VM tracing and JSON RPC endpoint for it. [#1169](https://github.com/openethereum/openethereum/pull/1169)
- devtools helpers extended [#1186](https://github.com/paritytech/parity/pull/1186) - devtools helpers extended [#1186](https://github.com/openethereum/openethereum/pull/1186)
- Networking refactoring [#1172](https://github.com/paritytech/parity/pull/1172) - Networking refactoring [#1172](https://github.com/openethereum/openethereum/pull/1172)
- Client & Miner refactoring [#1195](https://github.com/paritytech/parity/pull/1195) - Client & Miner refactoring [#1195](https://github.com/openethereum/openethereum/pull/1195)
- update readme [#1201](https://github.com/paritytech/parity/pull/1201) - update readme [#1201](https://github.com/openethereum/openethereum/pull/1201)
- Simple signing queue, confirmation APIs exposed in signer WebSockets. [#1182](https://github.com/paritytech/parity/pull/1182) - Simple signing queue, confirmation APIs exposed in signer WebSockets. [#1182](https://github.com/openethereum/openethereum/pull/1182)
- Using ordered hashmap to keep the order of dapps on home screen [#1199](https://github.com/paritytech/parity/pull/1199) - Using ordered hashmap to keep the order of dapps on home screen [#1199](https://github.com/openethereum/openethereum/pull/1199)
- Disabling `ethcore` by default, adding x-frame-options header to dapps. [#1197](https://github.com/paritytech/parity/pull/1197) - Disabling `ethcore` by default, adding x-frame-options header to dapps. [#1197](https://github.com/openethereum/openethereum/pull/1197)
- transaction count verifier tests [#1196](https://github.com/paritytech/parity/pull/1196) - transaction count verifier tests [#1196](https://github.com/openethereum/openethereum/pull/1196)
- expunge x! and xx! from the codebase [#1192](https://github.com/paritytech/parity/pull/1192) - expunge x! and xx! from the codebase [#1192](https://github.com/openethereum/openethereum/pull/1192)
- Database service upgrade (from the ipc branch) [#1185](https://github.com/paritytech/parity/pull/1185) - Database service upgrade (from the ipc branch) [#1185](https://github.com/openethereum/openethereum/pull/1185)
- stop eth_syncing from returning true forever [#1181](https://github.com/paritytech/parity/pull/1181) - stop eth_syncing from returning true forever [#1181](https://github.com/openethereum/openethereum/pull/1181)
- Sync fixes and tweaks [#1164](https://github.com/paritytech/parity/pull/1164) - Sync fixes and tweaks [#1164](https://github.com/openethereum/openethereum/pull/1164)
- Exposing RPC over Signer WebSockets [#1167](https://github.com/paritytech/parity/pull/1167) - Exposing RPC over Signer WebSockets [#1167](https://github.com/openethereum/openethereum/pull/1167)
- implement missing rpc methods and tests [#1171](https://github.com/paritytech/parity/pull/1171) - implement missing rpc methods and tests [#1171](https://github.com/openethereum/openethereum/pull/1171)
- json ipc server version bump [#1170](https://github.com/paritytech/parity/pull/1170) - json ipc server version bump [#1170](https://github.com/openethereum/openethereum/pull/1170)
- Updated dependencies for windows build [#1173](https://github.com/paritytech/parity/pull/1173) - Updated dependencies for windows build [#1173](https://github.com/openethereum/openethereum/pull/1173)
- Framework for improved RPC unit tests [#1141](https://github.com/paritytech/parity/pull/1141) - Framework for improved RPC unit tests [#1141](https://github.com/openethereum/openethereum/pull/1141)
- remove all possible unsafe code in crypto [#1168](https://github.com/paritytech/parity/pull/1168) - remove all possible unsafe code in crypto [#1168](https://github.com/openethereum/openethereum/pull/1168)
- Base for Signer Websockets server [#1158](https://github.com/paritytech/parity/pull/1158) - Base for Signer Websockets server [#1158](https://github.com/openethereum/openethereum/pull/1158)
- Write queue to speed-up db ipc [#1160](https://github.com/paritytech/parity/pull/1160) - Write queue to speed-up db ipc [#1160](https://github.com/openethereum/openethereum/pull/1160)
- Fixing few clippy warnings [#1163](https://github.com/paritytech/parity/pull/1163) - Fixing few clippy warnings [#1163](https://github.com/openethereum/openethereum/pull/1163)
- Change eth_signAndSendTransaction to personal_SignAndSendTransaction [#1154](https://github.com/paritytech/parity/pull/1154) - Change eth_signAndSendTransaction to personal_SignAndSendTransaction [#1154](https://github.com/openethereum/openethereum/pull/1154)
- Support "earliest" and specific block parameters in RPC where possible [#1149](https://github.com/paritytech/parity/pull/1149) - Support "earliest" and specific block parameters in RPC where possible [#1149](https://github.com/openethereum/openethereum/pull/1149)
- migration fixes [#1155](https://github.com/paritytech/parity/pull/1155) - migration fixes [#1155](https://github.com/openethereum/openethereum/pull/1155)
- Empty trusted signer crate with it's general purpose described. [#1150](https://github.com/paritytech/parity/pull/1150) - Empty trusted signer crate with it's general purpose described. [#1150](https://github.com/openethereum/openethereum/pull/1150)
- More bootnodes for morden. [#1153](https://github.com/paritytech/parity/pull/1153) - More bootnodes for morden. [#1153](https://github.com/openethereum/openethereum/pull/1153)
- move existing rpc tests into mocked module [#1151](https://github.com/paritytech/parity/pull/1151) - move existing rpc tests into mocked module [#1151](https://github.com/openethereum/openethereum/pull/1151)
- Bloomchain [#1014](https://github.com/paritytech/parity/pull/1014) - Bloomchain [#1014](https://github.com/openethereum/openethereum/pull/1014)
- Renaming dapps repos. Updating dapps [#1142](https://github.com/paritytech/parity/pull/1142) - Renaming dapps repos. Updating dapps [#1142](https://github.com/openethereum/openethereum/pull/1142)
- fixed pending transactions [#1147](https://github.com/paritytech/parity/pull/1147) - fixed pending transactions [#1147](https://github.com/openethereum/openethereum/pull/1147)
- Basic benches to provide metrics for ipc optimizations [#1145](https://github.com/paritytech/parity/pull/1145) - Basic benches to provide metrics for ipc optimizations [#1145](https://github.com/openethereum/openethereum/pull/1145)
- Fixing clippy warnings [#1148](https://github.com/paritytech/parity/pull/1148) - Fixing clippy warnings [#1148](https://github.com/openethereum/openethereum/pull/1148)
- correct signature of SecTrieDB::raw_mut [#1143](https://github.com/paritytech/parity/pull/1143) - correct signature of SecTrieDB::raw_mut [#1143](https://github.com/openethereum/openethereum/pull/1143)
- Merge to master and start hypervisor for import/export [#1138](https://github.com/paritytech/parity/pull/1138) - Merge to master and start hypervisor for import/export [#1138](https://github.com/openethereum/openethereum/pull/1138)
- Bumping clippy. Fixing warnings [#1139](https://github.com/paritytech/parity/pull/1139) - Bumping clippy. Fixing warnings [#1139](https://github.com/openethereum/openethereum/pull/1139)
- Display progress when importing [#1136](https://github.com/paritytech/parity/pull/1136) - Display progress when importing [#1136](https://github.com/openethereum/openethereum/pull/1136)
- foundation of simple db migration [#1128](https://github.com/paritytech/parity/pull/1128) - foundation of simple db migration [#1128](https://github.com/openethereum/openethereum/pull/1128)
- Fixpending [#1074](https://github.com/paritytech/parity/pull/1074) - Fixpending [#1074](https://github.com/openethereum/openethereum/pull/1074)
- Sync: Propagate uncles and fix status reporting [#1134](https://github.com/paritytech/parity/pull/1134) - Sync: Propagate uncles and fix status reporting [#1134](https://github.com/openethereum/openethereum/pull/1134)
- Coloured, padding logging. [#1133](https://github.com/paritytech/parity/pull/1133) - Coloured, padding logging. [#1133](https://github.com/openethereum/openethereum/pull/1133)
- Importing [#1132](https://github.com/paritytech/parity/pull/1132) - Importing [#1132](https://github.com/openethereum/openethereum/pull/1132)
- Have `die_with_error` use `fmt::Display` rather than Debug [#1116](https://github.com/paritytech/parity/pull/1116) - Have `die_with_error` use `fmt::Display` rather than Debug [#1116](https://github.com/openethereum/openethereum/pull/1116)
- Exporting [#1129](https://github.com/paritytech/parity/pull/1129) - Exporting [#1129](https://github.com/openethereum/openethereum/pull/1129)
- Sign and send transaction [#1124](https://github.com/paritytech/parity/pull/1124) - Sign and send transaction [#1124](https://github.com/openethereum/openethereum/pull/1124)
- Fixing unused imports warnings [#1125](https://github.com/paritytech/parity/pull/1125) - Fixing unused imports warnings [#1125](https://github.com/openethereum/openethereum/pull/1125)
- Adding info messages on mined blocks [#1127](https://github.com/paritytech/parity/pull/1127) - Adding info messages on mined blocks [#1127](https://github.com/openethereum/openethereum/pull/1127)
- Fix styling - don't mix spaces with tabs!!! [#1123](https://github.com/paritytech/parity/pull/1123) - Fix styling - don't mix spaces with tabs!!! [#1123](https://github.com/openethereum/openethereum/pull/1123)
- Fix is_syncing so it's false as long as the update is trivial. [#1122](https://github.com/paritytech/parity/pull/1122) - Fix is_syncing so it's false as long as the update is trivial. [#1122](https://github.com/openethereum/openethereum/pull/1122)
- Relock unlocked accounts after first use [#1120](https://github.com/paritytech/parity/pull/1120) - Relock unlocked accounts after first use [#1120](https://github.com/openethereum/openethereum/pull/1120)
- Avoid importing keys into wrong place. [#1119](https://github.com/paritytech/parity/pull/1119) - Avoid importing keys into wrong place. [#1119](https://github.com/openethereum/openethereum/pull/1119)
- Implement receipt's gasUsed field [#1118](https://github.com/paritytech/parity/pull/1118) - Implement receipt's gasUsed field [#1118](https://github.com/openethereum/openethereum/pull/1118)
- New dapps & query parameter handling [#1113](https://github.com/paritytech/parity/pull/1113) - New dapps & query parameter handling [#1113](https://github.com/openethereum/openethereum/pull/1113)
- pretty print trace error [#1098](https://github.com/paritytech/parity/pull/1098) - pretty print trace error [#1098](https://github.com/openethereum/openethereum/pull/1098)
- New syncing strategy [#1095](https://github.com/paritytech/parity/pull/1095) - New syncing strategy [#1095](https://github.com/openethereum/openethereum/pull/1095)
- ethcore-db crate [#1097](https://github.com/paritytech/parity/pull/1097) - ethcore-db crate [#1097](https://github.com/openethereum/openethereum/pull/1097)
- Fix the default for pruning. [#1107](https://github.com/paritytech/parity/pull/1107) - Fix the default for pruning. [#1107](https://github.com/openethereum/openethereum/pull/1107)
- Make Id/ID and db/Db/DB usage consistent [#1105](https://github.com/paritytech/parity/pull/1105) - Make Id/ID and db/Db/DB usage consistent [#1105](https://github.com/openethereum/openethereum/pull/1105)
- Miner holds it's own copy of spec/engine [#1091](https://github.com/paritytech/parity/pull/1091) - Miner holds it's own copy of spec/engine [#1091](https://github.com/openethereum/openethereum/pull/1091)
- Apps listing API & Home webapp. [#1101](https://github.com/paritytech/parity/pull/1101) - Apps listing API & Home webapp. [#1101](https://github.com/openethereum/openethereum/pull/1101)
- CLI option for using JITEVM [#1103](https://github.com/paritytech/parity/pull/1103) - CLI option for using JITEVM [#1103](https://github.com/openethereum/openethereum/pull/1103)
- Fix up the seal fields in RPC output [#1096](https://github.com/paritytech/parity/pull/1096) - Fix up the seal fields in RPC output [#1096](https://github.com/openethereum/openethereum/pull/1096)
- Fixing some warnings [#1102](https://github.com/paritytech/parity/pull/1102) - Fixing some warnings [#1102](https://github.com/openethereum/openethereum/pull/1102)
- fixed incorrect decoding of header seal_fields. added tests. #1090 [#1094](https://github.com/paritytech/parity/pull/1094) - fixed incorrect decoding of header seal_fields. added tests. #1090 [#1094](https://github.com/openethereum/openethereum/pull/1094)
- Bumping Clippy [#1093](https://github.com/paritytech/parity/pull/1093) - Bumping Clippy [#1093](https://github.com/openethereum/openethereum/pull/1093)
- Injectable topbar support. [#1092](https://github.com/paritytech/parity/pull/1092) - Injectable topbar support. [#1092](https://github.com/openethereum/openethereum/pull/1092)
- New syncing part 1: Block collection [#1088](https://github.com/paritytech/parity/pull/1088) - New syncing part 1: Block collection [#1088](https://github.com/openethereum/openethereum/pull/1088)
- Moving all Client public API types to separate mod & binary serialization codegen for that mod [#1051](https://github.com/paritytech/parity/pull/1051) - Moving all Client public API types to separate mod & binary serialization codegen for that mod [#1051](https://github.com/openethereum/openethereum/pull/1051)
- Subdomains support in content server (webapps server). [#1082](https://github.com/paritytech/parity/pull/1082) - Subdomains support in content server (webapps server). [#1082](https://github.com/openethereum/openethereum/pull/1082)
- Fix uncle getter [#1087](https://github.com/paritytech/parity/pull/1087) - Fix uncle getter [#1087](https://github.com/openethereum/openethereum/pull/1087)
- Provide fallback for usd-per-eth option when offline. [#1085](https://github.com/paritytech/parity/pull/1085) - Provide fallback for usd-per-eth option when offline. [#1085](https://github.com/openethereum/openethereum/pull/1085)
- path centralized [#1083](https://github.com/paritytech/parity/pull/1083) - path centralized [#1083](https://github.com/openethereum/openethereum/pull/1083)
- Limiting result of the execution to execution-specific errors [#1071](https://github.com/paritytech/parity/pull/1071) - Limiting result of the execution to execution-specific errors [#1071](https://github.com/openethereum/openethereum/pull/1071)
- Configurable keys security [#1080](https://github.com/paritytech/parity/pull/1080) - Configurable keys security [#1080](https://github.com/openethereum/openethereum/pull/1080)
- comma delimeting multiple cors headers [#1078](https://github.com/paritytech/parity/pull/1078) - comma delimeting multiple cors headers [#1078](https://github.com/openethereum/openethereum/pull/1078)
- Update error message [#1081](https://github.com/paritytech/parity/pull/1081) - Update error message [#1081](https://github.com/openethereum/openethereum/pull/1081)
- Updating dapp-wallet [#1076](https://github.com/paritytech/parity/pull/1076) - Updating dapp-wallet [#1076](https://github.com/openethereum/openethereum/pull/1076)
- Fixed connecting to local nodes on startup [#1070](https://github.com/paritytech/parity/pull/1070) - Fixed connecting to local nodes on startup [#1070](https://github.com/openethereum/openethereum/pull/1070)
- Validate signature in Tx queue [#1068](https://github.com/paritytech/parity/pull/1068) - Validate signature in Tx queue [#1068](https://github.com/openethereum/openethereum/pull/1068)
- moving deps to ethcore/hyper and bumping jsonrpc-http-server version [#1067](https://github.com/paritytech/parity/pull/1067) - moving deps to ethcore/hyper and bumping jsonrpc-http-server version [#1067](https://github.com/openethereum/openethereum/pull/1067)
- Updating status page. Bringing back wallet [#1064](https://github.com/paritytech/parity/pull/1064) - Updating status page. Bringing back wallet [#1064](https://github.com/openethereum/openethereum/pull/1064)
- Fix --geth IPC for MacOS. [#1062](https://github.com/paritytech/parity/pull/1062) - Fix --geth IPC for MacOS. [#1062](https://github.com/openethereum/openethereum/pull/1062)
- Fixing formatter for defaultExtraData [#1060](https://github.com/paritytech/parity/pull/1060) - Fixing formatter for defaultExtraData [#1060](https://github.com/openethereum/openethereum/pull/1060)
- --geth IPC compatibility [#1059](https://github.com/paritytech/parity/pull/1059) - --geth IPC compatibility [#1059](https://github.com/openethereum/openethereum/pull/1059)
- Moving dependencies to ethcore & uniforming syntax libs through all crates [#1050](https://github.com/paritytech/parity/pull/1050) - Moving dependencies to ethcore & uniforming syntax libs through all crates [#1050](https://github.com/openethereum/openethereum/pull/1050)
- update hyper branch mio [#1054](https://github.com/paritytech/parity/pull/1054) - update hyper branch mio [#1054](https://github.com/openethereum/openethereum/pull/1054)
- IPC lib update [#1047](https://github.com/paritytech/parity/pull/1047) - IPC lib update [#1047](https://github.com/openethereum/openethereum/pull/1047)
- Updating hyper-mio revision [#1048](https://github.com/paritytech/parity/pull/1048) - Updating hyper-mio revision [#1048](https://github.com/openethereum/openethereum/pull/1048)
- Bump ipc-lib version [#1046](https://github.com/paritytech/parity/pull/1046) - Bump ipc-lib version [#1046](https://github.com/openethereum/openethereum/pull/1046)
- Tidy up CLI options and make JSONRPC & webapps on by default. [#1045](https://github.com/paritytech/parity/pull/1045) - Tidy up CLI options and make JSONRPC & webapps on by default. [#1045](https://github.com/openethereum/openethereum/pull/1045)
- Fixing clippy warnings [#1044](https://github.com/paritytech/parity/pull/1044) - Fixing clippy warnings [#1044](https://github.com/openethereum/openethereum/pull/1044)
- Fixing RPC modules compatibility [#1041](https://github.com/paritytech/parity/pull/1041) - Fixing RPC modules compatibility [#1041](https://github.com/openethereum/openethereum/pull/1041)
- Fixing hyper-mio revision [#1043](https://github.com/paritytech/parity/pull/1043) - Fixing hyper-mio revision [#1043](https://github.com/openethereum/openethereum/pull/1043)
- Updating locations of webapp stuff [#1040](https://github.com/paritytech/parity/pull/1040) - Updating locations of webapp stuff [#1040](https://github.com/openethereum/openethereum/pull/1040)
- JSON-RPC over IPC [#1039](https://github.com/paritytech/parity/pull/1039) - JSON-RPC over IPC [#1039](https://github.com/openethereum/openethereum/pull/1039)
- Update nix/mio for ARM [#1036](https://github.com/paritytech/parity/pull/1036) - Update nix/mio for ARM [#1036](https://github.com/openethereum/openethereum/pull/1036)
- Basic Authority [#991](https://github.com/paritytech/parity/pull/991) - Basic Authority [#991](https://github.com/openethereum/openethereum/pull/991)
- Prioritizing of local transaction [#1023](https://github.com/paritytech/parity/pull/1023) - Prioritizing of local transaction [#1023](https://github.com/openethereum/openethereum/pull/1023)
- Version 1.2 [#1030](https://github.com/paritytech/parity/pull/1030) - Version 1.2 [#1030](https://github.com/openethereum/openethereum/pull/1030)
- Bumping status page [#1033](https://github.com/paritytech/parity/pull/1033) - Bumping status page [#1033](https://github.com/openethereum/openethereum/pull/1033)

View File

@@ -1,69 +1,69 @@
Note: Parity 1.3 reached End-of-Life on 2017-01-19 (EOL). Note: Parity 1.3 reached End-of-Life on 2017-01-19 (EOL).
## Parity [v1.3.15](https://github.com/paritytech/parity/releases/tag/v1.3.15) (2016-12-10) ## Parity [v1.3.15](https://github.com/openethereum/openethereum/releases/tag/v1.3.15) (2016-12-10)
This patch release fixes an issue with syncing on the Ropsten test network. This patch release fixes an issue with syncing on the Ropsten test network.
- Backporting to stable [#3793](https://github.com/paritytech/parity/pull/3793) - Backporting to stable [#3793](https://github.com/openethereum/openethereum/pull/3793)
## Parity [v1.3.14](https://github.com/paritytech/parity/releases/tag/v1.3.14) (2016-11-25) ## Parity [v1.3.14](https://github.com/openethereum/openethereum/releases/tag/v1.3.14) (2016-11-25)
Parity 1.3.14 fixes a few stability issues and adds support for the Ropsten testnet. Parity 1.3.14 fixes a few stability issues and adds support for the Ropsten testnet.
- Backporting to stable [#3616](https://github.com/paritytech/parity/pull/3616) - Backporting to stable [#3616](https://github.com/openethereum/openethereum/pull/3616)
## Parity [v1.3.13](https://github.com/paritytech/parity/releases/tag/v1.3.13) (2016-11-18) ## Parity [v1.3.13](https://github.com/openethereum/openethereum/releases/tag/v1.3.13) (2016-11-18)
This release fixes an issue with EIP-155 transactions being allowed into the transaction pool. This release fixes an issue with EIP-155 transactions being allowed into the transaction pool.
- [stable] Check tx signatures before adding to the queue. [#3521](https://github.com/paritytech/parity/pull/3521) - [stable] Check tx signatures before adding to the queue. [#3521](https://github.com/openethereum/openethereum/pull/3521)
- Fix Stable Docker Build [#3479](https://github.com/paritytech/parity/pull/3479) - Fix Stable Docker Build [#3479](https://github.com/openethereum/openethereum/pull/3479)
## Parity [v1.3.12](https://github.com/paritytech/parity/releases/tag/v1.3.12) (2016-11-16) ## Parity [v1.3.12](https://github.com/openethereum/openethereum/releases/tag/v1.3.12) (2016-11-16)
This stable release enables EIP-155/160/161/170 hardfork at block 2675000 (1885000 for test network). This stable release enables EIP-155/160/161/170 hardfork at block 2675000 (1885000 for test network).
- [stable] EIP-170 [#3462](https://github.com/paritytech/parity/pull/3462) - [stable] EIP-170 [#3462](https://github.com/openethereum/openethereum/pull/3462)
- #3035 Backport to stable [#3441](https://github.com/paritytech/parity/pull/3441) - #3035 Backport to stable [#3441](https://github.com/openethereum/openethereum/pull/3441)
## Parity [v1.3.11](https://github.com/paritytech/parity/releases/tag/v1.3.11) (2016-11-11) ## Parity [v1.3.11](https://github.com/openethereum/openethereum/releases/tag/v1.3.11) (2016-11-11)
This is a maintenance release for the stable series to delay the EIP-155/160/161 hard fork transition. **Update from 1.3.10 is mandatory**. It also deprecates and disables the old Parity UI. This is a maintenance release for the stable series to delay the EIP-155/160/161 hard fork transition. **Update from 1.3.10 is mandatory**. It also deprecates and disables the old Parity UI.
- [stable] Disable HF and UI [#3372](https://github.com/paritytech/parity/pull/3372) - [stable] Disable HF and UI [#3372](https://github.com/openethereum/openethereum/pull/3372)
- [stable] EIP-155 update with Vitalik's new test vectors (#3166) [#3190](https://github.com/paritytech/parity/pull/3190) - [stable] EIP-155 update with Vitalik's new test vectors (#3166) [#3190](https://github.com/openethereum/openethereum/pull/3190)
- Backport EIP-150 to stable [#2672](https://github.com/paritytech/parity/pull/2672) - Backport EIP-150 to stable [#2672](https://github.com/openethereum/openethereum/pull/2672)
- Create gitlab-ci.yml for stable [#2517](https://github.com/paritytech/parity/pull/2517) - Create gitlab-ci.yml for stable [#2517](https://github.com/openethereum/openethereum/pull/2517)
## Parity [v1.3.10](https://github.com/paritytech/parity/releases/tag/v1.3.10) (2016-11-04) ## Parity [v1.3.10](https://github.com/openethereum/openethereum/releases/tag/v1.3.10) (2016-11-04)
The latest 1.3 series release, now considered stable. The latest 1.3 series release, now considered stable.
This includes several additional optimisations and fixes together with provisional support for the upcoming hard fork for EIP155/160/161. This includes several additional optimisations and fixes together with provisional support for the upcoming hard fork for EIP155/160/161.
- Stable branch reset to 1.3.10 [#3156](https://github.com/paritytech/parity/pull/3156) - Stable branch reset to 1.3.10 [#3156](https://github.com/openethereum/openethereum/pull/3156)
- Backporting to beta [#3149](https://github.com/paritytech/parity/pull/3149) - Backporting to beta [#3149](https://github.com/openethereum/openethereum/pull/3149)
- apply post-consolidation migrations after consolidating (BETA) [#3048](https://github.com/paritytech/parity/pull/3048) - apply post-consolidation migrations after consolidating (BETA) [#3048](https://github.com/openethereum/openethereum/pull/3048)
- [beta] Fix the brainwallet functionality. (#2994) [#3005](https://github.com/paritytech/parity/pull/3005) - [beta] Fix the brainwallet functionality. (#2994) [#3005](https://github.com/openethereum/openethereum/pull/3005)
- Bumping json-ipc-server [#2989](https://github.com/paritytech/parity/pull/2989) - Bumping json-ipc-server [#2989](https://github.com/openethereum/openethereum/pull/2989)
- Backports for 1.3.10 [#2987](https://github.com/paritytech/parity/pull/2987) - Backports for 1.3.10 [#2987](https://github.com/openethereum/openethereum/pull/2987)
## Parity [v1.3.9](https://github.com/paritytech/parity/releases/tag/v1.3.9) (2016-10-21) ## Parity [v1.3.9](https://github.com/openethereum/openethereum/releases/tag/v1.3.9) (2016-10-21)
This release enables EIP-150 hard fork for Ethereum Classic chain and resolves a few stability and performance issues, such as: This release enables EIP-150 hard fork for Ethereum Classic chain and resolves a few stability and performance issues, such as:
- Interrupted syncing on the test network. - Interrupted syncing on the test network.
- Block import delays caused by a large number of incoming transactions. A full re-sync is recommended for performance improvement to take effect. - Block import delays caused by a large number of incoming transactions. A full re-sync is recommended for performance improvement to take effect.
Full changes: Full changes:
- [beta] Resolve morden fork [#2776](https://github.com/paritytech/parity/pull/2776) - [beta] Resolve morden fork [#2776](https://github.com/openethereum/openethereum/pull/2776)
- Fixing botched merge [#2767](https://github.com/paritytech/parity/pull/2767) - Fixing botched merge [#2767](https://github.com/openethereum/openethereum/pull/2767)
- Backports for beta [#2764](https://github.com/paritytech/parity/pull/2764) - Backports for beta [#2764](https://github.com/openethereum/openethereum/pull/2764)
- Introduce EIP150 hardfork block for ETC [#2736](https://github.com/paritytech/parity/pull/2736) - Introduce EIP150 hardfork block for ETC [#2736](https://github.com/openethereum/openethereum/pull/2736)
- [beta] fix issues with no test dir present (#2659) [#2724](https://github.com/paritytech/parity/pull/2724) - [beta] fix issues with no test dir present (#2659) [#2724](https://github.com/openethereum/openethereum/pull/2724)
- [beta] Bumping jsonrpc-http-server [#2715](https://github.com/paritytech/parity/pull/2715) - [beta] Bumping jsonrpc-http-server [#2715](https://github.com/openethereum/openethereum/pull/2715)
- [beta] Fix migration system, better errors [#2661](https://github.com/paritytech/parity/pull/2661) - [beta] Fix migration system, better errors [#2661](https://github.com/openethereum/openethereum/pull/2661)
## Parity [v1.3.8](https://github.com/paritytech/parity/releases/tag/v1.3.8) (2016-10-15) ## Parity [v1.3.8](https://github.com/openethereum/openethereum/releases/tag/v1.3.8) (2016-10-15)
Parity 1.3.8 is our EIP150 hard-fork compliant release. Parity 1.3.8 is our EIP150 hard-fork compliant release.
@@ -83,37 +83,37 @@ The key related to homestead transition has been renamed from `frontierCompatibi
#### Full changes #### Full changes
- [beta] EIP150.1c [#2599](https://github.com/paritytech/parity/pull/2599) - [beta] EIP150.1c [#2599](https://github.com/openethereum/openethereum/pull/2599)
- Remove count limit for local transactions [#2634](https://github.com/paritytech/parity/pull/2634) - Remove count limit for local transactions [#2634](https://github.com/openethereum/openethereum/pull/2634)
- Tweak DB and mining defaults [#2598](https://github.com/paritytech/parity/pull/2598) - Tweak DB and mining defaults [#2598](https://github.com/openethereum/openethereum/pull/2598)
- Revert "Bloom upgrade in beta" [#2635](https://github.com/paritytech/parity/pull/2635) - Revert "Bloom upgrade in beta" [#2635](https://github.com/openethereum/openethereum/pull/2635)
- Bloom upgrade in beta [#2609](https://github.com/paritytech/parity/pull/2609) - Bloom upgrade in beta [#2609](https://github.com/openethereum/openethereum/pull/2609)
- Backports to beta [#2628](https://github.com/paritytech/parity/pull/2628) - Backports to beta [#2628](https://github.com/openethereum/openethereum/pull/2628)
## Parity [v1.3.7](https://github.com/paritytech/parity/releases/tag/v1.3.7) (2016-10-12) ## Parity [v1.3.7](https://github.com/openethereum/openethereum/releases/tag/v1.3.7) (2016-10-12)
This release contains fixes to reduce memory usage under the DoS attack and improve transaction relay. This release contains fixes to reduce memory usage under the DoS attack and improve transaction relay.
- Configurable history size in beta [#2587](https://github.com/paritytech/parity/pull/2587) - Configurable history size in beta [#2587](https://github.com/openethereum/openethereum/pull/2587)
- Backports to beta [#2592](https://github.com/paritytech/parity/pull/2592) - Backports to beta [#2592](https://github.com/openethereum/openethereum/pull/2592)
## Parity [v1.3.6](https://github.com/paritytech/parity/releases/tag/v1.3.6) (2016-10-11) ## Parity [v1.3.6](https://github.com/openethereum/openethereum/releases/tag/v1.3.6) (2016-10-11)
Parity 1.3.6 is another hotfix release to address transaction spam and deal with stability issues. With this release transaction pool gas limit no longer applies to local transactions. Full list of changes is available here: Parity 1.3.6 is another hotfix release to address transaction spam and deal with stability issues. With this release transaction pool gas limit no longer applies to local transactions. Full list of changes is available here:
- Backports to beta v1.3.6 [#2571](https://github.com/paritytech/parity/pull/2571) - Backports to beta v1.3.6 [#2571](https://github.com/openethereum/openethereum/pull/2571)
- Use global state cache when mining [#2529](https://github.com/paritytech/parity/pull/2529) - Use global state cache when mining [#2529](https://github.com/openethereum/openethereum/pull/2529)
- Transaction queue limited by gas [#2528](https://github.com/paritytech/parity/pull/2528) - Transaction queue limited by gas [#2528](https://github.com/openethereum/openethereum/pull/2528)
## Parity [v1.3.5](https://github.com/paritytech/parity/releases/tag/v1.3.5) (2016-10-08) ## Parity [v1.3.5](https://github.com/openethereum/openethereum/releases/tag/v1.3.5) (2016-10-08)
1.3.5 is a hotfix release for the transaction propagation issue. Transaction pool limit is now calculated based on the block gas limit. 1.3.5 is a hotfix release for the transaction propagation issue. Transaction pool limit is now calculated based on the block gas limit.
- Update appveyor rustc [beta] [#2521](https://github.com/paritytech/parity/pull/2521) - Update appveyor rustc [beta] [#2521](https://github.com/openethereum/openethereum/pull/2521)
- Increase size of transaction queue by default [#2519](https://github.com/paritytech/parity/pull/2519) - Increase size of transaction queue by default [#2519](https://github.com/openethereum/openethereum/pull/2519)
## Parity [v1.3.4](https://github.com/paritytech/parity/releases/tag/v1.3.4) (2016-10-07) ## Parity [v1.3.4](https://github.com/openethereum/openethereum/releases/tag/v1.3.4) (2016-10-07)
Parity 1.3.4 release contains more optimizations to internal caching as well as stability improvements. Parity 1.3.4 release contains more optimizations to internal caching as well as stability improvements.
@@ -126,59 +126,59 @@ It also introduces an ability for miners to choose a transaction ordering strate
gas_factor - Prioritize txs using gas price gas_factor - Prioritize txs using gas price
and gas limit ratio [default: gas_factor]. and gas limit ratio [default: gas_factor].
- Backport to beta [#2518](https://github.com/paritytech/parity/pull/2518) - Backport to beta [#2518](https://github.com/openethereum/openethereum/pull/2518)
- [beta] Fixing RPC Filter conversion to EthFilter [#2501](https://github.com/paritytech/parity/pull/2501) - [beta] Fixing RPC Filter conversion to EthFilter [#2501](https://github.com/openethereum/openethereum/pull/2501)
- [beta] Using pending block only if is not old [#2515](https://github.com/paritytech/parity/pull/2515) - [beta] Using pending block only if is not old [#2515](https://github.com/openethereum/openethereum/pull/2515)
- Backports into beta [#2512](https://github.com/paritytech/parity/pull/2512) - Backports into beta [#2512](https://github.com/openethereum/openethereum/pull/2512)
- CLI to specify queue ordering strategy [#2494](https://github.com/paritytech/parity/pull/2494) - CLI to specify queue ordering strategy [#2494](https://github.com/openethereum/openethereum/pull/2494)
- Fix ethstore opening all key files in the directory at once (BETA) [#2472](https://github.com/paritytech/parity/pull/2472) - Fix ethstore opening all key files in the directory at once (BETA) [#2472](https://github.com/openethereum/openethereum/pull/2472)
- Beta backports [#2465](https://github.com/paritytech/parity/pull/2465) - Beta backports [#2465](https://github.com/openethereum/openethereum/pull/2465)
- IPC-library dependency fork & bump for beta [#2455](https://github.com/paritytech/parity/pull/2455) - IPC-library dependency fork & bump for beta [#2455](https://github.com/openethereum/openethereum/pull/2455)
## Parity [v1.3.3](https://github.com/paritytech/parity/releases/tag/v1.3.3) (2016-10-04) ## Parity [v1.3.3](https://github.com/openethereum/openethereum/releases/tag/v1.3.3) (2016-10-04)
1.3.3 is another hotfix release for the DoS attack 1.3.3 is another hotfix release for the DoS attack
- Jumptable cache [#2435](https://github.com/paritytech/parity/pull/2435) - Jumptable cache [#2435](https://github.com/openethereum/openethereum/pull/2435)
- fix broken beta compilation (backport to beta) [#2414](https://github.com/paritytech/parity/pull/2414) - fix broken beta compilation (backport to beta) [#2414](https://github.com/openethereum/openethereum/pull/2414)
- Run inplace upgrades after version update [#2411](https://github.com/paritytech/parity/pull/2411) - Run inplace upgrades after version update [#2411](https://github.com/openethereum/openethereum/pull/2411)
## Parity [v1.3.2](https://github.com/paritytech/parity/releases/tag/v1.3.2) (2016-09-29) ## Parity [v1.3.2](https://github.com/openethereum/openethereum/releases/tag/v1.3.2) (2016-09-29)
This is a hotfix release to address stability and performance issues uncovered during the network DoS attack. Full list of changes is available [here](https://github.com/paritytech/parity/compare/v1.3.1...v1.3.2) This is a hotfix release to address stability and performance issues uncovered during the network DoS attack. Full list of changes is available [here](https://github.com/paritytech/parity/compare/v1.3.1...v1.3.2)
- Beta Backports [#2396](https://github.com/paritytech/parity/pull/2396) - Beta Backports [#2396](https://github.com/openethereum/openethereum/pull/2396)
- Fixing penalization in future [#2493](https://github.com/paritytech/parity/pull/2493) - Fixing penalization in future [#2493](https://github.com/openethereum/openethereum/pull/2493)
- A quick fix for missing tree route blocks [#2400](https://github.com/paritytech/parity/pull/2400) - A quick fix for missing tree route blocks [#2400](https://github.com/openethereum/openethereum/pull/2400)
- Cache the fork block header after snapshot restoration [#2391](https://github.com/paritytech/parity/pull/2391) - Cache the fork block header after snapshot restoration [#2391](https://github.com/openethereum/openethereum/pull/2391)
- correct sync memory usage calculation (BETA) [#2386](https://github.com/paritytech/parity/pull/2386) - correct sync memory usage calculation (BETA) [#2386](https://github.com/openethereum/openethereum/pull/2386)
- Accounts bloom [#2357](https://github.com/paritytech/parity/pull/2357) - Accounts bloom [#2357](https://github.com/openethereum/openethereum/pull/2357)
- Disable colors when generating signer token. [#2379](https://github.com/paritytech/parity/pull/2379) - Disable colors when generating signer token. [#2379](https://github.com/openethereum/openethereum/pull/2379)
- Fixing jit feature compilation [#2376](https://github.com/paritytech/parity/pull/2376) - Fixing jit feature compilation [#2376](https://github.com/openethereum/openethereum/pull/2376)
- Clear state cache on sealed block import [#2377](https://github.com/paritytech/parity/pull/2377) - Clear state cache on sealed block import [#2377](https://github.com/openethereum/openethereum/pull/2377)
- DIV optimization (beta) [#2353](https://github.com/paritytech/parity/pull/2353) - DIV optimization (beta) [#2353](https://github.com/openethereum/openethereum/pull/2353)
- Canonical state cache [#2308](https://github.com/paritytech/parity/pull/2308) - Canonical state cache [#2308](https://github.com/openethereum/openethereum/pull/2308)
- Reorder transaction_by_hash to favour canon search [#2331](https://github.com/paritytech/parity/pull/2331) - Reorder transaction_by_hash to favour canon search [#2331](https://github.com/openethereum/openethereum/pull/2331)
- Lenient bytes deserialization [#2340](https://github.com/paritytech/parity/pull/2340) - Lenient bytes deserialization [#2340](https://github.com/openethereum/openethereum/pull/2340)
- Penalize transactions with gas above gas limit [#2271](https://github.com/paritytech/parity/pull/2271) - Penalize transactions with gas above gas limit [#2271](https://github.com/openethereum/openethereum/pull/2271)
- Peek transaction queue via RPC [#2270](https://github.com/paritytech/parity/pull/2270) - Peek transaction queue via RPC [#2270](https://github.com/openethereum/openethereum/pull/2270)
- Handle RLP to string UTF-8 decoding errors (#2217) [#2226](https://github.com/paritytech/parity/pull/2226) - Handle RLP to string UTF-8 decoding errors (#2217) [#2226](https://github.com/openethereum/openethereum/pull/2226)
- Fixing compilation without default features [beta] [#2207](https://github.com/paritytech/parity/pull/2207) - Fixing compilation without default features [beta] [#2207](https://github.com/openethereum/openethereum/pull/2207)
- Avoid cloning clean stuff [beta backport] [#2173](https://github.com/paritytech/parity/pull/2173) - Avoid cloning clean stuff [beta backport] [#2173](https://github.com/openethereum/openethereum/pull/2173)
- v1.3.2 in beta [#2200](https://github.com/paritytech/parity/pull/2200) - v1.3.2 in beta [#2200](https://github.com/openethereum/openethereum/pull/2200)
## Parity [v1.3.1](https://github.com/paritytech/parity/releases/tag/v1.3.1) (2016-09-11) ## Parity [v1.3.1](https://github.com/openethereum/openethereum/releases/tag/v1.3.1) (2016-09-11)
1.3.1 includes many [bugfixes](https://github.com/paritytech/parity/commit/2a82fa0a47b00bedfec520a2fdd3cc31aa4ccd8c). Critical ones: 1.3.1 includes many [bugfixes](https://github.com/paritytech/parity/commit/2a82fa0a47b00bedfec520a2fdd3cc31aa4ccd8c). Critical ones:
- **Chain reorganisation fix** Transaction receipts / traces were sometimes linked with incorrect block hash. Fixed in https://github.com/paritytech/parity/commit/a9587f8965a32c84973c35ce1c8d51d07044143f - **Chain reorganisation fix** Transaction receipts / traces were sometimes linked with incorrect block hash. Fixed in https://github.com/paritytech/parity/commit/a9587f8965a32c84973c35ce1c8d51d07044143f
- **Trace overflow fix** Overflow which occurred during tracing. Fixed in https://github.com/paritytech/parity/pull/1979 - **Trace overflow fix** Overflow which occurred during tracing. Fixed in https://github.com/openethereum/openethereum/pull/1979
- Backports to beta [#2068](https://github.com/paritytech/parity/pull/2068) - Backports to beta [#2068](https://github.com/openethereum/openethereum/pull/2068)
- Fixing serde overflow error (#1977) [#2030](https://github.com/paritytech/parity/pull/2030) - Fixing serde overflow error (#1977) [#2030](https://github.com/openethereum/openethereum/pull/2030)
- Simplified db pruning detection in beta [#1924](https://github.com/paritytech/parity/pull/1924) - Simplified db pruning detection in beta [#1924](https://github.com/openethereum/openethereum/pull/1924)
- Backports to beta [#1919](https://github.com/paritytech/parity/pull/1919) - Backports to beta [#1919](https://github.com/openethereum/openethereum/pull/1919)
## Parity [v1.3.0: "Acuity"](https://github.com/paritytech/parity/releases/tag/v1.3.0) (2016-08-12) ## Parity [v1.3.0: "Acuity"](https://github.com/openethereum/openethereum/releases/tag/v1.3.0) (2016-08-12)
As well as many bug fixes, 1.3.0 includes a number of important improvements including: As well as many bug fixes, 1.3.0 includes a number of important improvements including:
- **Optimisations** Heavily optimised block/transaction processing core - up to 2x faster than 1.2 series. - **Optimisations** Heavily optimised block/transaction processing core - up to 2x faster than 1.2 series.
@@ -197,306 +197,306 @@ Incremental improvements include:
- Various improvements to the miner including [HTTP push work notification](https://github.com/ethcoreparitytech/parity/wiki/Mining#starting-it). - Various improvements to the miner including [HTTP push work notification](https://github.com/ethcoreparitytech/parity/wiki/Mining#starting-it).
Full changes: Full changes:
- Bumping Parity UI [#1920](https://github.com/paritytech/parity/pull/1920) - Bumping Parity UI [#1920](https://github.com/openethereum/openethereum/pull/1920)
- Adding entrypoints to docker images [#1909](https://github.com/paritytech/parity/pull/1909) - Adding entrypoints to docker images [#1909](https://github.com/openethereum/openethereum/pull/1909)
- Save nodes removed from backing_overlay until commit [#1917](https://github.com/paritytech/parity/pull/1917) - Save nodes removed from backing_overlay until commit [#1917](https://github.com/openethereum/openethereum/pull/1917)
- RPC for importing geth keys [#1916](https://github.com/paritytech/parity/pull/1916) - RPC for importing geth keys [#1916](https://github.com/openethereum/openethereum/pull/1916)
- Peers RPC + UI displaying active/connected/max peers [#1915](https://github.com/paritytech/parity/pull/1915) - Peers RPC + UI displaying active/connected/max peers [#1915](https://github.com/openethereum/openethereum/pull/1915)
- RPC for deriving address from phrase. [#1912](https://github.com/paritytech/parity/pull/1912) - RPC for deriving address from phrase. [#1912](https://github.com/openethereum/openethereum/pull/1912)
- adjust polling & connection timeouts for ipc [#1910](https://github.com/paritytech/parity/pull/1910) - adjust polling & connection timeouts for ipc [#1910](https://github.com/openethereum/openethereum/pull/1910)
- Don't return deleted nodes that are not yet flushed [#1908](https://github.com/paritytech/parity/pull/1908) - Don't return deleted nodes that are not yet flushed [#1908](https://github.com/openethereum/openethereum/pull/1908)
- Wallet rpcs [#1898](https://github.com/paritytech/parity/pull/1898) - Wallet rpcs [#1898](https://github.com/openethereum/openethereum/pull/1898)
- Fix binary serialization bug [#1907](https://github.com/paritytech/parity/pull/1907) - Fix binary serialization bug [#1907](https://github.com/openethereum/openethereum/pull/1907)
- fixed #1889, .DS_Store is no longer treated as key file [#1892](https://github.com/paritytech/parity/pull/1892) - fixed #1889, .DS_Store is no longer treated as key file [#1892](https://github.com/openethereum/openethereum/pull/1892)
- Purging .derefs, fixing clippy warnings. [#1890](https://github.com/paritytech/parity/pull/1890) - Purging .derefs, fixing clippy warnings. [#1890](https://github.com/openethereum/openethereum/pull/1890)
- RocksDB version bump [#1904](https://github.com/paritytech/parity/pull/1904) - RocksDB version bump [#1904](https://github.com/openethereum/openethereum/pull/1904)
- Fix ipc compilation and add ipc feature to test targets [#1902](https://github.com/paritytech/parity/pull/1902) - Fix ipc compilation and add ipc feature to test targets [#1902](https://github.com/openethereum/openethereum/pull/1902)
- Autocreating geth dir if none and geth mode on [#1896](https://github.com/paritytech/parity/pull/1896) - Autocreating geth dir if none and geth mode on [#1896](https://github.com/openethereum/openethereum/pull/1896)
- v1.4.0 in master [#1886](https://github.com/paritytech/parity/pull/1886) - v1.4.0 in master [#1886](https://github.com/openethereum/openethereum/pull/1886)
- Adding more details to miner log [#1891](https://github.com/paritytech/parity/pull/1891) - Adding more details to miner log [#1891](https://github.com/openethereum/openethereum/pull/1891)
- moved hash.rs to bigint library [#1827](https://github.com/paritytech/parity/pull/1827) - moved hash.rs to bigint library [#1827](https://github.com/openethereum/openethereum/pull/1827)
- fixed cache_manager lock order [#1877](https://github.com/paritytech/parity/pull/1877) - fixed cache_manager lock order [#1877](https://github.com/openethereum/openethereum/pull/1877)
- Fixing miner deadlock [#1885](https://github.com/paritytech/parity/pull/1885) - Fixing miner deadlock [#1885](https://github.com/openethereum/openethereum/pull/1885)
- Updating WS + Increasing token validity [#1882](https://github.com/paritytech/parity/pull/1882) - Updating WS + Increasing token validity [#1882](https://github.com/openethereum/openethereum/pull/1882)
- take snapshot at specified block and slightly better informants [#1873](https://github.com/paritytech/parity/pull/1873) - take snapshot at specified block and slightly better informants [#1873](https://github.com/openethereum/openethereum/pull/1873)
- RPC errors & logs [#1845](https://github.com/paritytech/parity/pull/1845) - RPC errors & logs [#1845](https://github.com/openethereum/openethereum/pull/1845)
- Reduce max open files [#1876](https://github.com/paritytech/parity/pull/1876) - Reduce max open files [#1876](https://github.com/openethereum/openethereum/pull/1876)
- Send new block hashes to all peers [#1875](https://github.com/paritytech/parity/pull/1875) - Send new block hashes to all peers [#1875](https://github.com/openethereum/openethereum/pull/1875)
- Use UntrustedRlp for block verification [#1872](https://github.com/paritytech/parity/pull/1872) - Use UntrustedRlp for block verification [#1872](https://github.com/openethereum/openethereum/pull/1872)
- Update cache usage on commiting block info [#1871](https://github.com/paritytech/parity/pull/1871) - Update cache usage on commiting block info [#1871](https://github.com/openethereum/openethereum/pull/1871)
- Validating conversion U256->usize when doing gas calculation (for 32bits) [#1870](https://github.com/paritytech/parity/pull/1870) - Validating conversion U256->usize when doing gas calculation (for 32bits) [#1870](https://github.com/openethereum/openethereum/pull/1870)
- Sync to peers with confirmed fork block only [#1863](https://github.com/paritytech/parity/pull/1863) - Sync to peers with confirmed fork block only [#1863](https://github.com/openethereum/openethereum/pull/1863)
- miner and client take spec reference [#1853](https://github.com/paritytech/parity/pull/1853) - miner and client take spec reference [#1853](https://github.com/openethereum/openethereum/pull/1853)
- Unlock account with timeout for geth compatibility [#1854](https://github.com/paritytech/parity/pull/1854) - Unlock account with timeout for geth compatibility [#1854](https://github.com/openethereum/openethereum/pull/1854)
- Fixed reported max height and transaction propagation [#1852](https://github.com/paritytech/parity/pull/1852) - Fixed reported max height and transaction propagation [#1852](https://github.com/openethereum/openethereum/pull/1852)
- Snapshot creation and restoration [#1679](https://github.com/paritytech/parity/pull/1679) - Snapshot creation and restoration [#1679](https://github.com/openethereum/openethereum/pull/1679)
- fix deprecated typo [#1850](https://github.com/paritytech/parity/pull/1850) - fix deprecated typo [#1850](https://github.com/openethereum/openethereum/pull/1850)
- Split IO and network crates [#1828](https://github.com/paritytech/parity/pull/1828) - Split IO and network crates [#1828](https://github.com/openethereum/openethereum/pull/1828)
- updated classic JSON spec with classic bootnodes, fixes #1842 [#1847](https://github.com/paritytech/parity/pull/1847) - updated classic JSON spec with classic bootnodes, fixes #1842 [#1847](https://github.com/openethereum/openethereum/pull/1847)
- protect unsafety in plainhasher; get more unique hashes [#1841](https://github.com/paritytech/parity/pull/1841) - protect unsafety in plainhasher; get more unique hashes [#1841](https://github.com/openethereum/openethereum/pull/1841)
- use mutex in dbtransaction [#1843](https://github.com/paritytech/parity/pull/1843) - use mutex in dbtransaction [#1843](https://github.com/openethereum/openethereum/pull/1843)
- Fix state not using "account_starting_nonce" [#1830](https://github.com/paritytech/parity/pull/1830) - Fix state not using "account_starting_nonce" [#1830](https://github.com/openethereum/openethereum/pull/1830)
- Supporting blockid in eth_call and trace_call/trace_raw [#1837](https://github.com/paritytech/parity/pull/1837) - Supporting blockid in eth_call and trace_call/trace_raw [#1837](https://github.com/openethereum/openethereum/pull/1837)
- eth_checkTransaction renamed to eth_checkRequest [#1817](https://github.com/paritytech/parity/pull/1817) - eth_checkTransaction renamed to eth_checkRequest [#1817](https://github.com/openethereum/openethereum/pull/1817)
- Bump json-ipc-server again [#1839](https://github.com/paritytech/parity/pull/1839) - Bump json-ipc-server again [#1839](https://github.com/openethereum/openethereum/pull/1839)
- Fixing another deadlock in trace db [#1833](https://github.com/paritytech/parity/pull/1833) - Fixing another deadlock in trace db [#1833](https://github.com/openethereum/openethereum/pull/1833)
- Fix up the VM trace. [#1829](https://github.com/paritytech/parity/pull/1829) - Fix up the VM trace. [#1829](https://github.com/openethereum/openethereum/pull/1829)
- fixed parsing export params, fixes #1826 [#1834](https://github.com/paritytech/parity/pull/1834) - fixed parsing export params, fixes #1826 [#1834](https://github.com/openethereum/openethereum/pull/1834)
- More performance optimizations [#1814](https://github.com/paritytech/parity/pull/1814) - More performance optimizations [#1814](https://github.com/openethereum/openethereum/pull/1814)
- Bumping clippy & fixing warnings [#1823](https://github.com/paritytech/parity/pull/1823) - Bumping clippy & fixing warnings [#1823](https://github.com/openethereum/openethereum/pull/1823)
- removed unused code from util and unnecessary dependency of FixedHash [#1824](https://github.com/paritytech/parity/pull/1824) - removed unused code from util and unnecessary dependency of FixedHash [#1824](https://github.com/openethereum/openethereum/pull/1824)
- Remove (almost all) panickers from trie module [#1776](https://github.com/paritytech/parity/pull/1776) - Remove (almost all) panickers from trie module [#1776](https://github.com/openethereum/openethereum/pull/1776)
- Fixing account naming [#1810](https://github.com/paritytech/parity/pull/1810) - Fixing account naming [#1810](https://github.com/openethereum/openethereum/pull/1810)
- JournalDB inject [#1806](https://github.com/paritytech/parity/pull/1806) - JournalDB inject [#1806](https://github.com/openethereum/openethereum/pull/1806)
- No block number in get work while in geth-compat mode. [#1821](https://github.com/paritytech/parity/pull/1821) - No block number in get work while in geth-compat mode. [#1821](https://github.com/openethereum/openethereum/pull/1821)
- Import wallet fix [#1820](https://github.com/paritytech/parity/pull/1820) - Import wallet fix [#1820](https://github.com/openethereum/openethereum/pull/1820)
- Supporting eth_sign in Signer [#1787](https://github.com/paritytech/parity/pull/1787) - Supporting eth_sign in Signer [#1787](https://github.com/openethereum/openethereum/pull/1787)
- Fixing cache update after chain reorg [#1816](https://github.com/paritytech/parity/pull/1816) - Fixing cache update after chain reorg [#1816](https://github.com/openethereum/openethereum/pull/1816)
- Development mode for Signer UI [#1788](https://github.com/paritytech/parity/pull/1788) - Development mode for Signer UI [#1788](https://github.com/openethereum/openethereum/pull/1788)
- Miner tweaks [#1797](https://github.com/paritytech/parity/pull/1797) - Miner tweaks [#1797](https://github.com/openethereum/openethereum/pull/1797)
- Util & ipc clenup [#1807](https://github.com/paritytech/parity/pull/1807) - Util & ipc clenup [#1807](https://github.com/openethereum/openethereum/pull/1807)
- Fixing unlock parsing [#1802](https://github.com/paritytech/parity/pull/1802) - Fixing unlock parsing [#1802](https://github.com/openethereum/openethereum/pull/1802)
- fixed importing presale wallet with encseed longer than 96 bytes [#1801](https://github.com/paritytech/parity/pull/1801) - fixed importing presale wallet with encseed longer than 96 bytes [#1801](https://github.com/openethereum/openethereum/pull/1801)
- DRYing build scripts [#1795](https://github.com/paritytech/parity/pull/1795) - DRYing build scripts [#1795](https://github.com/openethereum/openethereum/pull/1795)
- Allow code from spec json [#1790](https://github.com/paritytech/parity/pull/1790) - Allow code from spec json [#1790](https://github.com/openethereum/openethereum/pull/1790)
- nano-tests (ipc transport) to the CI [#1793](https://github.com/paritytech/parity/pull/1793) - nano-tests (ipc transport) to the CI [#1793](https://github.com/openethereum/openethereum/pull/1793)
- Commit best block after closing transaction [#1791](https://github.com/paritytech/parity/pull/1791) - Commit best block after closing transaction [#1791](https://github.com/openethereum/openethereum/pull/1791)
- Place thread name in the log output [#1792](https://github.com/paritytech/parity/pull/1792) - Place thread name in the log output [#1792](https://github.com/openethereum/openethereum/pull/1792)
- Fix ipc tests and bring to CI [#1789](https://github.com/paritytech/parity/pull/1789) - Fix ipc tests and bring to CI [#1789](https://github.com/openethereum/openethereum/pull/1789)
- dynamic keys pickup [#1779](https://github.com/paritytech/parity/pull/1779) - dynamic keys pickup [#1779](https://github.com/openethereum/openethereum/pull/1779)
- ipc version bump [#1783](https://github.com/paritytech/parity/pull/1783) - ipc version bump [#1783](https://github.com/openethereum/openethereum/pull/1783)
- Prevent deadlock on trace GC [#1780](https://github.com/paritytech/parity/pull/1780) - Prevent deadlock on trace GC [#1780](https://github.com/openethereum/openethereum/pull/1780)
- fixed trace_transaction crash when block contained suicide [#1781](https://github.com/paritytech/parity/pull/1781) - fixed trace_transaction crash when block contained suicide [#1781](https://github.com/openethereum/openethereum/pull/1781)
- Fix block body migration [#1777](https://github.com/paritytech/parity/pull/1777) - Fix block body migration [#1777](https://github.com/openethereum/openethereum/pull/1777)
- cache manager and clearing tracing cache [#1769](https://github.com/paritytech/parity/pull/1769) - cache manager and clearing tracing cache [#1769](https://github.com/openethereum/openethereum/pull/1769)
- Return storage as H256 from RPC. [#1774](https://github.com/paritytech/parity/pull/1774) - Return storage as H256 from RPC. [#1774](https://github.com/openethereum/openethereum/pull/1774)
- Instant sealing engine [#1767](https://github.com/paritytech/parity/pull/1767) - Instant sealing engine [#1767](https://github.com/openethereum/openethereum/pull/1767)
- fix state unsafety with a mostly-guaranteed handle [#1755](https://github.com/paritytech/parity/pull/1755) - fix state unsafety with a mostly-guaranteed handle [#1755](https://github.com/openethereum/openethereum/pull/1755)
- Gas for mem optimization [#1768](https://github.com/paritytech/parity/pull/1768) - Gas for mem optimization [#1768](https://github.com/openethereum/openethereum/pull/1768)
- Min and Max peers setting [#1771](https://github.com/paritytech/parity/pull/1771) - Min and Max peers setting [#1771](https://github.com/openethereum/openethereum/pull/1771)
- Disable WAL [#1765](https://github.com/paritytech/parity/pull/1765) - Disable WAL [#1765](https://github.com/openethereum/openethereum/pull/1765)
- Add new line when printing start strings [#1766](https://github.com/paritytech/parity/pull/1766) - Add new line when printing start strings [#1766](https://github.com/openethereum/openethereum/pull/1766)
- Log tweak [#1764](https://github.com/paritytech/parity/pull/1764) - Log tweak [#1764](https://github.com/openethereum/openethereum/pull/1764)
- Remove update_sealing call on importing own block [#1762](https://github.com/paritytech/parity/pull/1762) - Remove update_sealing call on importing own block [#1762](https://github.com/openethereum/openethereum/pull/1762)
- Single DB [#1741](https://github.com/paritytech/parity/pull/1741) - Single DB [#1741](https://github.com/openethereum/openethereum/pull/1741)
- Tweak format of log so it's not so verbose. [#1758](https://github.com/paritytech/parity/pull/1758) - Tweak format of log so it's not so verbose. [#1758](https://github.com/openethereum/openethereum/pull/1758)
- Combine mining queue and enabled into single locked datum [#1749](https://github.com/paritytech/parity/pull/1749) - Combine mining queue and enabled into single locked datum [#1749](https://github.com/openethereum/openethereum/pull/1749)
- Collect consensus/null engines into a single module [#1754](https://github.com/paritytech/parity/pull/1754) - Collect consensus/null engines into a single module [#1754](https://github.com/openethereum/openethereum/pull/1754)
- Fix failing deserialization test [#1756](https://github.com/paritytech/parity/pull/1756) - Fix failing deserialization test [#1756](https://github.com/openethereum/openethereum/pull/1756)
- Stackoverflow fix [#1742](https://github.com/paritytech/parity/pull/1742) - Stackoverflow fix [#1742](https://github.com/openethereum/openethereum/pull/1742)
- compaction profile used during migration, fixes #1750 [#1751](https://github.com/paritytech/parity/pull/1751) - compaction profile used during migration, fixes #1750 [#1751](https://github.com/openethereum/openethereum/pull/1751)
- Splitting documentation into separate build job [#1752](https://github.com/paritytech/parity/pull/1752) - Splitting documentation into separate build job [#1752](https://github.com/openethereum/openethereum/pull/1752)
- handle keys deserialization errors, fixes #1592 [#1701](https://github.com/paritytech/parity/pull/1701) - handle keys deserialization errors, fixes #1592 [#1701](https://github.com/openethereum/openethereum/pull/1701)
- add gitlab-ci yaml [#1753](https://github.com/paritytech/parity/pull/1753) - add gitlab-ci yaml [#1753](https://github.com/openethereum/openethereum/pull/1753)
- Better handling of multiple migrations [#1747](https://github.com/paritytech/parity/pull/1747) - Better handling of multiple migrations [#1747](https://github.com/openethereum/openethereum/pull/1747)
- Disconnect peers on a fork [#1738](https://github.com/paritytech/parity/pull/1738) - Disconnect peers on a fork [#1738](https://github.com/openethereum/openethereum/pull/1738)
- Add RPC & client call to replay a transaction. [#1734](https://github.com/paritytech/parity/pull/1734) - Add RPC & client call to replay a transaction. [#1734](https://github.com/openethereum/openethereum/pull/1734)
- another version bump for jsonrpc-ipc [#1744](https://github.com/paritytech/parity/pull/1744) - another version bump for jsonrpc-ipc [#1744](https://github.com/openethereum/openethereum/pull/1744)
- Trace other types of calls [#1727](https://github.com/paritytech/parity/pull/1727) - Trace other types of calls [#1727](https://github.com/openethereum/openethereum/pull/1727)
- Fixing compilation on latest nightly [#1736](https://github.com/paritytech/parity/pull/1736) - Fixing compilation on latest nightly [#1736](https://github.com/openethereum/openethereum/pull/1736)
- Blocks and snapshot compression [#1687](https://github.com/paritytech/parity/pull/1687) - Blocks and snapshot compression [#1687](https://github.com/openethereum/openethereum/pull/1687)
- bump json-ipc-server version [#1739](https://github.com/paritytech/parity/pull/1739) - bump json-ipc-server version [#1739](https://github.com/openethereum/openethereum/pull/1739)
- Use std::sync::Condvar [#1732](https://github.com/paritytech/parity/pull/1732) - Use std::sync::Condvar [#1732](https://github.com/openethereum/openethereum/pull/1732)
- Bump json-ipc-server version [#1733](https://github.com/paritytech/parity/pull/1733) - Bump json-ipc-server version [#1733](https://github.com/openethereum/openethereum/pull/1733)
- bump json-ipc-server version [#1731](https://github.com/paritytech/parity/pull/1731) - bump json-ipc-server version [#1731](https://github.com/openethereum/openethereum/pull/1731)
- Fixing some clippy warnings [#1728](https://github.com/paritytech/parity/pull/1728) - Fixing some clippy warnings [#1728](https://github.com/openethereum/openethereum/pull/1728)
- Bumping Parity UI [#1682](https://github.com/paritytech/parity/pull/1682) - Bumping Parity UI [#1682](https://github.com/openethereum/openethereum/pull/1682)
- Various improvements to tracing & diagnostics. [#1707](https://github.com/paritytech/parity/pull/1707) - Various improvements to tracing & diagnostics. [#1707](https://github.com/openethereum/openethereum/pull/1707)
- Fixed reading chunked EIP8 handshake [#1712](https://github.com/paritytech/parity/pull/1712) - Fixed reading chunked EIP8 handshake [#1712](https://github.com/openethereum/openethereum/pull/1712)
- Fix for importing blocks from a pipe file [#1724](https://github.com/paritytech/parity/pull/1724) - Fix for importing blocks from a pipe file [#1724](https://github.com/openethereum/openethereum/pull/1724)
- Proper errors for binary serializer [#1714](https://github.com/paritytech/parity/pull/1714) - Proper errors for binary serializer [#1714](https://github.com/openethereum/openethereum/pull/1714)
- Use a transaction for writing blocks [#1718](https://github.com/paritytech/parity/pull/1718) - Use a transaction for writing blocks [#1718](https://github.com/openethereum/openethereum/pull/1718)
- Exclude generated code from coverage [#1720](https://github.com/paritytech/parity/pull/1720) - Exclude generated code from coverage [#1720](https://github.com/openethereum/openethereum/pull/1720)
- Use single binary for ipc modules [#1710](https://github.com/paritytech/parity/pull/1710) - Use single binary for ipc modules [#1710](https://github.com/openethereum/openethereum/pull/1710)
- Log a chain-reorg. [#1715](https://github.com/paritytech/parity/pull/1715) - Log a chain-reorg. [#1715](https://github.com/openethereum/openethereum/pull/1715)
- Restore new block informant message [#1716](https://github.com/paritytech/parity/pull/1716) - Restore new block informant message [#1716](https://github.com/openethereum/openethereum/pull/1716)
- Parallel block body download [#1659](https://github.com/paritytech/parity/pull/1659) - Parallel block body download [#1659](https://github.com/openethereum/openethereum/pull/1659)
- Rotate blockchain cache [#1709](https://github.com/paritytech/parity/pull/1709) - Rotate blockchain cache [#1709](https://github.com/openethereum/openethereum/pull/1709)
- Fix broken internal names. [#1711](https://github.com/paritytech/parity/pull/1711) - Fix broken internal names. [#1711](https://github.com/openethereum/openethereum/pull/1711)
- cli overhaul [#1600](https://github.com/paritytech/parity/pull/1600) - cli overhaul [#1600](https://github.com/openethereum/openethereum/pull/1600)
- Key files include timestamp in name. [#1700](https://github.com/paritytech/parity/pull/1700) - Key files include timestamp in name. [#1700](https://github.com/openethereum/openethereum/pull/1700)
- Fixing warnings [#1705](https://github.com/paritytech/parity/pull/1705) - Fixing warnings [#1705](https://github.com/openethereum/openethereum/pull/1705)
- Ethereum classic [#1706](https://github.com/paritytech/parity/pull/1706) - Ethereum classic [#1706](https://github.com/openethereum/openethereum/pull/1706)
- Docker Arguments [#1703](https://github.com/paritytech/parity/pull/1703) - Docker Arguments [#1703](https://github.com/openethereum/openethereum/pull/1703)
- Informant tidyup. [#1699](https://github.com/paritytech/parity/pull/1699) - Informant tidyup. [#1699](https://github.com/openethereum/openethereum/pull/1699)
- Name and meta in accounts [#1695](https://github.com/paritytech/parity/pull/1695) - Name and meta in accounts [#1695](https://github.com/openethereum/openethereum/pull/1695)
- Stackoverflow #1686 [#1698](https://github.com/paritytech/parity/pull/1698) - Stackoverflow #1686 [#1698](https://github.com/openethereum/openethereum/pull/1698)
- filtering transactions toAddress includes contract creation [#1697](https://github.com/paritytech/parity/pull/1697) - filtering transactions toAddress includes contract creation [#1697](https://github.com/openethereum/openethereum/pull/1697)
- Prevent syncing to ancient blocks [#1693](https://github.com/paritytech/parity/pull/1693) - Prevent syncing to ancient blocks [#1693](https://github.com/openethereum/openethereum/pull/1693)
- Enable WAL and disable DB repair [#1696](https://github.com/paritytech/parity/pull/1696) - Enable WAL and disable DB repair [#1696](https://github.com/openethereum/openethereum/pull/1696)
- Returning error when transaction is rejected (for consistency) [#1667](https://github.com/paritytech/parity/pull/1667) - Returning error when transaction is rejected (for consistency) [#1667](https://github.com/openethereum/openethereum/pull/1667)
- Disabling signer when in geth-compatibility mode [#1676](https://github.com/paritytech/parity/pull/1676) - Disabling signer when in geth-compatibility mode [#1676](https://github.com/openethereum/openethereum/pull/1676)
- Suicides tracing [#1688](https://github.com/paritytech/parity/pull/1688) - Suicides tracing [#1688](https://github.com/openethereum/openethereum/pull/1688)
- small cleanup of substate.rs [#1685](https://github.com/paritytech/parity/pull/1685) - small cleanup of substate.rs [#1685](https://github.com/openethereum/openethereum/pull/1685)
- resolve #411: remove install scripts [#1684](https://github.com/paritytech/parity/pull/1684) - resolve #411: remove install scripts [#1684](https://github.com/openethereum/openethereum/pull/1684)
- IPC (feature-gated) [#1654](https://github.com/paritytech/parity/pull/1654) - IPC (feature-gated) [#1654](https://github.com/openethereum/openethereum/pull/1654)
- Bumping JSONRPC-http-server [#1678](https://github.com/paritytech/parity/pull/1678) - Bumping JSONRPC-http-server [#1678](https://github.com/openethereum/openethereum/pull/1678)
- Fixing hash deserialisation [#1674](https://github.com/paritytech/parity/pull/1674) - Fixing hash deserialisation [#1674](https://github.com/openethereum/openethereum/pull/1674)
- Ping discovery nodes gradually [#1671](https://github.com/paritytech/parity/pull/1671) - Ping discovery nodes gradually [#1671](https://github.com/openethereum/openethereum/pull/1671)
- Fixing the deadlock on incoming connection [#1672](https://github.com/paritytech/parity/pull/1672) - Fixing the deadlock on incoming connection [#1672](https://github.com/openethereum/openethereum/pull/1672)
- Fixing errors returned by sendTransaction* method family [#1665](https://github.com/paritytech/parity/pull/1665) - Fixing errors returned by sendTransaction* method family [#1665](https://github.com/openethereum/openethereum/pull/1665)
- Moved syncing log out of the client [#1670](https://github.com/paritytech/parity/pull/1670) - Moved syncing log out of the client [#1670](https://github.com/openethereum/openethereum/pull/1670)
- Host validation (again) [#1666](https://github.com/paritytech/parity/pull/1666) - Host validation (again) [#1666](https://github.com/openethereum/openethereum/pull/1666)
- Update install-deps.sh [ci skip] [#1664](https://github.com/paritytech/parity/pull/1664) - Update install-deps.sh [ci skip] [#1664](https://github.com/openethereum/openethereum/pull/1664)
- fix typos [#1644](https://github.com/paritytech/parity/pull/1644) - fix typos [#1644](https://github.com/openethereum/openethereum/pull/1644)
- Size for blocks [#1668](https://github.com/paritytech/parity/pull/1668) - Size for blocks [#1668](https://github.com/openethereum/openethereum/pull/1668)
- Revert "Validating Host headers in RPC requests" [#1663](https://github.com/paritytech/parity/pull/1663) - Revert "Validating Host headers in RPC requests" [#1663](https://github.com/openethereum/openethereum/pull/1663)
- Validating Host headers in RPC requests [#1658](https://github.com/paritytech/parity/pull/1658) - Validating Host headers in RPC requests [#1658](https://github.com/openethereum/openethereum/pull/1658)
- fixed failing master [#1662](https://github.com/paritytech/parity/pull/1662) - fixed failing master [#1662](https://github.com/openethereum/openethereum/pull/1662)
- Fixing clippy warnings [#1660](https://github.com/paritytech/parity/pull/1660) - Fixing clippy warnings [#1660](https://github.com/openethereum/openethereum/pull/1660)
- Don't ping all nodes on start [#1656](https://github.com/paritytech/parity/pull/1656) - Don't ping all nodes on start [#1656](https://github.com/openethereum/openethereum/pull/1656)
- More performance optimizations [#1649](https://github.com/paritytech/parity/pull/1649) - More performance optimizations [#1649](https://github.com/openethereum/openethereum/pull/1649)
- Removing unused client code [#1645](https://github.com/paritytech/parity/pull/1645) - Removing unused client code [#1645](https://github.com/openethereum/openethereum/pull/1645)
- Asynchronous transactions (polling based for now). [#1652](https://github.com/paritytech/parity/pull/1652) - Asynchronous transactions (polling based for now). [#1652](https://github.com/openethereum/openethereum/pull/1652)
- Sync stand-alone binary and feature-gated dependencies refactoring [#1637](https://github.com/paritytech/parity/pull/1637) - Sync stand-alone binary and feature-gated dependencies refactoring [#1637](https://github.com/openethereum/openethereum/pull/1637)
- Re-enabling Parity UI [#1627](https://github.com/paritytech/parity/pull/1627) - Re-enabling Parity UI [#1627](https://github.com/openethereum/openethereum/pull/1627)
- Blockchain repair on missing state root [#1646](https://github.com/paritytech/parity/pull/1646) - Blockchain repair on missing state root [#1646](https://github.com/openethereum/openethereum/pull/1646)
- Multi-mode logging. [#1643](https://github.com/paritytech/parity/pull/1643) - Multi-mode logging. [#1643](https://github.com/openethereum/openethereum/pull/1643)
- Pro paths [#1650](https://github.com/paritytech/parity/pull/1650) - Pro paths [#1650](https://github.com/openethereum/openethereum/pull/1650)
- Performance optimizations [#1642](https://github.com/paritytech/parity/pull/1642) - Performance optimizations [#1642](https://github.com/openethereum/openethereum/pull/1642)
- Removed DAO soft fork traces [#1639](https://github.com/paritytech/parity/pull/1639) - Removed DAO soft fork traces [#1639](https://github.com/openethereum/openethereum/pull/1639)
- Compiler version update for windows [#1638](https://github.com/paritytech/parity/pull/1638) - Compiler version update for windows [#1638](https://github.com/openethereum/openethereum/pull/1638)
- Delete values immediately from DB overlay [#1631](https://github.com/paritytech/parity/pull/1631) - Delete values immediately from DB overlay [#1631](https://github.com/openethereum/openethereum/pull/1631)
- DAO hard-fork [#1483](https://github.com/paritytech/parity/pull/1483) - DAO hard-fork [#1483](https://github.com/openethereum/openethereum/pull/1483)
- fix network_start regression [#1629](https://github.com/paritytech/parity/pull/1629) - fix network_start regression [#1629](https://github.com/openethereum/openethereum/pull/1629)
- Die if the DB is newer than the one supported. [#1630](https://github.com/paritytech/parity/pull/1630) - Die if the DB is newer than the one supported. [#1630](https://github.com/openethereum/openethereum/pull/1630)
- Cleanup of colour code. Use is_a_tty. [#1621](https://github.com/paritytech/parity/pull/1621) - Cleanup of colour code. Use is_a_tty. [#1621](https://github.com/openethereum/openethereum/pull/1621)
- don't batch best block for branches [#1623](https://github.com/paritytech/parity/pull/1623) - don't batch best block for branches [#1623](https://github.com/openethereum/openethereum/pull/1623)
- In-memory trie operations [#1408](https://github.com/paritytech/parity/pull/1408) - In-memory trie operations [#1408](https://github.com/openethereum/openethereum/pull/1408)
- Fix "pending" parameter on RPC block requests [#1602](https://github.com/paritytech/parity/pull/1602) - Fix "pending" parameter on RPC block requests [#1602](https://github.com/openethereum/openethereum/pull/1602)
- Allow RPC to use solc to compile solidity [#1607](https://github.com/paritytech/parity/pull/1607) - Allow RPC to use solc to compile solidity [#1607](https://github.com/openethereum/openethereum/pull/1607)
- IPC RPC deriving for traits [#1599](https://github.com/paritytech/parity/pull/1599) - IPC RPC deriving for traits [#1599](https://github.com/openethereum/openethereum/pull/1599)
- Utilize cached kcov if exists [#1619](https://github.com/paritytech/parity/pull/1619) - Utilize cached kcov if exists [#1619](https://github.com/openethereum/openethereum/pull/1619)
- Fixing no-ui feature [#1618](https://github.com/paritytech/parity/pull/1618) - Fixing no-ui feature [#1618](https://github.com/openethereum/openethereum/pull/1618)
- Couple of rocksdb optimizations [#1614](https://github.com/paritytech/parity/pull/1614) - Couple of rocksdb optimizations [#1614](https://github.com/openethereum/openethereum/pull/1614)
- Miner tests [#1597](https://github.com/paritytech/parity/pull/1597) - Miner tests [#1597](https://github.com/openethereum/openethereum/pull/1597)
- Sync IPC interface [#1584](https://github.com/paritytech/parity/pull/1584) - Sync IPC interface [#1584](https://github.com/openethereum/openethereum/pull/1584)
- Make sure reserved peers are in the node table [#1616](https://github.com/paritytech/parity/pull/1616) - Make sure reserved peers are in the node table [#1616](https://github.com/openethereum/openethereum/pull/1616)
- Fix bloomchain on blockchain repair [#1610](https://github.com/paritytech/parity/pull/1610) - Fix bloomchain on blockchain repair [#1610](https://github.com/openethereum/openethereum/pull/1610)
- fixed broken tracing [#1615](https://github.com/paritytech/parity/pull/1615) - fixed broken tracing [#1615](https://github.com/openethereum/openethereum/pull/1615)
- fix benchmark compilation [#1612](https://github.com/paritytech/parity/pull/1612) - fix benchmark compilation [#1612](https://github.com/openethereum/openethereum/pull/1612)
- Updating jsonrpc-http-server [#1611](https://github.com/paritytech/parity/pull/1611) - Updating jsonrpc-http-server [#1611](https://github.com/openethereum/openethereum/pull/1611)
- replace synchronization primitives with those from parking_lot [#1593](https://github.com/paritytech/parity/pull/1593) - replace synchronization primitives with those from parking_lot [#1593](https://github.com/openethereum/openethereum/pull/1593)
- ui compilation feature [#1604](https://github.com/paritytech/parity/pull/1604) - ui compilation feature [#1604](https://github.com/openethereum/openethereum/pull/1604)
- is_zero() and pow() optimisations for uint [#1608](https://github.com/paritytech/parity/pull/1608) - is_zero() and pow() optimisations for uint [#1608](https://github.com/openethereum/openethereum/pull/1608)
- Optimizing & Cleaning the build [#1591](https://github.com/paritytech/parity/pull/1591) - Optimizing & Cleaning the build [#1591](https://github.com/openethereum/openethereum/pull/1591)
- Fix logging [#1590](https://github.com/paritytech/parity/pull/1590) - Fix logging [#1590](https://github.com/openethereum/openethereum/pull/1590)
- remove unnecessary mutex in logging [#1601](https://github.com/paritytech/parity/pull/1601) - remove unnecessary mutex in logging [#1601](https://github.com/openethereum/openethereum/pull/1601)
- Using streamlined parity-ui repository [#1566](https://github.com/paritytech/parity/pull/1566) - Using streamlined parity-ui repository [#1566](https://github.com/openethereum/openethereum/pull/1566)
- Optimizing InstructionInfo access. [#1595](https://github.com/paritytech/parity/pull/1595) - Optimizing InstructionInfo access. [#1595](https://github.com/openethereum/openethereum/pull/1595)
- V7 Migration progress indicator [#1594](https://github.com/paritytech/parity/pull/1594) - V7 Migration progress indicator [#1594](https://github.com/openethereum/openethereum/pull/1594)
- bring snapshotting work into master [#1577](https://github.com/paritytech/parity/pull/1577) - bring snapshotting work into master [#1577](https://github.com/openethereum/openethereum/pull/1577)
- Bump clippy [#1587](https://github.com/paritytech/parity/pull/1587) - Bump clippy [#1587](https://github.com/openethereum/openethereum/pull/1587)
- refactoring of handshake messages serialization in ipc [#1586](https://github.com/paritytech/parity/pull/1586) - refactoring of handshake messages serialization in ipc [#1586](https://github.com/openethereum/openethereum/pull/1586)
- expunge &Vec<T> pattern [#1579](https://github.com/paritytech/parity/pull/1579) - expunge &Vec<T> pattern [#1579](https://github.com/openethereum/openethereum/pull/1579)
- EVM gas for memory tiny optimization [#1578](https://github.com/paritytech/parity/pull/1578) - EVM gas for memory tiny optimization [#1578](https://github.com/openethereum/openethereum/pull/1578)
- cleaned up parity/signer [#1551](https://github.com/paritytech/parity/pull/1551) - cleaned up parity/signer [#1551](https://github.com/openethereum/openethereum/pull/1551)
- Major sync <-> client interactions refactoring [#1572](https://github.com/paritytech/parity/pull/1572) - Major sync <-> client interactions refactoring [#1572](https://github.com/openethereum/openethereum/pull/1572)
- failing test with overlayrecent pruning [#1567](https://github.com/paritytech/parity/pull/1567) - failing test with overlayrecent pruning [#1567](https://github.com/openethereum/openethereum/pull/1567)
- Enable state queries for OverlayRecent DB [#1575](https://github.com/paritytech/parity/pull/1575) - Enable state queries for OverlayRecent DB [#1575](https://github.com/openethereum/openethereum/pull/1575)
- have AccountDB use address hash for uniqueness [#1533](https://github.com/paritytech/parity/pull/1533) - have AccountDB use address hash for uniqueness [#1533](https://github.com/openethereum/openethereum/pull/1533)
- Very basic EVM binary. [#1574](https://github.com/paritytech/parity/pull/1574) - Very basic EVM binary. [#1574](https://github.com/openethereum/openethereum/pull/1574)
- Some obvious evm & uint optimizations [#1576](https://github.com/paritytech/parity/pull/1576) - Some obvious evm & uint optimizations [#1576](https://github.com/openethereum/openethereum/pull/1576)
- Fixing clippy warnings [#1568](https://github.com/paritytech/parity/pull/1568) - Fixing clippy warnings [#1568](https://github.com/openethereum/openethereum/pull/1568)
- Miner's gas price gets updated dynamically [#1570](https://github.com/paritytech/parity/pull/1570) - Miner's gas price gets updated dynamically [#1570](https://github.com/openethereum/openethereum/pull/1570)
- bringing hypervisor as a crate in ipc dir [#1565](https://github.com/paritytech/parity/pull/1565) - bringing hypervisor as a crate in ipc dir [#1565](https://github.com/openethereum/openethereum/pull/1565)
- Init public interface with IO message [#1573](https://github.com/paritytech/parity/pull/1573) - Init public interface with IO message [#1573](https://github.com/openethereum/openethereum/pull/1573)
- Uncommenting simple Miner tests [#1571](https://github.com/paritytech/parity/pull/1571) - Uncommenting simple Miner tests [#1571](https://github.com/openethereum/openethereum/pull/1571)
- Kill lock unwraps [#1558](https://github.com/paritytech/parity/pull/1558) - Kill lock unwraps [#1558](https://github.com/openethereum/openethereum/pull/1558)
- Fixing deadlock in miner [#1569](https://github.com/paritytech/parity/pull/1569) - Fixing deadlock in miner [#1569](https://github.com/openethereum/openethereum/pull/1569)
- Idealpeers in log [#1563](https://github.com/paritytech/parity/pull/1563) - Idealpeers in log [#1563](https://github.com/openethereum/openethereum/pull/1563)
- Simple style fix. [#1561](https://github.com/paritytech/parity/pull/1561) - Simple style fix. [#1561](https://github.com/openethereum/openethereum/pull/1561)
- Enum variants serialisation test&fix [#1559](https://github.com/paritytech/parity/pull/1559) - Enum variants serialisation test&fix [#1559](https://github.com/openethereum/openethereum/pull/1559)
- Supporting /api/ping for dapps server [#1543](https://github.com/paritytech/parity/pull/1543) - Supporting /api/ping for dapps server [#1543](https://github.com/openethereum/openethereum/pull/1543)
- Client IPC Interface [#1493](https://github.com/paritytech/parity/pull/1493) - Client IPC Interface [#1493](https://github.com/openethereum/openethereum/pull/1493)
- Kill timers when removing IO handler [#1554](https://github.com/paritytech/parity/pull/1554) - Kill timers when removing IO handler [#1554](https://github.com/openethereum/openethereum/pull/1554)
- Fix and add info messages [#1552](https://github.com/paritytech/parity/pull/1552) - Fix and add info messages [#1552](https://github.com/openethereum/openethereum/pull/1552)
- Fix indent of #1541 [#1555](https://github.com/paritytech/parity/pull/1555) - Fix indent of #1541 [#1555](https://github.com/openethereum/openethereum/pull/1555)
- Update sealing just once when externally importing many blocks [#1541](https://github.com/paritytech/parity/pull/1541) - Update sealing just once when externally importing many blocks [#1541](https://github.com/openethereum/openethereum/pull/1541)
- Remove soft-fork stuff. [#1548](https://github.com/paritytech/parity/pull/1548) - Remove soft-fork stuff. [#1548](https://github.com/openethereum/openethereum/pull/1548)
- fix codegen warning [#1550](https://github.com/paritytech/parity/pull/1550) - fix codegen warning [#1550](https://github.com/openethereum/openethereum/pull/1550)
- Extend migration framework [#1546](https://github.com/paritytech/parity/pull/1546) - Extend migration framework [#1546](https://github.com/openethereum/openethereum/pull/1546)
- Refactoring dapps to support API endpoints. [#1542](https://github.com/paritytech/parity/pull/1542) - Refactoring dapps to support API endpoints. [#1542](https://github.com/openethereum/openethereum/pull/1542)
- serde is no longer util dependency [#1534](https://github.com/paritytech/parity/pull/1534) - serde is no longer util dependency [#1534](https://github.com/openethereum/openethereum/pull/1534)
- mention wiki in README [#1549](https://github.com/paritytech/parity/pull/1549) - mention wiki in README [#1549](https://github.com/openethereum/openethereum/pull/1549)
- Skipping transactions with invalid nonces when pushing to block. [#1545](https://github.com/paritytech/parity/pull/1545) - Skipping transactions with invalid nonces when pushing to block. [#1545](https://github.com/openethereum/openethereum/pull/1545)
- Silent running operating modes [#1477](https://github.com/paritytech/parity/pull/1477) - Silent running operating modes [#1477](https://github.com/openethereum/openethereum/pull/1477)
- util cleanup [#1474](https://github.com/paritytech/parity/pull/1474) - util cleanup [#1474](https://github.com/openethereum/openethereum/pull/1474)
- Calculating gas using usize (if supplied gaslimit fits in usize) [#1518](https://github.com/paritytech/parity/pull/1518) - Calculating gas using usize (if supplied gaslimit fits in usize) [#1518](https://github.com/openethereum/openethereum/pull/1518)
- add owning NibbleVec [#1536](https://github.com/paritytech/parity/pull/1536) - add owning NibbleVec [#1536](https://github.com/openethereum/openethereum/pull/1536)
- Attempt to fix blochchain/extras DBs sync [#1538](https://github.com/paritytech/parity/pull/1538) - Attempt to fix blochchain/extras DBs sync [#1538](https://github.com/openethereum/openethereum/pull/1538)
- Client API refactoring - limiting errors to crate-level error types [#1525](https://github.com/paritytech/parity/pull/1525) - Client API refactoring - limiting errors to crate-level error types [#1525](https://github.com/openethereum/openethereum/pull/1525)
- IPC codegen enhancement - allow void methods [#1540](https://github.com/paritytech/parity/pull/1540) - IPC codegen enhancement - allow void methods [#1540](https://github.com/openethereum/openethereum/pull/1540)
- Fixing serving nested files for dapps. [#1539](https://github.com/paritytech/parity/pull/1539) - Fixing serving nested files for dapps. [#1539](https://github.com/openethereum/openethereum/pull/1539)
- Fixed public address config [#1537](https://github.com/paritytech/parity/pull/1537) - Fixed public address config [#1537](https://github.com/openethereum/openethereum/pull/1537)
- Fixing compilation&clippy warnings [#1531](https://github.com/paritytech/parity/pull/1531) - Fixing compilation&clippy warnings [#1531](https://github.com/openethereum/openethereum/pull/1531)
- creating ethereum dir while in geth mode [#1530](https://github.com/paritytech/parity/pull/1530) - creating ethereum dir while in geth mode [#1530](https://github.com/openethereum/openethereum/pull/1530)
- Bumping clippy [#1532](https://github.com/paritytech/parity/pull/1532) - Bumping clippy [#1532](https://github.com/openethereum/openethereum/pull/1532)
- Make signer default as long as --unlock isn't used. [#1524](https://github.com/paritytech/parity/pull/1524) - Make signer default as long as --unlock isn't used. [#1524](https://github.com/openethereum/openethereum/pull/1524)
- add client timeout when requesting usd price for gas [#1526](https://github.com/paritytech/parity/pull/1526) - add client timeout when requesting usd price for gas [#1526](https://github.com/openethereum/openethereum/pull/1526)
- Fix gitter-url link in README.md [#1528](https://github.com/paritytech/parity/pull/1528) - Fix gitter-url link in README.md [#1528](https://github.com/openethereum/openethereum/pull/1528)
- Fix error message. [#1527](https://github.com/paritytech/parity/pull/1527) - Fix error message. [#1527](https://github.com/openethereum/openethereum/pull/1527)
- BTreeMap binary serialization [#1489](https://github.com/paritytech/parity/pull/1489) - BTreeMap binary serialization [#1489](https://github.com/openethereum/openethereum/pull/1489)
- Save block reference in the queue on notification [#1501](https://github.com/paritytech/parity/pull/1501) - Save block reference in the queue on notification [#1501](https://github.com/openethereum/openethereum/pull/1501)
- bigint tests to run on CI [#1522](https://github.com/paritytech/parity/pull/1522) - bigint tests to run on CI [#1522](https://github.com/openethereum/openethereum/pull/1522)
- Client api cleaning - uncles are returned as rlp [#1516](https://github.com/paritytech/parity/pull/1516) - Client api cleaning - uncles are returned as rlp [#1516](https://github.com/openethereum/openethereum/pull/1516)
- Fatdb integration with CLI [#1464](https://github.com/paritytech/parity/pull/1464) - Fatdb integration with CLI [#1464](https://github.com/openethereum/openethereum/pull/1464)
- Optimizing/simplifying shr [#1517](https://github.com/paritytech/parity/pull/1517) - Optimizing/simplifying shr [#1517](https://github.com/openethereum/openethereum/pull/1517)
- change IPC codegen to allow attributes [#1500](https://github.com/paritytech/parity/pull/1500) - change IPC codegen to allow attributes [#1500](https://github.com/openethereum/openethereum/pull/1500)
- Fix warnings [#1514](https://github.com/paritytech/parity/pull/1514) - Fix warnings [#1514](https://github.com/openethereum/openethereum/pull/1514)
- FatDB [#1452](https://github.com/paritytech/parity/pull/1452) - FatDB [#1452](https://github.com/openethereum/openethereum/pull/1452)
- Fix the reseal mechanism. [#1513](https://github.com/paritytech/parity/pull/1513) - Fix the reseal mechanism. [#1513](https://github.com/openethereum/openethereum/pull/1513)
- Update Dockerfile ubuntu-aarch64 [#1509](https://github.com/paritytech/parity/pull/1509) - Update Dockerfile ubuntu-aarch64 [#1509](https://github.com/openethereum/openethereum/pull/1509)
- Update Ubuntu-arm Dockerfile [#1510](https://github.com/paritytech/parity/pull/1510) - Update Ubuntu-arm Dockerfile [#1510](https://github.com/openethereum/openethereum/pull/1510)
- Update Ubuntu-jit Dockerfile [#1511](https://github.com/paritytech/parity/pull/1511) - Update Ubuntu-jit Dockerfile [#1511](https://github.com/openethereum/openethereum/pull/1511)
- Update Ubuntu Dockerfile [#1512](https://github.com/paritytech/parity/pull/1512) - Update Ubuntu Dockerfile [#1512](https://github.com/openethereum/openethereum/pull/1512)
- Update CentOS Dockerfile [#1508](https://github.com/paritytech/parity/pull/1508) - Update CentOS Dockerfile [#1508](https://github.com/openethereum/openethereum/pull/1508)
- bump status page v0.5.1 [#1502](https://github.com/paritytech/parity/pull/1502) - bump status page v0.5.1 [#1502](https://github.com/openethereum/openethereum/pull/1502)
- Update CentOS Dockerfile [#1507](https://github.com/paritytech/parity/pull/1507) - Update CentOS Dockerfile [#1507](https://github.com/openethereum/openethereum/pull/1507)
- Update Dockerfile ubuntu-aarch64 [#1506](https://github.com/paritytech/parity/pull/1506) - Update Dockerfile ubuntu-aarch64 [#1506](https://github.com/openethereum/openethereum/pull/1506)
- Update Ubuntu-arm Dockerfile [#1505](https://github.com/paritytech/parity/pull/1505) - Update Ubuntu-arm Dockerfile [#1505](https://github.com/openethereum/openethereum/pull/1505)
- Update Ubuntu-jit Dockerfile [#1504](https://github.com/paritytech/parity/pull/1504) - Update Ubuntu-jit Dockerfile [#1504](https://github.com/openethereum/openethereum/pull/1504)
- Update Ubuntu Dockerfile [#1503](https://github.com/paritytech/parity/pull/1503) - Update Ubuntu Dockerfile [#1503](https://github.com/openethereum/openethereum/pull/1503)
- Optionally clone block behind work-package [#1497](https://github.com/paritytech/parity/pull/1497) - Optionally clone block behind work-package [#1497](https://github.com/openethereum/openethereum/pull/1497)
- Fix no colour on windows. [#1498](https://github.com/paritytech/parity/pull/1498) - Fix no colour on windows. [#1498](https://github.com/openethereum/openethereum/pull/1498)
- Workaround for hyper panic [#1495](https://github.com/paritytech/parity/pull/1495) - Workaround for hyper panic [#1495](https://github.com/openethereum/openethereum/pull/1495)
- Colourful notification on mine [#1488](https://github.com/paritytech/parity/pull/1488) - Colourful notification on mine [#1488](https://github.com/openethereum/openethereum/pull/1488)
- Quick fix for max open files error [#1494](https://github.com/paritytech/parity/pull/1494) - Quick fix for max open files error [#1494](https://github.com/openethereum/openethereum/pull/1494)
- Work notification over HTTP [#1491](https://github.com/paritytech/parity/pull/1491) - Work notification over HTTP [#1491](https://github.com/openethereum/openethereum/pull/1491)
- Sealed block importing and propagation optimization [#1478](https://github.com/paritytech/parity/pull/1478) - Sealed block importing and propagation optimization [#1478](https://github.com/openethereum/openethereum/pull/1478)
- vm factory to mining client [#1487](https://github.com/paritytech/parity/pull/1487) - vm factory to mining client [#1487](https://github.com/openethereum/openethereum/pull/1487)
- topbar dialog fix [#1479](https://github.com/paritytech/parity/pull/1479) - topbar dialog fix [#1479](https://github.com/openethereum/openethereum/pull/1479)
- Minor additions to allow resetting of code. [#1482](https://github.com/paritytech/parity/pull/1482) - Minor additions to allow resetting of code. [#1482](https://github.com/openethereum/openethereum/pull/1482)
- Introduce options for fine-grained management of work queue. [#1484](https://github.com/paritytech/parity/pull/1484) - Introduce options for fine-grained management of work queue. [#1484](https://github.com/openethereum/openethereum/pull/1484)
- Snapshot state restoration [#1308](https://github.com/paritytech/parity/pull/1308) - Snapshot state restoration [#1308](https://github.com/openethereum/openethereum/pull/1308)
- Merge master into pv64 branch [#1486](https://github.com/paritytech/parity/pull/1486) - Merge master into pv64 branch [#1486](https://github.com/openethereum/openethereum/pull/1486)
- Ensure we don't reject our own transactions for gasprice. [#1485](https://github.com/paritytech/parity/pull/1485) - Ensure we don't reject our own transactions for gasprice. [#1485](https://github.com/openethereum/openethereum/pull/1485)
- Signing parity executable & windows installer in appveyor [#1481](https://github.com/paritytech/parity/pull/1481) - Signing parity executable & windows installer in appveyor [#1481](https://github.com/openethereum/openethereum/pull/1481)
- Rearrange fork CLI options. [#1476](https://github.com/paritytech/parity/pull/1476) - Rearrange fork CLI options. [#1476](https://github.com/openethereum/openethereum/pull/1476)
- give appveyor some breath [#1475](https://github.com/paritytech/parity/pull/1475) - give appveyor some breath [#1475](https://github.com/openethereum/openethereum/pull/1475)
- Ensure we always get the latest work when mining on submitted. [#1469](https://github.com/paritytech/parity/pull/1469) - Ensure we always get the latest work when mining on submitted. [#1469](https://github.com/openethereum/openethereum/pull/1469)
- Tests for views [#1471](https://github.com/paritytech/parity/pull/1471) - Tests for views [#1471](https://github.com/openethereum/openethereum/pull/1471)
- json ipc version bump [#1470](https://github.com/paritytech/parity/pull/1470) - json ipc version bump [#1470](https://github.com/openethereum/openethereum/pull/1470)
- verifier is no longer a template type of client [#1467](https://github.com/paritytech/parity/pull/1467) - verifier is no longer a template type of client [#1467](https://github.com/openethereum/openethereum/pull/1467)
- Allow configuration of when to reseal blocks. [#1460](https://github.com/paritytech/parity/pull/1460) - Allow configuration of when to reseal blocks. [#1460](https://github.com/openethereum/openethereum/pull/1460)
- removed unsafe code [#1466](https://github.com/paritytech/parity/pull/1466) - removed unsafe code [#1466](https://github.com/openethereum/openethereum/pull/1466)
- WS bump + Adding default for value [#1465](https://github.com/paritytech/parity/pull/1465) - WS bump + Adding default for value [#1465](https://github.com/openethereum/openethereum/pull/1465)
- Attempt DB repair if corrupted [#1461](https://github.com/paritytech/parity/pull/1461) - Attempt DB repair if corrupted [#1461](https://github.com/openethereum/openethereum/pull/1461)
- Database configuration extended [#1454](https://github.com/paritytech/parity/pull/1454) - Database configuration extended [#1454](https://github.com/openethereum/openethereum/pull/1454)
- Updating WS-RS server [#1459](https://github.com/paritytech/parity/pull/1459) - Updating WS-RS server [#1459](https://github.com/openethereum/openethereum/pull/1459)
- Reduced IO messages; removed panics on IO notifications [#1457](https://github.com/paritytech/parity/pull/1457) - Reduced IO messages; removed panics on IO notifications [#1457](https://github.com/openethereum/openethereum/pull/1457)
- Handle errors when starting parity --signer [#1451](https://github.com/paritytech/parity/pull/1451) - Handle errors when starting parity --signer [#1451](https://github.com/openethereum/openethereum/pull/1451)
- Fixed losing queued blocks on error [#1453](https://github.com/paritytech/parity/pull/1453) - Fixed losing queued blocks on error [#1453](https://github.com/openethereum/openethereum/pull/1453)
- Updated to latest hyper with patched mio [#1450](https://github.com/paritytech/parity/pull/1450) - Updated to latest hyper with patched mio [#1450](https://github.com/openethereum/openethereum/pull/1450)
- Retweak BASE and MULTIPLIER in rocksdb config. [#1445](https://github.com/paritytech/parity/pull/1445) - Retweak BASE and MULTIPLIER in rocksdb config. [#1445](https://github.com/openethereum/openethereum/pull/1445)
- Removing Miner::default. [#1410](https://github.com/paritytech/parity/pull/1410) - Removing Miner::default. [#1410](https://github.com/openethereum/openethereum/pull/1410)
- Don't mine without --author [#1436](https://github.com/paritytech/parity/pull/1436) - Don't mine without --author [#1436](https://github.com/openethereum/openethereum/pull/1436)
- Revert the rescuedao extradata. [#1437](https://github.com/paritytech/parity/pull/1437) - Revert the rescuedao extradata. [#1437](https://github.com/openethereum/openethereum/pull/1437)
- More conservative settings for rocksdb. [#1440](https://github.com/paritytech/parity/pull/1440) - More conservative settings for rocksdb. [#1440](https://github.com/openethereum/openethereum/pull/1440)
- v1.3.0 in master [#1421](https://github.com/paritytech/parity/pull/1421) - v1.3.0 in master [#1421](https://github.com/openethereum/openethereum/pull/1421)
- Update Ubuntu-arm Dockerfile [#1429](https://github.com/paritytech/parity/pull/1429) - Update Ubuntu-arm Dockerfile [#1429](https://github.com/openethereum/openethereum/pull/1429)
- Create Dockerfile ubuntu-aarch64 [#1430](https://github.com/paritytech/parity/pull/1430) - Create Dockerfile ubuntu-aarch64 [#1430](https://github.com/openethereum/openethereum/pull/1430)
- Update CentOS Dockerfile [#1424](https://github.com/paritytech/parity/pull/1424) - Update CentOS Dockerfile [#1424](https://github.com/openethereum/openethereum/pull/1424)
- Update Ubuntu Dockerfile [#1426](https://github.com/paritytech/parity/pull/1426) - Update Ubuntu Dockerfile [#1426](https://github.com/openethereum/openethereum/pull/1426)
- Update Ubuntu-jit Dockerfile [#1427](https://github.com/paritytech/parity/pull/1427) - Update Ubuntu-jit Dockerfile [#1427](https://github.com/openethereum/openethereum/pull/1427)
- Update SF blocknumber to 1800000. [#1418](https://github.com/paritytech/parity/pull/1418) - Update SF blocknumber to 1800000. [#1418](https://github.com/openethereum/openethereum/pull/1418)

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More