Relax, you're ok .
When you backup your wallet with the File->Export it creates a .json file that contains your wallet key and your account private key. Those two things combined with your passphrase can recreate your entire wallet/accounts. The new keys are deterministic as long as you have that .json file.
Each account is deterministic as well. For example I have dumped the private key to riverhead and imported it into a fresh wallet and after a rescan everything for that account repopulated.
The only time you need to refresh your .json backup is if you create a new account. The .json file is encrypted so you do also need to remember your passphrase.
This is closer to Electrum than the Bitcoin-QT wallet though unlike Electrum it's not completely deterministic from seed words.
Ok, even if it's deterministic, it doesn't do the repopulating automatically. Here is the experiment I did:
1. I exported my wallet to bitsharesx1.json
2. I created a BitUSD buy order for amount of X BTSX, and after some time canceled it. Amount (X - 1) BTSX was returned to me.
3. I exported my wallet to bitsharesx2.json
4. I imported bitshares1.json and made a rescan with "wallet_rescan_blockchain" from the console.
5. My account balance lacked those (X - 1) BTSX, which (I concluded) were transfered to another address which was not in bitshares1.json.
I looked at the difference between bitshares1.json and bitshares2.json and found that the latter had 1 more address:
$ grep encrypted_private_key bitshares1.json | wc -l
427
$ grep encrypted_private_key bitshares2.json | wc -l
428If the BitSharesX program creates new addresses on demand (on every transaction), then the outcome of my experiment was expected. Now, you're saying, that the address creation is deterministic. Does it mean that if I continue using bitshares1.json (and not revert to bitshares2.json), then the next created address will be the one that's missing? I didn't do that because I was afraid of forking my sequence of addresses.
Anyway, this is a problem from a user perspective. No one wants to restore from 1 year old json and see that everything is missing. What I think BitSharesX should do:
1. Precompute a set of addresses.
2. When the precomputed set of addresses is exhausted, warn a user that they need to backup the wallet again.