UTXOs Explained — “Why can’t I send larger amounts of crypto???”
Zel Official Follow
Apr 23, 2019 · 3 min read
Brief explanation of UTXOs that dictate how most crypto is transferred
Crypto projects including ZEL use UTXOs to create transactions
If your previous transactions are small, like when mining with no minimum payout, you wont’ be able to send large amounts of ZEL
Most projects utilize UTXOs for transactions
If you can’t send large amount, try smaller amounts like 100, then 250 etc. to find your maximum allowable send amount.
Unspent Transaction Outputs (UTXOs)
Bitcoin pioneered the idea of decentralized digital currency, public ledgers, proof-of-work, among many other firsts, including how a crypto transaction would be generated. BTC utilizes Unspent Transaction Outputs to generate transactions based on the summation of previous transactions (a transaction is made up of gathering previous transactions for future spending).
There can be multiple outputs in a single transaction, but these outputs can only be used once each as an input to a future transaction. This method makes it very difficult to spend the same output twice (double-spend). If a block is submitted to the chain that has already spent transactions as inputs, then the transaction is not valid (a transaction must use only UTXOs to avoid double spending).
Since Bitcoin was the first digital currency to reach massive adoption, a huge number of projects forked from BTC to create their own unique and novel blockchain projects, but are still ultimately based on Bitcoin’s initial idea, including utilizing UTXOs to generate transactions. Zcash is ultimately a fork of Bitcoin, meaning Zel is also ultimately a fork of Bitcoin (since Zel is a fork of Zcash).
Block size and transaction limitations
Blockchains allow a specific maximum size of a block, meaning only so many transactions (UTXOs) can be packaged into a single block. This number varies between projects, but usually is a few megabytes. If the size is increased, then the total blockchain size is increased, which makes syncing a longer process. BTC is already > 250GB, meaning any change in blocksize can drastically affect the P2P nodes that sync the chain state and blocks.
When a user sends crypto, previous UTXOs are added together to send the requested amount. So if there are many UTXOs of 0.1 ZEL, and for illustration purposes a block can hold a maximum of 10 UTXOs, then the maximum that can be sent is 1 ZEL in a single block. If UTXOs are 1 ZEL each, then a block could send 10 ZEL, and so on.
So the takeaway is:
For any crypto project that is a Bitcoin-fork (most), if your transaction is refused by the network, it’s likely because the amount you are sending requires too many UTXOs to generate the requested amount, and it cannot fit into a single block.
Another reason transactions are refused by the network is if the Tx fee is too high or too low, as some chains protect the user from accidentally applying a grossly over-sized transaction fee, or require a minimum fee from a user to protect against flooding the network with meaningless transactions. For example, Zel’s default Tx fee is 0.0001 Zel. If you put 1 Zel Tx fee, it will likely be refused by the wallet as a protective measure.
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — –
Written by Zel Technologies, GmbH — 23 April 2019 — Rev. 1