《比特币一个虚幻而真实的金融世界全集.com》第32/37页
比特币网络允许节点之间相互通信、转发交易、验证新的交易区块和生成新的比特币。所有这些网络协议的交互,使得每个节点都可以构造出共享交易总账的一个完整的、一致的本地副本,即区块链。比特币交易总账的开放性使得每个人都可以提供涉及比特币交易信息的服务。例如,通过告诉你的税务会计师哪些比特币地址是属于你的,他们就能轻松地在总账中找到与之相关的所有交易,并计算出你的收益和损失,甚至为你的比特币交易活动创建最佳的税务策略。经济学家则可以轻易地摸清随时间推移的比特币交易次数变化情况、比特币的平均交易规模、任何一个时间节点上实际流通的比特币占全部比特币的百分比等。
这实际上相当于三方记账法,因为每一笔经济业务除了以相等的金额登记在两个(点对点交易)或两个以上(群对群交易)的账户中外,它还永久保存在以时间戳为刻度的区块链上。如果说1494年由圣方济各会修道士发明的复式记账法使企业监控资金流动、操作复杂的资金业务成为可能,并造就威尼斯银行业的繁荣,进而开启了资本主义的大门,那么,比特币三方记账法的诞生必将更加深远地影响全球经济,因其与计算机技术的无缝对接既大大降低了会计与审计成本,使得追踪财富流动更廉价高效,其账单不可修改的特性也杜绝了出现假账、错账的可能性。
一个典型的应用便是使用比特币募捐,公众可以通过观察比特币募捐地址上的资金去向来推断这些捐款的相关用途,再也不用担心捐款悄悄进入私人腰包。捐款者也不会再有被质疑诈捐的烦恼,因为他只需用私钥对募捐地址进行消息签名,即可轻易地证明某笔捐款确实来自自己。
钱包数据的开放性
通过比特币客户端的远程过程调用中间件协议(JSON-RPC)可将整个比特币经济公开。这种API(应用程序编程接口)提供的服务包括查询钱包余额(相当于查询比特币世界的银行账户余额)、创建交易、创建新钱包等。你可以通过代码查看你的余额或其他任何账户的余额。你可以在一个公平的环境里创建信息并交易。你可以独立运作一家银行、证券交易所、电汇服务或担保服务,而不需要任何人的许可和认证。正如互联网让每一个自媒体都有能力达到《纽约时报》的读者量,比特币则让每一个节点甚至是运行在你手机的节点,在能力上等同于富国银行或美国银行。
比特币未来协议扩展与应用
比特币既是一个潜力巨大的基础性平台,更是一项开放式P2P交易传输协议。其开放性和架构性甚至较STMP、HTTP、RSS以及BitTorrent等协议有过¨,w,é,n, ,r,é,n, ,s,h,ū, ,w,ū,¨之而无不及,开发者、企业家们正在开发基于比特币协议的新技术、新应用,目的是使它更安全、更便利、更全能。
存在性证明
存在性证明是指把数据文档的SHA-256信息摘要嵌入比特币区块链来证明其存在性。其原理是通过两个编码过的且包含哈希的特殊地址创建一个有效的比特币转账,这个哈希被切成两个片段,每个片段包含这些地址之一。哈希片段用来替换椭圆曲线数字签名(比特币地址生成算法)公钥的哈希,这些特殊的转账之所以不能花费,正是因为这些地址是由文档的片段生成的,而不是由椭圆曲线数字签名算法的私钥生成的。
地址生成且交易确认后,该文件即被永久认证。只要交易被证实,则意味着该文件存在。如果文件在交易时不存在,它不可能在两个地址中嵌入其SHA-256消息摘要并创建转账(因为哈希函数具有抗第二原像性)。由于哈希函数的抗原像性,试图嵌入一些哈希散列,以与未来的文件哈希值相匹配也是不可能的。这就是为什么一旦文档所产生的转账被比特币区块确认,该文件的存在性就被证明了,而不需要一个值得信任的中央权力机构。
如果有人想在时间戳上手动确认文件的存在,他们应该遵循以下步骤:
1.计算SHA-256信息摘要;
2.找到比特币区块链上的转账记录,给文档的地址发送比特币;
3.反编译Base58编码的地址;
4.嵌入摘要,替换这两个地址的公钥哈希,由于摘要共有32个字节,而每个地址可容纳20个字节,剩下8个字节用零填满;
5.区块链上这两个地址间的转账可证明该文件在那个时间确实存在。
存在性证明的主要用途包括:在不透露实际数据的前提下展示数据所有权;证明某些数据在某一时刻的存在性;检查文件的完整性。
零知识有条件付款
在文艺复兴时期,意大利的两个数学家塔尔塔里雅、菲奥为争夺一元三次方程求根公式发现者的桂冠而闹得不可开交。他们都宣称自己发现了这个求根公式,但谁也不愿意把这个公式公布出来。于是,他们摆起了擂台:双方各出30个一元三次方程给对方求解,谁能全部解出,就说明谁掌握了这个公式。比赛结果是塔尔塔里雅解出了菲奥的30个方程,而菲奥一个也解不出。于是,人们相信塔尔塔里雅是一元三次方程求根公式的真正发现者,虽然当时除了他本人外,谁也不知道这个公式究竟长什么样。这种既能充分证明自己是某项权益的合法拥有者,又不把有关信息泄露出去的方法就叫零知识证明,即提供给外界的“知识”为“零”。
零知识证明早在1986年就被A・菲亚特和A・沙米尔用数学方法给出了解决方案,并在同年申请了美国专利,但由于该理论可能被用于军事领域,专利局被军方密令禁止发表,理由是:“该申请发表后会有害于国家安全……所有美国人的研究未经许可而泄露将会被判刑罚款。”这一禁令闹了个大笑话,因为作者实际上是在美国申请专利的以色列人,研究也是在以色列的大学里完成的。此次乌龙事件也从侧面反映了零知识证明的重要性。
如果把零知识证明与比特币联系起来,你可以实现零知识有条件付款。设H()是一个复杂的计算机程序,对于H(X)=Y,给定一些特定的Y,你想推导得出符合条件的X。H()也可能是一个密码哈希算法,给定一个特定的哈希,让你破解哈希进而找到那个密码。又或者H()是一个复杂的程序,Y的值取决于你找到一个漂亮的图形。
如果我碰巧知道问题的答案,即那些符合条件的X,并想把答案卖给你,但是我们相互之间并不信任,由于我们身边都没有朋友,所以也没有谁能充当调解员。我们是否可以在零信任度的情况下使用比特币交易呢?答案是肯定的。
数学上已经证明:你可以将任何计算机问题转化为零知识证明问题,因此,使用零知识证明的确可以证明自己知道一些X,使得H(X)=Y。但仅有零知识证明还不够,因为你付钱给我之后,我可以不告诉你答案,或者,我告诉你答案之后你又不付钱了。所以,我们需要引进加密交易。
我用随机密码K加密X,Ex = AES(X,K),然后,我构建程序:
Program(K,Ex,H()) => [Ex,Hk,Y] {
Hk=SHA-256(K);
Y=H(UNAES(Ex,K));
return [Ex,Hk,Y];
}
这段程序使用随机密码(K)对解决方案进行加密,再输出加密的解决方案(Ex)、随机密码K的哈希(Hk)以及解决方案程序的运行结果(Y)。
我将这个程序转换成零知识证明,从比特币外部告诉你Ex、Hk、Y,然后你可以用这三个参数验证我的确能诚实地执行这个程序。
然后你需要我的公钥(比特币地址)和密码(K)来创建一个比特币付款,我必须向你披露密码K以换取这笔款项,你需要用K来解密Ex并获得解决方案。这样一来,我们任何一方都不能欺诈,所以这个过程中我们并不需要互相信任。
目前,这个方案尚未被广泛使用,因为并不是所有人都能弄明白在实践中怎么应用。
彩色币
通过跟踪一些特定比特币的来龙去脉,可以将它们与其他比特币区分开来,这些特定比特币就叫作彩色币。它们具有一些特殊属性,比如支持代理或聚集点[6],从而具有与比特币面值无关的价值。彩色币可以用作替代货币、商品证书、智能财产以及其他金融工具,比如股票和债券等。