-
Notifications
You must be signed in to change notification settings - Fork 2.7k
contracts: Make Origin information available #13708
Conversation
|
The CI pipeline was cancelled due to failure one of the required jobs. |
| }: call(origin, instance.addr, 0u32.into(), Weight::MAX, None, vec![]) | ||
|
|
||
| #[pov_mode = Measured] | ||
| seal_caller_is_root { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes you are right. Getters copy to memory not return on stack. Forgot about that. So you need to roll this back.
agryaznov
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
overall, lgtm
Co-authored-by: Sasha Gryaznov <[email protected]>
Co-authored-by: Sasha Gryaznov <[email protected]>
Co-authored-by: Sasha Gryaznov <[email protected]>
|
bot merge |
|
Error: Statuses failed for b3c8445 |
|
bot merge |
|
Error: Statuses failed for b3c8445 |
|
bot rebase |
|
Rebased |
|
bot merge |
|
Waiting for commit status. |
|
Merge cancelled due to error. Error: Statuses failed for fe39e1f |
|
bot merge force |
* contracts: allow root calls * contracts: update ContractOrigin * contracts: test allow root calls * contracts: rustfmt * contracts: test root caller traps * contracts: add Caller enum * contracts: improve some comments * contracts: improve some comments * contracts: format code with +nightly * contracts: fix failing tests * contracts: improve charte instantiate call when root origin * contract: refactor common, call and instantiate inputs * contracts: fix some failing test * contracts: trap caller when there is no account id * Update frame/contracts/src/lib.rs Co-authored-by: PG Herveou <[email protected]> * Update frame/contracts/src/exec.rs Co-authored-by: PG Herveou <[email protected]> * contracts: make `into_deposit` return zero when the origin is root * contracts: cargo fmt * contracts: charging and terminating tests refactored * contracts: improved errors * contracts: refactor & merge ContractOrigin cand Caller enums * Update frame/contracts/src/lib.rs Co-authored-by: Sasha Gryaznov <[email protected]> * contracts: apply suggested pr changes * contracts: rename Caller to Origin * contracts: refactor run fn * contracts: cr improvements * contracts: allow root to use delegate call * contracts: add caller_is_root weight * ".git/.scripts/commands/bench/bench.sh" pallet dev pallet_contracts * contracts: add caller_is_root benchmarking * ".git/.scripts/commands/bench/bench.sh" pallet dev pallet_contracts * contracts: add caller_is_root benchmarking * ".git/.scripts/commands/bench/bench.sh" pallet dev pallet_contracts * contracts: add some minor improvements * contracts: make caller_is_root runtime fn unstable * contracts: fix failing wasm test * contracts: update benchmarking for origin_is_root * contracts: improve seal_caller_is_root benchmarking * ".git/.scripts/commands/bench/bench.sh" pallet dev pallet_contracts * contracts: add small pr improvements * contracts: fix broken tests after master merge * contracts: acknowledge the default storage deposit limit * ".git/.scripts/commands/bench/bench.sh" pallet dev pallet_contracts * contracts: move origin to CommonInput * contracts: add some extra tests * contracts: move ensure origin logic inside invokable::run_guarded * contracts: add minor improvements * contracts: fix caller_is_root benchmarking * contracts: improve function description * Update frame/contracts/src/lib.rs Co-authored-by: Sasha Gryaznov <[email protected]> * Update frame/contracts/src/lib.rs Co-authored-by: Sasha Gryaznov <[email protected]> * Update frame/contracts/src/wasm/runtime.rs Co-authored-by: Sasha Gryaznov <[email protected]> * contracts: improve function description --------- Co-authored-by: parity-processbot <> Co-authored-by: PG Herveou <[email protected]> Co-authored-by: Sasha Gryaznov <[email protected]>
* contracts: allow root calls * contracts: update ContractOrigin * contracts: test allow root calls * contracts: rustfmt * contracts: test root caller traps * contracts: add Caller enum * contracts: improve some comments * contracts: improve some comments * contracts: format code with +nightly * contracts: fix failing tests * contracts: improve charte instantiate call when root origin * contract: refactor common, call and instantiate inputs * contracts: fix some failing test * contracts: trap caller when there is no account id * Update frame/contracts/src/lib.rs Co-authored-by: PG Herveou <[email protected]> * Update frame/contracts/src/exec.rs Co-authored-by: PG Herveou <[email protected]> * contracts: make `into_deposit` return zero when the origin is root * contracts: cargo fmt * contracts: charging and terminating tests refactored * contracts: improved errors * contracts: refactor & merge ContractOrigin cand Caller enums * Update frame/contracts/src/lib.rs Co-authored-by: Sasha Gryaznov <[email protected]> * contracts: apply suggested pr changes * contracts: rename Caller to Origin * contracts: refactor run fn * contracts: cr improvements * contracts: allow root to use delegate call * contracts: add caller_is_root weight * ".git/.scripts/commands/bench/bench.sh" pallet dev pallet_contracts * contracts: add caller_is_root benchmarking * ".git/.scripts/commands/bench/bench.sh" pallet dev pallet_contracts * contracts: add caller_is_root benchmarking * ".git/.scripts/commands/bench/bench.sh" pallet dev pallet_contracts * contracts: add some minor improvements * contracts: make caller_is_root runtime fn unstable * contracts: fix failing wasm test * contracts: update benchmarking for origin_is_root * contracts: improve seal_caller_is_root benchmarking * ".git/.scripts/commands/bench/bench.sh" pallet dev pallet_contracts * contracts: add small pr improvements * contracts: fix broken tests after master merge * contracts: acknowledge the default storage deposit limit * ".git/.scripts/commands/bench/bench.sh" pallet dev pallet_contracts * contracts: move origin to CommonInput * contracts: add some extra tests * contracts: move ensure origin logic inside invokable::run_guarded * contracts: add minor improvements * contracts: fix caller_is_root benchmarking * contracts: improve function description * Update frame/contracts/src/lib.rs Co-authored-by: Sasha Gryaznov <[email protected]> * Update frame/contracts/src/lib.rs Co-authored-by: Sasha Gryaznov <[email protected]> * Update frame/contracts/src/wasm/runtime.rs Co-authored-by: Sasha Gryaznov <[email protected]> * contracts: improve function description --------- Co-authored-by: parity-processbot <> Co-authored-by: PG Herveou <[email protected]> Co-authored-by: Sasha Gryaznov <[email protected]>
Fix #13644
What does this PR do?
It allows root origin to call contracts, and add the
caller_is_rootmethod to theExttrait to identify such a call. Note that Root is still not allowed in any of the other dispatchables (except forset_codethat was unmodified).What's changed?
A new enum has been created:
Origin. It can be seen as a subset of theRuntimeOriginwith only the two accepted origins:SignedandRoot. Note thatOrigincan only beRootif the caller is the origin.A new function
ensure_originhas been added to theInvokablestrait to ensure that the given origin is allowed to invoke.The
ensure_signedin the dispatchablescall,instantiateandinstantiate_with_codehas been removed and replaced with theInvokables::ensure_originfunction that is called insideInvokables::run_guarded. This implies that calling one of any of these dispatchables would not be rejected at the top of the function but rather down the line, making thePostDispatchInfo.actual_weightbeSome(x)instead ofNone(that was before).New behaviours to consider