「区块链」Mimblewimble的核心无脚本脚本(Scriptless Scripts)

原创 你的依赖  |  文章来源:币圈达人发布时间:2020-05-24 01:49  阅读 120 次 评论 0 条
众人帮 趣闲赚 牛帮
摘要:

无脚本脚本(Scriptless Scripts)定义
无脚本脚本是一种通过使用Schnorr签名在链外执行智能合约的方法。(文末有抽奖)
无脚本脚本的概念源于Mimblewimble,Mimblewimble是一种区块链设计,除内核及其签

无脚本脚本(Scriptless Scripts)定义

无脚本脚本是一种通过使用Schnorr签名在链外执行智能合约的方法。(文末有抽奖)

无脚本脚本的概念源于Mimblewimble,Mimblewimble是一种区块链设计,除内核及其签名外,不存储永久数据。Mimblewimble的基本属性包括隐私和扩展性,这两者都需要实现无脚本脚本。

无脚本脚本的好处

无脚本脚本的好处是功能性、隐私性和效率。

功能性

关于功能,据说无脚本脚本增加了智能合约的范围和复杂性。当前,如在比特币脚本中一样,限制源于网络已启用的OP_CODES的数量。无脚本脚本将智能合约的规范和执行从网络转移到仅涉及智能合约参与者的讨论中。

隐私

关于隐私,将智能合约的规范和执行从链上转移到链外可以增加隐私。在链上时,智能合约的许多细节都共享给整个网络。这些详细信息包括参与者的数量和地址,以及转移的金额。通过将智能合约放到链下,网络仅知道参与者同意已满足其合约条款,并且所讨论的交易是有效的。

效率

关于效率,无脚本脚本将需要验证和链上存储的数据量减至最少。通过将智能合约移离链下,可以减少全节点的开销,并降低用户的交易费用。

无脚本脚本列表

在本文中,将介绍各种形式的脚本,包括:

1. 同步无脚本脚本

2. 适配器签名

3. 零知识有条件⽀付

Schnorr签名的角色

首先必须定义Schnorr签名的基本原理。签名者有一个私钥x,随机私钥r.G是离散日志硬组的生成器,r=rG是公共nonce,P=xG是公钥。

然后可以将消息m的签名s计算为简单的线性事务

所选行上的位置被视为数字签名,即所有需要提交的所有数据的哈希值。验证方程式涉及方程式中每个项与G的乘积,并考虑了密码假设(离散对数),其中G可以被乘而不能除,从而防止了解密。

椭圆曲线数字签名算法(ECDSA)签名(在比特币中使用)在x和r中不是线性的,因此用处不大。

Schnorr多重签名

多重签名(multisig)具有产生签名的多个参与者。每个参与者可能会产生一个单独的签名并将其连接起来,从而形成多重签名。

使用Schnorr签名,一个人可以拥有一个公钥,这是许多不同的人的公钥的总和。生成的密钥是一个签名可以验证的密钥。

multisig的公式包括所有分量的和;因此所有nonce和s值都导致multisig的公式。

因此可以看出,这些签名本质上是无脚本的脚本。多个参与者的独立公钥共同形成一个单独的密钥和签名,在发布时,不会泄露所涉及参与者的数量或原始公钥的详细信息。

适配器签名

可以修改此multisig协议以生成适配器签名,该签名用作所有无脚本脚本脚本函数的构建块。

适配器签名不是作为带有密钥的消息的完全有效的签名,而是承诺同意发布的签名将揭示一个秘密。

这个概念类似于原子交换。但是没有实现脚本。由于这是椭圆曲线密码学,因此只有椭圆曲线点的标量乘法。幸运的是,类似于散列函数,椭圆曲线函数以一种方式起作用,因此可以简单地共享椭圆曲线点(T),并且秘密将为其对应的私钥。

如果考虑双方,而不是在multisig协议中提供他们的nonce R,则除R(即R+T)之外,还考虑并发送一个盲因子,作为椭圆曲线点T。因此可以看出R不是盲的,而是被秘密值T所抵消。

在这里,Schnorr multisig构造被修改为第一方生成。

其中t是共享秘密,G是离散对数硬组的生成器,r是随机nonce。

使用此信息,第二方生成

消息m中包含要交换的代币。第一方现在可以计算完整的签名,这样

然后,第一方计算适配器签名s'并将其发布给第二方(以及其他正在侦听的人)

第二方可以通过断言s'G来验证适配器签名s'

但是这不是有效的签名,因为散列的随机数点是R + T而不是R。

第二方无法从中检索到有效的签名,需要求解ECDLP才能恢复s′+t,这实际上是不可能的。

在第一方广播s要求获得消息m中的代币后,第二方可以从

以上是非常笼统的。但是也可以通过附加辅助证明来获得适配器签名,该适配器签名将允许将辅助协议的正确移动转换为有效签名。

同步无脚本脚本

原像(Preimages)

以原子方式执行独立事务是通过预映像实现的。如果两个事务需要将preimage放在同一个散列中,那么一旦一个事务被执行,preimage就会被公开,以便另一个也可以被公开。原子交换和闪电通道都是使用这种结构。

两个Schnorr签名的区别

果我们考虑两个Schnorr签名的区别:

可以通过将每个项乘以G并确认代数正确性,以与单个Schnorr签名相似的方式验证上述方程式:

必须注意的是,差异d正在被验证,而不是Schnorr签名本身。d用作两个独立Schnorr签名之间的转换密钥。给定d和s或s′,可以计算另一个。所以拥有d使这两个特征原子化。此方案不会将两个签名链接起来,也不会损害它们的安全性。

对于原子事务,在设置阶段,有人向对方提供值d,并将其断言为正确的值。交易签名后,可以对其进行调整以完成另一笔交易。实现了原子性,但只有拥有此d值的人才能使用。通常亏损的一方需要d值。

值为原子性提供了一个有趣的性质。它在签名公开之前被共享,而签名公开后又允许两个事务成为原子事务。通过利用任何两个Schnorr签名的差异,一个人可以构造成绩单,例如原子交换多重签名合约。

这是Mimblewimble的一项关键功能,以前认为该功能无法支持原子交换或闪电通道。

带有适配器签名的原子(跨链交换)示例

Alice在一个特定的区块链上有一定数量的代币;Bob在另一个区块链上也有一定数量的代币。Alice和Bob想进行原子能交换。然而两个区块链都不知道对方,也无法验证对方的交易。

实现此目标的经典方法涉及使用区块链的脚本系统来提出哈希原图像挑战,然后在两边都显示相同的原图像。Alice知道原像后,便将其拿走以拿走代币。然后Bob将它从一个链条复制到另一条链条上以收取他的代币。

使用适配器签名,同样的结果可以通过简单的方法实现。在本例中,Alice和Bob都在每个区块链的两个输出中的两个上投代币。它们并行签署multisig协议,然后Bob会使用相同的值T向Alice提供每一面的适配器签名。这意味着对于Bob来说,要拿代币,他需要显示t;为了让Alice拿走她的代币,她需要露出T。Bob然后替换其中一个签名,并发布t,拿走他的代币。Alice从区块链上可见的最终签名计算t,并使用它来显示另一个签名,将她的代币给Alice。

因此可以看出实现了原子性。人们仍然可以交换信息,但是现在区块链上没有明确的哈希或原像。无需脚本属性即可实现隐私。

零知识有条件⽀付

零知识有条件支付(ZKCP)是一种交易协议。该协议允许买方以私密,可伸缩,安全且重要的是在不信任环境中的方式使用硬币从卖方购买信息。预期的信息只有在付款时才能传输。买卖双方无需相互信任或依赖第三方仲裁。

⽐特币开发者 Greg Maxwell 早在 2011 年就在⽐特币维基⽹站上提出了 「零知识有条件⽀付」(ZKCP)的构想。采用比特币这个被 模拟 出来的第三方来充当 交易支付 中的可信第三方。由于比特币网络是去中心化,因而这个第三方将会是一个 零信任第三方。

通过这个⽅案,买卖双⽅可以通过 BTC 进⾏数据的交易,并且可以做到所谓的「原子交换」,卖家在收款的瞬间,买家拿到数据。这个原理其实⾮常简单,下面来讲述下整个过程:

主角

· 卖家:Alice

· 买家:Bob

第一步:Alice 将「数据」⽤⼀个「钥匙」 加密,锁在箱子里面。

第二步:Alice 将箱子发送给 Bob,Alice 还将附加⼀个「零知识证明」,证明两个事实:(1)箱子可以用钥匙打开,(2) 钥匙的哈希等于一个值 「h」

第三步:Bob 检查零知识证明,确认上述事实为真。然后 Bob 将零知识证明中的一部分撕下来作为「收货收据」。这个收据上写着钥匙的哈希,也就是「h」

第四步:Bob 创建⼀个智能合约,锁定 1BTC,写⼊「h」。⽀付脚本要求:凡是可以提供「h」的哈希原象的⼈可以提⾛这枚 BTC

第五步:Alice 向智能合约出示钥匙

第六步:智能合约检查「钥匙」是否和「收货收据」匹配

第七步:如果智能合约通过检查,则它把 1BTC 付给 Alice,同时把钥匙交给 Bob。

第八步:Bob 用「钥匙」打开「箱子」,取出数据。至此,双方完成交易。

Mimblewimble的核心无脚本脚本

如前所述,Mimblewimble是一种区块链设计。与比特币类似,每个交易都有输入和输出。每个输入和输出都有一个机密的交易承诺。机密承诺有一个有趣的特性,在有效的平衡交易中,可以从输出承诺中减去输入,确保Pedersen值的所有值都平衡。考虑到这些输入和输出的差异,会得到事务中每个输出和每个输入的所有者的multisig密钥。这称为内核。

mimblewible块将只具有由上述多余值创建的新输入、新输出和签名的列表。

由于值是同态加密的,节点可以验证没有代币被创建或销毁。

引用了zkPoD:区块链,零知识证明与形式化验证,实现无中介、零信任的公平交易--郭宇(安比实验室创始人)

历史上的今天:

本文地址:https://www.u5881.com/7748.html
版权声明:本站推荐的部分活动具有时效性,老淘本人并不能保证当您看到本文时,该项活动是否仍在继续。

发表评论


表情