A Bitcoin transaction is a signed message that tells the network to move a specific amount of bitcoin from one address to another. Unlike a bank transfer that adjusts account balances in a central database, Bitcoin transactions consume previous outputs and create new ones, all verified by a decentralized network of computers. The process involves assembling the right inputs, signing the transaction with a private key, broadcasting it to the network, and waiting for miners to confirm it in a block.
Inputs, Outputs, and Digital Change
Bitcoin doesn’t track balances the way a bank does. Instead, it uses a system called the UTXO model, where UTXO stands for unspent transaction output. Every time you receive bitcoin, the network creates a UTXO locked to your address. Your wallet’s “balance” is really just the sum of all the UTXOs you control.
When you send bitcoin, your wallet selects one or more UTXOs as inputs and creates new outputs for the recipient. This works a lot like paying with physical cash. If you owe someone 0.5 BTC and you hold a single UTXO worth 1 BTC, the transaction consumes that entire 1 BTC UTXO and creates two new outputs: 0.5 BTC to the recipient and roughly 0.5 BTC back to you as change (minus the transaction fee). The original 1 BTC UTXO is now “spent” and can never be used again. Your change becomes a brand new UTXO you can spend later.
It’s rare for a sender to hold a UTXO that matches the exact payment amount. Most transactions therefore produce at least two outputs: one for the recipient and one for change. Transactions with many small inputs (like consolidating lots of tiny payments you’ve received) are physically larger in data terms, which matters when it comes to fees.
How Transactions Get Authorized
Before the network will accept your transaction, you need to prove you own the UTXOs you’re trying to spend. This happens through public key cryptography. When you first set up a Bitcoin wallet, it generates a pair of keys: a private key (a secret number only you should ever have) and a corresponding public key (which derives your Bitcoin address). The private key signs transactions. The public key lets anyone verify that the signature is valid without ever seeing the private key itself.
When your wallet builds a transaction, it uses your private key to produce a digital signature over the transaction data. The network’s nodes then check that signature against the public key associated with the UTXO being spent. If the math checks out, the transaction is considered authorized. If anyone alters even a single character of the transaction after signing, the signature becomes invalid, so the system is tamper-proof by design.
Bitcoin uses a specific signature algorithm called ECDSA (Elliptic Curve Digital Signature Algorithm), along with a newer option called Schnorr signatures introduced with the Taproot upgrade. Both accomplish the same goal: proving ownership without revealing the private key. Each signature is 65 bytes, small enough to fit compactly inside a transaction but mathematically strong enough that forging one is computationally impossible with current technology.
From Your Wallet to the Mempool
Once your wallet signs a transaction, it broadcasts the data to Bitcoin nodes, the computers running the Bitcoin software around the world. Each node that receives it checks whether the transaction is valid: Are the inputs real, unspent UTXOs? Is the signature correct? Does the math add up (inputs minus outputs equals the fee, with no bitcoin created from thin air)?
If a node accepts the transaction, it places it into its mempool, a waiting area of unconfirmed transactions. The node also relays the transaction to other nodes, which run the same checks and add it to their own mempools. Within seconds, your transaction has propagated across the global network, but it isn’t final yet. It sits in the mempool until a miner picks it up.
Mining and Confirmation
Miners are specialized computers competing to add the next block of transactions to the blockchain. They pull unconfirmed transactions from the mempool, bundle them into a candidate block, and then race to solve a computationally intensive puzzle. The first miner on the network to find a valid solution gets to publish the block and earns both the block reward (newly created bitcoin) and all the transaction fees from the transactions included in that block.
Once your transaction is included in a mined block, it has one confirmation. As additional blocks are mined on top of that block, each one adds another confirmation. Most wallets and exchanges consider a transaction reasonably secure after three to six confirmations. Since a new block is mined roughly every 10 minutes on average, a transaction with six confirmations is about an hour old.
A transaction with zero confirmations (still in the mempool) could theoretically be double-spent. That’s why merchants accepting large payments typically wait for at least one confirmation before considering the payment settled.
How Fees Are Calculated
Bitcoin transaction fees don’t depend on the dollar amount you’re sending. You can send $10 or $10 million and pay the same fee. What determines the fee is how much block space your transaction occupies, measured in virtual bytes (vB). A simple transaction with one input and two outputs might be around 140 vB. A complex transaction consolidating dozens of small UTXOs could be over 1,000 vB.
The fee rate is expressed in satoshis per virtual byte (sats/vB). One satoshi is 0.00000001 BTC, the smallest unit of bitcoin. You calculate the total fee by multiplying your transaction’s size in vB by the fee rate you choose. For example, a 140 vB transaction at a fee rate of 20 sats/vB would cost 2,800 satoshis.
Fee rates fluctuate based on demand for block space. When the network is busy, users bid higher fee rates to get confirmed quickly, and rates can spike dramatically. When traffic is light, you can get confirmed for just a few sats/vB. Your wallet typically suggests a fee rate based on current mempool conditions, often giving you options for fast, medium, or slow confirmation. Choosing a lower rate means your transaction may sit in the mempool for hours or even days during congested periods. Setting the fee too low risks the transaction being dropped from mempools entirely if nodes run out of memory.
Transaction Formats: Legacy, SegWit, and Taproot
Not all Bitcoin transactions are structured the same way. Over the years, the protocol has introduced upgraded formats that use block space more efficiently, which translates directly into lower fees for you.
Legacy transactions are the original format. They bundle everything together: version info, inputs (including the signature data that authorizes the spend), outputs, and a locktime field. One problem with this format is that certain parts of the signature data could be modified without invalidating the transaction, a quirk called transaction malleability. This made building more advanced features on top of Bitcoin unreliable.
Segregated Witness (SegWit), activated in 2017, fixed this by moving signature data out of the main transaction body and into a separate “witness” field. This change eliminated malleability and, as a bonus, reduced the effective size of transactions. The witness data is discounted when calculating virtual bytes, so SegWit transactions cost less in fees than legacy transactions carrying the same economic information. If your wallet gives you an address starting with “bc1q,” you’re using SegWit.
Taproot, activated in late 2021, pushed efficiency further. It introduced Schnorr signatures, which are smaller and allow multiple signatures to be aggregated into one. It also introduced Merkelized Abstract Syntax Trees (MAST), a structure that lets complex spending conditions (like multisignature setups or time-locked contracts) be represented compactly. With MAST, only the spending condition actually used needs to be revealed on the blockchain, not all possible conditions. Taproot addresses start with “bc1p” and generally offer the lowest fees for standard transactions.
If you’re setting up a new wallet, choosing a SegWit or Taproot address format will save you money on every transaction compared to legacy addresses.
What a Transaction Looks Like on the Blockchain
Every confirmed Bitcoin transaction is permanently recorded on the blockchain, a public ledger anyone can inspect. Using a block explorer (a website that lets you search the blockchain), you can look up any transaction by its transaction ID, a unique identifier generated when the transaction is created.
A typical transaction record shows the inputs (which UTXOs were consumed), the outputs (who received bitcoin and how much), the fee paid, the block number it was confirmed in, and a timestamp. You’ll see Bitcoin addresses rather than real names, so while the transaction data is public, it isn’t directly tied to personal identities.
Each output in a confirmed transaction becomes a new UTXO, ready to be spent by its new owner. And when that owner eventually spends it, the cycle starts again: their wallet selects the UTXO as an input, signs the transaction, broadcasts it, and waits for a miner to confirm it in a block. This chain of inputs and outputs, stretching back to the moment each bitcoin was originally mined, is what gives the system its name.

