I've been mulling over the various wallet storage solutions, and most of them, I'm just not satisfied with. One flipped bit can invalidate your entire wallet unless you keep it backed up in multiple locations. Not that keeping it backed up in multiple locations isn't something that should be done anyway...but anything that limits the requirement to back up from a remote server is great.
I was wondering if anyone had any experience applying bytewise ECC to bitcoin. The algorithm for tolerating 1 bit of error per byte is fairly straightforward, and would dramatically increase the robustness of a bitcoin wallet. I've read a bit about it, but it's been a couple of years since I did any related coding, and even that was just simple classroom stuff. I can't seem to find any programs which implement ECC archiving. Has anyone else had thoughts along these lines, or any knowledge in the area?
Had basically the same thought— but you're missing the fact that all the storage we use is not a bit error channel, but is instead a block-erasure channel: The disk already has a strong ECC per block and if it fails the whole block is unreadable. Failing sectors on disk are not uncommon. The busses we carry data over can get bitflips but it's really rare.
There are many tools for FECed archiving against erasure channels: E.g. the vdmfec software here: http://members.tripod.com/professor_tom/archives/index.html
But really, the wallets are so tiny that I don't see any reason for not simply keeping many copies. It would have a lot less software complexity: e.g. it would only take a few lines of code to make the client keep 1 "before last write" and 52 "weekly" old copies of your wallet.. and only about 5MB space assuming that your wallet is 100KB.
Someone showed up in the #bitcoin channel freaked out a few days ago because their wallet.dat just disappeared with a lot of coin in it. We convinced him to shutoff and use a rescue disk with file recovery tools. He got it back— the file was fine, just deleted. Looked to me like his disk was on the way out and after hitting an error writing an update the wallet got unlinked. (perhaps there isn't enough error handling in the client software). Obviously backups are critical but the software should do all it can even in the face of careless users, and adding backup copies would do a lot to guard against stupid..