mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-13 19:51:05 +00:00
Contracts Add deposit for dependencies (#14079)
* 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: Sasha Gryaznov <hi@agryaznov.com> * Update frame/contracts/src/wasm/mod.rs Co-authored-by: Sasha Gryaznov <hi@agryaznov.com> * Update frame/contracts/src/wasm/mod.rs Co-authored-by: Sasha Gryaznov <hi@agryaznov.com> * PR review, rm duplicate increment_refcount * PR review * Update frame/contracts/src/wasm/prepare.rs Co-authored-by: Sasha 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: Alexander 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: Alexander Theißen <alex.theissen@me.com> * Update frame/contracts/fixtures/add_remove_delegate_dependency.wat Co-authored-by: Alexander 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: Alexander 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: Alexander Theißen <alex.theissen@me.com> * rm stale comments * Apply suggestions from code review Co-authored-by: Sasha 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: Juan <juangirini@gmail.com> --------- Co-authored-by: command-bot <> Co-authored-by: Sasha Gryaznov <hi@agryaznov.com> Co-authored-by: Alexander Theißen <alex.theissen@me.com> Co-authored-by: Juan <juangirini@gmail.com>
This commit is contained in:
@@ -183,6 +183,7 @@ pub mod pallet {
|
||||
use super::*;
|
||||
use frame_support::pallet_prelude::*;
|
||||
use frame_system::pallet_prelude::*;
|
||||
use sp_runtime::Perbill;
|
||||
|
||||
/// The current storage version.
|
||||
#[cfg(not(any(test, feature = "runtime-benchmarks")))]
|
||||
@@ -290,6 +291,13 @@ pub mod pallet {
|
||||
#[pallet::constant]
|
||||
type DepositPerItem: Get<BalanceOf<Self>>;
|
||||
|
||||
/// The percentage of the storage deposit that should be held for using a code hash.
|
||||
/// Instantiating a contract, or calling [`chain_extension::Ext::add_delegate_dependency`]
|
||||
/// protects the code from being removed. In order to prevent abuse these actions are
|
||||
/// protected with a percentage of the code deposit.
|
||||
#[pallet::constant]
|
||||
type CodeHashLockupDepositPercent: Get<Perbill>;
|
||||
|
||||
/// The address generator used to generate the addresses of contracts.
|
||||
type AddressGenerator: AddressGenerator<Self>;
|
||||
|
||||
@@ -305,6 +313,11 @@ pub mod pallet {
|
||||
#[pallet::constant]
|
||||
type MaxStorageKeyLen: Get<u32>;
|
||||
|
||||
/// The maximum number of delegate_dependencies that a contract can lock with
|
||||
/// [`chain_extension::Ext::add_delegate_dependency`].
|
||||
#[pallet::constant]
|
||||
type MaxDelegateDependencies: Get<u32>;
|
||||
|
||||
/// Make contract callable functions marked as `#[unstable]` available.
|
||||
///
|
||||
/// Contracts that use `#[unstable]` functions won't be able to be uploaded unless
|
||||
@@ -730,7 +743,7 @@ pub mod pallet {
|
||||
}
|
||||
|
||||
output.gas_meter.into_dispatch_result(
|
||||
output.result.map(|(_address, result)| result),
|
||||
output.result.map(|(_address, output)| output),
|
||||
T::WeightInfo::instantiate_with_code(code_len, data_len, salt_len),
|
||||
)
|
||||
}
|
||||
@@ -961,6 +974,14 @@ pub mod pallet {
|
||||
MigrationInProgress,
|
||||
/// Migrate dispatch call was attempted but no migration was performed.
|
||||
NoMigrationPerformed,
|
||||
/// The contract has reached its maximum number of delegate dependencies.
|
||||
MaxDelegateDependenciesReached,
|
||||
/// The dependency was not found in the contract's delegate dependencies.
|
||||
DelegateDependencyNotFound,
|
||||
/// The contract already depends on the given delegate dependency.
|
||||
DelegateDependencyAlreadyExists,
|
||||
/// Can not add a delegate dependency to the code hash of the contract itself.
|
||||
CannotAddSelfAsDelegateDependency,
|
||||
}
|
||||
|
||||
/// A mapping from a contract's code hash to its code.
|
||||
@@ -1001,7 +1022,7 @@ pub mod pallet {
|
||||
/// TWOX-NOTE: SAFE since `AccountId` is a secure hash.
|
||||
#[pallet::storage]
|
||||
pub(crate) type ContractInfoOf<T: Config> =
|
||||
StorageMap<_, Twox64Concat, T::AccountId, ContractInfo<T>>;
|
||||
StorageMap<_, Identity, T::AccountId, ContractInfo<T>>;
|
||||
|
||||
/// Evicted contracts that await child trie deletion.
|
||||
///
|
||||
|
||||
Reference in New Issue
Block a user