IOTA Tutorial 10 | Transaction and Bundle
Transaction and Bundle
In this video series different topics will be explained which will help you to understand IOTA. It is recommended to watch each video sequentially as I may refer to certain IOTA topics explained earlier.
The squares in the Tangle represents transactions and each NEW transaction should reference transactions which have no other transactions referencing them. These non referenced transactions are called tips (tip 0 and tip 1). Each transaction consists of a bundle of transactions.
An example of an IOTA transaction where 3 IOTA’s are transferred from Alice’s address to Bob’s address:
A transaction consists of a bundle of transactions: currentIndex 0 refers to transaction 0, currentIndex 1 refers to transaction 1, etc.. All these transactions have the same bundle hash. All transactions in the same bundle should be treated as an atomic unit. It means that either all transactions of a bundle are confirmed, or none of them are confirmed.
Every transaction in the bundle requires it own PoW, see the different nonces in the transactions.
There can be 3 different types of transactions inside a bundle:
- Output transactions
Transactions where IOTA’s are send to one or multiple addresses. The IOTA light wallet can only send to one address. These transactions are easily recognised because the transaction value is always greater than 0 and the address does not belong the sender.
- Input transactions
There are two types of input transactions:
- Input transactions where the value is negative. These are the transactions where the complete balance from that address is spent.
- Input transactions where the value is greater than 0. These are the transactions where unspent/not used IOTA’s are send to a new change address in the senders wallet.
- Meta transactions Zero value transactions are meta transactions. The signatureMessageFragment of these transactions could either hold a signature or a message fragment.
By increasing the security level you increase the key size, meaning you increase the private key size. Depending on the key size, this signature is fragmented and stored in 1, 2 or 3 transactions.
- Wallet 1, using security level 1, the signature is stored in 1 transaction
- Wallet 2, using security level 2, the signature is fragmented and stored in 2 transactions
- Wallet 3, using security level 3, the signature is fragmented and stored in 3 transactions
By increasing the security level you increase the signature size and thus the number of transactions needed to store the signature. IOTA signatures are larger than Bitcoin signatures due to IOTA’s use of Winternitz one-time signatures to gain quantum resistance.
Each single transaction inside a bundle consists of 2673 trytes and much of it is taken by the signatureMessageFragment which has a size of 2187 trytes (approx 82%). A single transaction inside a bundle requires 2673 trytes or ~1.55 kBytes.
A bundle can have one transaction, for example when you attach an address to the Tangle. A bundle can have an X number of transactions. For example: Alice has a wallet (using security level 2) with address 0 to address 99 with each address having one IOTA. When Alice transfers her complete wallet balance to Bob, she creates a transaction bundle containing 201 transactions: 1 transaction to Bob, 100 transactions withdrawing 1 IOTA from each address and 100 meta transactions to store the second signature fragment.
Each transaction inside the bundle requires a PoW. Let assume a PoW takes 20 seconds per transaction. Please note: This 20 sec is arbitrary chosen! In this example the total time to create the bundle, takes: 201 transactions x 20 sec / tx = 67 minutes. You can easily create a transaction bundle containing lots of transactions. However watch out for the Proof of Work.