pub struct Proposal<T: Config> {
pub id: ProposalId,
pub proposer: <T as Config>::AccountId,
pub expiration_block: BlockNumberFor<T>,
pub data: ProposalData<T>,
pub status: ProposalStatus<T>,
pub metadata: BoundedVec<u8, ConstU32<256>>,
pub proposal_cost: <<T as Config>::Currency as Currency<<T as Config>::AccountId>>::Balance,
pub creation_block: BlockNumberFor<T>,
}
Expand description
A network proposal created by the community. Core part of the DAO.
Fields§
§id: ProposalId
§proposer: <T as Config>::AccountId
§expiration_block: BlockNumberFor<T>
§data: ProposalData<T>
The actual data and type of the proposal.
status: ProposalStatus<T>
§metadata: BoundedVec<u8, ConstU32<256>>
§proposal_cost: <<T as Config>::Currency as Currency<<T as Config>::AccountId>>::Balance
§creation_block: BlockNumberFor<T>
Implementations§
Source§impl<T: Config> Proposal<T>
impl<T: Config> Proposal<T>
Sourcepub fn execution_block(&self) -> BlockNumberFor<T>
pub fn execution_block(&self) -> BlockNumberFor<T>
Returns the block in which a proposal should be executed. For emission proposals, that is the creation block + 21600 blocks (roughly 2 days at 1 block every 8 seconds), as for the others, they are only executed on the expiration block.
Sourcepub fn accept(
self,
block: BlockNumberFor<T>,
stake_for: <<T as Config>::Currency as Currency<<T as Config>::AccountId>>::Balance,
stake_against: <<T as Config>::Currency as Currency<<T as Config>::AccountId>>::Balance,
) -> DispatchResult
pub fn accept( self, block: BlockNumberFor<T>, stake_for: <<T as Config>::Currency as Currency<<T as Config>::AccountId>>::Balance, stake_against: <<T as Config>::Currency as Currency<<T as Config>::AccountId>>::Balance, ) -> DispatchResult
Marks a proposal as accepted and executes it.
Trait Implementations§
Source§impl<T: Config> Decode for Proposal<T>where
<T as Config>::AccountId: Decode,
BlockNumberFor<T>: Decode,
ProposalData<T>: Decode,
ProposalStatus<T>: Decode,
<<T as Config>::Currency as Currency<<T as Config>::AccountId>>::Balance: Decode,
impl<T: Config> Decode for Proposal<T>where
<T as Config>::AccountId: Decode,
BlockNumberFor<T>: Decode,
ProposalData<T>: Decode,
ProposalStatus<T>: Decode,
<<T as Config>::Currency as Currency<<T as Config>::AccountId>>::Balance: Decode,
Source§fn decode<__CodecInputEdqy: Input>(
__codec_input_edqy: &mut __CodecInputEdqy,
) -> Result<Self, Error>
fn decode<__CodecInputEdqy: Input>( __codec_input_edqy: &mut __CodecInputEdqy, ) -> Result<Self, Error>
Attempt to deserialise the value from input.
§fn decode_into<I>(
input: &mut I,
dst: &mut MaybeUninit<Self>,
) -> Result<DecodeFinished, Error>where
I: Input,
fn decode_into<I>(
input: &mut I,
dst: &mut MaybeUninit<Self>,
) -> Result<DecodeFinished, Error>where
I: Input,
Attempt to deserialize the value from input into a pre-allocated piece of memory. Read more
§fn skip<I>(input: &mut I) -> Result<(), Error>where
I: Input,
fn skip<I>(input: &mut I) -> Result<(), Error>where
I: Input,
Attempt to skip the encoded value from input. Read more
§fn encoded_fixed_size() -> Option<usize>
fn encoded_fixed_size() -> Option<usize>
Returns the fixed encoded size of the type. Read more
Source§impl<T: Config> Encode for Proposal<T>where
<T as Config>::AccountId: Encode,
BlockNumberFor<T>: Encode,
ProposalData<T>: Encode,
ProposalStatus<T>: Encode,
<<T as Config>::Currency as Currency<<T as Config>::AccountId>>::Balance: Encode,
impl<T: Config> Encode for Proposal<T>where
<T as Config>::AccountId: Encode,
BlockNumberFor<T>: Encode,
ProposalData<T>: Encode,
ProposalStatus<T>: Encode,
<<T as Config>::Currency as Currency<<T as Config>::AccountId>>::Balance: Encode,
Source§fn size_hint(&self) -> usize
fn size_hint(&self) -> usize
If possible give a hint of expected size of the encoding. Read more
Source§fn encode_to<__CodecOutputEdqy: Output + ?Sized>(
&self,
__codec_dest_edqy: &mut __CodecOutputEdqy,
)
fn encode_to<__CodecOutputEdqy: Output + ?Sized>( &self, __codec_dest_edqy: &mut __CodecOutputEdqy, )
Convert self to a slice and append it to the destination.
§fn using_encoded<R, F>(&self, f: F) -> R
fn using_encoded<R, F>(&self, f: F) -> R
Convert self to a slice and then invoke the given closure with it.
§fn encoded_size(&self) -> usize
fn encoded_size(&self) -> usize
Calculates the encoded size. Read more
Source§impl<T: Config> MaxEncodedLen for Proposal<T>where
<T as Config>::AccountId: MaxEncodedLen,
BlockNumberFor<T>: MaxEncodedLen,
ProposalData<T>: MaxEncodedLen,
ProposalStatus<T>: MaxEncodedLen,
<<T as Config>::Currency as Currency<<T as Config>::AccountId>>::Balance: MaxEncodedLen,
impl<T: Config> MaxEncodedLen for Proposal<T>where
<T as Config>::AccountId: MaxEncodedLen,
BlockNumberFor<T>: MaxEncodedLen,
ProposalData<T>: MaxEncodedLen,
ProposalStatus<T>: MaxEncodedLen,
<<T as Config>::Currency as Currency<<T as Config>::AccountId>>::Balance: MaxEncodedLen,
Source§fn max_encoded_len() -> usize
fn max_encoded_len() -> usize
Upper bound, in bytes, of the maximum encoded size of this item.
Source§impl<T> TypeInfo for Proposal<T>where
<T as Config>::AccountId: TypeInfo + 'static,
BlockNumberFor<T>: TypeInfo + 'static,
ProposalData<T>: TypeInfo + 'static,
ProposalStatus<T>: TypeInfo + 'static,
<<T as Config>::Currency as Currency<<T as Config>::AccountId>>::Balance: TypeInfo + 'static,
T: Config + 'static,
impl<T> TypeInfo for Proposal<T>where
<T as Config>::AccountId: TypeInfo + 'static,
BlockNumberFor<T>: TypeInfo + 'static,
ProposalData<T>: TypeInfo + 'static,
ProposalStatus<T>: TypeInfo + 'static,
<<T as Config>::Currency as Currency<<T as Config>::AccountId>>::Balance: TypeInfo + 'static,
T: Config + 'static,
impl<T: Config> EncodeLike for Proposal<T>where
<T as Config>::AccountId: Encode,
BlockNumberFor<T>: Encode,
ProposalData<T>: Encode,
ProposalStatus<T>: Encode,
<<T as Config>::Currency as Currency<<T as Config>::AccountId>>::Balance: Encode,
Auto Trait Implementations§
impl<T> Freeze for Proposal<T>
impl<T> RefUnwindSafe for Proposal<T>where
<T as Config>::AccountId: RefUnwindSafe,
<<<T as Config>::Block as Block>::Header as Header>::Number: RefUnwindSafe,
impl<T> Send for Proposal<T>
impl<T> Sync for Proposal<T>
impl<T> Unpin for Proposal<T>
impl<T> UnwindSafe for Proposal<T>where
<T as Config>::AccountId: UnwindSafe + RefUnwindSafe,
<<<T as Config>::Block as Block>::Header as Header>::Number: UnwindSafe,
Blanket Implementations§
§impl<T> AnySync for T
impl<T> AnySync for T
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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
Mutably borrows from an owned value. Read more
§impl<T> CheckedConversion for T
impl<T> CheckedConversion for T
§fn checked_from<T>(t: T) -> Option<Self>where
Self: TryFrom<T>,
fn checked_from<T>(t: T) -> Option<Self>where
Self: TryFrom<T>,
§fn checked_into<T>(self) -> Option<T>where
Self: TryInto<T>,
fn checked_into<T>(self) -> Option<T>where
Self: TryInto<T>,
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> DecodeAll for Twhere
T: Decode,
impl<T> DecodeAll for Twhere
T: Decode,
§fn decode_all(input: &mut &[u8]) -> Result<T, Error>
fn decode_all(input: &mut &[u8]) -> Result<T, Error>
Decode
Self
and consume all of the given input data. Read more§impl<T> DecodeLimit for Twhere
T: Decode,
impl<T> DecodeLimit for Twhere
T: Decode,
§impl<T> Hashable for Twhere
T: Codec,
impl<T> Hashable for Twhere
T: Codec,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
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>
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 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>
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§impl<T> IsType<T> for T
impl<T> IsType<T> for T
§impl<T, Outer> IsWrappedBy<Outer> for T
impl<T, Outer> IsWrappedBy<Outer> for T
§impl<T> KeyedVec for Twhere
T: Codec,
impl<T> KeyedVec for Twhere
T: Codec,
§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> SaturatedConversion for T
impl<T> SaturatedConversion for T
§fn saturated_from<T>(t: T) -> Selfwhere
Self: UniqueSaturatedFrom<T>,
fn saturated_from<T>(t: T) -> Selfwhere
Self: UniqueSaturatedFrom<T>,
§fn saturated_into<T>(self) -> Twhere
Self: UniqueSaturatedInto<T>,
fn saturated_into<T>(self) -> Twhere
Self: UniqueSaturatedInto<T>,
Consume self to return an equivalent value of
T
. Read more§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self
from the equivalent element of its
superset. Read more§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self
is actually part of its subset T
(and can be converted to it).§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset
but without any property checks. Always succeeds.§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self
to the equivalent element of its superset.§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>
§impl<S, T> UncheckedInto<T> for Swhere
T: UncheckedFrom<S>,
impl<S, T> UncheckedInto<T> for Swhere
T: UncheckedFrom<S>,
§fn unchecked_into(self) -> T
fn unchecked_into(self) -> T
The counterpart to
unchecked_from
.§impl<T, S> UniqueSaturatedInto<T> for S
impl<T, S> UniqueSaturatedInto<T> for S
§fn unique_saturated_into(self) -> T
fn unique_saturated_into(self) -> T
Consume self to return an equivalent value of
T
.