* [whisper] Move needed aes_gcm crypto in-crate
In the latest `parity-crypto` release (upcoming 0.4), the aes GCM features were removed (done to remove the dependency on `ring`).
This PR adds the bare minimum crypto needed for Whisper directly to the crate itself and as those were the only features needed from `parity-crypto`, removes the dependency on that crate altogether.
* Upgrade to parity-crypto 0.4
Reverts using NonZeroU32 (introduced [here](b347599cf7)).
* Check for 0 in `args.arg_keys_iteration`
* Use beta.4
* parity-crypto 0.4.0 is released
* fix(extract `timestamp_checked_add` as lib)
* fix(whisper types): remove unused `EmptyTopics`
* fix(time-lib): feature-flag to use time-lib or std
This commit adds conditional compilation checks that falls back to `our time-lib` when
`time_checked_add` is not available in the standard library
Note, `time_checked_add` covers both `checked_add` and `checked_sub`
* fix(grumble): use cfg_attr to define rustc feature
* ethash: initial implementation of progpow
* progpow: use wrapping arithmetic
* progpow: cleanup comments
* progpow: fix keccak_f800
* progpow: reorder definitions
* progpow: general fixing
* progpow: add basic tests from geth
* progpow: generate c_dag and add test
* progpow: fix progpow_init and progpow_loop
* progpow: fix and add new test
* progpow: tabify
* progpow: add shared testvectors from geth and aleth
* progpow: add benchmarks
* progpow: don't read bytes from dag
* ethash: use criterion for progpow benchmarks
* progpow: dont borrow hash on fnv1a_hash
* progpow: don't borrow operand on progpow merge
* progpow: hardcode dag lookup function
we only support light verification anyway
* progpow: read double words directly from the dag
* progpow: inline some small functions
* progpow: remove some bounds checking from the main loop
* progpow: remove unreachable match cases
* progpow: remove bounds check in keccak_f800_round
* progpow: fix ptr::swap
* progpow: force loop unroll in keccak_f800_round
* progpow: remove unnecessary branching in progpow_loop
* progpow: force loop unroll in fill_mix
* progpow: silence unused warning
* progpow: dont run last keccak_f800_round out of the loop
rustc generates the same assembly, it unrolls the loop
* progpow: fix output of keccak_f800_short
* ethcore: support progpow in ethash engine
* ethash: fix typo
* ethcore, ethash: fix tests
* json: fix ethash spec tests
* ethash: update quick_get_difficulty for progpow
* ethash: drop light cache on progpow transition block
* ethash: fix quick_get_difficulty tests
* progpow: update to spec v0.9.0
* progpow: update to spec v0.9.1
* progpow: update to spec v0.9.2
* ethash: rename progpow benchmarks
* fix Cargo.lock bad merge
* ethash: only export modules for benchmarks
* ethash: progpow: remove unsafe unchecked indexing
* ethash: create enum for pow algorithm
* ethash: box the progpow cdag
* ethash: skip slow progpow test vectors on ci
* ethash: don't skip progpow test vectors
they don't take too long when running in release mode which is the case
for CI.
* ethash: progpow: update copyright date
Co-Authored-By: andresilva <andre.beat@gmail.com>
* ethcore: remove verification of ci-skip-tests on non-test builds
* Add function to update minimum gas price
* Update TestMinerService to handle min_gas_price changes
* Place minimum gas price test behind feature flag
* Update check for fixed gas pricer to be more explicit
* Use errors::unsupported instead of errors::request_rejected
* Add test that fails to set minimum gas price
* Fix test that should fail when setting new gas price
* Put dev dependencies behind feature flag
* Fix deadlock in set_minimal_gas_price()
* Update RPC tests with mocked error response
* Remove unnecessary cfg flag
* Remove duplicate crate imports
* Extract accounts from ethcore.
* Fix ethcore.
* Get rid of AccountProvider in test_helpers
* Fix rest of the code.
* Re-use EngineSigner, fix tests.
* Simplify EngineSigner to always have an Address.
* Fix RPC tests.
* Add deprecation notice to RPCs.
* Feature to disable accounts.
* extract accounts in RPC
* Run with accounts in tests.
* Fix RPC compilation and tests.
* Fix compilation of the binary.
* Fix compilation of the binary.
* Fix compilation with accounts enabled.
* Fix tests.
* Update submodule.
* Remove android.
* Use derive for Default
* Don't build secretstore by default.
* Add link to issue.
* Refresh Cargo.lock.
* Fix miner tests.
* Update rpc/Cargo.toml
Co-Authored-By: tomusdrw <tomusdrw@users.noreply.github.com>
* Fix private tests.
* Replace ethcore-logger with env-logger.
* Fix logger initialization in WASM tests.
* uncomment logger initialization in secret store
* Don't use ethcore-logger in whisper.
* Move ethcore-logger within parity dir.
* Uncomment rest from secret-store.
* Use `let _ =` in private_contract for consistency
* `ok()` to `let _ =` fix in service
* Use `let _ = ` for state_db
- Refactor (and rename crate) and implement RwLock len cache.
- improve docs
- update ethcore verification queue to new version
- Implement Default, From, also derive Debug
- update: parking_lot to 0.7
New util LenCachingMutex can be used in place of a Mutex, when working
with collections, or other types with a len() method. When
the Guard is dropped, the value returned from len() is stored
into an AtomicUsize and can be queried using load_len() without
needing to lock the Mutex. Implementations for ```Vec``` and
```VecDeque```.
Now used in [Verification](4ded4181a6/ethcore/src/verification/queue/mod.rs (L196)) so that calls to ```VerificationQueue.queue_info()```
no longer require locks.
* Add a dump of the state at the end of transaction for --json-test.
Also fixes json-test output on finish, and allow to put both on err or
out (--out-only and --err-only).
* Dump state resolution from trie, function behind evm-bin feature to avoid misuse.
* Rename 'slow' method to 'to_pod_full'.
Use cache first in 'to_pod_full', for in between commits case.
Change dump activation to use a function pointer instead.
* Fix tests.
* Query and add storage values to dump.
* Switch to use `require` method, even if less efficient it is better in
this case to reuse existing code.
Reuse of `storage_at` was not easy in this case (could not iterate and
use the method at the same time (refcell mutable borrow panics) so
keeping code as is.
* Switch to returning error.
Use 'base_storage_root' instead of 'storage_root'.
Added a test, it will only execute with json-test in ci, or when launch
with the feature.
* Renaming of command line parameters.
Comments fixes.
Minor code changes.
* Fix evmbin cmd parsing test.
* README update.
* Fix extra space and avoid clone call on copiable address.
* Revert test submodule.
* Revert wasm-test submodule.
* Use map_or instead of map + unwrap_or
* restore tests submodule
* Rename db_restore => client
* First step: make it compile!
* Second step: working implementation!
* Refactoring
* Fix tests
* PR Grumbles
* PR Grumbles WIP
* Migrate ancient blocks interating backward
* Early return in block migration if snapshot is aborted
* Remove RwLock getter (PR Grumble I)
* Remove dependency on `Client`: only used Traits
* Add test for recovering aborted snapshot recovery
* Add test for migrating old blocks
* Fix build
* PR Grumble I
* PR Grumble II
* PR Grumble III
* PR Grumble IV
* PR Grumble V
* PR Grumble VI
* Fix one test
* Fix test
* PR Grumble
* PR Grumbles
* PR Grumbles II
* Fix tests
* Release RwLock earlier
* Revert Cargo.lock
* Update _update ancient block_ logic: set local in `commit`
* Update typo in ethcore/src/snapshot/service.rs
Co-Authored-By: ngotchac <ngotchac@gmail.com>
* Add FIXME link for a state mod statement
* Remove unused benches feature in ethcore
* Fix evm benches compile
* Fix ethash benches compile
* Switch to criterion
* Replace `tokio_core` with `tokio`.
* Remove `tokio-core` and replace with `tokio` in
- `ethcore/stratum`
- `secret_store`
- `util/fetch`
- `util/reactor`
* Bump hyper to 0.12 in
- `miner`
- `util/fake-fetch`
- `util/fetch`
- `secret_store`
* Bump `jsonrpc-***` to 0.9 in
- `parity`
- `ethcore/stratum`
- `ipfs`
- `rpc`
- `rpc_client`
- `whisper`
* Bump `ring` to 0.13
* Use a more graceful shutdown process in `secret_store` tests.
* Convert some mutexes to rwlocks in `secret_store`.
* Consolidate Tokio Runtime use, remove `CpuPool`.
* Rename and move the `tokio_reactor` crate (`util/reactor`) to
`tokio_runtime` (`util/runtime`).
* Rename `EventLoop` to `Runtime`.
- Rename `EventLoop::spawn` to `Runtime::with_default_thread_count`.
- Add the `Runtime::with_thread_count` method.
- Rename `Remote` to `Executor`.
* Remove uses of `CpuPool` and spawn all tasks via the `Runtime` executor
instead.
* Other changes related to `CpuPool` removal:
- Remove `Reservations::with_pool`. `::new` now takes an `Executor` as an argument.
- Remove `SenderReservations::with_pool`. `::new` now takes an `Executor` as an argument.
* Add constantinople conf to EvmTestClient.
* Skip some test to update submodule etheureum/tests submodule to latest.
* Put skipping 'under issue' test behind a feature.
* Change blockReward for const-test to pass ethereum/tests
* Update tests to new constantinple definition (change of reward at block
5).
Switch 'reference' to string, that way we can include issues from others
repo (more flexible)Update tests to new constantinple definition (change
of reward at block 5).
Switch 'reference' to string, that way we can include issues from others
repo (more flexible).
* Fix modexp and bn128_mul gas prices in chain config
* Changes `run_test_path` method to append its directory results (without
that it stop testing at the first file failure).
Add some missing tests.
Add skip for those (block create2 is one hundred percent false but on
hive we can see that geth and aleth got similar issue for this item).
* retab current.json
* Update reference to parity issue for failing tests.
* new ethabi migration in progress
* parity migrated to new ethabi
* migrated secred-store to new ethabi
* bump ethabi to 6.0
* fixed review suggestions
* Make work-notify an optional feature
* More optional ethcore features: price-info, stratum
* Make ethcore features part of dependency instead of local features
* Put cfg gate in right location
* Feature gate register function on work-notify
* Bump parking_lot to 0.6
* Bump parity-wasm to 0.31 so it gets rid of parking_lot
ref https://github.com/paritytech/parity-wasm/pull/206
* Update jsonrpc versions
* Update wasmi and pwasm-utils version
* Fix compile
* Update jsonrpc crates
The `patricia_trie` crate is generic over the hasher (by way of HashDB) and node encoding scheme. Adds a new `patricia_trie_ethereum` crate with concrete impls for Keccak/RLP.
* disable hardware-wallets that don't support libusb
* address grumbles
* nits
* Refactor to get rid off as much annotations asap
* Might consume slight more memory than pure conditional compilation
flags
* formatting nits
* Enable libusb for android
* Tested by it compiling succesfully with `cargo build --target=armv7--linux-androideabi`
* The binary is ~66 MB
```bash
$ size
size target/armv7-linux-androideabi/release/parity
text data bss dec hex filename
50676230 416200 31456 51123886 30c16ae target/armv7-linux-androideabi/release/parity
```
* Move all `fake-hardware-wallet` to its own crate
* Removes some conditional compilation flags
* Introduces `fake-hardware-wallet` crate
* return error if no hardware wallets are found
* Make it possible to expose jsontests using feature flag
* Add start_stop_hook for jsontests
* Fix evmbin compile
* Implement vm jsontests times to tsv result
* Use /usr/bin/env to avoid errors on non-Debian systems
* Move evmbin/bench.sh to scripts and add vm_jsontests script for convenience
* Add tempdir as required deps for test-helpers
* Address grumbles on comments
* Detect file/folder automatically and add command docs
* Fix bench script
* times -> timings
* typo: wrong if condition
* new blooms database
* fixed conflict in Cargo.lock
* removed bloomchain
* cleanup in progress
* all tests passing in trace db with new blooms-db
* added trace_blooms to BlockChainDB interface, fixed db flushing
* BlockChainDB no longer exposes RwLock in the interface
* automatically flush blooms-db after every insert
* blooms-db uses io::BufReader to read files, wrap blooms-db into Mutex, cause fs::File is just a shared file handle
* fix json_tests
* blooms-db can filter multiple possibilities at the same time
* removed enum trace/db.rs CacheId
* lint fixes
* fixed tests
* kvdb-rocksdb uses fs-swap crate
* update Cargo.lock
* use fs::rename
* fixed failing test on linux
* fix tests
* use fs_swap
* fixed failing test on linux
* cleanup after swap
* fix tests
* fixed osx permissions
* simplify parity database opening functions
* added migration to blooms-db
* address @niklasad1 grumbles
* fix license and authors field of blooms-db Cargo.toml
* restore blooms-db after snapshot
* Mark test helpers and test-only specs as cfg(test)
* Use test-probe to conditionally compile test helpers
* Remove test probe and directly use features tag
* Consolidate crypto functionality in `ethcore-crypto`.
- Move `ecdh`/`ecies` modules to `ethkey`.
- Refactor `ethcore-crypto` to use file per module.
- Replace `subtle` with `ethcore_crypto::is_equal`.
- Add `aes_gcm` module to `ethcore-crypto`.
* Rename `aes::{encrypt,decrypt,decrypt_cbc}` ...
... to `aes::{encrypt_128_ctr,decrypt_128_ctr,decrypt_128_cbc}`.
* WIP
* Convert Ethcore error to use error_chain
* Use error_chain for ImportError and BlockImportError
* Fix error pattern matches for error_chain in miner
* Implement explicit From for AccountsError
* Fix pattern matches for ErrorKinds
* Handle ethcore error_chain in light client
* Explicitly define Result type to avoid shadowing
* Fix remaining Error pattern matches
* Fix tab space formatting
* Helps if the tests compile
* Fix error chain matching after merge
* secret_store: remove kvdb_rocksdb dependency
* cli: init db mod for open dispatch
* cli: move db, client_db, restoration_db, secretstore_db to a separate mod
* migration: rename to migration-rocksdb and remove ethcore-migrations
* ethcore: re-move kvdb-rocksdb dep to test
* mark test_helpers as test only and fix migration mod naming
* Move restoration_db_handler to test_helpers_internal
* Fix missing preambles in test_helpers_internal and rocksdb/helpers
* Move test crates downward
* Fix missing docs
* cli, db::open_db: move each argument to a separate line
* Use featuregate instead of dead code for `open_secretstore_db`
* Move pathbuf import to open_secretstore_db
Because it's only used there behind a feature gate