I heard rumors about double-spending is possible after a snapshot if you don't create new addresses. Now I have 70 addresses in my actual wallet/seed. Does that mean I have to create 71 new addresses after the snapshot?
tl;dr version: In order to find your entire balance after a snapshot, you will need to attach the same number of addresses as you had before the snapshot.
Wait a sec, why do I even have to attach addresses in the first place?
The current IOTA Wallet released by the IOTA Foundation is stateless. This means that it doesn't store any information about your seed/addresses/balance/etc.
Every time you launch the wallet application and enter your seed, the Wallet needs to figure out which addresses you've already used, and what your total balance is — as if it was the very first time you ever logged in.1
The way that it does this is, it generates addresses one-at-a-time and then checks the Tangle to see if there are any transactions that reference that address. It continues this process until it finds an address without any transactions.
Keep that last bit in mind; it'll be important later.
There are two ways that an address might have transactions on the Tangle:
- Someone else sends IOTAs to that address or otherwise references that address in a transaction, or
- You create a transaction referencing that address and publish it to the Tangle.2
Again, note the consistent emphasis on the presence of transactions.
Great. So what does that have to do with snapshots?
During a snapshot, all of the transactions are deleted from the Tangle, so that only the addresses and their balances are left.
In other words, after the snapshot, none of your addresses have any transactions on the Tangle any more.
The next time you enter your seed, the wallet starts its usual process of generating addresses one-at-a-time and checking the Tangle to see if there are any matching transactions.
... except that the very first address it tries won't have any transactions, because those transactions were deleted during the snapshot.
So, the wallet thinks, "Aha! I've only generated one address, and there are no transactions that reference it. This must be a new seed! Enjoy your zero balance!!"
Um... okay, that makes sense, I guess. So, how many addresses do I have to attach then?
In order to find your entire balance after a snapshot, you will need to attach the same number of addresses as you had before the snapshot.
The next time you log in, the wallet will again generate addresses one-at-a-time, and for each address that you've attached to the Tangle, it will find a transaction (and possibly some IOTAs), so it knows to keep going and check more addresses.
Wow, that sounds really... how to put this nicely... inefficient.
To be fair, stateless wallets are pretty cool. You can open the IOTA Wallet on any device anywhere in the world, and as long as you know your seed (and your addresses are attached to the Tangle), you will have full access to your IOTAs.
Plus, there are no private keys or other valuable information stored on your hard drive for someone to steal — the only thing you have to worry about protecting is your seed.
That said, stateful wallets are pretty awesome, too. You can still access your IOTAs on any device anywhere using just your seed, but once you've logged in, your addresses and balance will stick around after every snapshot.
Hopefully future versions of the wallet will start introducing some stateful features... and we may even live to see the demise of the ATTACH TO TANGLE button.
1 I nicknamed my wallet Leonard.
2 Incidentally, this is what the ATTACH TO TANGLE button does in the Wallet interface.
Not true, After the last few snapshots i've created no more then 5 or so address untill all of my balanced showed up. I've had similar results in multiple wallets. As far as re-attachments, once the UCL wallet is release - Sneak peak: https://i.redd.it/qt6v8yia2q201.png
You no longer have to worry about reattachment's / wallet address recreation as this will all be automated in the background.
Hope this answers the question
You will have to do as many reattachments as there are addresses that you had generated previously, I believe.
Two solutions to this in the future: stateful wallet, which will mean you don't need to manually re-attach as your addressees will be maintained locally, and more frequent local snapshotting so you don't have as many addresses to manage at once.