侧链:Elements(元素链)
侧链:Elements(元素链)
本文译自元素链官网:http://elementsproject.org 2015/06/10
译者:申屠青春 深圳大学ATR国防科技重点实验室博士 新浪微博 @我看比特币
注意:本文可随意转发,请留下译者信息,如果觉得本文对你有用,请给译者捐赠,以便翻译更多比特币的核心资料。捐赠地址:1AvjkJrChQDDJ8RhVZ9XYyc422ikUyJA12
译者前言
比特币在国内已经众所周知,但是技术研究并未有效开展,大部分人处于知道和了解程度,一个重要原因是大多数比特币核心资料都是英文,很少有人能静心看完如此繁杂的英文资料。本人拟在研究其英文技术的同时,对一些重要资料进行翻译,让更多的圈内人对比特币有更多的理解。
本文涉及侧链技术,是元素链Alpha版本的发布文章。
正文
元素链是Blockstream的开源侧链项目,给比特币快速带来许多创新技术。元素链的许多特性已经在技术社区中已经提出过或者已经开发成功的,这些技术可以被任意组合应用到任意侧链中。
在没有承载上千万比特币的区块链中开发的感觉很好,这还是一条产生更多应用的路。
1当前元素链
1.1私密交易
元素链中最具创新意义的特性莫过于私密交易。私密交易中的金额仅由该交易的参与者知道(或者还有指定的可以知道的人),元素链以密码学算法保证不会多花币。
比特币用地址来保证隐私,同时公开交易让别人验证,元素链在保护个人隐私上更进一步。隐私保护非常重要,如果财务隐私保护不好,会对商家和用户产生严重安全和隐私问题。一些盗币者和诈骗者会重点关注高价值目标,竞争者会知道商家的商业细节,谈判地位会被泄漏。
私密交易最明显的一点是引入了一种新地址类型,称为私密地址,私密地址含了一个盲化因子,比普通比特币地址更长,这种地址在元素链Alpha版本中是默认地址。
1.2证据分离
Alpha版本的交易中,用于证明其合法性的密码学证据(译者按:即签名)从交易中分离。此举完全消除了任何已知形式的交易可塑性的威胁,并且允许有效的区块链剪枝。
在比特币中,交易包含转帐信息(未花费交易集、地址和金额)和用于证明交易合法性的证据(输入签名),对于分离证据来说,交易ID仅由转帐信息生成,区块分别提交到证明数据。有如下好处:
l 比特币已经有一些“正常化交易ID”的建议,更有效更有用的分离证据包含了这些建议。因为正常化交易ID机制在可塑化输入后还要重写所依赖的交易,这样的正常化对高层协议如Lightning(译者按:闪电?有这个协议吗?)来说是必要基础。
l 交易ID不覆盖签名,此举以比BIP62更基础的方式,避免了交易可朔性的所有形式,而后可以安全地使用更大尺寸的多语句智能合同。
l 具有更有效提供SPV证明(用于轻钱包)的潜力,因为签名可以从交易数据中省略而不破坏Merkle树结构。节点无需存贮或验证旧交易签名的潜力,把签名从磁盘中删除,或无需在网络上传输它,以大幅度减少区块链存贮容易和宽带要求。在Alpha版本中,签名数据比比特币签名更占空间,因为它还包含了大段的输出金额证明(译者按:因为使用了私密交易,隐藏了金额,因而要使用密码学证明来防止多花)。
1.3相对锁定时间
对序列号赋予了新的意义,使得已签名交易被确认后,其输入在一段特定时间内保持无效,目的是支持交易替换功能。
比特币每个交易都有个序列号,初始想法是相比低序列号,最高序列号应该最占优势,矿工应该更喜欢它。但这个想法从未真正实现,未完成的比特币相关代码看起来作了以下假设:即使低序列号能带来更多收益,矿工也会更诚实更喜欢高序列号。这个假设被证明很危险,即便常规矿工(利益最大化驱动的矿工)很少打破这个规则,大多数人认为用序列号替换交易没有用处,因为没有手段来加强“诚实”行为。序列号含义改变,在假设矿工利益最大化前提下,使得交易替换机制得到加强。新增一个操作码CHECKSEQUENCEVERIFY用于比特币脚本检查序列号限制。
相对锁定时间与常规锁定时间用途一致,如时间锁定的担保服务等。但所指的“相对”形式在以区块链为媒介的应用将更有意思。举例:双向锚定阶段可描述为以交易开始的一个相对锁定时间条件,该交易声明了提现证据。
1.4Schnorr签名验证
元素链未使用DER编码的基于secp256k1曲线之上的ECDSA签名方案,CHECKSIG操作码和相关操作码使用在同一曲线上的Schnorr签名方案。好处如下:
l 更有效的n/n阀值签名。多个Schnorr签名可以被合成一个签名,该签名对公钥的总和来说是有效的,所以任意大的n/n多签名只需用一个合签名就可以完成,同时可以被一个CHECKSIG操作所验证。
l 更小的签名容量(64字节,而非71-72字节),并且没有DER编码问题。潜在支持批量验证(同时验证32个签名达到最高2倍加速),这需要知道R.y坐标(ECDSA忽略这个参数)和脚本级别,确保所有签名验证错误导致脚本运行错误(比如所有CHECKSIG操作与CHECKSIGVERIFY类似),以便提供更强的安全证明。
l 能证明没有固有的签名可塑性问题。ECDSA有可塑性问题,并且不知道是否存在其他形式的可塑性问题。注意:分离证据使得签名可塑性不会导致交易可塑性。
l 比ECDSA的签名和验证速度为快一点。
1.5新操作码
元素链Alpha版本有几个新脚本操作码,除此之外的操作码比特币都支持。
l 被禁用的操作码。比特币以前支持许多操作码,一些操作码在2010年因为安全考虑被禁用,需要硬分叉才能重新启用。其中一些操作码有明显的风险(如无限制的内存使用),但是并非所有被禁用的操作码都有风险。Alpha版本重新启用了一些被禁用但是安全的操作码,如字符串连接和字串操作码,整数位移码和几个位操作码。
l DETERMINISTICRANDOM操作码:根据一个种子在一个范围内产生一个随机数。
l CHECKSIGFROMSTACK操作码:验证堆栈中对消息的签名,而不是验证对交易本身的签名。
这些新操作码有一些使用场景,包括双花保护债券、彩票、允许1/N多签名的merkle树结构(N成千上万)、概率支付等。
1.6签名覆盖金额
CHECKSIG操作码验证的签名已经覆盖交易的输出金额,避免使用硬件签名设备来获得以前的交易内容,如果有人伪造输入,生成的签名无论如何都是无效的。
这个改变的另一个影响是签名时需要知道输入金额(无论使不使用盲签名)。
1.7确定性锚定
确定性锚定使得元素链Alpha版本可以承载测试网络的测试币,而无需对测试网络进行任何改变。向Alpha版本发送测试币时,由所有完全节点验证,也可以用RPC调用让测试网络节点来验证区块链关系,而无需压缩的测试网络SPV证明。从Alpha版本发送测试币到测试网络是通过官方人员联合会进行的,他们被暂时信任以保存Alpha版本的测试币(译者按:由某些人掌握所有币并且向测试网络发送币,这听起来不是什么好主意,不过现在只是测试币,他们也表示这只是过渡方法,一旦运行成熟并且在比特币主链上运行时,只需脚本,无需人来掌握和参与,下文有提到)。
侧链,类似于其他竞争链,以联合挖矿保证安全性。然而在一个新区块链刚开始的阶段,除非一开始就有许多矿池采用了联合挖矿,否则会有一个低算力的阶段。在早期低算力阶段,可能会面临安全风险甚至是算力攻击。鉴于同步分散的比特币算力的难度,我们需要一个机制来安全引导元素链。我们在这个Alpha版本中以官方人员确认作为手段,并且正计划下一个版本引入联合挖矿。
1.7签名区块
SHA256d工作证明机制被脚本系统替换,只签名区块而非交易。换句话说,动态成员多方签名(DMMS)被静态成员多方签名所替换。这在以前被称为“私链”。
http://freico.in/docs/freimarkets.pdf 。
元素链Alpha版本使用有门限的官方人员作为协议接口,同时对交易所在区块签名。下个版本将用联合挖矿替换区块签名,尽管官方人员会继续把传输交易通知给主链。签名区块能让交易过程正常进行,直到联合挖矿实施。我们的意图是最终以完全去中心化的双向锚定机制替换官方人员机制。
2建议的元素链
以下是无素链正在开发的一些特性,但还未能提供测试。
2.1基本资产发布
用户可以发行自己的资产,表示基本资产类型如比特币的所有权转移过程,理论上能发行任何资产,如凭证、优惠券、货币、存款、债券、股票等等(根据辖区的监管要求而变化)。
这就为创建无需信任的交易所、期权和其他高级智能合约开辟了道路,这些智能合约可以包含任何资产和“主链币(hostcoin)”(一种内在资产,其ID等于创世块的HASH或者区块链ID;在Alpha中是指由测试币支撑的联合会锚定货币,参见“确定性锚定”部分)。
所有输出以资产识别码来标识,Alpha版本修改了共识规则以便每个资产的输入和输出分别检查。引入了一个新的交易类型用于创建发行资产(称为资产定义交易)。与coinbase交易类似,资产定义交易有一个空输入,与coinbase交易不同的是资产定义交易除空输入外,还有更多的输入项。这个差异不仅帮助我们区分两种交易,而且还确保了资产ID(交易的SHA256d哈希值)的来源。在一个资产定义交易中,以0为资产ID的任意数量的输出可以包含任意输出金额,它们会被认为是新发行资产的初始未花费输出。
这种技术在许多方面与彩色币类似,但是明确且共享加强的标识有如下好处:
l 更有效地支持SPV钱包;
l 允许更复杂的智能合约;
l 从其他智能合约中获利(如:在Alpha上私密交易和彩色币不兼容)
l 为更智能的合约开启了道路,这些智能合约依赖区块链,可以操作更多资产。
当前只有主链币可以用于支付费用,但是应该可以用其他资产来支付费用。第一个发布版本中,所有资产都必须在资产定义交易中发行。未来版本允许在资产定义交易之后动态增加数量,允许发行者创建新资产。未来版本还会实现应用于P2P借贷的利息,以及带滞挪金(负利息)的发行资产。
2.1掩模签名哈希模式
新操作码CHECKSIG2允许任意的、矿工可写的输入输出掩模,用于建立更复杂的合约化预承诺场景,比如在一个分布式资产交易所中,某人对自己的买卖请求签名,预先承诺买卖价格和买卖数量。
3测试网络侧链演示:元素链Alpha版本
为了让社区更容易测试元素链,本项目把最优秀的思想融合到正在开发的侧链。第一发布版本是元素链Alpha版本,一个为开发者测试的侧链和网络,其中引入了几种侧链技术,并且锚定到比特币测试链。与比特币一样,所有代码开源。我们正在为侧链努力,并且鼓励其他开发人员向本项目作出贡献。
元素链Alpha旨在实现技术演示并且提供测试环境,目前建议的元素链还未开发完成,作为一个测试网络的开发中的侧链,本链将短期存在,并且有可能被其他技术取代。
元素链Alpha是比特币测试链的一个侧链,尽管当前的锚定机制正如侧链白皮书附录A中所说,是通过中心化协议接口实现的。它依赖可审计的联合签名者来管理传输到侧链的测试币(参见确定性锚定特性),并且以此来产生签名区块(参见签名区块特性)。这样的做法能快速探索侧链实施的可能性,考虑如何使用不同的安全措施。我们计划在未来版本中,升级协议接口以完全支持去中心化的侧链联合挖矿,最终达到完全双向锚定的目标。
源代码:
https://github.com/ElementsProject/elements
Alpha版本:
https://github.com/ElementsProject/elements/tree/alpha
微信掃描關注公眾號,及時掌握新動向
2.本文版權歸屬原作所有,僅代表作者本人觀點,不代表比特範的觀點或立場
2.本文版權歸屬原作所有,僅代表作者本人觀點,不代表比特範的觀點或立場