Toccata 101 · Part 1 · card 3

Fee and mass: why a very small output costs more

The fee is a price per gram of weight, and a very small new piece of KAS weighs a lot.

A Kaspa transaction is weighed in grams, and the fee is a price per gram: 100 sompi a gram today, a hundred-millionth of a KAS each. A plain payment (one UTXO in, two UTXOs out) weighs about two thousand grams and costs a fraction of a cent.

Two things go on the scale. The first is size: the bytes and the checking work, the same for 10 KAS and for 10,000. The second is storage. Every piece of KAS you create is a UTXO that every node keeps for as long as it exists, so the network prices it. A big piece is light. A small piece is heavy, and the weight climbs fast as the piece shrinks. Carving 1 KAS out of a large piece adds ten thousand grams. 0.1 KAS adds a hundred thousand, and the fee equals the amount. At 0.02 KAS you reach the most a block can hold. Below that, the nodes refuse the transaction, whatever fee you offer.

The heavier of the two weights sets the fee. Spending small pieces you already hold, or merging them, takes weight off the scale. Your wallet does the weighing and picks the pieces. You only feel it when you ask for a very small piece.

The piece you create

Carve this out of a large piece1KAS
0.01 KAS0.1110 KAS
storage weight10,001 g
size weight2,047 g
fee0.01 KAS1% of the piece
1,000 g10,000100,000500,000, the most a block can hold500,000

One piece carved out of a 313 KAS piece, the shape of a real send from 6 September 2026: one input, two outputs, size weight 2,047 grams. The storage weight is the node's formula. Fee at 100 sompi a gram.

Look at it on chain

Three transactions from 6 September 2026, all at 100 sompi a gram. The explorer's "mass" is the size weight. The storage weight is not shown there, it shows up in the fee.

  1. Carving 0.3 KAS out of a 313 KAS piece. Size 2,047 grams, storage 33,333 grams, fee 0.03333 KAS. 60a2f205…3f145914
  2. Moving a 0.3 KAS piece whole, one in and one out. Storage 203 grams, size 1,813 grams, fee 0.00181 KAS. Same piece size, eighteen times less. 2436d2fc…f7501f3d
  3. Merging five small pieces into 3 KAS and change. Storage 0, size 6,519 grams, fee 0.00652 KAS. b8c98865…21098b842

Sources

The storage weight is KIP-9 (kaspanet/kips, kip-0009): for each output about 1012 divided by its value in sompi, minus a relief for the pieces spent, in rusty-kaspa v2.0.1 consensus/core/src/mass/mod.rs (calc_storage_mass) with STORAGE_MASS_PARAMETER = SOMPI_PER_KASPA × 10,000 in constants.rs. A block holds at most 500,000 grams of storage weight (config/params.rs) and the mempool refuses a transaction above it (mining/src/mempool/check_transaction_limits.rs). The relay floor is 100 sompi per gram of size weight (check_transaction_standard.rs), and the network's fee estimate returned 100 sompi per gram in every bucket on 6 September 2026 (api.kaspa.org/info/fee-estimate). The reference wallet pays the rate times the heavier of the two weights (wallet/core/src/tx/generator/generator.rs, calc_transaction_fees). The three transactions above were read from api.kaspa.org on 6 September 2026, their storage weight recomputed with the formula and matched to their fees to the sompi.