If you use a zero-knowledge proof to enforce that the preimage of the hash is a key which unlocks some data you want, this becomes a powerful tool for building exotic protocols or performing risky transactions. It also doesn't cost much on the Bitcoin side of things.
# Compute the SHA256 of the value on the top of the stack (spender input),
# then add the result to the top of the stack
OP_SHA256
# Check whether this value is equal to Y, the hash of the key under which
# the solution was encrypted.
<Y> OP_EQUAL
# If the correct key was provided, add the seller's public key to the stack
OP_IF
<Seller Pubkey>
# Otherwise, if it has been 100 blocks or more, add the buyer's public key
# to the stack so they may refund themselves if the seller does not complete
# the protocol
OP_ELSE
<block_height+100> OP_CHECKLOCKTIMEVERIFY OP_DROP
<Buyer Pubkey>
OP_ENDIF
# Verify the signature against the public key on the top of the stack
OP_CHECKSIGCoincidentally: I was actually working on using ZKPs before this was posted and I had a hell of time even getting the library installed (Snarkfront.) In the end I resorted to emailing one of the devs who managed to get it to work since I'm probably one of less than 50 people world-wide who have ever used Snarklib before - (a group that would probably include Greg Maxwell too.) So yes - the bleeding edge stuff unfortunately does require a lot of time to master but sometime in the future I hope to post some proper documentation and put a virtual machine online so normal devs can play with this stuff without having to waste hours.
The same happened with Bitcoin (as a payment method) and I'm pretty sure someone will find way to make this simple enough for the layman to use.
The benefits of the internet were pretty clear and obvious. The benefits of Bitcoin are neither clear nor obvious.
Obviousness doesn't tend to come until something compels it. But in the meantime, people who recognize it before others do are working to profit off that difference.
Bitcoin can be used for other reasons beyond payment system transactions; for example, a bunch of coins are stored in cold wallets, as a physical store of value which cannot be confiscated. Market fluctuations still happen but that's unrelated to physical coin storage.
Zero-conf is fundamentally broken.
Yep. Double-spending zero-conf transactions can work as long as you are using a payment channel (where the other side is receiving each transaction). That's how the "payment channel" concepts work.
http://www.al-monitor.com/pulse/zh/originals/2015/04/aleppo-...
http://dlca.logcluster.org/display/public/DLCA/3.4+Ukraine+T...
But for people who want non-refundable payments, or scriptable m-of-n payment rules, etc, it's almost the only game in town.