The exported hardcoded sync was previously generating invalid JSON, with
the CHT list ending in a trailing comma. In order to remedy this, this
commit uses serde_json to serialize the SpecHardcodedSync struct
into valid JSON.
Fixes#11415
`Tempdir` is deprecated, but the functionality has been merged into
another crate: `tempfile`. This commit removes all `tempdir` dependencies
and replaces them with `tempfile` and the equivalent bindings.
Fixes#11560
* cleanup
* upbork
* review grumble: rename client id prefix
* rpc-tests: make one of the clients open-ethereum
* fix doctest
* README: mention clang version and that our wiki is old
* Add benchmark for transaction execution
* Address review grumbles
* Address review grumbles and extend benches to test both blocks with both Constantinople and Istanbul rules
* Use parity-crypto updated to use upstream rust-secp256k1
* Fetch dependency from git
* Missed a session ID
* Add free-standing inversion function that uses `libsecp256k1`
* fixed tests
* Update deps
* Use parity-crypto 0.5.0
Use libsecp256k1 0.3.5
* Review grumble
Co-authored-by: Svyatoslav Nikolsky <svyatonik@gmail.com>
* engine error: remove faulty/unused `From`
* dependencies: bump `derive_more v0.99`
The primilary motivation behind this is to have hard errors on `From` conversions that are ignored by
duplicated `variants` with the same value type
* Block gas limit contract
Lower gas limit if TxPermission.limitBlockGas.
Call blockGasLimit before every block.
Make the block gas limit contract a separate config option.
Add `info` level logging of block gas limit switching
block-gas-limit subcrate and responses to review comments
simplified call_contract_before
moved block_gas_limit_contract_transitions to AuRa params
removed call_contract_before
Update and fix test_verify_block.
Remove some unused imports and functions.
* Move gas limit override check to verify_block_basic.
Co-authored-by: Andreas Fackler <afck@users.noreply.github.com>
* Move all client usages into trusted_client
* Move confirmed hash method to trusted client
* Tree route and logs encapsuluted
* Remove not used method for keys sharing
* NodeKeyPair renamed and moved to trusted client
* Use public key error in trusted client
* Move contract address definition into trusted client
* Block id and number types from ethcore wrapped
* Trusted client renamed to more general Blockchain
* Trusted client implementation moved to parity code
* Move node key pair under secret store feature as well
* Registar crate removed from deps
* Accounts feature removed from secret store
* Fix after merge
* Blockchain renamed to SecretStoreChain
* Module documentations added
* Only use kvdb "column families"
This PR contains the changes necessary to use the `kvdb-*` crates from https://github.com/paritytech/parity-common/pull/278 (so a synchronized merge is required) which drops support for the old-style rocksdb "default" column to get a smaller and less complex API.
As it stands this PR is working correctly except for secret-store; we need to migrate it to use a new column family.
* Fix secretstore build
* Fix secretstore build: include ethkey when building with the "accounts" feature
* typos
* Restore state test commit
* Override all of parity-common from git
* Be precise about version requirement to migrate secretstore code
* Update ethcore/db/src/db.rs
Co-Authored-By: Niklas Adolfsson <niklasadolfsson1@gmail.com>
* Address review grumbles
* Review grumbles
* Cleanup
Co-authored-by: Niklas Adolfsson <niklasadolfsson1@gmail.com>
* Add randomness contract support to Authority Round.
Changes have been cherry-picked from poanetwork's aura-pos branch.
Most of the work has been done by @mbr.
* Address review comments for randomness contract.
Co-Authored-By: David <dvdplm@gmail.com>
* Rename revealSecret to revealNumber
* Update Randomness contract bytecode
* Use H256, rename secret to random number.
* Use get_commit_and_cipher
* Clean up Miner::prepare_block.
* Remove is_reveal_phase call.
* Add more comments, require randomness contract map.
* Simplify run_randomness_phase
* Address review comments.
* Remove Client::transact_contract.
* adds support for ipc socket permissions
* bumped jsonrpc to 14.0.5
* change chmod default to 660, use casting
* set 660 default for --ipc-chmod
Co-Authored-By: Andronik Ordian <write@reusable.software>
* Update parity/cli/mod.rs
Co-Authored-By: David <dvdplm@gmail.com>
* represent octal value as string
* return error for invalid octal values
* fix tests
* check if supplied octal range is within 0 to 7777
* Apply suggestions from code review
Co-Authored-By: Andronik Ordian <write@reusable.software>
* temporary fix
* bump jsonrpc-ipc-server
* fix: update `Cargo.lock`
* Use upstream rocksdb
…by way of https://github.com/paritytech/parity-common/pull/257 by @ordian.
* Hint at how `parity db reset` works in the error message
* migration-rocksdb: fix build
* Cargo.toml: use git dependency instead of path
* update to latest kvdb-rocksdb
* fix tests
* saner default for light client
* rename open_db to open_db_light
* update to latest kvdb-rocksdb
* moar update to latest kvdb-rocksdb
* even moar update to latest kvdb-rocksdb
* use kvdb-rocksdb from crates.io
* Update parity/db/rocksdb/helpers.rs
* add docs to memory_budget division
* Add a benchmark for snapshot::account::to_fat_rlps()
`to_fat_rlps()` is a hot call during snapshots. I don't think it has a perf problem per se, but better to have benchmark for it.
The data used is a piece of Ropsten data sized to the ~95% percentile of account size on that network.
* Benchmark with more chunks, including mainnet data
* whitespace
* Move `used_code` inside the benchmark iteration
* Revert "Move `used_code` inside the benchmark iteration"
This reverts commit cff33ab30acbd1c009e745f646f1cc655ee01d8c.
* Make InstantSeal Instant again
* update_sealing if there are transactions in pool after impoerting a block, some line formatting
* Apply suggestions from code review
Co-Authored-By: Tomasz Drwięga <tomusdrw@users.noreply.github.com>
* InstantSeal specific behaviour
* introduce engine.should_reseal_on_update, remove InstantSealService
* remove unused code
* add force param to update_sealing
* better docc
* even better docs
* revert code changes, doc corrections, sort dep
* code optimization
* fix test
* fix bench
* [builtin]: impl new builtin type
Have an enum to deserialize either a builtin of a single price or several prices
* [builtin]: style cleanup
* [builtin]: fix tests
* [builtin]: replace boxing with wrapper enum
* cleanup
* fix: make it backward compatible with old builtin
* fix: update chain specs
* fix: revert use of `type alias` on enum
The CI doesn't use the latest rust.
This commit reverts that change
* fix: builtin tests
* fix: revert use of `type alias` on enum
* [basic-authority]: update test-chainspec
* fix failing tests
* [builtin]: multi-prices add `info field`
It might be hard to read chain specs with several activations points.
This commit introduces a `info` field which may be used to write some
information about the current activation such as:
`Istanbul hardfork EIP-1108` or something similar.
* fix: bad rebase
Co-Authored-By: David <dvdplm@gmail.com>
* fix(grumbles): make it backward compatible
* grumbles: resolve `NOTE`
* revert chain specs changes
* rename test
Co-Authored-By: David <dvdplm@gmail.com>
* [builtin docs]: price -> Fixed price
Co-Authored-By: Andronik Ordian <write@reusable.software>
* [json]: address naming grumbles
InnerPricing -> PricingInner
PriceWithActivationAt -> PricingAt
* docs: revert changes for `AltBn128ConstOperations`
* [json]: usize -> u64
Use explicit types to cope with platform dependent issues for `usize`
* grumble: simplify `spec_backward_compability.json`
* docs: add issue link to `TODO`
* [builtin]: replace `match` with `map`
* [builtin]: add deprecation message `eip1108` params
* nits
* [json spec tests]: fix json indentation
* [json docs]: fix typos
* [json]: `compability layer` + deser to BTreeMap
Previously we had to match `Pricing::Single` and `PricingMulti` which this fixes.
It does by introducing a compability layer and into() implemenentation.
In addition, I switched the deserialization to `BTreeMap` instead of `Vec`.
That changes the format of the chain spec again
* [json]: rename `BuiltinCombat` -> `BuiltinCompat`
* Update ethcore/builtin/src/lib.rs
Co-Authored-By: David <dvdplm@gmail.com>
* [json builtin]: improve docs
Co-Authored-By: David <dvdplm@gmail.com>
* [json builtin]: improve docs
Co-Authored-By: David <dvdplm@gmail.com>
* chore(builtin): sort dependencies
* [json builtin]: deprecate `eip1108` params
* [machine]: add bench for calling builtin contract
* [machine]: reduce calls to `Builtin::is_active`
* [builtin]: fix nits
* [json]: revert breakage of chain specs
* [json builtin]: remove `eip1108` params
* [chain specs]: update to new format
* [machine]: revert changes
* [devp2p]: revert change
* [builtin]: doc nits
* Comments and todos
Use `snapshot_sync` as logging target
* fix compilation
* More todos, more logs
* Fix picking snapshot peer: prefer the one with the highest block number
More docs, comments, todos
* Adjust WAIT_PEERS_TIMEOUT to be a multiple of MAINTAIN_SYNC_TIMER to try to fix snapshot startup problems
Docs, todos, comments
* Tabs
* Formatting
* Don't build new rlp::EMPTY_LIST_RLP instances
* Dial down debug logging
* Don't warn about missing hashes in the manifest: it's normal
Log client version on peer connect
* Cleanup
* Do not skip snapshots further away than 30k block from the highest block seen
Currently we look for peers that seed snapshots that are close to the highest block seen on the network (where "close" means withing 30k blocks). When a node starts up we wait for some time (5sec, increased here to 10sec) to let peers connect and if we have found a suitable peer to sync a snapshot from at the end of that delay, we start the download; if none is found and --warp-barrier is used we stall, otherwise we start a slow-sync.
When looking for a suitable snapshot, we use the highest block seen on the network to check if a peer has a snapshot that is within 30k blocks of that highest block number. This means that in a situation where all available snapshots are older than that, we will often fail to start a snapshot at all. What's worse is that the longer we delay starting a snapshot sync (to let more peers connect, in the hope of finding a good snapshot), the more likely we are to have seen a high block and thus the more likely we become to accept a snapshot.
This commit removes this comparison with the highest blocknumber criteria entirely and picks the best snapshot we find in 10sec.
* lockfile
* Add a `ChunkType::Dupe` variant so that we do not disconnect a peer if they happen to send us a duplicate chunk (just ignore the chunk and keep going)
Resolve some documentation todos, add more
* tweak log message
* Don't warp sync twice
Check if our own block is beyond the given warp barrier (can happen after we've completed a warp sync but are not quite yet synced up to the tip) and if so, don't sync.
More docs, resolve todos.
Dial down some `sync` debug level logging to trace
* Avoid iterating over all snapshot block/state hashes to find the next work item
Use a HashSet instead of a Vec and remove items from the set as chunks are processed. Calculate and store the total number of chunks in the `Snapshot` struct instead of counting pending chunks each time.
* Address review grumbles
* Log correct number of bytes written to disk
* Revert ChunkType::Dup change
* whitespace grumble
* Cleanup debugging code
* Fix docs
* Fix import and a typo
* Fix test impl
* Use `indexmap::IndexSet` to ensure chunk hashes are accessed in order
* Revert increased SNAPSHOT_MANIFEST_TIMEOUT: 5sec should be enough
* WIP. Typos and logging.
* Format todos
* Pause pruning while a snapshot is under way
Logs, docs and todos
* Allocate memory for the full chunk
* Name snapshotting threads
* Ensure `taking_snapshot` is set to false whenever and however `take_snapshot`returns
Rename `take_at` to `request_snapshot_at`
Cleanup
* Let "in_progress" deletion fail
Fix tests
* Just use an atomic
* Review grumbles
* Finish the sentence
* Resolve a few todos and clarify comments.
* Calculate progress rate since last update
* Lockfile
* Fix tests
* typo
* Reinstate default snapshotting frequency
Cut down on the logging noise
* Use a lock instead of atomics for snapshot Progress
* Update ethcore/types/src/snapshot.rs
Co-Authored-By: Andronik Ordian <write@reusable.software>
* Avoid truncating cast
Cleanup