Update (Oct/Nov 2014): My github account was deleted for some reason, so the code below is no longer available there.
I found someone to host it for me and the links in the message have been updated.
I recommend people stop using github. They cannot be trusted not to delete your repo.
----------------------------------------------------------------------
I recently thought of a way to publish a sequence of "metablocks" containing arbitrary data which is secured by the Bitcoin block chain. It only requires very small Bitcoin transactions so it doesn't bloat the block chain. It also does not create unspendable transaction outputs: it does not destroy bitcoins and does not increase the number of unspent txouts.
The idea is to use a public key and the hash of the metablock to compute a modified public key and then address. By spending to this address, one certifies the metablock. The transaction certifying the metablock is included in the successor metablock.
I think there are many ways this could be used. One example would be by someone running a notary service like the one at proofofexistence.com.
A detailed written description is available here:
https://github.com/kronarev/bip0032sbcl/blob/master/propmetablockchains.pdfhttps://mathgate.info/bip0032sbcl/propmetablockchains.pdfI extended my implementation of BIP0032 to include commands for certifying and verifying metablocks. It is not fully automated at the moment, but could be by integrating it with bitcoind. The implementation is here:
https://github.com/kronarev/bip0032sbcl/https://mathgate.info/bip0032sbcl/bip0032sbcl.tgzAs an example, I created three "metablocks" which are available at the github repository above as the files MetaBlock1, MetaBlock2 and MetaBlock3. More information is in the README.md file.
To get a sense of the bitcoin transactions used to certify metablocks, you can view the ones certifying the three metablocks above here:
https://blockchain.info/tx/4b5066707134d715f7b9d2efe3d9f7e0d320689787611ed7cbe1d5cbf98c5768https://blockchain.info/tx/97e023eddaf5bb867c5caf25bfd5b02fc1ce2588a2077cb22bc9a440d5f0e0f2https://blockchain.info/tx/f2fb9b6481ed928aedef27279f7ad3d8db657c81407eee20d5f3a21daf15a28dThe address of output 0 of each of these transactions can be computed from the corresponding metablock. The transaction spending output 0 of the transaction certifies the successor metablock.
Feedback is appreciated. It's possible, of course, that someone has done something like this before and I'm not aware of it. If so, please let me know.
Edit: I decided it might facilitate discussion to give the idea a name, so I'll refer to it as Promechard.