* [CI] check evmbin build (#11096)
* Correct EIP-712 encoding (#11092)
* [client]: Fix for incorrectly dropped consensus messages (#11082) (#11086)
* Update hardcoded headers (foundation, classic, kovan, xdai, ewc, ...) (#11053)
* Add cargo-remote dir to .gitignore (?)
* Update light client headers: ropsten 6631425 foundation 8798209 (#11201)
* Update list of bootnodes for xDai chain (#11236)
* ethcore/res: add mordor testnet configuration (#11200)
* [chain specs]: activate Istanbul on mainnet (#11228)
* [builtin]: support multiple prices and activations in chain spec (#11039)
* [receipt]: add sender & receiver to RichReceipts (#11179)
* [ethcore/builtin]: do not panic in blake2pricer on short input (#11180)
* Made ecrecover implementation trait public (#11188)
* Fix docker centos build (#11226)
* Update MIX bootnodes. (#11203)
* Insert explicit warning into the panic hook (#11225)
* Use provided usd-per-eth value if an endpoint is specified (#11209)
* Cleanup stratum a bit (#11161)
* Add Constantinople EIPs to the dev (instant_seal) config (#10809) (already backported)
* util Host: fix a double Read Lock bug in fn Host::session_readable() (#11175)
* ethcore client: fix a double Read Lock bug in fn Client::logs() (#11172)
* Type annotation for next_key() matching of json filter options (#11192)
* Upgrade jsonrpc to latest (#11206)
* [dependencies]: jsonrpc 14.0.1 (#11183)
* Upgrade to jsonrpc v14 (#11151)
* Switching sccache from local to Redis (#10971)
* Snapshot restoration overhaul (#11219)
* Add new line after writing block to hex file. (#10984)
* Pause pruning while snapshotting (#11178)
* Change how RPCs eth_call and eth_estimateGas handle "Pending" (#11127)
* Fix block detail updating (#11015)
* Make InstantSeal Instant again #11186
* Filter out some bad ropsten warp snapshots (#11247)
* ethcore/res: activate Istanbul on Ropsten, Görli, Rinkeby, Kovan (#11068)
* ethcore/res: activate Istanbul on Ropsten block 6485846
* ethcore/res: activate Istanbul on Goerli block 1561651
* ethcore/res: use hex values for Istanbul specs
* ethcore/res: fix trailing comma
* ethcore/res: be pedantic about EIP-1283 in Petersburg and Istanbul test specs
* ethcore/res: activate Istanbul on Rinkeby block 5435345
* ethcore/res: activate Istanbul on Kovan block 14111141
* ethcore/res: fix kovan istanbul number to 0xd751a5
* cleanup json crate (#11027)
* [json]: cleanup
write something here....
* nit: commit new/moved files
* nit: remove needless features
* nits
* fix(grumbles): use explicit import `DifficultyTest`
* fix(grumbles): remove needless type hints
* fix(grumble): docs `from -> used by`
Co-Authored-By: David <dvdplm@gmail.com>
* fix(grumbles): use explicit `imports`
* fix(grumble): merge `tx` and `tx_with_signing_info`
* fix(grumbles): resolve introduced `TODO's`
* [json-spec] make blake2 pricing spec more readable (#11034)
* [json-spec] make blake2 pricing spec more readable
* [ethcore] fix compilation
* Update JSON tests to d4f86ecf4aa7c (#11054)
* new ethereum consensus tests, #10908
* Update JSON tests to 725dbc73a
This PR reverts the controversial changes of the previous PR and skips the failing tests.
Maybe I misunderstand the suggested workaround of putting the fix under `#[cfg(test)]` but it seems odd to run different code in production than we run in tests. Instead here I suggest we skip the failing tests with the argument that we do not wish to fix this issue (at least not at this time) because it does not affect us. If I am wrong, and I likely am, I look forward to hearing why and what a better approach to updating the state tests is.
Branched off https://github.com/paritytech/parity-ethereum/pull/10923
ref #10908
* Update json test commit to 1dc9d20e97165708f7db0bbf2d1a87a6b4285827
* Fail with error message
* Handle missing r, s, v params in json tests
Light cleanup of json test runner
* Include the path to the test file
* Handle new `postState` format: string or map
Sort out tests
Missing docs
* WIP
* Include test-helpers from ethjson
* Sort out new paths
* Remove dead code
* Fix warnings stemming from code called only from macros
Skip failing tests in stRevert/ and stTransactionTest/ (too course a filter!)
Docs and light touch refactorings for readability
* Skip all failing tests
* Document the single-test-skipping madness
* Update tests to latest commit on the `develop` branch
* Rename test skipping types to reflect actual purpose
* Switch to skipping individual tests in currents.json
Add some logging to help debug skipping
* Fix rpc test by curve fitting to new json test source file
* Add refs to all issues for fixing failing&skipped json tests
* Sort out the need for Clone for tests
* [json-tests] populate state from genesis pod state (#11083)
* [json-tests] populate state from genesis pod state
* [json-tests] #11075 is resolved as well
* [json-tests] #11076 hopefully too
* [json-tests] #11077🎉
* [json-tests] fix trailing comma
* Update ethcore/src/json_tests/chain.rs
Co-Authored-By: Andronik Ordian <write@reusable.software>
* Add issue numbers to TODOs
* Apply @ordians fix for wrong state_root
* Warn on invalid RLP
* Remove the `ci-skip-tests` feature
* Add support for Energy Web Foundation's new chains (#10957)
* Kaspersky AV whitelisting (#10919)
* Avast whitelist script (#10900)
* Docker images renaming (#10863)
* Remove excessive warning (#10831)
* Allow --nat extip:your.host.here.org (#10830)
* When updating the client or when called from RPC, sleep should mean sleep (#10814)
* added new ropsten-bootnode and removed old one (#10794)
* ethkey no longer uses byteorder (#10786)
* docs: Update Readme with TOC, Contributor Guideline. Update Cargo package descriptions (#10652)
* Stop breaking out of loop if a non-canonical hash is found
* include expected hash in log msg
* More logging
* Scope
* Syntax
* Log in blank RollingFinality
Escalate bad proposer to warning
* Check validator set size: warn if 1 or even number
* More readable code
* Use SimpleList::new
* Extensive logging on unexpected non-canonical hash
* Wording
* wip
* Update ethcore/blockchain/src/blockchain.rs
Co-Authored-By: Tomasz Drwięga <tomusdrw@users.noreply.github.com>
* Improved logging, address grumbles
* Update ethcore/src/engines/validator_set/simple_list.rs
Co-Authored-By: Luke Schoen <ltfschoen@users.noreply.github.com>
* Report benign misbehaviour iff currently a validator
* Report malicious behaviour iff we're a validator
* Escalate to warning and fix wording
* Test reporting behaviour
Don't require node to be part of the validator set to report malicious behaviour
* Include missing parent hash in MissingParent error
* Update ethcore/src/engines/validator_set/simple_list.rs
Co-Authored-By: Luke Schoen <ltfschoen@users.noreply.github.com>
* docs
* remove unneeded into()
Move check for parent_step == step for clarity&efficiency
Remove dead code for Seal::Proposal
* typo
* Wording
* naming
* WIP
* cleanup
* cosmetics
* cosmetics and one less lvar
* spelling
* Better loggin when a block is already in chain
* More logging
* On second thought non-validators are allowed to report
* cleanup
* remove dead code
* Keep track of the hash of the last imported block
* Let it lock
* Serialize access to block sealing
* Take a lock while sealing a block
* Cleanup
* whitespace
* WIP move errors, pod_account and state account to own crates
* Sort out dependencies, fix broken code and tests
Remove botched ethcore-error crate
* remove template line
* fix review feedback
* Remove test-only AccountDBMut::new
* Extract AccountDB to account-db
* test failure
* test failure 2
* third time's the charm
* First draft: pass the parent block header to on_close_block
* typos and cleanup
* whitespace
* Store parent in ClosedBlock as well so it can be reopen()'d
* Don't pass parent when reopening a block
* Remove the unused ancestry param
* tests: Relates to #10655: Test instructions for Readme
* Add instructions to run tests
* Update instructions to view docs
* fix: Fix link to package list
* fix: Move link to line about title of package list
* Update README.md
* fix: Replace multirust with rustup wince multirust is deprecated
* docs: Update evmbin Rust docs and code comments
* WIP: Add Response struct. Initial step using serde to serialize instead of hardcoding with JSON
* fix: Update Response struct types to be string after formatting
* fix: Fix move out of borrowed content error by cloning informant
* refactor: Change from camelcase to snake case to fix linting errors
* restore: Restore some code since now covered in separate PR #10658
* restore: Restore original Rustdocs of evmbin
* WIP
* add Clone type
* add newlines to end of json files
* remove uml file that was unintentionally commited
* rename chain spec to state test JSON fle
* remove log. fix indentation
* revert: Restore indentation now handled by separate PR #10740
* remove state test json files as moved to PR #10742
* revert changes in info.rs since covered in PR #10742
* revert changes to main.rs since covered in PR #10742
* revert newlines back to master
* revert newlines back to master2
* refactor: Rename Response to TraceData
* fix: Remove Clone and replace with lifetimes. Update tests since not ordered
* refactor: Change all json! to typed serde
* docs: Update rustdocs. Remove fixme
* fix: Add missing semicolons from printf
* fix: Change style from unwrap to expect in evmbin/src/display/json.rs
Co-Authored-By: Andronik Ordian <write@reusable.software>
* fix: Change style from unwrap to expect in evmbin/src/display/std_json.rs
Co-Authored-By: Andronik Ordian <write@reusable.software>
* revert updating module comments as will be done in separate PR #10742 instead
* review-fix: Remove useless reference
* Remove unncessary use of format macro
* Update evmbin/src/display/json.rs
Co-Authored-By: Andronik Ordian <write@reusable.software>
* refactor: Update evmbin/src/display/json.rs with serialization in set_gas success
Co-Authored-By: Andronik Ordian <write@reusable.software>
* refactor: Update evmbin/src/display/json.rs with serialization in set_gas failure
Co-Authored-By: Andronik Ordian <write@reusable.software>
* refactor: Update evmbin/src/display/std_json.rs with serialization in finish for state root
Co-Authored-By: Andronik Ordian <write@reusable.software>
* refactor: Update evmbin/src/display/std_json.rs with serialization in before_test
Co-Authored-By: Andronik Ordian <write@reusable.software>
* refactor: Update evmbin/src/display/std_json.rs with serialization for state root
Co-Authored-By: Andronik Ordian <write@reusable.software>
* refactor: Update evmbin/src/display/std_json.rs with serialization for finish success
Co-Authored-By: Andronik Ordian <write@reusable.software>
* refactor: Update evmbin/src/display/std_json.rs with serialization for finish failure
Co-Authored-By: Andronik Ordian <write@reusable.software>
* refactor: Rename structs and variables. Remove space. Simplify MessageInitial struct
* refactor: Captialize expect message
* revert to previous struct name TraceDataStateRoot
* refactor: Simplify variable for consistency
* Update accounts/ethstore/src/json/crypto.rs
Co-Authored-By: David <dvdplm@gmail.com>
Without this colon I first understood this line to refer to the `make` utility on Windows. Might be useful to fix this.
The additional whitespaces at the end are to trigger a line break.
* Better logging when backfilling ancient blocks fail
Print total blocks imported, closes#10792
* `finalize()` doesn't need Engine
Pull out call to migrated_blocks() from replace_client_db()
* More logs
* Clarify that the percentage may be misleading
* Remove replace_client_db() and replace with a straight call to restore_db()
* Include the parent_hash in UnlinkedAncientBlockChain errors
* Add a new RestorationStatus varian: Finalizing (as it can take a loooong while)
Call abort_restore() when restoration fails
* Add missing cases for new variant
* typos
* Typo and derive Debug
* Do not attempt to salvage existing blocks unless they form a complete chain back to genesis
* Fix test
* Revert "Fix test"
This reverts commit f027d4b4cb7b6c23fceec528c1711886ba9cfe4e.
* Fix test again
* Update comment
* Be careful about locks
* fix test failure
* Do not defer returning an error when the chain is broken
* Review feedback
* no hex formatting for Option
* expand parameters for pending_transactions()
* move ready_transactions content into filtered method
* apply filter based on tx_hash, sender or receiver
* call filtered transactions from RPC interface
* attempt at testing...
* replace parameters with _ on light client
* addes some comments
* removed uncompleted tests in miner.rs
* attempt at testing, needs more work...
* Formatting for ready_transactions_filtered
Co-Authored-By: Tomasz Drwięga <tomusdrw@users.noreply.github.com>
* Use map_or instead of if-let
Co-Authored-By: Tomasz Drwięga <tomusdrw@users.noreply.github.com>
* additional map_or replacement
* change receiver type to Option<Option<Address>>
* remove faulty MiningService tests, test RPC later
* remove tx hash from pending transaction filtering
* as_unsigned() method for SignedTransaction
* implement Deserialize for FilterOptions
* implement Validate for MapAccess type
* additional formatting
* directly name cover in pattern matching
* test valid vull deserialization
* test valid sender operators
* test valid receiver operators
* test valid gas operators
* test valid gas price operators
* test valid value operators
* test valid nonce operators
* additional tsets for defaults, unknown filter types, unknown operators and some renames
* move filter_options to ethcore to avoid package cycling
* adjusted function/method parameters for FilterOptions
* implement filter for sender and receiver
* implement filter for gas
* implement filter for gas price, tx value and nonce
* improve filtering implementation; use common function, use combinators
* improved documentation for FilterOptions
* small documentation adjustments
* remove warnings
* replace FilterOperator::ContractCreation with FilterOperator::Eq(None)
* implement validate_receiver
* make small changes like renames, preamble
* cleanup code according to suggestions, add docs
* small improvements like formatting and newline
* Stop breaking out of loop if a non-canonical hash is found
* include expected hash in log msg
* More logging
* Scope
* Syntax
* Log in blank RollingFinality
Escalate bad proposer to warning
* Check validator set size: warn if 1 or even number
* More readable code
* Use SimpleList::new
* Extensive logging on unexpected non-canonical hash
* Wording
* wip
* Update ethcore/blockchain/src/blockchain.rs
Co-Authored-By: Tomasz Drwięga <tomusdrw@users.noreply.github.com>
* Improved logging, address grumbles
* Update ethcore/src/engines/validator_set/simple_list.rs
Co-Authored-By: Luke Schoen <ltfschoen@users.noreply.github.com>
* Report benign misbehaviour iff currently a validator
* Report malicious behaviour iff we're a validator
* Escalate to warning and fix wording
* Test reporting behaviour
Don't require node to be part of the validator set to report malicious behaviour
* Include missing parent hash in MissingParent error
* Update ethcore/src/engines/validator_set/simple_list.rs
Co-Authored-By: Luke Schoen <ltfschoen@users.noreply.github.com>
* cleanup
* On second thought non-validators are allowed to report
* cleanup
* remove dead code
* docs: Update Readme with TOC, Contributor Guide and License sections
* docs: Simplify package descriptions in Readme
* docs: Fix typos
* docs: Update Cargo package configs adding missing descriptions
* fix: Remove machine since was accidental from diff branch. Fix contribting indentation.
* fix: Fix formatting
* remove details snippet since not code and formats badly
* review-fix: Remove duplicate description
* fix dot point formatting
* fix: Add missing description to vm package
* fix: Remove duplicate Code of Conduct and Contributor guidelines
* docs: Update Contributing for consistency with other repos
* docs: Update Readme to link to existing Code of Conduct and Contributor guidelines in .github folder
* refactor: Add missing space
* fix: Fix links to be markdown format
* review-fix: Update CONTRIBUTING.md to link to Parity Ethereum Style Guide
* docs: Fix type in .github/CONTRIBUTING.md
Co-Authored-By: David <dvdplm@gmail.com>
* docs: Fix typo in .github/CONTRIBUTING.md
Co-Authored-By: David <dvdplm@gmail.com>
* docs: Rephrase parity-clib/Cargo.toml
Co-Authored-By: David <dvdplm@gmail.com>
* review-fix: Fix whole paragraph
* review-fix: Add comment to prevent direct pushes to master branch
* review-fix: Change some rules to recommendations
* Update .github/CONTRIBUTING.md
Co-Authored-By: Tomasz Drwięga <tomusdrw@users.noreply.github.com>
* review-fix: Replace feature reduction with breaking changes dot point
* review-fix: Rephrase what to do when reviewing PR
* review-fix: Update parity-rpc package description and module rustdocs
* docs: Add missing fullstop
* review-fix: Update rustdoc section to show all packages first as default
* review-fix: Rename Parity Util to Parity Core Libraries
* review-fix: Rename readme too for the C bindings name change
* review-fix: Remove some docs since we do not teach the reader Rust
* review-fix: Wrap Parity Ethereum specific packages in a details section
* review-fix: Separate tools that are in this repo vs those that are not
* review-fix: Add link to ethabi on crates.io
* review-fix: Remove unnecessary extra line talking about pushing to master
* review-fix: Remove useless summary of parts of the rust book documentation section
* docs: Update .github/CONTRIBUTING.md to specify two reviewers required
Co-Authored-By: David <dvdplm@gmail.com>
* docs: Update README.md with simplification
Co-Authored-By: David <dvdplm@gmail.com>
* docs: Update README.md renaming to Test Runner instead of just Run
Co-Authored-By: David <dvdplm@gmail.com>
* review-fix: Remove hardware wallet from docs
* review-fix: Remove veto PR section of contributor doc
* review-fix: Change to test generator title
* Stop breaking out of loop if a non-canonical hash is found
* include expected hash in log msg
* More logging
* Scope
* Syntax
* Log in blank RollingFinality
Escalate bad proposer to warning
* Check validator set size: warn if 1 or even number
* More readable code
* Use SimpleList::new
* Extensive logging on unexpected non-canonical hash
* Wording
* Update ethcore/blockchain/src/blockchain.rs
Co-Authored-By: Tomasz Drwięga <tomusdrw@users.noreply.github.com>
* Improved logging, address grumbles
* Update ethcore/src/engines/validator_set/simple_list.rs
Co-Authored-By: Luke Schoen <ltfschoen@users.noreply.github.com>
This commit does the following:
- Prevent overflow in `verify_timestamp()` by not adding `now` to found faulty timestamp
- Use explicit `CheckedSystemTime::checked_add` to prevent potential consensus issues because SystemTime is platform
depedent
- remove `#[cfg(not(time_checked_add))]` conditional compilation
* Add a way to signal shutdown to snapshotting threads
* Pass Progress to fat_rlps() so we can abort from there too.
* Checking for abort in a single spot
* Remove nightly-only weak/strong counts
* fix warning
* Fix tests
* Add dummy impl to abort snapshots
* Add another dummy impl for TestSnapshotService
* Remove debugging code
* Return error instead of the odd Ok(())
Switch to AtomicU64
* Run cargo fix
* Optimize imports
* compiles
* cleanup
* Use Secret to store mac-key
Truncate payload properly
* cleanup
* Reorg imports
* brwchk hand waving
* Review feedback
* whitespace
* error chain is dead
* Build parity-ethereum with SSE2, SSSE3 and AES enabled
This enables the `aesni` crate for 50x faster AES crypto.
* Correct rustflag setting
* List all target triples because [target.'cfg(…)'] is broken
* whitespace
* Enable hardware aes for CI builds
* Add note about synchronizing changes
* Remove "Linker" printout
* Build artefacts to check hardware aesni
* Skip signing windows binaries
* Build windows like before
* address grumble
* Use fewer threads for snapshotting
When taking a snapshot the current default number of threads is equal to half the number of **logical** CPUs in the system. On HT enabled CPUs this value seems a bit high, e.g. 6 snapshotting threads on a 6/12 core/hyperthread CPU. Maybe a better default value is half the number of physical cores?
* fix test
* Replace error chain for network error
* Fix usages and add manual From impls
* OnDemand Error and remove remaining dependencies
* Die error_chain, die.
* DIE
* Hasta la vista, baby
* get node IP address and udp port from Socket, if not included in PING packet
* prevent bootnodes from being added to host nodes
* code corrections
* code corrections
* code corrections
* code corrections
* docs
* code corrections
* code corrections
* Apply suggestions from code review
Co-Authored-By: David <dvdplm@gmail.com>
* Stop breaking out of loop if a non-canonical hash is found
* include expected hash in log msg
* More logging
* Scope
* Syntax
* Log in blank RollingFinality
Escalate bad proposer to warning
* More readable code
* Extensive logging on unexpected non-canonical hash
* Wording
* Use Drop to shutdown stepper thread
Make period == 0 an error and remove the Option from step_service
* Remove StepService
Remove StepService and spawn the stepping thread in `Clique::new()`. Don't store the thread handle and instead trust the `AtomicBool` to signal shutdown time.
Don't check for `period > 0`: we assume a valid chainspec file.
* Don't shutdown the stepper thread at all, just let it run until exit
Also: fix a few warnings and tests
* Put kvdb_memorydb back
* Warn&exit when engine is dropped
Don't sleep too long!
* Don't delay stepping thread
* Better formatting
* Use RUSTFLAGS to set the optimization level
Cargo has a [quirk]() in how configuration settings are propagated when `cargo test` runs: local code respect the settings in `[profile.test]` but all dependencies use the `[profile.dev]` settings. Here we force `opt-level=3` for all dependencies.
* Remove unused profile settings
* Maybe like this?
* Turn off incremental compilation
* Remove colors; try again with overflow-checks on
* Use quiet CI machine
* Turn overflow checking back on
* Be explicit about what options we use
* Remove "quiet machine" override
* docker images are now built on k8s: test run
* copy check_sync.sh in build-linux job
* copy scripts/docker/hub/* in build-linux job
* removed cache var
* cleanup, no more nightly dockers
* cleanup in dockerfile
* some new tags
* removed sccsche debug log, cleanup
* no_gits, new artifacts dir, changed scripts. Test run.
* define version once
* one source for TRACK
* stop kovan onchain updates
* moved changes for two images to a new branch
* rename Dockerfile
* no need in libudev-dev
* [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
* Remove annoying compiler warnings
* Fix compiler warning (that will become an error)
Fixes https://github.com/paritytech/parity-ethereum/issues/10648
I'm not sure this fix is Good™ but rustc seems happy enough.
There's a deeper issue which may or may not be related to this: the Engine is not shutdown properly and the `StepService` thread keeps running indefinitely after Ctrl-C (so `update_sealing()` is called repeatedly for 300sec). I don't think this is related to Clique as I've seen this happen on mainnet as well, but I wonder if the effects of it are worse for a PoA network where the node can create new blocks all on its own?
* Use saturating_sub
* WIP
* Fix warning, second attempt
The idea here is to avoid using `Arc::get_mut()` (which does not work: fails every time here) and instead trust `drop()` to do the right thing.
This is a conservative change. I think this can be reformed further, e.g. by `impl Drop for StepService` and halt the thread there, or even skip `join()`ing the thread entirely and trust the `AtomicBool` to signal shutdown. I also have doubts abut the `Option<StepService>`: seems a bit much to have an `Option` there and it makes things cumbersome.
* Don't panic if extra_data is longer than VANITY_LENGTH
Seems like `extra_data().len()` can be longer than 32 (was 39 here) so this fixes that panic.
* Update ethcore/src/engines/clique/mod.rs
* docs: Update evmbin to use rustup instead of multirust
* docs: Update evmbin with Rustdocs overview, usage, comments
* review-fix: Simplify evmbin usage commands
* docs: Update evmbin Overview typo
Co-Authored-By: David <dvdplm@gmail.com>
* docs: Update evmbin Overview grammer
Co-Authored-By: David <dvdplm@gmail.com>
* docs: Update evmbin Rust comments to be lowercase
Co-Authored-By: David <dvdplm@gmail.com>
* docs: Update evmbin Rust comments to be lowercase for gas price
Co-Authored-By: David <dvdplm@gmail.com>
* docs: Update evmbin build command Rust docs
Co-Authored-By: Tomasz Drwięga <tomusdrw@users.noreply.github.com>
* review-fix: Update evmbin Overview to create release per dvdplm comment
* review-fix: Fix explanation in usage section
* review-fix: Update evmbin usage suggesting user to copy the executable to PATH or create symlink
* review-fix: Update evmbin executable in path sentence
* review-fix: Remove explaining to users how to use binaries since out of scope of docs
* Journal for private txs added
* Tests after adding logging to private tx fixed
* Logs getter and tests added
* Time and amount limit for logs added
* RPC method for log retrieving added
* Correct path name and time validation implemented
* References for parameters added, redundant cloning reworked
* References for parameters added, redundant cloning reworked
* Work with json moved to the separate struct
* Serialization test added
* Fixed build after the merge with head
* Documentation for methods fixed, redundant field removed
* Fixed error usages
* Timestamp trait implemented for std struct
* Commented code removed
* Remove timestamp source, rework serialization test
* u64 replaced with SystemTime
* Path made mandatory for logging
* Source of monotonic time added
* into_system_time method renamed
* Initialize time source by max from current system time and max creation time from already saved logs
* Redundant conversions removed, code a little bit reworked according to review comments
* One more redundant conversion removed, rpc call simplified
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.
* Fix publish docs
* this never should be forced, either way compiling previous versions will produce outdated docs
* fix array, var was moved to the group project global variables list
* Constantinople HF on POA Core
Plan Constantinople/St.Petersfork HF on POA Core network at block 8582254.
Original PR in POA repository: https://github.com/poanetwork/poa-chain-spec/pull/110
* Remove extra empty line
* allow CORS requests for Secret Store API (#10582)
* secretstore CORS: fix error with unit tests
* secretstore CORS: removed debug log
* secretstore CORS: add missing response's header
* secretstore CORS: switched to jsonrpc-server-utils for CORS validation
* sccache logs to stdout
* trace level puts it to stdout
* superhardcore
* debug log listing
* debug log listing
* no more logs in artifacts, logs are in logs window
* check if it was the file
* collect tog files
* some debug
* some more debug
* some even more debug
* upload all the logs
* change cache max size
* test with max cache size overflow
* verbose for all cargo jobs
* lower max cache size
* Rust nightly and beta test runs reintroduced
* artifacts:when: always, coz on_success is default
* sccache full log
* normal artifacts name, big cache size
* add file to test the compilation again
* another way of getting artifacts
* per-job cache
* data race tests
* is it needed to clean the working folder?
* return to common cache dir
* do not pass logs between jobs
* typo
* avoid artifacts conflict
* colored logs
* always colored logs
* proper stages
* more proper stages skip-ci
* more proper stages [skip-ci]
* shouldn't skip ci
* Fix nasty typo in NodeTable::update (add ;)
* Add limiting for NodeTable
* Add cache for NodeFilter
* Use expect instead of unwrap
* Move node in ordered_ids if it exists there in note_failure and note_success + fix expect msg
* Add comment
* Improve code style
* DRY in note_failure and note_success
* Fix nodes ordering
* Simplify match expression
* Add tests for get_index_to_insert
* Remove get_mut method from NodeTable, Add get method to NodeTable
* Fix table_last_contact_order for macos failing because of lost nanosecond precision
* Update to vanilla tx pool error
* Prevent a non ready tx replacing a ready tx
* Make tests compile
* Test ready tx not replaced by future tx
* Transaction indirection
* Use StateReadiness to calculate Ready in `should_replace`
* Test existing txs from same sender are used to compute Readiness
* private-tx: Wire up ShouldReplace
* Revert "Use StateReadiness to calculate Ready in `should_replace`"
This reverts commit af9e69c8
* Make replace generic so it works with private-tx
* Rename Replace and add missing docs
* ShouldReplace no longer mutable
* tx-pool: update to transaction-pool 2.0 from crates.io
* tx-pool: generic error type alias
* Exit early for first unmatching nonce
* Fix private-tx test, use existing write lock
* Use read lock for pool scoring
* Tx permission contract improvement
* Take in account zero gas price certification when doing transact_contract
* DRY in ServiceTransactionChecker
* Fix typos and regroup mod
* Introduce CertifiedAddressesCache
* Introduce refresh_cache for CertifiedAddressesCache
* Add CertifiedAddressesCache read and write on checking
* Refresh CertifiedAddressesCache on new imported block
* Separate ChainInfo trait and fix errors after merge
* Do not fire an error when service txes contract does not exist
* WIP: Shared certified addresses cache between miner and client + use HashMap instead of BTreeMap
* Refactor refresh_cache for ServiceTransactionChecker
* Refresh cache fixes
* Add cache read in check_address + log when cache is used + improve code
* Remove ChainInfo from ServiceTransaction dependencies
* DRY ServiceTransactionChecker
* Fix Client and Miner in tests
* Fix node_filter test
* Fix Client::new in add_peer_with_private_config
* WIP: Separated ChainNotify from ethcore trait and implemented ChainNotify for ServiceTransactionChecker
* Fix watcher test
* Revert "Merge branch 'master' into master"
This reverts commit 4e7371dc109d022efe3087defc33d827998ce648, reversing
changes made to bffd73e5fd58a516bbf404281b51cf26422e181e.
* Revert "Fix watcher test"
This reverts commit bffd73e5fd58a516bbf404281b51cf26422e181e.
* Revert "WIP: Separated ChainNotify from ethcore trait and implemented ChainNotify for ServiceTransactionChecker"
This reverts commit 6e73d1e61fa15dc10ffd4fab63df29eabe9c3b3a.
* Revert "Fix Client::new in add_peer_with_private_config"
This reverts commit ec610a30bee95588d58b79edcc9e43c2ff90f1ad.
* Revert "Fix node_filter test"
This reverts commit 06a4b2de86317c902f579e912b40de0b0fbf6d78.
* Revert "Fix Client and Miner in tests"
This reverts commit 51bbad330ea6e7bdfc1516208cc8705d5d11516d.
* Implement ServiceTransactionChecker in miner and delegate it to client + revert unnecessary changes
* Merge master
* Code improvements
* Merge branch 'master' of https://github.com/paritytech/parity-ethereum
# Conflicts:
# Cargo.lock
# ethcore/private-tx/src/lib.rs
# ethcore/src/miner/miner.rs
# ethcore/src/miner/pool_client.rs
* build android with cache!
* windows fixes
* windows fixes 2
* windows fixes 3
* windows fixes 4
* windows should have sccache variables in env variables
* Initial support sccache for win build
* show sccache stats
* cache paths for shared runners
* sccache status is in the script.
* removed windows test for now
* ethcore: add clique engine (#9981)
* fix broken sync
* correct seal fields
* ethcore: fix comment
* parity: remove duplicate params
* clique: fix whitespaces
* ethcore: fix goerli chain spec
* refactor signer_snapshot into pending/finalized state
* move close_block_extra_data after seal is applied
* refactor most of the logic into the signer_snapshot
* clique: refactor locking logic out of the consensus engine interface
* Fix jsonspec and add an unittest
* Replace space with tabs
* Unbroke sync
* Fix broken sync
* 1/2 state tracking without votes
* 2/2 implement vote tracking
* ci: use travis for goerli
* ci: setup a clique network
* ci: sync a görli node
* add clique deploy script
* ci: fix paths in clique deploy script
* ci: use docker compose
* ci: fix travis job names
* ci: fix build deps
* ci: massively reduce tests
* Revert "ci: massively reduce tests"
This reverts commit 6369f0b069ed2607a7e9f2e1d85489bacdc43384.
* ci: run cargo test directly
* ci: separate build and test stages
* ci: cache rust installation
* ci: simplify ci stages
* ci: make clique deploy script executable
* ci: shutdown goerli sync after 20min
* ci: remove slow sync stage
* ci: use timeout to finish jobs
* ci: fix build path
* ci: use absolute paths to end this confusion
* ci: add geth and parity to path
* ci: be more verbose
* ci: allow for more relaxed caching timeout
* ci: update repositories for custom ppa
* ci: fix typo in file name
* ci: fix docker compose file
* ci: add ethkey to docker
* ci: make sure deploy script is up to date with upstream
* ci: stop docker container after certain time
* ci: force superuser to update permissions on docker files
* ci: reduce run time of script to ~30 min
* ci: remove duplicate caching in travis
* remove trace statements
* clique: add more validation involving the recent signer list
* ethcore: enable constantinople for rinkeby
* ethcore: fix whitespaces in rinkeby spec
* ethcore: reformat goerli.json
* Revert "ci: remove duplicate caching in travis"
This reverts commit a562838d3d194d37f9871dcbe00b783637978f89.
* tmp commit
* another tmp commit
* it builds!
* add sealing capabilities
* add seal_header hook to allow separation of block seal/importing code paths
* clique: remove populate_from_parent.
* add panic
* make turn delay random
* initialize OpenBlock properly in 'enact'
* misc: remove duplicate lines
* misc: fix license headers
* misc: convert spaces to tabs
* misc: fix tabs
* Update Cargo.toml
* Update Cargo.toml
* Update Cargo.toml
* clique: ensure validator restores state before trying to seal
* clique: make 'state' return an Error. Make some error messages more clear
* Fix compile error after rebase & toolchain upgrade
* fix a bunch of import warnings
* Refactor code
* Fix permissions
* Refactoring syncing
* Implement full validator checks
* Refactor util functions to seperate file
* mining 1
* ethcore: add chainspec for kotti
* ethcore: rename pre-goerli configs
* ethcore: load kotti chain spec
* cli: add kotti to params
* Implement working local sealing
* making sealing & syncing work together
* Relax timestamp checking
* ethcore: prepare for the real goerli to launch
* Implement NOTURN wiggle properly & cleanupnup warnings
* Implement vote casting
* Update docs & skip signing if no signer
* Optimize step-service interval
* Record state on local sealed block
* Fix script filemode
* Cleaning up codebase
* restore enact trace logging
* Delete clique.sh and move sync.sh
* remove travis.yml
* Remove dead code
* Cleanup compile warning
* address review comments
* adding more comments and removing unwrap()
* ci: remove sync script
* Address review comments
* fix compile error
* adding better debugging for timing
* Implement an dedicated thread for sealing timing
* fix(add helper for timestamp overflows) (#10330)
* fix(add helper timestamp overflows)
* fix(simplify code)
* fix(make helper private)
* snap: official image / test (#10168)
* official image / test
* fix / test
* bit more necromancy
* fix paths
* add source bin/df /test
* add source bin/df /test2
* something w paths /test
* something w paths /test
* add source-type /test
* show paths /test
* copy plugin /test
* plugin -> nil
* install rhash
* no questions while installing rhash
* publish snap only for release
* fix(docker): fix not receives SIGINT (#10059)
* fix(docker): fix not receives SIGINT
* fix: update with reviews
* update with review
* update
* update
* Don't add discovery initiators to the node table (#10305)
* Don't add discovery initiators to the node table
* Use enums for tracking state of the nodes in discovery
* Dont try to ping ourselves
* Fix minor nits
* Update timeouts when observing an outdated node
* Extracted update_bucket_record from update_node
* Fixed typo
* Fix two final nits from @todr
* change docker image based on debian instead of ubuntu due to the chan… (#10336)
* change docker image based on debian instead of ubuntu due to the changes of the build container
* role back docker build image and docker deploy image to ubuntu:xenial based (#10338)
* Bundle protocol and packet_id together in chain sync (#10315)
Define a new `enum` where devp2p subprotocol packet ids (currently eth and par) are defined. Additionally provide functionality to query id value and protocol of a given id object.
* snap: prefix version and populate candidate channel (#10343)
* snap: populate candidate releases with beta snaps to avoid stale channel
* snap: prefix version with v*
* addressing review comments
* engine: fix copyright header
* scripts: restore permissions on sign command
* ethcore: enforce tabs
* ethcore: enforce tabs
* ethcore: enforce tabs
* addressing comments
* addressing comments
* addressing more comments
* addressing more comments
* addressing more comments
* addressing more comments
* addressing more comments
* json-spec: fix clique epoch to non-zero u64
* ci: enable travis for parity goerli
* ci: don't separate build and test step
* ci: don't run c++ tests on travis
* ci: simplify cargo test to squeeze into travis timeout
* ci: don't run tests on travis at all
* style(fixes)
* fix(add tests)
* fix(recent_signer bug)
* fix(complete all tests)
* fix(nits)
* fix(simplify asserts)
* fix(cliqueState): simplify code
* fix(nits)
* docs(comments what's need to fixed)
* fix(revert unintended changes)
* fix(tests)
* fix(logs): voting logs
* fix(readability + more logs)
* fix(sync)
* docs(add missing licens header)
* fix(log): info! -> trace!
* docs(fix nits) + fix(remove assert)
* perf(use counter instead of vec)
* fix(remove needless block in match)
* fix(faulty comment)
* grumbles(docs for tests)
* fix(nits)
* fix(revert_vote): only remove vote when votes == 0
* fix(vote counter): checked arithmetics
* fix(simplify tests)
* fix(nits)
* fix(clique): err types
* fix(clique utils): make use of errors
* fix(cleanup nits)
* fix(clique sealing): don't read state no signer
* fix(replace Vec<Signers> with BTreeSet<Signers>)
* fix(tests): BTreeSet and more generic helpers
* fix(nits)
* fix(ethcore_block_seal): remove needless `Box`
* fix(faulty log): info -> trace
* fix(checked SystemTime): prevent SystemTime panics
* style(chain cfg): space after `:`
* style(fn enact): fix whitespace
* docs(clique): StepService
* docs(nit): fix faulty comment
* docs(fix typo)
* style(fix bad indentation)
* fix(bad regex match)
* grumble(on_seal_block): make `&mut` to avoid clone
* docs(on_seal_block): fix faulty documentation
* Delete .travis.yml
* docs: remove eth hf references in spec
* Update client.rs
* fix(nits)
* fix(clique step): `RwLock` -> `AtomicBool`
* fix(clique): use `Duration::as_millis`
* Clean up some Clique documentation
* Add trace information to eth_estimateGas (#10519)
* Add trace information to eth_estimateGas
* replace unwrap better version
* change vm::Error formatter to more user-friendly
* remove extra error format
* use map_or instead sequence of map/unwrap_or
* fix(light/on_demand): extract as a trait
* fix(grumble): OnDemand remove needless trait bound
* Update to vanilla tx pool error
* private-tx: remove error-chain, implement Error, derive Display
* private-tx: replace ErrorKind and bail!
* private-tx: add missing From impls and other compiler errors
* private-tx: use original tx-pool error
* Don't be silly cargo
* Add trace information to eth_estimateGas
* replace unwrap better version
* change vm::Error formatter to more user-friendly
* remove extra error format
* use map_or instead sequence of map/unwrap_or
* fix(rpc): fix a bunch of clippy lints
* fix(rpc clippy): remove unused ignored lints
* fix(clippy): fix all redundant_field_names
This commit fixes all uses of `redundant_field_names` and removes the ignored lint `redundant_field_names`
* fix(brain unwrap): replace with expect
* whisper/cli: add p2p port and ip parameters
This is so that those params don't change randomly and are in sync with the URL that
is displayed.
* feedback: Result instead of panic
Co-Authored-By: gballet <gballet@gmail.com>
* feedback: Map error in port conversion
Co-Authored-By: gballet <gballet@gmail.com>
* whisper/cli: User can specify enode private key
So that the enode doesn't change at every run.
* whipser/cli: finish integrating review feedback.
* Accomodate error API change
* Update rustc-hex version in whisper/cli/Cargo.toml
Co-Authored-By: gballet <gballet@gmail.com>
* Update README with new whisper cli options
* Fix typo in error message
Co-Authored-By: gballet <gballet@gmail.com>
* Fix Cargo.lock and build issue after lib version upgrade
* Fix another typo
Co-Authored-By: gballet <gballet@gmail.com>
* 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
* _old codebase_ before docker update
* before docker update, testing runnr
* docker update, testing the caching
* distributed job cargo homes
* distributed job cargo homes 2
* distributed job cargo homes 3
* dockerfile with gitlab checkout, audit uses template
* dockerfile gets repo in volume
* change builds_dir
* trying docker cache for repo
* repo cached automatically
* after script is not concatenated
* check sccache non-cacheable reasons nature
* watch cache
* log sccache
* log sccache 2
* debug log sccache
* fix debug log sccache
* fix debug log sccache 2
* debug log cache 3
* debug log cache 3
* trace log all sccache
* test wo cargo cache
* test w removed cargo cache
* report non-cacheable reasons, cargo cache is back and empty
* report non-cacheable reasons, cargo cache is back and empty 2
* report non-cacheable reasons, cargo cache is back and empty 3
* wrap into after_script
* restore CI tags
`qa` -> `linux-docker`
* return to main runners, this will fail until config on runners And Dockerfile won't be updated
* typo fix CI lint
* return to docker tag
* tests splitted, phase 1
* typo
* fix wrong launch commands
* typos
* rearrangements
* use `nproc` function for threads
* use nproc for threads
* let theads be auto, build-andriod no more in regular run
* split val chain and cargo check
* renamed some files
* wrong phase
* check rust files before test jobs
* lint error
* rust files modivied var
* test except changes
* add rust_changes except
* lint error
* fixes
* .gitlab-ci.yml can't be excluded
* pipeline shouldn't start
* pipeline must go
* pipeline must go 2
* pipeline must go 3
* pipeline must go 4
* pipeline must go 5
* pipeline must go 6
* pipeline must go 7
* pipeline must not go 1
* pipeline must go 8
* avoid skippng tests yet, reintroducing them after the caching
* test theory
* parallelized cargo check with combusting helicopters
* less uploads
* alias for cargo checks
* nice template
* Updating the CI system with the publication of releases and binary files on github
Signed-off-by: Denis S. Soldatov aka General-Beck <general.beck@gmail.com>
* move publish aws from gitlab.yml to gitlab scripts
Signed-off-by: Denis S. Soldatov aka General-Beck <general.beck@gmail.com>
* gitlab.yml cleaning
move publish AWS to gitlab scripts
remove dependencies from android build
Signed-off-by: Denis S. Soldatov aka General-Beck <general.beck@gmail.com>
* Revert "Updating the CI system with the publication of releases and binary files on github"
This reverts commit da87e06f2e4751dbca08a898b52926aef5ad0aba.
* remove no-git for aws
* microfix
* no need in no_git then
* snap: reenable i386, arm64, armhf architecture publishing
* gitlab: fix indent
* gitlab: fix yml syntax
* Linker for crosscomile
* fix target to linker
* new docker image
* fix lint, add build to this PR
* calc SHA3 using rhash
* add new images for i386, armhf
* show snap target & artifacts
* set CARGO_TARGET for publish snap
* move detect Version to publish snap
* rm libc6 dep from snap-template up pub-snap script
* clean up cargo config before add linker
* move linker config to docker images
* 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
Define a new `enum` where devp2p subprotocol packet ids (currently eth and par) are defined. Additionally provide functionality to query id value and protocol of a given id object.
* Don't add discovery initiators to the node table
* Use enums for tracking state of the nodes in discovery
* Dont try to ping ourselves
* Fix minor nits
* Update timeouts when observing an outdated node
* Extracted update_bucket_record from update_node
* Fixed typo
* Fix two final nits from @todr
* 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
* fix(remove needless unsafe blocks)
* style(nits)
* fix(parity-clib): eliminate repetitive event loops
* revert(java bindings): safe rust -> unsafe rust
These functions can still end up with `UB` thus should be unsafe
* fix(grumbles): make Callback trait `pub (crate)`
* fix(light-rpc): Make `light_sync` generic
The motivation behind this change is to easily mock `light-sync` to make it possible to enable `rpc-integration` tests
for the light-client.
Currently the `rpc's` requires the concrete type `sync::LightSync` which makes it very hard to do so
* fix(bad merge)
* Make the specification of the protocol to which a packet_id belongs to
explicit when calling "SyncRequester::send_packet".
* Remove "SyncIO::send" and leave only "SyncIO::send_protocol"
* Adapt tests to new code.
* Strengthen tests to check if packet_id and protocol match when sending
a devp2p packet.
* CI optimizations
* fix stripping
* new dockerfile
* no need n submodule upd
* review
* moved dockerfile
* it becomes large
* onchain update depends on s3
* fix dependency
* fix cache status
* fix cache status
* new cache status
* Increase the number of block bodies requested during Sync.
* Increase the number of block bodies requested during Sync.
* Check if our peer is an older parity client with the bug
of not handling large requests properly
* Add a ClientVersion struct and a ClientCapabilites trait
* Make ClientVersion its own module
* Refactor and extend use of ClientVersion
* Replace strings with ClientVersion in PeerInfo
* Group further functionality in ClientCapabilities
* Move parity client version data from tuple to its own struct.
* Implement accessor methods for ParityClientData and remove them
from ClientVersion.
* Minor fixes
* Make functions specific to parity return types specific to parity.
* Test for shorter ID strings
* Fix formatting and remove unneeded dependencies.
* Roll back Cargo.lock
* Commit last Cargo.lock
* Convert from string to ClientVersion
* * When checking if peer accepts service transactions just check
if it's parity, remove version check.
* Remove dependency on semver in ethcore-sync
* Remove unnecessary String instantiation
* Rename peer_info to peer_version
* Update RPC test helpers
* Simplify From<String>
* Parse static version string only once
* Update RPC tests to new ClientVersion struct
* Document public members
* More robust parsing of ID string
* Minor changes.
* Update version in which large block bodies requests appear.
* Update ethcore/sync/src/block_sync.rs
Co-Authored-By: elferdo <elferdo@gmail.com>
* Update util/network/src/client_version.rs
Co-Authored-By: elferdo <elferdo@gmail.com>
* Update util/network/src/client_version.rs
Co-Authored-By: elferdo <elferdo@gmail.com>
* Update tests.
* Minor fixes.
* 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.
* Make check_epoch_end_signal to only use immutable data
* Move check_epoch_end_signals out of commit_block
* Make check_epoch_end_signals possible to fail
* Actually return the error from check_epoch_end_signals
* Remove a clone
* Fix import error
* Add missing step for Using `systemd` service file
Copy Parity release from target folder to bin, write `cp -R ./target/release/parity /usr/bin/` to match `ExecStart=/usr/bin/parity --config /etc/parity/config.toml` from `https://github.com/paritytech/parity-ethereum/blob/master/scripts/parity.service`
* Copy release to bin folder using sudo install
`sudo install ./target/release/parity /usr/bin/parity`
* Patch available private contracts during private transaction
* Key acl ABI added
* Work with secret store keys moved to the separate struct
* Private tx test refactored
* Revert "Private tx test refactored"
This reverts commit 476c132d692c7a886bc7b7cd7fe47b3d7692bd63.
* Test for calling private contract from another one added
* Test fixed
* Redundant tab removed
* ACL contract processing fixed, test added
* Merge with head
* Expect replaced with closure
* Use jsonrpc crates on local path
* Convert all RPC traits to use jsonrpc-derive
* Use local jsonrpc at top level
* Upgrade remaining jsonrpc dependencies
* Checkout Cargo.lock to master HEAD
* Use jsonrpc-* 10.0.1 from crates.io
* Attribute after docs
* prevent silent errors in daemon mode
* change author in Cargo.toml, add preamble to pipe.rs
* set the uid and gid on daemon process, fix permission errors when writing to pid file
* call setup_logger before daemonize to prevent crashing when attempting to create logfile
* map_err for calls to splice and ioctl, fix spaces in Cargo.toml
* split out daemonize to own repo
* removed util/daemonize
* renamed dep to parity-daemonize
* fix(parity-clib): enable `logger`
* bump parity-daemonize
* remove obsolete comment
Co-Authored-By: seunlanlege <seunlanlege@gmail.com>
* fix(grumbles): docs and log in ParityParams
* Add FIXME comment regarding @tomaka grumbles
* Unify logger with the C-API in ParityParams (less type-safety with more from_raw() conversions)
* Add better documentation in the `parity.h`
* Apply suggestions from code review
Co-Authored-By: seunlanlege <seunlanlege@gmail.com>
* docs(parity lib): add link to logging issue
* fix(parity-clib): JNI enable `logger`
* fix(parity-clib): update `Java example`
* Update example to the API changes
* Remove needless printouts which can be controlled via logger instead
* Switch to non prefixed malloc_size_of on macos
* Fix
* Testing darwin build
* Fix import
* conflict
* switch heapsize deps commit
* switch heapsize commit
* Rename branch
* Restore gitlab ci to origin
* test for mac
* mac tests?
* Switch of macos CI tests.
* Allow specifying local accounts via CLI
* Add `tx-queue-locals` CLI option
* ethcore: modify miner to check options vec before importing transaction
* modify tests (ethcore/parity)
Resolves#9634
* fix formatting
* fixes: Make prefer HashSet over Vec<>, add test, comment formatting
* Update ethcore/src/miner/miner.rs
Co-Authored-By: insipx <aplaza@liquidthink.net>
* Fix comments and add helper for set->vec conversion
* remove blank line from use statement
* fix helper test
* formatting
* fix test to pass on nightly
* revert test fix for nightly
* Tx permission contract improvement
* Take in account zero gas price certification when doing transact_contract
* DRY in ServiceTransactionChecker
* Fix typos and regroup mod
* Fix imports
* Simplify code in struct instantiation
Co-Authored-By: VladLupashevskyi <vlad@lupashevskyi.com>
* fix(ManageNetwork): replace Range -> RangeIncls
Fixes `TODO: Range should be changed to RangeInclusive once stable (https://github.com/rust-lang/rust/pull/50758)`
* fix(tests)
* fix(grumbles): off-by-one error in debug_asserts
* RangeInclusive::end() is inclusive which means that if start and end is equal the `debug_assert(range.end() >
range.start()` will fail which is shouldn't
* Remove re-export of `CallContract` and `RegistryInfo` from `ethcore/client`
* Remove CallContract and RegistryInfo re-exports again
This was missed while fixing merge conflicts
* docs: move 2.2 changelog to docs/
* docs: mark parity 2.1 end of life
* docs: add changelog for 2.1.11
* docs: add changelog for 2.2.6
* docs: add changelog for 2.2.7
* docs: add changelog for 2.3.0
* docs: add release notes for 2.3.0
* added BlockChainReset trait, client impl, and cli interface
* show block hashes to be deleted and new best block, update best block in db, better cli interface
* delete BlockNumber from COL_EXTRA
* add TODO comment
* add BlockReciepts to imports
* refactor block_headers_from_best_block, better cli documentation
* exit gracefully if reset arg isn't supplied
* fix cli usage macro
* removed stray int literals
* use Vec::with_capacity
Co-Authored-By: seunlanlege <seunlanlege@gmail.com>
* cast n to usize
* correct imports
* make db reset arg required
* Add is_base_storage_root_unchanged
* Fix compile, use a shortcut for check, and remove ignored tests
* Add a warn!
* Update ethereum/tests to v6.0.0-beta.2
* grumble: use {:#x} instead of 0x{:x}
Co-Authored-By: sorpaas <accounts@that.world>
* align with docs
> If permanent unlocking is disabled (the default) then the duration argument will be ignored, and the account will be unlocked for a single signing.
Current behaviour throws an error that is no longer relevant.
* fix test
* Change back to throwing error
* Fix test again
* formatting
* oops
* whitespace fixes
currently trace_filter can't return failed contract creation transaction
but trace_block can query the failed contract creation transaction.it
because the logic of parity-ethereum/ethcore/src/trace/types/filter.rs
Line 109 in 9982eba
```
_ => false
```
this patch correct the logic:
```
_ => self.to_address.matches_all()
```
Signed-off-by: Deshi Xiao <xiaods@gmail.com>
* Fix off-by-one error on `leading_zeros` which was used to index in the hash to get leading zeros when not aligned on byte boundary (i.e, all the bits in a byte was not zero such as 0001 1111)
* Fix overflow by shifting with bigger value than 63
* Make sure parent block is not in importing queue when importing ancient blocks
* Clear queue when an ancient import fails
* Lock only once in clear
* Add comments why queued check is needed
* Should push the value back to the queue
* Directly check in chain.read()
* Remove extra empty line
* Revert unused verification change
* 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
* publish docs changes for autogen config docs
* Update publish-docs.sh
adding an environment variable so js knows not to download git master and just grab the local repo
* Update publish-docs.sh
made some changes making this unnecessary
* fix env variable
env variable passes to node properly now
* use yarn
* test pipeline, revert me
* fix test pipeline, revert me
* change runner tag
* change runner tag 2
* change runner tag
* global git config
* supress upload_files output
* Update .gitlab-ci.yml
reverting testing changes
* Replace tag if exists
Very unlikely to be important/useful
* Add private tx enabled flag into status packet
* Error log added for the case with no peers available
* Add flag only for supported protocol versions
* Work with private handler refactored
* Log target changed
* Cargo.lock updated
* ethcore: update hardcoded headers for foundation
* ethcore: update hardcoded headers for ropsten
* ethcore: update hardcoded headers for kovan
* ethcore: use consistant formatting
* ethcore: restore spaces after colon in chain spec
* ethcore: fix bootnodes in chain specs
* ethcore: fix bootnodes in chain specs
* ethcore: enforce newline at the end of chainspecs
* fix#10125
fix service transaction version detection if --identity is enabled, change test to match how --identity actually works
* fix wrong var
* get the index of v, not /
* idx, not idx.len()
* Update ethcore/sync/src/chain/propagator.rs
Co-Authored-By: joshua-mir <43032097+joshua-mir@users.noreply.github.com>
* Update ethcore/sync/src/chain/propagator.rs
Co-Authored-By: joshua-mir <43032097+joshua-mir@users.noreply.github.com>
* change version prefix to a const
* space
Co-Authored-By: joshua-mir <43032097+joshua-mir@users.noreply.github.com>
* support for keystore format produced by pyethereum lib + some debug msgs
* made salt unbound also for Scrypt
* made address optional and skip if its none
* ignore values of any type, not just i32
* WIP: local deps
* cleanup
* enable optional address + more cleanup
* yet another cleanup
* enable keystore wo address import (using passwd)
* cleanup
* doc enchancement
* parity/account fix
* redesign after review
* fix indentation
* ignore just version in json under crypto
* remove unnecessary borrowing within match str
Co-Authored-By: tworec <tworec@golem.network>
* remove another unnecessary borrowing
Co-Authored-By: tworec <tworec@golem.network>
* default derived instead of implementing
* log dependency removed
* [ethstore] warn restored + env_logger initialized in CLI
* applied suggestion from @tomusdrw
* feat(parity-clib asynchronous rpc queries)
* feat(seperate bindings for ws and rpc)
* Subscribing to websockets for the full-client works
* feat(c binding unsubscribe_from_websocket)
* fix(tests): tweak CMake build config
* Enforce C+11
* refactor(parity-cpp-example) : `cpp:ify`
* fix(typedefs) : revert typedefs parity-clib
* docs(nits)
* fix(simplify websocket_unsubscribe)
* refactor(cpp example) : more subscriptions
* fix(callback type) : address grumbles on callback
* Use it the example to avoid using global variables
* docs(nits) - don't mention `arc`
* fix(jni bindings): fix compile errors
* feat(java example and updated java bindings)
* fix(java example) : run both full and light client
* fix(Java shutdown) : unsubscribe to sessions
Forgot to pass the JNIEnv environment since it is an instance method
* feat(return valid JString)
* Remove Java dependency by constructing a valid Java String in the callback
* fix(logger) : remove `rpc` trace log
* fix(format)
* fix(parity-clib): remove needless callback `type`
* fix(parity-clib-examples) : update examples
* `cpp` example pass in a struct instead to determines `callback kind`
* `java` add a instance variable the class `Callback` to determine `callback kind`
* fix(review comments): docs and format
* Update parity-clib/src/java.rs
Co-Authored-By: niklasad1 <niklasadolfsson1@gmail.com>
* fix(bad merge + spelling)
* fix(move examples to parity-clib/examples)
* refactor(hardware-wallet) - use only one thread
This changes parity to use one thread instead of two to subscribe USB
events via the hardware-wallets.
* Fix logs and tests
* fix(grumbles) : formatting and spelling nits
* Update hw/src/lib.rs
Co-Authored-By: niklasad1 <niklasadolfsson1@gmail.com>
* Update hw/src/lib.rs
Co-Authored-By: niklasad1 <niklasadolfsson1@gmail.com>
* Update hw/src/ledger.rs
Co-Authored-By: niklasad1 <niklasadolfsson1@gmail.com>
* fix(grumbles): clarify docs and use constants
* Clarify bad explaination of `run-to-completion`
* Replace magic numbers with constants
Fix: new blocks notifications sometimes missing in pubsub RPC
Implement new struct to pass to `new_blocks()` with extra parameter - `has_more_blocks_to_import`, which was previously used to determine whether the notification should be sent. Now it's up to each implementation to decide what to do.
Updated all implementations to behave as before, except `eth_pubsub`, which will send notification even when the queue is not empty.
Update tests.
* Fill transaction hash on ethGetLog of light client. This is enifficient
but we keep align with spec.
* Using better variables names.
* Expose old fast light get log as `parity_getLogsLight`.
* Update rpc/src/v1/helpers/light_fetch.rs
Fix indent.
Co-Authored-By: cheme <emericchevalier.pro@gmail.com>
* Factor common code between light_logs and logs.
* Remove useless check
* Rename parity light logs to 'parity_getLogsNoTransactionHash'.
Fix indent and extra white lines.
* Use vec instead of tree map to avoid inner function.
* better loop
- 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
* ethcore: change blockreward to 2e18 for foundation after constantinople
* ethcore: delay diff bomb by 2e6 blocks for foundation after constantinople
* ethcore: enable eip-{145,1014,1052,1283} for foundation after constantinople
If system uptime is less than the duration in the test, thread
will panic due to: 'overflow when subtracting duration from instant'.
Changed duration to 20 seconds to make it unlikely the test will
fail due to this condition.
Since no operations that carry a similar risk of panic occur outside
of the tests, it doesn't seem warranted to depend on an external crate
to fix this.
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.
* Version and notification for private contract wrapper added
* Error handling improved
* Style for comments in file fixed
* TODO issue added into comments
* closes#7009
adds parity_verifySignature RPC method
* removed unneccesary into
* adds support for chain replay protected signatures
* corrected chain replay protection check
* corrected possible overflow
* added tests
* use checked_sub to prevent possible overflow
* use saturating_mul to prevent possible overflow
* changed method signature to accept r,s,v components
* added unit tests
* more tests
* refactored tests for better readability
moved verify_signature tests to live in the same file.
* removed unneccesary imports
* fixed PR grumbles
* fixed rsv notation
* fixed rsv notation
* renamed BasicAcount to RecoveredAccount, Support zero chain_id
* fixed compile errors
* fixed tests
* doc comment
* Add deny_unknown_fields to chainspec
* Add tests and fix existing one
* Remove serde_ignored dependency for chainspec
* Fix rpc test eth chain spec
* Fix starting_nonce_test spec
* 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`
* 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
* Remove the independent runtimes from `KeyServerHttpListener` and
`KeyServerCore` and instead require a `parity_runtime::Executor`
to be passed upon creation of each.
* Remove the `threads` parameter from both `ClusterConfiguration` structs.
* Implement the `future::Executor` trait for `parity_runtime::Executor`.
* Update tests.
- Update the `loop_until` function to instead use a oneshot to signal
completion.
- Modify the `make_key_servers` function to create and return a runtime.
* 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
* feat + fix: Missing blocks in filter_changes RPC
* Implement validity check of reported hashes (in case of re-org) and re-set last_block to the last block reported that is still valid.
* Add const to set history size for validity check (32).
* test: in the case of a re-org we get same block number if hash is different
* 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>
* fix start_gas, handle OOG exceptions & NotEnoughGas
* Change START_GAS: 50_000 -> 60_000
* When the `OutOfGas exception` is received then try to double the gas until it succeeds or block gas limit is reached
* When `NotEnoughBasGas error` is received then use the required gas provided in the response
* fix(light-fetch): ensure block_gas_limit is tried
Try the `block_gas_limit` before regard the execution as an error
* Update rpc/src/v1/helpers/light_fetch.rs
Co-Authored-By: niklasad1 <niklasadolfsson1@gmail.com>
* added sign_191 rpc method
* fixed hash_structured_data return type
* added ConfirmationPayload::SignMessage for non-prefixed signatures, added tests for sign191
* renamed WithValidator -> PresignedTransaction
* rename applicationData to data in test
* adds docs for EIP191Version, renamed SignRequest to EIP191SignRequest
* ethcore: use Machine::verify_transaction on parent block
also fixes off-by-one activation of transaction permission contract
* ethcore: clarify call to verify_transaction
* 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
* Update test reference.
Block test are really not working so I disabled a few by commenting
directly in source.
* Move ethtest commit cursor.
* Implements 'NoProof' engine from https://github.com/ethereum/tests/issues/464 .
Since tests has been regenerated those one were failing on block
difficulty check.
Update ethereum/tests, waiting for cost fix (block test are still
commented).
* Update tests submodule reference to latest (all test passing except an
identified case).
Fix block reward of constantinople json.
* Restore broken test by using old json tests files.
* Use CanonNoSeal instead of a custom engine, still have to include some
additional tests code.
* Gas upper limit check in json_chain test was bad, moving the test to
verification, the test is running in `verify_header_param`.
Note that test was previously only for ethash, and now for any engine.
* Restore old behavior (gas uper limit only for ethash engine), at the
cost of an additional trait method.
* Proper rpc test fix.
* Update tests submodule, add SStore bug tests.
* Fix json issue tabulation.
Update tests submodule to latest master (lot of new sstore tests
passing)
* Switch ethereum/tests to tag 6.0.0-beta.1 (no tests changes from latest
synch).
* Display hex with separator, use indirection instead of clone for copy
types.
* Fixing and disabling some tests for windows 10 compatibility.
* Few adjustment for windows in tests (eg bigger timeout for keyserver tests)
* Spaces and temporary single thread ci (to be able to spot the error).
* Clean up serde rename and use rename_all = camelCase when possible
* snake_case for pricing
* Use camelcase for engine
* Use camel case for seal
* Use camel case for validator set
* Use camel case for confirmation payload
* Use camel case for consensus status
* Use camel case for nodekind
* Use kebab case for provenance
* Use camel case for pubsub
* Use lowercase and camelcase for trace
* Use camel case for whisper
* rename Ethash as irregular name
* 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
* aura: emit ancestry actions for finalizing blocks
* aura: refactor is_epoch_end to get finalized blocks as argument
* ethcore: add is_epoch_end_light method to Engine
The full client now tracks finality by querying the engine on each block import,
and it also persists the finalization state to the DB. For the light client
current it doesn't persist finality information and only keeps track of finality
for epoch signals, by calling `is_epoch_end_light`. This method implements the
previously existing logic of building finality for all the blocks in the current
epoch and then checking the finalized blocks against the transition store.
* ethcore: allow finalizing current block
* aura: fix construction of finality proof
* aura: fix warnings
- missing docs for is_epoch_end_light
- unused method unfinalized_hashes in RollingFinality
* aura: fix clone on copy types
* If no subchain heads then try a different peer
* Add log when useless chain head
* Restrict ChainHead useless peer to ancient blocks
* sync: replace `limit_reorg` with `block_set` condition
* 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.
* 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.
* 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.
* 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 signed refund
* Use signed 256-bit integer for sstore gas refund substate
* Fix tests
* Remove signed mod and use i128 directly
* Fix evm test case casting
* Fix jsontests ext signature
* Log block set in block_sync for easier debugging
* logging macros
* Match no args in sync logging macros
* Add QueueFull error
* Only allow importing headers if the first matches requested
* WIP
* Test for chain head gaps and log
* Calc distance even with 2 heads
* Revert previous commits, preparing simple fix
This reverts commit 5f38aa885b22ebb0e3a1d60120cea69f9f322628.
* Reject headers with no gaps when ChainHead
* Reset block sync download when queue full
* Simplify check for subchain heads
* Add comment to explain subchain heads filter
* Fix is_subchain_heads check and comment
* Prevent premature round completion after restart
This is a problem on mainnet where multiple stale peer requests will
force many rounds to complete quickly, forcing the retraction.
* Reset stale old blocks request after queue full
* Revert "Reject headers with no gaps when ChainHead"
This reverts commit 0eb865539e5dee37ab34f168f5fb643300de5ace.
* Add BlockSet to BlockDownloader logging
Currently it is difficult to debug this because there are two instances,
one for OldBlocks and one for NewBlocks. This adds the BlockSet to all
log messages for easy log filtering.
* Reset OldBlocks download from last enqueued
Previously when the ancient block queue was full it would restart the
download from the last imported block, so the ones still in the queue would be
redownloaded. Keeping the existing downloader instance and just
resetting it will start again from the last enqueued block.:wq
* Ignore expired Body and Receipt requests
* Log when ancient block download being restarted
* Only request old blocks from peers with >= difficulty
https://github.com/paritytech/parity-ethereum/pull/9226 might be too
permissive and causing the behaviour of the retraction soon after the
fork block. With this change the peer difficulty has to be greater than
or euqal to our syncing difficulty, so should still fix
https://github.com/paritytech/parity-ethereum/issues/9225
* Some logging and clear stalled blocks head
* Revert "Some logging and clear stalled blocks head"
This reverts commit 757641d9b817ae8b63fec684759b0815af9c4d0e.
* Reset stalled header if useless more than once
* Store useless headers in HashSet
* Add sync target to logging macro
* Don't disable useless peer and fix log macro
* Clear useless headers on reset and comments
* Use custom error for collecting blocks
Previously we resued BlockImportError, however only the Invalid case and
this made little sense with the QueueFull error.
* Remove blank line
* Test for reset sync after consecutive useless headers
* Don't reset after consecutive headers when chain head
* Delete commented out imports
* Return DownloadAction from collect_blocks instead of error
* Don't reset after round complete, was causing test hangs
* Add comment explaining reset after useless
* Replace HashSet with counter for useless headers
* Refactor sync reset on bad block/queue full
* Add missing target for log message
* Fix compiler errors and test after merge
* ethcore: revert ethereum tests submodule update
* ci: force-tag wiki changes
* ci: force-tag wiki changes
* ci: skip docs job for master and nightly
* ci: revert docs job checking for nightly tag
* ci: exclude docs job from nightly builds in gitlab script
* `ExecutionsRequest` from light-clients as read-only
This changes so all `ExecutionRequests` from light-clients are executed
as read-only which the `virtual``flag == true ensures.
This boost up the current transaction to always succeed
Note, this only affects `eth_estimateGas` and `eth_call` AFAIK.
* grumbles(revert renaming) : TransactionProof
* grumbles(trace) : remove incorrect trace
* grumbles(state/prove_tx) : explicit `virt`
Remove the boolean flag to determine that a `state::prove_transaction`
whether it should be executed in a virtual context or not.
Because of that also rename the function to
`state::prove_transction_virtual` to make more clear
* Implement CREATE2 gas changes and fix some potential overflowing
* Ignore create2 state tests
* Split CREATE and CREATE2 in gasometer
* Generalize rounding (x + 31) / 32 to to_word_size
* sync: Validate received BlockHeaders packets against stored request.
* sync: Validate received BlockBodies and BlockReceipts.
* sync: Fix broken tests.
* sync: Unit tests for BlockDownloader::import_headers.
* sync: Unit tests for import_{bodies,receipts}.
* tests: Add missing method doc.
* add a new RPC `eth_submitWorkDetail`similar `eth_submitWork`.
It has more details (block hash, error message, and more in future)
in its response and not only the `true` or `false`.
* move RPC submitWorkDetail from namespace eth_ to parity_
* remove SubmitDetailResult type; submitWorkDetail return a error when failed
* change error message of RPC error `cannot_submit_work`.
* remove double imported H256.
* put submit_work_detail into a helper to avoid the duplicate codes.
* Add new Vm trappable interface
* Exec/Resume interface
* Basic implementation of CallCreateExecutive
* Implement resume_call and resume_create for executive
* Move convertion to call/create result to separate function
* Implement consume that converts resumable to non-resumable
* Use consume for Executive::call/create
* Resumable EVM
* Implement tracing mode without needing subtracers
* Implement vmtracer so it doesn't require extra structs for subtracing
* Use the new tracing mode in executive
* Fix most of the linting errors for cargo build
* Add the concept of stack_depth
* Add back crossbeam
* Fix some test compile
* Fix prefix address test
* Fix evm crate tests
* Fix wasm crate test compile
* Fix wasm runner compile
* Fix jsontests compile
* Fix evmbin compile
* Fix an issue with create nonce and better vm tracing interface
* Fix linting
* Fix evmbin compile
* Fix unconfirmed_substate and static_flag
* Fix an issue in create address logic
* Fix top-level tracing
* Handle builtin tracing
* Fix suicide and reward tracing index stack
* Fix an issue where trap conflicts with tracing
* Fix an issue in parent step vm tracing
* Fix revert tracing
* Fix evmbin tests
* Remove params clone
* Fix TODO proofs
* Fix jsontests compile
* Fix evmbin merge issue
* Fix wasm merge issue
* Fix wasm test
* Fix ethcore merge warnings
* Fix evmbin compile
* Better expect messages and add some trace::skip_one asserts
* ci: reduce gitlab pipelines significantly
* ci: build pipeline for PR
* ci: remove dead weight
* ci: remove github release script
* ci: remove forever broken aura tests
* ci: add random stuff to the end of the pipes
* ci: add wind and mac to the end of the pipe
* ci: remove snap artifacts
* ci: (re)move dockerfiles
* ci: clarify job names
* ci: add cargo audit job
* ci: make audit script executable
* ci: ignore snap and docker files for rust check
* ci: simplify audit script
* ci: rename misc to optional
* ci: add publish script to releaseable branches
* ci: more verbose cp command for windows build
* ci: fix weird binary checksum logic in push script
* ci: fix regex in push script for windows
* ci: simplify gitlab caching
* docs: align README with ci changes
* ci: specify default cargo target dir
* ci: print verbose environment
* ci: proper naming of scripts
* ci: restore docker files
* ci: use docker hub file
* ci: use cargo home instead of cargo target dir
* ci: touch random rust file to trigger real builds
* ci: set cargo target dir for audit script
* ci: remove temp file
* ci: don't export the cargo target dir in the audit script
* ci: fix windows unbound variable
* docs: fix gitlab badge path
* rename deprecated gitlab ci variables
https://docs.gitlab.com/ee/ci/variables/#9-0-renaming
* ci: fix git compare for nightly builds
* test: skip c++ example for all platforms but linux
* ci: add random rust file to trigger tests
* ci: remove random rust file
* disable cpp lib test for mac, win and beta (#9686)
* test.sh: use cargo --target for platforms other than linux, win or mac
* drying test.sh script
* run tests only when not cross-compiling
* quote variable value
* ethcore: propose hardfork block number 4230000 for ropsten
* ethcore: propose hardfork block number 9000000 for kovan
* ethcore: enable kip-4 and kip-6 on kovan
* etcore: bump kovan hardfork to block 9.2M
* ethcore: fix ropsten constantinople block number to 4.2M
* ethcore: disable difficulty_test_ropsten until ethereum/tests are updated upstream
* VerificationQueue don't spawn up extra threads
In the verification queue we spawn up worker threads to do the work.
However, if `num-verifiers` is specified we still spawn the maximum
number of threads which consume extra memory.
There is one catch though when `--scale-verifiers` is specified then
we can't do it because all threads are created upon initilization AFAIK.
In my opinion, is doesn't to use both `num-verifiers` and
`scale-verifiers` they are kind of contradictory!
* Fix nits in logic and add tests for verification
* refactor(verification queue) - rm hardcoded const
* Address grumbles in new tests
* Remove hardcoded `MAX_VERIFIERS` constant and replace it by relying
entirely on `num_cpu` crate instead inorder to support CPUs that have
more cores/logical cores
* 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.
* docs: prepare changelog for 2.1.0 beta
* docs: move changelog for 2.0.x to stable
* docs: add changelog for legacy 1.11.x
* docs: add release notes for 2.0.x beta releases
* docs: mark 1.11 end of life
* docs: prepare release notes for 2.0.5 stable
* docs: prepare release notes for 2.1.0 beta
* ci: ignore docs in tests
* docs: bump version in readme
* docs: update changelog for 2.0.5 stable
* docs: update changelog for 2.1.0 beta
* docs: update changelog for 2.1.0 beta
* docs: remove eip86 from release notes
* docs: update changelog for 2.1.0
* docs: add changelog for 2.1.1 and 2.0.6
* docs: correct spelling of certain words in the latest changelog
* while working on the platform tests make them non-critical
* ci: unify test stage job names and torelate more failures
* ci: restore valid yaml
* ci: allow beta and nightly rust builds to fail
* look into commit changes
* look into commit changes ii
* all on test
* build only_releaseable_branches for platforms
* allow failure for check during development
* windows test typo
* fix sh for windows
* remove check stage again
* debug macos platform
* ci: always run build pipelines for win, mac, linux, and android
* ci: always run build pipelines for win, mac, linux, and android
* ci: disallow failure for publish scripts
* ci: enable tests on master
* ci: run tests in debug mode to speed things up
* ci: only build windows, darwin, and android targets on PRs
* ci: reenable darwin and android pipelines on PR
* ci: revert tests to run in release mode
* new ethabi migration in progress
* parity migrated to new ethabi
* migrated secred-store to new ethabi
* bump ethabi to 6.0
* fixed review suggestions
* OnDemand no longer loop until there is a query.
All peer known at the time will be queried, and the query fail if all
return no reply.
Returning the failure is done through an empty Vec of reply (the type
of the oneshot channel remains unchanged).
Before this commit the query were send randomly to any peer until there
is a reply (for a query that got no result it was an issue, for other
queries it was quering multiple times the same peers).
After this commit the first query is random but next queries
follows hashmap iterator order.
Test no_capability was broken by this commit (the pending query was
removed).
* OnDemand no longer loop until there is a query.
All peer known at the time will be queried, and the query fail if all
return no reply.
Returning the failure is done through an empty Vec of reply (the type
of the oneshot channel remains unchanged).
Before this commit the query were send randomly to any peer until there
is a reply (for a query that got no result it was an issue, for other
queries it was quering multiple times the same peers).
After this commit the first query is random but next queries
follows hashmap iterator order.
Test no_capability was broken by this commit (the pending query was
removed). If adding some kind of timeout mechanism it could be restored.
* Comment plus better field names.
* No panick on dropped oneshot channel.
* Use Set to avoid counter heuristic
* Cli option `on_demand_nb_retry` for maximum number of retry when doing
on demand query in light client.
* Missing test update for previous commit
* Add a timeout (only when there is no peer to query), that way we do not
set number of query to minimum current number peer or configured number
of query : that way capability test was restored.
* Adding an error type for on_demand, it helps having variant of error
reported at rpc level : choice of rpc error code error might not be
right.
* Duration as constant is nice
* Switch to duration in main too
* Fix indentation (sorry for that).
* Fix error management (bad merge in previous commit)
* Lots of english corrections, major change on the new command parameters :
- use standard '-' instead of '_'
- renaming nb_retry params to 'on-demand-retry-count'
* Enable all Constantinople hard fork changes in constantinople_test.json
* Address grumbles
* Remove EIP-210 activation
* 8m -> 5m
* Temporarily add back eip210 transition so we can get test passed
* Add eip210_test and remove eip210 transition from const_test
* `light::verify_transaction` basic tx validation
* update wasm tests
* Provide `cached_nonce` in `parity_next_nonce` RPC
* nits
* Improve error handeling
Two separate errors for distinguishing between `account not found` and
`insufficient balance`. However, when `next_nonce()` is called and the
account is not found then provide `local_best_next_nonce`!
* Ensure only one n/w request is performed
Refactored to code again:
* Removed `fn cached_next_nonce`
* Removed extra n/w request in `sign` to check balance
* Refactored `fill_optional_field` to request nonce and check account balance
* nits
* grumbles needless clone
* Prevent integer overflow with saturating add & mul
* Call `sign_transaction()` directly from `sign()`
Because the change in `fill_optional_fields` always fill the nonce it is
now possible to call `sign_transaction` directly instead of creating a
`ProspectiveSigner` "object".
* Replace hardcoded JSON with serde json! macro
* Use "{:#x}" formatter instead of "0x{:x}"
* Sort fields of JSON test strings alphabetically
* Stop escaping new lines in evmbin JSON errors
* Remove unnecessary 'to_string()' calls
* Add test with non-empty storage values
* Update & fix JSON state tests.
* Update tests to be able to run ethtest at
021fe3d410773024cd5f0387e62db6e6ec800f32.
- Touch user in state
- Adjust transaction tests to new json format
* Switch to same commit for submodule ethereum/test as geth (next includes constantinople changes).
Added test `json_tests::trie::generic::TrieTests_trieanyorder` and a few
difficulty tests.
* Remove trietestnextprev as it would require to parse differently and
implement it.
* Support new (shitty) format of transaction tests.
* Ignore junk in ethereum/tests repo.
* Ignore incorrect test.
* Update to a later commit
* Move block number to a constant.
* Fix ZK2 test - touched account should also be cleared.
* Fix conflict resolution
* Implement last_checkpoint_storage_at
* Add reverted_storage_at for externalities
* sstore_clears_count -> sstore_clears_refund
* Implement eip1283 for evm
* Add eip1283Transition params
* evm: fix tests
* jsontests: fix test
* Return checkpoint index when creating
* Comply with spec Version II
* Fix docs
* Fix jsontests feature compile
* Address grumbles
* Fix no-checkpoint-entry case
* Remove unnecessary expect
* Add test for State::checkpoint_storage_at
* Add executive level test for eip1283
* Hard-code transaction_checkpoint_index to 0
* Fix jsontests
* Add tests for checkpoint discard/revert
* Require checkpoint to be empty for kill_account and commit
* Get code coverage
* Use saturating_add/saturating_sub
* Fix issues in insert_cache
* Clear the state again
* Fix original_storage_at
* Early return for empty RLP trie storage
* Update comments
* Fix borrow_mut issue
* Simplify checkpoint_storage_at if branches
* Better commenting for gas handling code
* Address naming grumbles
* More tests
* Fix an issue in overwrite_with
* Add another test
* Fix comment
* Remove unnecessary bracket
* Move orig to inner if
* Remove test coverage for this PR
* Add tests for executive original value
* Add warn! for an unreachable cause
* ethcore: don't validate difficulty when ignoring seal check
* ethcore: fix block verification test
* ethcore: document skipped verifications when check_seal is disabled
* Provide the actual `account` for eth_coinbase
The previous implementation always provided the `zero address` on
`eth_coinbase` RPC. Now, instead the actual address is returned on
success or an error when no account(s) is found!
* full client `eth_coinbase` return err
In the full-client return an error when no account is found instead of
returning the `zero address`
* Remove needless blocks on single import
* Remove needless `static` lifetime on const
* Fix `rpc_eth_author` test
This PR is fixing deadlock for #8918
It avoids some recursive calls on light_sync by making state check optional for Informant.
The current behavior is to display the information when informant checks if block is major version.
This change a bit the informant behavior, but not on most cases.
To remember where and how this kind of deadlock are likely to happen (not seen with Parkinglot deadlock detection because it uses std condvar), I am adding a description of the deadlock.
Also, for the reviewers there may be better solution than modifying the informant.
### Thread1
- ethcore/sync/light_sync/mod.rs
A call to the light handler through any Io (having a loop of rpc query running on like client makes the dead lock way more likely).
At the end of those calls we systematically call `maintain_sync` method.
Here maintain_sync locks `state` (it is the deadlock cause), with a write purpose
`maintain_sync` -> `begin_search` with the state locked open
`begin_search` -> lightcliennt `flush_queue` method
- ethcore/light/src/client/mod.rs
`flush_queue` -> `flush` on queue (HeaderQueue aka VerificationQueue of headers)
- ethcore/src/verification/queue/mod.rs
Condition there is some unverified or verifying content
`flush` wait on a condvar until the queue is empty. The only way to unlock condvar is that worker is empty and unlock it (so thread 2 is Verification worker).
### Thread2
A verification worker at the end of a verify loop (new block).
- ethcore/src/verification/queue/mod.rs
thread loops on `verify` method.
End of loop condition is_ready -> Import the block immediately
calls `set_sync` on QueueSignal which send a BlockVerified ClientIoMessage in inner channel (IoChannel of ClientIoMessage) using `send_sync`
- util/io/src/service_mio.rs
IoChannel `send_sync` method calls all handlers with `message` method; one of the handlers is ImportBlocks IoHandler (with a single inner Client service field)
- ethcore/light/src/client/service.rs
`message` trigger inner method `import_verified`
- core/light/src/client/mod.rs
`import_verified` at the very end notify the listeners of a new_headers, one of the listeners is Informant `listener` method
- parity/informant.rs
`newHeaders` run up to call to `is_major_importing` on its target (again clinet)
- ethcore/sync/src/light_sync/mod.rs
Here `is_major_importing` tries to get state lock (read purpose only) but cannot because of previous state lock, thus deadlock
* Add EIP-1014 transition config flag
* Remove EIP-86 configs
* Change CREATE2 opcode index to 0xf5
* Move salt to the last item in the stack
* Change sendersaltandaddress scheme to comply with current EIP-1014
* Fix json configs
* Fix create2 test
* Fix deprecated comments
- Update foundation hardcoded header to block 6219777
- Update ropsten hardcoded header to block 3917825
- Update kovan hardcoded header to block 8511489
This adds block reward contract config to ethash. A new config `blockRewardContractCode` is also added to both Aura and ethash. When specified, it will execute the code directly and overrides any `blockRewardContractAddress` config. Having this `blockRewardContractCode` config allows chains to deploy hard fork by simply replacing the current config value, without the need from us to support any `multi` block reward scheme.
* Verify private transaction before propagating
* Private transactions queue reworked with tx pool queue direct usage
* Styling fixed
* Prevent resending private packets to the sender
* Process signed private transaction packets via io queue
* Test fixed
* Build and test fixed after merge
* Comments after review fixed
* Signed transaction taken from verified
* Fix after merge
* Pool scoring generalized in order to use externally
* Lib refactored according to the review comments
* Ready state refactored
* Redundant bound and copying removed
* Fixed build after the merge
* Forgotten case reworked
* Review comments fixed
* Logging reworked, target added
* Fix after merge
* Updating the CI system with the publication of releases and binary files on github
Signed-off-by: Denis S. Soldatov aka General-Beck <general.beck@gmail.com>
* add missed scripts
* chmod +x scripts
* fix download link for github
* rebuilding CI scripts
* small fixes
* update submodule wasm tests
* ci: fix merge leftovers
* ci: remove gitlab-next from ci triggers
* ci: fix git add in docs script
* ci: use nightly instead of master for publish triggers
* ci: remove sleep from gitlab config
* ci: replace ':' with '-' in gitlab targets
* ci: fix recursive copy in docs script
* Light client on-demand request for headers range.
* Cache headers in HeaderWithAncestors response.
Also fulfills request locally if all headers are in cache.
* LightFetch::logs fetches missing headers on demand.
* LightFetch::logs limit the number of headers requested at a time.
* LightFetch::logs refactor header fetching logic.
* Enforce limit on header range length in light client logs request.
* Fix light request tests after struct change.
* Respond to review comments.
* Add update docs script to CI
Added a script to CI that will use the jsonrpc tool to update rpc
documentation then commit and push those to the wiki repo.
* fix gitlab ci lint
* Only apply jsonrpc docs update on tags
* Update gitlab-rpc-docs.sh
* Copy correct parity repo to jsonrpc folder
Copy correct parity repo to jsonrpc folder before attempting to build docs since the CI runner clones the repo as parity and not parity-ethereum.
* Fix JSONRPC docs CI job
Update remote config in wiki repo before pushing changes using a github
token for authentication. Add message to wiki tag when pushing changes.
Use project directory to correctly copy parity code base into the
jsonrpc repo for doc generation.
* Fix set_remote_wiki function call in CI
* Import the `home` crate in `util/dir`.
* Replace uses of `env::home_dir()` with `home::home_dir()`.
* `home` uses a 'correct' impl. on windows and the stdlib impl.
of `::home_dir` otherwise.
* Reexport `home::home_dir` from `util/dir`.
* Bump `util/dir` to 0.1.2.
* Provide `default_nonce` in tx`s when it´s missing
When `nonce` is missing in a `EthTransaction` will cause it to fall in
these cases provide `default_nonce` value instead!
* Changed http:// to https:// on Yasm link (#9369)
Changed http:// to https:// on Yasm link in README.md
* Provide `default_nonce` in tx`s when it´s missing
When `nonce` is missing in a `EthTransaction` will cause it to fall in
these cases provide `default_nonce` value instead!
* Address grumbles
* Fix PubSub for logs when using light client :
prior to this fix the pubsub process did send a
query for each new block header (and for each subs : there is something
to optimize here) by setting from and to of the filter at this block
number; but there was a bug in the code that fetch logs : it was non
inclusive for its start bound, meaning that with start bound = end bound
we never query any block (and attached logs).
* Option iter instead of once.
Use of bloom existing function to check if a bloom contains another.
* Makes from block header checking explicit
* Remove pass-by-reference return data value from executive
* Fix tests
* Fix a missing test output
* typo: wasm_activation_test
* Tracing change in output
* json_tests: fix compile
* typo: 0..32 -> ..32 to keep it consistent with other occurance
* Fix tests
* Feed in ActionParams on VM creation
* Fix ethcore after Vm interface change
* Move informant inside Interpreter struct
* Move do_trace to Interpreter struct
* Move all remaining exec variables to Interpreter struct
* Refactor VM to allow single opcode step
* Fix all EVM tests
* Fix all wasm tests
* Fix wasm runner tests
* Fix a check case where code length is zero
* Fix jsontests compile
* Fix cargo lock
* Use match instead of expect
* Use cheaper check reader.len() == 0 for the initial special case
* Get rid of try_and_done! macro by using Result<(), ReturnType>
* Use Never instead of ()
* Fix parity-bytes path
* Bypass gasometer lifetime problem by borrow only for a instance
* typo: missing {
* Fix ethcore test compile
* Fix evm tests
* Implement EIP234
* Make filter conversion returns error if both blockHash and from/toBlock is found
This also changes PollFilter to store the EthFilter type, instead of the jsonrpc one, saving repeated conversion.
* Return error if block filtering target is not found in eth_getLogs
Use the old behavior (unwrap_or_default) for anywhere else.
* fix test: secret_store
* Fix weird indentation
* Make client log filter return error in case a block cannot be found
* Return blockId error in rpc
* test_client: allow return error on logs
* Add a mocked test for eth_getLogs error
* fix: should return error if from_block/to_block greater than best block number
* Add notes on pending
* Add comment for UNSUPPORTED_REQUEST
* Address grumbles
* Return err if from > to
* ethcore: fix pow difficulty validation
* ethcore: validate difficulty is not zero
* ethcore: add issue link to regression test
* ethcore: fix tests
* ethcore: move difficulty_to_boundary to ethash crate
* ethcore: reuse difficulty_to_boundary and boundary_to_difficulty
* ethcore: fix grumbles in difficulty_to_boundary_aux
* Add a `fastmap` crate that provides the H256FastMap specialized HashMap
* Use `fastmap` instead of `plain_hasher`
* Update submodules for Reasons™
* Submodule update
Closes#9255
This PR also removes the limit of max 64 transactions per packet, currently we only attempt to prevent the packet size to go over 8MB. This will only be the case for super-large transactions or high-block-gas-limit chains.
Patching this is important only for chains that have blocks that can fit more than 4k transactions (over 86M block gas limit)
For mainnet, we should actually see a tiny bit faster propagation since instead of computing 4k pending set, we only need `4 * 8M / 21k = 1523` transactions.
Running some tests on `dekompile` node right now, to check how it performs in the wild.
* Comply EIP-86 with the new CREATE2 opcode
* Fix rpc compile
* Fix interpreter CREATE/CREATE2 stack pop difference
* Add unreachable! to fix compile
* Fix instruction_info
* Fix gas check due to new stack item
* Add new tests in executive
* Fix have_create2 comment
* Remove all unused references of eip86_transition and block_number
* Implement EIP-1052 and fix several issues related to account cache
* Fix jsontests
* Merge two matches together
* Avoid making unnecessary Arc<Vec>
* Address grumbles
* blockchain insert expects owned block instead of block reference
* reduce a number of times a block is deserialized
* removed cached uncle_bytes from block
* removed is_finalized from OpenBlock
* removed unused parity_machine::WithMetadata trait
* removed commented out code
* remove unused metadata from block
* remove unused metadata from block
* BlockDetails extras may have at most 5 elements
Previously we only allow downloading of old blocks if the peer
difficulty was greater than our syncing difficulty. This change allows
downloading of blocks from peers where the difficulty is greater then
the last downloaded old block.
* Insert PROOF messages for some cases in blockchain
* Break expect to its own line to avoid things being too long
* Be more specific for all low-level database error cases
* Fix BranchBecomingCanonChain expect
* ethcore: fix typo in expect proof message
* Added --tx-queue-no-early-reject flag to disable early tx queue rejects because of low gas price
* Fixed failing tests, clarified comments and simplified no_early_reject field name.
* Added test case for the --tx-queue-no-early-reject flag
* parity: fix UserDefaults json parser
* parity: use serde_derive for UserDefaults
* parity: support deserialization of old UserDefault json format
* parity: make UserDefaults serde backwards compatible
* parity: tabify indentation in UserDefaults
* Reject if Engine::on_close_block returns error
* Unify open block behaviors
* Fix tests in ethcore
* Fix Aura tests
* Fix RPC test
* Print a warning if open block failed
* Print the actual error when closing the block
* Update comments for prepare_pending_block
* Add BlockPreparationStatus to distingish three different state after prepare_pending_block
* Insert Kovan hardcoded headers until #7690241
* Insert Kovan hardcoded headers until block 7690241
* Insert Ropsten hardcoded headers until #3612673
* Insert Mainnet hardcoded headers until block 5941249
* Revert "Replace `std::env::home_dir` with `dirs::home_dir` (#9077)"
This reverts commit 7e779327eb.
* Restore some of the changes
* Update parity-common
* discovery: Only add nodes to routing table after receiving pong.
Previously the discovery algorithm would add nodes to the routing table
before confirming that the endpoint is participating in the protocol. This
now tracks in-flight pings and adds to the routing table only after receiving
a response.
* discovery: Refactor packet creation into its own function.
This function is useful inside unit tests.
* discovery: Additional testing for new add_node behavior.
* discovery: Track expiration of pings to non-yet-in-bucket nodes.
Now that we may ping nodes before adding to a k-bucket, the timeout tracking
must be separate from BucketEntry.
* discovery: Verify echo hash on pong packets.
Stores packet hash with in-flight requests and matches with pong response.
* discovery: Track timeouts on FIND_NODE requests.
* discovery: Retry failed pings with exponential backoff.
UDP packets may get dropped, so instead of immediately booting nodes that fail
to respond to a ping, retry 4 times with exponential backoff.
* !fixup Use slice instead of Vec for request_backoff.
Check out our [Basic Usage](https://github.com/paritytech/parity/wiki/Basic-Usage), [Configuration](https://github.com/paritytech/parity/wiki/Configuring-Parity), and [FAQ](https://github.com/paritytech/parity/wiki/FAQ) articles on our [wiki](https://github.com/paritytech/parity/wiki)!
Check out our [Basic Usage](https://wiki.parity.io/Basic-Usage), [Configuration](https://wiki.parity.io/Configuring-Parity-Ethereum), and [FAQ](https://wiki.parity.io/FAQ) articles on our [wiki](https://wiki.parity.io/)!
See also frequently asked questions [tagged with `parity`](https://ethereum.stackexchange.com/questions/tagged/parity?sort=votes&pageSize=50) on Stack Exchange.
@@ -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.
Otherwise, just create a [new issue](https://github.com/paritytech/parity/issues/new) in our repository and state:
Otherwise, just create a [new issue](https://github.com/paritytech/parity-ethereum/issues/new) in our repository and state:
- What's your Parity version?
- What's your Parity Ethereum version?
- What's your operating system and version?
- How did you install parity?
- How did you install Parity Ethereum?
- Is your node fully synchronized?
- Did you try turning it off and on again?
@@ -22,12 +22,47 @@ Also, try to include **steps to reproduce** the issue and expand on the **actual
## Contribute!
If you would like to contribute to Parity, please **fork it**, fix bugs or implement features, and [propose a pull request](https://github.com/paritytech/parity/compare).
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).
Please, refer to the [Coding Guide](https://github.com/paritytech/parity/wiki/Coding-guide) in our wiki for more details about hacking on Parity.
### 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.
### Rules
There are a few basic ground-rules for contributors (including the maintainer(s) of the project):
* **No pushing directly to the master branch**.
* **All modifications** must be made in a **pull-request** to solicit feedback from other contributors.
* Pull-requests cannot be merged before CI runs green and two reviewers have given their approval.
* Contributors should adhere to the [Parity Ethereum Style Guide](https://wiki.parity.io/Parity-Ethereum-Style-Guide).
### 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).
* **Remove stale branches periodically**
### 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).
* 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.
### 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)).
When doing a review, make sure to look for any:
* Buggy behavior.
* Undue maintenance burden.
* Breaking with house coding style.
* Pessimization (i.e. reduction of speed as measured in the projects benchmarks).
* Breaking changes should be carefuly reviewed and tagged as such so they end up in the [changelog](../CHANGELOG.md).
* Uselessness (i.e. it does not strictly add a feature or fix a known issue).
## License.
By contributing to Parity, you agree that your contributions will be licensed under the [GPLv3 License](../LICENSE).
By contributing to Parity Ethereum, 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.
_Before filing a new issue, please **provide the following information**._
> I'm running:
>
> - **Which Parity version?**: 0.0.0
> - **Which operating system?**: Windows / MacOS / Linux
> - **How installed?**: via installer / homebrew / binaries / from source
> - **Are you fully synchronized?**: no / yes
> - **Which network are you connected to?**: ethereum / ropsten / kovan / ...
> - **Did you try to restart the node?**: no / yes
_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)_
- **Parity Ethereum version**: 0.0.0
- **Operating system**: Windows / MacOS / Linux
- **Installation**: homebrew / one-line installer / built from source
- **Fully synchronized**: no / yes
- **Network**: ethereum / ropsten / goerli / ...
- **Restarted**: no / yes
_Your issue description goes here below. Try to include **actual** vs. **expected behavior** and **steps to reproduce** the issue._
Parity Ethereum v2.6.5-beta is a patch release that adds block numbers for activating the Istanbul hardfork on mainnet, as well as a large number of various bugfixes, QoL changes, some code cleanup/refactoring and other miscellaneous changes.
This release removes legacy aliases for the mainnet. If you specify `--chain homestead`, `--chain frontier` or `--chain byzantium`, this will need to be changed to one of: `--chain eth`, `--chain ethereum`, `--chain foundation` or `--chain mainnet`.
This release includes important changes to how snapshots are produced. The size of the Ethereum account state means that producing a snapshot takes a long while; most nodes today are not able to finish before the relevant state is pruned. Starting with v2.6.5, pruning is paused while a snapshot is underway, hopefully fixing the current dearth of recent snapshots. The downside to this is that memory usage goes up while a snapshot is produced.
Parity 1.11.5 is a bug-fix release to improve performance and stability.
Parity Ethereum v2.6.4-stable is a patch release that adds the block numbers for activating the Istanbul hardfork on test networks: Ropsten, Görli, Rinkeby and Kovan.
A full list of included changes:
* ethcore/res: activate Istanbul on Ropsten, Görli, Rinkeby, Kovan (#11068)
* cleanup json crate (#11027)
* [json-spec] make blake2 pricing spec more readable (#11034)
Parity Ethereum v2.6.3-stable is a patch release that improves security, stability and performance.
* The most noteworthy improvement in this release is incorporating all the EIPs required for the Istanbul hard fork.
* This release also fixes certain security and performance issues, one of which was suspected to be consensus-threatening but turned out to be benign. Thanks to Martin Holst Swende and Felix Lange from the Ethereum Foundation for bringing the suspicious issue to our attention.
The full list of included changes:
-Bump beta to 1.11.5 / Backports ([#8955](https://github.com/paritytech/parity/pull/8955))
Parity 1.11.4 is a bug-fix release to improve performance and stability.
Parity Ethereum v2.6.2-stable is a bugfix release that fixes a potential DoS attack in the trace_call RPC method. This is a critical upgrade for anyone running Parity nodes with RPC exposed to the public internet (and highly recommended for anyone else). For details see this blog post.
Parity-Ethereum 2.6.0-beta is a minor release that stabilizes the 2.6 branch by
marking it as a beta release.
Parity 1.11.3 is a security-relevant release. Please upgrade your nodes as soon as possible to [v1.10.6](https://github.com/paritytech/parity/releases/tag/v1.10.6) or [v1.11.3](https://github.com/paritytech/parity/releases/tag/v1.11.3).
This release includes:
* Major refactoring of the codebase
* Many bugfixes
* Significant improvements to logging, error and warning message clarity.
* SecretStore: remove support of old database formats (#10757)
* This is a potentially breaking change if you have not upgraded for
quite some time.
As of today, Parity-Ethereum 2.4 reaches end of life, and everyone is
encouraged to upgrade.
The full list of included changes:
-Parity-version: bump beta to 1.11.3 ([#8806](https://github.com/paritytech/parity/pull/8806))
- Parity-version: bump beta to 1.11.3
- Disallow unsigned transactions in case EIP-86 is disabled ([#8802](https://github.com/paritytech/parity/pull/8802))
- Fix ancient blocks queue deadlock ([#8751](https://github.com/paritytech/parity/pull/8751))
-Update shell32-sys to fix windows build ([#8792](https://github.com/paritytech/parity/pull/8792))
-Previous queue had `O(1)` time to get pending set, but `O(n^2)` insertion time. And obviously insertion/removal happens much more often than retrieving the pending set (only for propagation and pending block building) Currently we have `O(n * log(senders))` pending set time (with cache) and `O(tx_per_sender)` (usually within `log(tx_per_sender)`) insertion time.
-`Scoring` and `Readiness` are separated from the pool, so it's easier to customize them or introduce different definitions (for instance for [EIP-859](https://github.com/ethereum/EIPs/issues/859) or private transactions, etc).
- Banning removed, soft-penalization introduced instead: if transaction exceeds the limit other transactions from that sender get lower priority.
- There is no explicit distinction between current and future transactions in the pool - `Readiness` determines that. Because of this we additionally remove `future` transactions that occupy the pool for long time.
-CONFIGURATION: **Warp-only sync with --warp-barrier [block-number] flag.** [#8228](https://github.com/paritytech/parity/pull/8228)
- Enables warp-only sync in case `--warp-barrier [block-number]` is provided.
- This avoids clients to warp to outdated snapshots that are too far away from the best block.
- This avoids clients to fall back to normal sync if there are no recent snapshots available currently.
-CONFIGURATION: **Disable UI by default.**[#8105](https://github.com/paritytech/parity/pull/8105)
- The user interface is now disabled by default. It still can be activated with the `--force-ui` flag.
- To get the stand-alone Parity UI, please check the dedicated [releases page](https://github.com/parity-js/shell/releases).
- Added `--auto-update-delay` to randomly delay updates by `n` blocks. This takes into account the number of the block of the update release (old updates aren't delayed).
- Added `--auto-update-check-frequency` to define the periodicity of auto-update checks in number of blocks.
- This is an important improvement to ensure the network does not update all clients at the same time.
-CHAIN SPECS: **Enable WebAssembly and Byzantium for Ellaism** [#8520](https://github.com/paritytech/parity/pull/8520)
- This activates the Ellaism Byzantium hardfork ([2018-0004-byzantium](https://github.com/ellaism/specs/blob/master/specs/2018-0004-byzantium.md)) at block `2_000_000`.
- This enables the Wasm VM on Ellaism ([2018-0003-wasm-hardfork](https://github.com/ellaism/specs/blob/master/specs/2018-0003-wasm-hardfork.md)) at block `2_000_000`.
- Please, upgrade your clients if you run an Ellaism configuration.
-CHAIN SPECS: **Dev chain - increase gasLimit to 8_000_000** [#8362](https://github.com/paritytech/parity/pull/8362)
- This increases the default block gas limit on development chains to `8_000_000`.
- Please note, this makes previous dev chain configurations incompatible.
-CHAIN SPECS: **Add MCIP-6 Byzyantium transition to Musicoin spec** [#7841](https://github.com/paritytech/parity/pull/7841)
- This activates the Musicoin Byzantium hardfork ([MCIP-6](https://github.com/Musicoin/MCIPs/blob/master/MCIPS/mcip-6.md)) at block `2_222_222`.
- Please, upgrade your clients if you run a Musicoin configuration.
- Bump snappy and ring, use single rayon version, closes [#8296](https://github.com/paritytech/parity/issues/8296) ([#8364](https://github.com/paritytech/parity/pull/8364))
- Use async hyper server in secret_store and upgrade igd ([#8359](https://github.com/paritytech/parity/pull/8359))
- Enable UI by default, but only display deprecation notice ([#8262](https://github.com/paritytech/parity/pull/8262))
- Ethcrypto renamed to ethcore-crypto and moved to ethcore dir ([#8340](https://github.com/paritytech/parity/pull/8340))
- Use hyper 0.11 in ethcore-miner and improvements in parity-reactor ([#8335](https://github.com/paritytech/parity/pull/8335))
- Update some dependencies ([#8285](https://github.com/paritytech/parity/pull/8285))
- Ethcore now uses Rayon 1.0 as a dependency ([#8296](https://github.com/paritytech/parity/pull/8296)) ([#8304](https://github.com/paritytech/parity/pull/8304))
- Upgrader `remove raw unwrap` and bump semver ([#8251](https://github.com/paritytech/parity/pull/8251))
- Cleaner binary shutdown system ([#8284](https://github.com/paritytech/parity/pull/8284))
- Ethcore now uses rayon to 0.9 as a dependency ([#8296](https://github.com/paritytech/parity/pull/8296)) ([#8302](https://github.com/paritytech/parity/pull/8302))
- Include suicided accounts in state diff ([#8297](https://github.com/paritytech/parity/pull/8297))
* Use RUSTFLAGS to set the optimization level ([#10719](https://github.com/paritytech/parity-ethereum/pull/10719))
* enable lto for release builds ([#10717](https://github.com/paritytech/parity-ethereum/pull/10717))
* [devp2p] Update to 2018 edition ([#10716](https://github.com/paritytech/parity-ethereum/pull/10716))
* [devp2p] Don't use `rust-crypto` ([#10714](https://github.com/paritytech/parity-ethereum/pull/10714))
*[devp2p] Fix warnings and re-org imports ([#10710](https://github.com/paritytech/parity-ethereum/pull/10710))
* DevP2p: Get node IP address and udp port from Socket, if not included in PING packet ([#10705](https://github.com/paritytech/parity-ethereum/pull/10705))
*adds rpc error message for --no-ancient-blocks ([#10608](https://github.com/paritytech/parity-ethereum/pull/10608))
* Constantinople HF on POA Core ([#10606](https://github.com/paritytech/parity-ethereum/pull/10606))
* Clique: zero-fill extradata when the supplied value is less than 32 bytes in length ([#10605](https://github.com/paritytech/parity-ethereum/pull/10605))
* evm: add some mulmod benches ([#10600](https://github.com/paritytech/parity-ethereum/pull/10600))
*sccache logs to stdout ([#10596](https://github.com/paritytech/parity-ethereum/pull/10596))
**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.
- Modular for light integration into your service or product
Official website: https://parity.io | Be sure to check out [our wiki](https://wiki.parity.io) for more information.
## 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.
## About Parity
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.
Parity's goal is to be the fastest, lightest, and most secure Ethereum client. We are developing Parity using the sophisticated and cutting-edge Rust programming language. Parity is licensed under the GPLv3, and can be used for all your Ethereum needs.
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).
From Parity Ethereum client version 1.10.0, the User Interface (UI) is accessible in a separate application called Parity UI. To keep using the UI in the browser (deprecated), [follow these steps](https://wiki.parity.io/FAQ-Basic-Operations,-Configuration,-and-Synchronization#the-parity-ui-application-isnt-working-the-way-i-want).
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.
By default, Parity will also run a JSONRPC server on `127.0.0.1:8545` and a websockets server on `127.0.0.1:8546`. This is fully configurable and supports a number of APIs.
## 3. Building <a id="chapter-003"></a>
If you run into an issue while using Parity, feel free to file one in this repository 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).
Parity's current beta-release is 1.11. You can download it at https://github.com/paritytech/parity/releases or follow the instructions below to build from source.
Parity Ethereum requires **latest stable Rust version** to build.
----
## Build dependencies
**Parity requires Rust version 1.26.0 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:
- Linux:
```bash
$ curl https://sh.rustup.rs -sSf | sh
```
Parity also requires `gcc`, `g++`, `libssl-dev`/`openssl`, `libudev-dev`, `pkg-config`, `file` and `make` packages to be installed.
- OSX:
```bash
$ curl https://sh.rustup.rs -sSf | sh
```
`clang` is required. It comes with Xcode command line tools or can be installed with homebrew.
- Windows
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:
```bash
$ rustup default stable-x86_64-pc-windows-msvc
$ curl https://sh.rustup.rs -sSf | sh
```
Once you have rustup installed, then you need to install:
Parity Ethereum also requires `gcc`, `g++`, `pkg-config`, `file`, `make`, and `cmake` packages to be installed.
- OSX:
```bash
$ curl https://sh.rustup.rs -sSf | sh
```
`clang` is required. It comes with Xcode command line tools or can be installed with homebrew.
- Windows:
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:
```bash
$ rustup default stable-x86_64-pc-windows-msvc
```
Once you have `rustup` installed, then you need to install:
* [Perl](https://www.perl.org)
* [Yasm](http://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 from source.
Make sure that these binaries are in your `PATH`. After that, you should be able to build Parity Ethereum from source.
----
## Install from the snap store
In any of the [supported Linux distros](https://snapcraft.io/docs/core/install):
### 3.2 Build from Source Code <a id="chapter-0032"></a>
```bash
sudo snap install parity
```
Or, if you want to contribute testing the upcoming release:
```bash
sudo snap install parity --beta
```
And to test the latest code landed into the master branch:
and Parity will begin syncing the Ethereum blockchain.
so Parity Ethereum begins syncing the Ethereum blockchain.
### Using systemd service file
#### Using `systemd` service file
To start Parity as a regular user using systemd init:
To start Parity Ethereum as a regular user using `systemd` init:
1. Copy `./scripts/parity.service` to your
systemd user directory (usually `~/.config/systemd/user`).
2. To configure Parity, write a `/etc/parity/config.toml` config file, see [Configuring Parity](https://paritytech.github.io/wiki/Configuring-Parity) for details.
`systemd` user directory (usually `~/.config/systemd/user`).
2. Copy release to bin folder, write `sudo install ./target/release/parity /usr/bin/parity`
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.
## 4. Testing <a id="chapter-004"></a>
Download the required test files: `git submodule update --init --recursive`. You can run tests with the following commands:
* **All** packages
```
cargo test --all
```
* Specific package
```
cargo test --package <spec>
```
Replace `<spec>` with one of the packages from the [package list](#package-list) (e.g. `cargo test --package evmbin`).
You can show your logs in the test output by passing `--nocapture` (i.e. `cargo test --package evmbin -- --nocapture`)
## 5. Documentation <a id="chapter-005"></a>
Official website: https://parity.io
Be sure to [check out our wiki](https://wiki.parity.io) for more information.
### Viewing documentation for Parity Ethereum packages
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:
### 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>
In addition to the Parity Ethereum client, there are additional tools in this repository available:
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).
assert_eq!(&**keypair.derive(2147483648u32.into()).expect("Derivation of keypair should succeed").secret().as_raw(),&"edef54414c03196557cf73774bc97a645c9a1df2164ed34f0c2a78d1375a930c".into());
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.