<p>There is no minimum size restraint on blocks and transactions. However, due to the nature of blocks and transactions, there is a practical minimum.</p>

<p>The smallest transaction I can think of is 61 bytes. It is a transaction that spends an OP_TRUE anyonecanspend output and creates 1 OP_TRUE anyonecanspend output. The smallest block I can think of is 146 bytes. This is the 61 byte small transaction + 4 bytes for block height in that transaction + 80 byte block header + 1 byte for transaction count.</p>

CC BY-SA 3.0
2017-06-19T18:36:51.243Z
Doesn't a block require a coinbase transaction? :)
Murch
CC BY-SA 3.0
2017-06-19T18:38:50.687Z
Yes. The coinbase would be a 65 byte coinbase tx. The only output in that coinbase is an OP_TRUE anyonecanspend.
Ava Chow
CC BY-SA 3.0
2017-06-19T20:21:27.530Z
1) What about the number of transactions in a block? Doesn't that contribute a byte? 2) Doesn't it take 5 bytes to encode a number bigger than 2^16? https://en.bitcoin.it/wiki/Protocol_documentation#Variable_length_integer
Nick ODell
CC BY-SA 3.0
2017-06-19T20:27:49.910Z
1) Oh, yes. I forgot about that. 2) Not for the block height. It's just a pushdata (1 byte) and the block height in little endian (3 bytes). It doesn't follow any of the standard integer sizes so it doesn't have zero padding. See https://bitcoin.org/en/developer-reference#coinbase
Ava Chow
CC BY-SA 3.0
2017-06-20T05:56:10.720Z
coinbase transaction can be less than 65 bytes, because it doesn't have scriptSig+input refs.btw, the input/output scripts for regular tx can be 0 byte length, the output script of coinbase can be 0 byte length also
amaclin
CC BY-SA 3.0
2017-06-20T06:02:16.360Z
@amaclin coinbase transactions must have the outpoint. The txid of the outpoint must be all 0x00's, and the vout must be all 0xff's. The scriptsig must be at least 4 bytes for the block height (see bip 30). Then 4 bytes for the sequence, 4 bytes for version, 1 byte for input count, 1 byte for input length, 1 byte for output coint, 8 bytes for output value, 1 byte for script length, 1 byte for the output script, and 4 bytes for locktime. That's 32+4+4+4+4+1+1+1+8+1+1+4=65
Ava Chow
CC BY-SA 3.0
2017-06-20T07:21:57.317Z
oups. you are right. but the output script can be empty. https://blockchain.info/tx/3cfc0c04c8d2eec403455cafe4e83977b3da95babd00265271e5520b6958a167
amaclin
CC BY-SA 3.0
2017-06-19T18:32:38.237Z
2017-06-19T20:23:55.463Z
2017-06-19T20:23:55.463Z
Ava Chow
<p>I have gone through many research articles but couldn't find out what the minimum sizes of a transaction and a block are.
Is there any reference where I can find an answer to my question?</p>

<transactions><empty-blocks><transaction-weight>
What are the minimum sizes for transactions and blocks in Bitcoin?
DOLLY PATWA
# What are the minimum sizes for transactions and blocks in Bitcoin?

(Asked by: username_0 on 2017-06-19)

I have gone through many research articles but couldn't find out what the minimum sizes of a transaction and a block are.
Is there any reference where I can find an answer to my question?

**Tags:** transactions, empty-blocks, transaction-weight


---

## 1 answers

### Answer by username_1 on 2017-06-19. Score: 10 | Accepted answer

There is no minimum size restraint on blocks and transactions. However, due to the nature of blocks and transactions, there is a practical minimum.

The smallest transaction I can think of is 61 bytes. It is a transaction that spends an OP\_TRUE anyonecanspend output and creates 1 OP\_TRUE anyonecanspend output. The smallest block I can think of is 146 bytes. This is the 61 byte small transaction + 4 bytes for block height in that transaction + 80 byte block header + 1 byte for transaction count.

> **Comments:**
> **username_2**: Doesn't a block require a coinbase transaction? :)  
> **username_1**: Yes. The coinbase would be a 65 byte coinbase tx. The only output in that coinbase is an OP_TRUE anyonecanspend.  
> **username_3**: 1) What about the number of transactions in a block? Doesn't that contribute a byte? 2) Doesn't it take 5 bytes to encode a number bigger than 2^16? https://en.bitcoin.it/wiki/Protocol_documentation#Variable_length_integer  
> **username_1**: 1) Oh, yes. I forgot about that. 2) Not for the block height. It's just a pushdata (1 byte) and the block height in little endian (3 bytes). It doesn't follow any of the standard integer sizes so it doesn't have zero padding. See https://bitcoin.org/en/developer-reference#coinbase  
> **username_4**: coinbase transaction can be less than 65 bytes, because it doesn't have scriptSig+input refs.btw, the input/output scripts for regular tx can be 0 byte length, the output script of coinbase can be 0 byte length also  
> **username_1**: @username_4 coinbase transactions must have the outpoint. The txid of the outpoint must be all 0x00's, and the vout must be all 0xff's. The scriptsig must be at least 4 bytes for the block height (see bip 30). Then 4 bytes for the sequence, 4 bytes for version, 1 byte for input count, 1 byte for input length, 1 byte for output coint, 8 bytes for output value, 1 byte for script length, 1 byte for the output script, and 4 bytes for locktime. That's 32+4+4+4+4+1+1+1+8+1+1+4=65  
> **username_4**: oups. you are right. but the output script can be empty. https://blockchain.info/tx/3cfc0c04c8d2eec403455cafe4e83977b3da95babd00265271e5520b6958a167  

---

