Add storage deposit support (#4304)
* add storage deposit support * Revert "add storage deposit support" This reverts commit 10eea6332b2756b23766df316a90ba4f244cb424. * generate new metadata * make it build * add storage deposit in RPCs * rename endowment to value * support older nodes * check the right things * hide storage_deposit until better supported * add the right defaults * hardcode storageDepositLimit to null
This commit is contained in:
@@ -21,6 +21,7 @@ export abstract class Base<ApiType extends ApiTypes> {
|
||||
? abi
|
||||
: new Abi(abi, api.registry.getChainProperties());
|
||||
this.api = api;
|
||||
|
||||
this._decorateMethod = decorateMethod;
|
||||
|
||||
assert(!!(api && api.isConnected && api.tx), 'Your API has not been initialized correctly and is not connected to a chain');
|
||||
|
||||
@@ -57,14 +57,15 @@ export class Blueprint<ApiType extends ApiTypes> extends Base<ApiType> {
|
||||
}
|
||||
|
||||
#deploy = (constructorOrId: AbiConstructor | string | number, { gasLimit = BN_ZERO, salt, value = BN_ZERO }: BlueprintOptions, params: unknown[]): SubmittableExtrinsic<ApiType, BlueprintSubmittableResult<ApiType>> => {
|
||||
return this.api.tx.contracts
|
||||
.instantiate(
|
||||
value,
|
||||
gasLimit,
|
||||
this.codeHash,
|
||||
this.abi.findConstructor(constructorOrId).toU8a(params),
|
||||
encodeSalt(salt)
|
||||
)
|
||||
const hasStorageDeposit = this.api.tx.contracts.instantiate.meta.args.length === 6;
|
||||
const storageDepositLimit = null;
|
||||
const tx = hasStorageDeposit
|
||||
? this.api.tx.contracts.instantiate(value, gasLimit, storageDepositLimit, this.codeHash, this.abi.findConstructor(constructorOrId).toU8a(params), encodeSalt(salt))
|
||||
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
||||
// @ts-ignore old style without storage deposit
|
||||
: this.api.tx.contracts.instantiate(value, gasLimit, this.codeHash, this.abi.findConstructor(constructorOrId).toU8a(params), encodeSalt(salt));
|
||||
|
||||
return tx
|
||||
.withResultTransform((result: ISubmittableResult) =>
|
||||
new BlueprintSubmittableResult(result, applyOnEvent(result, ['Instantiated'], ([record]: EventRecord[]) =>
|
||||
new Contract<ApiType>(this.api, this.abi, record.event.data[1] as AccountId, this._decorateMethod)
|
||||
|
||||
@@ -61,25 +61,25 @@ export class Code<ApiType extends ApiTypes> extends Base<ApiType> {
|
||||
}
|
||||
|
||||
#instantiate = (constructorOrId: AbiConstructor | string | number, { gasLimit = BN_ZERO, salt, value = BN_ZERO }: BlueprintOptions, params: unknown[]): SubmittableExtrinsic<ApiType, CodeSubmittableResult<ApiType>> => {
|
||||
return this.api.tx.contracts
|
||||
.instantiateWithCode(
|
||||
value,
|
||||
gasLimit,
|
||||
compactAddLength(this.code),
|
||||
this.abi.findConstructor(constructorOrId).toU8a(params),
|
||||
encodeSalt(salt)
|
||||
)
|
||||
.withResultTransform((result: ISubmittableResult) =>
|
||||
new CodeSubmittableResult(result, ...(applyOnEvent(result, ['CodeStored', 'Instantiated'], (records: EventRecord[]) =>
|
||||
records.reduce<[Blueprint<ApiType>?, Contract<ApiType>?]>(([blueprint, contract], { event }) =>
|
||||
this.api.events.contracts.Instantiated.is(event)
|
||||
? [blueprint, new Contract<ApiType>(this.api, this.abi, event.data[1], this._decorateMethod)]
|
||||
: this.api.events.contracts.CodeStored.is(event)
|
||||
? [new Blueprint<ApiType>(this.api, this.abi, event.data[0], this._decorateMethod), contract]
|
||||
: [blueprint, contract],
|
||||
[])
|
||||
) || []))
|
||||
);
|
||||
const hasStorageDeposit = this.api.tx.contracts.instantiateWithCode.meta.args.length === 6;
|
||||
const storageDepositLimit = null;
|
||||
const tx = hasStorageDeposit
|
||||
? this.api.tx.contracts.instantiateWithCode(value, gasLimit, storageDepositLimit, compactAddLength(this.code), this.abi.findConstructor(constructorOrId).toU8a(params), encodeSalt(salt))
|
||||
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
||||
// @ts-ignore old style without storage deposit
|
||||
: this.api.tx.contracts.instantiateWithCode(value, gasLimit, compactAddLength(this.code), this.abi.findConstructor(constructorOrId).toU8a(params), encodeSalt(salt));
|
||||
|
||||
return tx.withResultTransform((result: ISubmittableResult) =>
|
||||
new CodeSubmittableResult(result, ...(applyOnEvent(result, ['CodeStored', 'Instantiated'], (records: EventRecord[]) =>
|
||||
records.reduce<[Blueprint<ApiType>?, Contract<ApiType>?]>(([blueprint, contract], { event }) =>
|
||||
this.api.events.contracts.Instantiated.is(event)
|
||||
? [blueprint, new Contract<ApiType>(this.api, this.abi, event.data[1], this._decorateMethod)]
|
||||
: this.api.events.contracts.CodeStored.is(event)
|
||||
? [new Blueprint<ApiType>(this.api, this.abi, event.data[0], this._decorateMethod), contract]
|
||||
: [blueprint, contract],
|
||||
[])
|
||||
) || []))
|
||||
);
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
import type { SubmittableExtrinsic } from '@polkadot/api/submittable/types';
|
||||
import type { ApiTypes, DecorateMethod } from '@polkadot/api/types';
|
||||
import type { Bytes } from '@polkadot/types';
|
||||
import type { AccountId, EventRecord, Weight } from '@polkadot/types/interfaces';
|
||||
import type { AccountId, ContractExecResult, EventRecord, Weight } from '@polkadot/types/interfaces';
|
||||
import type { ISubmittableResult } from '@polkadot/types/types';
|
||||
import type { AbiMessage, ContractCallOutcome, ContractOptions, DecodedEvent } from '../types';
|
||||
import type { ContractCallResult, ContractCallSend, ContractQuery, ContractTx, MapMessageQuery, MapMessageTx } from './types';
|
||||
@@ -33,14 +33,14 @@ function createQuery <ApiType extends ApiTypes> (fn: (origin: string | AccountId
|
||||
return (origin: string | AccountId | Uint8Array, options: bigint | string | number | BN | ContractOptions, ...params: unknown[]): ContractCallResult<ApiType, ContractCallOutcome> =>
|
||||
isOptions(options)
|
||||
? fn(origin, options, params)
|
||||
: fn(origin, ...extractOptions(options, params));
|
||||
: fn(origin, ...extractOptions<ContractOptions>(options, params));
|
||||
}
|
||||
|
||||
function createTx <ApiType extends ApiTypes> (fn: (options: ContractOptions, params: unknown[]) => SubmittableExtrinsic<ApiType>): ContractTx<ApiType> {
|
||||
return (options: bigint | string | number | BN | ContractOptions, ...params: unknown[]): SubmittableExtrinsic<ApiType> =>
|
||||
isOptions(options)
|
||||
? fn(options, params)
|
||||
: fn(...extractOptions(options, params));
|
||||
: fn(...extractOptions<ContractOptions>(options, params));
|
||||
}
|
||||
|
||||
export class ContractSubmittableResult extends SubmittableResult {
|
||||
@@ -107,29 +107,30 @@ export class Contract<ApiType extends ApiTypes> extends Base<ApiType> {
|
||||
};
|
||||
|
||||
#exec = (messageOrId: AbiMessage | string | number, { gasLimit = BN_ZERO, value = BN_ZERO }: ContractOptions, params: unknown[]): SubmittableExtrinsic<ApiType> => {
|
||||
return this.api.tx.contracts
|
||||
.call(
|
||||
this.address,
|
||||
value,
|
||||
this.#getGas(gasLimit),
|
||||
this.abi.findMessage(messageOrId).toU8a(params)
|
||||
)
|
||||
.withResultTransform((result: ISubmittableResult) =>
|
||||
// ContractEmitted is the current generation, ContractExecution is the previous generation
|
||||
new ContractSubmittableResult(result, applyOnEvent(result, ['ContractEmitted', 'ContractExecution'], (records: EventRecord[]) =>
|
||||
records
|
||||
.map(({ event: { data: [, data] } }): DecodedEvent | null => {
|
||||
try {
|
||||
return this.abi.decodeEvent(data as Bytes);
|
||||
} catch (error) {
|
||||
l.error(`Unable to decode contract event: ${(error as Error).message}`);
|
||||
const hasStorageDeposit = this.api.tx.contracts.call.meta.args.length === 5;
|
||||
const storageDepositLimit = null;
|
||||
const tx = hasStorageDeposit
|
||||
? this.api.tx.contracts.call(this.address, value, this.#getGas(gasLimit), storageDepositLimit, this.abi.findMessage(messageOrId).toU8a(params))
|
||||
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
||||
// @ts-ignore old style without storage deposit
|
||||
: this.api.tx.contracts.call(this.address, value, this.#getGas(gasLimit), this.abi.findMessage(messageOrId).toU8a(params));
|
||||
|
||||
return null;
|
||||
}
|
||||
})
|
||||
.filter((decoded): decoded is DecodedEvent => !!decoded)
|
||||
))
|
||||
);
|
||||
return tx.withResultTransform((result: ISubmittableResult) =>
|
||||
// ContractEmitted is the current generation, ContractExecution is the previous generation
|
||||
new ContractSubmittableResult(result, applyOnEvent(result, ['ContractEmitted', 'ContractExecution'], (records: EventRecord[]) =>
|
||||
records
|
||||
.map(({ event: { data: [, data] } }): DecodedEvent | null => {
|
||||
try {
|
||||
return this.abi.decodeEvent(data as Bytes);
|
||||
} catch (error) {
|
||||
l.error(`Unable to decode contract event: ${(error as Error).message}`);
|
||||
|
||||
return null;
|
||||
}
|
||||
})
|
||||
.filter((decoded): decoded is DecodedEvent => !!decoded)
|
||||
))
|
||||
);
|
||||
};
|
||||
|
||||
#read = (messageOrId: AbiMessage | string | number, { gasLimit = BN_ZERO, value = BN_ZERO }: ContractOptions, params: unknown[]): ContractCallSend<ApiType> => {
|
||||
@@ -139,28 +140,26 @@ export class Contract<ApiType extends ApiTypes> extends Base<ApiType> {
|
||||
|
||||
return {
|
||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
||||
send: this._decorateMethod((origin: string | AccountId | Uint8Array) =>
|
||||
this.api.rx.rpc.contracts
|
||||
.call({
|
||||
dest: this.address,
|
||||
gasLimit: this.#getGas(gasLimit, true),
|
||||
inputData: message.toU8a(params),
|
||||
origin,
|
||||
value
|
||||
})
|
||||
.pipe(
|
||||
map(({ debugMessage, gasConsumed, gasRequired, result }): ContractCallOutcome => ({
|
||||
debugMessage,
|
||||
gasConsumed,
|
||||
gasRequired: gasRequired && !gasRequired.isZero()
|
||||
? gasRequired
|
||||
: gasConsumed,
|
||||
output: result.isOk && message.returnType
|
||||
? this.abi.registry.createTypeUnsafe(message.returnType.lookupName || message.returnType.type, [result.asOk.data.toU8a(true)], { isPedantic: true })
|
||||
: null,
|
||||
result
|
||||
}))
|
||||
)
|
||||
send: this._decorateMethod((origin: string | AccountId | Uint8Array) => {
|
||||
const hasStorageDeposit = this.api.tx.contracts.call.meta.args.length === 5;
|
||||
const rpc = hasStorageDeposit
|
||||
? this.api.rx.rpc.contracts.call({ dest: this.address, gasLimit: this.#getGas(gasLimit, true), inputData: message.toU8a(params), origin, value })
|
||||
: this.api.rx.rpc.contracts.call({ dest: this.address, gasLimit: this.#getGas(gasLimit, true), inputData: message.toU8a(params), origin, value });
|
||||
|
||||
const mapFn = ({ debugMessage, gasConsumed, gasRequired, result }: ContractExecResult): ContractCallOutcome => ({
|
||||
debugMessage,
|
||||
gasConsumed,
|
||||
gasRequired: gasRequired && !gasRequired.isZero()
|
||||
? gasRequired
|
||||
: gasConsumed,
|
||||
output: result.isOk && message.returnType
|
||||
? this.abi.registry.createTypeUnsafe(message.returnType.lookupName || message.returnType.type, [result.asOk.data.toU8a(true)], { isPedantic: true })
|
||||
: null,
|
||||
result
|
||||
});
|
||||
|
||||
return rpc.pipe(map(mapFn));
|
||||
}
|
||||
)
|
||||
};
|
||||
};
|
||||
|
||||
@@ -20,14 +20,14 @@ export function createBluePrintTx <ApiType extends ApiTypes, R extends Submittab
|
||||
return (options: bigint | string | number | BN | BlueprintOptions, ...params: unknown[]): SubmittableExtrinsic<ApiType, R> =>
|
||||
isOptions(options)
|
||||
? fn(options, params)
|
||||
: fn(...extractOptions(options, params));
|
||||
: fn(...extractOptions<BlueprintOptions>(options, params));
|
||||
}
|
||||
|
||||
export function createBluePrintWithId <T> (fn: (constructorOrId: AbiConstructor | string | number, options: BlueprintOptions, params: unknown[]) => T): ContractGeneric<BlueprintOptions, T> {
|
||||
return (constructorOrId: AbiConstructor | string | number, options: bigint | string | number | BN | BlueprintOptions, ...params: unknown[]): T =>
|
||||
isOptions(options)
|
||||
? fn(constructorOrId, options, params)
|
||||
: fn(constructorOrId, ...extractOptions(options, params));
|
||||
: fn(constructorOrId, ...extractOptions<BlueprintOptions>(options, params));
|
||||
}
|
||||
|
||||
export function encodeSalt (salt: Uint8Array | string | null = randomAsU8a()): Uint8Array {
|
||||
|
||||
@@ -180,14 +180,26 @@ declare module '@polkadot/api/types/consts' {
|
||||
**/
|
||||
[key: string]: Codec;
|
||||
};
|
||||
contracts: {
|
||||
childBounties: {
|
||||
/**
|
||||
* The deposit that must be placed into the contract's account to instantiate it.
|
||||
* This is in **addition** to the [`Currency::minimum_balance`].
|
||||
* The minimum balance for a contract's account can be queried using
|
||||
* [`Pallet::subsistence_threshold`].
|
||||
* Percentage of child-bounty value to be reserved as curator deposit
|
||||
* when curator fee is zero.
|
||||
**/
|
||||
contractDeposit: u128 & AugmentedConst<ApiType>;
|
||||
childBountyCuratorDepositBase: Permill & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Minimum value for a child-bounty.
|
||||
**/
|
||||
childBountyValueMinimum: u128 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Maximum number of child-bounties that can be added to a parent bounty.
|
||||
**/
|
||||
maxActiveChildBountyCount: u32 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Generic const
|
||||
**/
|
||||
[key: string]: Codec;
|
||||
};
|
||||
contracts: {
|
||||
/**
|
||||
* The maximum number of tries that can be queued for deletion.
|
||||
**/
|
||||
@@ -196,6 +208,21 @@ declare module '@polkadot/api/types/consts' {
|
||||
* The maximum amount of weight that can be consumed per block for lazy trie removal.
|
||||
**/
|
||||
deletionWeightLimit: u64 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* The amount of balance a caller has to pay for each byte of storage.
|
||||
*
|
||||
* # Note
|
||||
*
|
||||
* Changing this value for an existing chain might need a storage migration.
|
||||
**/
|
||||
depositPerByte: u128 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* The amount of balance a caller has to pay for each storage item.
|
||||
* # Note
|
||||
*
|
||||
* Changing this value for an existing chain might need a storage migration.
|
||||
**/
|
||||
depositPerItem: u128 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Cost schedule and limits.
|
||||
**/
|
||||
|
||||
@@ -112,6 +112,24 @@ declare module '@polkadot/api/types/errors' {
|
||||
**/
|
||||
[key: string]: AugmentedError<ApiType>;
|
||||
};
|
||||
bagsList: {
|
||||
/**
|
||||
* Id not found in list.
|
||||
**/
|
||||
IdNotFound: AugmentedError<ApiType>;
|
||||
/**
|
||||
* An Id does not have a greater vote weight than another Id.
|
||||
**/
|
||||
NotHeavier: AugmentedError<ApiType>;
|
||||
/**
|
||||
* Attempted to place node in front of a node in another bag.
|
||||
**/
|
||||
NotInSameBag: AugmentedError<ApiType>;
|
||||
/**
|
||||
* Generic error
|
||||
**/
|
||||
[key: string]: AugmentedError<ApiType>;
|
||||
};
|
||||
balances: {
|
||||
/**
|
||||
* Beneficiary account must pre-exist
|
||||
@@ -151,6 +169,10 @@ declare module '@polkadot/api/types/errors' {
|
||||
[key: string]: AugmentedError<ApiType>;
|
||||
};
|
||||
bounties: {
|
||||
/**
|
||||
* The bounty cannot be closed because it has active child-bounties.
|
||||
**/
|
||||
HasActiveChildBounty: AugmentedError<ApiType>;
|
||||
/**
|
||||
* Proposer's balance is too low.
|
||||
**/
|
||||
@@ -193,13 +215,29 @@ declare module '@polkadot/api/types/errors' {
|
||||
**/
|
||||
[key: string]: AugmentedError<ApiType>;
|
||||
};
|
||||
childBounties: {
|
||||
/**
|
||||
* The bounty balance is not enough to add new child-bounty.
|
||||
**/
|
||||
InsufficientBountyBalance: AugmentedError<ApiType>;
|
||||
/**
|
||||
* The parent bounty is not in active state.
|
||||
**/
|
||||
ParentBountyNotActive: AugmentedError<ApiType>;
|
||||
/**
|
||||
* Number of child-bounties exceeds limit `MaxActiveChildBountyCount`.
|
||||
**/
|
||||
TooManyChildBounties: AugmentedError<ApiType>;
|
||||
/**
|
||||
* Generic error
|
||||
**/
|
||||
[key: string]: AugmentedError<ApiType>;
|
||||
};
|
||||
contracts: {
|
||||
/**
|
||||
* Performing the requested transfer would have brought the contract below
|
||||
* the subsistence threshold. No transfer is allowed to do this. Use `seal_terminate`
|
||||
* to recover a deposit.
|
||||
* Code removal was denied because the code is still in use by at least one contract.
|
||||
**/
|
||||
BelowSubsistenceThreshold: AugmentedError<ApiType>;
|
||||
CodeInUse: AugmentedError<ApiType>;
|
||||
/**
|
||||
* No code could be found at the supplied code hash.
|
||||
**/
|
||||
@@ -254,11 +292,6 @@ declare module '@polkadot/api/types/errors' {
|
||||
* of what is specified in the schedule.
|
||||
**/
|
||||
MaxCallDepthReached: AugmentedError<ApiType>;
|
||||
/**
|
||||
* The newly created contract is below the subsistence threshold after executing
|
||||
* its contructor. No contracts are allowed to exist below that threshold.
|
||||
**/
|
||||
NewContractNotFunded: AugmentedError<ApiType>;
|
||||
/**
|
||||
* The chain does not provide a chain extension. Calling the chain extension results
|
||||
* in this error. Note that this usually shouldn't happen as deploying such contracts
|
||||
@@ -286,12 +319,13 @@ declare module '@polkadot/api/types/errors' {
|
||||
**/
|
||||
ReentranceDenied: AugmentedError<ApiType>;
|
||||
/**
|
||||
* A storage modification exhausted the 32bit type that holds the storage size.
|
||||
*
|
||||
* This can either happen when the accumulated storage in bytes is too large or
|
||||
* when number of storage items is too large.
|
||||
* More storage was created than allowed by the storage deposit limit.
|
||||
**/
|
||||
StorageExhausted: AugmentedError<ApiType>;
|
||||
StorageDepositLimitExhausted: AugmentedError<ApiType>;
|
||||
/**
|
||||
* Origin doesn't have enough balance to pay the required storage deposits.
|
||||
**/
|
||||
StorageDepositNotEnoughFunds: AugmentedError<ApiType>;
|
||||
/**
|
||||
* A contract self destructed in its constructor.
|
||||
*
|
||||
@@ -308,9 +342,8 @@ declare module '@polkadot/api/types/errors' {
|
||||
**/
|
||||
TooManyTopics: AugmentedError<ApiType>;
|
||||
/**
|
||||
* Performing the requested transfer failed for a reason originating in the
|
||||
* chosen currency implementation of the runtime. Most probably the balance is
|
||||
* too low or locks are placed on it.
|
||||
* Performing the requested transfer failed. Probably because there isn't enough
|
||||
* free balance in the sender's account.
|
||||
**/
|
||||
TransferFailed: AugmentedError<ApiType>;
|
||||
/**
|
||||
|
||||
@@ -180,11 +180,31 @@ declare module '@polkadot/api/types/events' {
|
||||
**/
|
||||
[key: string]: AugmentedEvent<ApiType>;
|
||||
};
|
||||
childBounties: {
|
||||
/**
|
||||
* A child-bounty is added.
|
||||
**/
|
||||
Added: AugmentedEvent<ApiType, [u32, u32]>;
|
||||
/**
|
||||
* A child-bounty is awarded to a beneficiary.
|
||||
**/
|
||||
Awarded: AugmentedEvent<ApiType, [u32, u32, AccountId32]>;
|
||||
/**
|
||||
* A child-bounty is cancelled.
|
||||
**/
|
||||
Canceled: AugmentedEvent<ApiType, [u32, u32]>;
|
||||
/**
|
||||
* A child-bounty is claimed by beneficiary.
|
||||
**/
|
||||
Claimed: AugmentedEvent<ApiType, [u32, u32, u128, AccountId32]>;
|
||||
/**
|
||||
* Generic event
|
||||
**/
|
||||
[key: string]: AugmentedEvent<ApiType>;
|
||||
};
|
||||
contracts: {
|
||||
/**
|
||||
* A code with the specified hash was removed.
|
||||
*
|
||||
* This happens when the last contract that uses this code hash was removed.
|
||||
**/
|
||||
CodeRemoved: AugmentedEvent<ApiType, [H256]>;
|
||||
/**
|
||||
@@ -199,10 +219,6 @@ declare module '@polkadot/api/types/events' {
|
||||
* Contract deployed by address at the specified address.
|
||||
**/
|
||||
Instantiated: AugmentedEvent<ApiType, [AccountId32, AccountId32]>;
|
||||
/**
|
||||
* Triggered when the current schedule is updated.
|
||||
**/
|
||||
ScheduleUpdated: AugmentedEvent<ApiType, [u32]>;
|
||||
/**
|
||||
* Contract has been removed.
|
||||
*
|
||||
|
||||
@@ -5,7 +5,7 @@ declare module '@polkadot/api/types/storage' {
|
||||
import type { ApiTypes, AugmentedQuery, QueryableModuleStorage, QueryableStorageEntry } from '@polkadot/api/types';
|
||||
import type { BTreeMap, Bytes, Data, Null, Option, U8aFixed, Vec, WrapperOpaque, bool, u128, u32, u64, u8 } from '@polkadot/types';
|
||||
import type { AccountId32, Call, H256, Perbill, Percent } from '@polkadot/types/interfaces/runtime';
|
||||
import type { FrameSupportWeightsPerDispatchClassU64, FrameSystemAccountInfo, FrameSystemEventRecord, FrameSystemLastRuntimeUpgradeInfo, FrameSystemPhase, NodeRuntimeSessionKeys, PalletAssetsApproval, PalletAssetsAssetBalance, PalletAssetsAssetDetails, PalletAssetsAssetMetadata, PalletAuthorshipUncleEntryItem, PalletBagsListListBag, PalletBagsListListNode, PalletBalancesAccountData, PalletBalancesBalanceLock, PalletBalancesReleases, PalletBalancesReserveData, PalletBountiesBounty, PalletCollectiveVotes, PalletContractsStorageDeletedContract, PalletContractsStorageRawContractInfo, PalletContractsWasmPrefabWasmModule, PalletDemocracyPreimageStatus, PalletDemocracyReferendumInfo, PalletDemocracyReleases, PalletDemocracyVoteThreshold, PalletDemocracyVoteVoting, PalletElectionProviderMultiPhasePhase, PalletElectionProviderMultiPhaseReadySolution, PalletElectionProviderMultiPhaseRoundSnapshot, PalletElectionProviderMultiPhaseSignedSignedSubmission, PalletElectionProviderMultiPhaseSolutionOrSnapshotSize, PalletElectionsPhragmenSeatHolder, PalletElectionsPhragmenVoter, PalletGiltActiveGilt, PalletGiltActiveGiltsTotal, PalletGiltGiltBid, PalletGrandpaStoredPendingChange, PalletGrandpaStoredState, PalletIdentityRegistrarInfo, PalletIdentityRegistration, PalletImOnlineBoundedOpaqueNetworkState, PalletImOnlineSr25519AppSr25519Public, PalletLotteryLotteryConfig, PalletMultisigMultisig, PalletProxyAnnouncement, PalletProxyProxyDefinition, PalletRecoveryActiveRecovery, PalletRecoveryRecoveryConfig, PalletSchedulerReleases, PalletSchedulerScheduledV2, PalletSocietyBid, PalletSocietyBidKind, PalletSocietyVote, PalletSocietyVouchingStatus, PalletStakingActiveEraInfo, PalletStakingEraRewardPoints, PalletStakingExposure, PalletStakingForcing, PalletStakingNominations, PalletStakingReleases, PalletStakingRewardDestination, PalletStakingSlashingSlashingSpans, PalletStakingSlashingSpanRecord, PalletStakingStakingLedger, PalletStakingUnappliedSlash, PalletStakingValidatorPrefs, PalletTipsOpenTip, PalletTransactionPaymentReleases, PalletTransactionStorageTransactionInfo, PalletTreasuryProposal, PalletUniquesClassDetails, PalletUniquesClassMetadata, PalletUniquesInstanceDetails, PalletUniquesInstanceMetadata, PalletVestingReleases, PalletVestingVestingInfo, SpAuthorityDiscoveryAppPublic, SpConsensusBabeAppPublic, SpConsensusBabeBabeEpochConfiguration, SpConsensusBabeDigestsNextConfigDescriptor, SpCoreCryptoKeyTypeId, SpRuntimeDigest, SpStakingOffenceOffenceDetails } from '@polkadot/types/lookup';
|
||||
import type { FrameSupportWeightsPerDispatchClassU64, FrameSystemAccountInfo, FrameSystemEventRecord, FrameSystemLastRuntimeUpgradeInfo, FrameSystemPhase, NodeRuntimeSessionKeys, PalletAssetsApproval, PalletAssetsAssetBalance, PalletAssetsAssetDetails, PalletAssetsAssetMetadata, PalletAuthorshipUncleEntryItem, PalletBagsListListBag, PalletBagsListListNode, PalletBalancesAccountData, PalletBalancesBalanceLock, PalletBalancesReleases, PalletBalancesReserveData, PalletBountiesBounty, PalletChildBountiesChildBounty, PalletCollectiveVotes, PalletContractsStorageDeletedContract, PalletContractsStorageRawContractInfo, PalletContractsWasmOwnerInfo, PalletContractsWasmPrefabWasmModule, PalletDemocracyPreimageStatus, PalletDemocracyReferendumInfo, PalletDemocracyReleases, PalletDemocracyVoteThreshold, PalletDemocracyVoteVoting, PalletElectionProviderMultiPhasePhase, PalletElectionProviderMultiPhaseReadySolution, PalletElectionProviderMultiPhaseRoundSnapshot, PalletElectionProviderMultiPhaseSignedSignedSubmission, PalletElectionProviderMultiPhaseSolutionOrSnapshotSize, PalletElectionsPhragmenSeatHolder, PalletElectionsPhragmenVoter, PalletGiltActiveGilt, PalletGiltActiveGiltsTotal, PalletGiltGiltBid, PalletGrandpaStoredPendingChange, PalletGrandpaStoredState, PalletIdentityRegistrarInfo, PalletIdentityRegistration, PalletImOnlineBoundedOpaqueNetworkState, PalletImOnlineSr25519AppSr25519Public, PalletLotteryLotteryConfig, PalletMultisigMultisig, PalletProxyAnnouncement, PalletProxyProxyDefinition, PalletRecoveryActiveRecovery, PalletRecoveryRecoveryConfig, PalletSchedulerReleases, PalletSchedulerScheduledV2, PalletSocietyBid, PalletSocietyBidKind, PalletSocietyVote, PalletSocietyVouchingStatus, PalletStakingActiveEraInfo, PalletStakingEraRewardPoints, PalletStakingExposure, PalletStakingForcing, PalletStakingNominations, PalletStakingReleases, PalletStakingRewardDestination, PalletStakingSlashingSlashingSpans, PalletStakingSlashingSpanRecord, PalletStakingStakingLedger, PalletStakingUnappliedSlash, PalletStakingValidatorPrefs, PalletTipsOpenTip, PalletTransactionPaymentReleases, PalletTransactionStorageTransactionInfo, PalletTreasuryProposal, PalletUniquesClassDetails, PalletUniquesClassMetadata, PalletUniquesInstanceDetails, PalletUniquesInstanceMetadata, PalletVestingReleases, PalletVestingVestingInfo, SpAuthorityDiscoveryAppPublic, SpConsensusBabeAppPublic, SpConsensusBabeBabeEpochConfiguration, SpConsensusBabeDigestsNextConfigDescriptor, SpCoreCryptoKeyTypeId, SpRuntimeDigest, SpStakingOffenceOffenceDetails } from '@polkadot/types/lookup';
|
||||
import type { AnyNumber, ITuple, Observable } from '@polkadot/types/types';
|
||||
|
||||
export interface AugmentedQueries<ApiType extends ApiTypes> {
|
||||
@@ -242,6 +242,33 @@ declare module '@polkadot/api/types/storage' {
|
||||
**/
|
||||
[key: string]: QueryableStorageEntry<ApiType>;
|
||||
};
|
||||
childBounties: {
|
||||
/**
|
||||
* Child-bounties that have been added.
|
||||
**/
|
||||
childBounties: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: u32 | AnyNumber | Uint8Array) => Observable<Option<PalletChildBountiesChildBounty>>, [u32, u32]> & QueryableStorageEntry<ApiType, [u32, u32]>;
|
||||
/**
|
||||
* Number of total child bounties.
|
||||
**/
|
||||
childBountyCount: AugmentedQuery<ApiType, () => Observable<u32>, []> & QueryableStorageEntry<ApiType, []>;
|
||||
/**
|
||||
* The description of each child-bounty.
|
||||
**/
|
||||
childBountyDescriptions: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<Option<Bytes>>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;
|
||||
/**
|
||||
* The cumulative child-bounty curator fee for each parent bounty.
|
||||
**/
|
||||
childrenCuratorFees: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<u128>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;
|
||||
/**
|
||||
* Number of child-bounties per parent bounty.
|
||||
* Map of parent bounty index to number of child bounties.
|
||||
**/
|
||||
parentChildBounties: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<u32>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;
|
||||
/**
|
||||
* Generic query
|
||||
**/
|
||||
[key: string]: QueryableStorageEntry<ApiType>;
|
||||
};
|
||||
contracts: {
|
||||
/**
|
||||
* The subtrie counter.
|
||||
@@ -264,6 +291,10 @@ declare module '@polkadot/api/types/storage' {
|
||||
* stored in said trie. Therefore this operation is performed lazily in `on_initialize`.
|
||||
**/
|
||||
deletionQueue: AugmentedQuery<ApiType, () => Observable<Vec<PalletContractsStorageDeletedContract>>, []> & QueryableStorageEntry<ApiType, []>;
|
||||
/**
|
||||
* A mapping between an original code hash and its owner information.
|
||||
**/
|
||||
ownerInfoOf: AugmentedQuery<ApiType, (arg: H256 | string | Uint8Array) => Observable<Option<PalletContractsWasmOwnerInfo>>, [H256]> & QueryableStorageEntry<ApiType, [H256]>;
|
||||
/**
|
||||
* A mapping from an original code hash to the original code, untouched by instrumentation.
|
||||
**/
|
||||
@@ -935,11 +966,11 @@ declare module '@polkadot/api/types/storage' {
|
||||
**/
|
||||
chillThreshold: AugmentedQuery<ApiType, () => Observable<Option<Percent>>, []> & QueryableStorageEntry<ApiType, []>;
|
||||
/**
|
||||
* A tracker to keep count of the number of items in the `Nominators` map.
|
||||
* Counter for the related counted storage map
|
||||
**/
|
||||
counterForNominators: AugmentedQuery<ApiType, () => Observable<u32>, []> & QueryableStorageEntry<ApiType, []>;
|
||||
/**
|
||||
* A tracker to keep count of the number of items in the `Validators` map.
|
||||
* Counter for the related counted storage map
|
||||
**/
|
||||
counterForValidators: AugmentedQuery<ApiType, () => Observable<u32>, []> & QueryableStorageEntry<ApiType, []>;
|
||||
/**
|
||||
@@ -1069,8 +1100,6 @@ declare module '@polkadot/api/types/storage' {
|
||||
minValidatorBond: AugmentedQuery<ApiType, () => Observable<u128>, []> & QueryableStorageEntry<ApiType, []>;
|
||||
/**
|
||||
* The map from nominator stash key to the set of stash keys of all validators to nominate.
|
||||
*
|
||||
* When updating this storage item, you must also update the `CounterForNominators`.
|
||||
**/
|
||||
nominators: AugmentedQuery<ApiType, (arg: AccountId32 | string | Uint8Array) => Observable<Option<PalletStakingNominations>>, [AccountId32]> & QueryableStorageEntry<ApiType, [AccountId32]>;
|
||||
/**
|
||||
@@ -1125,8 +1154,6 @@ declare module '@polkadot/api/types/storage' {
|
||||
validatorCount: AugmentedQuery<ApiType, () => Observable<u32>, []> & QueryableStorageEntry<ApiType, []>;
|
||||
/**
|
||||
* The map from (wannabe) validator stash key to the preferences of that validator.
|
||||
*
|
||||
* When updating this storage item, you must also update the `CounterForValidators`.
|
||||
**/
|
||||
validators: AugmentedQuery<ApiType, (arg: AccountId32 | string | Uint8Array) => Observable<PalletStakingValidatorPrefs>, [AccountId32]> & QueryableStorageEntry<ApiType, [AccountId32]>;
|
||||
/**
|
||||
|
||||
@@ -139,7 +139,7 @@ declare module '@polkadot/rpc-core/types.jsonrpc' {
|
||||
/**
|
||||
* Instantiate a new contract
|
||||
**/
|
||||
instantiate: AugmentedRpc<(request: InstantiateRequest | { origin?: any; endowment?: any; gasLimit?: any; code?: any; data?: any; salt?: any } | string | Uint8Array, at?: BlockHash | string | Uint8Array) => Observable<ContractInstantiateResult>>;
|
||||
instantiate: AugmentedRpc<(request: InstantiateRequest | { origin?: any; value?: any; gasLimit?: any; code?: any; data?: any; salt?: any } | string | Uint8Array, at?: BlockHash | string | Uint8Array) => Observable<ContractInstantiateResult>>;
|
||||
/**
|
||||
* Returns the projected time a given contract will be able to sustain paying its rent
|
||||
**/
|
||||
|
||||
@@ -463,6 +463,17 @@ declare module '@polkadot/api/types/submittable' {
|
||||
[key: string]: SubmittableExtrinsicFunction<ApiType>;
|
||||
};
|
||||
bagsList: {
|
||||
/**
|
||||
* Move the caller's Id directly in front of `lighter`.
|
||||
*
|
||||
* The dispatch origin for this call must be _Signed_ and can only be called by the Id of
|
||||
* the account going in front of `lighter`.
|
||||
*
|
||||
* Only works if
|
||||
* - both nodes are within the same bag,
|
||||
* - and `origin` has a greater `VoteWeight` than `lighter`.
|
||||
**/
|
||||
putInFrontOf: AugmentedSubmittable<(lighter: AccountId32 | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [AccountId32]>;
|
||||
/**
|
||||
* Declare that some `dislocated` account has, through rewards or penalties, sufficiently
|
||||
* changed its weight that it should properly fall into a different bag than its current
|
||||
@@ -695,17 +706,195 @@ declare module '@polkadot/api/types/submittable' {
|
||||
**/
|
||||
[key: string]: SubmittableExtrinsicFunction<ApiType>;
|
||||
};
|
||||
childBounties: {
|
||||
/**
|
||||
* Accept the curator role for the child-bounty.
|
||||
*
|
||||
* The dispatch origin for this call must be the curator of this
|
||||
* child-bounty.
|
||||
*
|
||||
* A deposit will be reserved from the curator and refund upon
|
||||
* successful payout or cancellation.
|
||||
*
|
||||
* Fee for curator is deducted from curator fee of parent bounty.
|
||||
*
|
||||
* Parent bounty must be in active state, for this child-bounty call to
|
||||
* work.
|
||||
*
|
||||
* Child-bounty must be in "CuratorProposed" state, for processing the
|
||||
* call. And state of child-bounty is moved to "Active" on successful
|
||||
* call completion.
|
||||
*
|
||||
* - `parent_bounty_id`: Index of parent bounty.
|
||||
* - `child_bounty_id`: Index of child bounty.
|
||||
**/
|
||||
acceptCurator: AugmentedSubmittable<(parentBountyId: Compact<u32> | AnyNumber | Uint8Array, childBountyId: Compact<u32> | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [Compact<u32>, Compact<u32>]>;
|
||||
/**
|
||||
* Add a new child-bounty.
|
||||
*
|
||||
* The dispatch origin for this call must be the curator of parent
|
||||
* bounty and the parent bounty must be in "active" state.
|
||||
*
|
||||
* Child-bounty gets added successfully & fund gets transferred from
|
||||
* parent bounty to child-bounty account, if parent bounty has enough
|
||||
* funds, else the call fails.
|
||||
*
|
||||
* Upper bound to maximum number of active child-bounties that can be
|
||||
* added are managed via runtime trait config
|
||||
* [`Config::MaxActiveChildBountyCount`].
|
||||
*
|
||||
* If the call is success, the status of child-bounty is updated to
|
||||
* "Added".
|
||||
*
|
||||
* - `parent_bounty_id`: Index of parent bounty for which child-bounty is being added.
|
||||
* - `value`: Value for executing the proposal.
|
||||
* - `description`: Text description for the child-bounty.
|
||||
**/
|
||||
addChildBounty: AugmentedSubmittable<(parentBountyId: Compact<u32> | AnyNumber | Uint8Array, value: Compact<u128> | AnyNumber | Uint8Array, description: Bytes | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [Compact<u32>, Compact<u128>, Bytes]>;
|
||||
/**
|
||||
* Award child-bounty to a beneficiary.
|
||||
*
|
||||
* The beneficiary will be able to claim the funds after a delay.
|
||||
*
|
||||
* The dispatch origin for this call must be the master curator or
|
||||
* curator of this child-bounty.
|
||||
*
|
||||
* Parent bounty must be in active state, for this child-bounty call to
|
||||
* work.
|
||||
*
|
||||
* Child-bounty must be in active state, for processing the call. And
|
||||
* state of child-bounty is moved to "PendingPayout" on successful call
|
||||
* completion.
|
||||
*
|
||||
* - `parent_bounty_id`: Index of parent bounty.
|
||||
* - `child_bounty_id`: Index of child bounty.
|
||||
* - `beneficiary`: Beneficiary account.
|
||||
**/
|
||||
awardChildBounty: AugmentedSubmittable<(parentBountyId: Compact<u32> | AnyNumber | Uint8Array, childBountyId: Compact<u32> | AnyNumber | Uint8Array, beneficiary: MultiAddress | { Id: any } | { Index: any } | { Raw: any } | { Address32: any } | { Address20: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [Compact<u32>, Compact<u32>, MultiAddress]>;
|
||||
/**
|
||||
* Claim the payout from an awarded child-bounty after payout delay.
|
||||
*
|
||||
* The dispatch origin for this call may be any signed origin.
|
||||
*
|
||||
* Call works independent of parent bounty state, No need for parent
|
||||
* bounty to be in active state.
|
||||
*
|
||||
* The Beneficiary is paid out with agreed bounty value. Curator fee is
|
||||
* paid & curator deposit is unreserved.
|
||||
*
|
||||
* Child-bounty must be in "PendingPayout" state, for processing the
|
||||
* call. And instance of child-bounty is removed from the state on
|
||||
* successful call completion.
|
||||
*
|
||||
* - `parent_bounty_id`: Index of parent bounty.
|
||||
* - `child_bounty_id`: Index of child bounty.
|
||||
**/
|
||||
claimChildBounty: AugmentedSubmittable<(parentBountyId: Compact<u32> | AnyNumber | Uint8Array, childBountyId: Compact<u32> | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [Compact<u32>, Compact<u32>]>;
|
||||
/**
|
||||
* Cancel a proposed or active child-bounty. Child-bounty account funds
|
||||
* are transferred to parent bounty account. The child-bounty curator
|
||||
* deposit may be unreserved if possible.
|
||||
*
|
||||
* The dispatch origin for this call must be either parent curator or
|
||||
* `T::RejectOrigin`.
|
||||
*
|
||||
* If the state of child-bounty is `Active`, curator deposit is
|
||||
* unreserved.
|
||||
*
|
||||
* If the state of child-bounty is `PendingPayout`, call fails &
|
||||
* returns `PendingPayout` error.
|
||||
*
|
||||
* For the origin other than T::RejectOrigin, parent bounty must be in
|
||||
* active state, for this child-bounty call to work. For origin
|
||||
* T::RejectOrigin execution is forced.
|
||||
*
|
||||
* Instance of child-bounty is removed from the state on successful
|
||||
* call completion.
|
||||
*
|
||||
* - `parent_bounty_id`: Index of parent bounty.
|
||||
* - `child_bounty_id`: Index of child bounty.
|
||||
**/
|
||||
closeChildBounty: AugmentedSubmittable<(parentBountyId: Compact<u32> | AnyNumber | Uint8Array, childBountyId: Compact<u32> | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [Compact<u32>, Compact<u32>]>;
|
||||
/**
|
||||
* Propose curator for funded child-bounty.
|
||||
*
|
||||
* The dispatch origin for this call must be curator of parent bounty.
|
||||
*
|
||||
* Parent bounty must be in active state, for this child-bounty call to
|
||||
* work.
|
||||
*
|
||||
* Child-bounty must be in "Added" state, for processing the call. And
|
||||
* state of child-bounty is moved to "CuratorProposed" on successful
|
||||
* call completion.
|
||||
*
|
||||
* - `parent_bounty_id`: Index of parent bounty.
|
||||
* - `child_bounty_id`: Index of child bounty.
|
||||
* - `curator`: Address of child-bounty curator.
|
||||
* - `fee`: payment fee to child-bounty curator for execution.
|
||||
**/
|
||||
proposeCurator: AugmentedSubmittable<(parentBountyId: Compact<u32> | AnyNumber | Uint8Array, childBountyId: Compact<u32> | AnyNumber | Uint8Array, curator: MultiAddress | { Id: any } | { Index: any } | { Raw: any } | { Address32: any } | { Address20: any } | string | Uint8Array, fee: Compact<u128> | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [Compact<u32>, Compact<u32>, MultiAddress, Compact<u128>]>;
|
||||
/**
|
||||
* Unassign curator from a child-bounty.
|
||||
*
|
||||
* The dispatch origin for this call can be either `RejectOrigin`, or
|
||||
* the curator of the parent bounty, or any signed origin.
|
||||
*
|
||||
* For the origin other than T::RejectOrigin and the child-bounty
|
||||
* curator, parent-bounty must be in active state, for this call to
|
||||
* work. We allow child-bounty curator and T::RejectOrigin to execute
|
||||
* this call irrespective of the parent-bounty state.
|
||||
*
|
||||
* If this function is called by the `RejectOrigin` or the
|
||||
* parent-bounty curator, we assume that the child-bounty curator is
|
||||
* malicious or inactive. As a result, child-bounty curator deposit is
|
||||
* slashed.
|
||||
*
|
||||
* If the origin is the child-bounty curator, we take this as a sign
|
||||
* that they are unable to do their job, and are willingly giving up.
|
||||
* We could slash the deposit, but for now we allow them to unreserve
|
||||
* their deposit and exit without issue. (We may want to change this if
|
||||
* it is abused.)
|
||||
*
|
||||
* Finally, the origin can be anyone iff the child-bounty curator is
|
||||
* "inactive". Expiry update due of parent bounty is used to estimate
|
||||
* inactive state of child-bounty curator.
|
||||
*
|
||||
* This allows anyone in the community to call out that a child-bounty
|
||||
* curator is not doing their due diligence, and we should pick a new
|
||||
* one. In this case the child-bounty curator deposit is slashed.
|
||||
*
|
||||
* State of child-bounty is moved to Added state on successful call
|
||||
* completion.
|
||||
*
|
||||
* - `parent_bounty_id`: Index of parent bounty.
|
||||
* - `child_bounty_id`: Index of child bounty.
|
||||
**/
|
||||
unassignCurator: AugmentedSubmittable<(parentBountyId: Compact<u32> | AnyNumber | Uint8Array, childBountyId: Compact<u32> | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [Compact<u32>, Compact<u32>]>;
|
||||
/**
|
||||
* Generic tx
|
||||
**/
|
||||
[key: string]: SubmittableExtrinsicFunction<ApiType>;
|
||||
};
|
||||
contracts: {
|
||||
/**
|
||||
* Makes a call to an account, optionally transferring some balance.
|
||||
*
|
||||
* # Parameters
|
||||
*
|
||||
* * `dest`: Address of the contract to call.
|
||||
* * `value`: The balance to transfer from the `origin` to `dest`.
|
||||
* * `gas_limit`: The gas limit enforced when executing the constructor.
|
||||
* * `storage_deposit_limit`: The maximum amount of balance that can be charged from the
|
||||
* caller to pay for the storage consumed.
|
||||
* * `data`: The input data to pass to the contract.
|
||||
*
|
||||
* * If the account is a smart-contract account, the associated code will be
|
||||
* executed and any value will be transferred.
|
||||
* * If the account is a regular account, any value will be transferred.
|
||||
* * If no account exists and the call value is not less than `existential_deposit`,
|
||||
* a regular account will be created and any value will be transferred.
|
||||
**/
|
||||
call: AugmentedSubmittable<(dest: MultiAddress | { Id: any } | { Index: any } | { Raw: any } | { Address32: any } | { Address20: any } | string | Uint8Array, value: Compact<u128> | AnyNumber | Uint8Array, gasLimit: Compact<u64> | AnyNumber | Uint8Array, data: Bytes | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [MultiAddress, Compact<u128>, Compact<u64>, Bytes]>;
|
||||
call: AugmentedSubmittable<(dest: MultiAddress | { Id: any } | { Index: any } | { Raw: any } | { Address32: any } | { Address20: any } | string | Uint8Array, value: Compact<u128> | AnyNumber | Uint8Array, gasLimit: Compact<u64> | AnyNumber | Uint8Array, storageDepositLimit: Option<Compact<u128>> | null | object | string | Uint8Array, data: Bytes | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [MultiAddress, Compact<u128>, Compact<u64>, Option<Compact<u128>>, Bytes]>;
|
||||
/**
|
||||
* Instantiates a contract from a previously deployed wasm binary.
|
||||
*
|
||||
@@ -713,17 +902,21 @@ declare module '@polkadot/api/types/submittable' {
|
||||
* code deployment step. Instead, the `code_hash` of an on-chain deployed wasm binary
|
||||
* must be supplied.
|
||||
**/
|
||||
instantiate: AugmentedSubmittable<(endowment: Compact<u128> | AnyNumber | Uint8Array, gasLimit: Compact<u64> | AnyNumber | Uint8Array, codeHash: H256 | string | Uint8Array, data: Bytes | string | Uint8Array, salt: Bytes | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [Compact<u128>, Compact<u64>, H256, Bytes, Bytes]>;
|
||||
instantiate: AugmentedSubmittable<(value: Compact<u128> | AnyNumber | Uint8Array, gasLimit: Compact<u64> | AnyNumber | Uint8Array, storageDepositLimit: Option<Compact<u128>> | null | object | string | Uint8Array, codeHash: H256 | string | Uint8Array, data: Bytes | string | Uint8Array, salt: Bytes | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [Compact<u128>, Compact<u64>, Option<Compact<u128>>, H256, Bytes, Bytes]>;
|
||||
/**
|
||||
* Instantiates a new contract from the supplied `code` optionally transferring
|
||||
* some balance.
|
||||
*
|
||||
* This is the only function that can deploy new code to the chain.
|
||||
* This dispatchable has the same effect as calling [`Self::upload_code`] +
|
||||
* [`Self::instantiate`]. Bundling them together provides efficiency gains. Please
|
||||
* also check the documentation of [`Self::upload_code`].
|
||||
*
|
||||
* # Parameters
|
||||
*
|
||||
* * `endowment`: The balance to transfer from the `origin` to the newly created contract.
|
||||
* * `value`: The balance to transfer from the `origin` to the newly created contract.
|
||||
* * `gas_limit`: The gas limit enforced when executing the constructor.
|
||||
* * `storage_deposit_limit`: The maximum amount of balance that can be charged/reserved
|
||||
* from the caller to pay for the storage consumed.
|
||||
* * `code`: The contract code to deploy in raw bytes.
|
||||
* * `data`: The input data to pass to the contract constructor.
|
||||
* * `salt`: Used for the address derivation. See [`Pallet::contract_address`].
|
||||
@@ -735,10 +928,36 @@ declare module '@polkadot/api/types/submittable' {
|
||||
* - If the `code_hash` already exists on the chain the underlying `code` will be shared.
|
||||
* - The destination address is computed based on the sender, code_hash and the salt.
|
||||
* - The smart-contract account is created at the computed address.
|
||||
* - The `endowment` is transferred to the new account.
|
||||
* - The `value` is transferred to the new account.
|
||||
* - The `deploy` function is executed in the context of the newly-created account.
|
||||
**/
|
||||
instantiateWithCode: AugmentedSubmittable<(endowment: Compact<u128> | AnyNumber | Uint8Array, gasLimit: Compact<u64> | AnyNumber | Uint8Array, code: Bytes | string | Uint8Array, data: Bytes | string | Uint8Array, salt: Bytes | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [Compact<u128>, Compact<u64>, Bytes, Bytes, Bytes]>;
|
||||
instantiateWithCode: AugmentedSubmittable<(value: Compact<u128> | AnyNumber | Uint8Array, gasLimit: Compact<u64> | AnyNumber | Uint8Array, storageDepositLimit: Option<Compact<u128>> | null | object | string | Uint8Array, code: Bytes | string | Uint8Array, data: Bytes | string | Uint8Array, salt: Bytes | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [Compact<u128>, Compact<u64>, Option<Compact<u128>>, Bytes, Bytes, Bytes]>;
|
||||
/**
|
||||
* Remove the code stored under `code_hash` and refund the deposit to its owner.
|
||||
*
|
||||
* A code can only be removed by its original uploader (its owner) and only if it is
|
||||
* not used by any contract.
|
||||
**/
|
||||
removeCode: AugmentedSubmittable<(codeHash: H256 | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [H256]>;
|
||||
/**
|
||||
* Upload new `code` without instantiating a contract from it.
|
||||
*
|
||||
* If the code does not already exist a deposit is reserved from the caller
|
||||
* and unreserved only when [`Self::remove_code`] is called. The size of the reserve
|
||||
* depends on the instrumented size of the the supplied `code`.
|
||||
*
|
||||
* If the code already exists in storage it will still return `Ok` and upgrades
|
||||
* the in storage version to the current
|
||||
* [`InstructionWeights::version`](InstructionWeights).
|
||||
*
|
||||
* # Note
|
||||
*
|
||||
* Anyone can instantiate a contract from any uploaded code and thus prevent its removal.
|
||||
* To avoid this situation a constructor could employ access control so that it can
|
||||
* only be instantiated by permissioned entities. The same is true when uploading
|
||||
* through [`Self::instantiate_with_code`].
|
||||
**/
|
||||
uploadCode: AugmentedSubmittable<(code: Bytes | string | Uint8Array, storageDepositLimit: Option<Compact<u128>> | null | object | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [Bytes, Option<Compact<u128>>]>;
|
||||
/**
|
||||
* Generic tx
|
||||
**/
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -204,7 +204,7 @@ export default {
|
||||
},
|
||||
InstantiateRequest: {
|
||||
origin: 'AccountId',
|
||||
endowment: 'Balance',
|
||||
value: 'Balance',
|
||||
gasLimit: 'Gas',
|
||||
code: 'Bytes',
|
||||
data: 'Bytes',
|
||||
|
||||
@@ -257,7 +257,7 @@ export interface HostFnWeightsTo264 extends Struct {
|
||||
/** @name InstantiateRequest */
|
||||
export interface InstantiateRequest extends Struct {
|
||||
readonly origin: AccountId;
|
||||
readonly endowment: Balance;
|
||||
readonly value: Balance;
|
||||
readonly gasLimit: Gas;
|
||||
readonly code: Bytes;
|
||||
readonly data: Bytes;
|
||||
|
||||
Reference in New Issue
Block a user