7

On empty blocks you can see enter image description here such transactions where paysFee: Yes. What does it mean though? Who is paying the fees for the timestamp module?

1 Answer 1

7

timestamp.set is an unsigned extrinsic:

pub fn set(origin: OriginFor<T>, #[pallet::compact] now: T::Moment) -> DispatchResult {
    ensure_none(origin)?;
    ...
}

So even though the UI reports paysFee: Yes, there is actually no fee being taken:

You can see some of that logic being represented here:

/// Query the detailed fee of a given `call`.
pub fn query_fee_details<Extrinsic: sp_runtime::traits::Extrinsic + GetDispatchInfo>(
    unchecked_extrinsic: Extrinsic,
    len: u32,
) -> FeeDetails<BalanceOf<T>>
where
    T::Call: Dispatchable<Info = DispatchInfo>,
{
    let dispatch_info = <Extrinsic as GetDispatchInfo>::get_dispatch_info(&unchecked_extrinsic);

    let tip = 0u32.into();

    if unchecked_extrinsic.is_signed().unwrap_or(false) {
        Self::compute_fee_details(len, &dispatch_info, tip)
    } else {
        // Unsigned extrinsics have no inclusion fee.
        FeeDetails { inclusion_fee: None, tip }
    }
}

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.