在Mimblewimble中,应用于未使用的事务输出(UTXO)的比特币类multisig的概念实际上并不存在。
在比特币中,多签名支付通常与比特币相关。付费给Script Hash”(P2SH)功能组合为将资金发送到P2SH支付地址,然后从那里管理支出的一种方式。赎回脚本本身设置UTXO链接到要使用的P2SH支付地址所必须满足的条件。
与比特币不同,Mimblewimble交易不涉及支付地址,因为所有交易都是加密的。使用Mimblewimble UTXO的唯一要求是能够解密(或解锁)包含代币的Pedersen承诺;不需要这样。Owner”签名。一个典的Mimblewimble UTXO是这样的:
08年c15e94ddea81e6a0a31ed558ef5e0574e5369c4fcba92808fe992fbff68884cc
另一个根本的区别是,对于任何Mimblewimble事务,所有各方,即所有发送方和所有接收方,必须进行交互才能完成事务。
背景知识
比特币m-of-n Multisig
m-of-n multisig应用程序有多个用例,例如1 / 2零用现金帐户、2 / 2双因素身份验证钱包和2 / 3板帐户。
”“降价
RedeemScript = AMPL lt;OP_2 AMPL gt;AMPL lt;pubkeygt;AMPL lt;B pubkeygt;AMPL lt;C pubkeygt;AMPL lt;OP_3 AMPL gt;OP_CHECKMULTISIG
‘ ‘ ‘
P2SH支付地址是赎回脚本的结果,使用sha-256和ripemd-160进行两次哈希,然后使用前缀0x05编码Base58Check:
当你想要修改密码的时候,你可以使用下面的方法:= RIPEMD160 digest (SHA256 (redeemScript)) P2SHAddress = base58check。编码(“05”,redeemScriptHash)
现在可以将多个付款发送到P2SH支付地址。无论赎回脚本的内容如何,P2SH支付地址的一般融资交易输出脚本格式如下:
ScriptPubKey = OP_HASH160 AMPL lt;RedeemScriptHashgt;OP_EQUAL
OP_HASH160是sha-256和ripemd-160的组合。2 / 3 multisig赎回交易的输入脚本如下:
ScriptSig = OP_0 AMPL lt;Asiggt;AMPL lt;Csiggt;AMPL lt;RedeemScript;
并将费用和资金交易脚本(验证脚本)合并为
ValidationScript = OP_0 AMPL lt;Asiggt;AMPL lt;Csiggt;AMPL lt;RedeemScript;OP_HASH160 AMPL lt;RedeemScriptHashgt;OP_EQUAL
什么是签名?
部分签名是按照与redeemScript中定义的公钥相同的顺序创建的。对事务的简化序列化十六进制版本进行签名——包括输入事务ID和UTXO索引、要支付的金额、scriptPubKey和事务锁定时间。每个连续的部分签名都包含前面的部分签名和要签名的简化事务数据的序列化,从而在签名数据中创建多个交叉引用。结合公开密钥,证明交易是由比特币的真正所有者创建的。
如何将更改重定向到multisig P2SH?
比特币交易可以有多个接收者,P2SH multisig交易的资金接收者之一可以是原始的P2SHAddress,将变化发送回自己。对同一地址的循环支付是允许的,但这些地址将缺乏保密性。或者,您可以使用一组新的公钥,在每次完成P2SH multisig事务收集更改时创建一个新的赎回脚本,但是管理起来会更加复杂。
Mimblewimble区块链的安全性?
Mimblewimble区块链依靠两个互补的方面来提供安全性:Pedersen的承诺和范围证明(以防弹范围证明的形式)。Pedersen承诺,例如,C (, k) = (H + k g),提供完全隐藏和计算约束的承诺。
在Mimblewimble中,这意味着具有无限算力的对手可以确定一对’, k’,因此C (, k) = C (‘, k’)在合理的时间内挑战时的另一个值(计算绑定)。但是,确定用于创建承诺的特定对和k是不可能的,因为有多个对可以生成相同的C(完全隐藏)。
除了证明该范围确保所有的值都是正的并且不是太大(严格地在区间[0,264-1])之外,它还禁止第三方锁定他们自己的钱,如下一节所述。因为Mimblewimble的承诺是完全保密的,所有权也无法证明,所以任何人都可以尝试在承诺中使用或乱扔未使用的硬币。幸运的是,任何新的UTXO都需要一个范围证明,如果输入承诺不能打开,就不可能创建这个证明。
范围证明的重要性
防弹距离保护在确保区块链安全方面的作用如下所示。令Ca (1, k1)为a + ldquo of Alice;关闭AMPL在;输入UTXO承诺,一个坏演员Bob试图锁定它。Bob知道Mimblewimble区块链中的所有承诺都是同构的。这意味着他理论上可以使用爱丽丝相反的承诺作为输入,并创建一个新的输出事务中,在承诺的总和等于零,即(0)。对于这个相反的输出,鲍勃将尝试添加一个额外的盲因子,kx,承诺,矿工们验证事务不会抱怨。
有效的Mimblewimble交易将采取以下形式:
如果Alice未使用的隐藏盲承诺为(1H+k1G),且(2H+k2G)的值等于支付给矿工的成本。H.新产生的承诺(1H+ (k1+kx) G)也是Alice和Bob无法承受的,因为他们都不知道k1+kx的总盲因子。幸运的是,为了按照事务验证规则的要求为新输出(1H+ (k1+kx) G)构造防弹作用域证明,必须知道1和k1+kx的值,否则验证器(即Bob)将无法说服诚实的验证者(即即1是非负的(即,在[0,2,n -1]范围内)。
如果鲍勃能说服爱丽丝,她必须创建一个基金,让他们俩都能签署(2 / 2 multisig),那么从理论上讲,如果他们在一起创建一个关系(1),就有可能创建所需的防弹范围证明。
安全共享协议
多个参与者共同创建一个包含多个步骤的事务,需要以这样一种方式共享信息,即他们共享的内容不会对他们不利。每个步骤都需要一个证明,单个步骤的证明不应该在不同的上下文中重播。Merlin文本是实现这一点的协议实现的一个很好的例子。本文提出了一种简单的信息共享协议,该协议可以用Merlin脚本实现。
Mimblewimble n-of-n多防弹UTXO
Mimblewimble事务不能使用P2SH形式的智能/交换脚本,但是可以在用户的钱包中实现类似的功能。对于n-of-n多方防弹UTXO, Shamir的秘密共享方案(SSSS)将被用于使n-of-n方完成交易。SSSS是n的平方,带有一个shard (share) f (I),用于i∈{1,和白马王子一种秘密s的方法,它允许任意m方重构消息。SSSS的基本思想是可以通过m个点绘制无限多个m次多项式,而m + 1个点需要定义一个唯一的m次多项式。图1显示了一个简化的解释;SSSS在有限域上使用多项式,这在二维平面上是无法表示的。
分片分配根据皮德森的可验证秘密分享(VSS)方案,并扩展了瑞士,交易处理秘密年代本身和共享的多项式的系数f (x)。这就是广播给所有政党,每个接收的致盲因素g (I)对应于其秘密分片f (I)。这将使双方能够验证他们的切分是正确的。
秘密共享
我们的朋友Alice, Bob和Carol决定创建一个2 / 3的方案,这样他们中的任何两个都可以授权他们的多党UTXO。他们还希望能够建立一个程序,在这个程序中,他们可以执行三轮支出,**一轮是**一轮。他们都在思考如何以一种安全的、可重构的方式共享盲点。他们听说了Pedersen的VSS方案,并决定使用它。
几轮数据
各方将根据Pedersen的VSS方案,预先计算三个私有盲因子kn-i并进行分片。该方案每轮需要三个切分元组(kn-party-i, bn-party-i)和三个承诺向量C2 (kparty-1)。(附录C显示了一个私有盲因子的Alice共享分片的示例。)当共享每个盲因子的一组信息时,双方立即按照Pedersen VVS协议中的验证步骤验证接收到的分片的正确性。他们将继续这样做,直到所有信息都设置好、准备好并存储在钱包中。
工作原理
双方建立了最初的多方交易和防弹覆盖,与3 / 3案件相同。为了做到这一点,他们使用了在第一轮测试中预先计算出来的私人因素。现在,当他们决定花费多个UTXO时,只需要其中的两个。
鲍勃和卡罗尔决定花和以前一样多的钱,为了做到这一点,他们必须在第一轮和第二轮中重建爱丽丝的个人盲目因素。因为爱丽丝没有赢得任何东西,她不需要在场设置个人的致盲卡罗尔需要做输出UTXO因素。因此,鲍勃和卡罗尔分享了爱丽丝给他们的碎片:
现在,他们可以重建这种盲目的因素,并验证它的前景。如果验证失败,他们将停止协议,并安排与Alice会面。他们可以一起找出错误信息的来源。
在这一轮中,他们选择Bob在建立和完成事务时扮演Alice的角色。Bob能够这样做是因为他现在有了Alice的私有盲因子k1-1和k1-2。在代表Alice构建签名时,他选择了一个她不知道的私有随机数,因为它只用于构建签名,不会再使用。鲍勃和卡罗尔完成了交易,让爱丽丝知道了这一点,并告诉她,她需要在第二轮连续支付多个付款。
下一次,当我们的两个朋友想要使用剩下的UTXO或全部UTXO时,他们将重复这些步骤,从第二轮开始。唯一的不同是该角色的提名人选缺席;他们必须轮流这样做。
成本的协议
Alice、Bob和Carol现在有足够的经验来建立他们自己的三分之二程序,并使用UTXO,直到所有的资金耗尽。他们达成了一项简单的支出协议,这将有助于保持每个人的诚实:
所有各方必须始终知道谁共享碎片,谁在每个回合中扮演失踪方的角色。因此,即使所有参与者都脱机,他们也必须始终包括在所有共享通信中。当这些消息再次可用时,它们可以接收这些消息。
如果任何核查步骤没有成功完成,支出将被暂停。为了重新启动,双方必须取消所有未使用的碎片,计算剩余部分的新碎片,然后重新启动。为此目的,各方都必须出席。
任何一方不得连续两次扮演缺席方的角色。如果爱丽丝不在,鲍勃和卡罗尔就得轮流。
结论、意见和建议
与比特币
鉴于介绍中提到的比特币与Mimblewimble的基本区别,以及本文描述的多方支付方案,可以得出以下结论:
矿工的验证
在比特币中,每次调用multisig支付时,矿工都会验证P2SH multisig赎回脚本。它们还验证事务中使用的公钥。
对于多方Mimblewimble事务,挖矿人员无法验证谁可能是多方事务的一部分,除非事务本身符合Mimblewimble基本规则,并且所有防弹镜都是有效的。执行开支协议的基本规则是每一方的责任。
M – of – n
在比特币和虚拟货币中,m-of-n交易都是可能的。不同之处在于验证规则应用于何处以及如何应用。
安全
多方比特币交易更安全,因为矿工执行验证规则。
复杂的
与比特币相比,在Mimblewimble中实现m-of-n多方交易需要一个钱包来存储更多的数据和执行更多的功能。皮德森的VSS方案。
不管怎样
防弹范围证明
在使用Dalek防弹MPC协议或Grin之间的各种证明防弹构造各种范围的选择是非常重要的。虽然Dalek法需要多轮沟通,但证明的尺寸稍微大一些,硬币需要上色,但有一定的优势。虽然在实现Grin协议时可以很容易地增强后者,但在实现该协议时,其钱包可重构性和信息共享安全性优于竞争对手。
实用
所提出的Mimblewimble多防弹UTXO实际上可以在n-of-n和m-of-n的情况下实现。
信息共享协议
这里建议的简单共享协议可能需要更多的工作才能使其达到**状态。
文章标题:隐私加密系列| Mimblewimble多党防弹UTXO
文章链接:https://www.btchangqing.cn/29761.html
更新时间:2020年06月01日
本站大部分内容均收集于网络,若内容若侵犯到您的权益,请联系我们,我们将第一时间处理。