Struct pallet_bounties::pallet::Pallet
source · pub struct Pallet<T, I = ()>(_);
Expand description
The pallet implementing the on-chain logic.
Implementations§
source§impl<T: Config<I>, I: 'static> Pallet<T, I>
impl<T: Config<I>, I: 'static> Pallet<T, I>
sourcepub fn propose_bounty(
origin: OriginFor<T>,
value: BalanceOf<T, I>,
description: Vec<u8>
) -> DispatchResult
pub fn propose_bounty(
origin: OriginFor<T>,
value: BalanceOf<T, I>,
description: Vec<u8>
) -> DispatchResult
Propose a new bounty.
The dispatch origin for this call must be Signed.
Payment: TipReportDepositBase
will be reserved from the origin account, as well as
DataDepositPerByte
for each byte in reason
. It will be unreserved upon approval,
or slashed when rejected.
curator
: The curator account whom will manage this bounty.fee
: The curator fee.value
: The total payment amount of this bounty, curator fee included.description
: The description of this bounty.
sourcepub fn approve_bounty(
origin: OriginFor<T>,
bounty_id: BountyIndex
) -> DispatchResult
pub fn approve_bounty(
origin: OriginFor<T>,
bounty_id: BountyIndex
) -> DispatchResult
Approve a bounty proposal. At a later time, the bounty will be funded and become active and the original deposit will be returned.
May only be called from T::SpendOrigin
.
Complexity
- O(1).
sourcepub fn propose_curator(
origin: OriginFor<T>,
bounty_id: BountyIndex,
curator: <<T as Config>::Lookup as StaticLookup>::Source,
fee: BalanceOf<T, I>
) -> DispatchResult
pub fn propose_curator(
origin: OriginFor<T>,
bounty_id: BountyIndex,
curator: <<T as Config>::Lookup as StaticLookup>::Source,
fee: BalanceOf<T, I>
) -> DispatchResult
sourcepub fn unassign_curator(
origin: OriginFor<T>,
bounty_id: BountyIndex
) -> DispatchResult
pub fn unassign_curator(
origin: OriginFor<T>,
bounty_id: BountyIndex
) -> DispatchResult
Unassign curator from a bounty.
This function can only be called by the RejectOrigin
a signed origin.
If this function is called by the RejectOrigin
, we assume that the curator is
malicious or inactive. As a result, we will slash the curator when possible.
If the origin is the curator, we take this as a sign they are unable to do their job and they willingly give up. We could slash them, but for now we allow them to recover their deposit and exit without issue. (We may want to change this if it is abused.)
Finally, the origin can be anyone if and only if the curator is “inactive”. This allows anyone in the community to call out that a curator is not doing their due diligence, and we should pick a new curator. In this case the curator should also be slashed.
Complexity
- O(1).
sourcepub fn accept_curator(
origin: OriginFor<T>,
bounty_id: BountyIndex
) -> DispatchResult
pub fn accept_curator(
origin: OriginFor<T>,
bounty_id: BountyIndex
) -> DispatchResult
Accept the curator role for a bounty. A deposit will be reserved from curator and refund upon successful payout.
May only be called from the curator.
Complexity
- O(1).
sourcepub fn award_bounty(
origin: OriginFor<T>,
bounty_id: BountyIndex,
beneficiary: <<T as Config>::Lookup as StaticLookup>::Source
) -> DispatchResult
pub fn award_bounty(
origin: OriginFor<T>,
bounty_id: BountyIndex,
beneficiary: <<T as Config>::Lookup as StaticLookup>::Source
) -> DispatchResult
Award bounty to a beneficiary account. The beneficiary will be able to claim the funds after a delay.
The dispatch origin for this call must be the curator of this bounty.
bounty_id
: Bounty ID to award.beneficiary
: The beneficiary account whom will receive the payout.
Complexity
- O(1).
sourcepub fn claim_bounty(
origin: OriginFor<T>,
bounty_id: BountyIndex
) -> DispatchResult
pub fn claim_bounty(
origin: OriginFor<T>,
bounty_id: BountyIndex
) -> DispatchResult
Claim the payout from an awarded bounty after payout delay.
The dispatch origin for this call must be the beneficiary of this bounty.
bounty_id
: Bounty ID to claim.
Complexity
- O(1).
sourcepub fn close_bounty(
origin: OriginFor<T>,
bounty_id: BountyIndex
) -> DispatchResultWithPostInfo
pub fn close_bounty(
origin: OriginFor<T>,
bounty_id: BountyIndex
) -> DispatchResultWithPostInfo
Cancel a proposed or active bounty. All the funds will be sent to treasury and the curator deposit will be unreserved if possible.
Only T::RejectOrigin
is able to cancel a bounty.
bounty_id
: Bounty ID to cancel.
Complexity
- O(1).
sourcepub fn extend_bounty_expiry(
origin: OriginFor<T>,
bounty_id: BountyIndex,
_remark: Vec<u8>
) -> DispatchResult
pub fn extend_bounty_expiry(
origin: OriginFor<T>,
bounty_id: BountyIndex,
_remark: Vec<u8>
) -> DispatchResult
Extend the expiry time of an active bounty.
The dispatch origin for this call must be the curator of this bounty.
bounty_id
: Bounty ID to extend.remark
: additional information.
Complexity
- O(1).
source§impl<T: Config<I>, I: 'static> Pallet<T, I>
impl<T: Config<I>, I: 'static> Pallet<T, I>
sourcepub fn bounty_count() -> BountyIndex
pub fn bounty_count() -> BountyIndex
Number of bounty proposals that have been made.
source§impl<T: Config<I>, I: 'static> Pallet<T, I>
impl<T: Config<I>, I: 'static> Pallet<T, I>
sourcepub fn bounties<KArg>(
k: KArg
) -> Option<Bounty<T::AccountId, BalanceOf<T, I>, T::BlockNumber>>where
KArg: EncodeLike<BountyIndex>,
pub fn bounties<KArg>(
k: KArg
) -> Option<Bounty<T::AccountId, BalanceOf<T, I>, T::BlockNumber>>where
KArg: EncodeLike<BountyIndex>,
Bounties that have been made.
source§impl<T: Config<I>, I: 'static> Pallet<T, I>
impl<T: Config<I>, I: 'static> Pallet<T, I>
sourcepub fn bounty_descriptions<KArg>(
k: KArg
) -> Option<BoundedVec<u8, T::MaximumReasonLength>>where
KArg: EncodeLike<BountyIndex>,
pub fn bounty_descriptions<KArg>(
k: KArg
) -> Option<BoundedVec<u8, T::MaximumReasonLength>>where
KArg: EncodeLike<BountyIndex>,
The description of each bounty.
source§impl<T: Config<I>, I: 'static> Pallet<T, I>
impl<T: Config<I>, I: 'static> Pallet<T, I>
sourcepub fn bounty_approvals() -> BoundedVec<BountyIndex, T::MaxApprovals>
pub fn bounty_approvals() -> BoundedVec<BountyIndex, T::MaxApprovals>
Bounty indices that have been approved but not yet funded.
source§impl<T: Config<I>, I: 'static> Pallet<T, I>
impl<T: Config<I>, I: 'static> Pallet<T, I>
pub fn calculate_curator_deposit(fee: &BalanceOf<T, I>) -> BalanceOf<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 bounty_account_id(id: BountyIndex) -> T::AccountId
pub fn bounty_account_id(id: BountyIndex) -> T::AccountId
The account ID of a bounty account
Trait Implementations§
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 current_storage_version() -> StorageVersion
fn current_storage_version() -> StorageVersion
source§fn on_chain_storage_version() -> StorageVersion
fn on_chain_storage_version() -> StorageVersion
source§impl<T: Config<I>, I: 'static> Hooks<<T as Config>::BlockNumber> for Pallet<T, I>
impl<T: Config<I>, I: 'static> Hooks<<T as Config>::BlockNumber> for Pallet<T, I>
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
on_finalize
).
Implement to have something happen using the remaining weight.
Will not fire if the remaining weight is 0.
Return the weight used, the hook will subtract it from current weight used
and pass the result to the next on_idle
hook if it exists. Read moresource§fn on_initialize(_n: BlockNumber) -> Weight
fn on_initialize(_n: BlockNumber) -> Weight
source§fn on_runtime_upgrade() -> Weight
fn on_runtime_upgrade() -> Weight
source§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§fn integrity_test()
fn integrity_test()
source§impl<T: Config<I>, I: 'static> OffchainWorker<<T as Config>::BlockNumber> for Pallet<T, I>
impl<T: Config<I>, I: 'static> OffchainWorker<<T as Config>::BlockNumber> for Pallet<T, I>
source§fn offchain_worker(n: <T as Config>::BlockNumber)
fn offchain_worker(n: <T as Config>::BlockNumber)
source§impl<T: Config<I>, I: 'static> OnFinalize<<T as Config>::BlockNumber> for Pallet<T, I>
impl<T: Config<I>, I: 'static> OnFinalize<<T as Config>::BlockNumber> for Pallet<T, I>
source§fn on_finalize(n: <T as Config>::BlockNumber)
fn on_finalize(n: <T as Config>::BlockNumber)
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>::BlockNumber> for Pallet<T, I>
impl<T: Config<I>, I: 'static> OnIdle<<T as Config>::BlockNumber> for Pallet<T, I>
source§fn on_idle(n: <T as Config>::BlockNumber, remaining_weight: Weight) -> Weight
fn on_idle(n: <T as Config>::BlockNumber, remaining_weight: Weight) -> Weight
remaining_weight
to make sure it is high enough to allow for
your pallet’s extra computation. Read moresource§impl<T: Config<I>, I: 'static> OnInitialize<<T as Config>::BlockNumber> for Pallet<T, I>
impl<T: Config<I>, I: 'static> OnInitialize<<T as Config>::BlockNumber> for Pallet<T, I>
source§fn on_initialize(n: <T as Config>::BlockNumber) -> Weight
fn on_initialize(n: <T as Config>::BlockNumber) -> Weight
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> 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: Config<I>, I: 'static> SpendFunds<T, I> for Pallet<T, I>
impl<T: Config<I>, I: 'static> SpendFunds<T, I> for Pallet<T, I>
fn spend_funds(
budget_remaining: &mut BalanceOf<T, I>,
imbalance: &mut PositiveImbalanceOf<T, I>,
total_weight: &mut Weight,
missed_any: &mut bool
)
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. Read moreimpl<T, I> Eq for Pallet<T, I>
Auto Trait Implementations§
impl<T, I> RefUnwindSafe for Pallet<T, I>where
I: RefUnwindSafe,
T: RefUnwindSafe,
impl<T, I> Send for Pallet<T, I>where
I: Send,
T: Send,
impl<T, I> Sync for Pallet<T, I>where
I: Sync,
T: Sync,
impl<T, I> Unpin for Pallet<T, I>where
I: Unpin,
T: Unpin,
impl<T, I> UnwindSafe for Pallet<T, I>where
I: UnwindSafe,
T: UnwindSafe,
Blanket Implementations§
source§impl<T> CheckedConversion for T
impl<T> CheckedConversion for T
source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
source§fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>
fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
. Read moresource§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
. Read moresource§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s. Read moresource§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s. Read moresource§impl<Q, K> Equivalent<K> for Qwhere
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Equivalent<K> for Qwhere
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.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, Outer> IsWrappedBy<Outer> for Twhere
Outer: AsRef<T> + AsMut<T> + From<T>,
T: From<Outer>,
impl<T, Outer> IsWrappedBy<Outer> for Twhere
Outer: AsRef<T> + AsMut<T> + From<T>,
T: From<Outer>,
source§impl<T> PalletVersionToStorageVersionHelper for Twhere
T: GetStorageVersion + PalletInfoAccess,
impl<T> PalletVersionToStorageVersionHelper for Twhere
T: GetStorageVersion + PalletInfoAccess,
fn migrate(db_weight: &RuntimeDbWeight) -> Weight
source§impl<T> Pointable for T
impl<T> Pointable 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<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 Swhere
T: Bounded,
S: TryInto<T>,
impl<T, S> UniqueSaturatedInto<T> for Swhere
T: Bounded,
S: TryInto<T>,
source§fn unique_saturated_into(self) -> T
fn unique_saturated_into(self) -> T
T
.