一文读懂Mimblewimble协议UTXO

介 绍

在Mimblewimble中,应用于未使用事务输出(UTXO)的比特币类型多重签名(multisig)的概念实际上并不存在。

在比特币中,多签名支付通常与“Pay to Script Hash”(P2SH)功能结合在一起,作为一种将资金发送到P2SH付款地址,然后从那里管理支出的方法。赎回脚本本身设置了要链接到要使用的P2SH付款地址的UTXO必须满足的条件。

与比特币不同,Mimblewimble交易不涉及付款地址,因为所有交易都是加密的。使用Mimblewimble UTXO的唯一要求是能够解密(或解锁)包含令牌的Pedersen承诺;它不需要“owner”的签名。典型的Mimblewimble UTXO看起来像这样:

08c15e94ddea81e6a0a31ed558ef5e0574e5369c4fcba92808fe992fbff68884cc

另一个根本区别是,对于任何Mimblewimble交易,所有各方,即所有发送方和所有接收方,都必须进行交互以完成交易。

背景知识

比特币m-of-n Multisig

存在m-of-n个multisig应用程序的多个用例,例如一个1-of-2的零用现金帐户,一个2-of-2 的两要素认证钱包和一个2-of-3的董事会帐户。

```markdown

redeemScript = <OP_2> <A pubkey> <B pubkey> <C pubkey> <OP_3> OP_CHECKMULTISIG

```

P2SH支付地址是赎回脚本的结果,该脚本使用SHA-256和RIPEMD-160进行了两次哈希处理,然后对Base58Check进行了前缀0x05编码:

redeemScriptHash=RIPEMD160(SHA256(redeemScript))P2SHAddress=base58check.Encode("05",redeemScriptHash)

现在可以将多个付款发送到P2SH付款地址。无论赎回脚本的内容如何,P2SH支付地址的一般融资交易的输出脚本都具有以下格式:

scriptPubKey=OP_HASH160<redeemScriptHash>OP_EQUAL

OP_HASH160是SHA-256和RIPEMD-160的组合。2-of-3的multisig赎回交易的输入脚本具有以下形式:

scriptSig=OP_0<Asig><Csig><redeemScript>

并且将支出和资金交易组合脚本(验证脚本)为

validationScript=OP_0<Asig><Csig><redeemScript>OP_HASH160<redeemScriptHash>OP_EQUAL

什么是签名?

部分签名的创建顺序与在redeemScript中定义公钥的顺序相同。对事务的简化的序列化十六进制版本进行签名-由输入的事务ID和UTXO索引,要支付的金额,scriptPubKey和事务锁定时间组成。每个连续的部分签名都包含先前的部分签名与要签名的简化事务数据的序列化,从而在签名的数据中创建了多个交叉引用。结合公钥,证明交易是由相关比特币的真正所有者创建的。

如何将更改重定向到multisig P2SH?

比特币交易可以有多个接收者,来自P2SH multisig交易的资金接收者之一可以是原始P2SHAddress,从而将更改发送回自身。允许向同一地址进行循环付款,但这些地址将缺乏保密性。另一种方法是,每次完成P2SH multisig事务以收集更改时,使用一组新的公钥创建一个新的redempscript,但管理起来会更复杂。

Mimblewimble区块链的安全性?

Mimblewimble区块链依赖于两个互补的方面来提供安全性:Pedersen承诺和范围证明(以防弹范围证明的形式)。Pedersen承诺,例如C(v,k)=(vH+k g),提供完全隐藏和计算约束的承诺。

在Mimblewimble中,这意味着具有无限计算能力的对手可以确定备用对v',k',以使C(v,k)= C(v',k')在合理的时间内对... 挑战时的另一个值(计算绑定)。但是,将不可能确定用于创建承诺的特定对v,k,因为有多个对可以产生相同的C(完全隐藏)。

除了范围证明可以确保所有值都是正数而且不能太大(严格在[0,264-1]范围内)之外,它还禁止第三方锁定自己的资金,如下一节所述。由于Mimblewimble的承诺是完全保密的,所有权无法得到证明,因此任何人都可以尝试花费或弄乱那些承诺中未使用的硬币。幸运的是,任何新的UTXO都需要范围证明,并且如果无法打开输入承诺,则不可能创建此证明。

范围证明的重要性

Bulletproof范围防护在确保区块链安全方面的作用如下所示。让Ca(v1,k1)成为Alice的“封闭”输入UTXO承诺,一个坏演员Bob正试图锁定它。Bob知道Mimblewimble区块链中的所有承诺都是同构的。这意味着他可以在理论上将Alice的承诺用作输入,并在交易中创建一个新的相反的输出,该交易的总和等于0的承诺,即(0)。对于此相反的输出,Bob将尝试以一种使验证交易的矿工不会抱怨的方式向承诺增加一个额外的盲目因子kx。

有效的Mimblewimble交易将采用以下形式:

一文读懂Mimblewimble协议UTXO

如果Alice未使用的隐藏盲承诺为(v1H+k1G),且(v2H+k2G)的价值等于支付给矿工的费用⋅H。新创建的承诺(v1H+(k1+kx)G)同样是Alice和Bob无法承受的,因为他们都不知道总的致盲因子k1+kx。幸运的是,为了按照事务验证规则的要求为新输出(v1H+(k1+kx)G)构造Bulletproof范围证明,必须知道v1和k1+kx的值,否则验证程序(即Bob)将无法使诚实的验证程序(即miner)相信v1是非负的(即在范围[0,2n-1]内)。

如果Bob能让Alice相信她必须创建一个基金,让他们两个都有签名权(2-of-2 multisig),那么理论上,如果他们一起创建关系(1),就有可能创建所需的Bulletproof范围证明。

安全共享协议

多个参与方共同创建一个涉及多个步骤的单一事务,需要以这样一种方式共享信息,即它们共享的内容不能对它们不利。每个步骤都需要一个证明,并且不应该在不同的上下文中重放单个步骤的证明。Merlin转录本是实现这一点的协议实现的一个很好的例子。为了

0

扫一扫,分享到微信

猜你喜欢

文章评论

请先 后评论

上一篇

DeFi加持ETH2.0或为牛市催化剂,灰度竟成最大利空? | 区块客周刊

下一篇

比特币新功能的扩展,侧链Liquid将涉及STO、零知识证明、Simplicity智能合约等

微信公众号

微信公众号