场景:
- A 有一份数据。不算小,比如 10MB 吧。
- B 有加密货币,以及这份数据的哈希 X (假设 MD5 )。
- B 愿意购买这份数据,也跟 A 谈妥了价格。
但是现在 A 和 B 互不信任,有什么办法可以保证 A 成功拿到钱的同时,B 也拿到了正确的数据?
- 先打款后传数据,A 可能跑路。
- 先传数据后打款,B 可能跑路。
直接上链?一来成本扛不住,二来……B 也不信任矿工啊。
设想过这样的加密方式:
- A 传输加密后的数据给 B ,密钥为 Y 。已加密数据的某种神奇哈希值为 Z 。
- B 在链上发起一个密码学挑战,只有知道 Y 方可破解。
- 这个神奇的哈希可以保证:如果有一份数据的神奇哈希值为 Z ,通过 Y 解密后得到的数据,其 MD5 必然是 X 。
- A 亮出密钥 Y ,拿到钱。B 拿到 Y 解出原始数据。
这样,只有哈希值上了链,成本不会太高;矿工也抢不到钱。
然而即便存在这样的神奇哈希,也有一个致命缺陷:
假如 A 传了一份假数据给 B 呢? A 完不成挑战拿不到钱,但 B却有一笔钱去了黑洞啊。
想来想去,可能最终还是要引入一个 A 和 B 都认可的第三方来担保。
