打字猴:1.70386823e+09
1703868230 区块链技术驱动金融:数字货币与智能合约技术 [:1703863960]
1703868231 区块链技术驱动金融:数字货币与智能合约技术 第9章 比特币“平台”
1703868232
1703868233
1703868234
1703868235
1703868236 在前面的章节里,我们展示了比特币的技术基础架构和它作为货币的机理。现在我们来探讨除了货币之外,比特币可以作为核心组成部分的其他应用。这些应用,有些是直接利用了比特币的当前特性,并未做任何修改,而更多的则是需要做一些微小调整的。
1703868237
1703868238 我们根据应用的实用性和学术上的趣味性选择了下述应用案例,尽管案例并不能穷举,但这些关于比特币运作的例子(或者设想中的运作模式),将给您对比特币新的用途看法带来一些启示。
1703868239
1703868240
1703868241
1703868242
1703868243 区块链技术驱动金融:数字货币与智能合约技术 [:1703863961]
1703868244 区块链技术驱动金融:数字货币与智能合约技术 9.1 比特币作为一个只能被添加的记录
1703868245
1703868246 比特币是一个只能添加而不能删除的记录。它是一种可以不断添加新的数据,但是数据一旦被添加上去,就变得不可修改并且永久保存的数据结构。因此,通过比特币,我们可以获得一个时间顺序:判断一个数据是在另一个数据之前还是之后被写进了记录的。这个次序是由区块之间的哈希函数指针,而不是区块上的时间戳所决定的,因为时间戳可以作假,或者是由于矿工更改时间戳的值使其变得更小(更早),或者是矿工的计算机时钟没有同步,更或者是由于网络延时产生的差异。话虽如此,如果一个区块的时间戳延迟了好几个小时,它就会被其他的矿工们拒绝。所以时间戳还是相对准确的。通过下面的示例,我们可以看到,这些特性是有实际用途的。
1703868247
1703868248 安全时间戳
1703868249
1703868250 比特币这种只能被添加的记录特性可以被用来建立一个安全时间戳(secure timestamping)系统。假如,想要证明在时间T我们就知道了x的值,但并不想披露它的具体值。只有在未来很长时间后,当有可能需要证明我们确实知道这个值的时候,才有可能需要去披露它(当然,如果我们在时间T知道x的值,我们在T之后的时间还是知道这个x的值)。而且我们一旦证明了这一点,就需要使这个证据具备永久性。
1703868251
1703868252 在第1章中我们看到,可以用哈希函数来锁定数据x。我们不需要公布x值本身,取而代之地,只需要在区块链里公布这个数据值的哈希函数H(x),即可以来证明我们知道这个X值。这个哈希函数的特性,保证了我们不可能再找到另外一个数据y,其哈希函数结果与x的哈希函数结果一致,也就是说,当y≠x时,H(x)=H(y)是不存在的。我们还可以依赖哈希函数另外一个常用的特性:只要x本身具备比较高的最小信息熵分布特性(distribution with high min-entropy),也就是说,x是不可预测的,那么x的哈希函数结果不会透露关于x的任何信息。如果x本身没有这种不可预测的特性,就像我们在第1章中探讨的,我们可以选择一个有较高的最小信息熵分布的随机数r和x组合签名,然后用H(r|x)作为对外公布的一个数值约定。
1703868253
1703868254 这个设想的核心就是,我们在时间点T只向外公布哈希函数H(r|x),然后在之后的某个时间点来公布r和x。任何人看到这个只能做增量的记录,都会相信在我们发表H(r|x)的时候我们一定知道x,因为没有除此之外的其他方法可以让我们产生那些数据。
1703868255
1703868256 时间戳的应用
1703868257
1703868258 这个安全时间戳到底有什么用途呢?一个可能的应用就是可以用来证明创意的优先性。假设我们想证明,申请专利的一些创意点子早就在我们头脑里存在。我们可以在产生创意的第一时间,就将设计文档或者示意图草稿在区块链里用哈希函数发表出来,但不会向任何人泄露这个创意的具体内容。之后,当我们提交专利申请或是公布这个想法的时候,我们可以将最初的设计文档和相关信息发表出来,任何人都可以查证这些文件的函数时间戳,来证实我们在这之前,也就是我们发布设计文档的哈希函数约定的时候,就已经有了这个创意(证明我们对这个创意的时间上优先所有权)。
1703868259
1703868260 我们还可以用同样的方法来证明,其他人收到过我们发给他们的信息。假设爱丽丝雇用鲍勃去做一个编程的工作——他们之间的合同规定,鲍勃必须在一定的时间内将他所做的工作内容提交给爱丽丝。双方都想要获得一个保证,如果将来对相关工作内容有争议,比如鲍勃是否按时提交程序或者他提交的内容是否满足合同要求,双方都希望可以有相关的事实去证明。为了确保这一点,他们可以互相协商,将鲍勃提交的工作内容共同签名后,再在区块链上发表它的哈希函数。任何一方如果对提交的时间或者内容撒谎,另一方可以通过披露哈希函数的输入来重现当时发表的内容,来证明对方是错的(比如在法庭上)。
1703868261
1703868262 安全时间戳功能还有许多其他有意思的应用。有一种完全公钥签名方案,被称为盖伊·福克斯签名方案(Guy Fawkes signature scheme),相比较通常的公钥签名,只是利用了哈希函数和只能做增量记录的记录特性,而不需要任何重量级的加密算法。
1703868263
1703868264 对未来预测证明的攻击
1703868265
1703868266 我们目前无法仅仅用时间戳就证明对未来的准确预测,能对未来进行预测(clairooyance),当然非常好。而且从表面上看,这好像可以做到。在一个事件发生之前(比如一个体育比赛或是选举)发表一个对结果的预言,然后在事件发生之后,再证明在之前就已经预测到了。但这个方法是否真正可行?
1703868267
1703868268 在2014年下半年的世界杯决赛阶段,有人想用这个办法来“证明”世界杯的组织方国际足联(Federation Internationale de Football Association,简称FIFA)在搞腐败。当时有个推特账号,由于在一些重要比赛之前就可以准确地预测到这些比赛的结果,因而被广受关注。比如,该账号准确地预测到德国队会在加时赛取胜并且马里奥·格策(Mario Götze)会进球。这看起来可以证明,要么是微博主人有预知未来的能力,要么是比赛被操纵了。然而事实上,这个博主只是在比赛前发布了所有可能发生的事件,比如,对于所有的参赛球员,都有一条关于他会进球的微博,以及对于每一种可能的最终比分,都有一条相关的微博等(见图9.1),然后在比赛结束之前,博主删除了所有那些不准确的预测,只留下那些准确的“预测”。
1703868269
1703868270
1703868271
1703868272
1703868273 图9.1 试图对未来进行预测
1703868274
1703868275 注:这就是那个虚假的试图通过预测比赛结果来“证明”世界杯决赛圈的比赛被操控了的推特账号。其中第一个和第四个在赛后被证明是正确的,其他不准的预测就被删掉了。
1703868276
1703868277 可以用同样基础的攻击方法攻破任何安全时间戳系统。你只需要在事先预埋下所有的结果,然后最终只披露那个正确的结果。这就意味着如果你想证明你有预测能力,就必须去证明你做且只做了一个预测结果,而不是多个预测。但如果你想基于哈希函数揭示结果,是很难实现的,尤其是在比特币的区块链上,因为安全时间戳系统并不将承诺与任何个人身份识别相关联。如果你不揭示它们,就会很容易公布很多种承诺,而那些你从未揭示的承诺很难轻易追溯到你。
1703868278
1703868279 过时的安全时间戳
[ 上一页 ]  [ :1.70386823e+09 ]  [ 下一页 ]