Commit Graph

11353 Commits

Author SHA1 Message Date
Niklas Adolfsson
f9e64e0965 typo (#8640) 2018-05-16 20:09:59 +02:00
Wei Tang
0ecbb3ec02
Fork choice and metadata framework for Engine (#8401)
* Add light client TODO item

* Move existing total-difficulty-based fork choice check to Engine

* Abstract total difficulty and block provider as Machine::BlockMetadata and Machine::BlockProvider

* Decouple "generate_metadata" logic to Engine

* Use fixed BlockMetadata and BlockProvider type for null and instantseal

In this way they can use total difficulty fork choice check

* Extend blockdetails with metadatas and finalized info

* Extra data update: mark_finalized and update_metadatas

* Check finalized block in Blockchain

* Fix a test constructor in verification mod

* Add total difficulty trait

* Fix type import

* Db migration to V13 with metadata column

* Address grumbles

* metadatas -> metadata

* Use generic type for update_metadata to avoid passing HashMap all around

* Remove metadata in blockdetails

* [WIP] Implement a generic metadata architecture

* [WIP] Metadata insertion logic in BlockChain

* typo: Value -> Self::Value

* [WIP] Temporarily remove Engine::is_new_best interface

So that we don't have too many type errors.

* [WIP] Fix more type errors

* [WIP] ExtendedHeader::PartialEq

* [WIP] Change metadata type Option<Vec<u8>> to Vec<u8>

* [WIP] Remove Metadata Error

* [WIP] Clean up error conversion

* [WIP] finalized -> is_finalized

* [WIP] Mark all fields in ExtrasInsert as pub

* [WIP] Remove unused import

* [WIP] Keep only local metadata info

* Mark metadata as optional

* [WIP] Revert metadata db change in BlockChain

* [WIP] Put finalization in unclosed state

* Use metadata interface in BlockDetail

* [WIP] Fix current build failures

* [WIP] Remove unused blockmetadata struct

* Remove DB migration info

* [WIP] Typo

* Use ExtendedHeader to implement fork choice check

* Implement is_new_best using Ancestry iterator

* Use expect instead of panic

* [WIP] Add ancestry Engine support via on_new_block

* Fix tests

* Emission of ancestry actions

* use_short_version should take account of metadata

* Engine::is_new_best -> Engine::fork_choice

* Use proper expect format as defined in #1026

* panic -> expect

* ancestry_header -> ancestry_with_metadata

* Boxed iterator -> &mut iterator

* Fix tests

* is_new_best -> primitive_fork_choice

* Document how fork_choice works

* Engine::fork_choice -> Engine::primitive_fork_choice

* comment: clarify types of finalization where Engine::primitive_fork_choice works

* Expose FinalizationInfo to Engine

* Fix tests due to merging

* Remove TotalDifficulty trait

* Do not pass FinalizationInfo to Engine

If there's finalized blocks in from route, choose the old branch without calling `Engine::fork_choice`.

* Fix compile

* Fix unused import

* Remove is_to_route_finalized

When no block reorg passes a finalized block, this variable is always false.

* Address format grumbles

* Fix docs: mark_finalized returns None if block hash is not found

`blockchain` mod does not yet have an Error type, so we still temporarily use None here.

* Fix inaccurate tree_route None expect description
2018-05-16 14:58:01 +08:00
Pierre Krieger
3bb5ad7204 Check that the Android build doesn't dep on c++_shared (#8538) 2018-05-16 00:11:14 +03:00
Pierre Krieger
8e078b1d83 Remove NetworkContext::io_channel() (#8625)
* Remove io_channel()

* Fix warning
2018-05-15 17:03:09 +02:00
Pierre Krieger
0c4d2fbc70 Fix light sync with initial validator-set contract (#8528)
* Fix #8468

* Use U256::max_value() instead

* Fix again

* Also change initial transaction gas
2018-05-15 15:35:52 +02:00
David
e4614e49ae
Store morden db and keys in "path/to/parity/data/Morden" (ropsten uses "test", like before) (#8621)
* Store morden db and keys in "path/to/parity/data/morden" (ropsten uses "test", like before)
2018-05-15 12:57:32 +02:00
Niklas Adolfsson
8f56606cac ´main.rs´ typo (#8629)
* Typo

* Update main.rs
2018-05-15 07:46:37 +02:00
Wei Tang
af90fbfb33 Fix BlockReward contract "arithmetic operation overflow" (#8611)
* Fix BlockReward contract "arithmetic operation overflow"

* Add docs on how execute_as_system works

* Fix typo
2018-05-14 09:26:18 -05:00
Afri Schoedon
938c3707fc
Gitlab test script fixes (#8573)
* Exclude /docs from modified files.

* Ensure all references in the working tree are available

* Remove duplicated line from test script
2018-05-14 11:28:41 +02:00
Niklas Adolfsson
1b95af18ff Remove manually added text to the errors (#8595)
These messages were confusing for the users especially the help message.
2018-05-14 10:11:10 +02:00
Wei Tang
272ebc1ef7 Fix account list double 0x display (#8596)
* Remove unused self import

* Fix account list double 0x display
2018-05-14 10:10:28 +02:00
Wei Tang
cfd50538bb typo: wrong indentation in kovan config (#8610) 2018-05-14 10:10:11 +02:00
Tomasz Drwięga
08abf67a51 Fix packet count when talking with PAR2 peers (#8555)
* Support diferent packet counts in different protocol versions.

* Fix light timeouts and eclipse protection.

* Fix devp2p tests.

* Fix whisper-cli compilation.

* Fix compilation.

* Fix ethcore-sync tests.

* Revert "Fix light timeouts and eclipse protection."

This reverts commit 06285ea8c1d9d184d809f64b5507aece633da6cc.

* Increase timeouts.
2018-05-14 10:09:05 +02:00
Wei Tang
981554cf74 Use full qualified syntax for itertools::Itertools::flatten (#8606) 2018-05-14 09:22:59 +02:00
lihuafeng
979af3d314 2 tiny modification on snapshot (#8601)
* Some tiny modifications.
1. fix some typo in the comment.
2. sort the order of methods in 'impl state::Backend for StateDB`

* Remove the clone of code_cache, as it has been done in clone_basic.

* remove From::from. It seems not necessary.

* change mode: remove rust files' executable mode.

* 2 tiny modifications on snapshot.
2018-05-12 22:46:08 +02:00
Pierre Krieger
57d1f2b4d3 Fix the mio test again (#8602) 2018-05-11 13:45:07 +02:00
Axel Chalon
1fa95ac236 Remove inject.js server-side injection for dapps (#8539)
* Remove inject.js server-side injection for dapps

* Remove dapps test `should_inject_js`

Parity doesn't inject a <script> tag inside the responses anymore
2018-05-11 12:09:42 +02:00
David
25dc1c2155 block_header can fail so return Result (#8581)
* block_header can fail so return Result

* Restore previous return type based on feedback

* Fix failing doc tests running on non-code
2018-05-11 11:34:07 +02:00
David
61ec02248a Block::decode() returns Result (#8586) 2018-05-11 11:33:13 +02:00
Niklas Adolfsson
ecd7caa93d fix compiler warning (#8590) 2018-05-11 12:23:19 +03:00
Thibaut S
aea26dcc64 Fix Parity UI link (#8600)
Fix link https://github.com/paritytech/parity/issues/8599
2018-05-11 09:04:04 +02:00
Pierre Krieger
1b8f299df2 Make mio optional in ethcore-io (#8537)
* Make mio optional in ethcore-io

* Add some annotations, plus a check for features

* Increase timer for test
2018-05-10 12:34:36 +02:00
David
6e2e08628a Attempt to fix intermittent test failures (#8584)
Occasionally should_return_correct_nonces_when_dropped_because_of_limit fails, possibly because of multiple threads competing to finish. See CI logs here for an example: https://gitlab.parity.io/parity/parity/-/jobs/86738
2018-05-10 12:33:56 +02:00
Afri Schoedon
fb0e6cf0d0
Changelog and Readme (#8591)
* Move changelog for 1.10.x

* Mark 1.9 EOL

* Prepare changelog for 1.10.3 stable

* Prepare changelog for 1.11.0 stable

* Update changelogs

* Update CHANGELOG for 1.10.3 beta

* Update CHANGELOG for 1.11.0 beta

* Update CHANGELOG for 1.11.0 beta

* Update CHANGELOG for 1.11.0 beta

* Format changelog

* Update README for 1.11

* Fix typo
2018-05-10 12:33:40 +02:00
Marek Kotewicz
a57c45bb1c Added Dockerfile for alpine linux by @andresilva, closes #3565 (#8587) 2018-05-09 23:28:16 +02:00
Afri Schoedon
b2cc1c54f8
Add whisper CLI to the pipelines (#8578)
* Add whisper CLI to the pipelines

* Address todo, ref #8579
2018-05-09 23:26:30 +02:00
Niklas Adolfsson
21dad1d41e Rename whisper-cli binary to whisper (#8579)
* rename whisper-cli binary to whisper

* fix tests
2018-05-09 23:25:58 +02:00
Niklas Adolfsson
1d42b7f0d1 changelog nit (#8585) 2018-05-09 23:21:16 +02:00
Wei Tang
cddc33bb24 Remove unnecessary cloning in overwrite_with (#8580)
* Remove unnecessary cloning in overwrite_with

* Remove into_iter
2018-05-09 18:41:56 +02:00
David
cb7ad2366d
Handle socket address parsing errors (#8545)
Unpack errors and check for io::ErrorKind::InvalidInput and return our own AddressParse error. Remove the foreign link to std::net::AddrParseError and add an `impl From` for that error. Test parsing properly.
2018-05-09 15:58:02 +02:00
Afri Schoedon
25536c5ffb
Update CHANGELOG for 1.9, 1.10, and 1.11 (#8556)
* Move changelog for 1.10.x

* Mark 1.9 EOL

* Prepare changelog for 1.10.3 stable

* Prepare changelog for 1.11.0 stable

* Update changelogs

* Update CHANGELOG for 1.10.3 beta

* Update CHANGELOG for 1.11.0 beta

* Update CHANGELOG for 1.11.0 beta

* Update CHANGELOG for 1.11.0 beta

* Format changelog
2018-05-09 14:11:36 +02:00
David
842b75c0e6 Decoding headers can fail (#8570)
* rlp::decode returns Result

* Fix journaldb to handle rlp::decode Result

* Fix ethcore to work with rlp::decode returning Result

* Light client handles rlp::decode returning Result

* Fix tests in rlp_derive

* Fix tests

* Cleanup

* cleanup

* Allow panic rather than breaking out of iterator

* Let decoding failures when reading from disk blow up

* syntax

* Fix the trivial grumbles

* Fix failing tests

* Make Account::from_rlp return Result

* Syntx, sigh

* Temp-fix for decoding failures

* Header::decode returns Result

Handle new return type throughout the code base.

* Do not continue reading from the DB when a value could not be read

* Fix tests

* Handle header decoding in light_sync

* Handling header decoding errors

* Let the DecodeError bubble up unchanged

* Remove redundant error conversion
2018-05-09 12:05:56 +02:00
Nicolas Gotchac
8b0ba97cf2 Refactoring ethcore-sync - Fixing warp-sync barrier (#8543)
* Start dividing sync chain : first supplier method

* WIP - updated chain sync supplier

* Finish refactoring the Chain Sync Supplier

* Create Chain Sync Requester

* Add Propagator for Chain Sync

* Add the Chain Sync Handler

* Move tests from mod -> handler

* Move tests to propagator

* Refactor SyncRequester arguments

* Refactoring peer fork header handler

* Fix wrong highest block number in snapshot sync

* Small refactor...

* Address PR grumbles

* Retry failed CI job

* Fix tests

* PR Grumbles
2018-05-09 12:05:34 +02:00
Wei Tang
b84682168d Remove State::replace_backend (#8569) 2018-05-09 08:55:01 +02:00
Tomasz Drwięga
f20f9f376e Make trace-time publishable. (#8568) 2018-05-09 08:54:37 +02:00
Tomasz Drwięga
24838bbcd3 Don't block sync when importing old blocks (#8530)
* Alter IO queueing.

* Don't require IoMessages to be Clone

* Ancient blocks imported via IoChannel.

* Get rid of private transactions io message.

* Get rid of deadlock and fix disconnected handler.

* Revert to old disconnect condition.

* Fix tests.

* Fix deadlock.
2018-05-09 08:49:34 +02:00
Wei Tang
7a00d97977 Trace precompiled contracts when the transfer value is not zero (#8486)
* Trace precompiled contracts when the transfer value is not zero

* Add tests for precompiled CALL tracing

* Use byzantium test machine for the new test

* Add notes in comments on why we don't trace all precompileds

* Use is_transferred instead of transferred
2018-05-09 08:48:55 +02:00
Pierre Krieger
ac3de4c5fc Parity as a library (#8412)
* Parity as a library

* Fix concerns

* Allow using a null on_client_restart_cb

* Fix more concerns

* Test the C library in test.sh

* Reduce CMake version to 3.5

* Move the clib test before cargo test

* Add println in test
2018-05-09 08:47:21 +02:00
David
28c731881f
Rlp decode returns Result (#8527)
rlp::decode returns Result

Make a best effort to handle decoding errors gracefully throughout the code, using `expect` where the value is guaranteed to be valid (and in other places where it makes sense).
2018-05-08 11:22:12 +02:00
André Silva
a7a46f4253 Node table sorting according to last contact data (#8541)
* network-devp2p: sort nodes in node table using last contact data

* network-devp2p: rename node contact types in node table json output

* network-devp2p: fix node table tests

* network-devp2p: note node failure when failed to establish connection

* network-devp2p: handle UselessPeer error

* network-devp2p: note failure when marking node as useless
2018-05-07 13:11:12 +02:00
Wei Tang
528497b86a Keep all enacted blocks notify in order (#8524)
* Keep all enacted blocks notify in order

* Collect is unnecessary

* Update ChainNotify to use ChainRouteType

* Fix all ethcore fn defs

* Wrap the type within ChainRoute

* Fix private-tx and sync api

* Fix secret_store API

* Fix updater API

* Fix rpc api

* Fix informant api

* Eagerly cache enacted/retracted and remove contain_enacted/retracted

* Fix indent

* tests: should use full expr form for struct constructor

* Use into_enacted_retracted to further avoid copy

* typo: not a function

* rpc/tests: ChainRoute -> ChainRoute::new
2018-05-07 12:58:25 +02:00
André Silva
32c32ecfda ethcore, rpc, machine: refactor block reward application and tracing (#8490) 2018-05-07 12:57:03 +02:00
Toralf Wittner
e30839e85f Consolidate crypto functionality in ethcore-crypto. (#8432)
* Consolidate crypto functionality in `ethcore-crypto`.

- Move `ecdh`/`ecies` modules to `ethkey`.
- Refactor `ethcore-crypto` to use file per module.
- Replace `subtle` with `ethcore_crypto::is_equal`.
- Add `aes_gcm` module to `ethcore-crypto`.

* Rename `aes::{encrypt,decrypt,decrypt_cbc}` ...

... to `aes::{encrypt_128_ctr,decrypt_128_ctr,decrypt_128_cbc}`.
2018-05-05 11:02:33 +02:00
Wei Tang
a4c7843a07 EIP 145: Bitwise shifting instructions in EVM (#8451)
* Add SHL, SHR, SAR opcodes

* Add have_bitwise_shifting schedule flag

* Add all EIP tests for SHL

* Add SHR implementation and tests

* Implement SAR and add tests

* Add eip145transition config param

* Change map_or to map_or_else when possible
2018-05-05 10:23:50 +02:00
David
f0c6d17ad8
Remove expect (#8536)
* Remove expect and propagate rlp::DecoderErrors as TrieErrors
2018-05-04 10:06:54 +02:00
Andrew Jones
66c0638f3b Don't panic in import_block if invalid rlp (#8522)
* Don't panic in import_block if invalid rlp

* Remove redundant type annotation

* Replace RLP header view usage with safe decoding

Using the view will panic with invalid RLP. Here we use Rlp decoding directly which will return a `Result<_, DecoderError>`. While this path currently should not have any invalid RLP - it makes it safer if ever called with invalid RLP from other code paths.
2018-05-03 09:01:13 +02:00
Wei Tang
eec7364760 Pass on storage keys tracing to handle the case when it is not modified (#8491)
* Pass on storage keys even if it is not modified

* typo: account and storage query

`to_pod_diff` builds both `touched_addresses` merge and storage keys merge.

* Fix tests

* Use state query directly because of suicided accounts

* Fix a RefCell borrow issue

* Add tests for unmodified storage trace

* Address grumbles

* typo: remove unwanted empty line

* ensure_cached compiles with the original signature
2018-05-02 15:47:53 +01:00
Wei Tang
b10094508f Fetching logs by hash in blockchain database (#8463)
* Fetch logs by hash in blockchain database

* Fix tests

* Add unit test for branch block logs fetching

* Add docs that blocks must already be sorted

* Handle branch block cases properly

* typo: empty -> is_empty

* Remove return_empty_if_none by using a closure

* Use BTreeSet to avoid sorting again

* Move is_canon to BlockChain

* typo: pass value by reference

* Use loop and wrap inside blocks to simplify the code

Borrowed from https://github.com/paritytech/parity/pull/8463#discussion_r183453326

* typo: missed a comment
2018-05-02 09:40:27 +02:00
Tomasz Drwięga
8e8679807d Transaction Pool improvements (#8470)
* Don't use ethereum_types in transaction pool.

* Hide internal insertion_id.

* Fix tests.

* Review grumbles.
2018-05-02 09:31:06 +02:00
Pierre Krieger
629da8f8bf More changes for Android (#8421) 2018-05-02 09:20:59 +02:00