Enum serp_example_ocw::Call [−][src]
Dispatchable calls.
Each variant of this enum maps to a dispatchable function from the associated module.
Variants
submit_price(u32)
Submit new price to the list.
This method is a public function of the module and can be called from within
a transaction. It appends given price
to current list of prices.
In our example the offchain worker
will create, sign & submit a transaction that
calls this function passing the price.
The transaction needs to be signed (see ensure_signed
) check, so that the caller
pays a fee to execute it.
This makes sure that it’s not easy (or rather cheap) to attack the chain by submitting
excesive transactions, but note that it doesn’t ensure the price oracle is actually
working and receives (and provides) meaningful data.
This example is not focused on correctness of the oracle itself, but rather its
purpose is to showcase offchain worker capabilities.
submit_price_unsigned(T::BlockNumber, u32)
Submit new price to the list via unsigned transaction.
Works exactly like the submit_price
function, but since we allow sending the
transaction without a signature, and hence without paying any fees,
we need a way to make sure that only some transactions are accepted.
This function can be called only once every T::UnsignedInterval
blocks.
Transactions that call that function are de-duplicated on the pool level
via validate_unsigned
implementation and also are rendered invalid if
the function has already been called in current “session”.
It’s important to specify weight
for unsigned calls as well, because even though
they don’t charge fees, we still don’t want a single block to contain unlimited
number of such transactions.
This example is not focused on correctness of the oracle itself, but rather its purpose is to showcase offchain worker capabilities.
submit_price_unsigned_with_signed_payload(PricePayload<T::Public, T::BlockNumber>, T::Signature)
Trait Implementations
impl<T: Trait> Clone for Call<T>
[src]
fn clone(&self) -> Self
[src]
pub fn clone_from(&mut self, source: &Self)
1.0.0[src]
impl<T: Trait> Debug for Call<T>
[src]
impl<T: Trait> Decode for Call<T> where
T::BlockNumber: Decode,
T::BlockNumber: Decode,
PricePayload<T::Public, T::BlockNumber>: Decode,
PricePayload<T::Public, T::BlockNumber>: Decode,
T::Signature: Decode,
T::Signature: Decode,
[src]
T::BlockNumber: Decode,
T::BlockNumber: Decode,
PricePayload<T::Public, T::BlockNumber>: Decode,
PricePayload<T::Public, T::BlockNumber>: Decode,
T::Signature: Decode,
T::Signature: Decode,
fn decode<__CodecInputEdqy: Input>(
__codec_input_edqy: &mut __CodecInputEdqy
) -> Result<Self, Error>
[src]
__codec_input_edqy: &mut __CodecInputEdqy
) -> Result<Self, Error>
impl<T: Trait> Encode for Call<T> where
T::BlockNumber: Encode,
T::BlockNumber: Encode,
PricePayload<T::Public, T::BlockNumber>: Encode,
PricePayload<T::Public, T::BlockNumber>: Encode,
T::Signature: Encode,
T::Signature: Encode,
[src]
T::BlockNumber: Encode,
T::BlockNumber: Encode,
PricePayload<T::Public, T::BlockNumber>: Encode,
PricePayload<T::Public, T::BlockNumber>: Encode,
T::Signature: Encode,
T::Signature: Encode,
fn encode_to<__CodecOutputEdqy: Output>(
&self,
__codec_dest_edqy: &mut __CodecOutputEdqy
)
[src]
&self,
__codec_dest_edqy: &mut __CodecOutputEdqy
)
pub fn size_hint(&self) -> usize
[src]
pub fn encode(&self) -> Vec<u8, Global>
[src]
pub fn using_encoded<R, F>(&self, f: F) -> R where
F: FnOnce(&[u8]) -> R,
[src]
F: FnOnce(&[u8]) -> R,
impl<T: Trait> EncodeLike<Call<T>> for Call<T> where
T::BlockNumber: Encode,
T::BlockNumber: Encode,
PricePayload<T::Public, T::BlockNumber>: Encode,
PricePayload<T::Public, T::BlockNumber>: Encode,
T::Signature: Encode,
T::Signature: Encode,
[src]
T::BlockNumber: Encode,
T::BlockNumber: Encode,
PricePayload<T::Public, T::BlockNumber>: Encode,
PricePayload<T::Public, T::BlockNumber>: Encode,
T::Signature: Encode,
T::Signature: Encode,
impl<T: Trait> Eq for Call<T>
[src]
impl<T: Trait> GetCallName for Call<T>
[src]
fn get_call_name(&self) -> &'static str
[src]
fn get_call_names() -> &'static [&'static str]ⓘ
[src]
impl<T: Trait> GetDispatchInfo for Call<T>
[src]
fn get_dispatch_info(&self) -> DispatchInfo
[src]
impl<T: Trait> PartialEq<Call<T>> for Call<T>
[src]
impl<T: Trait> UnfilteredDispatchable for Call<T>
[src]
type Origin = T::Origin
The origin type of the runtime, (i.e. frame_system::Trait::Origin
).
fn dispatch_bypass_filter(
self,
_origin: Self::Origin
) -> DispatchResultWithPostInfo
[src]
self,
_origin: Self::Origin
) -> DispatchResultWithPostInfo
Auto Trait Implementations
impl<T> RefUnwindSafe for Call<T> where
T: RefUnwindSafe,
<T as Trait>::BlockNumber: RefUnwindSafe,
<T as SigningTypes>::Public: RefUnwindSafe,
<T as SigningTypes>::Signature: RefUnwindSafe,
T: RefUnwindSafe,
<T as Trait>::BlockNumber: RefUnwindSafe,
<T as SigningTypes>::Public: RefUnwindSafe,
<T as SigningTypes>::Signature: RefUnwindSafe,
impl<T> Send for Call<T> where
T: Send,
<T as SigningTypes>::Public: Send,
<T as SigningTypes>::Signature: Send,
T: Send,
<T as SigningTypes>::Public: Send,
<T as SigningTypes>::Signature: Send,
impl<T> Sync for Call<T> where
T: Sync,
<T as SigningTypes>::Public: Sync,
<T as SigningTypes>::Signature: Sync,
T: Sync,
<T as SigningTypes>::Public: Sync,
<T as SigningTypes>::Signature: Sync,
impl<T> Unpin for Call<T> where
T: Unpin,
<T as Trait>::BlockNumber: Unpin,
<T as SigningTypes>::Public: Unpin,
<T as SigningTypes>::Signature: Unpin,
T: Unpin,
<T as Trait>::BlockNumber: Unpin,
<T as SigningTypes>::Public: Unpin,
<T as SigningTypes>::Signature: Unpin,
impl<T> UnwindSafe for Call<T> where
T: UnwindSafe,
<T as Trait>::BlockNumber: UnwindSafe,
<T as SigningTypes>::Public: UnwindSafe,
<T as SigningTypes>::Signature: UnwindSafe,
T: UnwindSafe,
<T as Trait>::BlockNumber: UnwindSafe,
<T as SigningTypes>::Public: UnwindSafe,
<T as SigningTypes>::Signature: UnwindSafe,
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> CheckedConversion for T
[src]
pub fn checked_from<T>(t: T) -> Option<Self> where
Self: TryFrom<T>,
[src]
Self: TryFrom<T>,
pub fn checked_into<T>(self) -> Option<T> where
Self: TryInto<T>,
[src]
Self: TryInto<T>,
impl<S> Codec for S where
S: Decode + Encode,
[src]
S: Decode + Encode,
impl<T> DecodeAll for T where
T: Decode,
[src]
T: Decode,
impl<T> DecodeLimit for T where
T: Decode,
[src]
T: Decode,
pub fn decode_all_with_depth_limit(limit: u32, input: &[u8]) -> Result<T, Error>
[src]
pub fn decode_with_depth_limit(limit: u32, input: &[u8]) -> Result<T, Error>
[src]
impl<T> DynClone for T where
T: Clone,
[src]
T: Clone,
pub fn __clone_box(&self, Private) -> *mut ()
[src]
impl<'_, '_, T> EncodeLike<&'_ &'_ T> for T where
T: Encode,
[src]
T: Encode,
impl<'_, T> EncodeLike<&'_ T> for T where
T: Encode,
[src]
T: Encode,
impl<'_, T> EncodeLike<&'_ mut T> for T where
T: Encode,
[src]
T: Encode,
impl<T> EncodeLike<Arc<T>> for T where
T: Encode,
[src]
T: Encode,
impl<T> EncodeLike<Box<T, Global>> for T where
T: Encode,
[src]
T: Encode,
impl<'a, T> EncodeLike<Cow<'a, T>> for T where
T: ToOwned + Encode,
[src]
T: ToOwned + Encode,
impl<T> EncodeLike<Rc<T>> for T where
T: Encode,
[src]
T: Encode,
impl<T> From<T> for T
[src]
impl<S> FullCodec for S where
S: Decode + FullEncode,
[src]
S: Decode + FullEncode,
impl<S> FullEncode for S where
S: Encode + EncodeLike<S>,
[src]
S: Encode + EncodeLike<S>,
impl<T> Hashable for T where
T: Codec,
[src]
T: Codec,
pub fn blake2_128(&self) -> [u8; 16]
[src]
pub fn blake2_256(&self) -> [u8; 32]
[src]
pub fn blake2_128_concat(&self) -> Vec<u8, Global>
[src]
pub fn twox_128(&self) -> [u8; 16]
[src]
pub fn twox_256(&self) -> [u8; 32]
[src]
pub fn twox_64_concat(&self) -> Vec<u8, Global>
[src]
pub fn identity(&self) -> Vec<u8, Global>
[src]
impl<T> Instrument for T
[src]
pub fn instrument(self, span: Span) -> Instrumented<Self>
[src]
pub fn in_current_span(self) -> Instrumented<Self>
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> IsType<T> for T
[src]
pub fn from_ref(t: &T) -> &T
[src]
pub fn into_ref(&self) -> &T
[src]
pub fn from_mut(t: &mut T) -> &mut T
[src]
pub fn into_mut(&mut self) -> &mut T
[src]
impl<T, Outer> IsWrappedBy<Outer> for T where
T: From<Outer>,
Outer: AsRef<T> + AsMut<T> + From<T>,
[src]
T: From<Outer>,
Outer: AsRef<T> + AsMut<T> + From<T>,
pub fn from_ref(outer: &Outer) -> &T
[src]
Get a reference to the inner from the outer.
pub fn from_mut(outer: &mut Outer) -> &mut T
[src]
Get a mutable reference to the inner from the outer.
impl<T> KeyedVec for T where
T: Codec,
[src]
T: Codec,
impl<T> MaybeDebug for T where
T: Debug,
T: Debug,
impl<T> MaybeDebug for T where
T: Debug,
T: Debug,
impl<T> MaybeRefUnwindSafe for T where
T: RefUnwindSafe,
T: RefUnwindSafe,
impl<T> Member for T where
T: 'static + Send + Sync + Debug + Eq + PartialEq<T> + Clone,
[src]
T: 'static + Send + Sync + Debug + Eq + PartialEq<T> + Clone,
impl<T> Parameter for T where
T: Codec + EncodeLike<T> + Clone + Eq + Debug,
[src]
T: Codec + EncodeLike<T> + Clone + Eq + Debug,
impl<T> Same<T> for T
type Output = T
Should always be Self
impl<T> SaturatedConversion for T
pub fn saturated_from<T>(t: T) -> Self where
Self: UniqueSaturatedFrom<T>,
Self: UniqueSaturatedFrom<T>,
pub fn saturated_into<T>(self) -> T where
Self: UniqueSaturatedInto<T>,
Self: UniqueSaturatedInto<T>,
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
pub fn to_owned(&self) -> T
[src]
pub fn clone_into(&self, target: &mut T)
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
pub fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<S, T> UncheckedInto<T> for S where
T: UncheckedFrom<S>,
[src]
T: UncheckedFrom<S>,
pub fn unchecked_into(self) -> T
[src]
impl<T, S> UniqueSaturatedInto<T> for S where
T: Bounded,
S: TryInto<T>,
T: Bounded,
S: TryInto<T>,
pub fn unique_saturated_into(self) -> T
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
V: MultiLane<T>,