Commit Graph

239 Commits

Author SHA1 Message Date
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
Tomasz Drwięga
00883e477a
Get rid of clippy remainings. 2017-12-21 11:27:26 +01:00
Tomasz Drwięga
7e3872fddc Maximum uncle count transition (#7196)
* Enable delayed maximum_uncle_count activation.

* Fix tests.

* Defer kovan HF.
2017-12-05 15:57:45 +01:00
keorn
261c0d5368 no default uncles 2017-11-09 23:56:02 +00:00
David Dorgan
bdf1e6afcc Revert "Sync parity-ewf with parity"
This reverts commit f7ba063b22.
2017-10-24 13:31:58 +01:00
David Dorgan
f7ba063b22 Sync parity-ewf with parity 2017-10-24 12:31:50 +01:00
Arkadiy Paronyan
b0c15497e1 Fixed kovan chain validation (#6758)
* Fixed kovan chain validation

* Fork detection

* Fixed typo
2017-10-14 21:59:26 +02:00
arkpar
7234a7c630
Difficulty tests 2017-10-10 14:51:12 +02:00
Afri Schoedon
360ecd3728 Add Musicoin and MCIP-3 UBI hardfork. (#6621)
* Add musicoin chain spec.

* Add musicoin to parity node

* Add musicoin to the wallet

* Add i18n for musicoin

* Align musicoin chain spec with 1.8, ref #6134

* Update musicoin bootnodes

* Prepare MCIP-3 in musicoin chain spec.

* Update musicoin chain spec with contract addresses for MCIP-3

* Extend ethash params by MCIP-3

* Fix musicoin chain spec json

* Use U256 for block rewards.

* Update musicoin registrar

* Fix merge leftovers

* Update musicoin chain spec for latest master

* Bestow MCIP-3 block reward(s).

* Update musicoin registry once and for all

* Align MCIP-3 block reward with go implementation

* Remove mcip3 test chain spec from repository

* Update MCIP-3 block rewards

* Musicoin homestead transition is at 1_150_000

* Expect mcip3 transtion to be properly defined in chain spec.

* Panic handling for mcip to default to regular block rewards if not specified

* Giving mcip3 rewards a useful default value.

* Fix ethjson tests.

* Update musicoin chain spec

* Fix tests 0:)

* Add musicoin mcip3 era test spec.

* Update musicoin chain spec(s)

* Add tests for mcip3 era block rewards

* Fix tests

* Disable byzantium for musicoin

* Pass miner reward to the tracer.

* Allow modifying blockreward in MCIP-3 transition.
2017-10-08 18:17:59 +02:00
Robert Habermeier
bc167a211b Generalize engine trait (#6591)
* move common forks and parameters to common params

* port specs over to new format

* fix RPC tests

* parity-machine skeleton

* remove block type

* extract out ethereum-specific methods into EthereumMachine

* beginning to integrate Machine into engines. dealing with stale transitions in Ethash

* initial porting to machine

* move block reward back into engine

* abstract block reward logic

* move last hash and DAO HF logic into machine

* begin making engine function parameters generic

* abstract epoch verifier and ethash block reward logic

* instantiate special ethereummachine for ethash in spec

* optional full verification in verify_block_family

* re-instate tx_filter in a way that works for all engines

* fix warnings

* fix most tests, further generalize engine trait

* uncomment nullengine, get ethcore tests compiling

* fix warnings

* update a bunch of specs

* re-enable engine signer, validator set, and transition handler

* migrate basic_authority engine

* move last hashes into executedblock

* port tendermint

* make all ethcore tests pass

* json-tests compilation

* fix RPC tests: change in gas limit for new block changed PoW hash

* fix minor grumbles

* validate chainspecs

* fix broken import

* fix transaction verification for pre-homestead
2017-09-26 14:19:08 +02:00
Arkadiy Paronyan
25b35ebddd Byzantium updates (#5855)
* EIP-211 updates

* benchmarks

* blockhash instruction gas cost updated

* More benches

* EIP-684

* EIP-649

* EIP-658

* Updated some tests

* Modexp fixes

* STATICCALL fixes

* Pairing fixes

* More STATICALL fixes

* Use paritytech/bn

* Fixed REVERTing of contract creation

* Fixed more tests

* Fixed more tests

* Blockchain tests

* Enable previously broken tests

* Transition test

* Updated tests

* Fixed modexp reading huge numbers

* Enabled max_code_size test

* Review fixes

* Updated pairing pricing

* missing commas (style)

* Update test.rs

* Small improvements

* eip161abc
2017-09-15 21:07:54 +02:00
Arkadiy Paronyan
eed0e8b03a Transaction permissioning (#6441) 2017-09-05 10:39:50 +01:00
Gav Wood
50495c6898 Merge branch 'master' into Fix-4858 2017-08-29 15:11:05 +02:00
Arkadiy Paronyan
d520aa2633 Connection filter (#6359) 2017-08-29 14:38:01 +02:00
Tomasz Drwięga
f9a08e285c Running state test using parity-evm (#6355)
* Initial version of state tests.

* Refactor state to support tracing.

* Unify TransactResult.

* Add test.
2017-08-28 14:25:16 +02:00
Anton Gavrilov
01ea968d4f Merge with master 2017-08-02 17:24:34 +02:00
debris
bfbeda4ede fixed tests 2017-07-31 20:17:19 +02:00
Anton Gavrilov
5086dc3024 Working test with block reward added 2017-07-31 13:42:34 +02:00
Robert Habermeier
003eef982b Move more params to the common section. (#6134)
* move common forks and parameters to common params

* port specs over to new format

* fix RPC tests
2017-07-31 12:34:29 +02:00
Nikolay Volf
62210fb932 WASM contracts MVP (#5679)
* lifetime issues

* refactor to new 'native env'

* descriptors and such

* wasm mvp continued

* finalized env/ext bindings

* descriptor -> call_args

* inject gas counter

* result processing and engine activation

* tabify some source files

* needs return new

* wasm tests initial

* erradicate warnings

* origin in the descriptor

* update test repo

* payload verification tests

* identity return payload test

* some test description

* dispersion test

* check length here

* suicidal contract

* engine params

* fix typo

* review fixes

* submodule update

* update - purge reserved space

* doc effort

* more review fixes

* fix error message

* fix dependency url

* reorg error handling

* update submodule

* update utils

* update to latest parity-wasm

* tabify

* fix wasm magic header

* update dependencies

* external create and tests

* update to latest tests

* extra trace info

* Update parity-wasm

* update wasm-utils also

* few traces and result handle change

* alter trace content

* fix issues with optimizer, update to latest parity with validator, etc

* static initialization

* license preamble

* update wasm crates and gas costs

* fix grumbles

* bring back lifetime

* fix compilation
2017-07-10 17:42:10 +02:00
debris
61d8f90530 updated serde to version 1.0 2017-07-06 11:36:15 +02:00
Robert Habermeier
d069b98b45 PoA: Wait for transition finality before applying (#5774)
* final engine changes

* migration to v13

* adding and removing pending transitions

* epoch_transition_for

* port snapshot to new engine methods

* final validator set interface

* fix compiler errors

* revert v13/epoch_depth transition

* make call on new epoch

* rolling finality checker

* tests for finality checker

* constructing finality proof upon pending transition

* fix warnings and finality proof checking

* fix compiler warnings in tests

* test fixes

* don't include genesis in finality checking

* change snapshot test chain building logic

* minor refactorings

* fetch epoch transition based on parent, fix divide-by-zero in SimpleList

* fix formatting

* fix ABIs and finality checking in snapshot restoration

* encode signal number in proof

* create more blocks at the end of tests

* update gist to accurate contract code

* test for epoch_transition_for

* fix tests with immediateTransitions parameter

* disable force flag after forcing

* rename ValidatorsChanged to InitiateChange and finalizeSignal to finalizeChange

* a few more validator set tests
2017-06-28 13:17:36 +02:00
Arkadiy Paronyan
57626b60e7 EIP-168, 169: Dust protection (#4757)
* Dust protection

* Track touched accounts in the substate

* Minor alterations
2017-06-28 09:10:57 +02:00
Stewart Mackenzie
d152fa3e85 Ethereum Classic Monetary Policy (#5741)
* Ethereum Classic Monetary Policy

Create a new parameter `ecip1017EraRounds`. When the block number
passes one era rounds, the reward is reduced by 20%.

See https://github.com/ethereumproject/ECIPs/blob/master/ECIPs/ECIP-1017.md

* Update rewards for uncle miners for ECIP1017

In the monetary policy, the rewards are changed from "up to 7/8 of the
reward" to "1/32 of the reward".

* Fix an off-by-one error in ECIP1017 era calculation

According to
https://github.com/ethereumproject/ECIPs/blob/master/ECIPs/ECIP-1017.md,
when in block number 5,000,000, it should still be in Era 1 (which in
our code `era == 0`). So we need to check whether the `rem` equals to
zero and act accordingly when calculating the era.

* `ecip1017_era_rounds` missing from EthashParams when run in build bot

* strip out ecip1017_eras_block_reward function and add unit test
2017-06-19 18:56:37 +02:00
Marek Kotewicz
575c51f5a0 eip214, #4833 (#4851) 2017-06-19 11:41:46 +02:00
Anton Gavrilov
06eb561af5 Duration limit made optional for EthashParams (#5777)
* Duration limit made optional for EthashParams

* Forgotten space added
2017-06-09 12:24:23 +02:00
Arkadiy Paronyan
99bfef2801 EIP-211 RETURNDATACOPY and RETURNDATASIZE (#5678)
* EIP-211

* Optimized memory usage

* Optimized truncation
2017-06-06 18:47:12 +03:00
Arkadiy Paronyan
e6a31e7543 EIP-210 BLOCKHASH changes (#5505)
* EIP-210

* comment
2017-05-30 11:52:33 +02:00
Nikolay Volf
e1fef5c732 Update dependencies and bigint api (#5685)
* update to latest bigint

* bump elastic array and deps

* fix rlp tests

* also update all smallvec deps

* fix doc test

* reduce parking in attempt to fix CI bug

* fix from/into electum bug

* remove duplicate imports
2017-05-24 12:31:33 +02:00
Robert Habermeier
18c3e90dbf Merge pull request #5671 from paritytech/guanqun-add-unit-tests
Guanqun add unit tests
2017-05-23 15:18:11 -04:00
Arkadiy Paronyan
dd004aba9f EIP-140 (#5477) 2017-05-23 16:49:17 +03:00
Guanqun Lu
d35da909db add asserts in ethash.rs 2017-05-20 12:12:16 +08:00
Guanqun Lu
73ad575306 add asserts in genesis.rs 2017-05-20 12:12:16 +08:00
Guanqun Lu
292eb1de62 add asserts in engine.rs 2017-05-20 12:12:16 +08:00
Guanqun Lu
f96731c82b add assets for seal.rs 2017-05-19 22:48:23 +08:00
Guanqun Lu
5c7c30cc4b add asserts in spec param.rs 2017-05-19 22:48:23 +08:00
Guanqun Lu
a61b249d57 add asserts in tendermint.rs 2017-05-19 22:48:23 +08:00
Guanqun Lu
0b4eef48c5 add asserts in instantseal 2017-05-19 22:48:23 +08:00
Guanqun Lu
90b8b612cc add asserts for spec::basic_authority 2017-05-19 22:48:23 +08:00
Guanqun Lu
c0a8eaa3bf add asserts in spec::authority_round's unit test 2017-05-19 22:48:23 +08:00
Guanqun Lu
a0dd77ca01 add asserts in spec::validatorset's unit test 2017-05-19 22:48:23 +08:00
Guanqun Lu
f90802498f add two asserts in unit tests for spec::authority_round 2017-05-19 22:48:23 +08:00
Guanqun Lu
cf0b8b7681 add several new tests for spec::account 2017-05-19 22:48:23 +08:00
keorn
945c1a9478 add monotonic transition to kovan (#5587) 2017-05-15 21:34:01 +01:00
Arkadiy Paronyan
b50fb71dd1 EIP-86 (#4697)
* EIP-86

* Disable EIP-86 auto activation for now
2017-04-19 14:30:00 +02:00
Arkadiy Paronyan
15ae24b541 New state tests (#5418)
* General state tests

* Allow dir name for a test
2017-04-12 13:33:49 +02:00
keorn
84abf5d84f Aura eip155 validation transition (#5362)
* add eip155 validation

* add transition block
2017-04-01 13:21:22 +02:00
keorn
a61b1567d0 Strict validation transitions (#4988)
* ability to make validation stricter

* fix consensus

* remove logger
2017-03-28 10:46:52 +02:00
Marek Kotewicz
23d3b79d9a eip100b (#5027)
* eip100b

* fix eip100b build and tests

* Conventional comparison order
2017-03-27 11:42:40 +02:00
keorn
9fdd0e3a0a Switching ValidatorSet (#4961)
* add multi validator set

* nicer comment

* validate in constructor

* reporting
2017-03-23 13:19:28 +01:00
Tomasz Drwięga
7e87e9e8ad Updating JSON-RPC crates (#4934)
* New version of jsonrpc.

* Better invalid encoding messages

* Fixing deprecated methods of tokio_core

* Using dedicated branch for jsonrpc

* Bump
2017-03-22 07:02:14 +01:00
Robert Habermeier
797a3e1cd9 EIP198 and built-in activation (#4926)
* EIP198 and built-in activation

* address review
2017-03-21 19:36:38 +03:00
Arkadiy Paronyan
43871e393c Additional kovan params (#4892) 2017-03-14 11:41:56 +01:00
keorn
ade5a13f5b Add registrar fields (#4716)
* add registrar field

* use constructor for dev registrar

* fix test
2017-03-02 12:25:55 +01:00
Arkadiy Paronyan
ef7998f473 Max gas limit and min gas price (#4661)
* Max gas limit and min gas price

* Tests

* Limit gas limit ceiling
2017-02-24 17:34:32 +01:00
Tomasz Drwięga
72998d3ce3 Proper default accounts RPCs (#4580)
* Default accounts setting - account provider

* RPC support for default accounts

* Updating JS code

* Rename whitelist to addresses
2017-02-20 16:33:12 +01:00
Tomasz Drwięga
f1e99ea2e4 Serde 0.9 (#4508)
* Porting json

* Dapps

* Rpc & Ethstore

* New ethabi

* Last bunch of fixes

* Fixing last test

* Removing build script

* Adding ethcore-ipc-tests back

* Fixing grumbles

* Fixing blockchain tests (inference regression?)
2017-02-13 18:38:47 +03:00
Tomasz Drwięga
cf348dae60 Persistent tracking of dapps (#4302)
* Tests for RPC

* Extracting dapp_id from Origin and x-parity-origin

* Separate type for DappId

* Persistent tracking of recent dapps

* Fixing tests

* Exposing dapp timestamps

* Fixing import to work on stable

* Fixing test again
2017-01-30 10:59:46 +01:00
Arkadiy Paronyan
c012dfc3ef EIP-98: Optional transaction state root (#4296)
* EIP98: Optional receipt state root

* Use if-else

* Fixing tests
2017-01-25 20:22:48 +01:00
Gav Wood
8404edb656 Fix whitespace (#4299)
* Fix whitespace.

* Update copyright years/owner.

* Push release only for tags.
2017-01-25 18:51:41 +01:00
keorn
ba0209678b ValidatorSet reporting (#4208)
* remove register_account_provider

* build rpc module

* new dummy client

* common EngineSigner struct

* from -> into

* initial report via call

* separate safe from regular contract

* transact_contract

* fix build

* return Signature, docs

* add sign method to some engines

* add safeContract spec

* update specs to new contracts

* use AuthorityRound for contract spec

* add more reporting

* add reporting test

* use gas floor

* shorter
2017-01-24 12:03:58 +03:00
keorn
be30c44179 Validator/authority contract (#3937)
* dir

* simple validator list

* stub validator contract

* make the engine hold Weak<Client> instead of IoChannel

* validator set factory

* register weak client with ValidatorContract

* check chain security

* add address array to generator

* register provider contract

* update validator set on notify

* add validator contract spec

* simple list test

* split update and contract test

* contract change

* use client in tendermint

* fix deadlock

* step duration in params

* adapt tendermint tests

* add storage fields to test spec

* constructor spec

* execute under wrong address

* create under correct address

* revert

* validator contract constructor

* move genesis block lookup

* add removal ability to contract

* validator contract adding validators

* fix basic authority

* validator changing test

* more docs

* update sync tests

* remove env_logger

* another env_logger

* cameltoe

* hold EngineClient instead of Client

* add a comment about lock scope
2017-01-10 12:23:59 +01:00
keorn
fbc9f0d7fb Add block rewards to more Engines (#4055)
* add block rewards

* imports
2017-01-05 21:16:13 +01:00
keorn
e5b3c092c8 Merge branch 'master' into optional-spec 2017-01-03 15:42:56 +01:00
Robert Habermeier
8125b5690c Port try macro to new ? operator. (#3962)
* initial untry sweep

* restore try in ipc codegen, fix inference

* change a few missed try instances
2016-12-27 12:53:56 +01:00
keorn
afc4cd2785 Allow contract constructors in chain spec (#3932)
* constructor spec

* execute under wrong address

* create under correct address

* revert

* move genesis block lookup

* remove env_logger
2016-12-23 18:44:39 +01:00
Igor Artamonov
be75cbfaaa set CHAIN_ID for Classic (#3934)
* configurable CHAIN_ID

* set CHAIN_ID for Ethereum Classic
2016-12-22 13:10:58 +01:00
keorn
552a772cc1 make fields defaulting to 0 optional 2016-12-22 07:06:40 +01:00
keorn
46662899da make spec naming consistent 2016-12-19 14:15:39 +01:00
Gav Wood
d455ac4a40
Merge remote-tracking branch 'origin/master' into dapps-accounts-rpc 2016-12-15 17:12:18 +01:00
Gav Wood
20b2f84d48 Merge pull request #3828 from ethcore/new-dirs
New directory structure
2016-12-15 14:34:01 +01:00
Gav Wood
1ea521ea7d
Merge remote-tracking branch 'origin/master' into dapps-accounts-rpc 2016-12-15 13:51:22 +01:00
keorn
943efc21bb add tendermint seal 2016-12-15 13:41:04 +01:00
Gav Wood
db73b0d66f
Merge remote-tracking branch 'origin/master' into dapps-accounts-rpc 2016-12-15 13:28:37 +01:00
Gav Wood
a74bce2c06 Merge pull request #3759 from ethcore/auth-bft
Tendermint Engine
2016-12-15 13:18:15 +01:00
keorn
8509a183ed deserialize new seal 2016-12-14 12:14:04 +01:00
arkpar
be5fefe772 Merge branch 'master' of github.com:ethcore/parity into new-dirs 2016-12-14 00:04:11 +01:00
keorn
fa504e510f Merge branch 'master' into auth-bft 2016-12-12 21:28:46 +01:00
arkpar
6601fde328 New data paths with upgrade 2016-12-12 16:51:07 +01:00
Gav Wood
94f5501c61
authors & homepage => Parity 2016-12-11 19:43:58 +01:00
Gav Wood
17cc2be4b5
Rename ethcore -> parity in license. 2016-12-11 19:30:54 +01:00
keorn
f3af0f46be Merge branch 'master' into auth-bft 2016-12-10 18:14:35 +01:00
Tomasz Drwięga
4696d7f606 Additional RPCs for dapps accounts management 2016-12-10 12:36:04 +01:00
Gav Wood
5f1fcf95e0
Make *ID names consistent with std Rust (Id) 2016-12-09 23:01:43 +01:00
arkpar
97f358ced9 AuthorityRound network simulation test 2016-12-09 20:38:06 +01:00
arkpar
ca7406773f AuthorityRound network simulation test 2016-12-09 19:27:16 +01:00
keorn
c39d504167 Merge branch 'spec-rlp-loading' into auth-bft 2016-12-05 14:11:06 +00:00
keorn
0860a3a767 ignore variable 2016-12-05 14:09:41 +00:00
keorn
22632e6324 make generic seal take valid rlp 2016-12-05 14:07:31 +00:00
keorn
c946ffebf3 Merge branch 'master' into auth-bft 2016-12-05 11:30:11 +00:00
Gav Wood
1dd13372b6
Merge remote-tracking branch 'origin/master' into rpc-middleware 2016-12-01 19:43:31 -08:00
keorn
155da50fcd Merge branch 'master' into auth-bft 2016-11-30 13:06:21 +00:00
Tomasz Drwięga
e1e7886918 Bumping clippy 2016-11-28 12:23:06 +01:00
Tomasz Drwięga
cd6f565f69 RPC Middleware & Get/Set dapp-specific accounts 2016-11-23 16:27:05 +01:00
keorn
2fa34fd6a8 step transition messaging 2016-11-16 12:43:21 +00:00
keorn
8ac989cbeb Merge remote-tracking branch 'parity/master' into bft 2016-11-16 10:29:54 +00:00
Gav Wood
1daba384cc Merge pull request #3426 from ethcore/auth-round
Authority round consensus engine
2016-11-16 11:18:01 +08:00
Gav Wood
528bf17af5 Restrict max code size to 23999 bytes for EIP-150 and after. 2016-11-15 17:58:28 +01:00
keorn
1c958695c3 timeout loading 2016-11-15 15:25:30 +00:00
keorn
d19e8c5505 Merge remote-tracking branch 'parity/master' into bft 2016-11-15 10:26:37 +00:00