On empty blocks you can see such transactions where
paysFee: Yes
. What does it mean though? Who is paying the fees for the timestamp module?
1 Answer
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 }
}
}