We now take a look on IOTA wallet.
IOTA is another public ledger targeting the IOT economy: huge amount of users / devices while transaction amount is small. It resolves the challenges by introducing Tangle, a Direct Acyclic Group (DAG) approach claimed to be superior to conventional blockchains. The Tangle is constructed by every participants and therefore it is transaction fee free. IOTA also comes with some specific encoding mechanism (Ternary).
This article is more focusing on user account and address and the wallets.
IOTA Address Scheme
While the essential transaction signing follows the basic (private key -address) pattern, IOTA takes a different approach compared to those ledgers mentioned above. We will introduce it here.
IOTA addresses are rooted from a seed, a random number that makes every user account unique. Seed is the most critical element that one needs to keep privacy. From the seed, a list of (private key - address) pairs are generated. This is deterministic. As far as the same seed is given, the same list of (private key- address) pairs are always generated.
Technically, each (private key - address) is calculated from the seed and an index number. The same seed and index number will always have the same address.
With the knowledge of IOTA address scheme, let’s take a look on the IOTA wallet. As we can see, the wallet requests a seed. The IOTA Light Wallet I am using is just a user interface showing the address associated to the seed and the balance calculated. Here we see my current balance is 1000 iotas.
How is the balance calculated? Both Ethereum and NEM the balance is a state of an address. IOTA here is a bit close to how Bitcoin works, although the address generation mechanism is different. As user is identified by the unique seed, the balance of that user is therefore all the balance associated to the addresses generated from that seed.
We can have a clearer picture when we read it from api.
In this case, from the seed, there are two addresses generated. Under “inputs” field,
- address (index 0) has 350 iotas
- address (index 1) has 650 iotas
Therefore the balance of my wallet (corresponding to a seed) is 1,000 iotas, as shown in the wallet.
The way IOTA handles transaction (one sends some iotas to another) is quite similar to Bitcoin. From the sender side, one or more inputs are consumed, and new address (of next index) is created to keep the balance.
Here we only touch on the fund transaction part of IOTA. There are still a lot of interesting topics in IOTA, like their transaction approval processes and how to maintain the Tangle. You can explore it from other articles about IOTA.
Security in IOTA Wallet
It is obvious that the most critical component in IOTA system, from a user perspective, is the seed. As we see, although the addresses are publicly visible in the ledger (the Tangle), only the one holding the seed, and therefore corresponding private key, can use the currency (iota) associated to that address.
Currently this IOTA wallet is quite simple, and does not come with backup mechanism. The only way to keep privacy is to store the private key manually. IOTA has recently got a new wallet (Trinity), which comes with more advanced security handling such as password protection and key generation. Once the desktop version is available this part will be updated accordingly.
In this series of articles we have examined four cryptocurrencies, in particular in their user accounts and the wallet implementation. Since the mechanism behind their ledgers is not the same, the way how user account works and interacts with the ledger is different. Interesting enough we can deduce the pattern (private key - public key - address) on them, and this mechanism is common in all of them in particular when signing transaction. The difference is more on how to handle balance, how the private is created, etc.