Transactions, UTXOs & fees

Lesson 3 of 11 12 min read Dogecoin Foundations

Dogecoin has no account balances. That sentence surprises everyone the first time. What the chain actually stores is a pile of spendable coins – UTXOs – and a "balance" is just the sum of the ones your keys can unlock. Get this model into your head and transactions stop being mysterious.

The UTXO mental model

A UTXO (unspent transaction output) is like a banknote with a value printed on it: 12.5 DOGE, 300 DOGE, whatever it was created with. A transaction consumes whole banknotes and prints new ones:

Transaction anatomy
  inputs:   which existing UTXOs am I spending? (+ signatures proving I may)
  outputs:  new UTXOs - who gets how much
  fee:      inputs total - outputs total (implicit; miners keep it)

Because you must spend banknotes whole, almost every transaction pays change back to yourself. Send 50 DOGE using a 200 DOGE UTXO and the transaction has two outputs: 50 to the recipient, ~149.99 back to a change address your wallet controls. This is why wallet balances briefly look wrong after sending – the change hasn't confirmed yet.

Fees: priced per kilobyte, not per amount

Sending 1 DOGE and sending 1 million DOGE can cost the same fee. Fees are priced by transaction size in bytes, because block space is the scarce resource. A transaction with many inputs (lots of small banknotes) is physically bigger and costs more than one spending a single large input.

Since the 1.14.4 release lowered fee defaults, typical recommended fees are around 0.01 DOGE per kilobyte, with a dust threshold (smallest useful output) around 0.01 DOGE. A normal one-input-two-output transaction is a few hundred bytes – well under one DOGE in fees. Don't hard-code these numbers: ask your node at runtime.

$ dogecoin-cli getnetworkinfo   # look at "relayfee"
$ dogecoin-cli estimatefee 6    # fee rate targeting ~6 blocks

Dogecoin Core's wallet handles coin selection, change, and fee calculation for you when you use sendtoaddress. You only manage UTXOs by hand when building raw transactions (createrawtransactionsignrawtransactionsendrawtransaction) – a power tool you'll rarely need in this curriculum, but now you know what it's doing.

Confirmations: how long is "final"?

A transaction in the mempool (zero confirmations) is a promise, not a payment – it can still be replaced or dropped. Each block mined on top adds one confirmation and makes reversal exponentially harder. Dogecoin's one-minute blocks mean confirmations arrive fast, and merge-mined Scrypt hashrate makes deep reorganizations expensive.

Working guidance used across this curriculum:

SituationWait for
Showing "payment seen" UI feedback0 conf (display only – never credit)
Small amounts: tips, low-price digital goods1–2 confirmations (~1–2 min)
Meaningful amounts: store orders, balances6 confirmations (~6 min)
Large withdrawals / anything irreversible on your side12+ confirmations

The pattern to remember: credit on confirmations, deliver on more confirmations, and scale the wait to what you lose if it reverses.

Two more facts that save debugging hours

  • Dogecoin uses legacy Bitcoin-style transactions. No SegWit, no Taproot, no bech32 addresses. If a Bitcoin library or tutorial mentions those, that part does not apply to Dogecoin.
  • OP_RETURN outputs let a transaction carry a small data payload. Useful for anchoring hashes or receipts on-chain; not a file system. Keep payloads tiny and expect the standard relay rules to limit size.

Key takeaways

  • The chain stores UTXOs, not balances; transactions consume and create them, with change back to you.
  • Fees are per kilobyte of transaction size (~0.01 DOGE/kB era defaults) – query the node, don't hard-code.
  • Zero-conf is a promise; credit at 1–2 conf for small things, 6+ when it matters.
  • Legacy serialization only – skip anything SegWit/Taproot-specific in Bitcoin tutorials.
On the map

Built something on Dogecoin? Put it on the map.

The directory is the page people link when someone says Dogecoin has no developers. If you maintain a library, wallet, tool, or app – even a small one – it belongs here.