比特币侧链白皮书:钩式侧链对区块链的创新
摘要
随着比特币于2009年的出现,由它所带来的计算机科学多元化以及电子货币的创新,引起了人们对分散式匿名电子货币的极大兴趣。不过,我们必须小心谨慎的处理比特币的关键部分–达成改变的共识。因此,相比于其他互联网协议,比特比在适应新的需求和新发明方面,有着更大的难度。
为此,我们提出了一个新技术,钩式侧链,它可以让比特币和其他分散资产在多元区块链之间转移。这就给用户提供了一个可用原有资产去接触新发明的匿名货币系统的机会。通过比特币的重复使用,这些系统可以更加容易的与比特比互动操作,避免了新货币出现时的流动性短缺和市场影响。因为侧链是独立的系统,因此经济技术创新不受阻碍。尽管比特币和侧链之间是双向转移,它们依然是相互独立的:即使是在侧链密码损坏或者遭受恶意设计的情况下,损坏也完全被限定在侧链本身。
本文主要阐述了钩式侧链,侧链的实现需求以及未来如何更好的利用互联区块链等内容。
目录
1介绍
2设计原理
3双向挂钩
3.1定义
3.2对称双向挂钩
3.3不对称双向挂钩
4缺陷
4.1复杂性
4.2欺诈性转让
4.3集中化采挖的风险
4.4soft- fork 的风险
5应用
5.1Altchain实验
5.1.1技术实验
5.1.2经济实验
5.2资产发行
6未来方向
6.1Hashpower攻击的抵御
7承诺书
A 联邦挂钩
B高效的SVP证明
C原子互换
1介绍
1983年,以用一个被信任的中央服务器来防止双向花费为背景,大卫•乔姆提出了数字货币的研究课题。[Cha83]为了减轻个人在中央服务器中的隐私问题,加强可替换性,乔姆提出了“盲签”,用它提供的加密方式,在始终允许中央服务器阻止双向收费的同时,来阻止连接中央服务器的签名。但中央服务器的问题似乎变成了电子货币的“阿喀琉斯之肿”。[Gri99]虽然它可通过以一个阈值或几个签名来代替中央服务器分散这些单点故障。这依然很容易导致系统失败,因为每个签名者都可能失败或者被导致失败,概莫能外。
2009年1月,中本聪发行了第一个被广泛使用的实用对等电子货币[Nak09],以建立在证据和经济激励基础之上的共识机制代替了中央服务器签名[Bac02]。比特币通过聚集成块来追踪付款,每一个都有一个关联的blockheader,将密码委托给给:模块的内容,一个时间戳和先前的持有者。先前持有者的区块链或者链的协议,给交易提供了一个定义好的指令。
我们注意到,比特币的持有者可以被看做是一个动态存储器管理系统,作为一个新型的签名群我们被认为是一个独立利益体。比特币第一次具体化体现了这样的签名,虽然现在还没有出现在正式的文件中。一个动态存储器管理系统就是一个数字签名,由一系列的没有固定规格的签名者形成。比特币的blockheader是动态存储器管理系统,因为他们的工作证明有特定的性质,就是任何人不用任何注册过程就可以做出贡献。除此之外,贡献被计算能力加重了而不是一个阈值每方签名的贡献,这就使得匿名成员没有遭受“女巫攻击”的风险(一方加入很多次,与输入的签名不成比例。)因为这个原因,动态存储器管理系统也被形容为解决“拜占庭将军问题”的一个方法。
因为模块是链的组合,所以比特币的动态存储器管理系统是累加的:Blockheader的任何一个链或者链段在的区块上也是一个动态存储管理器,计算力等同于动态存储管理组成部分之和。宫本聪的关键创新就是前面提及的将动态存储管理器作为一种计算机力量签名而不是知识签名。因为签名者同意计算工作,而不是知识秘密,因为这是一个典型的数字签名,我们称他们为“矿工”。为了在区块链历史上达成稳定的共识,作为经济激励,如果矿工共享了有效的历史,就会以硬币的形式得到小费或者津贴,从而鼓励他们表现的更加诚实。因为比特币的累计动态存储器力量是与所有矿工的贡献的总计算力成正比的[POE14a],少数计算想改变这个链是不可能的。如果他们想修改动态存储管理器的安全分类,他们会落后于或者永远追不上移动着的目标。
因为矿工没有形成一个可识别的设置,他们在决定交易有效期的规则上没有自由裁量权。因此,比特币的规则必须在它的历史开始的时候就被决定,如果要添加新的交易形式,必须得到每一个网络参与者的同意。即使有这个协议存在,配置也很难改变,因为这需要所有参与者以同样的方式去准确实施和执行新的规则,包括边界情况和其他意想不到的情况。
因为这个原因,比特币的目标就相对简单了:一个支持本地数字资产交易且不可用任何事物偿还的模块。这就使得实施变得简化,但现实世界的要求在挑战这些简化 。特别要说的是,现在的创新主要集中在以下几个方面:
1.可扩展性和分散性之间的权衡。例如:一个大的模块尺寸可以让网络支持更高的交易速度,代价就是验证者的负担将加重——一个集中化的风险。
同样的,在安全和代价之间也有一个权衡。比特币的每一笔交易在它的历史上有相同等级的不可逆转性。这样维持的代价太高,也不适合低价值或者低风险的交易(比如在各方已经共用基础法律来处理欺诈的地方)。这些权衡应该被用在每一次交易当中,因为交易价值和风险状况相差很大。但是比特币基础设施只是提供了一个“一刀切”的办法。
2.模块链的特征还有更多取舍。例如,比特币的脚本可能更加有力,使合同能够更加简洁有用,或者在可审核性上不那么强大。
3.货币以外的其他资产也可以在模块链上交易,例如IOU和其它合同以及智能财产。 [Sza97]
4. 单一作物的风险:比特币是由许多加密电子货币组成的,任何人的失败都可能引起总价值的损失。如果可能,这将是一个谨慎的做法使每一个使用同系列的算法得比特币获得安全。
5.当一个新的比特币面试时,新技术可能使新特征无法想象。例如,使用加密的蓄电池、环签名、可能提高隐私和审查阻力。
6.即使有压力需要这么做,比特币依然没有安全的升级路径,在某种意义上,所有参与者必须为任何因为改变而带来的影响行动其起来。比特币开发者之间有一种共识,那就是比特币的改变必须缓慢、小心并得到社区的明确同意。
事实就是,功能必须被广泛认同来获得通过,限制开发者对自己的硬币的自由和自治权利。小的群体不能实现特性,如特殊用途的脚本扩展。[jl213]
这些关于比特币的问题早期的解决方法是发明模块链或者竞争链,分享除修饰以外的比特币代码库来解决上述问题。但是,通过创建独立但本质上类似的系统来实现技术更改是有问题的。
还有就是基础设施碎片的问题,因为每一个竞争链用的都是自己的技术堆栈,所做的努力经常重复或者丢失。因为这个原因,以及竞争链的实现者可能无法清楚比特币特定安全领域的高层次障碍,安全问题经常通过竞争链复制,而他们的修复则不会。必须运用大量资源区寻找和构建专门的技术来检阅异常的分布式密码,如果不这样做,安全弱点就会隐藏起来直到他们被开采利用。结果就是,我们看见了不稳定、不同行的开发环境,最明显的项目可能是最没技术的。作为类比,想象一下互联网内的每一个站点都用自己的TCP协议,广告自己的订制检查和拼接算法给终端用户。这将不是一个可行的环境,也不是当前的竞争链环境。
第二个问题就是像比特币这样的竞争链,拥有自己典型的隐秘货币,如山寨币,都有一个浮动的价格。为了使用竞争链,使用者必须用市场获得这种货币,用新的货币暴露它们的高风险和波动性。此外,独立解决原始分布和评估问题同时对抗不良网络效应和拥挤市场的需求,削弱这技术创新同时又鼓励市场游戏。这不仅对于这个系统的直接参与者是危险的,对于整个隐秘货币行业的安全都是一个隐患。如果这个区域被大众认为是风险极高的,推行就会受到阻碍,隐秘货币可能会被整体遗弃(自愿或者立法地)。
看来我们渴望一个能使建立和使用互动竞争链更加容易的新世界,而且这其中不能有多余的分割市场和发展。本文中,作者将会讨论同时实现这一对立目标的可能性。核心就是比特币模块链在概念上与比特币资产相互独立:如果我们有技术能够支持模块链之间的资产转移,且创建一个是用户能够接受,并重复利用现在的比特币的系统。
我们把这些相互作用的模块链称之为“钩式侧链”。对此,作者将在第三章给出一个精确地定义,现在我们主要列举一下钩式侧链所迫切需要的性能:
1.侧链之间转移的资产必须能够随时转回到现持有者手中,包括原持有者在内,概莫能外。
2.交易必须能够够排除对手风险;也就是说,不能让不诚实的交易者阻碍现行交易。
3.交易者必须联系在一起,不能分割,要么就不要交易,要交易就是整体交易。失去或者允许欺诈性资产,都会导致交易失败。
4.侧链应当是一道防火墙:侧链中的一个能使恶意或者盗窃资产建立的漏洞不能转移到其它链中。
5.即使是在交易中,模块链的重组也应当非常干净,任何破坏都应当被限定在发生故障的侧链本身。一般来说,侧链应当与其他用户提供的任何必要的数据完全独立。侧链的验证者只需要追踪另一个链,如果那个侧链是建立在明确共识基础之上的。
6.使用者不能跟踪自己没有积极使用的侧链。
一个早期的解决办法是公开可见的毁坏比特币来转移钱币,这可能会被新的模块链检测到并允许新的钱币的生成。[Bac13b]这个对于上述问题来说是一个片面的解决办法,但是因为我们只允许资产的单向转移,这个办法对于我们的目标还不够充分。
我们提出的解决办法是通过提供转移过程中持有过的证据来转移资产,避免了去追踪发行链。在更高的层次上,当资产从一个模块转移到另一个模块时,我们在第一个链上建立一个交易去锁定资产,在第二链建立一个需要输入一链隐秘证据的资产,这样资产就被解锁了。这些输入被附加了一个资产类型,例如原始模块链的碎片。
我们将模块链上的第一次输入定义为母链,第二个简单定义为侧链。在一些模型中,两个链被平等对待,因此这些术语要相对性的去考虑。概念上来说,我们想要将资产从母链转移到侧链,向前到下一个侧链,最终可能回到母链上来,保持了原有的资产。一般我们可以认为母链是比特币而侧链是其他一些模块链。当然,侧链币也可以在侧链之间转移,不仅仅是与比特币之间的相互转移;但是,因为所有比特币转出的钱币可能转移回去,它仍将是一个比特币。
这就解决了我们先前提到的一些碎片式的问题。对于那些只关注技术创新的隐秘资产开发者来说也是一个好消息。
除此之外,因为侧链是从母链转移的现存资产而不是建立一个新的资产,侧链便不能带出无权限建立的钱币,而是仅依靠母链去维持和弥补资产安全。
另外,参与者不需要考虑他们持有的币被一个单一的实验性的竞争链锁住,因为侧链币可以以同样数量的母链币赎回。这提供了一个现行的策略,减少了老软件带来的伤害。
另一方面,因为侧链始终是独立于比特币的模块链,对于新的实验性交易设计、信任模型、经济模型、资产发行或者隐秘特性是免费的。作者将在第五章探讨侧链更多的可能性。
一个附加的益处就是,对比特币自身改变时的压力减弱了:创建一个新的“改变比特币”的侧链而不是通过精心设计一个大家需要共同遵守的协议。如果,在中期,大家都认同系统是一个进步,将会最终看到相比于比特币更大的用处。因为母链的共识规则没有改变,每个人都可以在没有任何共识失败风险的情况下调整自己的时间。那么,长远意义上,侧链改变的成功将给母链的改变提供信心,如果现实却是需要那么做的话。
2.设计原理
不可靠性的解决不仅仅依赖于外部的正确操作,主要是使所有的参与者自己查证他们的信息是否正确。例如,在隐秘签名系统中,不可靠性是一个隐式需求(签名系统在受到伪造攻击时会完全损坏)。这不是典型的分散系统,比特比为自己大部分的系统提供了可信任操作。
钩式侧链的一个主要设计目标就是减少比特币模型的附加信任验证。最难的部分就是保证侧链交易者之间的安全:收到的链必须看见发送币的链是被锁住的。在比特币的指引下,我们提出了使用动态存储管理系统。虽然可以用一个基于签名者信任基础的办法去检查币的锁,仍有重要原因去避免带点故障的引入:
信任单独签名者并不意味着仅仅希望他们表现的诚实;他们必须不妥协,不能泄露秘钥材料,不能离开网络。
因为数字资产是长存资产,对信任的要求也是长存的。经验显示,信任要求是危险的期望,即使是月度时间上的跨度也是一样,更不用说我们期待的金融体系世代的跨度。
在比特币消除单点操作的失败以前,电子货币尚没有获得牵引力,社区对这样的有明显弱点产品的引进也持反对态度。这种不信任在2007年金融事件以后增强了,公众对金融系统和其他公众机构的信任度也掉到了历史最低点。
双向挂钩
钩式侧链的技术基础被称之为双向挂钩。本章将以一些定义开始,来解释其工作原理。
3.1定义
如果一枚硬币,或者资产的控制者可以用密码来确定,那么它就是一种数字货币。模块就是描述受控制资产改变状态的集合。模块链就是在使用者达成共识的基础上,模块有序列的集中。这决定了资产控制的历史,给交易提供了一个不可伪造的时间顺序。
一个重组或者整改,就是之前被认可的链被竞争者以更多证据建立的新的链压倒,引起分叉中任何模块的丢失,这个链将被从历史上移除。一个侧链就是一个验证其它模块链数据的模块链。
双向挂钩是说币可以在侧链之间以一个设定好的或者是约定的汇率转移回来的机制。钩式侧链是说一个侧链的资产可以转出,并回到原来的链上,也就是说一个侧链支持双向资产转移。一个简化付款验证证明是一个动态存储管理器,在比特币上发生行动,就像模块链的工作证明。
本质上来说,一个SPV证据是由一系列演示证据的模块头和建立在其中的一个模块的输出组成的。这就允许检测者检查一些委托输出的存在工作。这样的证据可能因为另一个以更多工作强调的一个链(不包括创建输出的模块)变得无效。
使用SPV证据去确定历史,假装相信最长的模块链也是最长的正确的模块链,是由比特币中所谓的SPV客户端决定的。只有当不诚实的勾结拥有了超过50%的分散权利时,才可能欺骗SPV客户端,因为这种情况下,诚实的分散权利不足以对错误的链施加贡献。
通过要求每一个模块头对未使用的输出设置的交付,任何拥有SPV客户端的人都可以决定链的状态,而且不需要“回应”每一个模块(在比特币中,所有检验者在追踪模块链的时候都要做这个)。
接下来我们将要讨论附录B,在包含了一些比特币附加数据的基础之上,我们可以制造出小的证据而不是一系列的消息头,这将大大改善可扩展性。这些证据将会比平时的比特币交易更大。幸运的是,他们不需要大量的传输者:每条链的持有者使用原子互换直接交换,就如附录C中提到的那样。
3.2 对称双向挂钩
我们可以从一个侧链到另一个侧链对SPV挂钩使用这些想法。工作如下:转移母链的币到侧链的币,母链币被送到母链上一个特殊的输出位置,只有拥有SPV证明的侧链才可以将它解锁。为了使两条链同步,我们需要定义两个等待区间。
侧链之间的转移的确认期是持续的,因为币在从母链转移到侧链之前是被锁住状态。确认期存在的目的是考虑到足够的创建工作,即建立这样的一个攻击否定服务,将在下一个等待期来之前变得更加困难。一个典型的确认期会在一到两天之内出现在序列上。
在母链上建立了特殊的输出以后,使用者等待确认期到来,然后在侧链上建立一个与输出相关联的交易,提供一个SPV证明,证明它是建立和埋藏在母链上的。
确认期是每一条侧链安全参数,保证跨链转移的速度。
2.使用者接下来必须等待测试期。这是一个持续的期间,在这,新交易的币不能在侧脸上使用。测试期的目的是为了防止在交易之前已经锁住的币重组过程中的双重收费。如果在这个延迟过程中,包含一个带有更多集中工作的链的新证据被公开(不包括被建立了锁住输出的模块),交易追溯就会失效。我们称之为重组数据。
由于一个坏的证据被认可后会稀释币的价值的缘故,侧链的所有使用者有一个动机—–尽可能制造重组证据。
一个典型的测试期也是在序列上一天或者两天。为了避免这些延迟,使用者可能会对大部分交易者用到原子互换(附录C),直到流动性市场出现。
由于被锁在了母链上,币可以在侧链上自由转移而不用再跟母链互动。但是,作为母链币,它保持了自己的身份,而且只能被转移到它原来转出的链上去。
当一个使用者想要将币从侧链转到母链上,跟原来的操作是一样的:将侧链上的币发送到SPV输出,建立一个新的SPV证据,转移就完成了,还可以用这个证据去解锁之前的一系列在母链上具有同等地位的输出。
因为钩式侧链可能从很多链上携带资产,也不能对这些链的安全性做出估计,所以资产间的相对独立性是很重要的。此外,一个恶意的使用者可能通过建立一个无价值资产的无价值链来执行一个盗窃,将这样的一个资产转移到一个侧链,通过它来交换其它资产。为了消除这样的损失,侧链必须将单独母链上的资产做单独处理。
总结上述讨论,我们建议将母链和侧链做SPV数据互检。因为母链的客户端不可能观察到所有侧链,为了证明所有权,使用者从侧链向母链输出证据。在对称双向挂钩中,这种逆向是真实存在的。
为了使用比特币作为母链,需要一个可以识别和验证这一类SPV证据的脚本延长。至少,这样的证据需要足够紧凑来满足比特币的交易。但是,这只是一个软叉交易,对于没有使用新特性的用户来说没有影响。
3.3双向不对称挂钩
前面的章节冠题“对称双向挂钩”是因为从侧链到母链的转移机制是相同的:都有SPV安全。
一个替代方案是一个不对称的双向挂钩:这里侧链的使用者是母链的验证者,而且从母链到侧链的转移不需要SPV证明,因为所有的验证者对母链的状态一清二楚。另一方面,母链对侧链尚不清楚,因此SPV证明被要求转移了回去。
这对安全是一个推动,因为现在有51%的攻击者能正确的的将币从母链转移到侧链。但是,这就要以侧链检测者追踪母链为代价,这也意味着母链的改组可能对侧链带来影响。我们在这里不去追究详细的可能性,因为围绕着重组的问题大规模扩展会相当复杂。
4缺陷
虽然侧链提供了加密货币空间很多问题的解决办法,建立了发明比特币的无限机会,它们也并不是没有缺陷的。本章将探讨一些潜在的问题,同时提出解决和改变方法。
4.1复杂性
侧链在几个层面上增加了附加的复杂性。
在网络层面上,我们有多样化不同步的模块链支持相互之间的交易和转移。他们必须支持交易脚本,而这个脚本可能会因为后面的重组证据变成无效脚本。我们同样需要软件去探测不规则的生产和发布这样的证据。
资产层面,我们不再拥有“一条链,一份资产”的格言;独立的链可能支持许多任意的资产,当链被第一次创建的时候,即使是那些不存在的资产也会得到支持。这样的资产都会被它转移过来的那条链贴上标签以确保它们的转移被正确展开。
使模块链的基础能够处理高级功能尚不现实:使用者管理钱包的接口需要被重新考虑。在目前的山寨币世界里,每一条链都有支持这条链上的币的钱包。这将需要适应支持多个链以及链链之间的资产转移。当然,在面临一些复杂的接口时,我们总是有选择的。
4.2欺诈性转让
任意深度的重组大致上是可行的,这可能导致攻击者在引起重组之前,在侧链之间完全转移了币。结果就是,接受链上的币的数量和发送链上币的数量不平衡。如果攻击者被允许将转走的币转回到原始链上,这会使他以牺牲其他用户的侧链为代价使自己的币的数量将增加。
在讨论怎么处理这个问题之前,我们注意到通过增加交易者的测试期可以使风险变小。更好的是,测试期的持续给两条链的碎片力增加了一个功能:只有当币被添加一个类似一天工作证明的SPV证明时,就相当于发送链几天的工作证据时间时,接受链才会被解锁。像这样的安全参数是特殊侧链的属性且可以被优化到每一条侧链的应用上来。
无论这些活动多么不可能,侧链不回应灾难性故障是很重要的。建立一个SPV证据区见证这个事件,侧链可以接受这样的证据。他们可能被设计用来对下面的这些情况作出反应:
没有反应。结果就是侧链成了资产储存在其他链上的“部分储备金”。这可能是被可接受的微量因为这比丢失的侧链币更少,或者说保险承诺让丢失的资产变好。但是,除了一些阈值,“银行挤兑”提款在侧链上也可能发生,最后必然导致有些人空包而回。间接地损坏可能包括侧链上诚心的普遍丢失,代价就是母链经理一个突然地交易冲击。
挂钩和所有的独立交易可能被颠倒。但是,因为币倾向于扩散和历史混合,逆转的影响可能是灾难性的。它也限制了可替代性,因为收货人喜欢有干净历史的币。我们认为这样的可替代性丢失会带来灾难性后果。
在保留汇率的基础上,币的数量会被减少。现在,将币交易到侧链的使用者会先攻击相对较新的弱势群体。降低侧链币的汇率是等价的。
可能会产生很多变种:例如,临时改变汇率是的在侧链上先得一分的人盖过了那些没有的人。
4.3集中化开采的风险
一个重要的担忧就是有开采费用侧链的引进是否能够给开采者施加资源压力,建立比特币集中化风险。
因为开采者是从挖块的补贴和小费中获得报酬,这符合他们的经济利益,在为不同的具有同等价值的区块链提供动态存储管理系统和波动的市场价值之间转换。
一个回应就是,一些模块链调整他们的模块头定义,这样就可以将一部分的比特币动态存储管理器纳入其中,同时给挖掘者提供一个单一的提交给比特币以及一个或多个区块链的动态存储管理器—-这被称作合并后的矿业。因为合并矿业能重新为多元模块链使用,挖掘者可以要求每一条模块链提供更多的报酬。
因为挖掘者为许多模块链工作,更多资源需要被追踪和检测。为小团体模块链工作的挖掘者,报酬要低于为每一条可能的模块链工作的人。小规模的挖掘者可能没办法负担每天挖掘产生的费用,与大的挖掘者相比,他们可能被置于不利的位置。
我们注意到不管怎样,矿工代表着他们工作的任何模块链的子集验证和交易选择。选择代表权是的矿工能够避免大部分附加的资源要求,或者给他们还拥有检测权的模块链提供工作。这样的代表权是以模块链的中央检测和交易选择为代价的,即使这样的工作本身保持着分散性。挖掘者也可以选择不为他们拥有检测权的模块链提供工作,因此自动放弃一些补偿作为对地方验证增加的补偿。
4.4软叉风险
在比特币中,一个软叉是比特币协议之外向后兼容的为了减少一系列有效交易或者模块的附加品。一个软叉可以仅仅由绝多数挖掘计算力参与执行,而不是所有的密码。但是,参与者的安全在升级以前还只是SPV等级。软叉已经被多次应用在比特币中来配置新特性和设置新的安全协议。[And12b]
一个双向挂钩,以本文描述的方式执行,只有SPV等级,因此比比特币对矿工的忠诚度依赖更大。但是,如果所有的双方的链的面貌都互相检查并且最为软叉规则的需求互相有效,双向挂钩的安全可以和比特币一样高。
一个负面的结果就是会失去对软叉需求侧链的独立性。因为独立性是使用挂钩侧链的一个重要目标,这个结果势必会不收欢迎,除非大部分侧链都被广泛使用。缺失的钩式侧链,在这种情况下,在下一个选择上就会展开个体变化以硬叉或者软叉直接作用在比特币上。这个更加生硬,在比特币风险到来之前,提供了没有真正机制的新设施来证明它的成熟和需求。
5 应用
随着技术支柱的展开,本章节我们探讨侧链面对用户的应用,可有效延长比特币当今所不能及的事儿。
5.1 竞争链实验
我们已多次提到,其首次应用就是创造硬币的竞争链,这样可以弥补比特币的不足与供给。人们使用带有比特币的侧链,而非一个全新的货币,可避免首次发布、市场脆弱以及新用户面临的障碍等棘手的问题,他们无需再找到一个值得信赖的市场或投资开发硬件来获得竞争链资产。
5.1.1技术实验
由于侧链在技术上仍然是完全独立的锁链,因此,他们可以改变比特币的一些特点,如侧链的结构或交易,例如:
•修复不良交易性的可塑性——只能修复部分的比特币 [Wui14]——可安全地执行未确认交易链的协议。比特币交易的可塑性存在着一种问题,任意用户可扭曲交易的数据,尽管实际的交易量保持不变,但它破坏了之后交易对数据的依赖性。破坏交易可塑性的协议,其中一个例子就是概率支付[ cal12 ]。
•保护支付者的隐私,例如使用Monero环签名可以降低当事人审查交易的系统危害性,保护加密货币的互换性。Maxwell 、 Poelstra [MP14, Poe14b]以及Back[Bac13a]建议对该方面做出改进,但会泄露更多的隐私。今天,Monero 硬币可使用400环签名,但不包括比特币;侧链可避免样的垄断。
•比特币提倡采用脚本扩展(例如,有效地支持彩色硬币[jl213])。因仅有一小部分用户使用这样的扩展,但所有用户都将处理其日益复杂性和微妙作用的风险性,因此比特币不接受这种扩展。其他建议的脚本扩展包括对新加密基元的支持。例如,从更广范围上讲,Lamport签名[Lam79]是对量子计算机的一种安全保护。
由于这样的变化仅影响了硬币的交换,并未影响到硬币的创造,因此人们不需要单独的货币。拥有侧链,用户可以安全地、暂时地操作。这种方法是鼓励人们采用侧链,对于使用完全独立的竞争链的参与者来说,风险会更小。
5.1.2 经济实验
比特币的奖励也使新硬币的开发者所有收益。这有效地使货币膨胀,但根据分步计划,过段时间它会平息下来。用这种通货膨胀来补贴开发者,是补充交易费用的一个成功的方法,可以保护网络的安全。
实现侧链块状奖励的一种替换机制是滞期费,Freicoin (http://freico.in) 首创了数字货币的念头。随时间推移,反对加密货币时,所有420个未使用的输出均失去了其价值,这些丢失的价值又被开发者重新收藏,使货币供应量保持稳定,这样开发者仍然可以受益。因为滞期费的损失无处不在,突如其来,因此这比通货膨胀对使用者来说更有益;它也缓和了长期未使用“丢失”的硬币的可能性,使其当前的价值被召回,震惊经济界。以上是比特币的一种感知风险。滞期费为增加货币流通速度和降低利率创造了动力,这对整个社会都有好处(Freicoin的倡导者和Silvio Gesell’s利益理论的拥护者都这样认为)。侧链受限时,滞期费可以支付现有的价值货币开发者。其他的经济变化,包括所需的开发费、交易的可逆性、达到一定阶段即可简单剔除的输出、或侧链以外的通货膨胀/滞期费率。所有这些变化都是很难安全地处理好,但侧链创造的简易度和风险的降低提供了必要的可行性环境。
5.2资产发行
至此,我们主要思考侧链,这种侧链不需要本地货币:侧链的所有硬币最初是上锁的状态,直到他们从其他侧链上转交时才被解开。而侧链产生自己的符号或发行资产则有了其可能性,它可携带其本身的语义。它可以转移到其他的侧链上,和其他资产和货币进行交易,即使未来需要一个值得信任的团队,目前来说这些操作都在没有核心团队的信任下进行的。
发布资产链有许多应用,包括传统的金融工具,如股票,债券,凭证和借据。这使得外部协议可以委派其所有权,转移侧链上的跟踪记录,发布所有权。发布资产链也支持更多的创新工具,如智能财产。
这些技术也可在补充货币时使用[Lie01]。补充货币的例子,如社区货币,旨在优先促进当地企业发展以及企业业务联系,可支持教育、多媒体游戏,忠诚计划和在线社区等社会事业区。
适当延长脚本系统和资产意识交易格式可以从审计组件创建有用的交易,例如出价和要价,形成交易转换,产生了不对等的创作资产交换市场和更复杂的合同交易,如不可靠的选择 [FT13]。这些合同交易有助于减少比特币本身的波动。
6.未来方向
6.1碎片化力量攻击的抵御
本文主要的推动力就是双向钩链对于SPV证明的使用, 而SPV证明就是由51%多数和模块化的通过许多碎片化力量在转移测试期建立一个有效的足够长的证据锻造出来的。(后面对于这个数字有一个权衡——如果33%的碎力可以构建一个证据,那么构建一个错误的就需要67%等等)。
一些值得探索的观点:
合同保证。侧链的转移费用被从挖矿这那里扣留除非他们的碎力达到那个比特币的至少66%。这种合同对于隐秘货币来说很容易被执行,如果他们从开始被设计并且为增加模块链的交易服务。
时移费。矿工在未来从模块中收取部分费用,这样他们就会有动力区保持链的可操作性。
这可能会激励挖矿者从带外收费,避免了等待未来的链内奖励。这个计划的一个变体就是为了让挖矿者收集代币是他们在未来能够挖掘低困难模块;这有着相同的影响,但是自己接刺激着接受者挖掘链。
滞留费。可以通过滞留费给矿工模块津贴去刺激诚实挖掘。能被转移到比特币或者另一个侧链就像被转出一样,这个资金再分配将有一定的局限性。
补贴。一个侧链也可以发行自己的独立内部货币作为奖励,有效的形成一种山寨币。但是,这种山寨币有着自由的流动价值,可能改变不了波动性和市场分化。
SPV证据联合签名。引入签名者,必须签署有效的SPV证明,来监视假证据。这会导致集中化和高碎片化攻击的安全问题。一个广泛可用的权衡:签名者的要求可能只适用于高价值交易者;他们可能只有在侧链碎片占据比特币的比例很小的情况下适用,等等。
蛇鲨。现存的最新学术密码学的发展就是蛇鲨。蛇鲨是电脑做出的宇宙间最有效检验最快的0知识隐秘证据。但是,这项技术现在是被禁止的,因为在现存电脑上操作,太慢了,且现存的基础需要“信任设置”,意味着系统的创造者可以创建错误的证据。
未来主义的观点是,用一个低价值或者实验性的侧链区调用一个互信机制,唯一的工作就是为蛇鲨计划执行受信任的设置。那么模块就可以构建一个改变未输出设置的基础。他们甚至可以为先前的模块提交完整的验证,允许新用户能够赶上最新通过验证的单一块。这些证据也可以取代数字多用表,来把币从另一个链来证明发送连根据先前的一些规则是有效的。
7致谢
在此感谢Gavin Andresen, Corinne Dashjr, Mathias Dybvik, Daniel Folkinshteyn, Ian
Grigg, Shaul Kfir, midnightmagic, Patrick Strateman, Kat Walsh, 和Glenn Willen的评论员评论。
附录A 联合挂钩
部署钩式侧链的一个挑战在于比特币的脚本的表述力不足以将验证规则编译成一个SPV证明。这要求表述力加上安全、兼容、和高区分方式(例如,在一个软叉中通过转化无作业指令成为 OP_SIDECHAINPROOFVERIFY)。但是,建立新共识和部署的难度在于即使是一个新的简单的特征也是一个大型程序。这些困难是钩式侧链开始的一部分动机。我们想要的是在不需要分布脚本的情况下,找出一个为比特币提炼未来脚本能力的方式。
幸运的是,在低信任度的设计目标为的前提下,通过采用了一些附加的安全假设,我们可以以一个完全无许可的方式,做一个初始部署。通过相互不信任的职能组成一个信任的联合,任何对比特币脚本的增进都可以在外部实现。也就是说,职能部门就像一个协议适配器,去评估我们想要比特币去评估的那种规则,但是不能评估缺少脚本增强的规则。用这个我们可以得到联合挂钩。
这个方法与建立一个多重签名断链交易系统的方法一样,但是对服务器到服务器的共识过程的要求就只能由过对问题模块链的观察来完成了。结果很确定,那就是高可审性过程简化了职能的选择和监管。因为这样的相似性,许多在断链支付系统上用来提升安全和信任的技术可以被用来为联合挂钩服务。例如,不同地区的职能部门可能通过履约保证币或者永久缓存去强制抵抗匿名身份,还可以通过远程证明篡改抵抗硬件等等。[Tod13]对于小规模的使用,系统中的持币者自己就可以扮演职能部门的角色,避免第三方信任。
一旦使用了带有联合挂钩的侧链,比特币脚本的SPV确认可能仅仅被看做是一个减少信任需求的安全升级。现存的侧链可能会简单的向新的确认系统转移。这个方法也开启了附加的方法选择:挖矿所提供的动态存储管理系统对小的系统并不安全,而联合信任对大的系统又是一种风险。一条侧链可能适应性的同时采用这两种方法甚至会根据基础碎片率调整。
一个实例中,侧链可能使用3到5个职能的联合去执行比特币的双向挂钩。联合现在有256k1加密算法公钥中的P1,P2,P3,P4,P5以及侧链参与者都知道的兑换脚本模板 3 x x x x x 5 OP_CHECKMULTISIG。为了将币发送到一个ScriptPubKey SPK,想把币在侧链上变得可用的用户对跨链P2SH使用了联合计算挂钩:
Algorithm 1 GenerateCrossChainAddress
Input: A target ScriptPubKey SPK which will receive the coins in the other chain
Input: A list n
i=1 of the functionaries’ public points
Input: A redeemScript template describing the functionary requirements
Output: A P2SH address
Output: Nonce used for this instance
1: nonce ← random_128bit()
2: for i ← [1,n] do
3: Tweak i ← HMAC-SHA256(key = P i , data = nonce||SPK)
4: if Tweak i >= secp256k1_order then
5: Go back to start.
6: end if
7: PCC i = P i +G×Tweak i
8: end for
9: address ← P2SH_Multisig(template,keys = PCC))
这个派生计划是建立在BIP32 [Max11]中使用的同态技术基础之上的,允许第三方去获得公开的不可链接的地址。这个跟一个支付到连接的基础建设系统是相同的。 [GH12]在地址生成以后,就可以用币来支付了,用户稍后可以通过提供随机数、脚本公钥、和SPV证明在侧链上收到硬币来帮助他们找到模块链上支付的位置。为了帮助第三方对侧链的确认,这些价值可能被包括在侧链本身之内。因为交易是通过向P2SH地址支付来做到的同时可以向任何脚本公钥支付,所有的比特币服务向一个多重签名地址支付将立即一个使用联合侧链用户的付款。
联合挂钩方法需要向信任做出妥协,但是不需要比特币的更改,只需要参与者同意使用它病承担使用它所带来的风险。此外,要阻止他人使用侧链变得不太可能:如果联合侧脸被个人在一个封闭的社区中使用,那么它的使用可能就不会被察觉或者泄露。这个方法允许迅速展开和实验。在比特币协议采用任何改变之前,它可以让社区从挂钩侧链上获得信心。
附录B有效的SPV证明
为了将币从侧链转移到比特币,我们需要给锁在比特币模块链上的侧链币嵌入证据。这些证据需要包括(a)建立在侧链上的输出记录;(b)一个建立在输出上的证明工作有效性的动态存储管理器。因为比特币的模块链是由所有参与者共享和检测的,这些证据不能给网络增加太多负担。输出可以被很简洁的记录,但是动态存储管理器就不一定恩能做到这样。
紧密结合SPV安全
通过塑造一个攻击者或者诚实的网络,作为一个随机过程,SPV证据的秘密可能会被改变。 [MLJ14]这个随机的过程有一个有用的统计特性:因为每一个散列都要比目标价值少,同样也会比目标价至少花一倍的时间;第三个目标将花费三分之一的时间;四分之一的目标将花费四分之一的时间;以此类推。因为散列价值本身不能改变模块上的大量工作,低于需求的散列实际上,将大多数工作在链上完成。[Mil12]我们可以利用这一点来证明等量的工作只需要几个几块头。[Fri14]它能够极大地压缩列表头时仍然证明相同数量的工作。我们把这样的压缩列表称之为一个紧凑的SPV证明或压缩的动态存储管理器。
但是,工作时需要产生一个欺骗性的紧凑SPV证明和一个不紧凑的是一样的,伪造者的成功可能性不再因工作证明而导致指数衰减:疲软的机会主义攻击者有更高的“偶然”成功概率;例如,低散列的寻找非常容易。为了强调这一点,假定一个攻击者有10%的网络碎片率,并且正在试图在网络还没有那么多模块的前提下,建立1000个模块的SPV证明。下面的公式就是可以计算出攻击成功的概率
作为对比,同一时间的同一攻击者产生一个单块证明价值1000块的使用概率约10%,一个更高的概率。
详细分析这一问题及其可能的解决方案是超出了本文的研究范围。我们现在将要描述一个紧凑型SPV证明的实施,同时,提出一些潜在的办法去阻止这种攻击同时获得一些显著严谨的证据。
我们是假设的一个持续的困境。而我们注意到,比特币的困境是没有持续性,变化缓慢,不足以抵抗已知的攻击。[Bah13]因此我们考虑调整难度。
执行.紧凑的SPV证明来源于skiplist[Pug90],一个提供了使搜索登陆复杂度不需要再平衡的概率数据结构。
我们需要改变比特币,这样,不是每一个模块头都只能对应着它之前的头,它就可以致力于每一个祖先。这样,这些承诺就可以为了空间效率而被存储在数据库大树中:通过包括只有一个根散列在每个模块,我们得到了一个对树中每一个元素的承诺。其次,通过追踪SPV证据,支持者被允许跳回这个模块而不是仅仅跳回这条链的一个连接。结果是一个简单地动态存储管理器,解决了与原始模块链相同的工作。
小多少呢?假设我们一整个模块链的高度N建立一个SPV证明。假设困难是持续的,即每一个模块目标都相同。考虑寻找一个足够大的概率证明跳过所有的x区块内回到起源的可能性;就是说,在模块N到x和模块N之间。这是一个负的概率,
因此,如果我们想要一下跳过整个保存的链,我们只要搜索到一半就可以了;同样的道理,我们希望跳过这一半后的四分之一,实际上只有八分之一,以此类推。结果就是,预期的总长度就是对数原始链的长度。
对于数以百万计的模块链,预期的大小对整个数据链就是 log 2 1000000≈20信息头。这就带来了动态存储器数以千字节的范围。
但是,如果攻击者能够产生只反应头部实际上已开采的紧凑的证明,他可以以工作中被证明的微不足道的可能性来这么做。这样的一个策略是攻击者产生无效块,每个反向链接指向最近的一块。当提取一个紧凑的证据时,攻击者可以简单地跟循权重最高的链接。
我们可以调整计划,以以下几种方法防止情况发生:
通过限制跳跃的大小,我们回到比特币的性质上,概率攻击衰变的可能以指数的方式被大量工作证明。预期的证据大小是小于一个完整列表的头一个常数(与跳跃尺度成正比)因素。通过使用最大跳过尺寸而增加的工作量被证明可以得到亚线性尺寸的证据,以亚指数衰减的代价验证攻击成功的可能性。这给了更大的空间节省,同时迫使攻击者成功的可能性的概率低到足以被认为是微不足道的地步。
交互式方法或剪断并选择机制允许紧凑证明有一个小安全性降低。例如,支持者可能需要展示随机模块头(以及他们与链之间的联系),使用一些证据的一部分作为一个随机种子,这减少了攻击的概率同时持续不变因素增加证据的尺寸。
如果我们希望每条侧链有多个转移,我们可以保持父链上一个特殊的追踪侧链的小费的输出。这个输出通过独立的SPV证据移动(通过上面的几中方式紧密围绕起来),结果就是,父链很清楚离自己最近的侧链的情况。
交易证明必须是在末尾,且只能验证一个输出查询。这个担保请求中没有“失踪链接”转移证明,所以他们可能是对数的规模没有伪造风险的增加。
这使得总成本到父链与侧链数量及其长度的成正比;没有这些输出,总成本也与转移的互动链的数量成正比。
这个讨论并不详尽,优化这些权衡和促成安全保障超出了本文的范围, 这也是我们正在正在进行的研究主题。
附录C 原子互换
侧链是可操作的,这就使得使用者可以在链与链之间用原子能式地交换而不用使用挂钩。事实上,这对今天的山寨币也是可行的,虽然独立的价格很难组织起来。这很重要,因为我们已经看见,直接使用的挂钩需要相当大的事务(相应大费用)和漫长的等待期。相反,原子互换可以只使用两个交易网络,每个大小类似于普通的向地址付钱那样简单。
Tier Nolan[Nol13]的工作你计划如下:
1.在一条链上,A建立了交易向输出O1移动它的币,这个只能被两种情况赎回:(a)y一个反应a和B的签名,或者(b)A和B共同的签名。A不能广播。
A建立第二个交易,即将币从O1转回到A,加上48小时的锁住时时间。A将交易传给B进行签名。
一旦B签署了锁住的退款交易,A就可以安全的将从O1得来的币广播出去。
2.同样的,B在链上建立了交易向输出O2移动它的币,这个只能被两种情况赎回:(a)一个反应a和A的签名,或者(b)A和B共同的签名。B不能广播。
B建立第二个交易,即将币从O2转回到B,加上24小时的锁住时时间。B将交易传给A进行签名。
一旦A签署了锁住的退款交易,B就可以安全的将从O2得来的币广播出去。
3.A知道a,A就可以在O2上使用这个币,这样做,占用了B的币。
只要A这样做了,a就被透露出来而B变得可以在O1上花费这个币,这样做的话,占用了A的币。
微信掃描關注公眾號,及時掌握新動向
2.本文版權歸屬原作所有,僅代表作者本人觀點,不代表比特範的觀點或立場
2.本文版權歸屬原作所有,僅代表作者本人觀點,不代表比特範的觀點或立場