Commit Graph
12 Commits
Author SHA1 Message Date
Piotr Mikołajczyk 10857d0b58 Make ExecResult encodable (#1809)
# Description
We derive few useful traits on `ErrorOrigin` and `ExecError`, including
`codec::Encode` and `codec::Decode`, so that `ExecResult` is
en/decodable as well. This is required for a contract mocking feature
(already prepared in drink:
https://github.com/Cardinal-Cryptography/drink/pull/61). In more detail:
`ExecResult` must be passed from runtime extension, through runtime
interface, back to the pallet, which requires that it is serializable to
bytes in some form (or implements some rare, auxiliary traits).

**Impact on runtime size**: Since most of these traits is used directly
in the pallet now, compiler should be able to throw it out (and thus we
bring no new overhead). However, they are very useful in secondary tools
like drink or other testing libraries.

# Checklist

- [x] My PR includes a detailed description as outlined in the
"Description" section above
- [ ] My PR follows the [labeling requirements](CONTRIBUTING.md#Process)
of this project (at minimum one label for `T`
  required)
- [x] I have made corresponding changes to the documentation (if
applicable)
- [x] I have added tests that prove my fix is effective or that my
feature works (if applicable)
2023-11-02 10:28:52 +01:00
Piotr Mikołajczyk d8d90a82a7 Enable mocking contracts (#1331)
# Description
This PR introduces two changes:
- the previous `Tracing` trait has been modified to accept contract
address instead of code hash (seems to be way more convenient)
- a new trait `CallInterceptor` that allows intercepting contract calls;
in particular the default implementation for `()` will just proceed in a
standard way (after compilation optimizations, there will be no
footprint of that); however, implementing type might decide to mock
invocation and return `ExecResult` instead

Note: one might try merging `before_call` and `intercept_call`. However,
IMHO this would be bad, since it would mix two completely different
abstractions - tracing without any effects and actual intervention into
execution process.

This will unblock working on mocking contracts utility in drink and
similar tools (https://github.com/Cardinal-Cryptography/drink/issues/33)

# Checklist

- [x] My PR includes a detailed description as outlined in the
"Description" section above
- [ ] My PR follows the [labeling
requirements](https://github.com/paritytech/polkadot-sdk/blob/master/docs/CONTRIBUTING.md#process)
of this project (at minimum one label for `T` required)
- [x] I have made corresponding changes to the documentation (if
applicable)
- [x] I have added tests that prove my fix is effective or that my
feature works (if applicable)
2023-09-29 15:39:13 +02:00
Piotr Mikołajczyk 90270c91c3 [contracts] Derive useful traits for public types (#14723)
* Types in the pallet

* Primitives
2023-08-14 09:30:42 +00:00
Piotr Mikołajczyk b24b66c991 Cross-contract calling: simple debugger (#14678)
* Provide basic breakpoints

* Rename to Observer

* Rename feature. Single trait. Borrow-checker

* : frame_system::Config

* Confused type name

* Minor bugs

* pub trait

* No unnecessary cloning

* Make node compile with all features

* Move everything debug-related to a single module

* Add docs and implementation for ()

* fmt

* Make it feature-gated or for tests

* Prepare testing kit

* Testcase

* Fmt

* Use feature in dev-deps

* ?

* feature propagation

* AAAA

* lol, that doesn't make much sense to me

* Turn on

* clippy

* Remove self dep

* fmt, feature-gating test

* Noop to trigger CI

* idk

* add feature to pipeline

* Corrupt test to see if it is actually being run

* Revert change

* Doc for conf type

* Review

* Imports

* ...

* Remove debug for kitchen-sink

* Move test

* Fix imports

* I must have already tried this one...
2023-08-05 14:15:03 +00:00
Piotr Mikołajczyk 820949d38f Add try-state hook to pallet aura (#14363)
* Add aura try-state hook

* Trigger checks after unit tests
2023-07-07 07:38:29 +00:00
Piotr Mikołajczyk 9720a8749a Expose ChargedAmount (#13488)
* Expose `ChargedAmount`

* Fix imports
2023-03-01 14:35:32 +01:00
Piotr Mikołajczyk 3595d87182 try-runtime::fast-forward (#12896)
* try-runtime::fast-forward

* Revert un`pub`ing command's fields

* Handle storage change failure

* Adjust Substrate node

* Feature-gated imports

* doc link

* Feature-gated imports in node-template

* Move trait, blanket implementation and auxiliary functions to a new module

* Distinguish between plain babe+timestamp and substrate enhanced info

* Remove uncles inherents

* Missing argument

* Add doc comment about `blocktime_millis`

* Add licenses
2023-02-17 12:21:58 +00:00
Piotr Mikołajczykandparity-processbot 5c843b3015 Companion for: try-runtime::follow-chain - keep connection (#5968)
* Adjust to the new API

* Remove mutability

* Async constructor

* unwrap result

* do not panic

* suggestion

* leftover

* update lockfile for {"substrate"}

Co-authored-by: parity-processbot <>
2022-09-06 08:46:12 +00:00
Piotr Mikołajczyk 198f94f931 try-runtime::follow-chain - keep connection (#12167)
* Refactor RPC module

* Add flag to `follow-chain`

* Multithreading remark

* fmt

* O_O

* unused import

* cmon

* accidental removal reverted

* remove RpcHeaderProvider

* mut refs

* fmt

* no mutability

* now?

* now?

* arc mutex

* async mutex

* async mutex

* uhm

* connect in constructor

* remove dep

* old import

* another take

* trigger polkadot pipeline

* trigger pipeline
2022-09-06 08:01:35 +00:00
Piotr Mikołajczyk 1fabf067d0 try-runtime::follow-chain - execute all blocks (#12048)
* extract subscription

* FinalizedHeaders

* Fool of a Took

* testability

* tests

* review comments

* clippy
2022-09-05 07:26:45 +00:00
Piotr Mikołajczyk 9e5b211828 try-runtime - support all state versions (#12089)
* Add argument

* Apply

* More verbose parsing

* fmt

* fmt again

* Invalid state version

* reuse parsing

* type mismatch
2022-08-27 04:56:24 +00:00
Piotr MikołajczykandParity Bot ee557b769c Fix lazy batch contract removal (#10728)
* Fix lazy batch contract removal

* Apply suggestions

* Qualify ChildInfo

* Negligible change to restart pipeline

* Revert "Negligible change to restart pipeline"

This reverts commit b38abb622a17de9f0d19b3eadcea611ead1a7251.

* cargo run --quiet --profile=production  --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark --chain=dev --steps=50 --repeat=20 --pallet=pallet_contracts --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/contracts/src/weights.rs --template=./.maintain/frame-weight-template.hbs

Co-authored-by: Parity Bot <admin@parity.io>
2022-01-28 18:37:54 +00:00