Prepare for the IOTA Snapshot
Prepare for the IOTA Snapshot
Basically, without going into too much detail, a snapshot reduces the size it takes for nodes to save the entire Tangle (to disk). In the foreseeable future, this process will be automated. At the time of this writing, it is a coordinated roll-out usually in tandem with an update of the node software (“IRI”).
The snapshot compacts the Tangle by removing parts of its history, except addresses with value.
The good: Your IOTA tokens are 100% safe, even if you do not do anything, are on vacation during the snapshot period or on a trip to the moon!
The bad: If you log into the wallet with your seed sometime after the snapshot, your wallet might report a zero balance and might not be able to see the transaction history you’ve become so used to. Don’t worry!
Why is this so?
At the current stage of the project, the official IOTA wallet is completely stateless. It does not store anything locally on your machine. Once you log out, it forgets everything. Instead, the wallet relies on the data available on the Tangle, which it requests immediately after you log in. (That’s also the reason, why sometimes it takes a while to start up.)
The following section does not want to be technically precise. It is an attempt to provide a high level illustration in clear words, which hopefully helps you to understand the bigger picture.
So you log in. The wallet derives the first address from your seed and asks the node to look it up on the Tangle. The wallet repeats this process, until the node reports that an address could not be found. The wallet then stops and starts calculating the sum of all balances it has received from the node.
Now, with much of the transaction history on the Tangle gone due to snapshotting, your wallet might not be able to reconstruct this “address history” on its own. In fact, even the first request from the wallet to the node might fail, as the node might no longer know this address. The wallet will stop the process and assume a balance of zero.
This is, why you have to help with some manual support.
Here is what you want to do:
Before the snapshot
Log into the official IOTA wallet with your seed. Go to HISTORY. Copy
a) the address of the first transaction ever made,
b) the address of the most recent address ever made and
c) the total number of addresses and
paste these three bits of information somewhere for later. In my case, these would be:
- ZOWKEWUCNRDICY9DWEPWGYCUZBZIFHR9MFK9ECSEDDTWNHVQYYHH9YMTVFODAWEEMNLURHCTXDXPGIVADBCXR9OOCZ (a)
- FXVNDYUBIQEZJCQDWCNXBAWM9DAKVEVUJRQAMYFJEEMEBXLH9OXDXLWCKS9KPIBLWVETGPSLXPV9QPGCXLGVIQUNWZ (b)
- 8 (c)
You don’t have to apply extra security. If somebody copies the address information, nothing harmful can be done, except from looking up how much IOTA you own.
After the snapshot
Log into your wallet with your seed.
Go to the RECEIVE section and hit GENERATE NEW ADDRESS. Compare the generated address with the first address you saved earlier (a). They should be exactly the same. If they are, it validates that you’re using the correct seed.
ATTACH this address TO TANGLE.
Keep on generating receive addresses until the one generated matches the one you saved as the most recent address earlier (b).
You’ve effectively reconstructed the address history on the Tangle and your wallet should now show the correct balance.
While this might sound a bit intimidating, it is a pretty straight forward process. Depending largely on the performance of the node you’re connected to and the total number of addresses, it only takes a few minutes.
- Future wallets currently under development will likely make this obsolete. They will either be stateful or handle this under the hood. Or both.
- Transactions in pending state prior to the snapshot will get removed during snapshotting.
- Your IOTA tokens will always remain safe on the Tangle. This entire process is about reconstructing the history for the wallet. Even if you do none of the above for a long time, your addresses with value will remain safely associated with your private key (and hence your seed) forever.