Struct pallet_treasury::pallet::Pallet
source · pub struct Pallet<T, I = ()>(/* private fields */);
Expand description
The Pallet
struct, the main type that implements traits and standalone
functions within the pallet.
Implementations§
source§impl<T: Config<I>, I: 'static> Pallet<T, I>
impl<T: Config<I>, I: 'static> Pallet<T, I>
sourcepub fn propose_spend(
origin: OriginFor<T>,
value: BalanceOf<T, I>,
beneficiary: <<T as Config>::Lookup as StaticLookup>::Source
) -> DispatchResult
👎Deprecated: propose_spend
will be removed in February 2024. Use spend
instead.
pub fn propose_spend( origin: OriginFor<T>, value: BalanceOf<T, I>, beneficiary: <<T as Config>::Lookup as StaticLookup>::Source ) -> DispatchResult
propose_spend
will be removed in February 2024. Use spend
instead.Put forward a suggestion for spending.
§Dispatch Origin
Must be signed.
§Details
A deposit proportional to the value is reserved and slashed if the proposal is rejected. It is returned once the proposal is awarded.
§Complexity
- O(1)
§Events
Emits Event::Proposed
if successful.
sourcepub fn reject_proposal(
origin: OriginFor<T>,
proposal_id: ProposalIndex
) -> DispatchResult
👎Deprecated: reject_proposal
will be removed in February 2024. Use spend
instead.
pub fn reject_proposal( origin: OriginFor<T>, proposal_id: ProposalIndex ) -> DispatchResult
reject_proposal
will be removed in February 2024. Use spend
instead.Reject a proposed spend.
§Dispatch Origin
Must be Config::RejectOrigin
.
§Details
The original deposit will be slashed.
§Complexity
- O(1)
§Events
Emits Event::Rejected
if successful.
sourcepub fn approve_proposal(
origin: OriginFor<T>,
proposal_id: ProposalIndex
) -> DispatchResult
👎Deprecated: approve_proposal
will be removed in February 2024. Use spend
instead.
pub fn approve_proposal( origin: OriginFor<T>, proposal_id: ProposalIndex ) -> DispatchResult
approve_proposal
will be removed in February 2024. Use spend
instead.Approve a proposal.
§Dispatch Origin
Must be Config::ApproveOrigin
.
§Details
At a later time, the proposal will be allocated to the beneficiary and the original deposit will be returned.
§Complexity
- O(1).
§Events
No events are emitted from this dispatch.
sourcepub fn spend_local(
origin: OriginFor<T>,
amount: BalanceOf<T, I>,
beneficiary: <<T as Config>::Lookup as StaticLookup>::Source
) -> DispatchResult
pub fn spend_local( origin: OriginFor<T>, amount: BalanceOf<T, I>, beneficiary: <<T as Config>::Lookup as StaticLookup>::Source ) -> DispatchResult
Propose and approve a spend of treasury funds.
§Dispatch Origin
Must be Config::SpendOrigin
with the Success
value being at least amount
.
§Details
NOTE: For record-keeping purposes, the proposer is deemed to be equivalent to the beneficiary.
§Parameters
amount
: The amount to be transferred from the treasury to thebeneficiary
.beneficiary
: The destination account for the transfer.
§Events
Emits Event::SpendApproved
if successful.
sourcepub fn remove_approval(
origin: OriginFor<T>,
proposal_id: ProposalIndex
) -> DispatchResult
pub fn remove_approval( origin: OriginFor<T>, proposal_id: ProposalIndex ) -> DispatchResult
Force a previously approved proposal to be removed from the approval queue.
§Dispatch Origin
Must be Config::RejectOrigin
.
§Details
The original deposit will no longer be returned.
§Parameters
proposal_id
: The index of a proposal
§Complexity
- O(A) where
A
is the number of approvals
§Errors
Error::ProposalNotApproved
: Theproposal_id
supplied was not found in the approval queue, i.e., the proposal has not been approved. This could also mean the proposal does not exist altogether, thus there is no way it would have been approved in the first place.
sourcepub fn spend(
origin: OriginFor<T>,
asset_kind: Box<T::AssetKind>,
amount: AssetBalanceOf<T, I>,
beneficiary: Box<<<T as Config<I>>::BeneficiaryLookup as StaticLookup>::Source>,
valid_from: Option<BlockNumberFor<T>>
) -> DispatchResult
pub fn spend( origin: OriginFor<T>, asset_kind: Box<T::AssetKind>, amount: AssetBalanceOf<T, I>, beneficiary: Box<<<T as Config<I>>::BeneficiaryLookup as StaticLookup>::Source>, valid_from: Option<BlockNumberFor<T>> ) -> DispatchResult
Propose and approve a spend of treasury funds.
§Dispatch Origin
Must be Config::SpendOrigin
with the Success
value being at least
amount
of asset_kind
in the native asset. The amount of asset_kind
is converted
for assertion using the Config::BalanceConverter
.
§Details
Create an approved spend for transferring a specific amount
of asset_kind
to a
designated beneficiary. The spend must be claimed using the payout
dispatchable within
the Config::PayoutPeriod
.
§Parameters
asset_kind
: An indicator of the specific asset class to be spent.amount
: The amount to be transferred from the treasury to thebeneficiary
.beneficiary
: The beneficiary of the spend.valid_from
: The block number from which the spend can be claimed. It can refer to the past if the resulting spend has not yet expired according to theConfig::PayoutPeriod
. IfNone
, the spend can be claimed immediately after approval.
§Events
Emits Event::AssetSpendApproved
if successful.
sourcepub fn payout(origin: OriginFor<T>, index: SpendIndex) -> DispatchResult
pub fn payout(origin: OriginFor<T>, index: SpendIndex) -> DispatchResult
Claim a spend.
§Dispatch Origin
Must be signed.
§Details
Spends must be claimed within some temporal bounds. A spend may be claimed within one
Config::PayoutPeriod
from the valid_from
block.
In case of a payout failure, the spend status must be updated with the check_status
dispatchable before retrying with the current function.
§Parameters
index
: The spend index.
§Events
Emits Event::Paid
if successful.
sourcepub fn check_status(
origin: OriginFor<T>,
index: SpendIndex
) -> DispatchResultWithPostInfo
pub fn check_status( origin: OriginFor<T>, index: SpendIndex ) -> DispatchResultWithPostInfo
Check the status of the spend and remove it from the storage if processed.
§Dispatch Origin
Must be signed.
§Details
The status check is a prerequisite for retrying a failed payout. If a spend has either succeeded or expired, it is removed from the storage by this function. In such instances, transaction fees are refunded.
§Parameters
index
: The spend index.
§Events
Emits Event::PaymentFailed
if the spend payout has failed.
Emits Event::SpendProcessed
if the spend payout has succeed.
sourcepub fn void_spend(origin: OriginFor<T>, index: SpendIndex) -> DispatchResult
pub fn void_spend(origin: OriginFor<T>, index: SpendIndex) -> DispatchResult
Void previously approved spend.
§Dispatch Origin
Must be Config::RejectOrigin
.
§Details
A spend void is only possible if the payout has not been attempted yet.
§Parameters
index
: The spend index.
§Events
Emits Event::AssetSpendVoided
if successful.
source§impl<T: Config<I>, I: 'static> Pallet<T, I>
impl<T: Config<I>, I: 'static> Pallet<T, I>
sourcepub fn proposal_count() -> ProposalIndex
pub fn proposal_count() -> ProposalIndex
An auto-generated getter for ProposalCount
.
source§impl<T: Config<I>, I: 'static> Pallet<T, I>
impl<T: Config<I>, I: 'static> Pallet<T, I>
sourcepub fn proposals<KArg>(
k: KArg
) -> Option<Proposal<T::AccountId, BalanceOf<T, I>>>where
KArg: EncodeLike<ProposalIndex>,
pub fn proposals<KArg>(
k: KArg
) -> Option<Proposal<T::AccountId, BalanceOf<T, I>>>where
KArg: EncodeLike<ProposalIndex>,
An auto-generated getter for Proposals
.
source§impl<T: Config<I>, I: 'static> Pallet<T, I>
impl<T: Config<I>, I: 'static> Pallet<T, I>
sourcepub fn approvals() -> BoundedVec<ProposalIndex, T::MaxApprovals>
pub fn approvals() -> BoundedVec<ProposalIndex, T::MaxApprovals>
An auto-generated getter for Approvals
.
source§impl<T: Config<I>, I: 'static> Pallet<T, I>
impl<T: Config<I>, I: 'static> Pallet<T, I>
sourcepub fn account_id() -> T::AccountId
pub fn account_id() -> T::AccountId
The account ID of the treasury pot.
This actually does computation. If you need to keep using it, then make sure you cache the value and only call this once.
sourcepub fn spend_funds() -> Weight
pub fn spend_funds() -> Weight
Spend some money! returns number of approvals before spend.
Trait Implementations§
source§impl<T: Config<I>, I: 'static> BeforeAllRuntimeMigrations for Pallet<T, I>
impl<T: Config<I>, I: 'static> BeforeAllRuntimeMigrations for Pallet<T, I>
source§fn before_all_runtime_migrations() -> Weight
fn before_all_runtime_migrations() -> Weight
source§impl<T: Config<I>, I: 'static> GetStorageVersion for Pallet<T, I>
impl<T: Config<I>, I: 'static> GetStorageVersion for Pallet<T, I>
source§fn in_code_storage_version() -> Self::InCodeStorageVersion
fn in_code_storage_version() -> Self::InCodeStorageVersion
storage_version
attribute, or
NoStorageVersionSet
if the attribute is missing.source§fn on_chain_storage_version() -> StorageVersion
fn on_chain_storage_version() -> StorageVersion
source§fn current_storage_version() -> Self::InCodeStorageVersion
fn current_storage_version() -> Self::InCodeStorageVersion
in_code_storage_version
and will be removed after March 2024.Self::current_storage_version
instead. Read moresource§impl<T: Config<I>, I: 'static> Hooks<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T, I>
impl<T: Config<I>, I: 'static> Hooks<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T, I>
source§fn on_initialize(n: BlockNumberFor<T>) -> Weight
fn on_initialize(n: BlockNumberFor<T>) -> Weight
§Complexity
O(A)
whereA
is the number of approvals
source§fn on_finalize(_n: BlockNumber)
fn on_finalize(_n: BlockNumber)
source§fn on_idle(_n: BlockNumber, _remaining_weight: Weight) -> Weight
fn on_idle(_n: BlockNumber, _remaining_weight: Weight) -> Weight
Hooks::on_finalize
). Read moresource§fn on_poll(_n: BlockNumber, _weight: &mut WeightMeter)
fn on_poll(_n: BlockNumber, _weight: &mut WeightMeter)
source§fn on_runtime_upgrade() -> Weight
fn on_runtime_upgrade() -> Weight
Executive
pallet. Read moresource§fn offchain_worker(_n: BlockNumber)
fn offchain_worker(_n: BlockNumber)
source§fn integrity_test()
fn integrity_test()
source§impl<T: Config<I>, I: 'static> IntegrityTest for Pallet<T, I>
impl<T: Config<I>, I: 'static> IntegrityTest for Pallet<T, I>
source§impl<T: Config<I>, I: 'static> OffchainWorker<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T, I>
impl<T: Config<I>, I: 'static> OffchainWorker<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T, I>
source§fn offchain_worker(n: BlockNumberFor<T>)
fn offchain_worker(n: BlockNumberFor<T>)
source§impl<T: Config<I>, I: 'static> OnFinalize<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T, I>
impl<T: Config<I>, I: 'static> OnFinalize<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T, I>
source§fn on_finalize(n: BlockNumberFor<T>)
fn on_finalize(n: BlockNumberFor<T>)
Hooks::on_finalize
.source§impl<T: Config<I>, I: 'static> OnGenesis for Pallet<T, I>
impl<T: Config<I>, I: 'static> OnGenesis for Pallet<T, I>
source§fn on_genesis()
fn on_genesis()
source§impl<T: Config<I>, I: 'static> OnIdle<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T, I>
impl<T: Config<I>, I: 'static> OnIdle<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T, I>
source§fn on_idle(n: BlockNumberFor<T>, remaining_weight: Weight) -> Weight
fn on_idle(n: BlockNumberFor<T>, remaining_weight: Weight) -> Weight
Hooks::on_idle
.source§impl<T: Config<I>, I: 'static> OnInitialize<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T, I>
impl<T: Config<I>, I: 'static> OnInitialize<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T, I>
source§fn on_initialize(n: BlockNumberFor<T>) -> Weight
fn on_initialize(n: BlockNumberFor<T>) -> Weight
Hooks::on_initialize
.source§impl<T: Config<I>, I: 'static> OnPoll<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T, I>
impl<T: Config<I>, I: 'static> OnPoll<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T, I>
source§fn on_poll(n: BlockNumberFor<T>, weight: &mut WeightMeter)
fn on_poll(n: BlockNumberFor<T>, weight: &mut WeightMeter)
source§impl<T: Config<I>, I: 'static> OnRuntimeUpgrade for Pallet<T, I>
impl<T: Config<I>, I: 'static> OnRuntimeUpgrade for Pallet<T, I>
source§fn on_runtime_upgrade() -> Weight
fn on_runtime_upgrade() -> Weight
source§impl<T: Config<I>, I: 'static> OnUnbalanced<<<T as Config<I>>::Currency as Currency<<T as Config>::AccountId>>::NegativeImbalance> for Pallet<T, I>
impl<T: Config<I>, I: 'static> OnUnbalanced<<<T as Config<I>>::Currency as Currency<<T as Config>::AccountId>>::NegativeImbalance> for Pallet<T, I>
source§fn on_nonzero_unbalanced(amount: NegativeImbalanceOf<T, I>)
fn on_nonzero_unbalanced(amount: NegativeImbalanceOf<T, I>)
on_unbalanced
.source§fn on_unbalanceds<B>(amounts: impl Iterator<Item = Imbalance>)where
Imbalance: Imbalance<B>,
fn on_unbalanceds<B>(amounts: impl Iterator<Item = Imbalance>)where
Imbalance: Imbalance<B>,
source§fn on_unbalanced(amount: Imbalance)
fn on_unbalanced(amount: Imbalance)
source§impl<T: Config<I>, I: 'static> PalletInfoAccess for Pallet<T, I>
impl<T: Config<I>, I: 'static> PalletInfoAccess for Pallet<T, I>
source§fn module_name() -> &'static str
fn module_name() -> &'static str
source§fn crate_version() -> CrateVersion
fn crate_version() -> CrateVersion
source§impl<T: Config<I>, I: 'static> PalletsInfoAccess for Pallet<T, I>
impl<T: Config<I>, I: 'static> PalletsInfoAccess for Pallet<T, I>
source§impl<T, I> PartialEq for Pallet<T, I>
impl<T, I> PartialEq for Pallet<T, I>
source§impl<T: Config<I>, I: 'static> StorageInfoTrait for Pallet<T, I>
impl<T: Config<I>, I: 'static> StorageInfoTrait for Pallet<T, I>
fn storage_info() -> Vec<StorageInfo>
source§impl<T: Config<I>, I: 'static> WhitelistedStorageKeys for Pallet<T, I>
impl<T: Config<I>, I: 'static> WhitelistedStorageKeys for Pallet<T, I>
source§fn whitelisted_storage_keys() -> Vec<TrackedStorageKey>
fn whitelisted_storage_keys() -> Vec<TrackedStorageKey>
Vec<TrackedStorageKey>
indicating the storage keys that
should be whitelisted during benchmarking. This means that those keys
will be excluded from the benchmarking performance calculation.impl<T, I> Eq for Pallet<T, I>
Auto Trait Implementations§
impl<T, I> Freeze for Pallet<T, I>
impl<T, I> RefUnwindSafe for Pallet<T, I>where
T: RefUnwindSafe,
I: RefUnwindSafe,
impl<T, I> Send for Pallet<T, I>
impl<T, I> Sync for Pallet<T, I>
impl<T, I> Unpin for Pallet<T, I>
impl<T, I> UnwindSafe for Pallet<T, I>where
T: UnwindSafe,
I: UnwindSafe,
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> CheckedConversion for T
impl<T> CheckedConversion for T
source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§impl<T, Outer> IsWrappedBy<Outer> for T
impl<T, Outer> IsWrappedBy<Outer> for T
source§impl<T> SaturatedConversion for T
impl<T> SaturatedConversion for T
source§fn saturated_from<T>(t: T) -> Selfwhere
Self: UniqueSaturatedFrom<T>,
fn saturated_from<T>(t: T) -> Selfwhere
Self: UniqueSaturatedFrom<T>,
source§fn saturated_into<T>(self) -> Twhere
Self: UniqueSaturatedInto<T>,
fn saturated_into<T>(self) -> Twhere
Self: UniqueSaturatedInto<T>,
T
. Read moresource§impl<T, U> TryIntoKey<U> for Twhere
U: TryFromKey<T>,
impl<T, U> TryIntoKey<U> for Twhere
U: TryFromKey<T>,
type Error = <U as TryFromKey<T>>::Error
fn try_into_key(self) -> Result<U, <U as TryFromKey<T>>::Error>
source§impl<S, T> UncheckedInto<T> for Swhere
T: UncheckedFrom<S>,
impl<S, T> UncheckedInto<T> for Swhere
T: UncheckedFrom<S>,
source§fn unchecked_into(self) -> T
fn unchecked_into(self) -> T
unchecked_from
.source§impl<T, S> UniqueSaturatedInto<T> for S
impl<T, S> UniqueSaturatedInto<T> for S
source§fn unique_saturated_into(self) -> T
fn unique_saturated_into(self) -> T
T
.