第三节 比特币未来协议扩展与应用

比特币既是一个潜力巨大的基础性平台,更是一项开放式P2P交易传输协议,它的开放性和架构性甚至较STMP、HTTP、RSS以及BitTorrent等其它协议有过之而无不及,开发者、企业家们正在开发基于比特币协议的新技术、新应用,让它更安全、可隐私、更便利、更全能。

(一)存在性证明

存在性证明(Proof of Existence)是指把数据文档的SHA256信息摘要嵌入比特币区块链来证明其存在性。原理是通过两个编码过的且包含哈希的特殊地址创建一个有效的比特币转账,这个哈希被切断成两个片段,每个片段包含这些地址之一。哈希片段用来替换椭圆曲线数字签名(比特币地址生成算法)公钥的哈希,这就是为什么这些特殊的转账是不能花费的,因为这些地址是由文档的杂凑片段生成的,而不是由椭圆曲线数字签名算法的私钥生成。

地址生成且交易确认后,该文件即被永久认证。只要交易被证实,则意味着该文件存在。如果文件在交易发生时不存在,它不可能在两个地址中嵌入其SHA256消息摘要,并创建转账(由于哈希函数的抗第二原像计算性)。试图嵌入一些哈希散列,以与未来的文件哈希值相匹配,这也是不可能的(由于哈希函数的抗原像计算性),这就是为什么一旦文档所产生的转账被比特币区块确认,该文件的存在性就被证明了,而不需要一个让人信任的中央权力机构。

如果有人想在时间戳上手动确认文件的存在,他们应该遵循以下步骤:

1)计算SHA256信息摘要。

2)找到比特币区块链上的转账记录,给文档的地址发送比特币。

3)反编译base58编码的地址。

4)嵌入摘要,替换这两个地址的公钥哈希,由于摘要共有32个字节,而每个地址可容纳20个字节,剩下8个字节用零填满。

5)区块链上这两个地址间的转账可证明该文件在那个时间确实存在过。

存在性证明的主要用途有:在不透露实际数据的前提下展示数据所有权;证明某些数据在某一时刻存在;检查文件的完整性。

(二)零知识有条件付款

文艺复兴时期意大利的两个数学家塔尔塔里雅(Tartaglia)、菲奥(A.M.Fior)为竞争一元三次方程求根公式发现者的桂冠,争得不可开交。他们都宣称自己发现了这个求根公式,但谁也不愿把这个公式公布出来。于是他们摆了擂台:双方各出30个一元三次方程给对方求解,谁能全部解出,就说明谁掌握了这个公式。比赛结果是塔尔塔里雅解出了菲奥出的全部30 个方程,而菲奥一个也解不出。于是人们相信塔尔塔里雅是一元三次方程求根公式的真正发现者,虽然当时除了塔尔塔里雅外,谁也不知道这个公式究竟长啥样。这种既能充分证明自己是某项权益的合法拥有者,又不把有关信息泄露出去的方法就叫零知识证明(Zero Knowledge Proof)--即给外界的“知识”为“零”。

“零知识证明”早在1986年就被菲亚特(A.Fiat)和沙米尔(A.Shamir)用数学的方法给出了解决方案,并在同年申请了美国专利,但由于该理论可能被用于军事领域,专利局被军方密令禁止发表,理由是:“该申请发表后会有害于国家安全......所有美国人的研究未经许可而泄露将会被判刑罚款”。这禁令闹了个大笑话,因为作者实际上是在美国申请专利的以色列人,研究也是在以色列的大学里做的。此次乌龙事件也从侧面反映了“零知识证明”的重要性。

如果把“零知识证明”与比特币联系起来,你可以实现“零知识有条件付款”。设H()是一个复杂的计算机程序,对于H(X)=Y,给定一些特定的Y,你想推导得出符合条件的X。H()也可能是一个密码哈希算法,给定一个特定的哈希,让你破解哈希找到那个密码。又或者H()是一个复杂的程序,Y的值取决于你找到一个漂亮的图形(举个例子,Y既可以是0也可以是1,你想要在给一定X的前提下,Y恒等于1)。

如果我碰巧知道问题的答案,即那些符合条件的X,并想把答案卖给你,但是我们相互间并不信任,由于我们都是孤独的电脑屌丝,身边没什么朋友,所以也没有谁能充当调解员。我们是否可以在零信任度的情况下使用比特币交易呢?答案是肯定的。

数学上已证:你可以将任何计算机问题转化为零知识证明问题(比如PSPACEIP),因此,使用零知识证明,我的确可以证明自己知道一些X,使得H(X)=Y。但仅有零知识证明还不够,因为你付钱给我后,我却可以不告诉你答案,或者,我告诉你答案后,你又不付钱了。所以,我们需要引进加密交易,如下:

我用随机密码K加密X,Ex = AES(X,K),然后,我构建程序:

Program(K,Ex,H()) =>  [Ex,Hk,Y] {

    Hk=SHA256(K);

    Y=H(UNAES(Ex,K));

    return [Ex,Hk,Y];

}

这段程序使用密码K对解决方案加密,再输出加密的解决方案(Ex)、解密密码K的哈希(Hk)以及解决方案程序的运行结果(Y)。

我将这个程序转换成零知识证明,从比特币外部告诉你Ex、Hk、Y,然后你可以用这三个参数验证我的确能诚实的执行这个程序。

然后你需要我的公钥(比特币地址)和密码(K)来创建一个比特币付款,我必须给你披露密码K以换取这笔付款,你需要用K来解密Ex并获得解决方案。这样一来,我们任何一方都不能欺诈,所以,这个过程中并不需要信任。

目前,这个方案尚未被人们广泛使用,是因为有学者已经证明“零知识有条件付款”转换成复杂的程序是可能的,比如把密码组合和哈希函数转换成零知识证明,但显然并不是所有人都能搞明白在实际中怎么应用。

(三)彩色币

通过仔细跟踪一些特定比特币的来龙去脉,可以将它们与其他的比特币区分开来,这些特定比特币就叫作彩色币(Colored bitcoins)。它们具有一些特殊的属性,比如支持代理或聚集点(注:聚集点(Schelling point),是博弈论中人们在没有沟通的情况下的选择倾向,做出这一选择可能因为它看起来自然、特别、或者与选择者有关。),从而具有与比特币面值无关的价值。彩色币可以用作替代货币、商品证书、智能财产以及其他金融工具,如股票和债券等。

比特币的P2P支付结算系统已经安全建立,可以实现可靠的近乎免费的转账,比特币网络(协议)本身是安全、稳定的,但比特币生态的服务提供商比如汇率市场却被黑客攻击多次,这损害了比特币的声誉和交易价值。有没有一种办法可以利用安全可靠的比特币自身协议,来创建分布式的汇兑交易呢?

BitcoinX就是这样一个基于比特币的开放标准协议,就像HTTP和BitTorrent,用来规范互联网的价值交易。基于BitcoinX协议,你不旦可以在分布式、安全的云平台上持有比特币,还可以持有黄金、欧元、美元或各种证券资产。这意味着人们可以使用金融工具自由交易,如果某个节点G持有黄金,另一个节点E持有欧元,他们可以一种安全、透明、直接的方式相互兑换,而不需要第三方的介入。

BitcoinX的设计思想是将比特币网络(技术)与货币价值分割开来,并使用比特币网络技术来明晰交易来路以避免重复消费。通过创世转账来建立一个新货币(即彩色币),创世转账是一定量的比特币转账,这些比特币金额将用来赋予所有这种新货币的价值。这一定量比特币发送到的那个地址就是新货币的起源地址,它将控制新货币的初始分配。

彩色币客户端就是通过一种特殊的方法来计算资金平衡的轻量级客户端。

首先,我们发现所有的转账最后一个地址就是客户端地址,我们抓取区块链,查看这些转账是否是来自创世转账。

如果是,我们对交易金额乘以初始分割率,这样我们得到用户余额:

初始分割:0.00001BTC = 1 彩币(假设)

彩色币客户端是分布式的,然后围绕特定的创世转账创建一个社区,这就创造了一个独立的与比特币网络无关的“彩色币”生态,这个小的经济生态的波动建立在对比特币的基础设施的利用之上。

由于彩色币也是普通比特币,故它们也可以使用比特币网络,从一个地址传送到另一个地址。

因为我们有办法识别彩色币,所以它们相当于稀有货币,因此它们的价值取决于用户对这种稀有货币的需求,而与比特币价值无关。

彩色币怎样进行初始分配呢?在货币创世时,彩色币起源地址拥有该币的总体价值。在分配结束时,所有的货币价值将从起源地址转移到每个客户端。

在实际应用中,彩色币拥有者将不会知道货币总量有多少,此外,拥有者也不必知道想参与他的经济的人有哪些。在这种情形下,他可以建立一个邀请系统,每一个新的客户端都可以邀请其他客户端加入。实现这种技术还有很长的路要走,比如社交网络身份验证、社交图谱搜索、担保系统、短信验证、独特的IP地址、物理识别等,这些方法可最大量减少在初次分配中的欺诈。

(四)零币

零币(Zerocoin)是一个比特币的建议扩展,它可实现真正意义上的匿名性。正如历史上纸币因可兑换黄金而建立了价值,零币也因可兑换比特币而建立自己的价值。

比特币的交易历史是完全公开的,所有人都可以通过你的钱包地址在区块链中查询你的钱包现金流入与流出,并可向上追溯至这些比特币的终极起源,即从区块生成后发送到的那个地址。这对个人隐私构成了巨大威胁。

比特币协议为上述问题提供了两种解决方案:1)所有的比特币交易使用公共密钥,而无须个人身份证明;2)比特币客户端可以生成无数个公共密钥,以帮助用户防止跟踪。然而,越来越多的研究表明,这些保护措施是不够的。如果通过一些社会工程学手段,使得某个比特币钱包的物理地址(如IP地址)暴露,再配以大数据分析,那么,资金的来龙去脉与关系网将无从遁形。在《大数据时代》一书中,作者举了个例子证明大数据分析的威力:通过对美国在线(AOL)2006年8月公布的2000万匿名搜索查询记录的分析,《纽约书包》发现数据库中的4417749号样本代表的是佐治亚州的一名妇女。

为此,约翰霍普金斯大学的密码学研究小组在2013年5月的“IEEE安全和隐私大会”上提出了“零币”模型,它提供一种洗币的服务,用来混合比特币的交易历史。它创建一个与比特币区块链并行的匿名货币,以固定面额发行(如1BTC),任何用户都可以用比特币购买零币,这种交易是通过一种叫“零币铸造”的特殊块链进行的。

一旦铸造交易被比特币节点接受,该用户又可把零币兑回比特币。她只需简单的把比特币接收地址(最好是新生成的)嵌入“花掉零币”的交易,然后发送到网络。如果交易被确认,比特币节点会将它视作一个正常的比特币转账。这意味着她的比特币接收地址将收到等额比特币(减去交易手续费)。

图8-1 零币示意图

图8-1 在a图中,比特币交易是可追踪,在b图中,起初是将比特币换成零币,然后又把零币兑回比特币,其中虚拟表示的过程是不可追踪的。

这个过程的关键在于接收到的比特币与起初使用的比特币是完全无关联的(图8-1)。通过使用各种加密组件,包括数字签名和零知识证明,实现的效果是,在数学上不可能建立接收到的与起初使用的比特币之间的联系。

(五)合并挖矿

比特币区块链有几个替代用途,包括使用区块链作公证服务(比如存在性证明,把一个哈希分割成两个,并创建一个不可花费的输出,比特币时间戳有类似的功能,但后者是将之哈希为有效的交易),又比如小额支付和彩色币,也引发了对这些新协议加入比特币区块链的担心。

一个解决方案是创建其他区块链,如果该区块链是与比特币网络完全独立的,一个全新的哈希网络就诞生了。不过,若采用中本聪与比特币开发者迈克·赫恩最近讨论的“合并挖矿” (Merged Mining)的设想,则可允许区块链在同一网络同时挖不同的矿。

比特币工作量证明机制是指在矿工挖矿时,给区块补增一个随机数,并作随机哈希运算,使得给定区块的哈希值开头含有一定数量的零。一个简单的例子:

对短语“message”(不含引号)进行SHA256哈希算法加密,你会得到:

ab530a13e45914982b79f9b7e3fba994cfd1f3fb22f71cea1afbf02b460c6d1d

现在开始加入数据,直到你得到一个以0开头的哈希:

1message daad0bc80059253928621a10365de153e335a18f03b9dc7e7e25897fb791f023

2message 6532f42bd1d6ccd00f47c133c3ca1a0fc852598e67c62eb31adab8ceb3aaa680

...

51message 0985e57510d017b177867168642543ab4f143333ad63782680e812251ab3141e

51次运算后得到第一个有效的哈希。只要“51message”一发送,接收器可以迅速通过哈希运算来验证它是否符合要求。被添加的那部分数据(本例中的51),被称作随机数(nonce),关键在于该随机数可以是任何信息。

假设你在同时挖A币与B币,现在你有部分区块数据来自A币,部分区块数据来自B币,而且一个母随机数不断改变直到你找到一个区块。一旦你找到一个块,它就是一个对A币、B币两者同时有效的块链(假设两者的挖矿难度相等)。例如:

同时哈希以下数据:[A币区块数据|B币区块数据|公随机数]

当一个块被发现:

对A币广播区块>> [A币区块数据] +随机数= B币区块数据+母随机数]

对B币广播区块>> [B币区块数据] +随机数= A币区块数据+母随机数]

只要你愿意,你可以制造任意多的链。Slush矿池2011年就已经合并挖比特币与域名币(Namecoin)。

合并挖矿的好处有:1)同时为两个区块链贡献哈希计算力,有助于提高两个区块链的安全性。2)挖矿的回报更高,消耗相同的电力的情况下,同时采两种货币,如果你不喜欢域名币,可以把它卖掉换成比特币。

(六)域名币

域名币(Namecoin)是一个基于比特币技术的分布式域名系统,提供.bit等后缀的域名注册服务,具有安全和抗审查的特性。域名币的原理和比特币相近,其区块链独立于比特币区块链,但可通过合并挖矿来运行。域名币的顶级域名没有一个中央机构或组织来管理,每个域名币节点都保存有一个数据库副本,允许用户使用备用DNS、DNS后缀、网关、浏览器插件或安装域名币客户端,来获得独立的通过认证的域名浏览权,在使用客户端的情况下,没有任何权力机构可以禁止域名的使用和转让。

注册一个域名币域名的花费由两部分组成:网络费用和手续费。这些费用通过域名币支付,初次注册需要花费50域名币,每两个月网络费将减少两倍,这就意味着一年内网络费将慢慢少于1域名币。之所以开始需要缴纳较高的网络费用,是为了提高早期注册门栏,以确保后期仍然有足够的域名,不过随着时间的推移,域名的网络费用会缩减到忽略不计。这笔网络费不会流到任何人的手中,因为在交易过程中它会被销毁。而手续费将付给矿工们,与比特币类似,挖矿之初付多少手续费则由你来决定,可以是 0.01域名币甚至是免费,不过付费越高,你的交易处理的速度就得到相应的提升。大约每三个月你需要对你的域名进行一次升级,不过这个过程是免费的。升级的方式是通过你的域名账户内所绑定的的域名币作为输入,产生交易从而升级,账户中被内置了特殊的 0.01域名币,这种特殊的货币则不能用来交易,从而保证你的账户不会被清零。

Dot-BIT是第一个使用域名币的项目,旨在建立以.bit 为后缀的DNS系统。目前该项目仍然处于beta测试阶段,已有7个 DNS 服务器,域名数目已超过79000个。

(七)分布式合同

如果多方交易功能被添加进比特币核心代码,那么比特币将不仅仅是货币。现在,加密货币的开发者正在设计初步支持新型交易方式的模型。

什么是多方交易?多方交易让分布式合同(Distributed Contract)得以实现。根据维基的介绍,分布式合同是一种人们通过比特币区块链达成协议的方式。分布式合同并不能实现以前的合同所不能达成的功能,它只是让人们可以在最小信任度的前提下达成协议。这意味着以前只能以纸、笔、签字的方式达成的协议,现在可以在密码学的信任基础上完成同样的服务。这种新服务可以开发出包括托管服务、抵押存款、纠纷调解、买卖担保、智能资产等诸多新功能,这些功能将消除许多行业中需要用到纸质合同的情形。除了银行,现有行业可能会受到影响的包括企业冠名、贷款服务、结算服务、数字产品的拥有权转移(汽车、手机、电脑)、住房贷款、汽车贷款、资金服务等,以比特币的方式创建这些合同的成本几乎为零。

假设有A、B、C三人,新的交易形式可能包括以下几种:(A 和B)、(A或B)、(A和B)或C,比特币将远不只是一种全球货币那样简单。目前,它可以取代纸质的现金。而将来,它也许可以取代许多金融行业内的纸质合同。比特币可能是世界上第一个全球加密合同协议,任何人都可以在世界的任何地方,以加密的方式与任何人做生意。

(八)智能资产

智能资产(Smart Property),是指通过协议用比特币块链来控制财产所有权。比如汽车、电话、房产等实物财产。智能资产还包括非物理属性的财产,比如公司股份、某计算机的远程访问权限。智能资产允许在最低信任度的情况下进行交易,这消除了欺诈与中介费,并允许交易发生在用其他方式不可能实现的领域。比如,它允许你向陌生人借钱并用自己的智能资产作为抵押,这使得贷款更有竞争力且更实惠。

智能资产的概念由尼克·萨博1997年在他的论文《关于智能合同的设想》中首次提出,但这个设想暂时还没有实现。

智能资产的原始形式已经很常见,如果你拥有一辆汽车,它可能是防盗的,通过一个协议交换装置,使得只有持有加密令牌的人才可以启动发动机。这大大减少了汽车失窃,例如,在澳大利亚有45%的汽车安装了防盗装置,只有7%的防盗汽车被盗。

让我们以一个汽车的例子来理解基于比特币协议的智能资产。汽车电脑需要一个所有权密钥来验证身份,所有权密钥是固定的比特币ECDSA-256密钥。汽车出厂后创建一个新的所有权密钥作为其使用生涯的开始,一小笔比特币存入该密钥地址,称作调用量T,可以是0.0001BTC。此外,汽车还拥有一个来自制造商的数字证书,证书中包括验证身份所需要的公钥,这允许汽车向第三方证明它的存在、使用年龄或行驶里程等。

当汽车被出售时,使用以下协议:

1.买方生成一个随机数,并要求卖家发送汽车数据。

2.卖家给汽车输入该随机数,汽车返回一个用身份密码签名的数据结构。该数据包括汽车的证书、汽车的数据、当前所有者的公钥和最后一次交易的Merkle树。这可以让买方确保这些数据的确来自卖方,且不是一车多卖。

3.卖家创建一个密钥作为收款地址,记K1,售价记P。

4.买方生成一个新的所有权密钥,记K2。

5.买方创建一个有两个输入和两个输出的交易。输出一为给K1发送P个比特币,输出二为给K2发送T个比特币。这桩交易是无效的,因为只有第一个输入可以签名。买方把这部分完整的交易传给卖家,卖家再用汽车现拥有者私钥对输入二进行签名,并向全网广播这桩交易。

6.他们等待一些确认。

7.买方通过比特币交易来取得汽车的所有权。一个merkle 树连接了区块头,很快有足够多的区块头验证了汽车目前这桩的所有权交易。汽车发现这桩重新分配所有权的交易所在的区块链比当前的链条更长,就会添加这桩交易到其工作量的顶部,以确保该交易不会逆转。然后,它会更新所有权信息,这辆车并不需要完整的区块链记录也不需要全部的区块头,而只需要足够多的数据保证目前已有的区块头可以连接到将来的区块头。[注:merkle 树,莫寇(R.C. Merkle)1980年提出的一种区块压缩方法,只有根(root)被纳入了区块的随机哈希,树(tree)的分支则被拔除(stubbing),而内部的随机哈希是不必保存的,这样区块大小会被压缩。]

在现实中,这与智能手机使用NFC(近距离无线通信)硬件的过程很像,用所有权密钥加密屏幕区域,以特殊的方式触摸智能手机可以启动你的具有智能资产交易功能的钱包应用,通过输入价格,买方和卖方同时触摸自己的手机来完成交易。虽然加密技术是复杂的,但他们根本不需要懂得加密。

(九)贷款与抵押

智能资产让我们能够买卖实物财产,且没有欺诈风险,这大有用武之地。但有时,人们除了买卖实物资产,还需要向陌生人借贷。我们可以通过添加一个附加层来实现低信任担保贷款。以贷款做小生意为例,如果你决定让来自世界各地的人对你的债务进行出价,而不是与银行打交道,这样你就可以得到最优惠的贷款价格。对于这项业务,陌生的债权人需要一些保证,若你偿还不了贷款,他们将得到抵押品,比如你的汽车,但你仍然需要使用汽车来做你的生意。这该怎么办?

为此,我们可以添加对所有权密钥的访问密码,然后用所有权密钥对消息进行签名,访问密码可以添加或删除,且具临时性。这意味着到了还贷期,你可以重新分配汽车的所有权给债权人,同时又保留自己的访问密码。如果债务人保证偿还贷款,汽车所有权会恢复到他名下,这当然是最理想的借贷。我们可以如下的方式来实现:

1.债权人生成K1,它用来接收还贷,贷款规模是L。

2.债权人用SIGHASH_ALL和SIGHASH_ANYONECANPAY指令给消息Tx1签名,该消息拥有一个重新分配汽车所有权给债务人的输出/输入,以及一个把总量为L的比特币发送至K1的输出。此项交易是无效的,因为贷款尚未偿还,故以比特币计价的总输出大于输入。债权人把这项交易发送给债务人。

3.当债务人赚回了贷款,他们给Tx1充入比特币以增加它的价值。这不会破坏用所有权私钥签名的输入/输出,因为还贷交易是用 SIGHASH_ANYONECANPAY 签名的,所以它与其它输出是独立的。他们不能调整输出以及这桩交易的任何数字,否则将导致所有权私钥签名的输入/输出(所有权交易是用SIGHASH_ALL签名的)交易失效。

4.一旦交易的输入达到了L,债务人就广播这桩交易,从而偿还其债务,同时取回汽车的所有权。

由于访问密码给定了时间限制,如果债务人逾期偿还不了贷款,他的访问密码将过期,该车将不再属于他。新的所有者可以取走它,如果不想取走这辆车,他可以使用低信用买卖协议(智能资产)卖掉它。

大部分贷款是分期偿还的,上述协议可以通过嵌入一些额外的输入/输出,让新的签名覆盖“逾期”指令,这样便可延长访问密码的寿命到下一个月,但不改变汽车所有权。汽车智能电脑知道如何解译出交易数据。

results matching ""

    No results matching ""