Summary
Fees are paid in native DMS (18 decimals), calculated from a transaction's
weight and byte length rather than a flat per-signature charge. Real fee
estimates are available before signing via payment_queryInfo.
Fee calculation
EmpoorioChain uses the standard Substrate pallet-transaction-payment
model, configured as:
impl pallet_transaction_payment::Config for Runtime {// ...OperationalFeeMultiplier = ConstU8<5>,WeightToFee = IdentityFee<Balance>,LengthToFee = IdentityFee<Balance>,// ...}
The total fee combines two components:
- Weight fee: derived from the computational weight of executing the call — how expensive it is for the runtime to process, not a fixed per-signature charge.
- Length fee: derived from the transaction's byte length, using
TransactionByteFee.
Both native pallet extrinsics and Solidity (EVM) transactions settle fees in
the same native DMS Balances pallet — there is no separate gas token.
DMS decimals
DMS uses 18 decimals:
pub const DMS_UNIT: u128 = 1_000_000_000_000_000_000; // 10^18
Real fee estimation before signing
The node's RPC surface registers
pallet_transaction_payment_rpc::TransactionPaymentRuntimeApi, so
payment_queryInfo and payment_queryFeeDetails return a real,
pre-signature fee estimate for a given call — this isn't a simulated or
aspirational feature.
Measured fee snapshot (testnet)
The table below reflects a real measured fee snapshot taken from testnet. Treat it as illustrative — fees can change as the runtime is upgraded — but these are actual observed costs, not estimates:
| Operation | Extrinsic | Fee (DMS) |
|---|---|---|
| DMS transfer | balances.transfer_allow_death | 0.000025 |
| Mint single NFT | musicNft.mint_track | 0.000075 |
| Batch mint (10) | musicNft.mint_track_batch | 0.000280 |
| Create NFT collection | uniques.create | 0.000120 |
| DEX swap | dex.swap | 0.000180 |
| Lending deposit | lending.deposit | 0.000150 |
| AI inference (ZK Groth16 verify) | aiServing.submit_inference_result | 0.003500 |
An earlier version of this snapshot also listed a
contracts.instantiate_with_code row ("WASM smart contract deployment").
That row has been removed here: as covered in
Programs, pallet-contracts is not currently wired
into the compiled runtime, so WASM contract deployment isn't a real,
chargeable operation today. Don't rely on a fee figure for it.
Fee-reduction mechanisms
Several pallets exist specifically to reduce or restructure who pays a given fee:
pallet-account-abstraction+pallet-paymaster: native fee sponsorship (gasless transactions), letting a third party cover a user's fee. Both are compiled and connected in the runtime, but this feature is documented as only partially hardened — deep, universal validation of paymaster policy before pre-dispatch is still described as missing in the project's own capability status. Don't assume every sponsorship path is fully safe against abuse yet.pallet-creator-studio-fees: up to a 50% fee discount tied to Proof-of-Unique-Human / SSI reputation.pallet-state-rent: storage rent intended to keep base fees flat over time as chain state grows.
What's still undecided
The distribution of collected fees — how much (if any) is burned versus sent to the treasury versus validators versus tips — is an explicitly open, unresolved item in the project's own runtime planning documents. Don't publish or rely on a specific fee-distribution split; only "fees are charged, denominated in DMS, and calculated from weight and length" is currently confirmed.
Is this page helpful?


