openethereum/ethstore
Afri Schoedon 126208cc74
Backports for stable 2.1.7 (#9975)
* version: bump stable to 2.1.7

* Adjust requests costs for light client (#9925)

* PIP Table Cost relative to average peers instead of max peers

* Add tracing in PIP new_cost_table

* Update stat peer_count

* Use number of leeching peers for Light serve costs

* Fix test::light_params_load_share_depends_on_max_peers (wrong type)

* Remove (now) useless test

* Remove `load_share` from LightParams.Config
Prevent div. by 0

* Add LEECHER_COUNT_FACTOR

* PR Grumble: u64 to u32 for f64 casting

* Prevent u32 overflow for avg_peer_count

* Add tests for LightSync::Statistics

* Fix empty steps (#9939)

* Don't send empty step twice or empty step then block.

* Perform basic validation of locally sealed blocks.

* Don't include empty step twice.

* prevent silent errors in daemon mode, closes #9367 (#9946)

* Fix light client informant while syncing (#9932)

* Add `is_idle` to LightSync to check importing status

* Use SyncStateWrapper to make sure is_idle gets updates

* Update is_major_import to use verified queue size as well

* Add comment for `is_idle`

* Add Debug to `SyncStateWrapper`

* `fn get` -> `fn into_inner`

*  ci: rearrange pipeline by logic (#9970)

* ci: rearrange pipeline by logic

* ci: rename docs script

* Add readiness check for docker container (#9804)

* Update Dockerfile

Since parity is built for "mission critical use", I thought other operators may see the need for this.

Adding the `curl` and `jq` commands allows for an extremely simple health check to be usable in container orchestrators.

For example. Here is a health check for a parity docker container running in Kubernetes.

This can be setup as a readiness Probe that would prevent clustered nodes that aren't ready from serving traffic.

```bash
#!/bin/bash

ETH_SYNCING=$(curl -X POST --data '{"jsonrpc":"2.0","method":"eth_syncing","params":[],"id":1}' http://localhost:8545 -H 'Content-Type: application/json')
RESULT=$(echo "$ETH_SYNCING | jq -r .result)

if [ "$RESULT" == "false" ]; then
  echo "Parity is ready to start accepting traffic"
  exit 0
else
  echo "Parity is still syncing the blockchain"
  exit 1
fi
```

* add sync check script

* Fix docker script (#9854)


* Dockerfile: change source path of the newly added check_sync.sh (#9869)

* Do not use the home directory as the working dir in docker (#9834)

* Do not create a home directory.

* Re-add -m flag

* fix docker build (#9971)

* bump smallvec to 0.6 in ethcore-light, ethstore and whisper (#9588)

* bump smallvec to 0.6 in ethcore-light, ethstore and whisper

* bump transaction-pool

* Fix test.

* patch cargo to use tokio-proto from git repo

this makes sure we no longer depend on smallvec 0.2.1 which is
affected by https://github.com/servo/rust-smallvec/issues/96

* use patched version of untrusted 0.5.1

* ci: allow audit to fail
2018-11-28 13:14:55 +01:00
..
cli Random small cleanups (#9423) 2018-08-30 19:57:27 +02:00
src Delete crates from parity-ethereum and fetch them from parity-common instead (#9083) 2018-07-10 14:59:19 +02:00
tests Add type for passwords. (#8920) 2018-06-22 15:09:15 +02:00
.editorconfig secret store separated from util (#1304) 2016-06-20 00:10:34 +02:00
.gitignore secret store separated from util (#1304) 2016-06-20 00:10:34 +02:00
.travis.yml secret store separated from util (#1304) 2016-06-20 00:10:34 +02:00
Cargo.toml Backports for stable 2.1.7 (#9975) 2018-11-28 13:14:55 +01:00
README.md Random small cleanups (#9423) 2018-08-30 19:57:27 +02:00

ethstore-cli

Parity Ethereum key management.

Usage

Parity Ethereum key management tool.
  Copyright 2015-2018 Parity Technologies (UK) Ltd.

Usage:
    ethstore insert <secret> <password> [--dir DIR] [--vault VAULT] [--vault-pwd VAULTPWD]
    ethstore change-pwd <address> <old-pwd> <new-pwd> [--dir DIR] [--vault VAULT] [--vault-pwd VAULTPWD]
    ethstore list [--dir DIR] [--vault VAULT] [--vault-pwd VAULTPWD]
    ethstore import [--src DIR] [--dir DIR]
    ethstore import-wallet <path> <password> [--dir DIR] [--vault VAULT] [--vault-pwd VAULTPWD]
    ethstore find-wallet-pass <path> <password>
    ethstore remove <address> <password> [--dir DIR] [--vault VAULT] [--vault-pwd VAULTPWD]
    ethstore sign <address> <password> <message> [--dir DIR] [--vault VAULT] [--vault-pwd VAULTPWD]
    ethstore public <address> <password> [--dir DIR] [--vault VAULT] [--vault-pwd VAULTPWD]
    ethstore list-vaults [--dir DIR]
    ethstore create-vault <vault> <password> [--dir DIR]
    ethstore change-vault-pwd <vault> <old-pwd> <new-pwd> [--dir DIR]
    ethstore move-to-vault <address> <vault> <password> [--dir DIR] [--vault VAULT] [--vault-pwd VAULTPWD]
    ethstore move-from-vault <address> <vault> <password> [--dir DIR]
    ethstore [-h | --help]

Options:
    -h, --help               Display this message and exit.
    --dir DIR                Specify the secret store directory. It may be either
                             parity, parity-(chain), geth, geth-test
                             or a path [default: parity].
    --vault VAULT            Specify vault to use in this operation.
    --vault-pwd VAULTPWD     Specify vault password to use in this operation. Please note
                             that this option is required when vault option is set.
                             Otherwise it is ignored.
    --src DIR                Specify import source. It may be either
                             parity, parity-(chain), geth, geth-test
                             or a path [default: geth].

Commands:
    insert             Save account with password.
    change-pwd         Change password.
    list               List accounts.
    import             Import accounts from src.
    import-wallet      Import presale wallet.
    find-wallet-pass   Tries to open a wallet with list of passwords given.
    remove             Remove account.
    sign               Sign message.
    public             Displays public key for an address.
    list-vaults        List vaults.
    create-vault       Create new vault.
    change-vault-pwd   Change vault password.
    move-to-vault      Move account to vault from another vault/root directory.
    move-from-vault    Move account to root directory from given vault.

Examples

insert <secret> <password> [--dir DIR] [--vault VAULT] [--vault-pwd VAULTPWD]

Encrypt secret with a password and save it in secret store.

  • <secret> - ethereum secret, 32 bytes long
  • <password> - account password, file path
  • [--dir DIR] - secret store directory, It may be either parity, parity-test, geth, geth-test or a path. default: parity
  • [--vault VAULT] - vault to use in this operation
  • [--vault-pwd VAULTPWD] - vault password to use in this operation, file path
ethstore insert 7d29fab185a33e2cd955812397354c472d2b84615b645aa135ff539f6b0d70d5 password.txt
a8fa5dd30a87bb9e3288d604eb74949c515ab66e

--

ethstore insert `ethkey generate random -s` "this is sparta"
24edfff680d536a5f6fe862d36df6f8f6f40f115

--

change-pwd <address> <old-pwd> <new-pwd> [--dir DIR] [--vault VAULT] [--vault-pwd VAULTPWD]

Change account password.

  • <address> - ethereum address, 20 bytes long
  • <old-pwd> - old account password, file path
  • <new-pwd> - new account password, file path
  • [--dir DIR] - secret store directory, It may be either parity, parity-test, geth, geth-test or a path. default: parity
  • [--vault VAULT] - vault to use in this operation
  • [--vault-pwd VAULTPWD] - vault password to use in this operation, file path
ethstore change-pwd a8fa5dd30a87bb9e3288d604eb74949c515ab66e old_pwd.txt new_pwd.txt
true

--

list [--dir DIR] [--vault VAULT] [--vault-pwd VAULTPWD]

List secret store accounts.

  • [--dir DIR] - secret store directory, It may be either parity, parity-test, geth, geth-test or a path. default: parity
  • [--vault VAULT] - vault to use in this operation
  • [--vault-pwd VAULTPWD] - vault password to use in this operation, file path
ethstore list
 0: 24edfff680d536a5f6fe862d36df6f8f6f40f115
 1: 6edddfc6349aff20bc6467ccf276c5b52487f7a8
 2: e6a3d25a7cb7cd21cb720df5b5e8afd154af1bbb

--

import [--src DIR] [--dir DIR]

Import accounts from src.

  • [--src DIR] - secret store directory, It may be either parity, parity-test, geth, geth-test or a path. default: geth
  • [--dir DIR] - secret store directory, It may be either parity, parity-test, geth, geth-test or a path. default: parity
ethstore import
 0: e6a3d25a7cb7cd21cb720df5b5e8afd154af1bbb
 1: 6edddfc6349aff20bc6467ccf276c5b52487f7a8

--

import-wallet <path> <password> [--dir DIR] [--vault VAULT] [--vault-pwd VAULTPWD]

Import account from presale wallet.

  • <path> - presale wallet path
  • <password> - account password, file path
  • [--dir DIR] - secret store directory, It may be either parity, parity-test, geth, geth-test or a path. default: parity
  • [--vault VAULT] - vault to use in this operation
  • [--vault-pwd VAULTPWD] - vault password to use in this operation, file path
ethstore import-wallet ethwallet.json password.txt
e6a3d25a7cb7cd21cb720df5b5e8afd154af1bbb

--

find-wallet-pass <path> <password>

Try to open presale wallet given a list of passwords from a file. The list of passwords can be generated using e.g. Phildo/brutedist.

  • <path> - presale wallet path
  • <password> - possible passwords, file path
ethstore find-wallet-pass ethwallet.json passwords.txt
Found password: test

--

remove <address> <password> [--dir DIR] [--vault VAULT] [--vault-pwd VAULTPWD]

Remove account from secret store.

  • <address> - ethereum address, 20 bytes long
  • <password> - account password, file path
  • [--dir DIR] - secret store directory, It may be either parity, parity-test, geth, geth-test or a path. default: parity
  • [--vault VAULT] - vault to use in this operation
  • [--vault-pwd VAULTPWD] - vault password to use in this operation, file path
ethstore remove a8fa5dd30a87bb9e3288d604eb74949c515ab66e password.txt
true

--

sign <address> <password> <message> [--dir DIR] [--vault VAULT] [--vault-pwd VAULTPWD]

Sign message with account's secret.

  • <address> - ethereum address, 20 bytes long
  • <password> - account password, file path
  • <message> - message to sign, 32 bytes long
  • [--dir DIR] - secret store directory, It may be either parity, parity-test, geth, geth-test or a path. default: parity
  • [--vault VAULT] - vault to use in this operation
  • [--vault-pwd VAULTPWD] - vault password to use in this operation, file path
ethstore sign 24edfff680d536a5f6fe862d36df6f8f6f40f115 password.txt 7d29fab185a33e2cd955812397354c472d2b84615b645aa135ff539f6b0d70d5
c6649f9555232d90ff716d7e552a744c5af771574425a74860e12f763479eb1b708c1f3a7dc0a0a7f7a81e0a0ca88c6deacf469222bb3d9c5bf0847f98bae54901

--

public <address> <password> [--dir DIR] [--vault VAULT] [--vault-pwd VAULTPWD]

Displays public key for an address.

  • <address> - ethereum address, 20 bytes long
  • <password> - account password, file path
  • [--dir DIR] - secret store directory, It may be either parity, parity-test, geth, geth-test or a path. default: parity
  • [--vault VAULT] - vault to use in this operation
  • [--vault-pwd VAULTPWD] - vault password to use in this operation, file path
ethstore public 00e63fdb87ceb815ec96ae185b8f7381a0b4a5ea account_password.txt --vault vault_name --vault-pwd vault_password.txt
0x84161d8c05a996a534efbec50f24485cfcc07458efaef749a1b22156d7836c903eeb39bf2df74676e702eacc4cfdde069e5fd86692b5ef6ef81ba906e9e77d82

--

list-vaults [--dir DIR]

List vaults.

  • [--dir DIR] - secret store directory, It may be either parity, parity-test, geth, geth-test or a path. default: parity
ethstore list-vaults
vault1
vault2
vault3

--

create-vault <vault> <password> [--dir DIR]

Create new vault.

  • <vault> - name of new vault. This can only contain letters, digits, whitespaces, dashes and underscores
  • <password> - vault password, file path
  • [--dir DIR] - secret store directory, It may be either parity, parity-test, geth, geth-test or a path. default: parity
ethstore create-vault vault3 vault3_password.txt
OK

--

change-vault-pwd <vault> <old-pwd> <new-pwd> [--dir DIR]

Change vault password.

  • <vault> - name of existing vault
  • <old-pwd> - old vault password, file path
  • <new-pwd> - new vault password, file path
  • [--dir DIR] - secret store directory, It may be either parity, parity-test, geth, geth-test or a path. default: parity
ethstore change-vault-pwd vault3 vault3_password.txt new_vault3_password.txt
OK

--

move-to-vault <address> <vault> <password> [--dir DIR] [--vault VAULT] [--vault-pwd VAULTPWD]

Move account to vault from another vault/root directory.

  • <address> - ethereum address, 20 bytes long
  • <vault> - name of existing vault to move account to
  • <password> - password of existing <vault> to move account to, file path
  • [--dir DIR] - secret store directory, It may be either parity, parity-test, geth, geth-test or a path. default: parity
  • [--vault VAULT] - current vault of the <address> argument, if set
  • [--vault-pwd VAULTPWD] - password for the current vault of the <address> argument, if any. file path
ethstore move-to-vault 00e63fdb87ceb815ec96ae185b8f7381a0b4a5ea vault3 vault3_password.txt
ethstore move-to-vault 00e63fdb87ceb815ec96ae185b8f7381a0b4a5ea vault1 vault1_password.txt --vault vault3 --vault-pwd vault3_password.txt
OK
OK

--

move-from-vault <address> <vault> <password> [--dir DIR]

Move account to root directory from given vault.

  • <address> - ethereum address, 20 bytes long
  • <vault> - name of existing vault to move account to
  • <password> - password of existing <vault> to move account to, file path
  • [--dir DIR] - secret store directory, It may be either parity, parity-test, geth, geth-test or a path. default: parity
ethstore move-from-vault 00e63fdb87ceb815ec96ae185b8f7381a0b4a5ea vault1 vault1_password.txt
OK

Parity Ethereum toolchain

This project is a part of the Parity Ethereum toolchain.

  • evmbin - EVM implementation for Parity Ethereum.
  • ethabi - Parity Ethereum function calls encoding.
  • ethstore - Parity Ethereum key management.
  • ethkey - Parity Ethereum keys generator.
  • whisper - Implementation of Whisper-v2 PoC.