* Add client-traits crate
Move the BlockInfo trait to new crate
* New crate `machine`
Contains code extracted from ethcore that defines `Machine`, `Externalities` and other execution related code.
* Use new machine and client-traits crates in ethcore
* Use new crates machine and client-traits instead of ethcore where appropriate
* Fix tests
* Don't re-export so many types from ethcore::client
* Fixing more fallout from removing re-export
* fix test
* More fallout from not re-exporting types
* Add some docs
* cleanup
* import the macro edition style
* Tweak docs
* Add missing import
* remove unused ethabi_derive imports
* Use latest ethabi-contract
* Move many traits from ethcore/client/traits to client-traits crate
Initial version of extracted Engine trait
* Move snapshot related traits to the engine crate (eew)
* Move a few snapshot related types to common_types
Cleanup Executed as exported from machine crate
* fix warning
* Gradually introduce new engine crate: snapshot
* ethcore typechecks with new engine crate
* Sort out types outside ethcore
* Add an EpochVerifier to ethash and use that in Engine.epoch_verifier()
Cleanup
* Document pub members
* Sort out tests
Sort out default impls for EpochVerifier
* Add test-helpers feature and move EngineSigner impl to the right place
* Sort out tests
* Sort out tests and refactor verification types
* Fix missing traits
* More missing traits
Fix Histogram
* Fix tests and cleanup
* cleanup
* Put back needed logger import
* Don't rexport common_types from ethcore/src/client
Don't export ethcore::client::*
* Remove files no longer used
Use types from the engine crate
Explicit exports from engine::engine
* Get rid of itertools
* Move a few more traits from ethcore to client-traits: BlockChainReset, ScheduleInfo, StateClient
* Move ProvingBlockChainClient to client-traits
* Don't re-export ForkChoice and Transition from ethcore
* Address grumbles: sort imports, remove commented out code
* Fix merge resolution error
* merge failure
* tx-pool: accept local tx with higher gas price when pool full
* Revert "tx-pool: accept local tx with higher gas price when pool full"
This reverts commit 9d4adc5a
* tx-pool: new tx with same nonce as existing is ready
* tx-pool: explicit check for replacement tx (same sender & nonce)
* Update comment
Co-Authored-By: Tomasz Drwięga <tomusdrw@users.noreply.github.com>
* Replace `ReplaceOld` with `InsertNew` for replacement txs
I _believe_ (someone please double-check my work) that this comment is subtly incorrect and in fact the replacement will occur if the new gas price is exactly 12.5% (given current configuration) higher.
Relevant pieces of code:
```rust
fn bump_gas_price(old_gp: U256) -> U256 {
old_gp.saturating_add(old_gp >> GAS_PRICE_BUMP_SHIFT)
}
```
```rust
let min_required_gp = bump_gas_price(*old_gp);
match min_required_gp.cmp(&new_gp) {
cmp::Ordering::Greater => scoring::Choice::RejectNew,
_ => scoring::Choice::ReplaceOld,
}
```
* 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
* 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
* 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
* 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
* rpc: return unordered transactions in pending transactions filter
* ethcore: use LruCache for nonce cache
Only clear the nonce cache when a block is retracted
* Revert "ethcore: use LruCache for nonce cache"
This reverts commit b382c19abdb9985be1724c3b8cde83906da07d68.
* Use only cached nonces when computing pending hashes.
* Give filters their own locks, so that they don't block one another.
* Fix pending transaction count if not sealing.
* Clear cache only when block is enacted.
* Fix RPC tests.
* Address review comments.
* Store recently rejected transactions.
* Don't cache AlreadyImported rejections.
* Make the size of transaction verification queue dependent on pool size.
* Add a test for recently rejected.
* Fix logging for recently rejected.
* Make rejection cache smaller.
* obsolete test removed
* obsolete test removed
* Construct cache with_capacity.
* Additional tests for NonceAndGasPrice::should_replace.
* Fix should_replace in the distinct sender case.
* Use natural priority ordering to simplify should_replace.
* Unordered iterator.
* Use unordered and limited set if full not required.
* Split timeout work into smaller timers.
* Avoid collecting all pending transactions when mining
* Remove println.
* Use priority ordering in eth-filter.
* Fix ethcore-miner tests and tx propagation.
* Review grumbles addressed.
* Add test for unordered not populating the cache.
* Fix ethcore tests.
* Fix light tests.
* Fix ethcore-sync tests.
* Fix RPC tests.
* Revert "Fix not downloading old blocks (#8642)"
This reverts commit d1934363e7.
* Make sure only one thread actually imports old blocks.
* Add some trace timers.
* Bring back pending hashes set.
* Separate locks so that queue can happen while we are importing.
* Address grumbles.
* Update `add_license` script
* run script
* add `remove duplicate lines script` and run it
* Revert changes `English spaces`
* strip whitespaces
* Revert `GPL` in files with `apache/mit license`
* don't append `gpl license` in files with other lic
* Don't append `gpl header` in files with other lic.
* re-ran script
* include c and cpp files too
* remove duplicate header
* rebase nit
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
* Implementation of Verifier, Scoring and Ready.
* Queue in progress.
* TransactionPool.
* Prepare for txpool release.
* Miner refactor [WiP]
* WiP reworking miner.
* Make it compile.
* Add some docs.
* Split blockchain access to a separate file.
* Work on miner API.
* Fix ethcore tests.
* Refactor miner interface for sealing/work packages.
* Implement next nonce.
* RPC compiles.
* Implement couple of missing methdods for RPC.
* Add transaction queue listeners.
* Compiles!
* Clean-up and parallelize.
* Get rid of RefCell in header.
* Revert "Get rid of RefCell in header."
This reverts commit 0f2424c9b7319a786e1565ea2a8a6d801a21b4fb.
* Override Sync requirement.
* Fix status display.
* Unify logging.
* Extract some cheap checks.
* Measurements and optimizations.
* Fix scoring bug, heap size of bug and add cache
* Disable tx queueing and parallel verification.
* Make ethcore and ethcore-miner compile again.
* Make RPC compile again.
* Bunch of txpool tests.
* Migrate transaction queue tests.
* Nonce Cap
* Nonce cap cache and tests.
* Remove stale future transactions from the queue.
* Optimize scoring and write some tests.
* Simple penalization.
* Clean up and support for different scoring algorithms.
* Add CLI parameters for the new queue.
* Remove banning queue.
* Disable debug build.
* Change per_sender limit to be 1% instead of 5%
* Avoid cloning when propagating transactions.
* Remove old todo.
* Post-review fixes.
* Fix miner options default.
* Implement back ready transactions for light client.
* Get rid of from_pending_block
* Pass rejection reason.
* Add more details to drop.
* Rollback heap size of.
* Avoid cloning hashes when propagating and include more details on rejection.
* Fix tests.
* Introduce nonces cache.
* Remove uneccessary hashes allocation.
* Lower the mem limit.
* Re-enable parallel verification.
* Add miner log. Don't check the type if not below min_gas_price.
* Add more traces, fix disabling miner.
* Fix creating pending blocks twice on AuRa authorities.
* Fix tests.
* re-use pending blocks in AuRa
* Use reseal_min_period to prevent too frequent update_sealing.
* Fix log to contain hash not sender.
* Optimize local transactions.
* Fix aura tests.
* Update locks comments.
* Get rid of unsafe Sync impl.
* Review fixes.
* Remove excessive matches.
* Fix compilation errors.
* Use new pool in private transactions.
* Fix private-tx test.
* Fix secret store tests.
* Actually use gas_floor_target
* Fix config tests.
* Fix pool tests.
* Address grumbles.