元素链

元素链是BlockStream实现的一个参考侧链,Alpha(阿尔发)版于2015年7月推出。元素链Alpha旨在演示技术并且提供测试环境,目前还未开发完成。作为一个与比特币测试网络相对接的侧链,元素链Alpha有可能被其他技术
取代。

元素链Alpha是比特币测试链的一个侧链。它依赖可审计的联合签名者来管理传输到侧链的测试币(参见确定性锚定特性),并且以此来产生签名区块(参见签名区块特性)。这样做能快速探索侧链实施的可能性,考虑如何使用
不同的安全措施。在未来版本中,升级协议接口以完全支持去中心化的侧链联合挖矿,最终达到完全双向锚定的目标。

元素链所包括的技术如下。

1.私密交易

元素链中最具创新意义的特性莫过于私密交易。私密交易中的金额仅有该交易的参与者知道(或者参与者指定的人),元素链以密码学算法保证不会多花币。比特币用地址来保证隐私,同时公开交易让别人验证;元素链在保护
个人隐私上更进一步,隐藏了交易金额。金额隐藏的具体技术见下文。

私密交易最明显的一点是引入了一种新地址类型,称为私密地址。私密地址含了一个盲化因子,比普通比特币地址更长,这种地址在元素链Alpha版本中是默认地址。

2.隔离见证

Alpha版的交易中,签名从交易中分离出来。此举完全消除了任何已知形式的交易可塑性的威胁,并且允许有效的区块链剪枝。

在比特币中,交易包含转账信息(未花费交易集、地址和金额)和用于证明交易合法性的签名;对于隔离见证来说,交易ID仅由转账信息生成,区块中包含签名。这样做有如下好处:

①比特币有一些“正常化交易ID”的建议,隔离见证包含了这些建议。因为正常化交易ID机制在可塑性的输入后还要重写所依赖的交易,对高层协议如闪电网络来说是必要基础。

②交易ID不覆盖签名,以比BIP62更好的方式,避免了交易可塑性的所有形式,而后可以安全地使用更大尺寸的多语句智能合同。

③具有更有效提供SPV证明(用于轻钱包)的潜力,因为签名可以从交易中被省略而不破坏默克尔树结构。节点无须存贮或验证签名,可以把签名从磁盘中删除或无须在网络上传输它,以大幅度减少区块链存储容量和宽带要求。
但在Alpha版本中,证明数据比比特币签名更占空间,因为还包含了大段的输出金额证明(因为使用了私密交易,隐藏了金额,因而要使用密码学证明以防止多花)。

3.相对锁定时间

为序列号赋予了新的意义,使已签名交易被确认后,其输入在一段特定时间内保持无效,目的是支持交易替换功能。

比特币每个交易都有个序列号,初始想法是相比低序列号,最高序列号应该最占优势,矿工应该更喜欢它,但这个想法从未真正实现。在假设矿工利益最大化的前提下,为了使得交易替换机制得以加强,新增一个操作码
CHECKSEQUENCEVERIFY,用于比特币脚本检查序列号限制。

相对锁定时间与常规锁定时间用途一致,如时间锁定的担保服务等。但所指的“相对”会使以区块链为媒介的应用更有意思。例如双向锚定阶段可描述为以交易开始的一个相对锁定时间条件,该交易声明了赎回证据。

4.Schnorr签名验证

元素链未使用ECDSA签名方案,而使用了同一曲线上的Schnorr签名方案。其好处如下。

①更有效的n/n阈值签名。多个Schnorr签名可以被合成一个签名,该签名对公钥的总和来说是有效的,所以任意大的n/n多签名只需用一个合签名就可以完成,同时可以被一个CHECKSIG操作所验证。

②更小的签名容量(64字节,而非71~72字节),没有DER编码问题。潜在支持批量验证(同时验证32个签名达到最高2倍加速),这需要知道R.y坐标(ECDSA忽略这个参数)和脚本级别,确保所有签名验证错误导致脚本运行错
误(比如所有CHECKSIG操作与CHECKSIGVERIFY类似),以便提供更强的安全证明。

③能证明没有固有的签名可塑性问题。ECDSA有可塑性问题,并且不知道是否存在其他形式的可塑性问题。注意,分离证据使得签名可塑性不会导致交易可塑性。

④比ECDSA的签名和验证速度更快一点。

5.新操作码

元素链Alpha版本新增几个新脚本操作码。

①被禁用的操作码。比特币以前支持许多操作码,一些操作码在2010年因为安全考虑被禁用,需要硬分叉才能重新启用。Alpha版本重新启用了一些被禁用但是安全的操作码,如字符串连接和字串操作码,整数位移码和几个位操
作码。

②DETERMINISTICRANDOM操作码:根据种子在一个范围内产生一个随机数。

③CHECKSIGFROMSTACK操作码:验证堆栈中对消息的签名,而不是验证对交易本身的签名。

这些新操作码有一些使用场景,包括双花保护债券、彩票、允许1/N多签名的默克尔树结构(N可为成千上万)、概率支付等。

6.金额隐藏技术

以下工作由亚当·拜克首次在Bitcointalk上的帖子《同态值比特币》中提出。

①佩德森的承诺。CT(密码学承诺)的基础密码学工具是佩德森的承诺。

承诺场景让你把一段数据作为私密保存,但是要承诺它,使你以后不能改变该数据。一个简单的承诺场景用哈希函数构建如下:

如果你仅告诉别人承诺,别人没法确定你承诺了什么数据。但你后来揭露了盲化因子和数据,别人可以运行该哈希函数来验证是否与你之前的承诺相匹配。盲化因子必须存在,否则别人可以试图猜测数据。如果你的数据比较少
而简单,猜测成功的可能性比较大。

其他相关博客:

信用的可计算性

区块链技术可以解决公证和认证的问题

从Stampery到Chronicled,区块链公证业务的实践

区块链的演化