What Are Network Fees?
Learn what network fees are, why blockchains charge them, how Bitcoin and Ethereum fee markets work, and what determines transaction cost.

Introduction
Network fees are the payments users make to have a blockchain transaction processed and included onchain. They matter because a blockchain cannot include every pending transaction at once: block space is limited, execution capacity is limited, and someone has to decide which transactions are worth including first.
That basic constraint explains almost everything people find confusing about fees. Why can sending 0.01 BTC sometimes cost more than sending 1 BTC? Why can a failed Ethereum transaction still consume money? Why do wallets talk about fee rate, gas, priority fee, mempool, or replace-by-fee instead of just showing a simple price? The answer is that blockchains do not primarily charge for value transferred. They charge for network resources consumed under scarcity.
If you keep that idea in view, the rest becomes much easier. A network fee is not mainly a payment for moving coins from A to B. It is a bid for inclusion in a shared system where many users are competing for limited throughput. Different chains measure that throughput differently, but the economic problem is the same.
Why do blockchains charge network fees?
A blockchain without fees would have a hard problem: anyone could submit endless transactions and force the network to spend storage, bandwidth, and computation on them. Fees are the mechanism that makes abuse expensive. They also create compensation for the party that includes transactions in blocks; miners in proof-of-work systems, validators or block proposers in proof-of-stake systems.
Here is the mechanism. Each node that receives an unconfirmed transaction has to validate it, store it in memory if it chooses to keep it, relay it onward, and potentially compete to include it in a block. Those are real resource costs. If submitting transactions were free, the network would be open not just to ordinary usage but to unlimited spam. A fee forces the sender to reveal something important: how much they value inclusion relative to everyone else.
That makes fees both a security tool and an allocation tool. They help defend the network from junk traffic, and they help allocate scarce block space when demand exceeds supply. When blocks are mostly empty, the allocation problem is weak and fees can be low. When blocks are full, users effectively bid against each other.
This is also why network fees are often confused with exchange fees even though they are fundamentally different. An exchange fee is charged by a platform for providing a service. A network fee is paid for consuming shared protocol capacity. On many chains, the recipient is not the app or exchange you are using but the miners, validators, or the protocol itself, depending on the fee design.
Do blockchain fees depend on the amount sent or on network resource use?
The most important thing to understand is that blockchain fees usually do not scale with the monetary amount being sent. They scale with the burden the transaction places on the network and with current demand for inclusion.
In Bitcoin, that burden is tied mainly to transaction size as measured for block inclusion. The evidence here is straightforward: Bitcoin transaction fees are paid based on the total byte size of the signed transaction, and fee rates rise when demand for block space rises. This is why a transaction sending a tiny amount can cost more than a transaction sending a large amount. If the first transaction has many inputs and is large in bytes, it can be more expensive to include than a simple payment with fewer inputs.
In Ethereum, the burden is measured differently. The network uses gas to measure computational effort. The fee paid is the amount of gas actually used multiplied by the price per unit of gas. That means the question is not “how much ETH is being transferred?” but “how much computation and state access does this transaction require, and what is the current price for that capacity?” A simple transfer and a complex smart-contract interaction live in very different cost worlds because they impose different execution loads.
So the right mental model is not shipping money like a bank wire. It is closer to buying priority in a congested compute-and-data market. That analogy explains why fees respond to network activity and transaction complexity. It fails, however, if taken too literally, because blockchains also embed protocol rules, mempool policy, and incentive design that are more specific than a generic compute marketplace.
How are Bitcoin transaction fees calculated?
Bitcoin’s fee model becomes intuitive once you start from the UTXO structure. A Bitcoin transaction does not pull an arbitrary amount from an account balance. It spends one or more unspent transaction outputs, or UTXOs, in full. Because of that, fees emerge from the difference between what goes in and what comes out.
Suppose a wallet controls two UTXOs worth 30,000 and 20,000 satoshis, and the user wants to pay 40,000 satoshis. The transaction may spend both UTXOs, creating an output of 40,000 to the recipient and another output returning the leftover value back to the sender. That return output is called change. The fee is whatever value is left unassigned after outputs are set. Mechanically, inputs - outputs = fee.
This matters because transaction size depends heavily on how many inputs and outputs are involved. A wallet with many small UTXOs often creates a larger transaction than a wallet spending one larger UTXO, even if both users pay the same recipient amount. Since Bitcoin fees are driven by transaction size and current fee rate, fragmented coins can make a payment more expensive.
The change output is not a cosmetic detail; it is part of the fee story. Because UTXOs must be spent in full, a transaction either sends leftover value back as change or accidentally gives it to the miner as extra fee. Developer documentation is explicit about this: the full value of included UTXOs must be spent or given to a miner as a transaction fee. That is why wallets calculate change carefully and usually send it to a fresh address to avoid key reuse.
The fee users actually choose is typically a fee rate, often expressed in satoshis per virtual byte, or sat/vB. Virtual size matters because under SegWit rules witness data is discounted, so the size used for fee accounting is not always the raw serialized byte length. Bitcoin Core’s mempool reporting uses the sum of virtual transaction sizes as defined in BIP 141, which is another way of saying that the network’s accounting metric is a protocol-defined size notion, not merely a file size.
Once transactions are in the mempool, miners usually prioritize those paying higher fee rates, because block space is scarce and fees are revenue. Historically there were priority mechanisms tied to coin age, and Bitcoin reserved some block space for “high-priority” transactions in earlier defaults. But the cited developer material notes that this reserved area is now 0 KB by default, so practical prioritization is primarily fee-per-byte.
Why might a valid transaction not propagate or be relayed?
| Layer | Who sets it | Purpose | Effect on propagation | Guarantee |
|---|---|---|---|---|
| Consensus | Protocol rules | Define on-chain validity | Validity independent of propagation | Only final once included in a block |
| Node policy | Node operators | Protect resources; set relay rules | Nodes may reject or drop low-fee txs | No network-wide propagation guarantee |
| Miner selection | Miners / block proposers | Maximize block revenue | Prioritizes highest fee-rate txs | Inclusion depends on miner choice |
A common misunderstanding is that if a transaction is valid by consensus rules, it should automatically spread through the network and soon be mined. In practice, there is another layer in between: policy.
Bitcoin Core documentation defines policy as the node’s local set of validation rules, in addition to consensus, enforced for unconfirmed transactions before submitting them to the mempool. This distinction matters a great deal. Consensus determines whether a transaction can be accepted in a block. Policy determines whether a node is willing to keep and relay that transaction while it is still unconfirmed.
That means fees interact not only with protocol validity but with node behavior. A transaction can be consensus-valid yet unattractive to relay because its fee rate is too low, its outputs are dust-like under standardness rules, or the node’s mempool is under pressure. Policy is local and configurable, so different nodes can behave somewhat differently.
This is where terms like minrelaytxfee and mempoolminfee become useful. Bitcoin Core exposes both. minrelaytxfee is the current minimum relay fee for transactions. mempoolminfee is the effective minimum fee rate for a transaction to be accepted into the mempool, and it is the maximum of minrelaytxfee and the current minimum mempool fee. That second piece is important because under congestion the effective floor can rise above the static relay minimum.
So there are really two scarcity filters operating at once. The first is whether your transaction is willing to meet the node-level conditions for mempool admission and relay. The second is whether miners find its fee rate attractive enough for inclusion in a block. Those are related but not identical. The Bitcoin developer guide is explicit that miners ultimately choose the minimum transaction fee they will accept.
This is why a fee that is technically enough to propagate can still result in a very long wait. Relay acceptance is not a guarantee of timely inclusion. It just gets you into the waiting room.
A concrete Bitcoin fee example
Imagine the mempool is busy and most recent blocks are filled with transactions paying around 25 sat/vB or more. Your wallet builds a transaction that is 180 vB in size. If you set 10 sat/vB, the fee is 1,800 satoshis. If you set 30 sat/vB, the fee is 5,400 satoshis.
Nothing about the recipient amount changes this arithmetic. You could be sending the equivalent of ten dollars or ten million dollars; the network mainly sees a 180 vB object competing for inclusion. If miners are selecting the highest-paying transactions first, the 30 sat/vB version is much more likely to clear soon because it ranks better in the mempool by fee density.
Now change one assumption: instead of spending one clean UTXO, your wallet must combine many tiny ones. The transaction grows, perhaps to 450 vB. At the same 30 sat/vB, the fee becomes 13,500 satoshis. The payment amount could be unchanged, but your cost went up because the transaction consumed more scarce block space.
That is the mechanism in its simplest nontrivial form.
How do wallets estimate Bitcoin fees and how can you bump a stuck transaction?
| Method | Who initiates | Requirements | Miner incentive | Drawback |
|---|---|---|---|---|
| RBF | Sender | Original tx signaled replaceable | Higher replacement fee directly to miner | Recipients may distrust unconfirmed payment |
| CPFP | Receiver or sender | Child tx spends stuck output with high fee | Miner profits by including parent+child together | Requires spendable child output; higher total fees |
| Wait | Anyone | No action; rely on declining mempool demand | None | Potentially long and unpredictable delay |
Because demand changes block by block, wallets usually do not ask users to guess a fee rate manually. They estimate. Bitcoin Core’s estimatesmartfee RPC is designed to estimate the approximate fee per kilobyte needed for a transaction to begin confirmation within a chosen target number of blocks, using virtual transaction size as defined in BIP 141. The estimate can be more or less conservative depending on mode, and it may be unavailable if the node has not observed enough relevant history.
The deeper point is that fee setting is probabilistic, not guaranteed. A wallet is asking: *what fee rate has recently been sufficient to clear within roughly this waiting time? * That cannot be answered with certainty because future demand is unknown. So fee estimation is always partly statistical and partly a product of current mempool conditions.
If the original fee turns out to be too low, Bitcoin has ways to adjust. One is Replace-by-Fee, or RBF. Under opt-in full RBF, a spender can signal that a transaction is replaceable and later submit a replacement version with a higher fee. The signaling uses the nSequence field, and replacement requires the new transaction to pay at least the originals’ fee sum and also enough extra to satisfy relay conditions for its own bandwidth. In other words, replacement is not just editing metadata; it is a new economic bid.
Another mechanism is Child Pays for Parent, or CPFP, where a later transaction spending an output of the stuck transaction pays a high enough fee that miners find it profitable to include both together. The practical importance of package relay and package broadcast APIs comes from this fact: sometimes the right economic unit is not a single transaction but a small dependency cluster.
What is dust and why are tiny Bitcoin outputs often rejected?
Fees do more than rank transactions. They also determine whether some transaction patterns make economic sense at all.
Bitcoin policy includes dust-related standardness rules. The cited developer guide explains that outputs below a threshold tied to relay-fee assumptions are non-standard; for default settings, 546 satoshis is given as the threshold for typical P2PKH or P2SH outputs. The intuition is simple: if an output would cost too much to spend later relative to its value, relaying it is economically pointless and invites clutter.
This is a good example of where the network is not just charging a fee but shaping behavior. Tiny outputs are not forbidden by the deepest layer of protocol consensus in the same way policy forbids them from standard relay. But for practical users, that difference often collapses into the same outcome: the network as commonly operated does not want to carry economically irrational fragments.
How do gas and gas price determine Ethereum transaction fees?
Ethereum starts from a different resource model, so its fee language is different. Instead of paying mainly for transaction size, users pay for gas, the unit that measures computational effort required to execute operations on the network. The fee arithmetic is therefore gas used × price per gas.
This design fits Ethereum because transactions can trigger arbitrary smart-contract execution. A transaction is not just a message to transfer value; it may execute code, read and write storage, emit logs, and call other contracts. Charging by execution work is the natural way to meter that environment.
Under the current fee market introduced by EIP-1559, the total price per gas has two main parts: the base fee and the priority fee, often called the tip. The base fee is set by the protocol and adjusts from block to block based on the previous block’s gas usage relative to a target. The priority fee is the user’s extra incentive for validators to choose the transaction.
The crucial change is that the base fee is not paid to the validator. It is burned by the protocol. Validators receive the priority fee. This separates two jobs that older fee markets mixed together: the protocol-level congestion price and the inclusion incentive paid to the block producer.
Transactions also include a maxFeePerGas, which is the user’s maximum total willingness to pay per unit of gas, and a maxPriorityFeePerGas, which caps the tip. For the transaction to be includable, the max fee must cover the current base fee plus the chosen priority fee. If the maximum exceeds what was actually necessary, the difference is not simply taken; the sender is effectively protected by the cap-and-refund structure.
How did EIP‑1559 change Ethereum’s fee market and user experience?
| Model | Auction type | Fee predictability | Fee recipient | Wallet UX |
|---|---|---|---|---|
| Pre-EIP-1559 | First-price auction | Low predictability | Miners | Wallets guessed gas price; frequent overpayment |
| EIP-1559 | Base fee plus priority tip | Higher predictability | Tip to validators, base fee burned | Auto fee-setting, max-fee caps in wallets |
Before EIP-1559, Ethereum’s fee market behaved more like a direct first-price auction: users guessed a gas price and often overpaid to avoid delay. EIP-1559 changed that by making part of the fee a deterministic protocol variable that moves gradually based on congestion. The evidence bundle notes that the base fee can rise or fall by at most 12.5% per block, which is what makes it more predictable.
That predictability matters because wallets can now estimate fees with a firmer anchor. They still need to choose a reasonable priority fee and max fee, but they no longer have to infer the entire market-clearing price from scratch every time. The protocol itself publishes a congestion price each block.
There is an economic subtlety here. Burning the base fee means the network fee is not simply a payment from users to validators. Part of it is a protocol-level cost paid by the sender and removed from circulation. That changes the monetary effects of network activity and also reduces the incentive for validators to manipulate inclusion purely to capture the base component, since they do not receive it.
Example: calculating an ETH transfer fee under EIP‑1559
Suppose you submit a transaction that ends up using 21,000 gas, which is typical for a simple ETH transfer. Imagine the current base fee is 30 gwei and you offer a priority fee of 2 gwei, with a maxFeePerGas high enough to cover both.
The effective gas price is then 32 gwei per gas for that block context. Your total fee is 21,000 × 32 gwei. Of that amount, the 30 gwei portion per gas is burned, and the 2 gwei portion per gas goes to the validator. If the base fee had risen above what your maxFeePerGas could cover, the transaction would no longer be eligible until conditions changed or you replaced it with higher fee caps.
Now compare that with a contract interaction that uses, say, 200,000 gas. Even with the same per-gas prices, the total cost is much higher because the transaction consumes more execution resources. Again, the amount of ETH moved may be small while the fee is large, because the network is charging for resource use rather than transfer amount.
There is another difference from Bitcoin that often surprises users: a failed Ethereum transaction can still consume fees. The network has still performed work trying to execute it. Gas measures computation attempted under the protocol’s rules, not just successful state changes. If execution runs out of gas, state changes revert, but the gas supplied is consumed.
How do wallets estimate gas and fee parameters on Ethereum?
Wallets and applications usually estimate two separate things on Ethereum: how much gas a transaction is likely to use, and what gas price parameters are likely to clear promptly.
For the first, clients use calls such as eth_estimateGas, which returns an estimate of how much gas is necessary for the transaction to complete. But the JSON-RPC documentation warns that the estimate can be significantly higher than actual gas used, and client behavior can differ. So gas estimation is heuristic, not an exact preview.
For the second, clients may look at APIs such as eth_gasPrice, fee history methods, recent blocks, or wallet-specific heuristics. The precise estimation method is client-dependent. The important conceptual split is this: gas limit protects against underprovisioning execution resources, while fee parameters determine how competitive the transaction is in the current inclusion market.
This split is easy to miss if you are new to Ethereum. In Bitcoin-like systems, size and fee rate are tightly coupled. In Ethereum, execution budget and price per unit are separate controls.
Which fee-market components differ between blockchains and what is invariant?
Different blockchains package the same scarcity problem in different units.
Bitcoin asks, in effect, “How much constrained block space does this transaction consume, and what fee rate does it pay?” Ethereum asks, “How much execution does this transaction consume, what is the protocol base price for that execution right now, and what extra tip is offered for inclusion?” Some systems also add chain-specific components, especially in layered architectures where part of the cost reflects data posted elsewhere.
But beneath those implementation differences, the invariant is stable: users compete for limited inclusion capacity. The chain defines the resource metric, the mempool and block producers decide ordering under that metric, and fees are the signal that coordinates demand with limited supply.
That is why fee spikes happen on many architectures during popular launches, liquidation cascades, NFT mints, arbitrage races, or broad market volatility. The details vary, but the cause is the same: more users want inclusion than the next few blocks can fit.
Common misconceptions and mistakes about network fees
The first common mistake is treating fees as if they were payment-amount percentages. Onchain fees are usually not like card-processing fees. They are closer to bids for a scarce shared resource.
The second mistake is assuming a fee shown by a wallet guarantees confirmation within a precise time. In reality, wallets are estimating under uncertainty. New demand can arrive after you submit.
The third mistake is conflating consensus rules with relay policy. A transaction may be valid in principle yet struggle to propagate because local mempool policy rejects or deprioritizes it. The policy documentation is explicit that policy is local, configurable, and not applied to transactions already in blocks.
The fourth mistake is forgetting that the fee market interacts with transaction structure. In Bitcoin, coin selection and UTXO fragmentation change size and cost. In Ethereum, contract path, storage access, and gas limit choices change cost and failure modes.
Conclusion
Network fees are the price of scarce blockchain capacity. They exist to make spam expensive, to compensate block producers or the protocol, and to decide which transactions get included when demand is higher than what the next blocks can hold.
The exact meter differs by chain (bytes or virtual bytes in Bitcoin, gas in Ethereum, with different rules for who receives what portion) but the underlying logic is the same. **You are not mostly paying for the amount of money moved. You are paying for inclusion under scarcity. ** Once that clicks, the rest of the fee machinery becomes much easier to understand.
What should I know about network fees before transferring or trading crypto?
Know the fee model and current market before you move funds. Check whether the chain charges by byte (Bitcoin) or by gas and base/priority fee (Ethereum). On Cube Exchange fund your account, open the transfer or withdraw flow, and set the network fee parameters that match the chain’s model before you submit.
- Check the chain and current fee metric: look up sat/vB for Bitcoin or the current base fee and recent priority fees for Ethereum via a block explorer or fee estimator.
- If sending BTC, inspect your UTXOs and consolidate small UTXOs in a low‑fee window or enable opt‑in RBF so you can bump fees later if needed.
- If sending ETH or calling a contract, call a gas estimator (eth_estimateGas), set gas limit = estimate × 1.1–1.3, and set maxFeePerGas = current base fee + chosen priority fee.
- Fund your Cube account, open the transfer or withdrawal flow for the correct network, enter the amount and the network fee settings you prepared, review the fee breakdown (burned vs. tip on EIP‑1559 chains), and submit.
Frequently Asked Questions
- Why can sending a tiny amount of BTC sometimes cost more in fees than sending a much larger amount? +
- Because Bitcoin fees charge for the transaction’s bytes (the block-space it consumes), not the monetary amount sent: a small payment that spends many UTXOs can produce a large, byte-heavy transaction and therefore pay a higher fee than a simple larger payment that fits in fewer bytes.
- Why did my failed Ethereum transaction still cost me ETH? +
- Because Ethereum charges for computation attempted, not just successful state change: gas is consumed for the work the EVM does, so if execution runs out of gas or the transaction reverts the gas used is still billed even though state changes are reverted.
- What is the difference between the base fee and the priority fee (tip) under EIP‑1559? +
- EIP‑1559 splits the per‑gas price into a protocol-set base fee (which is burned and adjusts with congestion) and a user-set priority fee or tip (which goes to the validator); users also provide maxFeePerGas and maxPriorityFeePerGas to cap what they are willing to pay.
- What’s the difference between consensus validity and mempool relay policy, and why does it matter for fees? +
- Consensus rules decide whether a transaction may be included in a block, while node policy (mempool/relay policy) decides whether a node will accept and forward an unconfirmed transaction; a transaction can be consensus‑valid but still rejected from relaying because its fee rate is too low or it violates local standardness rules.
- How do wallets estimate network fees and why aren’t those estimates guaranteed? +
- Wallets estimate two uncertain things: how much resource the transaction will consume (size or gas used) and what fee rate or gas price will likely clear soon; estimators like Bitcoin Core’s estimatesmartfee or eth_estimateGas are heuristic and probabilistic, so the suggested fee is not a guaranteed confirmation time.
- What are RBF and CPFP and when should I use them to speed up a stuck Bitcoin transaction? +
- Replace‑by‑Fee (opt‑in RBF) lets a sender rebroadcast a replacement transaction paying a higher fee to replace an earlier one, while Child‑Pays‑for‑Parent (CPFP) uses a high‑fee child transaction to make miners include a low‑fee parent; both are economic ways to bump priority but require miner and relay support and have practical limitations.
- Who actually receives the network fees on Bitcoin versus Ethereum? +
- On Bitcoin, miners receive the transaction fees (driven by fee rate per byte), while on EIP‑1559‑style Ethereum the base fee is burned by the protocol and validators receive only the priority fee; the two chains therefore route user payments to different recipients depending on their fee design.
- Why do some very small outputs (dust) get rejected or not relayed even if they’re technically valid? +
- Outputs below a dust threshold are treated as non‑standard under typical node policy because their future cost to spend would exceed their value; nodes commonly refuse to relay such tiny outputs to avoid clogging the network with economically irrational fragments.
- Why do Ethereum transactions ask for a gas limit and also gas price parameters — aren’t they the same thing? +
- Because Ethereum separates execution budget (gas limit) from the price per unit (gas price), wallets must set both: the gas limit bounds how much computation you allow, while price fields (base/priority or gas price) determine how competitive your transaction is for inclusion — they are different dimensions of the same fee decision.