* parity-reactor: Pass over Handle in spawning fn to allow normal tokio ops
* Allow fetch to work with arbitrary requests
* typo: Fix missing handler closure
* miner, work_notify: use fetch and parity-reactor
* Fix work_notify pushing in parity CLI
* getting started
* wip wip
* add parsing of pool-size and enable panic-hook
* more cli options
* remove explicit unwrapping
* bump dependencies to parity-jsonrpc
* add tests
* remove tests
* bump jsonrpc
* Remove unused dependencies
* add logging to the cli
* Fix so `FilterManager` drops its resources
* Introduced an AtomicBool flag in FilterManager to cancel the `Decryption Worker Thread`
* Added some very basic test to faulty arguments
* ignore privileged port test
* Private transaction message added
* Empty line removed
* Private transactions logic removed from client into the separate module
* Fixed compilation after merge with head
* Signed private transaction message added as well
* Comments after the review fixed
* Private tx execution
* Test update
* Renamed some methods
* Fixed some tests
* Reverted submodules
* Fixed build
* Private transaction message added
* Empty line removed
* Private transactions logic removed from client into the separate module
* Fixed compilation after merge with head
* Signed private transaction message added as well
* Comments after the review fixed
* Encrypted private transaction message and signed reply added
* Private tx execution
* Test update
* Main scenario completed
* Merged with the latest head
* Private transactions API
* Comments after review fixed
* Parameters for private transactions added to parity arguments
* New files added
* New API methods added
* Do not process packets from unconfirmed peers
* Merge with ptm_ss branch
* Encryption and permissioning with key server added
* Fixed compilation after merge
* Version of Parity protocol incremented in order to support private transactions
* Doc strings for constants added
* Proper format for doc string added
* fixed some encryptor.rs grumbles
* Private transactions functionality moved to the separate crate
* Refactoring in order to remove late initialisation
* Tests fixed after moving to the separate crate
* Fetch method removed
* Sync test helpers refactored
* Interaction with encryptor refactored
* Contract address retrieving via substate removed
* Sensible gas limit for private transactions implemented
* New private contract with nonces added
* Parsing of the response from key server fixed
* Build fixed after the merge, native contracts removed
* Crate renamed
* Tests moved to the separate directory
* Handling of errors reworked in order to use error chain
* Encodable macro added, new constructor replaced with default
* Native ethabi usage removed
* Couple conversions optimized
* Interactions with client reworked
* Errors omitting removed
* Fix after merge
* Fix after the merge
* private transactions improvements in progress
* private_transactions -> ethcore/private-tx
* making private transactions more idiomatic
* private-tx encryptor uses shared FetchClient and is more idiomatic
* removed redundant tests, moved integration tests to tests/ dir
* fixed failing service test
* reenable add_notify on private tx provider
* removed private_tx tests from sync module
* removed commented out code
* Use plain password instead of unlocking account manager
* remove dead code
* Link to the contract changed
* Transaction signature chain replay protection module created
* Redundant type conversion removed
* Contract address returned by private provider
* Test fixed
* Addressing grumbles in PrivateTransactions (#8249)
* Tiny fixes part 1.
* A bunch of additional comments and todos.
* Fix ethsync tests.
* resolved merge conflicts
* final private tx pr (#8318)
* added cli option that enables private transactions
* fixed failing test
* fixed failing test
* fixed failing test
* fixed failing test
* Move client DB opening logic to CLI
* Move restoration db open logic to CLI
This adds KeyValueDBHandler which handles opening a new database, thus allow us to move the restoration db open logic
out of ethcore.
* Move rocksdb's compactionprofile conversion to CLI
* Move kvdb_rocksdb as test dependency for ethcore
* Fix tests due to interface change
* Fix service tests
* Remove unused migration dep for ethcore
* updater: refactor updater flow into state machine
* updater: delay update randomly within max range
* updater: configurable update delay
* updater: split polling and updater state machine step
* updater: drop state to avoid deadlocking
* updater: fix fetch backoff
* updater: fix overflow in update delay calculation
* updater: configurable update check frequency
* updater: fix update policy frequency comparison
* updater: use lazy_static for platform and platform_id_hash
* updater: refactor operations contract calls into OperationsClient
* updater: make updater generic over operations and fetch client
* updater: fix compilation
* updater: add testing infrastructure and minimal test
* updater: fix minor grumbles
* updater: add test for successful updater flow
* updater: add test for update delay
* updater: add test for update check frequency
* updater: mock time and rng for deterministic tests
* updater: test backoff on failure
* updater: add test for backoff short-circuit on new release
* updater: refactor to increase readability
* updater: cap maximum backoff to one month
* updater: add test for detecting already downloaded update
* updater: add test for updater disable on fatal errors
* updater: add test for pending outdated fetch
* updater: test auto install of updates
* updater: add test for capability updates
* updater: fix capability update
* updater: use ethabi to create event topic filter
* updater: decrease maximum backoff to 1 day
* updater: cap maximum update delay with upcoming fork block number
* updater: receive state mutex guard in updater_step
* updater: overload execute_upgrade to take state mutex guard
* updater: remove unnecessary clone of latest operations info
* updater: remove latest operations info clone when triggering fetch
* Use `subtle::slices_equal` for constant time comparison.
Also update the existing version of subtle in `ethcrypto` from
0.1 to 0.5
* Test specifically for InvalidPassword error.
* Very primitive test of the Client API
* [WIP] getting rid of request
* Add support for redirects.
* Remove CpuPool from `fetch::Client`.
* Adapt code to API changes and fix tests.
* Use reference counter to stop background thread.
On `clone` the counter is incremented, on `drop` decremented. Once 0 we
send `None` over the channel, expecting the background thread to end.
* Fix tests.
* Comment.
* Change expect messages.
* Use local test server for testing fetch client.
* Ensure max_size also in BodyReader.
* Replace `Condvar` with `sync_channel`.
* Re-export `url::Url` from `fetch` crate.
* Remove spaces.
* Use random ports in local test server.
* Refactor usage of registry contract
* remove unsed file
* Rename methods & fix comments
* refactor contract_client:
* Intoduced separate traits for asyncronous and syncronous contract clients
* Removed registrar from ethcore::client
* s/ContractClient/AsyncContractClient
* make the tests compile and pass
* omit changes in ethcore
* Use only one trait for ContractClient
* Use an associated type in the trait to determine syncronous or asyncronous communication
* Export the types from contract-client crate
* Document that "A" in the hash correspons to a DNS A Record A.K.A Address Record
* contract_client -> registrar
* address review feedback
* Improves `BestBlock` comment
* Improves `TraceDB` comment
* Improves `journaldb::Algorithm` comment.
Probably the whole enum should be renamed to `Strategy` or something alike.
* Comments some of the `Client`'s fields
* Deglobs client imports
* Fixes comments
* Extracts `import_lock` to `Importer` struct
* Extracts `verifier` to `Importer` struct
* Extracts `block_queue` to `Importer` struct
* Extracts `miner` to `Importer` struct
* Extracts `ancient_verifier` to `Importer` struct
* Extracts `rng` to `Importer` struct
* Extracts `import_old_block` to `Importer` struct
* Adds `Nonce` trait
* Adds `Balance` trait
* Adds `ChainInfo` trait
* Fixes imports for tests using `chain_info` method
* Adds `BlockInfo` trait
* Adds more `ChainInfo` imports
* Adds `BlockInfo` imports
* Adds `ReopenBlock` trait
* Adds `PrepareOpenBlock` trait
* Fixes import in tests
* Adds `CallContract` trait
* Fixes imports in tests using `call_contract` method
* Adds `TransactionInfo` trait
* Adds `RegistryInfo` trait
* Fixes imports in tests using `registry_address` method
* Adds `ScheduleInfo` trait
* Adds `ImportSealedBlock` trait
* Fixes imports in test using `import_sealed_block` method
* Adds `BroadcastProposalBlock` trait
* Migrates `Miner` to static dispatch
* Fixes tests
* Moves `calculate_enacted_retracted` to `Importer`
* Moves import-related methods to `Importer`
* Removes redundant `import_old_block` wrapper
* Extracts `import_block*` into separate trait
* Fixes tests
* Handles `Pending` in `LightFetch`
* Handles `Pending` in filters
* Handles `Pending` in `ParityClient`
* Handles `Pending` in `EthClient`
* Removes `BlockId::Pending`, partly refactors dependent code
* Adds `StateInfo` trait
* Exports `StateOrBlock` and `BlockChain` types from `client` module
* Refactors `balance` RPC using generic API
* Refactors `storage_at` RPC using generic API
* Makes `MinerService::pending_state`'s return type dynamic
* Adds `StateOrBlock` and `BlockChain` types
* Adds impl of `client::BlockChain` for `Client`
* Exports `StateInfo` trait from `client` module
* Missing `self` use
To be fixed up to "Adds impl of `client::BlockChain` for `Client`"
* Adds `number_to_id` and refactors dependent RPC methods
* Refactors `code_at` using generic API
* Adds `StateClient` trait
* Refactors RPC to use `StateClient` trait
* Reverts `client::BlockChain` trait stuff, refactors methods to accept `StateOrBlock`
* Refactors TestClient
* Adds helper function `block_number_to_id`
* Uses `block_number_to_id` instead of local function
* Handles `Pending` in `list_accounts` and `list_storage_keys`
* Attempt to use associated types for state instead of trait objects
* Simplifies `state_at_beginning`
* Extracts `call` and `call_many` into separate trait
* Refactors `build_last_hashes` to accept reference
* Exports `Call` type from the module
* Refactors `call` and `call_many` to accept state and header
* Exports `state_at` in `StateClient`
* Exports `pending_block_header` from `MinerService`
* Refactors RPC `call` method using new API
* Adds missing parentheses
* Refactors `parity::call` to use new call API
* Update .gitlab-ci.yml
fix gitlab lint
* Fixes error handling
* Refactors `traces::call` and `call_many` to use new call API
* Refactors `call_contract`
* Refactors `block_header`
* Refactors internal RPC method `block`
* Moves `estimate_gas` to `Call` trait, refactors parameters
* Refactors `estimate_gas` in RPC
* Refactors `uncle`
* Refactors RPC `transaction`
* Covers missing branches
* Makes it all compile, fixes compiler grumbles
* Adds casts in `blockchain` module
* Fixes `PendingBlock` tests, work on `MinerService`
* Adds test stubs for StateClient and EngineInfo
* Makes `state_db` public
* Adds missing impls for `TestBlockChainClient`
* Adds trait documentation
* Adds missing docs to the `state_db` module
* Fixes trivial compilation errors
* Moves `code_hash` method to a `BlockInfo` trait
* Refactors `Verifier` to be generic over client
* Refactors `TransactionFilter` to be generic over client
* Refactors `Miner` and `Client` to reflect changes in verifier and txfilter API
* Moves `ServiceTransactionChecker` back to `ethcore`
* Fixes trait bounds in `Miner` API
* Fixes `Client`
* Fixes lifetime bound in `FullFamilyParams`
* Adds comments to `FullFamilyParams`
* Fixes imports in `ethcore`
* Fixes BlockNumber handling in `code_at` and `replay_block_transactions`
* fix compile issues
* First step to redundant trait merge
* Fixes compilation error in RPC tests
* Adds mock `State` as a stub for `TestClient`
* Handles `StateOrBlock::State` in `TestBlockChainClient::balance`
* Fixes `transaction_count` RPC
* Fixes `transaction_count`
* Moves `service_transaction.json` to the `contracts` subfolder
* Fixes compilation errors in tests
* Refactors client to use `AccountData`
* Refactors client to use `BlockChain`
* Refactors miner to use aggregate traits
* Adds `SealedBlockImporter` trait
* Refactors miner to use `SealedBlockImporter` trait
* Removes unused imports
* Simplifies `RegistryInfo::registry_address`
* Fixes indentation
* Removes commented out trait bound
* Refactor updater to use ethabi-derive
* Grumble: do_call type alias
* Empty commit to trigger test re-run
* migration to ethabi-5.0
* migration to ethabi-5.0 in progress
* use ethabi_deriven to generate TransactAcl contract
* use ethabi_deriven to generate Registry contract
* hash-fetch uses ethabi_derive, removed retain cycle from updater, fixed#7720
* node-filter crate uses ethabi_derive to generate peer_set contract interface
* use LruCache in node-filter instead of HashMap
* validator_set engine uses ethabi_derive
* ethcore does not depend on native_contracts
* miner does no depend on native_contracts
* secret_store does not use native_contracts (in progress)
* removed native-contracts
* ethcore and updater does not depend on futures
* updated ethereum-types
* fixed all warnings caused by using new version of ethereum-types
* updated ethabi_derive && ethabi_contract to get rid of warnings
* removed another retain cycle in updater, fixed following minor version on update
* moved contracts out of native_contracts res
* updated ethabi_contract
* fixed failing test
* fixed failing test
* there is no need to create two contracts of the same kind any more
* simplify updater::ReleaseTrack conversion into u8 and add several tests for it
* applied review suggestions
* applied review suggestions
* Update Clap dependency and remove workarounds
* WIP
* Remove line breaks in help messages for now
* Multiple values can only be separated by commas (closes#7428)
* Grumbles; refactor repeating code; add constant
* Use a single Wrapper rather than allocate a new one for each call
* Wrap --help to 120 characters rather than 100 characters
* Filter-out nodes.json
* network: sort node table nodes by failure ratio
* network: fix node table tests
* network: fit node failure percentage into buckets of 5%
* network: consider number of attempts in sorting of node table
* network: fix node table grumbles
* kvdb-rocksdb: update rust-rocksdb version
* kvdb-rocksdb: mark corruptions and attempt repair on db open
* kvdb-rocksdb: better corruption detection on open
* kvdb-rocksdb: add corruption_file_name const
* kvdb-rocksdb: rename mark_corruption to check_for_corruption
* updated ethereum-types and tiny-keccak
* Updated several deps
* Updated several more dependencies
* Modify dummy file to trigger ci
* fixed update of memmap to 0.6 in ethash crate
* Fixed fetch after update to latest reqwest
* Updated jsonrpc-core with fixes for serde
* add expects in util/version/build.rs
* Move miner away from ethcore.
* Fix ethcore to use miner/transaction.
* Fix tests and warnings.
* fixed incorrect merge of the test in the documentation
* kvdb-rocksdb: update to RocksDB 5.8.8
* kvdb-rocksdb: tune RocksDB options
* Switch to level-style compaction
* Increase default block size (16K), and use bigger blocks for HDDs (64K)
* Increase default file size base (64MB SSDs, 256MB HDDs)
* Create a single block cache shared across all column families
* Tune compaction settings using RocksDB helper functions, taking into account
memory budget spread across all columns
* Configure backgrounds jobs based on the number of CPUs
* Set some default recommended settings
* ethcore: remove unused config blockchain.db_cache_size
* parity: increase default value for db_cache_size
* kvdb-rocksdb: enable compression on all levels
* kvdb-rocksdb: set global db_write_bufer_size
* kvdb-rocksdb: reduce db_write_bufer_size to force earlier flushing
* kvdb-rocksdb: use master branch for rust-rocksdb dependency
* created the dir crate in util
* moved code from ethstore/src/dir/paths.rs to dir crate
* rename dir module in ethstore to accounts_dir to distinguish it
from the dir crate
* changes after @tomusdrw on #6952
* parity-version module split from util
removed unused util deps and features
trigger buildbot again
only kvdb links rocksdb
snappy linker issues
* rm snappy
* fixed old version imports
* Update packages, pull in compiled-only repos
* Update js-precompiled to point to js-dist-paritytech
* Trigger both js & js-old builds to force update
* Update to bring scripts 100% in-sync
* use tempdir instead of devtools in kvdb-rocksdb
* use tempdir instead of devtools in migration
* use tempdir instead of devtools in ethcore-network
* fixed wrong merge
* oneshot channels instead of custom promises
* Future instead of handle_dispatch
* Even less copying
* Those explicit waits were a mistake, thanks, @tomusdrw
* No more unsafe polling
* Test for the new `is_done()` method
* Mark Futures as `#[must_use]`
* Solve most compilation warnings
* `try_ready!` is more ideomatic
* Turn spaces into tabs
* Documentation and visibility improvements
* Minor code style improvements
* Make Futures run on an explisit reactor
* Another round of code style issues
* Simplify ConfirmationReceiver type
* Flatten ConfirmationOutcome into a plain Result type
* Get rid of a separate `pending` set, it was a stupid idea
* Clarify `add_request` docs
* No need to reduce the scope of the mutex here
* separate migration from util and make its dependencies into libs:
* snappy
* kvdb
* error
* common
* renamed common -> macros
* util error does not depend on snappy module
* ethsync does not depend on util nor ethcore_error
* nibbleslice and nibblevec merged with patricia_trie crate
* removed unused dependencies from util
* util journaldb traits does not need to be public
* util_error
* fixed ethcore compile error
* ignore .swo files
* Update chain.rs
* Bump version.
* Fix RPC crate.
* Fix BoxFuture in crates.
* Compiles and passes tests!
* Get rid of .boxed()
* Fixing issues with the UI.
* Remove minihttp. Support threads.
* Reimplement files serving to do it in chunks.
* Increase chunk size.
* Remove some unecessary copying.
* Fix tests.
* Fix stratum warning and ipfs todo.
* Switch to proper branch of jsonrpc.
* Update Cargo.lock.
* Update docs.
* Include dapps-glue in workspace.
* fixed merge artifacts
* Fix test compilation.
* move common forks and parameters to common params
* port specs over to new format
* fix RPC tests
* parity-machine skeleton
* remove block type
* extract out ethereum-specific methods into EthereumMachine
* beginning to integrate Machine into engines. dealing with stale transitions in Ethash
* initial porting to machine
* move block reward back into engine
* abstract block reward logic
* move last hash and DAO HF logic into machine
* begin making engine function parameters generic
* abstract epoch verifier and ethash block reward logic
* instantiate special ethereummachine for ethash in spec
* optional full verification in verify_block_family
* re-instate tx_filter in a way that works for all engines
* fix warnings
* fix most tests, further generalize engine trait
* uncomment nullengine, get ethcore tests compiling
* fix warnings
* update a bunch of specs
* re-enable engine signer, validator set, and transition handler
* migrate basic_authority engine
* move last hashes into executedblock
* port tendermint
* make all ethcore tests pass
* json-tests compilation
* fix RPC tests: change in gas limit for new block changed PoW hash
* fix minor grumbles
* validate chainspecs
* fix broken import
* fix transaction verification for pre-homestead
* Rebase and fix compilation errors (tests not yet fixed)
* Use `debug_assert` over `assert`
* Fix tests
* Assert safety, clean up
* Fix up stale cache removal, move one assert to debug_assert
* Remove printlns
* Add licenses
* Fix benches
* Inline some no-ops in a hot loop that weren't being inlined
* Add spooky comment to make sure no-one removes the inlining annotations
* Minor cleanup
* Add option to switch between mmap and ram
* Flag ethash to use less memory when running light client
* Fix tests
* Remove todo comment (it's done)
* Replace assertion with error return
* Fix indentation
* Use union instead of `transmute`
* Fix benches
* Extract to constants
* Clean up and fix soundness holes
* Fix formatting
* Ignore missing-file errors
* Make incorrect cache size an error condition instead of a panic, remove dead code
* Fix compilation errors from rebase
* Fix compilation errors in tests
* Fix compilation errors in tests
* Copy modal from keepkey branch and generalize
The keepkey PinMatrix modal needs to be the same for Trezor, but we
should probably try to keep it general since it can be used for both.
* Add trezor communication code
This is a result of much trial-and-error and a couple of dead-ends in
how to communicate and wire everything up.
Code here is still a bit WIP with lots of debug prints and stuff.
The test works though, it is possible to sign a transaction.
* Extend the basic lib to allow Trezor
This is kind of ugly and needs some cleanup and generalization. I’ve
just copy-pasted some things to bring in the trezor wallets. I’ve also
had to add a lock to the USB API so that only one thing talks to the
USB at once.
* Add RPC plumbing needed
We need to be able to get “locked” devices from the frontend to figure
out if we’re going to display the PinMatrix or not. Then we need to be
able to send a pin to a device.
* Add logic to query backend for Trezor and display PinMatrix
There’s a bug somewhere here because signing a transaction fails if you
take too long to press the confirm button on the device.
* Change back to paritytech branch
As my fork has been merged in.
* Converting spaces to tabs, as it should be
* Incorporate correct handling of EIP-155
Turns out the Trezor was adjusting the v part of the signature, and
we’re already doing that so it was done twice.
* Some circular logic here that was incorrect
BE-encoded U256 is almost the same as RLP encoded without the
size-byte, except for <u8 sized values. What’s really done is
BE-encoded U256 and then left-trimmed to the smallest size. Kind of
obvious in hindsight.
* Resolve issue where not clicking fast enough fails
The device will not repeat a ButtonRequest when you read from it, so
you need to have a blocking `read` for whatever amount of time that you
want to give the user to click. You could also have a shorter timeout
but keep retrying for some amount of time, but it would amount to the
same thing.
* Scan after pin entry to make accepting it faster
* Remove ability to cancel pin request
* Some slight cleanup
* Probe for the correct HID Version to determine padding
* Move the PinMatrix from Accounts to Application
* Removing unused dependencies
* Mistake in copying over stuff from keepkey branch
* Simplify FormattedMessage
* Move generated code to external crate
* Remove ethcore-util dependency
* Fix broken import in test
This test is useless without a connected Trezor, not sure how to make
it useful without one.
* Merge branch 'master' into fh-4500-trezor-support
# Conflicts:
# rpc/src/v1/helpers/dispatch.rs
* Ignore test that can't be run without trezor device
* Fixing grumbles
* Avoiding owning data in RPC method
* Checking for overflow in v part of signature
* s/network_id/chain_id
* Propagating an error from the HID Api
* Condensing code a little bit
* Fixing UI.
* Debugging trezor.
* Minor styling tweak
* Make message type into an actual type
This makes the message type that the RPC message accepts into an actual
type as opposed to just a string, based on feedback. Although I’m not
100% sure this has actually improved the situation.
Overall I think the hardware wallet interface needs some refactoring
love.
* Split the trezor RPC endpoint
It’s split into two more generic endpoints that should be suitable for
any hardware wallets with the same behavior to sit behind.
* Reflect RPC method split in javascript
* Fix bug with pin entry
* Fix deadlock for Ledger
* Avoid having a USB lock in just listing locked wallets
* Fix javascript issue (see #6509)
* Replace Mutex with RwLock
* Update Ledger test
* Fix typo causing faulty signatures (sometimes)
* *Actually* fix tests
* Update git submodule
Needed to make tests pass
* Swap line orders to prevent possible deadlock
* Make setPinMatrixRequest an @action
* Refactor and port CLI from Docopt to Clap (#2066)
* Add --can-restart and --force-direct to help
* Add flag support to subc & move import/export options to subcommand
* Reorder subcommand args (put positional args last in CLI help message)
* Node-health to a separate crate.
* Initialize node_health outside of dapps.
* Expose health over RPC.
* Bring back 412 and fix JS.
* Add health to workspace and tests.
* Fix compilation without default features.
* Fix borked merge.
* Revert to generics to avoid virtual calls.
* Fix node-health tests.
* Add missing trailing comma.