Commit Graph

3088 Commits

Author SHA1 Message Date
Wei Tang
c039ab79b5 Decouple rocksdb dependency from ethcore (#8320)
* Move client DB opening logic to CLI

* Move restoration db open logic to CLI

This adds KeyValueDBHandler which handles opening a new database, thus allow us to move the restoration db open logic
out of ethcore.

* Move rocksdb's compactionprofile conversion to CLI

* Move kvdb_rocksdb as test dependency for ethcore

* Fix tests due to interface change

* Fix service tests

* Remove unused migration dep for ethcore
2018-04-09 14:21:37 +02:00
lihuafeng
9436e88d27 remove the clone operation of code_cache (#8334)
* 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.
2018-04-09 11:35:54 +02:00
Pierre Krieger
27c32d3629
Tweaks and add a Dockerfile for Android (#8036) 2018-04-05 14:38:50 +02:00
Kwang Yul Seo
0d2993e46d Use associated type M::Error instead of Error (#8308) 2018-04-05 11:31:58 +02:00
Wei Tang
e4168c2985 Remove InvalidParentHash in favor of assert! (#8300)
* Remove InvalidParentHash in favor of assert!

* Typo: assert test true case
2018-04-05 11:03:25 +02:00
Wei Tang
ff0ce70169 Decouple timestamp open-block-assignment/verification to Engine (#8305) 2018-04-05 10:11:21 +02:00
Andronik Ordian
811d165458 Validate if gas limit is not zero (#8307) 2018-04-05 00:14:59 +09:00
East Coin
d57944ffb9 Implement Easthub chain spec (#8295) 2018-04-04 23:00:21 +09:00
Dmitry Kashitsyn
b2d338bf35 Ethcore now uses Rayon 1.0 as a dependency (#8296) (#8304) 2018-04-04 21:05:21 +09:00
Pierre Krieger
e12a5159a8 Cleaner binary shutdown system (#8284)
* Cleaner shutdown system when executing

* Simplify set_exit_handler for Client

* Minor change

* Fix submodule
2018-04-04 11:50:28 +02:00
Dmitry Kashitsyn
0455aa96bf Ethcore now uses rayon to 0.9 as a dependency (#8296) (#8302) 2018-04-04 11:50:01 +02:00
Wei Tang
9aaedad64f Include suicided accounts in state diff (#8297)
* Include suicided accounts in state diff

* Shorten form match -> if let

* Test suicide trace diff in State
2018-04-04 18:49:43 +09:00
Marek Kotewicz
ea6b0ec164
remove evmjit (#8229)
* removed not working evmjit, closes #8192 closes #6205

* removed evmjit from build scripts

* fixed parity compile error

* removed evmjit cli options

* fixed invalid test config files
2018-04-04 18:07:49 +09:00
André Silva
dcaff6f4c8 Auto-updater improvements (#8078)
* updater: refactor updater flow into state machine

* updater: delay update randomly within max range

* updater: configurable update delay

* updater: split polling and updater state machine step

* updater: drop state to avoid deadlocking

* updater: fix fetch backoff

* updater: fix overflow in update delay calculation

* updater: configurable update check frequency

* updater: fix update policy frequency comparison

* updater: use lazy_static for platform and platform_id_hash

* updater: refactor operations contract calls into OperationsClient

* updater: make updater generic over operations and fetch client

* updater: fix compilation

* updater: add testing infrastructure and minimal test

* updater: fix minor grumbles

* updater: add test for successful updater flow

* updater: add test for update delay

* updater: add test for update check frequency

* updater: mock time and rng for deterministic tests

* updater: test backoff on failure

* updater: add test for backoff short-circuit on new release

* updater: refactor to increase readability

* updater: cap maximum backoff to one month

* updater: add test for detecting already downloaded update

* updater: add test for updater disable on fatal errors

* updater: add test for pending outdated fetch

* updater: test auto install of updates

* updater: add test for capability updates

* updater: fix capability update

* updater: use ethabi to create event topic filter

* updater: decrease maximum backoff to 1 day

* updater: cap maximum update delay with upcoming fork block number

* updater: receive state mutex guard in updater_step

* updater: overload execute_upgrade to take state mutex guard

* updater: remove unnecessary clone of latest operations info

* updater: remove latest operations info clone when triggering fetch
2018-04-03 16:49:23 +02:00
ellaismer
99a13c4e66 Cleanup Ellaism bootnodes (#8276)
Removed several bootnodes known not to be running anymore. Added two new ones.
2018-04-03 21:58:24 +09:00
Tomasz Drwięga
9f775a7673 Remove RefCell from Header (#8227)
* Cache RLP and header hashes.

* Refactor header - WiP

* Avoid decoding laster header.

* Pre-compute hashes for Sealed/Locked block.

* Use accrue bloom. Closes ##8241
2018-04-03 17:01:28 +09:00
Wei Tang
d477670cb9 Typo fix: todo with no content (#8292) 2018-04-03 09:32:38 +02:00
Tomasz Drwięga
9108a3bb50 Bump ethabi & ethereum-types. (#8258)
* Bump ethabi & ethereum-types.

* Fix test.

* Fix hex encodings.
2018-04-02 12:12:52 +01:00
Tomasz Drwięga
5ea4c22868 Supress TemporaryInvalid verification failures. (#8256) 2018-04-02 11:30:26 +01:00
Ryan Leung
9c9ddaccec use constant durations (#8278)
* use constant durations

* fix CI

* address comments
2018-04-02 10:47:56 +02:00
Wei Tang
68a08df9c3 Typo fix: Mode doc - RLP should be client (#8283) 2018-03-31 15:41:53 +02:00
Sergey Pepyakin
cab073ba00 Add missing license header for runtime.rs (#8252)
* Add missing license header for runtime.rs

* Update year
2018-03-29 13:48:57 +01:00
Andrew Jones
e3f7b70c38 Replace all Rlp usages with UntrustedRlp except for ethcore views (#8233)
* Replace Rlp with UntrustedRlp and unsafely unwrap

All Rlp methods return Result<_,DecoderError> now, so for this first
pass each will be marked with `expect("TODO")`. In the next pass we can
categorise figure out how to handle each case.

* Handle DecoderError for tendermint message

* Unwrap rlp results in TestBlockcChainClient

Rlp should be valid since created manually in tests

* Replace `use rlp::*` with explicit imports

* Remove rlp decode unwraps from light cli request

* Structured rlp encoding for curr best and latest in header chain

* Propogate decoder errors from send_packet

* Fix body uncles rlp index

* Use BodyView in sync and `expect` rlp errors

* Revert bbf28f removing original Rlp for this phase

This can be done again in the next phase, in order that we can leave the ethcore views unchanged

* Restore legacy Rlp and UntrustedRlp

Use legacy Rlp for ethcore views. Will redo replacing Rlp with UntrustedRlp in  a subsequent PR

* Fix tests

* Replace boilerplate Encodable/Decodable with derive

* Use BlockView instead of Rlp, remove unwrap

* Remove rlp test_cli unwraps by using BlockView instead of Rlp directly

* Remove unneccesary change to use borrowed hash

* Construct sync block using new_from_header_and_body
2018-03-29 11:19:45 +02:00
Varunram Ganesh
0c7f998c25 Update musicoin spec in line with gmc v2.6.2 (#8242) 2018-03-28 14:11:49 +02:00
Marek Kotewicz
23ea4798e0 fixed ethcore tx_filter (#8200) 2018-03-28 10:59:16 +01:00
Marek Kotewicz
06a7ca221c
node-filter does not use ChainNotify (#8231)
* node-filter does not use ChainNotify

* fixed failing test
2018-03-28 11:32:44 +09:00
Pierre Krieger
04931618ed
Implement hardcoded sync in the light client (#8075)
* Implement hardcoded sync

* Fix concerns

* Remove artifact

* Fix cli tests

* Fix compilation

* Update hardcoded sync block

* Don't use any data fetch for the light service
2018-03-27 13:56:59 +02:00
Pierre Krieger
dbc4d85f0a Update some of the dependencies for WASM (#8223) 2018-03-27 11:35:51 +09:00
Nikolay Volf
bd45cd4a5e
bump wasmi version (#8209) 2018-03-26 16:55:48 +08:00
James Ray
ca0045482c Returns number of topcis to take fr.. (#8199) 2018-03-23 17:16:20 +09:00
Nikolay Volf
a60d0e440d bump wasm libs (#8171) 2018-03-21 10:47:25 +01:00
lihuafeng
1b4d9c2d39 Some tiny modifications. (#8163)
1. fix some typo in the comment.
2. sort the order of methods in 'impl state::Backend for StateDB`
2018-03-20 15:46:03 +01:00
Denis S. Soldatov aka General-Beck
e25a660a11
fix wasmi x32 builds (#8155)
* fix wasmi x32 builds

* Update Cargo.toml
2018-03-19 18:42:51 +03:00
André Silva
a7887fa9f1 Postpone Kovan hard fork (#8137)
* ethcore: postpone Kovan hard fork

* util: update version fork metadata
2018-03-19 11:23:12 +01:00
Alexey
acd7192b17 Fix comment for fn gas() in wasm/runtime (#8122)
* Update runtime.rs

* Update runtime.rs
2018-03-15 15:34:11 +03:00
Marek Kotewicz
0e548ce7c5
fix trace filter returning returning unrelated reward calls, closes #8070 (#8098) 2018-03-14 20:27:57 +01:00
Toralf Wittner
322dfbcd78 Replace reqwest with hyper (#8099)
* Very primitive test of the Client API

* [WIP] getting rid of request

* Add support for redirects.

* Remove CpuPool from `fetch::Client`.

* Adapt code to API changes and fix tests.

* Use reference counter to stop background thread.

On `clone` the counter is incremented, on `drop` decremented. Once 0 we
send `None` over the channel, expecting the background thread to end.

* Fix tests.

* Comment.

* Change expect messages.

* Use local test server for testing fetch client.

* Ensure max_size also in BodyReader.

* Replace `Condvar` with `sync_channel`.

* Re-export `url::Url` from `fetch` crate.

* Remove spaces.

* Use random ports in local test server.
2018-03-14 13:40:54 +01:00
Nikolay Volf
1bad20ae38
more dos protection (#8104) 2018-03-14 15:27:56 +03:00
Pierre Krieger
113c35af0a Remove the time dependency where possible (#8100) 2018-03-14 12:29:52 +01:00
Alexey
5c47116889 fix comment for gas extern in Wasm runtime (#8101) 2018-03-14 12:27:18 +01:00
Niklas Adolfsson
23fc5517b5 Replace std::env::temp_dir with tempdir in tests (#8103)
* std::env::temp_dir -> tempdir in test context

* fix lifetime issue so tempdir removes tmpfiles
2018-03-14 12:26:20 +01:00
Tomasz Drwięga
102bc7809f Additional data in EVMTestClient (#7964)
* Small changes to allow better re-use of EvmTestClient

* Expose logs.

* add outcome to TransactResult

* Fix submodule.

* Fix json tests.

* Fix evmbin.
2018-03-13 12:54:17 +01:00
Marek Kotewicz
de72643898
ethcore-service (#8089)
* ethcore test::helpers cleanup

* ethcore-service
2018-03-13 11:49:57 +01:00
Marek Kotewicz
66f3c50842 revert removing blooms (#8066)
* Revert "fix traces, removed bloomchain crate, closes #7228, closes #7167"

This reverts commit 1bf62038678295e5586f02a38a0c5aab9a9efe62.

* Revert "fixed broken logs (#7934)"

This reverts commit f8a2e53f3e.

* fixed broken logs

* bring back old lock order

* remove migration v13

* revert CURRENT_VERSION to 12 in migration.rs
2018-03-12 20:15:55 +00:00
Marek Kotewicz
373fdb65e9
ethcore test::helpers cleanup (#8086) 2018-03-12 18:05:52 +01:00
Nikolay Volf
58a1671076
add some dos protection (#8084) 2018-03-12 15:55:28 +03:00
Nikolay Volf
e0a21e5aae WASM libraries bump (#7970)
* update wasmi, parity-wasm, wasm-utils to latest version

* Update to new wasmi & error handling

* also utilize new stack limiter

* fix typo

* replace dependency url

* Cargo.lock update
2018-03-12 11:37:32 +00:00
Nikolay Volf
06fa900504 Add Kovan WASM activation blocknumber (#8057) 2018-03-12 10:55:44 +01:00
Tomasz Drwięga
d716bae3d5 Max code size on Kovan (#8067)
* Enable code size limit on kovan

* Fix formatting.
2018-03-07 15:11:09 +01:00
Marek Kotewicz
f54944bbfc make blockchain functions more idiomatic, avoid needless writes to cache_man (#8054) 2018-03-06 19:44:05 +01:00
Pierre Krieger
eeee90def5 Abstract devp2p (#8048)
* Rename ethcore-network to ethcore-network-devp2p

* Fix typo

* Extract generic traits into util/network

* Simplify util/network

* Fix devp2p tests

* Remove old feature

* Fix RPC tests
2018-03-05 11:56:35 +01:00
Marek Kotewicz
f864f72bb5 prelude to the block module cleanup (#8025)
* prelude to block cleanup

* fixed tests
2018-03-04 19:31:26 +01:00
Rando
6623de4e61 Add MCIP-6 Byzyantium transition to Musicoin spec (#7841)
* Add test chain spec for musicoin byzantium testnet

* Add MCIP-6 Byzyantium transition to Musicoin spec

* Update mcip6_byz.json

* ethcore: update musicoin byzantium block number

* ethcore: update musicoin byzantium block number

* ethcore: update musicoin bootnodes

* Update musicoin.json

* Update musicoin.json

* More bootnodes.
2018-03-04 16:18:51 +01:00
Rando
33284e988e
Bump master to 1.11.0 (#8021)
* Bump master to 1.11.0

* Bump price-info

* Bump mac installer version

* Fix gitlab builds
2018-03-03 22:02:33 +01:00
Dmitry Kashitsyn
9d7d6f7108 Client refactoring (#7038)
* Improves `BestBlock` comment

* Improves `TraceDB` comment

* Improves `journaldb::Algorithm` comment.

Probably the whole enum should be renamed to `Strategy` or something alike.

* Comments some of the `Client`'s fields

* Deglobs client imports

* Fixes comments

* Extracts `import_lock` to `Importer` struct

* Extracts `verifier` to `Importer` struct

* Extracts `block_queue` to `Importer` struct

* Extracts `miner` to `Importer` struct

* Extracts `ancient_verifier` to `Importer` struct

* Extracts `rng` to `Importer` struct

* Extracts `import_old_block` to `Importer` struct

* Adds `Nonce` trait

* Adds `Balance` trait

* Adds `ChainInfo` trait

* Fixes imports for tests using `chain_info` method

* Adds `BlockInfo` trait

* Adds more `ChainInfo` imports

* Adds `BlockInfo` imports

* Adds `ReopenBlock` trait

* Adds `PrepareOpenBlock` trait

* Fixes import in tests

* Adds `CallContract` trait

* Fixes imports in tests using `call_contract` method

* Adds `TransactionInfo` trait

* Adds `RegistryInfo` trait

* Fixes imports in tests using `registry_address` method

* Adds `ScheduleInfo` trait

* Adds `ImportSealedBlock` trait

* Fixes imports in test using `import_sealed_block` method

* Adds `BroadcastProposalBlock` trait

* Migrates `Miner` to static dispatch

* Fixes tests

* Moves `calculate_enacted_retracted` to `Importer`

* Moves import-related methods to `Importer`

* Removes redundant `import_old_block` wrapper

* Extracts `import_block*` into separate trait

* Fixes tests

* Handles `Pending` in `LightFetch`

* Handles `Pending` in filters

* Handles `Pending` in `ParityClient`

* Handles `Pending` in `EthClient`

* Removes `BlockId::Pending`, partly refactors dependent code

* Adds `StateInfo` trait

* Exports `StateOrBlock` and `BlockChain` types from `client` module

* Refactors `balance` RPC using generic API

* Refactors `storage_at` RPC using generic API

* Makes `MinerService::pending_state`'s return type dynamic

* Adds `StateOrBlock` and `BlockChain` types

* Adds impl of `client::BlockChain` for `Client`

* Exports `StateInfo` trait from `client` module

* Missing `self` use

To be fixed up to "Adds impl of `client::BlockChain` for `Client`"

* Adds `number_to_id` and refactors dependent RPC methods

* Refactors `code_at` using generic API

* Adds `StateClient` trait

* Refactors RPC to use `StateClient` trait

* Reverts `client::BlockChain` trait stuff, refactors methods to accept `StateOrBlock`

* Refactors TestClient

* Adds helper function `block_number_to_id`

* Uses `block_number_to_id` instead of local function

* Handles `Pending` in `list_accounts` and `list_storage_keys`

* Attempt to use associated types for state instead of trait objects

* Simplifies `state_at_beginning`

* Extracts `call` and `call_many` into separate trait

* Refactors `build_last_hashes` to accept reference

* Exports `Call` type from the module

* Refactors `call` and `call_many` to accept state and header

* Exports `state_at` in `StateClient`

* Exports `pending_block_header` from `MinerService`

* Refactors RPC `call` method using new API

* Adds missing parentheses

* Refactors `parity::call` to use new call API

* Update .gitlab-ci.yml

fix gitlab lint

* Fixes error handling

* Refactors `traces::call` and `call_many` to use new call API

* Refactors `call_contract`

* Refactors `block_header`

* Refactors internal RPC method `block`

* Moves `estimate_gas` to `Call` trait, refactors parameters

* Refactors `estimate_gas` in RPC

* Refactors `uncle`

* Refactors RPC `transaction`

* Covers missing branches

* Makes it all compile, fixes compiler grumbles

* Adds casts in `blockchain` module

* Fixes `PendingBlock` tests, work on `MinerService`

* Adds test stubs for StateClient and EngineInfo

* Makes `state_db` public

* Adds missing impls for `TestBlockChainClient`

* Adds trait documentation

* Adds missing docs to the `state_db` module

* Fixes trivial compilation errors

* Moves `code_hash` method to a `BlockInfo` trait

* Refactors `Verifier` to be generic over client

* Refactors `TransactionFilter` to be generic over client

* Refactors `Miner` and `Client` to reflect changes in verifier and txfilter API

* Moves `ServiceTransactionChecker` back to `ethcore`

* Fixes trait bounds in `Miner` API

* Fixes `Client`

* Fixes lifetime bound in `FullFamilyParams`

* Adds comments to `FullFamilyParams`

* Fixes imports in `ethcore`

* Fixes BlockNumber handling in `code_at` and `replay_block_transactions`

* fix compile issues

* First step to redundant trait merge

* Fixes compilation error in RPC tests

* Adds mock `State` as a stub for `TestClient`

* Handles `StateOrBlock::State` in `TestBlockChainClient::balance`

* Fixes `transaction_count` RPC

* Fixes `transaction_count`

* Moves `service_transaction.json` to the `contracts` subfolder

* Fixes compilation errors in tests

* Refactors client to use `AccountData`

* Refactors client to use `BlockChain`

* Refactors miner to use aggregate traits

* Adds `SealedBlockImporter` trait

* Refactors miner to use `SealedBlockImporter` trait

* Removes unused imports

* Simplifies `RegistryInfo::registry_address`

* Fixes indentation

* Removes commented out trait bound
2018-03-03 18:42:13 +01:00
Marek Kotewicz
87f893265d fix for verify_block_basic crashing on invalid transaction rlp (#8032) 2018-03-01 19:55:24 +01:00
Pierre Krieger
d4205da484 Extract the hard dependency on rocksdb from the light client (#8034)
* Extract the hard dependency on rocksdb from the light client

* Remove TODO
2018-03-01 19:53:15 +01:00
Marek Kotewicz
ca0d1f5eb7 fixed parsing ethash seals and verify_block_undordered (#8031) 2018-03-01 19:13:20 +01:00
Marek Kotewicz
9fec2142ae clean up account fmt::Debug (#7983) 2018-02-27 18:37:36 +01:00
Marek Kotewicz
e32b600530 improve quality of vote_collector module (#7984) 2018-02-27 18:29:43 +01:00
Marek Kotewicz
df63341eb4
ExecutedBlock cleanup (#7991)
* ExecutedBlock cleanup

* authority round makes only one call to note_rewards

* move Tracing from block to trace module

* removed BlockRef
2018-02-27 18:22:56 +01:00
Marek Kotewicz
eff5cabb3f remove wildcard imports from views, make tests more idiomatic (#7986) 2018-02-23 20:01:33 +01:00
Marek Kotewicz
f9d5d618dc moved PerfTimer to a separate crate - "trace-time" (#7985) 2018-02-23 19:49:08 +01:00
Marek Kotewicz
893979b5da clean up ethcore::spec module imports (#7990)
* clean up ethcore::spec module imports

* fixed missing reimport
2018-02-23 19:37:23 +01:00
Marek Kotewicz
5cf6684461 fix traces, removed bloomchain crate, closes #7228, closes #7167 (#7979) 2018-02-23 10:29:11 +01:00
Marek Kotewicz
73756ce262 simplify compression and move it out of rlp crate (#7957)
* simplify compression and move it out of rlp crate

* removed lazy_static dependency from rlp
2018-02-23 10:12:52 +01:00
Marek Kotewicz
ee93be80c0
removed old migrations (#7974)
* removed old migrations

* improve SimpleMigration

* fixed migration tests

* fixed redundant whitespace

* add ToV13 migration which removes bloom groups

* bump CURRENT_VERSION of db
2018-02-22 14:53:10 +01:00
Tomasz Drwięga
d90ab40a78 Detect too large packets in snapshot sync. (#7977) 2018-02-22 14:52:29 +01:00
Marek Kotewicz
f8a2e53f3e fixed broken logs (#7934)
* fixed broken logs

* bring back old lock order

* removed bloom groups from blockchain

* revert unrelated changes

* simplify blockchain_block_blooms
2018-02-22 11:22:56 +01:00
Marek Kotewicz
5b4abec2db removed redundant Bloom conversions (#7932)
* removed redundant Bloom conversions

* fixed broken tests
2018-02-19 13:08:33 +00:00
Nikolay Volf
684322cd6f Kovan WASM fork code (#7849)
* kovan fork code

* introduce ethcore level vm_factory and let it fail

* fix json tests

* wasmcosts as option

* review changes

* wasm costs in parser

* fix evm tests

* review fixes

* fix test

* remove redundant json field
2018-02-19 12:27:42 +01:00
Marek Kotewicz
605f3b0381
bring back trie and triehash benches (#7926) 2018-02-19 12:03:54 +01:00
Marek Kotewicz
4bda6efed0
removed redundant PodAccount::new method (#7928)
* removed redundant PodAccount::new method

* fixed failing test
2018-02-19 10:58:04 +01:00
Marek Kotewicz
b77771171d
removed dummy wrapper structure - LogGroupPosition (#7922) 2018-02-19 10:52:33 +01:00
Marek Kotewicz
76a098114f simplify Client::filter_traces method (#7936) 2018-02-18 23:02:02 +01:00
Pierre Krieger
364a1fa5a8 Fix a division by zero in light client RPC handler (#7917) 2018-02-17 21:54:39 +01:00
Marek Kotewicz
f905a1676f triehash optimisations (#7920) 2018-02-16 20:24:16 +01:00
Marek Kotewicz
ff0c44c060
removed redundant Blockchain::db method (#7919) 2018-02-16 19:43:19 +01:00
Marek Kotewicz
ec34d50459
removed redundant Blockchain::rewind method (#7918) 2018-02-16 19:43:05 +01:00
Tomasz Drwięga
236a4aac22 Pending transactions subscription (#7906)
* Pending transactions subscription.

* Pending transactions Pub-Sub

* Add light client support.

* Remove redundant Ok
2018-02-16 16:51:34 +01:00
Marek Kotewicz
899dd0ff4b
removed redundant otry! macro from ethcore (#7916)
* removed redundant otry! macro from ethcore

* removed redundant otry! macro from parity
2018-02-16 16:37:12 +01:00
Marek Kotewicz
c6b931766c Make block generator easier to use (#7888)
* Make block generator easier to use

* applied review suggestions

* rename BlockMetadata -> BlockOptions

* removed redundant uses of blockchain generator and genereator.next().unwrap() calls
2018-02-16 10:11:29 +01:00
Tomasz Zdybał
f8618dd02a ECIP 1041 - Remove Difficulty Bomb (#7905)
Enable difficulty bomb defusion at block:
 - 5900000 on Ethereum Classic mainnet,
 - 2300000 on morden testnet.

Reference:
https://github.com/ethereumproject/ECIPs/blob/master/ECIPs/ECIP-1041.md
2018-02-16 10:09:49 +01:00
André Silva
aab63c339d Aura: Broadcast empty step messages instead of creating empty blocks (#7605)
* aura: broadcast empty step message instead of sealing empty block

* aura: add empty_step messages to seal

* aura: include parent_hash in empty step message

* aura: verify received empty step messages

* aura: verify empty step messages in block

* aura: fix dead lock on empty_steps

* aura: fix EmptyStep Encodable

* aura: take number of empty steps into account in chain score

* aura: use empty step signers for finality

* aura: add empty "empty step" messages to seal when reading from spec

* aura: fix EmptyStep rlp encoding

* aura: use Vec<u8> instead of Bytes

* aura: fix block empty step verification

* Update .gitlab-ci.yml

fix lint

* aura: fix accumulation of empty step signatures for finality

* aura: include empty steps in seal signature

* aura: configurable max number of empty steps

* engine: pass block header to seal_fields method

This is necessary to make the number of seal fields dynamic,
e.g. activating a transition on a certain block number that changes
the seal.

* aura: add transition to enable empty step messages

* aura: clear old empty step messages on verify_block_external

* aura: ignore empty step messages from the future

* aura: report skipped primaries when empty steps are not enabled

* aura: fix tests

* aura: report misbehavior

* aura: add tests for rolling finality with multiple signatures

* engine: fix validator set test

In this test the block validation wasn't failing because the block was in the
future (expected failure) but was instead failing because the author of the
block isn't the expected authority. Since we added reporting of blocks produced
by the wrong authority this test started failing.

* aura: reward all the authors of empty step messages

* aura: fix reward attribution for new blocks

* aura: add tests for empty steps broadcasting and inclusion in blocks

* aura: reduce size of empty step messages in seal

* aura: add test for empty step inclusion in blocks

* aura: add test for rewarding of empty steps

* aura: add test for empty steps validation

* aura: fix rlp encoding of sealed empty step

* aura: fix grumbles
2018-02-15 01:39:29 +01:00
André Silva
d1815eec55 Fix wallet import (#7873)
* rpc: generate new account id for imported wallets

* ethstore: handle duplicate wallet filenames

* ethstore: simplify deduplication of wallet file names

* ethstore: do not dedup wallet filenames on update

* ethstore: fix minor grumbles
2018-02-14 14:21:58 +01:00
Svyatoslav Nikolsky
1ca1fba8cf read registry_address from given block (#7866) 2018-02-12 18:02:48 +01:00
Alexey
a30de1b8d8 Clean up docs formatting for Wasm runtime (#7869)
* Clean up docs formatting for Wasm runtime

* Update runtime.rs
2018-02-12 17:59:41 +01:00
Nikolay Volf
fab03398dd disable internal memory (#7842) 2018-02-12 11:19:43 +01:00
Marek Kotewicz
c060d9584d
ethabi version 5 (#7723)
* Refactor updater to use ethabi-derive

* Grumble: do_call type alias

* Empty commit to trigger test re-run

* migration to ethabi-5.0

* migration to ethabi-5.0 in progress

* use ethabi_deriven to generate TransactAcl contract

* use ethabi_deriven to generate Registry contract

* hash-fetch uses ethabi_derive, removed retain cycle from updater, fixed #7720

* node-filter crate uses ethabi_derive to generate peer_set contract interface

* use LruCache in node-filter instead of HashMap

* validator_set engine uses ethabi_derive

* ethcore does not depend on native_contracts

* miner does no depend on native_contracts

* secret_store does not use native_contracts (in progress)

* removed native-contracts

* ethcore and updater does not depend on futures

* updated ethereum-types

* fixed all warnings caused by using new version of ethereum-types

* updated ethabi_derive && ethabi_contract to get rid of warnings

* removed another retain cycle in updater, fixed following minor version on update

* moved contracts out of native_contracts res

* updated ethabi_contract

* fixed failing test

* fixed failing test

* there is no need to create two contracts of the same kind any more

* simplify updater::ReleaseTrack conversion into u8 and add several tests for it

* applied review suggestions

* applied review suggestions
2018-02-09 09:32:06 +01:00
Pierre Krieger
2c60a53fef Randomize the peer we dispatch to (#7844) 2018-02-08 21:36:46 +01:00
Tomasz Drwięga
a59f6d9bd2 Move updater metadata to Cargo.toml of parity-version. (#7832) 2018-02-08 12:38:56 +01:00
Afri Schoedon
a487182e92
Add new EF ropstens nodes. (#7824)
* Add new EF ropstens nodes.

* Fix tests
2018-02-08 12:38:18 +01:00
Nikolay Volf
0a7cebe316 adjust storage update evm-style (#7812) 2018-02-06 11:57:29 +01:00
Nikolay Volf
fb4582a90e wasmi interpreter (#7796) 2018-02-05 20:59:27 +01:00
Afri Schoedon
0ea1c41573 Update ropsten.json (#7776) 2018-02-01 16:23:46 +00:00
Afri Schoedon
6dec16bb41
Enable byzantium features on non-ethash chains (#7753)
* Enable byzantium on dev chain

* Enable byzantium on constractor spec

* Enable byzantium on aura specs

* Enable byzantium on tendermint chain spec

* Enable byzantium on null chain spec

* Fix tests

* Fix test
2018-02-01 13:42:56 +01:00
Dmitry Kashitsyn
a412f7cca6 Removes redundant parentheses, whitelists them in generated code (#7721) 2018-01-31 09:48:37 +01:00
Marek Kotewicz
f43e355254
Replace RandomTempDir with tempdir::Tempdir (#7624)
* Remove GuardedTempResult

* Remove RandomTempPath

* ethcore does not depend on devtools
2018-01-19 17:32:53 +01:00
Marek Kotewicz
6bebb9e74a
Moved StopGaurd to it's own crate (#7635) 2018-01-19 13:46:31 +01:00
Marek Kotewicz
d430e7f4e2
Updated dependencies (#7628)
* Updated few dependencies

* Updated parking_lot to 0.5

* Updated backtrace to 0.3.5

* Updated crossbeam to 0.3
2018-01-19 13:46:11 +01:00
Tomasz Drwięga
ad44855a1b Fix Temporarily Invalid blocks handling (#7613)
* Handle temporarily invalid blocks in sync.

* Fix tests.
2018-01-19 10:38:59 +01:00
Robert Habermeier
2c426defd9
remove check_hangup hack now that is_canceled exists (#7620) 2018-01-18 18:19:04 +01:00
Tomasz Drwięga
709fbff067 Std-json format for VM traces (#7262)
* Std-json logging.

* fixed merge with master
2018-01-18 10:32:22 +01:00
Marek Kotewicz
0c01db4a49
separated ethcore_migrations from ethcore (#7586)
* separated ethcore_migrations from ethcore

* fixed authorship nitpick

* make ethcore_migrations related exports and imports more consistent
2018-01-17 22:11:13 +01:00
Marek Kotewicz
9adee532a0
bump some of our core dependencies (#7563)
* updated ethereum-types and tiny-keccak

* Updated several deps

* Updated several more dependencies

* Modify dummy file to trigger ci

* fixed update of memmap to 0.6 in ethash crate

* Fixed fetch after update to latest reqwest

* Updated jsonrpc-core with fixes for serde

* add expects in util/version/build.rs
2018-01-17 11:45:29 +01:00
Marek Kotewicz
7d49dd4727
Fixed delegatecall's from/to (#7568)
* Fixed delegatecall's from/to, closes #7166

* added tests for delegatecall traces, #7167
2018-01-17 10:44:11 +01:00
Marek Kotewicz
36ba004c29
removed redundant ethcore/basic_types.rs (#7584) 2018-01-17 10:35:43 +01:00
Alexey
534692cdae [Wasm] memcmp fix and test added (#7590)
* [Wasm] memcmp fix and test added

* [Wasm] use reqrep_test! macro for memcmp test
2018-01-17 13:13:17 +04:00
Robert Habermeier
c7aed335ce update back-references more aggressively after answering from cache (#7578) 2018-01-17 09:45:36 +01:00
Alexey
d927320719 [WASM] mem_cmp added to the Wasm runtime (#7539)
* mem_cmp added to the Wasm runtime

* schedule.wasm.mem_copy to schedule.wasm.mem_cmp for mem_cmp
2018-01-15 18:24:24 +04:00
Marek Kotewicz
668d910c44
bloom refactor (#7475)
* ethereum-types refactor in progress

* ethereum-types refactor in progress

* ethereum-types refactor in progress

* ethereum-types refactor in progress

* ethereum-types refactor finished

* cleanup bloom mess

* simplify usage of Bloom in few places

* removed obsolete util/src/lib.rs

* removed commented out code

* ethereum-types 0.1.4

* updated ethereum-types and tiny-keccak
2018-01-14 22:43:28 +01:00
Tomasz Drwięga
f044b61f42 Extract some parts of miner from ethcore. (#7353)
* Move miner away from ethcore.

* Fix ethcore to use miner/transaction.

* Fix tests and warnings.

* fixed incorrect merge of the test in the documentation
2018-01-11 17:49:10 +01:00
Marek Kotewicz
e95b093483 dissolve util (#7460)
* ethereum-types refactor in progress

* ethereum-types refactor in progress

* ethereum-types refactor in progress

* ethereum-types refactor in progress

* ethereum-types refactor finished

* removed obsolete util/src/lib.rs

* removed commented out code
2018-01-10 15:35:18 +03:00
tzapu
df5d27d516 added a new RPC call trace_replayBlockTransactions (#7366)
* intial add trace_replayBlockTransactions

* cleanup timing calls
add execution proof

* WIP implementing changes

* fix for trace_replayBlockTransactions rpc call

* cleanup comments

* cleanup, proof,
can't workout lifetime issues yet

* Fix lifetimes issue.

* naive rpc test

* updated docs
2018-01-10 11:34:34 +01:00
Svyatoslav Nikolsky
b685b7fae3 SecretStore: tx retry pattern (#7323)
* SecretStore: auto migrate initial commit

* SecretStore: flush automigrate

* SecretStore: debug flush

* SecretStore: added migration to KeyServerSet contract

* SecretStore: flush automigrate

* SecretStore: flush before testing

* SecretStore: flush

* SecretStore: flush

* SecretStore: bunch of tests for simple ConnectionTrigger && KeyServerSet

* SecretStore: started work on TriggerWithMigration tests

* SecretStore: maintain_session tests

* SecretStore: updated some comments

* SecretStore pass migration_id to ServerSetChangeSession

* SecretStore: fixed lock scope

* SecretStore: fixed error response condition

* SecretStore: fixed ServerSetChange session auto-creation

* SecretStore: update active migration in connector

* removed commented code

* SecretStore: fixed tests compilation

* SecretStore: marked test-related unimplemented-s

* SecretStore: labeled all SS TODOs

* SecretStore: do not read auto-migration stuff when auto-migration is disabled + stripped KeyServerSet contract ABI

* SecretStore: ignore duplicated addresses in KeyServerSet

* fied compilation

* SecretStore: wait for N block confirmations before starting auto-migration

* SecretStore: more tests for migration delay

* SecretStore: clear current nodes set when KSS contract is uninstalled

* SecretStore: retry transaction interval
2018-01-10 11:33:45 +01:00
Tomasz Drwięga
e4bd4ed060 Use sync wrapper instead of Mutex (#7456) 2018-01-09 16:10:39 +01:00
Afri Schoedon
a553485bbd
Update Parity Mainnet Bootnodes (#7476)
* Update Parity Mainnet Bootnodes

* Replace the Azure HDD bootnodes with the new ones :)
2018-01-08 15:06:08 +01:00
Tomasz Drwięga
33b8f28f62 Advance AuRa step as far as we can and prevent invalid blocks. (#7451)
* Advance AuRa step as far as we can.

* Wait for future blocks.
2018-01-08 14:46:11 +01:00
Afri Schoedon
36e230ee16
Expanse Byzantium update w/ correct metropolis difficulty increment divisor (#7463)
* Byzantium Update for Expanse

Here the changes go. Hope I didnt miss anything.

* expip2 changes - update duration limit

* Fix missing EXPIP-2 fields

* Format numbers as hex

* Fix compilation errors

* Group expanse chain spec fields together

* Set metropolisDifficultyIncrementDivisor for Expanse

* Revert #7437

* Add Expanse block 900_000 hash checkpoint
2018-01-05 13:49:07 +01:00
5chdn
27d8befbad
Remove expanse from available chains 2018-01-03 13:24:27 +01:00
Tomasz Drwięga
56311cf0b5
Merge branch 'master' into td-strict-config 2018-01-03 11:07:08 +01:00
Tomasz Drwięga
e439eae54f
Enable strict config parsing. 2018-01-03 11:05:53 +01:00
André Silva
e114b0b28d Upgrade to RocksDB 5.8.8 and tune settings to reduce space amplification (#7348)
* kvdb-rocksdb: update to RocksDB 5.8.8

* kvdb-rocksdb: tune RocksDB options

* Switch to level-style compaction
* Increase default block size (16K), and use bigger blocks for HDDs (64K)
* Increase default file size base (64MB SSDs, 256MB HDDs)
* Create a single block cache shared across all column families
* Tune compaction settings using RocksDB helper functions, taking into account
  memory budget spread across all columns
* Configure backgrounds jobs based on the number of CPUs
* Set some default recommended settings

* ethcore: remove unused config blockchain.db_cache_size

* parity: increase default value for db_cache_size

* kvdb-rocksdb: enable compression on all levels

* kvdb-rocksdb: set global db_write_bufer_size

* kvdb-rocksdb: reduce db_write_bufer_size to force earlier flushing

* kvdb-rocksdb: use master branch for rust-rocksdb dependency
2018-01-03 11:00:37 +01:00
Marek Kotewicz
6a01113610
Merge pull request #7412 from paritytech/td-trace-failed-calls
Fix tracing failed calls.
2018-01-02 15:43:33 +01:00
Marek Kotewicz
f3e7d94fc4
Merge pull request #7368 from paritytech/td-future-blocks
Wait for future blocks in AuRa
2018-01-02 14:21:50 +01:00
Tomasz Drwięga
c6aea0cae6
Move StateDB to RwLock 2018-01-02 09:43:08 +01:00
Tomasz Drwięga
67a74e155d
Fix tracing failed calls. 2017-12-29 18:11:55 +01:00
Marek Kotewicz
2586eaef92
Merge pull request #7359 from VladLupashevskyi/transactions-permission-contract-fix
Added checking tx-type using transactions permission contract for miners
2017-12-29 11:46:10 +01:00
debris
7b40f1cfe9 Merge branch 'master' into dircrate2 2017-12-29 10:45:11 +01:00
Marek Kotewicz
f8bd6b9f63
Merge pull request #7101 from paritytech/secretstore_kovan
SecretStore: Kovan integration initial version
2017-12-29 05:31:51 -04:00
Tomasz Drwięga
48a15cecf8
Update bootnodes (#7363)
* Updating mainnet bootnodes.

* Add additional parity-beta bootnodes.

* Restore old parity bootnodes and update foudation bootnodes
2017-12-28 15:12:19 +01:00
Vlad Lupashevskyi
45116099c5 Merge remote-tracking branch 'remotes/upstream/master' into transactions-permission-contract-fix 2017-12-28 12:56:21 +02:00
Tomasz Drwięga
a15f62d907
Merge branch 'master' into td-future-blocks 2017-12-27 11:01:08 +01:00
Svyatoslav Nikolsky
c0e7abcc81 Merge branch 'master' into secretstore_kovan 2017-12-27 11:44:28 +03:00
Nicolas Ochem
2e12a2db50 Fix #6209 - introduce standalone dir crate
* created the dir crate in util
* moved code from ethstore/src/dir/paths.rs to dir crate
* rename dir module in ethstore to accounts_dir to distinguish it
  from the dir crate
* changes after @tomusdrw on #6952
2017-12-26 00:54:34 -08:00
Vlad Lupashevskyi
31ffb467f5 Passing verify tx errors to the caller 2017-12-23 00:00:27 +02:00
Vlad Lupashevskyi
0d5603eece Use is_err instead of match 2017-12-22 23:14:24 +02:00
Vlad Lupashevskyi
d6ae6e315e Check tx-type before importing transactions to the queue 2017-12-22 22:50:09 +02:00
Vlad Lupashevskyi
9d35cc1881 "from" replaced with ".into()" 2017-12-22 22:48:37 +02:00
Nikolay Volf
82340c058a
Wasm runtime update (#7356)
* call augmented, wasm-tests updated

* fix all call tests

* fix comments
2017-12-22 21:54:35 +03:00
Marek Kotewicz
d80dd81d77
parity-version pr reopen (#7136)
* parity-version module split from util

removed unused util deps and features

trigger buildbot again

only kvdb links rocksdb

snappy linker issues

* rm snappy

* fixed old version imports
2017-12-22 09:37:39 -04:00
Marek Kotewicz
7c24d0665e
Merge pull request #7355 from paritytech/td-clippy
Get rid of clippy remainings.
2017-12-22 07:09:26 -04:00
Marek Kotewicz
6f516607a1
Merge pull request #7357 from paritytech/unwrap-or
Avoid using ok_or with allocated argument
2017-12-22 06:55:37 -04:00
Nicolas Gotchac
276496fb4b Enable traces for DEV chain (#6949) (#7327) 2017-12-22 06:33:17 +03:00
Vlad Lupashevskyi
24378f3c44 Added checking tx-type using transactions permission contract for miners 2017-12-21 22:42:36 +02:00
Tomasz Drwięga
d6f160e868
Don't check max. 2017-12-21 16:16:55 +01:00
Tomasz Drwięga
7d4e4c7a62
Mark future blocks as temporarily invalid. 2017-12-21 15:34:27 +01:00
Yurii Rashkovskii
d5b81ead71 Problem: AuRa's unsafeties around step duration (#7282)
Firstly, `Step.duration_remaining` casts it to u32, unnecesarily
limiting it to 2^32. While theoretically this is "good enough" (at 3
seconds steps it provides room for a little over 400 years), it is
still a lossy way to calculate the remaining time until the next step.

Secondly, step duration might be zero, triggering division by zero
in `Step.calibrate`

Solution: rework the code around the fact that duration is
typically in single digits and never grows, hence, it can be represented
by a much narrower range (u16) and this highlights the fact that
multiplying u64 by u16 will only result in an overflow in even further
future, at which point we should panic informatively (if anybody's
still around)

Similarly, panic when it is detected that incrementing the step
counter wrapped around on the overflow of usize.

As for the division by zero, prevent it by making zero an invalid
value for step duration. This will make AuRa log the constraint
mismatch and panic (after all, what purpose would zero step duration
serve? it makes no sense within the definition of the protocol,
as finality can only be achieved as per the specification
if messages are received within the step duration, which would violate
the speed of light and other physical laws in this case).
2017-12-21 14:59:09 +01:00
NikVolf
516725abe4 ok_or -> ok_or_else 2017-12-21 16:50:58 +03:00
Tomasz Drwięga
00883e477a
Get rid of clippy remainings. 2017-12-21 11:27:26 +01:00