Does Solidus Have Gas Fees? No, and Reading the Fee Schedule Alone Gives You the Wrong Answer
The short answer
There is no gas. No metered execution, no gas limit, no price you bid, and no gas field on a block: a block carries a height, a parent, a proposer, a round, a state root, timestamps, its transactions and a count, and nothing about gas at all.
What exists instead is a flat schedule. Each kind of operation has one fee, fixed in the code, and that is what it costs. A transfer costs the same whether the chain is busy or idle.
And here is the trap, which this estate nearly fell into
The fee table defines a fee for every operation type, including creating an identifier, updating one, deactivating one, recovering one, issuing a credential and revoking one.
A separate predicate then exempts all seven of those. The executor asks whether the payload is exempt first, and uses zero when it is.
So seven operations have a named fee constant that is never charged. Reading the schedule alone tells you identifier recovery costs something. It does not.
CORRECTION, 2026-08-02: it is EIGHT, not seven, and the eighth is not an identifier operation. Registering a compute node is exempt too, on the chain that is actually running. The error was ours and its cause is worth publishing: we read the exemption list in a second, newer copy of the executor whose comment says it was ported verbatim from the live one. It was not. A comment claiming a verbatim port is not a verbatim port, and the live call site is the only authority.
This estate nearly published exactly that error, from exactly that constant, and the exemption list is what settled it. A fee table is not a fee, and neither half of this pair is the answer on its own.
What is actually free, and the reason given
Identifier operations and issuer credential operations are exempt.
The code states why: the signer of such a transaction is an identifier anchor, or in the creation case a fresh key becoming one, and anchors are value-free by construction.
That is a real design constraint rather than a discount, and it connects to a rule elsewhere in this chain: an identifier anchor cannot hold a balance. A party that cannot hold value cannot be asked to pay a fee, so exempting it is the only coherent option.
What actually charges
Value transfers, the two staking operations, and the compute operations OTHER than registration. CORRECTED 2026-08-02: registering a compute node is exempt on the live chain, so it belongs above rather than here. Those are the payload types the exemption predicate does not name, so they pay the scheduled amount.
Where the failure paths charge nothing
The pipeline is ordered so that three different failures cost the sender nothing: a bad signature, a wrong counter value, and a balance that does not cover the fee. Each returns a receipt with fee zero and writes no state.
The fee is only debited after all three checks pass, which is the correct ordering and is readable in one function.
One thing a reader of the explorer should know
If you have seen a gas figure on this project's block list, it did not come from the chain.
A live block has no gas field. The block list has rendered seeded demonstration data, and a gas number is one of the things that data showed. A field the chain does not have cannot be reported from it.
What you can check yourself
Fetch a block and list its keys:
solidus_getBlockwith a height
Count the fields. There is no gas among them. And note the block's round number, which is not its height, so do not read one as the other.
Keep reading
- The Validator Committee: The Spec Says Twenty-One, the Registry Says Five, and Four Actually Propose
- Reading the Network Stats Dashboard: The Milestones Now Check Out, and Two Tiles Should Not Exist
- The Nonce That Stops a Replayed Transaction: Strict Equality, and a Failure That Costs Nothing
- Anatomy of a Transaction: One Real Failed Transfer, Read End to End

