Prepare for the January 28, 2018 IOTA Snapshot (updated)
The full article was originally published by Ralf Rottmann on Medium. Read the full article here.
Update January 29th, 2018
The snapshot has completed successfully. At the time of this update, 100+ independent community members have validated the integrity of the snapshot — and counting.
Fullnode operators are asked to upgrade to the latest version and start with an empty database (e.g. remove mainnetdb/* and mainnet.log).
IOTA token owners should upgrade to the latest wallet version, log in with their seed(s) and generate receive addresses “unless their balance is back to where it was before”. Version 2.4.7 automatically attaches receive addresses to the Tangle immediately after creation. Note: Users of the current Trinity alpha version — the upcoming new IOTA wallet — might not see their balance when adding a pre-snapshot seed. Trinity does not yet auto-attach generated addresses. Use the official desktop wallet to attach and Trinity will catch up just fine. A future update will handle this automatically.
The IOTA Foundation has publicly announced the next snapshot of the Tangle for January 28th, 2018.
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.
While I hope this helps, I obviously do not guarantee anything and will in no way be held liable for anything that might go wrong.