This is a huge change, which includes some changes to replace code that
originally cloned to reuse allocations instead. The updated
`elastic-array` crate renames its consuming `Vec`-conversion method to
`into_vec`, which means that I can do a simple
`sed -i 's/to_vec/into_vec/'` and then fix the compilation errors.
This commit is probably a minor performance win and definitely a
significant readability win.
* 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
* 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
* apply contract constructors at spec load time
* debugging
* do trie updates in two stages
* add lint exception to newly-dead constructor
* squash warning in RPC tests
* kill dead accountdb constructors
* restore accountdb constructors under test configuration
* use provided state root in spec, if it exists
* Add info on forks.
* Add new registry ABI
* Import registry2 & fix exports
* Select ABI based on code hash
* Render new event types (owner not available)
* New registry.
* Rename old chain.
* Fix test.
* Another fix.
* Finish rename.
* state backend trait mirroring state_db API
* minimal state backend trait
make state module public
* fix json tests
* return errors on database corruption
* fix tests, json tests
* fix remainder of build
* add Backend bound on state
* gas_limit for new blocks will divide evenly by 13
* increased PARITY_GAS_LIMIT_DETERMINANT to 37
* separate method for marking mined block
* debug_asserts(gas_limit within protocol range)
* round_block_gas_limit method is now static
* made round_block_gas_limit free-function
* multiplier->multiple [ci skip]
* The front-end for each hard-fork, also EIP-160.
* Address EIP161 a/c
* Include EIP-161b
* EIP-161 part d.
* Fix test build.
* Fix one test, add another.
* Fix use of bloom & renaming.
* Initial groundwork for EIP-155
* Fix minor bug.
* Fix all tests finally.
* Rest of EIP-155.
* Add tests for EIP-155 algorithm.
Update transaction tests validation.
* Minor reformat.
* Address grumbles.
* Remove unused code.
* Fix SUICIDE gas mechanism and add consensus tests.
* Remove commented code.
* Set Frontier hardfork block number
* Fix warning.
* Transaction tests,
* no longer export action_params
* remove transaction, header, receipt re-rexports from common
* remove env_info and builtins re-exports from common
* remove everything but util export from common
* replace common usages with util, remove module
* add a prelude module for ethcore-bigint
* Add support for Expanse.
* Fix build.
* Refactor to be able to alter the eth subprotocol name
* Fix JSON.
* Support exp hardfork.
* Fix exp json again.
* Fixed test
* Fix tests.
* State cache
* Reduced copying data between caches
Whitespace and optional symbols
* Reduced copying data between caches
Whitespace and optional symbols
* Set a limit on storage cache
* Style and docs
* Avoid cloning clean stuff
* Don't clone state when closing/locking blocks
* handle errors in commit
* revert `close_and_lock` changes
* defer state root update until post state commit
* Make the block header struct's internals private
Currently, this involves a lot of explicit cloning, but we
could migrate the return types of the get_* functions to
be copies rather than references since they are mostly copy
types anyway.
I opted to eliminate the constructor in favor of using
Default::default() plus calling a bunch of setters. This
is similar to the model that a Google Protobuf client uses
and I think it looks fine.
* Drop some unnecessary cloning by comparing references
* Fix compiler errors from callsites in tests.
* optionally use no mangling for accountdb
* add the recorder module
* get_recorded for tries, no virtual dispatch on readonly tries
* add recording test
* Add Ethereum Classic support
(Rename homestead-dogmatic -> classic)
* Additional change needed.
* More needed changes.
* Separate database path for known forks.
* Address minor grumble.