Kaspa doesn't charge by byte count alone. Every transaction is measured on three limits, compute, storage, and transient (proof data), and charged by whichever is largest, never the sum. Build one below and see which limit binds.
Build the transaction
Script per input
Mass, per block limit
0 TPS at 10 blocks/second
0 transactions of this shape fit per block, on the dimension that binds.
Show the mass formulas
Transaction size
size = 94 (fixed header: version, in/out counts, locktime, subnetwork id, gas, payload hash, payload length) + payload_bytes + inputs × (118 fixed bytes: outpoint 36, sig-script length field 8, signature script ~66, sequence 8; +2 if covenant/v1) + outputs × (52 fixed bytes (value 8, version 2, script-length field 8, P2PK-style script 34) + 34 per output, if that output carries a covenant id)Compute mass
compute_mass = size × mass_per_tx_byte (1) + Σ(2 + output_script_len) × mass_per_script_pub_key_byte (10) + script_mass script_mass = inputs × 1 sigop × GRAMS_PER_SIGOP_COUNT_UNIT (1000) [simple] = inputs × compute_budget_units × GRAMS_PER_COMPUTE_BUDGET_UNIT (100) [covenant]Transient mass
transient_mass = size × TRANSIENT_BYTE_TO_MASS_FACTOR (4)Storage mass (KIP-0009)
C = STORAGE_MASS_PARAMETER (1,000,000,000,000) utxo_plurality(output) = ceil((63 + script_bytes + 32 if covenant else 0) / 100) A P2PK-style output (script 34) has plurality 1. A covenant-carrying output (63 + 34 + 32 = 129 bytes) crosses the 100-byte unit and has plurality 2, which squares its weight below. storage_mass = max(0, outputs × plurality² × C / out_amount_sompi − inputs × C / in_amount_sompi) in_amount_sompi assumes no fee: total out value split evenly across inputs.Which dimension binds
Compute and storage share a 500,000 block-mass limit; transient's limit is 1,000,000, so it is normalized to the same scale before comparison: transient_norm = transient_mass × 500,000/1,000,000. tx_mass = max(compute_mass, storage_mass, transient_norm) tx_per_block = floor(500,000 / tx_mass) TPS = tx_per_block × 10 blocks/secondThis models a standard Schnorr P2PK-style input/output shape and assumes value is conserved with no fee. Real network TPS is lower once relay policy, fee markets, and mempool behavior are added on top of this pure mass ceiling.
Formulas verified against rusty-kaspa mass code, consensus params, and core constants. Offline calculator, no network requests.