* 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.
* do not cache ACL storage contract
* when error comes before initialization
* initial KeyServerSet commit
* update_nodes_set in maintain
* do not connect to self
* fixed connection establishing
* removed println
* improved KeyServerSet tracing
* moved parsing to KeyServerSet
* re-read only when blockchain is changed
* do not try to connect if not a part of cluster
* improved logging
* fixed tests
* Add checks for additional reserved ip addresses
100.64.0.0/10 and 240.0.0.0/4 are both reserved but not currently
filtered.
* Add check for special purpose addresses
192.0.0.0/24 - Used for the IANA IPv4 Special Purpose Address Registry
* Refactor ip_utils (#5872)
* Add checks for all ipv4 special use addresses
* Add comprehensive ipv4 test cases
* Refactor Ipv6 address checks (#5872)
* Refactor AllowIP (#5872)
* Add IpFilter struct to wrap predefined filter (AllowIP) with custom
allow/block filters.
* Refactor parsing of --allow-ips to handle custom filters.
* Move AllowIP/IpFilter from ethsync to ethcore-network where they
are used.
* Revert Cargo.lock
* Tests for custom ip filters (#5872)
* Add "none" as a valid argument for --allow-ips to allow narrow
custom ranges, eg.: --allow-ips="none 10.0.0.0/8"
* Add tests for parsing filter arguments and node endpoints.
* Add ipnetwork crate to dev dependencies for testing.
* Add ipv6 filter tests (#5872)
* Revert parity-ui-precompiled to master
* Fix minor detail in usage.txt (#5872)
* Spaces to tabs
* Rename IpFilter::new() to ::default()
* Small readability improvements
* Test (#5872)
* Revert "Test (#5872)"
This reverts commit 7a8906430a6dad633fe29df3dca57f1630851fa9.
I also tried unrolling the 256-iteration loop further below, but it actually caused a
slowdown (my guess is either branch prediction stopped kicking in or the instruction
cache was being maculated).
* refactor PriceInfo to use Fetch and reuse the client
* forget Fetch future to keep it running in the background
* update Debug message for price_info::Client
* wrap underlying errors in price_info client
* use debug_struct in price_info client debug implementation
* use global fetch service in price_info client
* rename gas_pricer parameter in RunCmd
* move price_info to its own crate
* fix price_info tests
* replace rustc_serialize with serde_json in price_info
* add documentation for price_info
* remove unused rustc-serialize dependency from ethcore
* fix price_info formatting
* re-export fetch crate in price_info
* remove unused cfg attributes in price_info
* add tests for price_info
* whisper skeleton
* basic message store
* rallying and message logic
* pass host info to network protocol handlers
* choose who starts rally based on node key
* module reshuffling
* mining messages
* prune messages by low PoW until below size target
* associated error type for ethkey generators and `OsRng` generator
* beginnings of RPC
* generic message handler for whisper
* reshuffle code order
* standard payload encoding and decoding
* basic crypto
* minor restructuring of net code
* implement shh_post
* merge?
* implement filters
* rand trait for hash types
* filter RPCs for whisper
* symmetric encryption of payload
* pub-sub
* filter tests
* use only secure random IDs
* attach arbitrary protocols to network
* basic integration of whisper into Parity
* eagerly prune low PoW entries
* broadcast messages with salted topics
* node info RPC
* fix import
* fix leading zeros calculation
* address minor grumbles
* Health endpoint.
* Asynchronous health endpoint.
* Configure time api URL via CLI.
* Tests for TimeChecker.
* Health indication on Status page.
* Adding status indication to tab titles.
* Add status to ParityBar.
* Fixing lints.
* Add health status on SyncWarning.
* Fix health URL for embed.
* Nicer messages.
* Fix tests.
* Fixing JS tests.
* NTP time sync (#5956)
* use NTP to check time drift
* update time module documentation
* replace time_api flag with ntp_server
* fix TimeChecker tests
* fix ntp-server flag usage
* hide status tooltip if there's no message to show
* remove TimeProvider trait
* use Cell in FakeNtp test trait
* share fetch client and ntp client cpu pool
* Add documentation to public method.
* Removing peer count from status.
* Remove unknown upgrade status.
* Send two time requests at the time.
* Revert "Send two time requests at the time."
This reverts commit f7b754b1155076a5a5d8fdafa022801fae324452.
* Defer reporting time synchronization issues.
* Fix tests.
* Fix linting.
This is a huge change, which includes some changes to replace code that
originally cloned to reuse allocations instead. The updated
`elastic-array` crate renames its consuming `Vec`-conversion method to
`into_vec`, which means that I can do a simple
`sed -i 's/to_vec/into_vec/'` and then fix the compilation errors.
This commit is probably a minor performance win and definitely a
significant readability win.
* move native_contracts ABIs to JSON files, add urlhint
* port hash-fetch to futures, fix tests
* fix dapps compilation, defer async port to later
* activate dapps server in the light client
* better formatting