介 紹
在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交易將採用以下形式:
如果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轉錄本是實現這一點的協議實現的一個很好的例子。為了
文章評論
冷萃財經原創,作者:Awing,轉載請註明出處:https://www.lccjd.top/2020/06/02/%e4%b8%80%e6%96%87%e8%af%bb%e6%87%82mimblewimble%e5%8d%8f%e8%ae%aeutxo/?variant=zh-tw
文章評論