The smallest possible serializable transaction is 10 bytes:
- version (4 bytes)
- input count (1 byte) (zero inputs)
- output count (1 byte) (zero outputs)
- locktime (4 bytes)
However, because transactions need to have at least one input and one output, such a transaction wouldn’t be valid. A minimal valid transaction needs 60 bytes:
- version (4 bytes)
- input count (1 byte)
- input #0:
- prevout TXID (32 bytes)
- prevout index (4 bytes)
- scriptSig size (1 byte) (scriptSig itself is empty)
- sequence (4 bytes)
- output count (1 byte)
- output #0:
- amount (8 bytes)
- scriptPubKey size (1 byte) (scriptPubKey itself is empty)
- locktime (4 bytes)
Such a transaction needs to be spending a non-segwit output that allows for an empty scriptSig, for example the bare script OP_TRUE.









