Block Reference
DATA_RETURN
Anchor Family
TYPE 0x0507 · ANCHOR FAMILY

DATA_RETURN

Typed replacement for OP_RETURN. Commits up to 40 bytes of arbitrary data in an unspendable output. Evaluator always returns ERROR — the output can never be spent, only created. Maximum one DATA_RETURN output per transaction (consensus-enforced).

Anchor Invertible
DATA_RETURN DATA (1-40 bytes) output.nValue == 0 ALWAYS → ERROR (unspendable)
FieldData TypeSizeSideDescription
dataDATA (0x0B)1–40 bytesConditionsArbitrary data payload. Maximum 40 bytes. Minimum 1 byte — empty DATA_RETURN is rejected.

No witness fields. DATA_RETURN is a conditions-only block — it is unspendable by design.

Fixed structure: block header + single DATA field. 4-byte header + 1-byte type + varint length + data payload.

0x0507 0 1 DATA · 1-40B Conditions = 6 + data bytes
Total (typical 40B payload) ~46 bytes
1.DATA_RETURN is unspendable — evaluator always returns ERROR
2.Any attempt to spend a DATA_RETURN output fails at consensus

DATA_RETURN outputs exist only to commit data on-chain. They are never evaluated as spending conditions. The evaluator returning ERROR ensures they cannot be spent even if referenced by mistake.

1.Zero value — output nValue must be exactly 0 satoshis
2.Max one per tx — at most one DATA_RETURN output per v4 transaction
3.Single rung, single block — the output conditions must contain exactly one rung with exactly one DATA_RETURN block, no relays
4.MLSC exemption — DATA_RETURN is allowed on mainnet even when RUNG_VERIFY_MLSC_ONLY is active (since MLSC trees cannot contain unspendable leaves)
ConditionResult
Any spend attemptERROR
Output conditions
{
  "type": "DATA_RETURN",
  "inverted": false,
  "fields": [
    { "type": "DATA", "hex": "48656c6c6f20776f726c64" }
  ]
}

The DATA field carries the raw payload bytes. In this example: "Hello world" (11 bytes). Maximum 40 bytes.

Protocol Metadata
Embed protocol identifiers, version markers, or short metadata in transactions. Replaces OP_RETURN for applications like OMNI, colored coins, and commitment schemes that need provably unspendable data outputs.
Commitment Anchoring
Commit a hash digest (32 bytes) to anchor off-chain state on-chain. The 40-byte limit fits a hash commitment plus metadata. Unlike the ANCHOR block, DATA_RETURN outputs are unspendable and zero-value — they don't lock any coins.
Anti-spam OP_RETURN Replacement
DATA_RETURN closes OP_RETURN as a data-embedding vector by routing it through the typed field system. The 40-byte DATA field is tighter than legacy OP_RETURN while enforcing structured typing, zero-value, and single-output limits at consensus.
← ANCHOR_ORACLE HYSTERESIS_FEE →