Skip to content
Snippets Groups Projects
  1. Sep 13, 2024
  2. Sep 11, 2024
    • Alexander Theißen's avatar
      Send balance when contract doesn't exist (#5664) · ea5fb02e
      Alexander Theißen authored
      Fixes #5577 
      
      I decided to bubble up the error from where we actually try to load the
      contract info. This helps to make sure that we don't miss some entry
      point by accident. The draw back is that we have to live with some
      additional `.expect`.
      
      @pgherveou
      
       With this logic the proxy and its runtime part should be
      completely unaware whether something is a contract call or a balance
      transfer. They should just route everything into pallet_revive.
      
      ---------
      
      Co-authored-by: default avatarCyrill Leutwiler <cyrill@parity.io>
  3. Sep 09, 2024
  4. Sep 08, 2024
    • PG Herveou's avatar
      [pallet-revive] update generic runtime types (#5608) · 868a36bd
      PG Herveou authored
      
      fix #5574
      
      - Use U256 instead of BalanceOf<T> and MomentOf<T> in Ext trait
      - Enforce H256 for T::Hash
      
      The Ext trait still depends on the associated type `T: Config`, we can
      look into refactoring it even more later but even in the current state
      it should not influence how the data is encoded / decoded between the
      contract and the host
      ```
      fn caller(&self) -> Origin<Self::T>;
      -> only use to extract the address of the caller 
      
      fn account_id(&self) -> &AccountIdOf<Self::T>;
       -> only used to expose the address or access the account_id internally   
      
      fn gas_meter(&self) -> &GasMeter<Self::T>;
      fn gas_meter_mut(&mut self) -> &mut GasMeter<Self::T>;
       -> encoding does not depend on T
      
      fn call_runtime(&self, call: <Self::T as Config>::RuntimeCall) -> DispatchResultWithPostInfo;
      -> Substrate specific, just an opaque blob of bytes from the contract's perspective
      
      fn contract_info(&mut self) -> &mut ContractInfo<Self::T>;
      fn transient_storage(&mut self) -> &mut TransientStorage<Self::T>;
      -> gated by #[cfg(any(test, feature = "runtime-benchmarks"))]
      ```
      
      ---------
      
      Co-authored-by: default avatarAlexander Theißen <alex.theissen@me.com>
  5. Sep 03, 2024
  6. Sep 02, 2024
  7. Aug 23, 2024
    • Alexander Theißen's avatar
      Add initial version of `pallet_revive` (#5293) · 559fa1db
      Alexander Theißen authored
      This is a heavily modified and stripped down version of
      `pallet_contracts`. We decided to fork instead of extend the old pallet.
      Reasons for that are:
      
      - There is no benefit of supporting both on the same pallet as the
      intended payload for the new pallet (recompiled YUL) will be using a
      different ABI.
      - It is much easier since it allows us to remove all the code that was
      necessary to support Wasm and focus fully on running cross compiled YUL
      contracts.
      
      **The code is reviewable but can't be merged because it depends on an
      unreleased version of PolkaVM via git.**
      
      ## Current state
      
      All tests are passing and the code is not quick and dirty but written to
      last. The work is not finished, though. It is included in the
      `kitchensink-runtime` and a node can be built. However, we merge early
      in order to be able to start testing other components as early as
      possible.
      
      Outstanding changes are tracked here and will be merged separately:
      https://github.com/paritytech/polkadot-sdk/issues/5308
      
      ## Syscall Interface
      
      The syscall interface is best explored by generating the docs of this
      crate and looking at the `SyscallDoc` trait. Arguments are passed in
      registers a0-a5 in the order they are listed. If there are more than 6
      arguments (call, instantiate) a pointer to a packed struct of the
      arguments is expected as the only argument. I plan to create variants of
      those syscalls with less arguments specifically for YUL.
      
      Functions are just referenced by their name as ASCII within the PolkaVM
      container. Rather than by a syscall number as it was the case in the
      last implementation.
       
      
      ## Changes vs. `pallet_contracts`
      
      The changes are too numerous to list them all here. This is an
      incomplete list:
      
      - Use PolkaVM instead of wasmi to execute contracts
      - Made Runtime generic over a new `Memory` trait as we can't map memory
      directly on PolkaVM anymore
      - No static verification on code upload. Everything is a determinstic
      runtime failure
      - Removed all migrations and reset the pallet version
      - Removed the nonce storage item and instead use the deployers account
      nonce to generate a unique trie
      - We now bump the deployers account nonce on contract instantiation to
      they are bumped even within a batch transaction
      - Removed the instantiation nonce host function: We should add a new
      `instantiate` variant as a replacement for thos
      - ContractInfoOf of uses the indentity hasher now
      - Remove the determinism feature: User of that feature should switch to
      soft floats
      - The `unstable` attribute has been replaced by a `api_version`
      attribute to declare at which version an API became available
      	- leaving out that attribute makes the API effectively unstable
      - a new `api_version` field on the CodeInfo makes sure that old
      contracts can't access new APIs (necessary due to lack of static
      verification.
      - Added a `behaviour_version` field to CodeInfo that can used if we need
      to introduce breaking changes and keep the old behaviour for existing
      contracts
      - Unified storage vs. transient and fixed vs. variable sized keys all
      into one set of multiplexing host functions
      - Removed all contract observeable limits from the `Config` trait and
      instead hardcode them
      - Removed the Schedule
      - Removed all deprecated host functions
      - Simplify chain extension as preperation for making it a pre-compile
      
      ---------
      
      Co-authored-by: command-bot <>
  8. Jul 16, 2024
  9. Jul 15, 2024
    • Jun Jiang's avatar
      Remove most all usage of `sp-std` (#5010) · 7ecf3f75
      Jun Jiang authored
      
      This should remove nearly all usage of `sp-std` except:
      - bridge and bridge-hubs
      - a few of frames re-export `sp-std`, keep them for now
      - there is a usage of `sp_std::Writer`, I don't have an idea how to move
      it
      
      Please review proc-macro carefully. I'm not sure I'm doing it the right
      way.
      
      Note: need `/bot fmt`
      
      ---------
      
      Co-authored-by: default avatarBastian Köcher <git@kchr.de>
      Co-authored-by: command-bot <>
  10. Jun 04, 2024
  11. May 23, 2024
    • PG Herveou's avatar
      Contracts: Rework host fn benchmarks (#4233) · 493ba5e2
      PG Herveou authored
      
      fix https://github.com/paritytech/polkadot-sdk/issues/4163
      
      This PR does the following:
      Update to pallet-contracts-proc-macro: 
      - Parse #[cfg] so we can add a dummy noop host function for benchmark.
      - Generate BenchEnv::<host_fn> so we can call host functions directly in
      the benchmark.
      - Add the weight of the noop host function before calling the host
      function itself
      
      Update benchmarks:
      - Update all host function benchmark, a host function benchmark now
      simply call the host function, instead of invoking the function n times
      from within a contract.
      - Refactor RuntimeCosts & Schedule, for most host functions, we can now
      use the generated weight function directly instead of computing the diff
      with the cost! macro
      
      ```rust
      // Before
      #[benchmark(pov_mode = Measured)]
      fn seal_input(r: Linear<0, API_BENCHMARK_RUNS>) {
          let code = WasmModule::<T>::from(ModuleDefinition {
              memory: Some(ImportedMemory::max::<T>()),
              imported_functions: vec![ImportedFunction {
                  module: "seal0",
                  name: "seal_input",
                  params: vec![ValueType::I32, ValueType::I32],
                  return_type: None,
              }],
              data_segments: vec![DataSegment { offset: 0, value: 0u32.to_le_bytes().to_vec() }],
              call_body: Some(body::repeated(
                  r,
                  &[
                      Instruction::I32Const(4), // ptr where to store output
                      Instruction::I32Const(0), // ptr to length
                      Instruction::Call(0),
                  ],
              )),
              ..Default::default()
          });
      
          call_builder!(func, code);
      
          let res;
          #[block]
          {
              res = func.call();
          }
          assert_eq!(res.did_revert(), false);
      }
      ```
      
      ```rust
      // After
      fn seal_input(n: Linear<0, { code::max_pages::<T>() * 64 * 1024 - 4 }>) {
          let mut setup = CallSetup::<T>::default();
          let (mut ext, _) = setup.ext();
          let mut runtime = crate::wasm::Runtime::new(&mut ext, vec![42u8; n as usize]);
          let mut memory = memory!(n.to_le_bytes(), vec![0u8; n as usize],);
          let result;
          #[block]
          {
              result = BenchEnv::seal0_input(&mut runtime, &mut memory, 4, 0)
          }
          assert_ok!(result);
          assert_eq!(&memory[4..], &vec![42u8; n as usize]);
      }
      ``` 
      
      [Weights
      compare](https://weights.tasty.limo/compare?unit=weight&ignore_errors=true&threshold=10&method=asymptotic&repo=polkadot-sdk&old=master&new=pg%2Frework-host-benchs&path_pattern=substrate%2Fframe%2Fcontracts%2Fsrc%2Fweights.rs%2Cpolkadot%2Fruntime%2F*%2Fsrc%2Fweights%2F**%2F*.rs%2Cpolkadot%2Fbridges%2Fmodules%2F*%2Fsrc%2Fweights.rs%2Ccumulus%2F**%2Fweights%2F*.rs%2Ccumulus%2F**%2Fweights%2Fxcm%2F*.rs%2Ccumulus%2F**%2Fsrc%2Fweights.rs)
      
      ---------
      
      Co-authored-by: command-bot <>
      Co-authored-by: default avatarAlexander Theißen <alex.theissen@me.com>
  12. May 17, 2024
  13. Apr 10, 2024
    • PG Herveou's avatar
      Contracts: Only exec parsed code in benchmarks (#3915) · 0d71753e
      PG Herveou authored
      [Weights
      compare](https://weights.tasty.limo/compare?unit=weight&ignore_errors=true&threshold=10&method=asymptotic&repo=polkadot-sdk&old=master&new=pg%2Fbench_tweaks&path_pattern=substrate%2Fframe%2F**%2Fsrc%2Fweights.rs%2Cpolkadot%2Fruntime%2F*%2Fsrc%2Fweights%2F**%2F*.rs%2Cpolkadot%2Fbridges%2Fmodules%2F*%2Fsrc%2Fweights.rs%2Ccumulus%2F**%2Fweights%2F*.rs%2Ccumulus%2F**%2Fweights%2Fxcm%2F*.rs%2Ccumulus%2F**%2Fsrc%2Fweights.rs)
      
      Note: Raw weights change does not mean much here, as this PR reduce the
      scope of what is benchmarked, they are therefore decreased by a good
      margin. One should instead print the Schedule using
      
      cargo test --features runtime-benchmarks bench_print_schedule --
      --nocapture
      or following the instructions from the
      [README](https://github.com/paritytech/polkadot-sdk/tree/pg/bench_tweaks/substrate/frame/contracts#schedule)
      for looking at the Schedule of a specific runtime
      
      ---------
      
      Co-authored-by: command-bot <>
  14. Mar 26, 2024
    • Dcompoze's avatar
      Fix spelling mistakes across the whole repository (#3808) · 002d9260
      Dcompoze authored
      **Update:** Pushed additional changes based on the review comments.
      
      **This pull request fixes various spelling mistakes in this
      repository.**
      
      Most of the changes are contained in the first **3** commits:
      
      - `Fix spelling mistakes in comments and docs`
      
      - `Fix spelling mistakes in test names`
      
      - `Fix spelling mistakes in error messages, panic messages, logs and
      tracing`
      
      Other source code spelling mistakes are separated into individual
      commits for easier reviewing:
      
      - `Fix the spelling of 'authority'`
      
      - `Fix the spelling of 'REASONABLE_HEADERS_IN_JUSTIFICATION_ANCESTRY'`
      
      - `Fix the spelling of 'prev_enqueud_messages'`
      
      - `Fix the spelling of 'endpoint'`
      
      - `Fix the spelling of 'children'`
      
      - `Fix the spelling of 'PenpalSiblingSovereignAccount'`
      
      - `Fix the spelling of 'PenpalSudoAccount'`
      
      - `Fix the spelling of 'insufficient'`
      
      - `Fix the spelling of 'PalletXcmExtrinsicsBenchmark'`
      
      - `Fix the spelling of 'subtracted'`
      
      - `Fix the spelling of 'CandidatePendingAvailability'`
      
      - `Fix the spelling of 'exclusive'`
      
      - `Fix the spelling of 'until'`
      
      - `Fix the spelling of 'discriminator'`
      
      - `Fix the spelling of 'nonexistent'`
      
      - `Fix the spelling of 'subsystem'`
      
      - `Fix the spelling of 'indices'`
      
      - `Fix the spelling of 'committed'`
      
      - `Fix the spelling of 'topology'`
      
      - `Fix the spelling of 'response'`
      
      - `Fix the spelling of 'beneficiary'`
      
      - `Fix the spelling of 'formatted'`
      
      - `Fix the spelling of 'UNKNOWN_PROOF_REQUEST'`
      
      - `Fix the spelling of 'succeeded'`
      
      - `Fix the spelling of 'reopened'`
      
      - `Fix the spelling of 'proposer'`
      
      - `Fix the spelling of 'InstantiationNonce'`
      
      - `Fix the spelling of 'depositor'`
      
      - `Fix the spelling of 'expiration'`
      
      - `Fix the spelling of 'phantom'`
      
      - `Fix the spelling of 'AggregatedKeyValue'`
      
      - `Fix the spelling of 'randomness'`
      
      - `Fix the spelling of 'defendant'`
      
      - `Fix the spelling of 'AquaticMammal'`
      
      - `Fix the spelling of 'transactions'`
      
      - `Fix the spelling of 'PassingTracingSubscriber'`
      
      - `Fix the spelling of 'TxSignaturePayload'`
      
      - `Fix the spelling of 'versioning'`
      
      - `Fix the spelling of 'descendant'`
      
      - `Fix the spelling of 'overridden'`
      
      - `Fix the spelling of 'network'`
      
      Let me know if this structure is adequate.
      
      **Note:** The usage of the words `Merkle`, `Merkelize`, `Merklization`,
      `Merkelization`, `Merkleization`, is somewhat inconsistent but I left it
      as it is.
      
      ~~**Note:** In some places the term `Receival` is used to refer to
      message reception, IMO `Reception` is the correct word here, but I left
      it as it is.~~
      
      ~~**Note:** In some places the term `Overlayed` is used instead of the
      more acceptable version `Overlaid` but I also left it as it is.~~
      
      ~~**Note:** In some places the term `Applyable` is used instead of the
      correct version `Applicable` but I also left it as it is.~~
      
      **Note:** Some usage of British vs American english e.g. `judgement` vs
      `judgment`, `initialise` vs `initialize`, `optimise` vs `optimize` etc.
      are both present in different places, but I suppose that's
      understandable given the number of contributors.
      
      ~~**Note:** There is a spelling mistake in `.github/CODEOWNERS` but it
      triggers errors in CI when I make changes to it, so I left it as it
      is.~~
  15. Mar 19, 2024
    • Davide Galassi's avatar
      Implement crypto byte array newtypes in term of a shared type (#3684) · 1e9fd237
      Davide Galassi authored
      Introduces `CryptoBytes` type defined as:
      
      ```rust
      pub struct CryptoBytes<const N: usize, Tag = ()>(pub [u8; N], PhantomData<fn() -> Tag>);
      ```
      
      The type implements a bunch of methods and traits which are typically
      expected from a byte array newtype
      (NOTE: some of the methods and trait implementations IMO are a bit
      redundant, but I decided to maintain them all to not change too much
      stuff in this PR)
      
      It also introduces two (generic) typical consumers of `CryptoBytes`:
      `PublicBytes` and `SignatureBytes`.
      
      ```rust
      pub struct PublicTag;
      pub PublicBytes<const N: usize, CryptoTag> = CryptoBytes<N, (PublicTag, CryptoTag)>;
      
      pub struct SignatureTag;
      pub SignatureBytes<const N: usize, CryptoTag> = CryptoBytes<N, (SignatureTag, CryptoTag)>;
      ```
      
      Both of them use a tag to differentiate the two types at a higher level.
      Downstream specializations will further specialize using a dedicated
      crypto tag. For example in ECDSA:
      
      
      ```rust
      pub struct EcdsaTag;
      
      pub type Public = PublicBytes<PUBLIC_KEY_SERIALIZED_SIZE, EcdsaTag>;
      pub type Signature = PublicBytes<PUBLIC_KEY_SERIALIZED_SIZE, EcdsaTag>;
      ```
      
      Overall we have a cleaner and most importantly **consistent** code for
      all the types involved
      
      All these details are opaque to the end user which can use `Public` and
      `Signature` for the cryptos as before
  16. Feb 20, 2024
    • PG Herveou's avatar
      Contracts: Stabilize APIs (#3384) · d250a6e4
      PG Herveou authored
      Remove `#[unstable]` on `call_v2`, `instantiate_v2`,
      `lock_delegate_dependency` and `unlock_delegate_dependency`.
      See ink! integrations: 
      - call_v2: https://github.com/paritytech/ink/pull/2077
      - instantiate_v2: <TODO>
      - lock/unlock dependency: https://github.com/paritytech/ink/pull/2076
  17. Feb 19, 2024
    • PG Herveou's avatar
      Contracts: xcm host fn fixes (#3086) · ca382f32
      PG Herveou authored
      ## Xcm changes:
      - Fix `pallet_xcm::execute`, move the logic into The `ExecuteController`
      so it can be shared with anything that implement that trait.
      - Make `ExecuteController::execute` retursn `DispatchErrorWithPostInfo`
      instead of `DispatchError`, so that we don't charge the full
      `max_weight` provided if the execution is incomplete (useful for
      force_batch or contracts calls)
      - Fix docstring for `pallet_xcm::execute`, to reflect the changes from
      #2405
      - Update the signature for `ExecuteController::execute`, we don't need
      to return the `Outcome` anymore since we only care about
      `Outcome::Complete`
      
      ## Contracts changes:
      
      - Update host fn `xcm_exexute`, we don't need to write the `Outcome` to
      the sandbox memory anymore. This was also not charged as well before so
      it if fixes this too.
      - One of the issue was that the dry_run of a contract that call
      `xcm_execute` would exhaust the `gas_limit`.
      
      This is because `XcmExecuteController::execute` takes a `max_weight`
      argument, and since we don't want the user to specify it manually we
      were passing everything left by pre-charghing
      `ctx.ext.gas_meter().gas_left()`
      
      - To fix it I added a `fn influence_lowest_limit` on the `Token` trait
      and make it return false for `RuntimeCost::XcmExecute`.
      - Got rid of the `RuntimeToken` indirection, we can just use
      `RuntimeCost` directly.
      
      ---------
      
      Co-authored-by: command-bot <>
  18. Feb 08, 2024
    • Alexander Theißen's avatar
      contracts: Don't fail fast if the `Weight` limit of a cross contract call is too big (#3243) · 28463a12
      Alexander Theißen authored
      
      When doing a cross contract call you can supply an optional Weight limit
      for that call. If one doesn't specify the limit (setting it to 0) the
      sub call will have all the remaining gas available. If one does specify
      the limit we subtract that amount eagerly from the Weight meter and fail
      fast if not enough `Weight` is available.
      
      This is quite annoying because setting a fixed limit will set the
      `gas_required` in the gas estimation according to the specified limit.
      Even if in that dry-run the actual call didn't consume that whole
      amount. It effectively discards the more precise measurement it should
      have from the dry-run.
      
      This PR changes the behaviour so that the supplied limit is an actual
      limit: We do the cross contract call even if the limit is higher than
      the remaining `Weight`. We then fail and roll back in the cub call in
      case there is not enough weight.
      
      This makes the weight estimation in the dry-run no longer dependent on
      the weight limit supplied when doing a cross contract call.
      
      ---------
      
      Co-authored-by: default avatarPG Herveou <pgherveou@gmail.com>
  19. Nov 29, 2023
    • PG Herveou's avatar
      Contracts: use compiled rust tests (#2347) · 2135fa87
      PG Herveou authored
      
      see #2189
      
      This PR does the following:
      - Bring the user api functions into a new pallet-contracts-uapi (They
      are currently defined in ink!
      [here])(https://github.com/paritytech/ink/blob/master/crates/env/src/engine/on_chain/ext.rs)
      - Add older api versions and unstable to the user api trait.
      - Remove pallet-contracts-primitives and bring the types it defined in
      uapi / pallet-contracts
      - Add the infrastructure to build fixtures from Rust files and test it
      works by replacing `dummy.wat` and `call.wat`
      - Move all the doc from wasm/runtime.rs to pallet-contracts-uapi.
      
      This will be done in a follow up:
      - convert the rest of the test from .wat to rust
      - bring risc-v uapi up to date with wasm
      - finalize the uapi host fns, making sure everything is codegen from the
      source host fns in pallet-contracts
      
      ---------
      
      Co-authored-by: default avatarAlexander Theißen <alex.theissen@me.com>
  20. Nov 02, 2023
    • Piotr Mikołajczyk's avatar
      Make `ExecResult` encodable (#1809) · 10857d0b
      Piotr Mikołajczyk authored
      # 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)
  21. Sep 29, 2023
    • Piotr Mikołajczyk's avatar
      Enable mocking contracts (#1331) · d8d90a82
      Piotr Mikołajczyk authored
      # 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)
  22. Sep 11, 2023
    • Alexander Theißen's avatar
      contracts: Run start function (#1367) · c879d1d5
      Alexander Theißen authored
      Fixes #116 
      
      Start function wasn't allowed in a contract. Now it is allowed and is
      being run.
      
      It was disallowed because it is not used by Rust and supporting it made
      the code more complex. However, not running the start function violates
      the wasm standard. This makes life harder for some languages (see linked
      ticket).
  23. Sep 05, 2023
  24. Sep 01, 2023
  25. Aug 31, 2023
  26. Aug 24, 2023
    • PG Herveou's avatar
      Contracts: Update Config::Debug (#14789) · cd464f9c
      PG Herveou authored
      * Update Debug trait
      
      * Rename
      
      * tweak
      
      * fmt
      
      * Better namings
      
      * rm unsafe-debug
      
      * rework doc
      
      * nit
      
      * fix comment
      
      * clippy
      
      * update naming
      
      * Rename file
      
      * fmt fixes
      
      * rename
      
      * Move tracing behind umbrella Debugging trait
      
      * fix
      
      * fix comment
      
      * reorder imports
      
      * comment
      
      * update doc
      
      * add missing doc
      
      * add missing doc
      
      * Update Debugging -> Debugger
      
      * Update bin/node/runtime/Cargo.toml
      cd464f9c
  27. Aug 18, 2023
    • juangirini's avatar
      Contracts remove deposit accounts (#14589) · 9c531596
      juangirini authored
      
      * contracts: refactor currency to use fungible traits
      
      * contracts: refactor currency to use fungible traits
      
      * contracts: add minor improvements
      
      * contracts: max holds config set
      
      * contracts: fix some typos
      
      * contracts: map token errors
      
      * fix typo
      
      * contracts: add 0 balance transfer to test
      
      * contracts: not transfer if value is zero
      
      * contracts: [WIP] add StorageDepositHold
      
      * contracts: add storage deposit held event
      
      * contracts: clean up some code and comments
      
      * contracts: add deposit storage released event
      
      * contracts: update comment
      
      * contracts: update slash cannot kill account test
      
      * contracts: fix tests
      
      * contracts: add some comments to the slashing test
      
      * contracts: add some comments to the slashing test
      
      * contracts: remove references to Currency
      
      * contracts: do not transfer if from equals to
      
      * bound BalanceOf<T>
      
      * added FixedPointOperand to Balance trait
      
      * move migrate sequence to config
      
      * remove commented out code
      
      * Update frame/contracts/src/lib.rs
      
      Co-authored-by: default avatarPG Herveou <pgherveou@gmail.com>
      
      * remove Migrations generic
      
      * make runtime use noop migrations
      
      * restrict is_upgrade_supported
      
      * undo is_upgrade_supported change
      
      * Update bin/node/runtime/src/lib.rs
      
      Co-authored-by: default avatarPG Herveou <pgherveou@gmail.com>
      
      * add rust doc example for `Migrations`
      
      * feature gate NoopMigration
      
      * fix example code
      
      * improve example
      
      * wip
      
      * remove FixedPointOperand from trait
      
      * trait bound BalanceOf
      
      * more trait bound BalanceOf
      
      * update to use RuntimeHoldReason
      
      * replace Fungible for Currency
      
      * update runtime
      
      * WIP
      
      * make v10 benchmark generic over currency
      
      * solve merge conflicts
      
      * make v12 migration benchmarking generic over DepositPerItem and DepositPerByte
      
      * give some format
      
      * fix tests and old migrations
      
      * add migration v13 placholder
      
      * wip
      
      * wip
      
      * add benchmarking
      
      * add weights
      
      * wip
      
      * [pallet_collective] Enforce prime is a valid member of collective in set_members extrinsic (#14354)
      
      * Updated set_members extrinsic to enforce prime is valid member of collective
      
      * Added additional tests for set_members extrinsic
      
      * applied the code review suggestions
      
      * update to docify 0.2.0 / crate-relative embed paths (#14570)
      
      * Fix Society v2 migration (#14421)
      
      * fix society v2 migration
      
      * Update frame/society/src/migrations.rs
      
      * Update frame/society/src/migrations.rs
      
      Co-authored-by: default avatarBastian Köcher <git@kchr.de>
      
      * Update frame/society/src/migrations.rs
      
      Co-authored-by: default avatarBastian Köcher <git@kchr.de>
      
      * update for versioned upgrade
      
      * fix society v2 migration
      
      * remove references to members being sorted from commnets
      
      * fix type
      
      * fix can_migrate check
      
      * add sanity log
      
      * fix sanity check
      
      * kick ci
      
      * kick ci
      
      * run tests with --experimental flag
      
      * versioned migration cleanup
      
      * revert pipeline change
      
      * use defensive!
      
      * semicolons
      
      * defensive and doc comment
      
      * address pr comment
      
      * feature gate the versioned migration
      
      * defensive_unwrap_or
      
      * fix test
      
      * fix doc comment
      
      * change defensive to a log warning
      
      * remove can_migrate anti-pattern
      
      * Update frame/society/Cargo.toml
      
      Co-authored-by: default avatarBastian Köcher <git@kchr.de>
      
      * add experimental feature warning to doc comment
      
      * update doc comment
      
      * bump ci
      
      * kick ci
      
      * kick ci
      
      * kick ci
      
      ---------
      
      Co-authored-by: default avatarKian Paimani <5588131+kianenigma@users.noreply.github.com>
      Co-authored-by: default avatarBastian Köcher <git@kchr.de>
      
      * Moves `Block` to `frame_system` instead of `construct_runtime` and removes `Header` and `BlockNumber` (#14437)
      
      * Initial setup
      
      * Adds node block
      
      * Uses UncheckedExtrinsic and removes Where section
      
      * Updates frame_system to use Block
      
      * Adds deprecation warning
      
      * Fixes pallet-timestamp
      
      * Removes Header and BlockNumber
      
      * Addresses review comments
      
      * Addresses review comments
      
      * Adds comment about compiler bug
      
      * Removes where clause
      
      * Refactors code
      
      * Fixes errors in cargo check
      
      * Fixes errors in cargo check
      
      * Fixes warnings in cargo check
      
      * Formatting
      
      * Fixes construct_runtime tests
      
      * Uses import instead of full path for BlockNumber
      
      * Uses import instead of full path for Header
      
      * Formatting
      
      * Fixes construct_runtime tests
      
      * Fixes imports in benchmarks
      
      * Formatting
      
      * Fixes construct_runtime tests
      
      * Formatting
      
      * Minor updates
      
      * Fixes construct_runtime ui tests
      
      * Fixes construct_runtime ui tests with 1.70
      
      * Fixes docs
      
      * Fixes docs
      
      * Adds u128 mock block type
      
      * Fixes split example
      
      * fixes for cumulus
      
      * ".git/.scripts/commands/fmt/fmt.sh"
      
      * Updates new tests
      
      * Fixes fully-qualified path in few places
      
      * Formatting
      
      * Update frame/examples/default-config/src/lib.rs
      
      Co-authored-by: default avatarJuan <juangirini@gmail.com>
      
      * Update frame/support/procedural/src/construct_runtime/mod.rs
      
      Co-authored-by: default avatarJuan <juangirini@gmail.com>
      
      * ".git/.scripts/commands/fmt/fmt.sh"
      
      * Addresses some review comments
      
      * Fixes build
      
      * ".git/.scripts/commands/fmt/fmt.sh"
      
      * Update frame/democracy/src/lib.rs
      
      Co-authored-by: default avatarOliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
      
      * Update frame/democracy/src/lib.rs
      
      Co-authored-by: default avatarOliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
      
      * Update frame/support/procedural/src/construct_runtime/mod.rs
      
      Co-authored-by: default avatarOliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
      
      * Update frame/support/procedural/src/construct_runtime/mod.rs
      
      Co-authored-by: default avatarOliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
      
      * Addresses review comments
      
      * Updates trait bounds
      
      * Minor fix
      
      * ".git/.scripts/commands/fmt/fmt.sh"
      
      * Removes unnecessary bound
      
      * ".git/.scripts/commands/fmt/fmt.sh"
      
      * Updates test
      
      * Fixes build
      
      * Adds a bound for header
      
      * ".git/.scripts/commands/fmt/fmt.sh"
      
      * Removes where block
      
      * Minor fix
      
      * Minor fix
      
      * Fixes tests
      
      * ".git/.scripts/commands/update-ui/update-ui.sh" 1.70
      
      * Updates test
      
      * Update primitives/runtime/src/traits.rs
      
      Co-authored-by: default avatarBastian Köcher <git@kchr.de>
      
      * Update primitives/runtime/src/traits.rs
      
      Co-authored-by: default avatarBastian Köcher <git@kchr.de>
      
      * Updates doc
      
      * Updates doc
      
      ---------
      
      Co-authored-by: command-bot <>
      Co-authored-by: default avatarJuan <juangirini@gmail.com>
      Co-authored-by: default avatarOliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
      Co-authored-by: default avatarBastian Köcher <git@kchr.de>
      
      * Refactor the asset-conversion-tx-payment pallet (#14558)
      
      * Code refactoring
      
      * Fix imports
      
      * Typo
      
      * Update frame/asset-conversion/src/types.rs
      
      Co-authored-by: default avatarjoe petrowski <25483142+joepetrowski@users.noreply.github.com>
      
      * Sync docs
      
      ---------
      
      Co-authored-by: parity-processbot <>
      Co-authored-by: default avatarjoe petrowski <25483142+joepetrowski@users.noreply.github.com>
      
      * wip
      
      * wip
      
      * wip
      
      * improve try-runtime imports
      
      * remove deposit account
      
      * wip
      
      * wip
      
      * fix benchmark test
      
      * improved rustdocs
      
      * improved rustdocs
      
      * remove log
      
      * ignore variable
      
      * reduce caller funding
      
      * wip
      
      * fix tests
      
      * fix tests
      
      * move v13 out
      
      * add v14
      
      * update v13 migration
      
      * v13 migration
      
      * benchmark v13_migration
      
      * fix broken compilation
      
      * ".git/.scripts/commands/bench/bench.sh" --subcommand=pallet --runtime=dev --target_dir=substrate --pallet=pallet_contracts
      
      * remove all the `where BalanceOf`
      
      * add Balance to Config
      
      * improve docs
      
      * add new deposit storage error
      
      * remove todo message
      
      * wip
      
      * rename migration v13 pre rebase
      
      * fix tests
      
      * add missing migration;
      
      * bump storage version
      
      * apply review suggestions
      
      * improved comment
      
      * remove unnecessary code
      
      * simplify migrations
      
      * mock balance
      
      * mock more for benchmarks
      
      * make room for rebaes
      
      * make room for rebase
      
      * fix benchmarking tests
      
      * fix benchmarking tests with caller
      
      * improve cargo toml
      
      * solve nit
      
      * Update frame/contracts/src/lib.rs
      
      Co-authored-by: default avatarAlexander Theißen <alex.theissen@me.com>
      
      * Update frame/contracts/src/exec.rs
      
      Co-authored-by: default avatarAlexander Theißen <alex.theissen@me.com>
      
      * Update frame/contracts/src/exec.rs
      
      Co-authored-by: default avatarAlexander Theißen <alex.theissen@me.com>
      
      * Update frame/contracts/src/storage/meter.rs
      
      Co-authored-by: default avatarAlexander Theißen <alex.theissen@me.com>
      
      * review improvements
      
      * remove extra events
      
      * update cargo
      
      * undo update cargo
      
      * review updates
      
      * wip
      
      * wip
      
      * fix test
      
      * remove type Balance
      
      * add extra fields to events
      
      * fix zepter ci
      
      * fix tests
      
      * remove commented out code
      
      * remove deposit_account from benchmarking
      
      * update v15 migration
      
      * wip
      
      * remove deposit account from codebase
      
      * add contract info to v15
      
      * make try-runtime fixes
      
      * fix wrong v14 logs
      
      * add extra post upgrade steps
      
      * remove old comments
      
      * wip
      
      * fix delegate deposit test
      
      * ".git/.scripts/commands/bench/bench.sh" --subcommand=pallet --runtime=dev --target_dir=substrate --pallet=pallet_contracts
      
      * wip
      
      * wip
      
      * wip
      
      * implement review updates
      
      * ".git/.scripts/commands/bench/bench.sh" --subcommand=pallet --runtime=dev --target_dir=substrate --pallet=pallet_contracts
      
      * fix documentation
      
      * fix consumers/providers
      
      * fix consumers/providers
      
      * do not check consumers in migration
      
      * review comments addressed
      
      * update fully qualified System
      
      * wip
      
      * wip
      
      * Transfer to beneficiary after `transfer_on_hold` (#14767)
      
      * transfer to beneficiary after transfer_on_hold
      
      * wip
      
      * add consumer comment
      
      * review updates
      
      * fix typo
      
      * make clippy happy
      
      * refactor `Terminated`
      
      * rename ContractStatus to ContractState
      
      * rename status to state
      
      * replace Contribution::Alive to ContractState::Alive
      
      * defer storage deposit charge
      
      * ".git/.scripts/commands/fmt/fmt.sh"
      
      * remove unused imports
      
      * Update frame/contracts/src/migration/v15.rs
      
      Co-authored-by: default avatarSasha Gryaznov <hi@agryaznov.com>
      
      * Update frame/contracts/src/storage/meter.rs
      
      Co-authored-by: default avatarSasha Gryaznov <hi@agryaznov.com>
      
      ---------
      
      Co-authored-by: default avatarPG Herveou <pgherveou@gmail.com>
      Co-authored-by: default avatarToufeeq Pasha <47236805+ToufeeqP@users.noreply.github.com>
      Co-authored-by: default avatarSam Johnson <sam@durosoft.com>
      Co-authored-by: default avatarLiam Aharon <liam.aharon@hotmail.com>
      Co-authored-by: default avatarKian Paimani <5588131+kianenigma@users.noreply.github.com>
      Co-authored-by: default avatarBastian Köcher <git@kchr.de>
      Co-authored-by: default avatargupnik <17176722+gupnik@users.noreply.github.com>
      Co-authored-by: default avatarOliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
      Co-authored-by: default avatarJegor Sidorenko <5252494+jsidorenko@users.noreply.github.com>
      Co-authored-by: default avatarjoe petrowski <25483142+joepetrowski@users.noreply.github.com>
      Co-authored-by: command-bot <>
      Co-authored-by: default avatarAlexander Theißen <alex.theissen@me.com>
      Co-authored-by: default avatarSasha Gryaznov <hi@agryaznov.com>
      9c531596
  28. Aug 17, 2023
  29. Aug 14, 2023
  30. Aug 05, 2023
    • Piotr Mikołajczyk's avatar
      Cross-contract calling: simple debugger (#14678) · b24b66c9
      Piotr Mikołajczyk authored
      * 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...
      b24b66c9
  31. Aug 02, 2023
    • juangirini's avatar
      Jg/13643 contracts migrate to fungible traits (#14020) · fef9723d
      juangirini authored
      
      * contracts: refactor currency to use fungible traits
      
      * contracts: refactor currency to use fungible traits
      
      * contracts: add minor improvements
      
      * contracts: max holds config set
      
      * contracts: fix some typos
      
      * contracts: map token errors
      
      * fix typo
      
      * contracts: add 0 balance transfer to test
      
      * contracts: not transfer if value is zero
      
      * contracts: [WIP] add StorageDepositHold
      
      * contracts: add storage deposit held event
      
      * contracts: clean up some code and comments
      
      * contracts: add deposit storage released event
      
      * contracts: update comment
      
      * contracts: update slash cannot kill account test
      
      * contracts: fix tests
      
      * contracts: add some comments to the slashing test
      
      * contracts: add some comments to the slashing test
      
      * contracts: remove references to Currency
      
      * contracts: do not transfer if from equals to
      
      * bound BalanceOf<T>
      
      * added FixedPointOperand to Balance trait
      
      * move migrate sequence to config
      
      * remove commented out code
      
      * Update frame/contracts/src/lib.rs
      
      Co-authored-by: default avatarPG Herveou <pgherveou@gmail.com>
      
      * remove Migrations generic
      
      * make runtime use noop migrations
      
      * restrict is_upgrade_supported
      
      * undo is_upgrade_supported change
      
      * Update bin/node/runtime/src/lib.rs
      
      Co-authored-by: default avatarPG Herveou <pgherveou@gmail.com>
      
      * add rust doc example for `Migrations`
      
      * feature gate NoopMigration
      
      * fix example code
      
      * improve example
      
      * wip
      
      * remove FixedPointOperand from trait
      
      * trait bound BalanceOf
      
      * more trait bound BalanceOf
      
      * update to use RuntimeHoldReason
      
      * replace Fungible for Currency
      
      * update runtime
      
      * WIP
      
      * make v10 benchmark generic over currency
      
      * solve merge conflicts
      
      * make v12 migration benchmarking generic over DepositPerItem and DepositPerByte
      
      * give some format
      
      * fix tests and old migrations
      
      * add migration v13 placholder
      
      * wip
      
      * wip
      
      * add benchmarking
      
      * add weights
      
      * wip
      
      * [pallet_collective] Enforce prime is a valid member of collective in set_members extrinsic (#14354)
      
      * Updated set_members extrinsic to enforce prime is valid member of collective
      
      * Added additional tests for set_members extrinsic
      
      * applied the code review suggestions
      
      * update to docify 0.2.0 / crate-relative embed paths (#14570)
      
      * Fix Society v2 migration (#14421)
      
      * fix society v2 migration
      
      * Update frame/society/src/migrations.rs
      
      * Update frame/society/src/migrations.rs
      
      Co-authored-by: default avatarBastian Köcher <git@kchr.de>
      
      * Update frame/society/src/migrations.rs
      
      Co-authored-by: default avatarBastian Köcher <git@kchr.de>
      
      * update for versioned upgrade
      
      * fix society v2 migration
      
      * remove references to members being sorted from commnets
      
      * fix type
      
      * fix can_migrate check
      
      * add sanity log
      
      * fix sanity check
      
      * kick ci
      
      * kick ci
      
      * run tests with --experimental flag
      
      * versioned migration cleanup
      
      * revert pipeline change
      
      * use defensive!
      
      * semicolons
      
      * defensive and doc comment
      
      * address pr comment
      
      * feature gate the versioned migration
      
      * defensive_unwrap_or
      
      * fix test
      
      * fix doc comment
      
      * change defensive to a log warning
      
      * remove can_migrate anti-pattern
      
      * Update frame/society/Cargo.toml
      
      Co-authored-by: default avatarBastian Köcher <git@kchr.de>
      
      * add experimental feature warning to doc comment
      
      * update doc comment
      
      * bump ci
      
      * kick ci
      
      * kick ci
      
      * kick ci
      
      ---------
      
      Co-authored-by: default avatarKian Paimani <5588131+kianenigma@users.noreply.github.com>
      Co-authored-by: default avatarBastian Köcher <git@kchr.de>
      
      * Moves `Block` to `frame_system` instead of `construct_runtime` and removes `Header` and `BlockNumber` (#14437)
      
      * Initial setup
      
      * Adds node block
      
      * Uses UncheckedExtrinsic and removes Where section
      
      * Updates frame_system to use Block
      
      * Adds deprecation warning
      
      * Fixes pallet-timestamp
      
      * Removes Header and BlockNumber
      
      * Addresses review comments
      
      * Addresses review comments
      
      * Adds comment about compiler bug
      
      * Removes where clause
      
      * Refactors code
      
      * Fixes errors in cargo check
      
      * Fixes errors in cargo check
      
      * Fixes warnings in cargo check
      
      * Formatting
      
      * Fixes construct_runtime tests
      
      * Uses import instead of full path for BlockNumber
      
      * Uses import instead of full path for Header
      
      * Formatting
      
      * Fixes construct_runtime tests
      
      * Fixes imports in benchmarks
      
      * Formatting
      
      * Fixes construct_runtime tests
      
      * Formatting
      
      * Minor updates
      
      * Fixes construct_runtime ui tests
      
      * Fixes construct_runtime ui tests with 1.70
      
      * Fixes docs
      
      * Fixes docs
      
      * Adds u128 mock block type
      
      * Fixes split example
      
      * fixes for cumulus
      
      * ".git/.scripts/commands/fmt/fmt.sh"
      
      * Updates new tests
      
      * Fixes fully-qualified path in few places
      
      * Formatting
      
      * Update frame/examples/default-config/src/lib.rs
      
      Co-authored-by: default avatarJuan <juangirini@gmail.com>
      
      * Update frame/support/procedural/src/construct_runtime/mod.rs
      
      Co-authored-by: default avatarJuan <juangirini@gmail.com>
      
      * ".git/.scripts/commands/fmt/fmt.sh"
      
      * Addresses some review comments
      
      * Fixes build
      
      * ".git/.scripts/commands/fmt/fmt.sh"
      
      * Update frame/democracy/src/lib.rs
      
      Co-authored-by: default avatarOliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
      
      * Update frame/democracy/src/lib.rs
      
      Co-authored-by: default avatarOliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
      
      * Update frame/support/procedural/src/construct_runtime/mod.rs
      
      Co-authored-by: default avatarOliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
      
      * Update frame/support/procedural/src/construct_runtime/mod.rs
      
      Co-authored-by: default avatarOliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
      
      * Addresses review comments
      
      * Updates trait bounds
      
      * Minor fix
      
      * ".git/.scripts/commands/fmt/fmt.sh"
      
      * Removes unnecessary bound
      
      * ".git/.scripts/commands/fmt/fmt.sh"
      
      * Updates test
      
      * Fixes build
      
      * Adds a bound for header
      
      * ".git/.scripts/commands/fmt/fmt.sh"
      
      * Removes where block
      
      * Minor fix
      
      * Minor fix
      
      * Fixes tests
      
      * ".git/.scripts/commands/update-ui/update-ui.sh" 1.70
      
      * Updates test
      
      * Update primitives/runtime/src/traits.rs
      
      Co-authored-by: default avatarBastian Köcher <git@kchr.de>
      
      * Update primitives/runtime/src/traits.rs
      
      Co-authored-by: default avatarBastian Köcher <git@kchr.de>
      
      * Updates doc
      
      * Updates doc
      
      ---------
      
      Co-authored-by: command-bot <>
      Co-authored-by: default avatarJuan <juangirini@gmail.com>
      Co-authored-by: default avatarOliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
      Co-authored-by: default avatarBastian Köcher <git@kchr.de>
      
      * Refactor the asset-conversion-tx-payment pallet (#14558)
      
      * Code refactoring
      
      * Fix imports
      
      * Typo
      
      * Update frame/asset-conversion/src/types.rs
      
      Co-authored-by: default avatarjoe petrowski <25483142+joepetrowski@users.noreply.github.com>
      
      * Sync docs
      
      ---------
      
      Co-authored-by: parity-processbot <>
      Co-authored-by: default avatarjoe petrowski <25483142+joepetrowski@users.noreply.github.com>
      
      * wip
      
      * wip
      
      * wip
      
      * improve try-runtime imports
      
      * fix benchmark test
      
      * improved rustdocs
      
      * improved rustdocs
      
      * remove log
      
      * ignore variable
      
      * reduce caller funding
      
      * move v13 out
      
      * update v13 migration
      
      * v13 migration
      
      * benchmark v13_migration
      
      * fix broken compilation
      
      * ".git/.scripts/commands/bench/bench.sh" --subcommand=pallet --runtime=dev --target_dir=substrate --pallet=pallet_contracts
      
      * remove all the `where BalanceOf`
      
      * add Balance to Config
      
      * improve docs
      
      * add new deposit storage error
      
      * remove todo message
      
      * rename migration v13 pre rebase
      
      * fix tests
      
      * add missing migration;
      
      * bump storage version
      
      * apply review suggestions
      
      * improved comment
      
      * remove unnecessary code
      
      * simplify migrations
      
      * mock balance
      
      * mock more for benchmarks
      
      * fix benchmarking tests
      
      * fix benchmarking tests with caller
      
      * improve cargo toml
      
      * solve nit
      
      * Update frame/contracts/src/lib.rs
      
      Co-authored-by: default avatarAlexander Theißen <alex.theissen@me.com>
      
      * Update frame/contracts/src/exec.rs
      
      Co-authored-by: default avatarAlexander Theißen <alex.theissen@me.com>
      
      * Update frame/contracts/src/exec.rs
      
      Co-authored-by: default avatarAlexander Theißen <alex.theissen@me.com>
      
      * Update frame/contracts/src/storage/meter.rs
      
      Co-authored-by: default avatarAlexander Theißen <alex.theissen@me.com>
      
      * review improvements
      
      * remove extra events
      
      * update cargo
      
      * undo update cargo
      
      * review updates
      
      * remove type Balance
      
      * add extra fields to events
      
      * fix zepter ci
      
      ---------
      
      Co-authored-by: default avatarPG Herveou <pgherveou@gmail.com>
      Co-authored-by: default avatarToufeeq Pasha <47236805+ToufeeqP@users.noreply.github.com>
      Co-authored-by: default avatarSam Johnson <sam@durosoft.com>
      Co-authored-by: default avatarLiam Aharon <liam.aharon@hotmail.com>
      Co-authored-by: default avatarKian Paimani <5588131+kianenigma@users.noreply.github.com>
      Co-authored-by: default avatarBastian Köcher <git@kchr.de>
      Co-authored-by: default avatargupnik <17176722+gupnik@users.noreply.github.com>
      Co-authored-by: default avatarOliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
      Co-authored-by: default avatarJegor Sidorenko <5252494+jsidorenko@users.noreply.github.com>
      Co-authored-by: default avatarjoe petrowski <25483142+joepetrowski@users.noreply.github.com>
      Co-authored-by: command-bot <>
      Co-authored-by: default avatarAlexander Theißen <alex.theissen@me.com>
      fef9723d
  32. Jul 26, 2023
    • PG Herveou's avatar
      Contracts Add deposit for dependencies (#14079) · 5a5b1df6
      PG Herveou authored
      
      * wip
      
      * fixes
      
      * rm comment
      
      * join fns
      
      * clippy
      
      * Fix limits
      
      * reduce diff
      
      * fix
      
      * fix
      
      * fix typo
      
      * refactor store to  use self
      
      * refactor run to take self by value
      
      * pass tests
      
      * rm comment
      
      * fixes
      
      * fix typo
      
      * rm
      
      * fix fmt
      
      * clippy
      
      * ".git/.scripts/commands/bench/bench.sh" pallet dev pallet_contracts
      
      * Update frame/contracts/src/lib.rs
      
      Co-authored-by: default avatarSasha Gryaznov <hi@agryaznov.com>
      
      * Update frame/contracts/src/wasm/mod.rs
      
      Co-authored-by: default avatarSasha Gryaznov <hi@agryaznov.com>
      
      * Update frame/contracts/src/wasm/mod.rs
      
      Co-authored-by: default avatarSasha Gryaznov <hi@agryaznov.com>
      
      * PR review, rm duplicate increment_refcount
      
      * PR review
      
      * Update frame/contracts/src/wasm/prepare.rs
      
      Co-authored-by: default avatarSasha Gryaznov <hi@agryaznov.com>
      
      * Add test for failing storage_deposit
      
      * fix lint
      
      * wip
      
      * Delegate update take 2
      
      * update
      
      * fix migration
      
      * fix migration
      
      * doc
      
      * fix lint
      
      * update migration
      
      * fix warning
      
      * reformat comment
      
      * regenerate weightInfo trait
      
      * fix merge
      
      * PR review
      
      https://github.com/paritytech/substrate/pull/14079#discussion_r1255904563
      
      * PR review
      
      https://github.com/paritytech/substrate/pull/14079/files#r1257521373
      
      * PR review remove optimisation
      
      https://github.com/paritytech/substrate/pull/14079/files#r1263312237
      
      * PR review fix return type
      
      https://github.com/paritytech/substrate/pull/14079/files#r1263315804
      
      * Apply suggestions from code review
      
      Co-authored-by: default avatarAlexander Theißen <alex.theissen@me.com>
      
      * PR review pass CodeInfo and update docstring
      
      https://github.com/paritytech/substrate/pull/14079/files#r1257522327
      
      * PR review add code_info to the executable
      
      https://github.com/paritytech/substrate/pull/14079/files#r1263309049
      
      * rename info -> contract_info
      
      * Update frame/contracts/src/exec.rs
      
      Co-authored-by: default avatarAlexander Theißen <alex.theissen@me.com>
      
      * Update frame/contracts/fixtures/add_remove_delegate_dependency.wat
      
      Co-authored-by: default avatarAlexander Theißen <alex.theissen@me.com>
      
      * Update frame/contracts/src/migration/v13.rs
      
      * fix tests
      
      * Fmt & fix tests
      
      * Test Result<(), _> return type
      
      * Update frame/contracts/src/migration.rs
      
      Co-authored-by: default avatarAlexander Theißen <alex.theissen@me.com>
      
      * Revert "Test Result<(), _> return type"
      
      This reverts commit a876168f2054edf84d720c666387583ccbe78dcd.
      
      * add / update doc comments
      
      * fix backticks
      
      * Revert "Revert "Test Result<(), _> return type""
      
      This reverts commit 3cbb6161d1abd9520cd9f8519b4dfbf4f29a2998.
      
      * fix bench
      
      * fix bench
      
      * fix
      
      * Update frame/contracts/src/storage/meter.rs
      
      Co-authored-by: default avatarAlexander Theißen <alex.theissen@me.com>
      
      * rm stale comments
      
      * Apply suggestions from code review
      
      Co-authored-by: default avatarSasha Gryaznov <hi@agryaznov.com>
      
      * PR suggestion
      
      * Add missing doc
      
      * fx lint
      
      * ".git/.scripts/commands/bench/bench.sh" --subcommand=pallet --runtime=dev --target_dir=substrate --pallet=pallet_contracts
      
      * Update frame/contracts/src/lib.rs
      
      Co-authored-by: default avatarJuan <juangirini@gmail.com>
      
      ---------
      
      Co-authored-by: command-bot <>
      Co-authored-by: default avatarSasha Gryaznov <hi@agryaznov.com>
      Co-authored-by: default avatarAlexander Theißen <alex.theissen@me.com>
      Co-authored-by: default avatarJuan <juangirini@gmail.com>
      5a5b1df6
  33. Jul 13, 2023
    • gupnik's avatar
      Moves `Block` to `frame_system` instead of `construct_runtime` and removes... · 5e7b27e9
      gupnik authored
      Moves `Block` to `frame_system` instead of `construct_runtime` and removes `Header` and `BlockNumber` (#14437)
      
      * Initial setup
      
      * Adds node block
      
      * Uses UncheckedExtrinsic and removes Where section
      
      * Updates frame_system to use Block
      
      * Adds deprecation warning
      
      * Fixes pallet-timestamp
      
      * Removes Header and BlockNumber
      
      * Addresses review comments
      
      * Addresses review comments
      
      * Adds comment about compiler bug
      
      * Removes where clause
      
      * Refactors code
      
      * Fixes errors in cargo check
      
      * Fixes errors in cargo check
      
      * Fixes warnings in cargo check
      
      * Formatting
      
      * Fixes construct_runtime tests
      
      * Uses import instead of full path for BlockNumber
      
      * Uses import instead of full path for Header
      
      * Formatting
      
      * Fixes construct_runtime tests
      
      * Fixes imports in benchmarks
      
      * Formatting
      
      * Fixes construct_runtime tests
      
      * Formatting
      
      * Minor updates
      
      * Fixes construct_runtime ui tests
      
      * Fixes construct_runtime ui tests with 1.70
      
      * Fixes docs
      
      * Fixes docs
      
      * Adds u128 mock block type
      
      * Fixes split example
      
      * fixes for cumulus
      
      * ".git/.scripts/commands/fmt/fmt.sh"
      
      * Updates new tests
      
      * Fixes fully-qualified path in few places
      
      * Formatting
      
      * Update frame/examples/default-config/src/lib.rs
      
      Co-authored-by: default avatarJuan <juangirini@gmail.com>
      
      * Update frame/support/procedural/src/construct_runtime/mod.rs
      
      Co-authored-by: default avatarJuan <juangirini@gmail.com>
      
      * ".git/.scripts/commands/fmt/fmt.sh"
      
      * Addresses some review comments
      
      * Fixes build
      
      * ".git/.scripts/commands/fmt/fmt.sh"
      
      * Update frame/democracy/src/lib.rs
      
      Co-authored-by: default avatarOliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
      
      * Update frame/democracy/src/lib.rs
      
      Co-authored-by: default avatarOliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
      
      * Update frame/support/procedural/src/construct_runtime/mod.rs
      
      Co-authored-by: default avatarOliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
      
      * Update frame/support/procedural/src/construct_runtime/mod.rs
      
      Co-authored-by: default avatarOliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
      
      * Addresses review comments
      
      * Updates trait bounds
      
      * Minor fix
      
      * ".git/.scripts/commands/fmt/fmt.sh"
      
      * Removes unnecessary bound
      
      * ".git/.scripts/commands/fmt/fmt.sh"
      
      * Updates test
      
      * Fixes build
      
      * Adds a bound for header
      
      * ".git/.scripts/commands/fmt/fmt.sh"
      
      * Removes where block
      
      * Minor fix
      
      * Minor fix
      
      * Fixes tests
      
      * ".git/.scripts/commands/update-ui/update-ui.sh" 1.70
      
      * Updates test
      
      * Update primitives/runtime/src/traits.rs
      
      Co-authored-by: default avatarBastian Köcher <git@kchr.de>
      
      * Update primitives/runtime/src/traits.rs
      
      Co-authored-by: default avatarBastian Köcher <git@kchr.de>
      
      * Updates doc
      
      * Updates doc
      
      ---------
      
      Co-authored-by: command-bot <>
      Co-authored-by: default avatarJuan <juangirini@gmail.com>
      Co-authored-by: default avatarOliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
      Co-authored-by: default avatarBastian Köcher <git@kchr.de>
      5e7b27e9
  34. Jul 06, 2023
  35. Jul 03, 2023
    • Sasha Gryaznov's avatar
      contracts: switch to wasmi gas metering (#14084) · fda86dd5
      Sasha Gryaznov authored
      * upgrade to wasmi 0.29
      
      * prepare cleanup
      
      * sync ref_time w engine from the stack frame
      
      * proc_macro: sync gas in host funcs
      
      save: compiles, only gas pushing left to macro
      
      WIP proc macro
      
      proc macro: done
      
      * clean benchmarks & schedule: w_base = w_i64const
      
      * scale gas values btw engine and gas meter
      
      * (re)instrumentation & code_cache removed
      
      * remove gas() host fn, continue clean-up
      
      save
      
      * address review comments
      
      * move from CodeStorage&PrefabWasmModule to PristineCode&WasmBlob
      
      * refactor: no reftime_limit&schedule passes, no CodeStorage
      
      * bugs fixing
      
      * fix tests: expected deposit amount
      
      * fix prepare::tests
      
      * update tests and fix bugs
      
      tests::run_out_of_gas_engine, need 2 more
      
      save: 2 bugs with gas syncs: 1 of 2 tests done
      
      gas_syncs_no_overcharge bug fixed, test passes!
      
      cleaned out debug prints
      
      second bug is not a bug
      
      disabled_chain_extension test fix (err msg)
      
      tests run_out_of_fuel_host, chain_extension pass
      
      all tests pass
      
      * update docs
      
      * bump wasmi 0.30.0
      
      * benchmarks updated, tests pass
      
      * refactoring
      
      * s/OwnerInfo/CodeInfo/g;
      
      * migration: draft, compiles
      
      * migration: draft, runs
      
      * migration: draft, runs (fixing)
      
      * deposits repaid non pro rata
      
      * deposits repaid pro rata
      
      * better try-runtime output
      
      * even better try-runtime output
      
      * benchmark migration
      
      * fix merge leftover
      
      * add forgotten fixtures, fix docs
      
      * address review comments
      
      * ci fixes
      
      * cleanup
      
      * benchmarks::prepare to return DispatchError
      
      * ".git/.scripts/commands/bench/bench.sh" pallet dev pallet_contracts
      
      * store memory limits to CodeInfo
      
      * ci: roll back weights
      
      * ".git/.scripts/commands/bench-vm/bench-vm.sh" pallet dev pallet_contracts
      
      * drive-by: update Readme and pallet rustdoc
      
      * ".git/.scripts/commands/bench/bench.sh" pallet dev pallet_contracts
      
      * ".git/.scripts/commands/bench/bench.sh" pallet dev pallet_contracts
      
      * use wasmi 0.29
      
      * ".git/.scripts/commands/bench/bench.sh" pallet dev pallet_contracts
      
      * use wasmi 0.30 again
      
      * query memory limits from wasmi
      
      * better migration types
      
      * ci: pull weights from master
      
      * refactoring
      
      * ".git/.scripts/commands/bench-vm/bench-vm.sh" pallet dev pallet_contracts
      
      * addressing review comments
      
      * refactor
      
      * address review comments
      
      * optimize migration
      
      * ".git/.scripts/commands/bench/bench.sh" pallet dev pallet_contracts
      
      * another review round comments addressed
      
      * ci fix one
      
      * clippy fix
      
      * ci fix two
      
      ---------
      
      Co-authored-by: command-bot <>
      fda86dd5
  36. May 02, 2023
    • juangirini's avatar
      contracts: Make Origin information available (#13708) · 5db4119f
      juangirini authored
      
      * 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: default avatarPG Herveou <pgherveou@gmail.com>
      
      * Update frame/contracts/src/exec.rs
      
      Co-authored-by: default avatarPG Herveou <pgherveou@gmail.com>
      
      * 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: default avatarSasha Gryaznov <hi@agryaznov.com>
      
      * 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: default avatarSasha Gryaznov <hi@agryaznov.com>
      
      * Update frame/contracts/src/lib.rs
      
      Co-authored-by: default avatarSasha Gryaznov <hi@agryaznov.com>
      
      * Update frame/contracts/src/wasm/runtime.rs
      
      Co-authored-by: default avatarSasha Gryaznov <hi@agryaznov.com>
      
      * contracts: improve function description
      
      ---------
      
      Co-authored-by: parity-processbot <>
      Co-authored-by: default avatarPG Herveou <pgherveou@gmail.com>
      Co-authored-by: default avatarSasha Gryaznov <hi@agryaznov.com>
      5db4119f
  37. Apr 26, 2023
    • Sasha Gryaznov's avatar
      [contracts] Port host functions to Weight V2 and storage deposit limit (#13565) · 60310de7
      Sasha Gryaznov authored
      
      * added [unstable][seal2] call()
      
      * updated test to cover new seal_call proof_limit
      
      * docs updated
      
      * add [seal2][unstable] instantiate() and test
      
      * add [seal2][unstable] weight_to_fee() + docs and test
      
      * add [seal2][unstable] gas_left() + docs and test
      
      * update benchmarks
      
      * add DefaultDepositLimit to pallet Config
      
      * specify deposit limit for nested call
      
      add test for nested call deposit limit
      
      save: separate deposit limit for nested calls
      
      * specify deposit limit for nested instantiate
      
      save: works with test
      
      cleaned up debugging outputs
      
      * update benchmarks
      
      * added missing fixtures
      
      * fix benches
      
      * pass explicit deposit limit to storage bench
      
      * explicit deposit limit for another set_storage bench
      
      * add more deposit limit for storage benches
      
      * moving to simplified benchmarks
      
      * moved to simplified benchmarks
      
      * fix seal_weight_to_fee bench
      
      * fix seal_instantiate benchmark
      
      * doc typo fix
      
      * default dl for benchmarking
      
      more dl for tests
      
      dl for tests to max
      
      deposit_limit fix in instantiate bench
      
      fix instantiate bench
      
      fix instantiate benchmark
      
      fix instantiate bench again
      
      remove dbg
      
      fix seal bench again
      
      fixing it still
      
      seal_instantiate zero deposit
      
      less runs to check if deposit enough
      
      try
      
      try 2
      
      try 3
      
      try 4
      
      * max_runtime_mem to Schedule limits
      
      * add default deposit limit fallback check to test
      
      * weight params renaming
      
      * fmt
      
      * Update frame/contracts/src/benchmarking/mod.rs
      
      Co-authored-by: default avatarPG Herveou <pgherveou@gmail.com>
      
      * prettify inputs in tests
      
      * typestate param refactored
      
      ---------
      
      Co-authored-by: default avatarPG Herveou <pgherveou@gmail.com>
      60310de7
  38. Apr 25, 2023
  39. Apr 12, 2023
    • PG Herveou's avatar
      contracts: add sr25519_verify (#13724) · 03c99fe0
      PG Herveou authored
      
      * wip
      
      * fix
      
      * wip
      
      * fix lint
      
      * rm fixture fix
      
      * missing comment
      
      * fix lint
      
      * add comment to the wsm file
      
      * fix comment
      
      * Apply suggestions from code review
      
      Co-authored-by: default avatarSasha Gryaznov <hi@agryaznov.com>
      
      * wip
      
      * wip weights
      
      * wip weights
      
      * PR comment: test with return code
      
      * wip
      
      * PR review add mock test
      
      * remove
      
      * lint
      
      * Update frame/contracts/fixtures/sr25519_verify.wat
      
      * fix comments
      
      * Update frame/contracts/src/benchmarking/mod.rs
      
      * Update frame/contracts/src/wasm/runtime.rs
      
      * Update frame/contracts/fixtures/sr25519_verify.wat
      
      * Update frame/contracts/src/benchmarking/mod.rs
      
      * fix lint
      
      * ".git/.scripts/commands/bench/bench.sh" pallet dev pallet_contracts
      
      * Update frame/contracts/src/wasm/runtime.rs
      
      Co-authored-by: default avatarAlexander Theißen <alex.theissen@me.com>
      
      * PR: review use unstable + remove arbitrary index 4
      
      * Add benchmark for calculating overhead of calling sr25519_verify
      
      * fix message length encoding
      
      * fix weights
      
      * ".git/.scripts/commands/bench/bench.sh" pallet dev pallet_contracts
      
      * Apply suggestions from code review
      
      * Update frame/contracts/src/wasm/runtime.rs
      
      * Update frame/contracts/src/wasm/runtime.rs
      
      * Update frame/contracts/src/benchmarking/mod.rs
      
      * Update frame/contracts/src/benchmarking/mod.rs
      
      * Update frame/contracts/src/schedule.rs
      
      Co-authored-by: default avatarSasha Gryaznov <hi@agryaznov.com>
      
      * Update frame/contracts/src/schedule.rs
      
      Co-authored-by: default avatarSasha Gryaznov <hi@agryaznov.com>
      
      * Update frame/contracts/src/wasm/runtime.rs
      
      * Update frame/contracts/src/wasm/runtime.rs
      
      Co-authored-by: default avatarSasha Gryaznov <hi@agryaznov.com>
      
      * PR review
      
      ---------
      
      Co-authored-by: default avatarSasha Gryaznov <hi@agryaznov.com>
      Co-authored-by: command-bot <>
      Co-authored-by: default avatarAlexander Theißen <alex.theissen@me.com>
      03c99fe0