* Update balance benchmarks
* Update weight functions
* Remove user component
* make componentless
* Add support for `#[extra]` tag on benchmarks
* Update balances completely
* Apply suggestions from code review
Co-authored-by: Alexander Theißen <alex.theissen@me.com>
* Fix some tests
* Maybe fix to test. Need approval from @tomusdrw this is okay
* Make test better
* keep weights conservative
* Update macro for merge master
* Add headers
* Apply suggestions from code review
Co-authored-by: Alexander Popiak <alexander.popiak@parity.io>
Co-authored-by: Alexander Theißen <alex.theissen@me.com>
Co-authored-by: Alexander Popiak <alexander.popiak@parity.io>
* seal: Fix syntax that confuses rust-analyzer
* seal: Add benchmarks for Dispatchables
These are only the benchmarks for the dispatchables of
the pallet. Those are not listed in the Schedule because
we do not want to pull the Schedule from storage before
dispatching.
This OK because those costs are not related to actual contract
execution. Those costs (instruction costs, ext_* costs) will
be benchmarked seperatly and entered into the default Schedule.
* seal: Add a maximum code size
* Fix comments from review
* Removed SEED constant
* pallet-evm: add support for tuple-based precompile declarations
* Add missing license header
* Switch to use impl_for_tuples
* Remove unnecessary impl for ()
* seal: Fail instantiate if new contract is below subsistence threshold
We need each contract that exists to be above the subsistence threshold
in order to keep up the guarantuee that we always leave a tombstone behind
with the exception of a contract that called `ext_terminate`.
* Fixup executor test
* Bump runtime
* grandpa: remove unused methods to convert digest
* grandpa: add root extrinsic for scheduling forced change
* grandpa: add benchmark for schedule_forced_change
* grandpa: don't take authority weight in schedule_forced_change
* grandpa: add const for default forced change delay
* grandpa: adjust weights after benchmark on ref hardware
* grandpa: fix cleanup of forced changes on standard change application
* grandpa: replace schedule_forced_change with note_stalled
* grandpa: always trigger a session change when the set is stalled
* grandpa: fix bug on set id mutation after failed scheduled change
* grandpa: take delay as parameter in note_stalled
* grandpa: fix tests
* grandpa: fix cleanup of forced changes
* grandpa: add test for forced changes cleanup
* grandpa: add test for session rotation set id
* grandpa: add test for scheduling of forced changes on new session
Instead of requiring `T: Trait` in `BalanceSwapAction`, we directly
depend on `AccountId`. This fixes a compilation error on wasm, where
`Runtime` does not implement `Debug`, but `BalanceSwapAction` required it.
* change (ci): 3 jobs in 1 decreases concurrency and is more effectiv; w/o release it's ~20% faster, but needs testing on prod; wasmtest tests are already running within cargo test --workspace
* fix (test): these ones were failing on nightly
* save: cargo profiles [skip ci]
* change (ci): one test to run them all
* change (ci): rebase
* Revert "change (ci): rebase"
This reverts commit 8a6b7ea043a460bf71526ccaa4c7a68899a3b2bc.
* fix (config): fix manifest
* change (ci): bench release
* Treasury burning can be directed
Also, Society is a imbalance handler
* Build
* Introduce from_permill in perthings.
* Rename to from_perthousand to avoid confusion with Permill
* Fixes
* Fixes and tests
* Don't set subs be re-registered.
Also allow subs to de-register themselves and collect the deposit.
Also allow individual registering and removal of subs.
* Make it build
* Update frame/identity/src/lib.rs
Co-authored-by: joe petrowski <25483142+joepetrowski@users.noreply.github.com>
* Tests
* Add benchmarks
* Add some reasonable weights
* Docs
Co-authored-by: joe petrowski <25483142+joepetrowski@users.noreply.github.com>
* Update benchmarking macro for no components
* Handle output when error
* skip when empty
* Update analysis for zero components
* add back trace logs
* Apply suggestions from code review
* remove mean value, and use median value
* Add note
* Use standard for loop
* Apply suggestions from code review
Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com>
* Update lib.rs
Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com>
* pallet-evm: return Ok(()) when EVM execution fails
* Bump spec version
* Implement apply_state flag and allow fetching return data and used gas
* Update evm version
It was a mistake to use the `*_verify` methods for signature batching.
This pr move the signature batching into their own functions. This is
required, because otherwise transaction signature verification infers
with other signature verifications.
This pr also temporarily disables signature batching. The functionality
stays, but we need to make sure that all nodes have the new runtime
interface, before we can bring back signature batching.
* seal: Do not allow transfers to bring total balance below subsistence deposit
This also reworks the rent system to take the total balance into account
when evaluating whether the account is above the subsistence deposit.
* Fix nits from review
* Fix typo
* Do not enforce subsistence when called from EOA
* Rename CallOrigin to TransactorKind
* Add debug asserts to check the invariants of a plain account transactor
* Fix typo
Co-authored-by: Sergei Shulepov <sergei@parity.io>
Co-authored-by: Sergei Shulepov <sergei@parity.io>
* Transition getter functions to not use scratch buffer
* Remove scratch buffer from ext_get_storage
* Remove scratch buffer from ext_call
* Remove scratch buffer from ext_instantiate
* Add ext_input and remove scratch buffer
* Rework error handling (changes RPC exposed data)
* ext_return passes a flags field instead of a return code
* Flags is only for seal and not for the caller
* flags: u32 replaced status_code: u8 in RPC exposed type
* API functions use a unified error type (ReturnCode)
* ext_transfer now traps on error to be consistent with call and instantiate
* Remove the no longer used `Dispatched` event
* Updated inline documentation
* Prevent skipping of copying the output for getter API
* Return gas_consumed from the RPC contracts call interface
* Updated COMPLEXTITY.md
* Rename ext_gas_price to ext_weight_to_fee
* Align comments with spaces
* Removed no longer used `ExecError`
* Remove possible panic in `from_typed_value`
* Use a struct as associated data for SpecialTrap::Return
* Fix nits in COMPLEXITY.md
* Renamed SpecialTrap to TrapReason
* Fix test
* Finish renaming special_trap -> trap_reason
* Remove no longer used get_runtime_storage
* fixup! Remove no longer used get_runtime_storage
* Removed tabs for comment aligment
* Upgrade `kvdb-*`, `trie-db` and `memory-db`
The updates of `trie-db` and `memory-db` are important, as they fix the
non-deterministic build of Polkadot/Substrate.
* Change `trie-db` version
* Update test-utils/runtime/Cargo.toml
Co-authored-by: Andronik Ordian <write@reusable.software>
* Update primitives/trie/Cargo.toml
Co-authored-by: Andronik Ordian <write@reusable.software>
* Update `Cargo.lock` and `trie-bench`
* Fix UI tests
* Switch to fixed version of memory-db
Co-authored-by: Andronik Ordian <write@reusable.software>
* initial mockup
* add and wipe
* track writes
* start to add to pipeline
* return all reads/writes
* Log reads and writes from bench db
* causes panic
* Allow multiple commits
* commit before ending benchmark
* doesn't work???
* fix
* Update lib.rs
* switch to struct for `BenchmarkResults`
* add to output
* fix test
* line width
* @kianenigma review
* Add Whitelist to DB Tracking in Benchmarks Pipeline (#6405)
* hardcoded whitelist
* Add whitelist to pipeline
* Remove whitelist pipeline from CLI, add to runtime
* clean-up unused db initialized whitelist
* Add regression analysis to DB Tracking (#6475)
* Add selector
* add tests
* debug formatter for easy formula
* initial idea
* use all benchmarks
* broken
* working without trait
* Make work for multiple pallets
* Fix merge issues
* writer appends to file
* implement () for balances weight trait
* update name of trait
* Weights to WeightInfo
* auto trait writer
* Heap pages are configurable
* clean out runtime changes
* more clean up
* Fix string generation
* Update comments
* Update bin/node/runtime/src/lib.rs
Co-authored-by: arkpar <arkady.paronyan@gmail.com>
* slots: create primitives crate for consensus slots
* offences: add method to check if an offence is unknown
* babe: initial equivocation reporting implementation
* babe: organize imports
* babe: working equivocation reporting
* babe: add slot number to equivocation proof
* session: move duplicate traits to session primitives
* babe: move equivocation stuff to its own file
* offences: fix test
* session: don't have primitives depend on frame_support
* babe: use opaque type for key owner proof
* babe: cleanup client equivocation reporting
* babe: cleanup equivocation code in pallet
* babe: allow sending signed equivocation reports
* node: fix compilation
* fix test compilation
* babe: return bool on check_equivocation_proof
* babe: add test for equivocation reporting
* babe: add more tests
* babe: add test for validate unsigned
* babe: take slot number in generate_key_ownership_proof API
* babe: add benchmark for equivocation proof checking
* session: add benchmark for membership proof checking
* offences: fix babe benchmark
* babe: add weights based on benchmark results
* babe: adjust weights after benchmarking on reference hardware
* babe: reorder checks in check_and_report_equivocation
* pallet-evm: return Ok(()) when EVM execution fails
* Bump spec version
* Init test module
* Add fail_call_return_ok test
* Fix tests and use full match pattern
Co-authored-by: Gav Wood <gavin@parity.io>
* Move `create_inherents` into the block-builder
This moves the `create_inherents` call into the block-builder. This has
the advantage that `create_inherents` will be able to reuse the same
context that will be used when applying the extrinsics and we also save
one call to `on_initialize`. To make sure that `create_inherents` does
not modify any state, we execute it in a transaction that is
rolled-back after doing the runtime call.
* Feedback and build fix
* Update primitives/runtime/src/lib.rs
Co-authored-by: Sergei Shulepov <sergei@parity.io>
* Update client/block-builder/src/lib.rs
Co-authored-by: Sergei Shulepov <sergei@parity.io>
* Fix mocking multiple http calls in the same function call
Fixes an issue where a function call would perform more than one http request and wait for each to complete before proceeding. The `RequestId` comes from the length of the `requests` collection in the `OffchainState` and if a request is completed before the next one starts it will be removed and the "next expected" will be off by one. This PR tries to fix that by using a request counter that tracks how many requests have been performed so that we can `remove()` items from the `expected_requests` at the right index.
I suspect that this is a sub-optimal soluton and perhaps requests and their mocks should live side by side in the same collection, e.g. in a tuple of `(PendingRequest, Option<ExpectedRequest>)`.
* Update primitives/core/src/offchain/testing.rs
Co-authored-by: Bernhard Schuster <bernhard@ahoi.io>
* Update primitives/core/src/offchain/testing.rs
Co-authored-by: Bernhard Schuster <bernhard@ahoi.io>
* Panic on overflow
* Update primitives/core/src/offchain/testing.rs
Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>
* Use a Deque and push/pop expected requests
* fix test
Co-authored-by: Bernhard Schuster <bernhard@ahoi.io>
Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>