<p>there is indeed a Cardano-improvement-proposal addressing such <em><strong>reference scripts</strong></em></p>
<p><a href="https://cips.cardano.org/cips/cip33/" rel="nofollow noreferrer">https://cips.cardano.org/cips/cip33/</a></p>
<p>also here on github
<a href="https://github.com/cardano-foundation/CIPs/tree/master/CIP-0033" rel="nofollow noreferrer">https://github.com/cardano-foundation/CIPs/tree/master/CIP-0033</a></p>

CC BY-SA 4.0
2022-01-27T11:02:23.920Z
2022-01-27T11:02:23.920Z
Markus - CLIO1
<p>Transactions are made outside of blocks, and transmitted unconfirmed between all nodes in a network; Nodes advertise new transactions assuming they pass verification to other nodes, who ask for the transaction if they have not seen it before.</p>
<p>It therefore seems redundant to include the full transaction within a block, because we can be pretty sure that most nodes already have most transactions, and if they are missing a transaction on receiving a block, must know at least 1 peer who can supply the transaction on demand (the node that sent them the block).</p>
<p>An SHA256 hash of a transaction is much smaller than an actual transaction, 32 Bytes versus at least 200 Bytes, so why not just list the transaction hashes within a block and let each node confirm they have all the transactions locally that are associated to that block, by calculating transaction hashes and confirm they have everything needed?</p>
<p>Im sure I must be missing something fundamental.</p>
<p>EDIT: I suppose its inefficient on storage, assuming we add 32 Bytes to every transaction, and then an associated 32 Bytes inside the block for each transaction.  100 Transactions per second would fit inside a 64KB block (at 20 seconds per block), but would add an additional, 188GB storage per annum.  Even so storage is relatively trivial compared to block propagation, isn't it?</p>

CC BY-SA 4.0
2021-12-18T13:28:35.073Z
For some reason this sounds eerily similar to how I imagine block pipelining would work. It was briefly mentioned in the most recent mid-month update:


 https://www.youtube.com/watch?v=_JNK4eDZFMA
zhekson
<transaction><block-production><blocksize>
Why does the full transaction have to be included inside the block?
# Why does the full transaction have to be included inside the block?

(Asked by: username_0 on 2021-12-18)

Transactions are made outside of blocks, and transmitted unconfirmed between all nodes in a network; Nodes advertise new transactions assuming they pass verification to other nodes, who ask for the transaction if they have not seen it before.

It therefore seems redundant to include the full transaction within a block, because we can be pretty sure that most nodes already have most transactions, and if they are missing a transaction on receiving a block, must know at least 1 peer who can supply the transaction on demand (the node that sent them the block).

An SHA256 hash of a transaction is much smaller than an actual transaction, 32 Bytes versus at least 200 Bytes, so why not just list the transaction hashes within a block and let each node confirm they have all the transactions locally that are associated to that block, by calculating transaction hashes and confirm they have everything needed?

Im sure I must be missing something fundamental.

EDIT: I suppose its inefficient on storage, assuming we add 32 Bytes to every transaction, and then an associated 32 Bytes inside the block for each transaction. 100 Transactions per second would fit inside a 64KB block (at 20 seconds per block), but would add an additional, 188GB storage per annum. Even so storage is relatively trivial compared to block propagation, isn't it?

**Tags:** transaction, block-production, blocksize
> **Comments:**
> **username_1**: For some reason this sounds eerily similar to how I imagine block pipelining would work. It was briefly mentioned in the most recent mid-month update:    https://www.youtube.com/watch?v=_JNK4eDZFMA  

---

## 1 answers

### Answer by username_2 on 2022-01-27. Score: 1

there is indeed a Cardano-improvement-proposal addressing such ***reference scripts***

<https://cips.cardano.org/cips/cip33/>

also here on github
<https://github.com/cardano-foundation/CIPs/tree/master/CIP-0033>


---

