fireduck64 / BitcoinTimestamp

Use bitcoin create timestamped hashes
16 stars 1 forks source link

Better way #2

Open ghost opened 10 years ago

ghost commented 10 years ago

The general principal of stamping a hash of some data into the blockchain is fine, except it causes bitcoins to be sent to unredeemable addresses.

One could achieve the same result by using the hash of the data to create a private key (just like a brain wallet). You can then send coins to the bitcoin address of that, and be able to redeem the coins afterwards.

fireduck64 commented 10 years ago

Probably. This project was a pretty early first pass.

In this case, the addresses are not unredeemable. The default 16 are ones I control and someone can swap them out for others pretty easily.

So you are proposing hash(data) be used as the brain wallet password? That would work, except it isn't as nice and clear as being able to read the hash from the transaction. You have to have the hash and then you can see that the transaction matches.

ghost commented 10 years ago

Verification is always technical because to verify the hash you still need to calculate the bitcoin address using a few steps. This just changes the steps to

privateKey = brainwallet(hash(data))
address = get_address_from(privateKey)

Either way you need software to verify it, so I think the benefits are great here. Remember now have a minimum dust level which could rise later, bitcoin price is skyrocketing so this becomes expensive, and now we reduce the fee to 2 x miners fee which is more likely to go down over time.

ghost commented 10 years ago

Reference implementations:

Python

https://github.com/willwharton/pybrainwallet/blob/master/brainwallet.py or https://github.com/jgilmour/brainwallet-check/blob/master/brainwallet-check.py

Javascript

https://github.com/brainwallet/brainwallet.github.com/blob/master/js/brainwallet.js or https://github.com/pointbiz/bitaddress.org/blob/master/src/ninja.brainwallet.js