Compare commits
362 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8ca8089e9b | ||
|
|
c4892cefbe | ||
|
|
b079d17468 | ||
|
|
938f361f4a | ||
|
|
7875b786be | ||
|
|
fdf5f671cf | ||
|
|
44f088bb47 | ||
|
|
28207a83ac | ||
|
|
748a8e384d | ||
|
|
cb9800f04c | ||
|
|
114074c939 | ||
|
|
f9633e69fe | ||
|
|
74e9293f0f | ||
|
|
4f3a128194 | ||
|
|
ec85686c63 | ||
|
|
e3abea34e9 | ||
|
|
c85300ca6b | ||
|
|
b7dd06b1ff | ||
|
|
4ed0a454f0 | ||
|
|
2b77203526 | ||
|
|
2a3b321a34 | ||
|
|
4b5e9ddfa6 | ||
|
|
90c0be0231 | ||
|
|
56885fe458 | ||
|
|
1b23af3fa9 | ||
|
|
b8e4f142d1 | ||
|
|
51e4a6dcbc | ||
|
|
a5820b6ef9 | ||
|
|
12cbe93fbe | ||
|
|
c92a15dad0 | ||
|
|
78a0e8d312 | ||
|
|
5ccc98beba | ||
|
|
d78565593b | ||
|
|
1cf37cca0d | ||
|
|
6ae613eaca | ||
|
|
c0920b30ee | ||
|
|
5627f049a7 | ||
|
|
b683c22c98 | ||
|
|
e047bb4bb5 | ||
|
|
47637538e4 | ||
|
|
d4b5720df0 | ||
|
|
1840102edd | ||
|
|
302a388d96 | ||
|
|
2a3217d8d8 | ||
|
|
4f26ffd447 | ||
|
|
0ac15a0883 | ||
|
|
78916beb1a | ||
|
|
87fd914c94 | ||
|
|
874462bfc0 | ||
|
|
bb2d7fb8c9 | ||
|
|
70c4ed7fa0 | ||
|
|
3231454bb1 | ||
|
|
2bcc31928e | ||
|
|
9da1304539 | ||
|
|
ba0a380df9 | ||
|
|
5be4924672 | ||
|
|
e88ac4dbcf | ||
|
|
b7c97f90b6 | ||
|
|
9e77e7e193 | ||
|
|
10d82ef119 | ||
|
|
c190092750 | ||
|
|
5c3c979798 | ||
|
|
3ccfe735aa | ||
|
|
6c0134f2ee | ||
|
|
729b10e1e0 | ||
|
|
bfbb92f0a1 | ||
|
|
7d54e9258d | ||
|
|
0c385de921 | ||
|
|
62b73a6460 | ||
|
|
597cbc2d6c | ||
|
|
0edd55f42f | ||
|
|
8572d612a7 | ||
|
|
11abf3ea2e | ||
|
|
ec8dbb36e6 | ||
|
|
cd7018007e | ||
|
|
ad56eb48b5 | ||
|
|
fa6b6a19a4 | ||
|
|
bbcd094906 | ||
|
|
2018f5b0ab | ||
|
|
bec867be03 | ||
|
|
fa0c1efb8d | ||
|
|
06df521eff | ||
|
|
a49950e9c0 | ||
|
|
70f08e1549 | ||
|
|
4e2010f2d9 | ||
|
|
ff78f4318a | ||
|
|
a4aef98acd | ||
|
|
856a075588 | ||
|
|
ea9322f9c1 | ||
|
|
452aeec0bb | ||
|
|
3424697313 | ||
|
|
9477bae6dc | ||
|
|
3357cfb3e5 | ||
|
|
6b61ef8aa7 | ||
|
|
1a8c0391c5 | ||
|
|
c5123e1ecd | ||
|
|
99271db9d3 | ||
|
|
2c4b51c3ea | ||
|
|
654632264b | ||
|
|
cb7df2053d | ||
|
|
218299969d | ||
|
|
77f755bbe1 | ||
|
|
090c3322a5 | ||
|
|
06138ec7d3 | ||
|
|
e20d5b639e | ||
|
|
626543326d | ||
|
|
7108b3f048 | ||
|
|
49f338a173 | ||
|
|
e9fa4d00d2 | ||
|
|
cf6fa63f55 | ||
|
|
edf59a1394 | ||
|
|
e4a4a3cb55 | ||
|
|
1b96f98296 | ||
|
|
ccaa514eec | ||
|
|
296fac0fe7 | ||
|
|
3c3c19d37c | ||
|
|
7d9ff1d810 | ||
|
|
9c94dcb8ab | ||
|
|
9faa823f53 | ||
|
|
5d4993b0f8 | ||
|
|
bf44f024c6 | ||
|
|
ceda9d95de | ||
|
|
c7c18d067d | ||
|
|
1113682555 | ||
|
|
283d0773fe | ||
|
|
e69539357f | ||
|
|
6ab7789604 | ||
|
|
33bfcec4ab | ||
|
|
a47a5b1992 | ||
|
|
108daf1861 | ||
|
|
b69a33b3ab | ||
|
|
a9d337f7f3 | ||
|
|
bbc6fb5db6 | ||
|
|
e1d06efe60 | ||
|
|
171526c1a1 | ||
|
|
77643c13e8 | ||
|
|
d3b4898339 | ||
|
|
a9214081c0 | ||
|
|
d8a0d38229 | ||
|
|
ea8e7fcf73 | ||
|
|
73354d8d93 | ||
|
|
87e1080581 | ||
|
|
e95bbe36cb | ||
|
|
b6afc81d69 | ||
|
|
b8d9b6f826 | ||
|
|
424b38a8d7 | ||
|
|
5bd6b208af | ||
|
|
23a23e7a18 | ||
|
|
9d8e6ee4c9 | ||
|
|
280894691e | ||
|
|
b9f9d11929 | ||
|
|
860ef19e95 | ||
|
|
f8f22245ec | ||
|
|
e14d68e559 | ||
|
|
2b1d148ceb | ||
|
|
f6909d8243 | ||
|
|
fd29926a21 | ||
|
|
63535860bc | ||
|
|
6e76be7fad | ||
|
|
ae74e8df78 | ||
|
|
4fa78e0537 | ||
|
|
f1f64930cf | ||
|
|
4c6b282bee | ||
|
|
07e3a7f3d4 | ||
|
|
64295fde62 | ||
|
|
a6350c65aa | ||
|
|
36c917eb7a | ||
|
|
cfe57633fa | ||
|
|
80a83c95d3 | ||
|
|
f6c3d4c695 | ||
|
|
2895e3b2ab | ||
|
|
f2f4217e3c | ||
|
|
4c3be46f93 | ||
|
|
71f4f61146 | ||
|
|
a016dc5c6c | ||
|
|
cf2cb58e1d | ||
|
|
dcb69ba353 | ||
|
|
1b0948d9d1 | ||
|
|
6e34ee6837 | ||
|
|
1986c4ee79 | ||
|
|
df1c5ac616 | ||
|
|
c7219aae30 | ||
|
|
ee01612768 | ||
|
|
e0091c672a | ||
|
|
82c3265858 | ||
|
|
93f700d961 | ||
|
|
eb565a7e2b | ||
|
|
e194a2c6e3 | ||
|
|
db1ea1dcd8 | ||
|
|
9d55f0b4ab | ||
|
|
887aa62fdb | ||
|
|
8adde605e9 | ||
|
|
5fdf6be798 | ||
|
|
1b4d23fd20 | ||
|
|
43dc9af03b | ||
|
|
13729a0f7f | ||
|
|
80754c3426 | ||
|
|
8c2199dd2a | ||
|
|
6b17e321df | ||
|
|
f743829759 | ||
|
|
29c364be43 | ||
|
|
6993ec9531 | ||
|
|
0d3423cbe0 | ||
|
|
293e06e0f4 | ||
|
|
e0e79fdee0 | ||
|
|
2c97bcc1a4 | ||
|
|
c4ca84cdf3 | ||
|
|
ffeaee778c | ||
|
|
acf7c48d7e | ||
|
|
834585d61b | ||
|
|
81ca599f2a | ||
|
|
20bd1fa789 | ||
|
|
6960d35abb | ||
|
|
c8b4373e13 | ||
|
|
2d2513b35a | ||
|
|
3696f68626 | ||
|
|
ff697b64b3 | ||
|
|
9c8b7c23d1 | ||
|
|
f99819d326 | ||
|
|
6b57429d72 | ||
|
|
f59ed47b1b | ||
|
|
aefa8d5f59 | ||
|
|
f3015ce0c6 | ||
|
|
4f25d43516 | ||
|
|
9d313e31e6 | ||
|
|
330cdc1a4d | ||
|
|
93fbbb9aaf | ||
|
|
a404dd5415 | ||
|
|
11c447dfbe | ||
|
|
f48780c29b | ||
|
|
35513b14de | ||
|
|
63c7ae9a89 | ||
|
|
b31bff5ce2 | ||
|
|
4fd1ec643f | ||
|
|
79aeb95272 | ||
|
|
ca329078f5 | ||
|
|
acc5bdfc35 | ||
|
|
79a17dedd0 | ||
|
|
0c0f965354 | ||
|
|
0bd2979c04 | ||
|
|
f24bff5998 | ||
|
|
ad633de6d9 | ||
|
|
d243b15ae0 | ||
|
|
fcd042a487 | ||
|
|
1b1b44bb20 | ||
|
|
8471b91002 | ||
|
|
4979c62bb5 | ||
|
|
2b8b8851ab | ||
|
|
7c5fd042f3 | ||
|
|
d9201aa6f2 | ||
|
|
7f5ac8ba7a | ||
|
|
fc22c58408 | ||
|
|
2627288311 | ||
|
|
19184e8529 | ||
|
|
b6415c6196 | ||
|
|
acad59b300 | ||
|
|
0051c26acf | ||
|
|
bceb1d5691 | ||
|
|
61a7c30ed5 | ||
|
|
0659cb8592 | ||
|
|
a665116eb1 | ||
|
|
0bd2348ca1 | ||
|
|
eb81168674 | ||
|
|
ad9a53f486 | ||
|
|
5e2def1b23 | ||
|
|
240ef46c72 | ||
|
|
f4d14e271f | ||
|
|
48629c2bd4 | ||
|
|
d311bebaee | ||
|
|
fc9a2933af | ||
|
|
feb87c901e | ||
|
|
d8d7abc848 | ||
|
|
80f0e4b58f | ||
|
|
53e590f54b | ||
|
|
a4969ca498 | ||
|
|
680807e601 | ||
|
|
a89bbfe366 | ||
|
|
44c00b1f74 | ||
|
|
11d3cb3f08 | ||
|
|
8c286125e6 | ||
|
|
d193ddde19 | ||
|
|
396ccdbcc1 | ||
|
|
a9cb572238 | ||
|
|
05f9606bf2 | ||
|
|
00124b5a4b | ||
|
|
dabfa2c663 | ||
|
|
3420c2bac0 | ||
|
|
4f12d7ad12 | ||
|
|
5ce249ac64 | ||
|
|
cd26526868 | ||
|
|
974b24549b | ||
|
|
dab2a6bd4b | ||
|
|
505e284932 | ||
|
|
b1e3acaf0c | ||
|
|
fbf425c4e2 | ||
|
|
79b671f6c7 | ||
|
|
2af3140a26 | ||
|
|
efb390eb60 | ||
|
|
175051bac7 | ||
|
|
0a654afecc | ||
|
|
66e4410be7 | ||
|
|
bd1a578f93 | ||
|
|
6a9de9b11e | ||
|
|
1ba4df08f9 | ||
|
|
abb2a8c5a2 | ||
|
|
fd75491103 | ||
|
|
ef47426a93 | ||
|
|
5807402a0b | ||
|
|
e50eafe6e1 | ||
|
|
a23f5b8fd9 | ||
|
|
bd2e4f9c13 | ||
|
|
e551122ab9 | ||
|
|
73f4564b66 | ||
|
|
509fda727b | ||
|
|
ffc066e5a4 | ||
|
|
cafdfa8107 | ||
|
|
49f219451b | ||
|
|
45978bc2bd | ||
|
|
c689495826 | ||
|
|
46954527e7 | ||
|
|
72279856cd | ||
|
|
13ccb9f827 | ||
|
|
1503348782 | ||
|
|
5de32a70da | ||
|
|
8e0c522931 | ||
|
|
6c7d0fef4e | ||
|
|
12256a1e97 | ||
|
|
ec90fc47bc | ||
|
|
ee9bfac625 | ||
|
|
27786f014c | ||
|
|
8099efe215 | ||
|
|
cc796a232a | ||
|
|
d1b28bf57e | ||
|
|
acb1243214 | ||
|
|
fa1f81b5a3 | ||
|
|
1ef9d5b52f | ||
|
|
7f707fa524 | ||
|
|
c62e97d3c4 | ||
|
|
27d1c2d7d1 | ||
|
|
e3665ed9e3 | ||
|
|
14e7641835 | ||
|
|
5baa7e8fb5 | ||
|
|
cfe826fae9 | ||
|
|
5a131175e8 | ||
|
|
d850eb0dd5 | ||
|
|
34cdeac2a6 | ||
|
|
f53c3e582c | ||
|
|
fdc7b0fdaa | ||
|
|
0f337171bf | ||
|
|
073d242d1e | ||
|
|
44cc442d12 | ||
|
|
d5c19bae1c | ||
|
|
88e0cfe5ca | ||
|
|
141f6a047e | ||
|
|
fe7bc545bf | ||
|
|
c4c5d79a0f | ||
|
|
0a9095626d | ||
|
|
a6e96b052e | ||
|
|
86ef490a94 | ||
|
|
b97bf81adf | ||
|
|
d5584a01c7 | ||
|
|
d83798db62 |
@@ -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"]
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
4
.github/CODE_OF_CONDUCT.md
vendored
4
.github/CODE_OF_CONDUCT.md
vendored
@@ -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
|
||||||
|
|
||||||
|
|||||||
22
.github/CONTRIBUTING.md
vendored
22
.github/CONTRIBUTING.md
vendored
@@ -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.
|
|
||||||
|
|||||||
5
.github/ISSUE_TEMPLATE.md
vendored
5
.github/ISSUE_TEMPLATE.md
vendored
@@ -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
18
.github/workflows/audit.yml
vendored
Normal 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
103
.github/workflows/build-test.yml
vendored
Normal 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
95
.github/workflows/build.yml
vendored
Normal 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
88
.github/workflows/check.yml
vendored
Normal 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
30
.github/workflows/deploy-docker.yml
vendored
Normal 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
2
.gitignore
vendored
@@ -42,4 +42,4 @@ parity-clib-examples/cpp/build/
|
|||||||
|
|
||||||
.vscode
|
.vscode
|
||||||
rls/
|
rls/
|
||||||
/parity.*
|
/openethereum.*
|
||||||
|
|||||||
325
.gitlab-ci.yml
325
.gitlab-ci.yml
@@ -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
2
.gitmodules
vendored
@@ -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
|
||||||
|
|||||||
281
CHANGELOG.md
281
CHANGELOG.md
@@ -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
6463
Cargo.lock
generated
File diff suppressed because it is too large
Load Diff
124
Cargo.toml
124
Cargo.toml
@@ -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
233
README.md
@@ -1,11 +1,19 @@
|
|||||||

|
# 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:
|
|
||||||
[](https://gitter.im/paritytech/parity)
|
|
||||||
[](https://gitter.im/paritytech/parity.js)
|
|
||||||
[](https://gitter.im/paritytech/parity/miners)
|
|
||||||
[](https://gitter.im/paritytech/parity-poa)
|
|
||||||
|
|
||||||
Alternatively, join our community on Matrix:
|
|
||||||
[](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)
|
||||||
|
|||||||
80
SECURITY.md
80
SECURITY.md
@@ -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.
|
|
||||||
- Don’t 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
49
SMART_CONTRACT_LICENSE
Normal 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 contract’s 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.
|
||||||
@@ -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"
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
@@ -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)))
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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() {
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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[..]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -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)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -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")
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -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
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -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>;
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -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};
|
||||||
|
|
||||||
|
|||||||
@@ -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() {
|
||||||
|
|||||||
@@ -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))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -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());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -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"
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
@@ -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> {
|
||||||
|
|||||||
@@ -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)?,
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|
||||||
|
|||||||
@@ -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))
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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());
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|
||||||
|
|||||||
@@ -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");
|
||||||
|
|||||||
@@ -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> {
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|
||||||
|
|||||||
@@ -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)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -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]
|
||||||
|
|||||||
@@ -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<_>>();
|
||||||
|
|||||||
@@ -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>())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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};
|
||||||
|
|||||||
@@ -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};
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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};
|
||||||
|
|||||||
@@ -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};
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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};
|
||||||
|
|||||||
@@ -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)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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>;
|
||||||
|
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|
||||||
|
|||||||
@@ -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]
|
||||||
|
|||||||
@@ -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());
|
||||||
|
|||||||
@@ -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>"]
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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" }
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
@@ -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};
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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
@@ -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)
|
||||||
|
|||||||
@@ -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
Reference in New Issue
Block a user