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>

source

pub 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.

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.

source

pub fn reject_proposal( origin: OriginFor<T>, proposal_id: ProposalIndex ) -> DispatchResult

👎Deprecated: 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.

source

pub fn approve_proposal( origin: OriginFor<T>, proposal_id: ProposalIndex ) -> DispatchResult

👎Deprecated: 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.

source

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 the beneficiary.
  • beneficiary: The destination account for the transfer.
§Events

Emits Event::SpendApproved if successful.

source

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: The proposal_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.
source

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 the beneficiary.
  • 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 the Config::PayoutPeriod. If None, the spend can be claimed immediately after approval.
§Events

Emits Event::AssetSpendApproved if successful.

source

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.

source

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.

source

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>

source

pub fn proposal_count() -> ProposalIndex

An auto-generated getter for ProposalCount.

source§

impl<T: Config<I>, I: 'static> Pallet<T, I>

source

pub fn proposals<KArg>( k: KArg ) -> Option<Proposal<T::AccountId, BalanceOf<T, I>>>

An auto-generated getter for Proposals.

source§

impl<T: Config<I>, I: 'static> Pallet<T, I>

source

pub fn approvals() -> BoundedVec<ProposalIndex, T::MaxApprovals>

An auto-generated getter for Approvals.

source§

impl<T: Config<I>, I: 'static> Pallet<T, I>

source

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.

source

pub fn spend_funds() -> Weight

Spend some money! returns number of approvals before spend.

source

pub fn pot() -> BalanceOf<T, I>

Return the amount of money in the pot.

Trait Implementations§

source§

impl<T: Config<I>, I: 'static> BeforeAllRuntimeMigrations for Pallet<T, I>

source§

fn before_all_runtime_migrations() -> Weight

Something that should happen before runtime migrations are executed.
source§

impl<T: Config<I>, I: 'static> Callable<T> for Pallet<T, I>

§

type RuntimeCall = Call<T, I>

source§

impl<T, I> Clone for Pallet<T, I>

source§

fn clone(&self) -> Self

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<T, I> Debug for Pallet<T, I>

source§

fn fmt(&self, fmt: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<T: Config<I>, I: 'static> GetStorageVersion for Pallet<T, I>

§

type InCodeStorageVersion = NoStorageVersionSet

This type is generated by the pallet macro. Read more
source§

fn in_code_storage_version() -> Self::InCodeStorageVersion

Returns the in-code storage version as specified in the storage_version attribute, or NoStorageVersionSet if the attribute is missing.
source§

fn on_chain_storage_version() -> StorageVersion

Returns the storage version of the pallet as last set in the actual on-chain storage.
source§

fn current_storage_version() -> Self::InCodeStorageVersion

👎Deprecated: This method has been renamed to in_code_storage_version and will be removed after March 2024.
DEPRECATED: Use Self::current_storage_version instead. Read more
source§

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

§Complexity
  • O(A) where A is the number of approvals
source§

fn on_finalize(_n: BlockNumber)

Block finalization hook. This is called at the very end of block execution. Read more
source§

fn on_idle(_n: BlockNumber, _remaining_weight: Weight) -> Weight

Hook to consume a block’s idle time. This will run when the block is being finalized (before Hooks::on_finalize). Read more
source§

fn on_poll(_n: BlockNumber, _weight: &mut WeightMeter)

A hook to run logic after inherent application. Read more
source§

fn on_runtime_upgrade() -> Weight

Hook executed when a code change (aka. a “runtime upgrade”) is detected by the FRAME Executive pallet. Read more
source§

fn offchain_worker(_n: BlockNumber)

Implementing this function on a pallet allows you to perform long-running tasks that are dispatched as separate threads, and entirely independent of the main blockchain execution. Read more
source§

fn integrity_test()

Check the integrity of this pallet’s configuration. Read more
source§

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>

source§

fn offchain_worker(n: BlockNumberFor<T>)

This function is being called after every block import (when fully synced). Read more
source§

impl<T: Config<I>, I: 'static> OnFinalize<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T, I>

source§

impl<T: Config<I>, I: 'static> OnGenesis for Pallet<T, I>

source§

fn on_genesis()

Something that should happen at genesis.
source§

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

source§

impl<T: Config<I>, I: 'static> OnInitialize<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T, I>

source§

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)

Code to execute every now and then at the beginning of the block after inherent application. Read more
source§

impl<T: Config<I>, I: 'static> OnRuntimeUpgrade for Pallet<T, I>

source§

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>)

Actually handle a non-zero imbalance. You probably want to implement this rather than on_unbalanced.
source§

fn on_unbalanceds<B>(amounts: impl Iterator<Item = Imbalance>)
where Imbalance: Imbalance<B>,

Handler for some imbalances. The different imbalances might have different origins or meanings, dependent on the context. Will default to simply calling on_unbalanced for all of them. Infallible.
source§

fn on_unbalanced(amount: Imbalance)

Handler for some imbalance. Infallible.
source§

impl<T: Config<I>, I: 'static> PalletInfoAccess for Pallet<T, I>

source§

fn index() -> usize

Index of the pallet as configured in the runtime.
source§

fn name() -> &'static str

Name of the pallet as configured in the runtime.
source§

fn name_hash() -> [u8; 16]

Two128 hash of name.
source§

fn module_name() -> &'static str

Name of the Rust module containing the pallet.
source§

fn crate_version() -> CrateVersion

Version of the crate containing the pallet.
source§

impl<T: Config<I>, I: 'static> PalletsInfoAccess for Pallet<T, I>

source§

fn count() -> usize

The number of pallets’ information that this type represents. Read more
source§

fn infos() -> Vec<PalletInfoData>

All of the pallets’ information that this type represents.
source§

impl<T, I> PartialEq for Pallet<T, I>

source§

fn eq(&self, other: &Self) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl<T: Config<I>, I: 'static> StorageInfoTrait for Pallet<T, I>

source§

impl<T: Config<I>, I: 'static> WhitelistedStorageKeys for Pallet<T, I>

source§

fn whitelisted_storage_keys() -> Vec<TrackedStorageKey>

Returns a 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.
source§

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>

§

impl<T, I> Send for Pallet<T, I>
where T: Send, I: Send,

§

impl<T, I> Sync for Pallet<T, I>
where T: Sync, I: Sync,

§

impl<T, I> Unpin for Pallet<T, I>
where T: Unpin, I: Unpin,

§

impl<T, I> UnwindSafe for Pallet<T, I>
where T: UnwindSafe, I: UnwindSafe,

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> CheckedConversion for T

source§

fn checked_from<T>(t: T) -> Option<Self>
where Self: TryFrom<T>,

Convert from a value of T into an equivalent instance of Option<Self>. Read more
source§

fn checked_into<T>(self) -> Option<T>
where Self: TryInto<T>,

Consume self to return Some equivalent value of Option<T>. Read more
source§

impl<T> DynClone for T
where T: Clone,

source§

fn __clone_box(&self, _: Private) -> *mut ()

source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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 more
source§

impl<T, U> IntoKey<U> for T
where U: FromKey<T>,

source§

fn into_key(self) -> U

source§

impl<T> IsType<T> for T

source§

fn from_ref(t: &T) -> &T

Cast reference.
source§

fn into_ref(&self) -> &T

Cast reference.
source§

fn from_mut(t: &mut T) -> &mut T

Cast mutable reference.
source§

fn into_mut(&mut self) -> &mut T

Cast mutable reference.
source§

impl<T, Outer> IsWrappedBy<Outer> for T
where Outer: AsRef<T> + AsMut<T> + From<T>, T: From<Outer>,

source§

fn from_ref(outer: &Outer) -> &T

Get a reference to the inner from the outer.

source§

fn from_mut(outer: &mut Outer) -> &mut T

Get a mutable reference to the inner from the outer.

source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T> SaturatedConversion for T

source§

fn saturated_from<T>(t: T) -> Self
where Self: UniqueSaturatedFrom<T>,

Convert from a value of T into an equivalent instance of Self. Read more
source§

fn saturated_into<T>(self) -> T
where Self: UniqueSaturatedInto<T>,

Consume self to return an equivalent value of T. Read more
source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T, U> TryIntoKey<U> for T
where U: TryFromKey<T>,

§

type Error = <U as TryFromKey<T>>::Error

source§

fn try_into_key(self) -> Result<U, <U as TryFromKey<T>>::Error>

source§

impl<S, T> UncheckedInto<T> for S
where T: UncheckedFrom<S>,

source§

fn unchecked_into(self) -> T

The counterpart to unchecked_from.
source§

impl<T, S> UniqueSaturatedInto<T> for S
where T: Bounded, S: TryInto<T>,

source§

fn unique_saturated_into(self) -> T

Consume self to return an equivalent value of T.
source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

source§

fn vzip(self) -> V

source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

impl<T> JsonSchemaMaybe for T

source§

impl<T> MaybeDebug for T
where T: Debug,

source§

impl<T> MaybeRefUnwindSafe for T
where T: RefUnwindSafe,

source§

impl<T> Member for T
where T: Send + Sync + Debug + Eq + PartialEq + Clone + 'static,