Cube

What is a Blockchain Transaction?

Learn what a blockchain transaction is, how it works, why signatures and consensus both matter, and how Bitcoin and Ethereum transactions differ.

What is a Blockchain Transaction? hero image

Introduction

blockchain transaction is the name for the signed message that asks a blockchain to change its state. That sounds straightforward, but it hides the real puzzle: if there is no central operator keeping the ledger, what exactly is a transaction, who is allowed to create one, and how does the network agree that it happened only once and in the right order?

That puzzle matters because almost everything users think of as “using a blockchain” is really a transaction. Sending bitcoin, transferring ETH, swapping a token, staking, minting an NFT, or calling a smart contract are all different expressions of the same core idea: a participant signs an instruction, broadcasts it to a distributed network, and waits for that instruction to become part of the shared history. The details differ sharply across systems, but the job of a transaction stays the same.

The shortest useful way to think about it is this: a blockchain transaction is an authorized state transition proposal. Authorized means it carries cryptographic proof that the sender is allowed to make the change. State transition means it changes something the network tracks: ownership of coins, account balances, contract storage, validator sets, or asset registries. Proposal means that, when first created, it is not yet final. It still has to be checked, relayed, ordered, and accepted into the chain.

Once that clicks, many confusing details start to line up. Fees are not an afterthought; they are part of how scarce block space is allocated. Nonces are not just counters; they help prevent replay and define per-account ordering in account-based systems. Inputs and outputs in Bitcoin are not arbitrary bookkeeping; they are the mechanism by which old claims are consumed and new claims are created. A transaction is not merely “data on chain.” It is the precise object that connects cryptographic authorization to shared consensus.

Why do blockchains use transactions to prevent double-spend and enable consensus?

Before the mechanics, it helps to ask what would break without a formal transaction object. In any digital system, copying information is cheap. If digital money were just a file or a message saying “I own this coin now,” the same unit could be copied and presented twice. This is the double-spending problem. The central achievement of blockchain systems was not simply creating digital tokens, but creating a way for many independent nodes to agree on which spend happened first and which conflicting spend must be rejected.

Bitcoin’s original whitepaper described an electronic coin as a chain of digital signatures. Each owner transfers the coin by signing a hash of the previous transaction together with the next owner’s public key. That gives a clean authorization story: each transfer points back to the prior one and proves consent by the current owner. But signatures alone are not enough. Two conflicting transactions can both be validly signed. So a blockchain transaction must do two jobs at once: prove permission and enter an agreed ordering process.

That is why blockchains combine transactions with consensus. A user signs and broadcasts a transaction, but the network does not treat it as settled until consensus places it in accepted history. In Bitcoin’s proof-of-work model, nodes collect transactions into blocks, miner do computational work on those blocks, and the chain with the most accumulated proof-of-work becomes the accepted history. In Ethereum, validators include transactions in blocks and the protocol’s proof-of-stake process moves those blocks toward justification and finalization. Different machinery, same purpose: the transaction becomes real in the strong sense only when the network converges on a shared ordering.

So the core invariant is simple: a valid asset or state change can be applied at most once in the accepted history. Everything else in transaction design exists to enforce that invariant under adversarial conditions.

What fields and data must a blockchain transaction include?

Because different chains have different architectures, transaction formats vary. Still, most transactions contain the same logical parts.

First comes the instruction. The network needs to know what change is being requested. In a simple payment, that might be “transfer value from A to B.” In a smart-contract platform, it may be “call this contract function with these arguments and this amount of native token.” In Polkadot terminology, the payload is often the Call, meaning the runtime method and arguments to execute. On Avalanche, where the primary network has specialized chains, the relevant instruction depends on where you submit it: contract execution on the C-Chain, validator or platform operations on the P-Chain, asset operations on the X-Chain.

Second comes the authorization. A transaction must prove it came from someone allowed to make the requested change. In Ethereum documentation, a transaction is a cryptographically signed instruction from an account that updates network state. The signature is not decoration; it is the authorization primitive. If the signature verifies against the sender’s public key or account address, nodes know the message could only have been created by the holder of the private key, assuming the signature scheme remains secure.

Third comes the anti-replay and ordering data. Without this, a valid old transaction could be resent and applied again, or multiple pending transactions from the same sender could be interpreted ambiguously. In Ethereum, the [nonce](https://scribe-topic-id.invalid/foundations.transactions.nonce) is a sequentially incrementing counter for each externally owned account. A transaction with the wrong nonce cannot validly take its place in the sender’s sequence. In Polkadot, signed transactions also include a nonce, along with chain context such as block hash and genesis hash, which helps bind the transaction to a particular chain and runtime state. Tendermint-based systems often rely on application-level sequence numbers because the mempool itself does not guarantee a global deterministic order beyond arrival order.

Fourth comes the resource payment rule. Computation, storage, and bandwidth are scarce. Transactions therefore need a way to express what the sender is willing to pay. In Bitcoin, the fee is implicit: total input value minus total output value. In Ethereum, the transaction includes fee-related fields such as gasLimit, maxPriorityFeePerGas, and maxFeePerGas. The protocol meters execution in gas units and charges based on actual resource use within the declared limits. If a chain did not price execution, spam and denial-of-service would be much easier.

Finally comes the chain-specific context. A transaction usually needs to be tied to a specific network and specific validation rules. Ethereum typed transaction envelopes under EIP-2718 do this in an explicit and extensible way: TransactionType || TransactionPayload. That design allows legacy transactions, EIP-1559 fee-market transactions, blob-carrying transactions, and later extensions to coexist. Bitcoin does something different: its raw serialized transaction format is part of consensus, and the exact bytes of that serialization matter because they are hashed to create the transaction identifier.

How does a Bitcoin transaction move value step by step (UTXO example)?

Bitcoin is the clearest place to see the mechanics because its transaction model is very literal. It does not store balances in accounts. Instead, it tracks unspent transaction outputs, usually called UTXOs. A Bitcoin transaction does not say “subtract 1 BTC from Alice and add 1 BTC to Bob.” It says, in effect, “consume these specific old outputs that I am authorized to spend, and create these new outputs with new spending conditions.”

Imagine Alice previously received an output worth 1.2 BTC. That output is a discrete claim recorded by some earlier transaction. To pay Bob 0.7 BTC, Alice creates a new transaction with an input that points to that prior output. In Bitcoin terminology, the pointer is an outpoint: a pair consisting of the previous transaction’s ID and the output index inside it. By naming that exact prior output, Alice tells every validating node which claim she is trying to spend.

Her new transaction then creates outputs. One output might lock 0.7 BTC to Bob’s spending conditions, usually expressed through a script that Bob can later satisfy with his own signature. Another output sends the remaining value, minus fee, back to Alice as change. If the input was 1.2 BTC and Alice wants to pay Bob 0.7 BTC with a 0.001 BTC fee, she might create a 0.7 BTC output to Bob and a 0.499 BTC output back to herself. The missing 0.001 BTC is the fee.

Why does this structure matter? Because conservation of value becomes mechanical. For non-coinbase transactions, the sum of outputs must not exceed the sum of the satoshis referenced by the inputs. Nodes check that the referenced output exists, has not already been spent, and that Alice’s unlocking data satisfies the locking conditions on that old output. If all that holds, the old output is marked spent and the new outputs become fresh UTXOs available for future spending.

This also shows why double-spending has to be solved at the network level. Alice could sign two different transactions that both try to spend the same old output: one paying Bob and one paying herself elsewhere. Both may be correctly signed. The decisive question is not “is there a signature?” but “which spend, if any, becomes part of accepted chain history first?” Consensus answers that question.

At the byte level, Bitcoin transactions are serialized in a raw format with fields such as version, a count of inputs, the list of inputs, a count of outputs, the list of outputs, and lock_time. The exact serialized bytes are hashed, and that hash becomes the transaction ID, or txid, in the traditional format. This is a good example of a deeper point: in blockchains, the wire format is often not an implementation detail. It can be part of consensus itself.

How does an Ethereum transaction update account state and use gas?

Ethereum makes the same basic promise as Bitcoin (authorized, ordered state changes) but with a very different internal model. Instead of spending discrete outputs, Ethereum uses an account-based state. A transaction is a signed instruction from an externally owned account that updates balances or executes code.

Suppose Bob wants to send 1 ETH to Alice. Bob creates a transaction specifying the recipient in to, the amount in value, and a nonce equal to the next unused sequence number for his account. He also sets a gasLimit, which is the maximum gas he is willing to let the transaction consume, and fee parameters such as maxPriorityFeePerGas and maxFeePerGas. Then he signs the transaction with his private key.

When nodes receive it, they can verify several things immediately. The signature must recover the correct sender. The nonce must fit Bob’s expected transaction sequence. Bob must have enough ETH to cover both the transfer value and the potential execution cost. If the transaction is a contract interaction rather than a plain ETH transfer, the input field contains calldata that tells the virtual machine which function to execute and with what arguments.

Execution is where Ethereum’s transaction concept becomes broader than payment. A transaction may alter contract storage, emit events, create a contract, call into other contracts, and consume variable computational effort. That is why gas exists. Gas is not the fee itself; it is the unit for metering work. Under EIP-1559, the network maintains a protocol-level base fee per gas that rises when recent blocks are over target usage and falls when they are under target. The sender also offers a priority fee, which functions as a tip to the validator. The base fee is burned, while the validator keeps the priority portion.

This design changed the meaning of “what a transaction pays for.” In older first-price auction logic, users guessed a single gas price and often overpaid badly during congestion. With EIP-1559, a transaction separates the protocol-determined congestion price from the validator incentive. That does not eliminate fee estimation uncertainty, but it makes the mechanism more legible. Again, the transaction is carrying not just intent but also the pricing terms under which that intent may be executed.

How does a signed transaction propagate, get included, and become part of chain history?

StageNode checksUser confidence
BroadcastBasic format and signature checksLow
MempoolSignature, nonce, fee policy checksLow to medium
InclusionExecuted and validated in blockIncreasing
FinalityFinalization or deep confirmationsHigh
Figure 6.1: Transaction lifecycle: from wallet to finality

A blockchain transaction begins life as a local object in a wallet or application. But most of the interesting behavior happens after broadcast.

Typically, the transaction is first propagated to peers and held in a staging area commonly called the mempool or transaction pool. This is where unconfirmed transactions wait before block inclusion. A common misunderstanding is to think “broadcast” means “accepted by the network.” It does not. Nodes may reject a transaction before it ever reaches their mempool. The reason might be invalid signatures, bad nonces, insufficient fee, wrong formatting, or local relay policy.

Bitcoin makes an especially important distinction here: consensus rules and policy rules are not the same thing. Consensus rules determine whether a transaction in a block is valid for the chain. Policy rules are additional local rules nodes apply to unconfirmed transactions before relaying or admitting them to the mempool. Bitcoin Core documentation is explicit that policy is node-local, configurable, and not applied to transactions already in blocks. So a transaction can be consensus-valid in principle yet fail to propagate well because some nodes treat it as non-standard or undesirable for relay.

Ethereum has a similar practical distinction even if the terminology differs across clients. A transaction may be valid in structure and signature but still sit pending because fee terms are too low or because earlier nonces from the same account have not yet been included. Geth’s transaction pool exposes this operational reality directly: it separates pending transactions from queued ones, and it can even contain multiple different transactions for the same account and nonce if the sender broadcast conflicting variants.

Inclusion happens when a block producer selects transactions from its available pool and places them into a block. Selection is not purely mechanical. Fees matter, but so do local rules, dependency constraints, per-account ordering, block size or gas limits, and implementation choices. Tendermint documentation makes this point sharply: transaction ordering is essentially arrival-order based, and if submissions are spread across different nodes there is no guarantee they will be processed in the expected order. Applications that care about order need their own sequence logic.

Once included in a block, a transaction is more credible but not always final in the strongest sense. In proof-of-work systems, users often wait for multiple confirmations because a chain reorganization can replace the latest block or two. In Bitcoin’s original explanation, each additional block strengthens the timestamped history beneath it because rewriting deeper history requires redoing more proof-of-work. In Ethereum’s proof-of-stake model, block inclusion is followed by stronger protocol states such as justification and finalization. The vocabulary differs, but the common idea is that confidence increases over time and through additional consensus events.

Why is a transaction hash not always a permanent or unique identifier?

IdentifierDerived fromMalleability resistanceReliable unique id
txiddouble SHA256 of raw bytesLow (mutable pre-SegWit)Can change via malleability
wtxiddouble SHA256 including witnessHigh (witness committed)Stable identifier
block+indexBlock ID plus extrinsic indexN/AUnique within that block
Figure 6.2: Transaction identifier types and trade-offs

Users often think a transaction hash is the transaction’s permanent name. Sometimes that is close enough; sometimes it is dangerously incomplete.

In Bitcoin, the txid is derived from the serialized transaction bytes. Historically, this created the problem of transaction malleability: a transaction could be modified in certain signature-related ways without changing its intended effects, causing the ID to change. The result was not theft by magic; the spending conditions and value flow were still constrained. The problem was that software tracking the original ID could become confused if the network confirmed a semantically equivalent but differently encoded version.

This was important enough to motivate protocol changes. Segregated Witness introduced a new witness structure committed separately from the traditional transaction Merkle tree. The traditional txid remained defined over the old serialization, while a new wtxid included witness data. By moving signatures and scripts into witness data, SegWit made nonintentional malleability much harder and enabled more reliable chains of unconfirmed dependent transactions. That design choice illustrates a general principle: transaction identity is not purely philosophical. It affects higher-level protocols, wallet accounting, and interoperability.

Other chains make different tradeoffs. Polkadot documentation explicitly warns that transaction hashes are not unique identifiers for extrinsics on Substrate-based chains. The reliable identifier is the combination of block ID and extrinsic index within that block. That is a useful corrective because developers often assume “hash equals unique object forever.” On some systems that assumption is not the right abstraction.

What information does a blockchain transaction reveal about users and balances?

A blockchain transaction is usually public enough to validate independently. That creates a built-in tension with Privacy.

Bitcoin’s original privacy model was modest. Public keys are not real names, and using a new key pair for each transaction can reduce obvious linkage. But the whitepaper itself noted a limitation: multi-input transactions can reveal that several inputs likely belong to the same owner. In practice, transparent transaction graphs leak a great deal through structure even when names are absent.

This is why privacy tools and privacy-focused wallets matter. A non-custodial wallet can ensure the user, not a third party, controls transaction signing. But key control alone does not hide transaction graph information. Techniques such as collaborative transaction construction try to weaken linkage between inputs and outputs, though their effectiveness depends on implementation and user behavior. The important conceptual point is that ordinary transparent blockchain transactions are usually optimized first for verifiability, not for confidentiality.

That tradeoff also appears in lightweight verification. Bitcoin’s Simplified Payment Verification model lets a user verify that a transaction is included in the longest proof-of-work chain using block headers and a Merkle branch, without downloading full blocks. This is efficient, but the whitepaper is careful about the assumption: SPV is weaker if attackers can overpower the network or mislead lightweight clients. So even verification shortcuts expose the recurring design tension between efficiency, trust assumptions, and the amount of transaction data a user personally validates.

How do transaction formats and rules differ across UTXO, account, and other architectures?

ModelState modelOrdering guaranteeBest forNonce required
UTXOOutputs consumed and createdPer-output determinismParallel validation; privacyNo
AccountGlobal account balancesPer-account orderingSmart contracts; easy UXYes
Extrinsic (Substrate)Runtime call envelopeRuntime-enforced orderingPluggable validation and feesYes (configurable)
TendermintApp-layer transactionsArrival-order dependentFast finality applicationsYes recommended
AvalancheMultiple per-chain modelsChain-specific semanticsHeterogeneous multi-chain appsDepends on chain
Figure 6.3: How transaction models compare

By this point, the common structure should be visible. Still, different blockchain families package the same core job in very different forms.

In the UTXO model, used by Bitcoin, a transaction consumes old outputs and creates new ones. The key invariant is local and explicit: each referenced output can be spent once. This makes validation modular and often easier to parallelize conceptually, but it pushes complexity into coin selection, change outputs, and transaction construction.

In the account model, used by Ethereum, a transaction updates global account state directly. This feels more intuitive for smart contracts because a contract can read and write shared storage. But it also makes ordering within an account critical, which is why nonces matter so much. The transaction is less about naming prior spendable objects and more about sequencing authorized state updates.

In systems such as Polkadot, the transaction is often better understood as an extrinsic: data coming from outside the runtime that asks the runtime to execute a call. Here the transaction is explicitly embedded in a programmable state machine with pluggable validation through signed extensions. That makes the transaction format feel more like a runtime API call wrapped in consensus and fee machinery.

In Tendermint-based systems, the network layer does less to guarantee the exact order users might hope for, so applications often carry more of the burden through sequence numbers and rejection of out-of-order requests. This is not a defect so much as a design boundary: the chain guarantees one thing, and the application must guarantee another.

In Avalanche, even asking “what is a transaction?” depends partly on which chain you mean. The C-Chain inherits the EVM-style transaction logic familiar from Ethereum. The P-Chain and X-Chain serve different responsibilities, so their transaction semantics differ with the role of the chain itself. This shows that “blockchain transaction” is a family resemblance term, not a single byte layout shared by all networks.

What are the common misconceptions about blockchain transactions?

The first common misunderstanding is to equate a transaction with a successful transfer. A transaction is initially a request, not a fact. It can be malformed, rejected, replaced, delayed, reordered, or executed and still fail in some chain-specific sense while consuming fees.

The second is to think signatures alone solve the whole problem. They solve authorization, not shared ordering. Two conflicting transactions can both be perfectly signed. Consensus decides which one, if any, becomes canonical.

The third is to assume “broadcast” means “everyone saw it” and “hash” means “permanent identity.” Real networks have local mempools, configurable policy, implementation differences, and replacement behavior. The path from wallet to final state is less like submitting a form to a server and more like entering a market and a consensus process at the same time.

The fourth is to treat fees as arbitrary rent extracted after the fact. Mechanically, fees help ration scarce execution capacity. In Bitcoin, they influence which transactions miners choose when block space is limited. In Ethereum, gas metering and the EIP-1559 fee structure turn execution cost into an explicit part of transaction design.

Conclusion

A blockchain transaction is best understood as a signed proposal to change shared state under rules that many independent nodes can verify. Its essence is not “sending coins,” but combining authorization, ordering, resource pricing, and consensus inclusion into one object.

The details differ but the purpose stays constant.

  • UTXOs versus accounts
  • fees versus gas
  • txid versus typed envelopes
  • mempool policy versus runtime validation

A transaction is the bridge between what one user wants to do and what the whole network is willing to recognize as part of history.

If you remember one thing tomorrow, make it this: **a blockchain transaction is not just a message saying “move value.” It is the mechanism that turns private intent into publicly agreed state change. **

What should you check before using blockchain transactions?

Before you send funds or place on-chain trades, understand the transaction risks, ordering, and fee mechanics so you can avoid costly mistakes. On Cube Exchange, you will fund your account, choose the right market or transfer flow, and specify fee or gas parameters that match the destination chain and your urgency.

Frequently Asked Questions

If a transaction is signed, why can double-spends still be a problem?
+
Signatures prove who authorized a transaction but do not decide which of two conflicting, validly signed transactions becomes part of history; consensus (miners/validators and the chain’s ordering rules) is what places one spend ahead of another so the network enforces a single accepted outcome.
How do UTXO-style transactions differ from account-style transactions in practice?
+
In the UTXO model a transaction names specific prior outputs to consume and creates new outputs so conservation of value is enforced by input/output accounting; in the account model a transaction updates global account state (balances and contract storage) and therefore relies on per-account sequencing (nonces) rather than explicit input pointers.
What does the nonce in transactions actually prevent and why is it important?
+
A nonce (or similar sequence field) prevents old valid transactions from being replayed and establishes a clear per-account ordering for pending transactions; without it a wallet’s multiple broadcasts could be ambiguous or reapplied out of order.
Why do Bitcoin and Ethereum transactions pay fees differently, and what did EIP-1559 change?
+
Bitcoin fees are implicit (inputs minus outputs) and miners choose transactions by fee pressure, while Ethereum meters work in gas and EIP-1559 introduced a protocol base fee (burned) plus a priority tip to validators, separating congestion pricing from validator incentives.
What is transaction malleability and how did SegWit address it?
+
Transaction malleability meant a transaction’s serialized bytes — and thus its historical txid — could be altered without changing its economic effect, confusing trackers; Segregated Witness moved signature data into witness structures and introduced a witness-aware identifier (wtxid) to make malleability far less likely.
If I broadcast a valid transaction, why might it not be seen or confirmed by the network?
+
Nodes apply local policy to mempool admission and relay (fee minimums, standardness, etc.), which can cause a transaction that is consensus-valid to fail to propagate widely or be relayed by some nodes, so broadcast does not guarantee inclusion in a block.
Is a transaction hash always a stable, unique identifier across blockchains?
+
On Substrate/Polkadot chains a transaction hash is not guaranteed to be a permanent unique identifier; the recommended reliable reference is the block ID together with the extrinsic’s index inside that block because runtime/extrinsic semantics and hashes can vary.
Why can transaction order differ across nodes in Tendermint-based chains and what should applications do about it?
+
Tendermint’s mempool orders transactions by arrival and does not provide a global deterministic order across nodes, so applications that need consistent ordering should use their own sequence logic (e.g., nonces) or submit through a single node to control arrival order.

Your Trades, Your Crypto