Enum pallet_lottery::pallet::Call
source · pub enum Call<T: Config> {
buy_ticket {
call: Box<<T as Config>::RuntimeCall>,
},
set_calls {
calls: Vec<<T as Config>::RuntimeCall>,
},
start_lottery {
price: <<T as Config>::Currency as Currency<<T as Config>::AccountId>>::Balance,
length: T::BlockNumber,
delay: T::BlockNumber,
repeat: bool,
},
stop_repeat {},
// some variants omitted
}
Expand description
Contains one variant per dispatchable that can be called by an extrinsic.
Variants§
buy_ticket
Fields
call: Box<<T as Config>::RuntimeCall>
Buy a ticket to enter the lottery.
This extrinsic acts as a passthrough function for call
. In all
situations where call
alone would succeed, this extrinsic should
succeed.
If call
is successful, then we will attempt to purchase a ticket,
which may fail silently. To detect success of a ticket purchase, you
should listen for the TicketBought
event.
This extrinsic must be called by a signed origin.
set_calls
Fields
calls: Vec<<T as Config>::RuntimeCall>
Set calls in storage which can be used to purchase a lottery ticket.
This function only matters if you use the ValidateCall
implementation
provided by this pallet, which uses storage to determine the valid calls.
This extrinsic must be called by the Manager origin.
start_lottery
Start a lottery using the provided configuration.
This extrinsic must be called by the ManagerOrigin
.
Parameters:
price
: The cost of a single ticket.length
: How long the lottery should run for starting at the current block.delay
: How long after the lottery end we should wait before picking a winner.repeat
: If the lottery should repeat when completed.
stop_repeat
Fields
If a lottery is repeating, you can use this to stop the repeat. The lottery will continue to run to completion.
This extrinsic must be called by the ManagerOrigin
.
Implementations§
source§impl<T: Config> Call<T>
impl<T: Config> Call<T>
sourcepub fn new_call_variant_buy_ticket(
call: Box<<T as Config>::RuntimeCall>
) -> Self
pub fn new_call_variant_buy_ticket( call: Box<<T as Config>::RuntimeCall> ) -> Self
Create a call with the variant buy_ticket
.
sourcepub fn new_call_variant_set_calls(
calls: Vec<<T as Config>::RuntimeCall>
) -> Self
pub fn new_call_variant_set_calls( calls: Vec<<T as Config>::RuntimeCall> ) -> Self
Create a call with the variant set_calls
.
sourcepub fn new_call_variant_start_lottery(
price: <<T as Config>::Currency as Currency<<T as Config>::AccountId>>::Balance,
length: T::BlockNumber,
delay: T::BlockNumber,
repeat: bool
) -> Self
pub fn new_call_variant_start_lottery( price: <<T as Config>::Currency as Currency<<T as Config>::AccountId>>::Balance, length: T::BlockNumber, delay: T::BlockNumber, repeat: bool ) -> Self
Create a call with the variant start_lottery
.
sourcepub fn new_call_variant_stop_repeat() -> Self
pub fn new_call_variant_stop_repeat() -> Self
Create a call with the variant stop_repeat
.
Trait Implementations§
source§impl<T: Config> Decode for Call<T>
impl<T: Config> Decode for Call<T>
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>
§fn skip<I>(input: &mut I) -> Result<(), Error>where
I: Input,
fn skip<I>(input: &mut I) -> Result<(), Error>where I: Input,
§fn encoded_fixed_size() -> Option<usize>
fn encoded_fixed_size() -> Option<usize>
source§impl<T: Config> Encode for Call<T>
impl<T: Config> Encode for Call<T>
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 )
§fn using_encoded<R, F>(&self, f: F) -> Rwhere
F: FnOnce(&[u8]) -> R,
fn using_encoded<R, F>(&self, f: F) -> Rwhere F: FnOnce(&[u8]) -> R,
§fn encoded_size(&self) -> usize
fn encoded_size(&self) -> usize
source§impl<T: Config> GetCallIndex for Call<T>
impl<T: Config> GetCallIndex for Call<T>
source§fn get_call_index(&self) -> u8
fn get_call_index(&self) -> u8
source§fn get_call_indices() -> &'static [u8] ⓘ
fn get_call_indices() -> &'static [u8] ⓘ
GetCallName
.source§impl<T: Config> GetCallName for Call<T>
impl<T: Config> GetCallName for Call<T>
source§fn get_call_name(&self) -> &'static str
fn get_call_name(&self) -> &'static str
source§fn get_call_names() -> &'static [&'static str]
fn get_call_names() -> &'static [&'static str]
GetCallIndex
.source§impl<T: Config> GetDispatchInfo for Call<T>
impl<T: Config> GetDispatchInfo for Call<T>
source§fn get_dispatch_info(&self) -> DispatchInfo
fn get_dispatch_info(&self) -> DispatchInfo
DispatchInfo
, containing relevant information of this dispatch. Read moresource§impl<T: Config> GetDispatchInfo for Call<T>
impl<T: Config> GetDispatchInfo for Call<T>
source§fn get_dispatch_info(&self) -> DispatchInfo
fn get_dispatch_info(&self) -> DispatchInfo
frame_support::dispatch
source§impl<T: Config> PartialEq<Call<T>> for Call<T>
impl<T: Config> PartialEq<Call<T>> for Call<T>
source§impl<T> TypeInfo for Call<T>where
PhantomData<(T,)>: TypeInfo + 'static,
Box<<T as Config>::RuntimeCall>: TypeInfo + 'static,
Vec<<T as Config>::RuntimeCall>: TypeInfo + 'static,
<<T as Config>::Currency as Currency<<T as Config>::AccountId>>::Balance: TypeInfo + 'static,
T::BlockNumber: TypeInfo + 'static,
T: Config + 'static,
impl<T> TypeInfo for Call<T>where PhantomData<(T,)>: TypeInfo + 'static, Box<<T as Config>::RuntimeCall>: TypeInfo + 'static, Vec<<T as Config>::RuntimeCall>: TypeInfo + 'static, <<T as Config>::Currency as Currency<<T as Config>::AccountId>>::Balance: TypeInfo + 'static, T::BlockNumber: TypeInfo + 'static, T: Config + 'static,
source§impl<T: Config> UnfilteredDispatchable for Call<T>
impl<T: Config> UnfilteredDispatchable for Call<T>
§type RuntimeOrigin = <T as Config>::RuntimeOrigin
type RuntimeOrigin = <T as Config>::RuntimeOrigin
frame_system::Config::RuntimeOrigin
).source§fn dispatch_bypass_filter(
self,
origin: Self::RuntimeOrigin
) -> DispatchResultWithPostInfo
fn dispatch_bypass_filter( self, origin: Self::RuntimeOrigin ) -> DispatchResultWithPostInfo
impl<T: Config> EncodeLike<Call<T>> for Call<T>
impl<T: Config> Eq for Call<T>
Auto Trait Implementations§
impl<T> RefUnwindSafe for Call<T>where T: RefUnwindSafe, <<T as Config>::Currency as Currency<<T as Config>::AccountId>>::Balance: RefUnwindSafe, <T as Config>::BlockNumber: RefUnwindSafe, <T as Config>::RuntimeCall: RefUnwindSafe,
impl<T> Send for Call<T>where T: Send, <<T as Config>::Currency as Currency<<T as Config>::AccountId>>::Balance: Send, <T as Config>::RuntimeCall: Send,
impl<T> Sync for Call<T>where T: Sync, <<T as Config>::Currency as Currency<<T as Config>::AccountId>>::Balance: Sync, <T as Config>::RuntimeCall: Sync,
impl<T> Unpin for Call<T>where T: Unpin, <<T as Config>::Currency as Currency<<T as Config>::AccountId>>::Balance: Unpin, <T as Config>::BlockNumber: Unpin, <T as Config>::RuntimeCall: Unpin,
impl<T> UnwindSafe for Call<T>where T: UnwindSafe, <<T as Config>::Currency as Currency<<T as Config>::AccountId>>::Balance: UnwindSafe, <T as Config>::BlockNumber: UnwindSafe, <T as Config>::RuntimeCall: UnwindSafe,
Blanket Implementations§
source§impl<T> CheckedConversion for T
impl<T> CheckedConversion for T
§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>
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> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere T: Any,
§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
.§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
.§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.§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.source§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.§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,
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
source§impl<T> Hashable for Twhere
T: Codec,
impl<T> Hashable for Twhere T: Codec,
fn blake2_128(&self) -> [u8; 16]
fn blake2_256(&self) -> [u8; 32]
fn blake2_128_concat(&self) -> Vec<u8, Global> ⓘ
fn twox_128(&self) -> [u8; 16]
fn twox_256(&self) -> [u8; 32]
fn twox_64_concat(&self) -> Vec<u8, Global> ⓘ
fn identity(&self) -> Vec<u8, Global> ⓘ
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>,
§impl<T> KeyedVec for Twhere
T: Codec,
impl<T> KeyedVec for Twhere T: Codec,
§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 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>
self
from the equivalent element of its
superset. Read more§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
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
self.to_subset
but without any property checks. Always succeeds.§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self
to the equivalent element of its superset.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 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
.