1703868990
区块链技术驱动金融:数字货币与智能合约技术 10.5 不可分割的交叉链互换
1703868991
1703868992
在比特币体系里,在不同个体或群体之间,达成一项交换货币或资产的交易很直接。这就是第6章里谈到的合币的原理。合币也可以用来交易智能资产,第9章简要提到,第11章会再进一步讨论。本章前面谈到的在域名币中出售域名也是基于同样的原理。
1703868993
1703868994
但是前面所有的例子中,即便涉及不同的资产,交易也都是限制在单一的区块链里。一般来说,一个另类币的交易和另外的其他另类币的交易历史没有任何关系也无法相互参考,这是一个基本的无法跨越的限制。那么,是否有其他办法可以互换不同的货币?比如,如果爱丽丝想卖掉a个另类币给鲍勃,换得鲍勃的b个比特币,他们可以把这项交易做成是单一且无法分割的形式吗?初看起来好像不太可能,因为无法强迫不同体系的区块链同时发生相关的交易。如果其中一个人,假设是爱丽丝,先执行交易,有什么办法可以阻止鲍勃不遵守承诺呢?
1703868995
1703868996
有个聪明的办法可以做到,这用到了密码学的承诺和锁定时间存储,这是两个我们已经讨论过的技术。图10.6描绘了这个协议。暂时先假设两个区块链里的区块是按固定步骤轮流产生的,每个时间单位产生一个区块。T代表协议流程的开始时间。
1703868997
1703868998
1703868999
1703869000
1703869001
图10.6 不可分割的交叉链互换协议
1703869002
1703869003
①原作者写的是另类币,应该是笔误。——译者注
1703869004
1703869005
第一步,爱丽丝存储a价值的另类币[这里的存意味着把货币发给输出脚本(ScriptPubkey),并在里面注明只有两种情况可以使用这笔货币]。这个存款只有通过以下两种方法可以取得此a价值另类币:第一,如果爱丽丝和鲍勃两个人都同意,他们可以取回。事实上,爱丽丝只有在鲍勃签署回款交易后,她才公开这个存款。这样就保证如果两个时间单位过去后,存款还没有被领取,她可以赎回她的存款。
1703869006
1703869007
另外一个办法是在任何时候,提供鲍勃的签名和x的值,通过x的值去开启哈希函数的承诺h。注意,把写在存储A的区块里来表明爱丽丝特意把h写入输出脚本。因为只有爱丽丝知道x,所以在最后阶段,任何单独一方无法索取存款。这个方法就是,当且仅当爱丽丝拿到比特币,鲍勃才知道x的地址,他才能索取另类币。
1703869008
1703869009
第二步大体是第一步的反向过程。鲍勃存b单位比特币,这些比特币只能在两种情况下才能被取走。很重要的区别是,鲍勃并不需要创建一个新的谜题。相反,他用相同的哈希值h ( 把这个h值从存储A区块简单复制到存储B区块)。哈希值h就是链接两个区块链的钥匙。
1703869010
1703869011
这时,爱丽丝有主动权,她可以临时变卦。如果在T1时,爱丽丝还没有表示要给鲍勃x值,鲍勃可以简单地取回他的存款退出交易。爱丽丝的另一选择是在T1之前取走鲍勃的比特币,但是她必须创建并广播输入脚本,里面含有x值。鲍勃看到这个广播就可以用x值去领取爱丽丝的另类币,兑换的交易完成。
1703869012
1703869013
注意,如果爱丽丝稍微晚点领取鲍勃的比特币(在T1之后但是在T2之前),鲍勃可能同时拿走两笔存款。类似地,如果爱丽丝及时拿走鲍勃的比特币,但是鲍勃等太久还没取走爱丽丝的,那么爱丽丝也可以把两个都拿走。但这不是问题,只要保证双方无法在协议上欺骗对方就可以,自己的疏忽或者故意怠慢不是系统考虑的范围。
1703869014
1703869015
最后,区块在比特币和另类币中,并不是按照固定时间产生的。这种情况会造成一些混乱,特别是两个区块链没有协调一致时。假设两个区块链各自平均10分钟产生一个区块。以1小时为时间单位,也就是说,需要T1至少为现在另类币区块+12,T2至少为现在比特币区块+6,也许能带来更大安全边际。
1703869016
1703869017
遗憾的是,存在很小的可能性,12个另类币区块已经找到,但后面6个比特币还没有找到。这时,爱丽丝可以索取两个存款。可以通过增加时间单位来降低可能性,但是会牺牲速度。
1703869018
1703869019
这是一个清晰明了的协议,但是截至2015年,还没有人用到。相反,所有加密货币都是在传统的中心化的交易系统里交易。造成这种现象有很多原因:第一是该协议的复杂、不便和缓慢;第二,这个协议可以防止偷盗货币,但是不能防范服务性攻击。有人或许以诱人的兑换价格作为广告,但是在协议原型的第一步或第二步就反悔退出,这浪费了每个人的时间。为了减缓这种情况,也为了集合并匹配大家的需求,可能需要一个中心化的交易平台(机制),即使如此,也不能完全相信它不会偷你的货币。这种情况进一步降低了该协议原型的使用范围。
1703869020
1703869021
1703869022
1703869023
1703869025
区块链技术驱动金融:数字货币与智能合约技术 10.6 侧链——基于比特币的另类币
1703869026
1703869027
本章前面部分探讨过给现有比特币所有者配置新的另类币的两种方法:或者要求用户把比特币销毁从而得到另类币,或者简单地把另类币发给现有比特币所有者,这些所有者必须拥有还没有用掉的比特币。正如我们看到的,任何一种方式都不需要另类币的价格盯住比特币。没有这种汇率锁定机制,在发展初期,另类币的价格会变化很大。侧链(sidechains)的目的就是避免另类币价格变化太大,因为价格的波动太大会导致很多问题,也会使另类币分心乏术,无法真正专注于技术上的竞争。
1703869028
1703869029
下面介绍使另类币的价格以固定汇率的形式盯住比特币的相关技术。首先,所有者必须把所拥有的一定数量的比特币放入托管账户,这样才能创造出一个单位的另类币(或者固定单位的另类币),这样所有者才可以在另类币区块链上正常使用另类币。最后,所有者必须能够销毁自己拥有的另类币,从而取回之前存在托管账户上的比特币。这种构建像零币,通过托管基础币而创造零币。区别在于,需要在两个不同的区块链里进行上述操作。
1703869030
1703869031
遗憾的是,据我们了解,由于比特币的交易无法被其他区块链的事件所影响,目前还未找到可以不改动比特币而达到这种效果的方法。截至目前,比特币的脚本还没有强大到可以确认整个单独的区块链。好消息是,我们可以通过相对实用一点的软分叉来修改比特币,这也是侧链的原理。侧链的愿景是,将比特币作为储备货币,打造多种蓬勃发展、快速创新和实验的另类币。截至2015年,侧链还只是一个提案。但是比特币社区正在积极参与这个提案,目前已取得一些实质性的进展。侧链的提案还处于变化之中,所以为了便于学习和理解,我们适当简化了一些细节。
1703869032
1703869033
扩展比特币的功能,使之能够使侧链兑换成比特币,最显而易见但不太实用的办法是:把所有侧链的规则,包括验证所有侧链的交易和检查侧链的工作量证明,都包含在比特币体系里。这个方法不实用是因为这样会使比特币扩展出来的程序过于复杂,验证比特币的节点会非常困难。而且,链接上的侧链越多,复杂度和困难度就越大。
1703869034
1703869035
SPV技巧
1703869036
1703869037
可以使用SPV证明技巧来避免这种复杂局面。在第3章中,我们曾提到简单付款验证(Simple Payment Verification,简称SPV)。SPV可用于小的客户端,比如手机上的比特币应用程序(APP)。SPV节点不需要对其不感兴趣的交易做验证,它们只校验区块的标题。SPV客户只看他们感兴趣的交易,并确信是在最长的区块链内,并不担心该链是否是最长的有效链。因为他们假定矿工在创建该区块链并花精力去挖矿之前,已经验证过里面的交易了。
1703869038
[
上一页 ]
[ :1.703868989e+09 ]
[
下一页 ]