從去年底開始,筆者就一直很關(guān)心MimbleWimble這個(gè)新的隱私協(xié)議的發(fā)展,不只是因?yàn)镚rin主網(wǎng)上線的緣故,或者Litecoin即將采用MimbleWimble協(xié)議的關(guān)系,而是因?yàn)樗呛芏嚯[私協(xié)議的結(jié)晶體,他巧妙地結(jié)合了許多隱私協(xié)議,而且讓隱私交易變的可以實(shí)行,甚至具有擴(kuò)容的效果,因此,一直很想再寫一篇文章,把MimbleWimble的機(jī)制運(yùn)作講的更仔細(xì),同時(shí)也力求好懂。
一、MimbleWimble怎么來
MimbleWimble的發(fā)展過程有點(diǎn)類似于比特幣,是個(gè)千呼萬喚始出來的成果,也就是某個(gè)議題,或者某種需求討論了好久,終于有個(gè)人或者某篇論文,把一路上零零總總的研究成果,結(jié)合成一套可以運(yùn)行的協(xié)議:在比特幣問世以前,很多人在討論去中心化的電子現(xiàn)金,例如Wei Dai;還有Adam Beck研究出「雜湊現(xiàn)金」Hash Cash,還有對(duì)于時(shí)間戳記(timestamp)、公私鑰等等的研究成果,加上Satoshi在共識(shí)演算法上的突破--Nakamoto Consensus,而有了比特幣;在MimbleWimble協(xié)議產(chǎn)生以前,其實(shí)很多在比特幣核心開發(fā)組織中的成員,開始認(rèn)為比特幣的確實(shí)現(xiàn)了「點(diǎn)對(duì)點(diǎn)的現(xiàn)金交易」,但卻不夠能維護(hù)「點(diǎn)對(duì)點(diǎn)交易的隱私」,有許多研究者已經(jīng)能夠從交易圖和網(wǎng)路爬蟲等方式,來圖像化分析某個(gè)或多個(gè)帳號(hào)的歷史交易,并接近精準(zhǔn)的推測(cè)交易的人或者群體可能是誰。因此在比特幣交易中暴露交易雙方帳號(hào)、交易金額以及交易可追蹤等特性會(huì)威脅了交易匿名性(anonymity),而本身交易可追蹤的特性又讓貨幣本身不具有可替代性(fungibility),也是被人所詬病的特點(diǎn)。
于是,在比特幣核心社群Bitcoin Core中,陸續(xù)有很多人提出了各種協(xié)議,或者新的方法,想要促進(jìn)比特幣能夠更具有隱私性,但都比較像是個(gè)別專案的性質(zhì),而不是一套馬上能夠讓某種貨幣直接使用的區(qū)塊鏈系統(tǒng)。直到有一天,在比特幣的IRC(Internet Relay Chat) channel中,有位化名為Tom Elvis Jedusor(法文版的佛地魔)透過Tor網(wǎng)絡(luò)放了一份txt檔,也就是后來大家俗稱的白皮書,他在里面命名了一個(gè)叫做MimbleWimble的協(xié)議(哈利波特里面的鎖舌咒語,念了你會(huì)說不出話~~),并且推測(cè)了,透過Confidential Transactions(機(jī)密交易,簡稱CT)、CoinJoin 、One-way aggregate signatures(單向聚合簽名,OWAS)等三種方式,可以完成「隱私交易」,并且透過cut-through的方式處理資料大量增加「產(chǎn)生的狀態(tài)增長問題」。他在留了這份名為MimbleWimble的白皮書后就人間蒸發(fā)了,然而他的白皮書仍然留下了很多問題,而且沒有完善的數(shù)學(xué)證明他的想法的可行性,是最后由BlockStream的Andrew Poelstra將這篇文章完善,提出了一篇較為完整版的論文。(對(duì)了,后面還會(huì)一直看到BlockStream,沒有這間公司的人,我認(rèn)為也不會(huì)有MW協(xié)議)。
所以整體來說,MimbleWimble是在比特幣社群中,有長期關(guān)心隱私問題的專家和愛好者們,不斷的提出各種改進(jìn)方法,最后有人統(tǒng)整這些方法,并且被人驗(yàn)證后所產(chǎn)生的產(chǎn)物,和比特幣構(gòu)成的過程有點(diǎn)相似,但是他是一個(gè)協(xié)議,實(shí)際的實(shí)作還必須等到Grin還有BEAM這兩種隱私加密貨幣的出現(xiàn)。
從比特幣的交易中,可以去分析個(gè)別的群體分別可能為何
某個(gè)比特幣帳號(hào)在R語言下呈現(xiàn)的交易圖
二、解構(gòu)MimbleWimble三大零件
Mimblewimble是個(gè)由很多個(gè)零件拼裝起來的變形金剛,在這個(gè)章節(jié)我會(huì)來介紹,MW的各種零件是如何運(yùn)作來完成這套協(xié)議,根據(jù)協(xié)議,我認(rèn)為MW的隱私貨幣交易有三個(gè)交易的特性。
1.沒有交易金額
2.沒有交易雙方地址
3.在一個(gè)區(qū)塊中,多筆交易是被合并的,沒辦法看到每個(gè)單筆交易的細(xì)節(jié)
要完成這樣的特性:必須分別由三個(gè)大零件:
1.Confidential Transactions(機(jī)密交易,簡稱CT)
2.CoinJoin(混幣交易)
3.One-way Aggregate Signatures(單向聚合簽名,OWAS)
透過這三大重要的主要協(xié)議,來完成隱私交易,最后透過Cut-through,來回應(yīng)已確認(rèn)的鏈狀態(tài)大量累積的問題,這也是MimbleWimble比Zcash和Monero等仍需要儲(chǔ)存許多狀態(tài)資料的隱私幣還出色的地方。
既然他是一個(gè)專門為隱私幣所創(chuàng)造的區(qū)塊鏈協(xié)議,那么還是先來介紹一個(gè)區(qū)塊中的內(nèi)容物:
1.經(jīng)ECDSA加密過的交易輸入和范圍證明的merkle tree
2.經(jīng)ECDSA加密過的交易輸出和范圍證明的merkle tree
3.交易內(nèi)核:一個(gè)剩余值excess value(s)和總和的kernel offsets、挖礦費(fèi)用。
4.區(qū)塊頭、區(qū)塊高度
其實(shí)應(yīng)該在這里就能夠看出來MW和其他區(qū)塊鏈的區(qū)塊有結(jié)構(gòu)上的差別了,在此也開始解構(gòu)MimbleWimble的所有零件:
1、Confidential Transactions機(jī)密交易
首先先介紹Confidential Transactions(以下簡稱CT),CT最早是blockstream的Adam Back提議添加「加法同態(tài)」的性質(zhì)在比特幣交易中而產(chǎn)生,后來這個(gè)方法被Gregory Maxwell以Confidential Transactions的名義發(fā)出來,最后被匿名的佛地魔加到了MW協(xié)議中,他的最基礎(chǔ)的概念就是要將任何協(xié)議中的交易輸出及交易輸出都以橢圓曲線的方式進(jìn)行加密。
所以在MimbleWimble之中,每個(gè)交易輸入和交易輸出都會(huì)以Pedersen Commitment的形式寫成:
C=r*G + v*H
Maxwell的文章中是這樣寫:commitment = SHA256( blinding_factor || data )
如上所寫,我們可以知道C( Pedersen Commitment,Pedersen 可能是從TP Pedersen的論文而來)是一個(gè)讓交易金額v通過ECDSA( 橢圓曲線數(shù)字簽名算法, Elliptic Curve Digital Signature Algorithm,縮寫ECDSA)而產(chǎn)生的值,這個(gè)值眾人皆知,然而透過橢圓曲線后所看到的輸入值將不再是單純的金額,我把上面算式內(nèi)容分成以下三點(diǎn)解說:
1. r是所謂的致盲因子(blinding_factor),作為私鑰使用,是不能被其他任何人知道的,這個(gè)私鑰也代表你對(duì)這個(gè)交易值的所有權(quán)。
2. G和H則是在橢圓曲線上的兩個(gè)點(diǎn),而r*G則是r在G上的公鑰,我們沒辦法透過r*G而知道r值,這是所謂的離散對(duì)數(shù)問題,我們不會(huì)因?yàn)橹拦€,就因此而知道私鑰,切記不要把這里說的乘法和5*6=30這種單純的乘法搞混。
3. v則是交易的數(shù)額,只有交易的另一方也會(huì)知道,但是礦工與其他人則不會(huì)知道。在這里橢圓曲線確保了一件事,交易金額v和致盲因子r不會(huì)被透過逆推的方式而知道。
現(xiàn)在你知道一筆交易的長相如何了,我們趕緊來看怎么樣可以讓這筆交易怎么被驗(yàn)證。
1-1、 隱藏交易數(shù)額的魔法:加法同態(tài)(Additively Homomorphic)
在MimbleWimble中,每筆交易仍然遵守UTXO( Unspent Transaction Output)的概念,如果對(duì)比特幣有點(diǎn)了解,應(yīng)該還有印象當(dāng)我們說某用戶的錢包“收到”比特幣時(shí),意思是說這個(gè)錢包發(fā)現(xiàn)一個(gè)可以使用該錢包控制的密鑰來花費(fèi)的UTXO,你可以將他簡化成輸入=輸出。
假設(shè)今天在比特幣交易中,你的帳戶有10BTC,你用了7BTC給賣家,3BTC是找零(為了簡化先不管手續(xù)費(fèi))。
輸入1(10)=輸出1(7)+輸出2(3)
可是今天我們?cè)贛W的交易中,數(shù)額是不能被外人知道的,這時(shí)候交易仍要遵守V1+V2=V3的形式,這時(shí)候同態(tài)加密( Homomorphic Encryption )就派上用場(chǎng)了,在CT中遵守的只是同態(tài)加密中的加法同態(tài)( additively homomorphic ),加法同態(tài)的意思,就是先加密再相加=先相加再加密,因此,我們能夠看到算式演變?nèi)缦拢?/p>
V1+V2=V3
=》 V1*H+V2*H=(V1+V2)*H=V3*H
這時(shí)候加法同態(tài)的性質(zhì)巧妙的驗(yàn)證了一件事情,那就是我們不需要知道原本v1和v2,以及v3的值是多少,只需要知道V1*H+V2*H=V3*H就可以驗(yàn)證v1+v2=v3了,也因此他能夠成功地去隱藏交易數(shù)額。
但是這里會(huì)存在另外一個(gè)問題,就是我們?nèi)绾卧谳斎?輸出的情況下,不讓交易的另一方,以及后來的驗(yàn)證者不知道我的私鑰,同時(shí)又可以讓他們驗(yàn)證我知道私鑰呢?
可能看完你還不一定知道問題在哪里,讓我們先來看看這個(gè)問題:
今天Alice假設(shè)有24個(gè)幣,致盲因子為81,則他的Pedersen Commitment會(huì)是
81*G+24*H
那要是Alice傳給Bob數(shù)量為7的幣,那么算式會(huì)變成(ps.在此我們先忽略礦工手續(xù)費(fèi))
A-B=(81*G + 24*H)-(81*G + 7*H)=0*G-17*H
這樣就會(huì)變成說,Bob將會(huì)知道致盲因子是81,如此一來你的私鑰就被曝光了。所以在真實(shí)的MW交易中,不能讓這種事情發(fā)生,否則連你找零的花費(fèi)都有可能被取走,因此當(dāng)Alice要和Bob交易時(shí),必須再另外為所找零的錢所設(shè)立一個(gè)致盲因子,例如我們將另個(gè)致盲因子設(shè)為8,記住這個(gè)8還是不能讓他知道的,同時(shí),當(dāng)你傳給Bob時(shí),Bob也會(huì)指定一個(gè)私鑰數(shù)字(這里假設(shè)Bob的致盲因子是23),雖然這時(shí)候Bob不會(huì)知道你的致盲因子是多少,但我們能夠利用等式兩邊數(shù)值相減為零的特性,來去驗(yàn)證你給的致盲因子之差的正確性。所以這個(gè)時(shí)候的算式變成這個(gè)樣子:
Alice(24)-Alice(17)-AlicetoBob(7)
81*G+24*H-(8*G+17*H)-(23*G+7*H)=50*G+0*H
這時(shí)候此筆交易中,驗(yàn)證的礦工會(huì)收到50*G的余項(xiàng),這時(shí)候的excess value值就是50,50*G(余項(xiàng))和50(致盲因子差)則剛好可以作為公鑰與私鑰。(記得這部分的交易內(nèi)容中,沒有算到礦工手續(xù)費(fèi))。
1-2、避免多余金錢被制造的魔法:范圍證明(Range Proof)
今天我們已經(jīng)可以確定交易數(shù)額可以透過加法同態(tài)的方式去隱藏,并且讓驗(yàn)證的礦工能夠驗(yàn)證交易等式兩邊是相等的,但這時(shí)卻還有一個(gè)影響交易有效性的問題,就是即使等式兩端相等,還是有可能憑空創(chuàng)造出來的金錢,可能一時(shí)之間比較難想像,那你能夠先看下面這組輸入與輸出的算式:
輸入=輸出1+輸出2
5=(-10)+15
今天以上的算式,也符合輸入等于輸出的條件,但我卻能夠發(fā)現(xiàn)到,原本的5塊變成15塊,中間的10塊是因?yàn)槭潜粦{空創(chuàng)造出來的金錢。而且這個(gè)時(shí)候負(fù)數(shù),在橢圓曲線上對(duì)應(yīng)的可能也是任何值,因此不太會(huì)被檢測(cè)出來。這時(shí)候在機(jī)密交易中用了另外一種零件,稱作范圍證明(Range Proof)。Range Proof最早由blockstream的Gregory Maxwell所提出,Range Proof會(huì)附掛在每筆交易輸入與輸出中,他透過簡單的零知識(shí)證明,可以確保在不知道數(shù)額為多少的情況下,還能證明每個(gè)單筆的輸入輸出都是一個(gè)0
然而,每筆輸入與輸出都必須附帶的零知識(shí)證明的size大小,卻是相對(duì)于交易本身要來的更大,而且礦工如果要同步于整個(gè)區(qū)塊,就必須從頭到尾都進(jìn)行驗(yàn)證每筆交易的Range Proof驗(yàn)證,因此Range Proof本身的大小,也成為必須去改進(jìn)的對(duì)象。因此,后來Stanford的學(xué)生Benedikt Bünz又在他的基礎(chǔ)上開發(fā)出了所占的容量更小,運(yùn)算速度更快的Bulletproof,在i7–6820HQ的系統(tǒng)系統(tǒng)下實(shí)測(cè)只有688bytes的大小,較原本Maxwell開發(fā)出來的有5kb左右的Range Proof已經(jīng)有非常大的容量改善,但和每筆交易差度不多33bytes相比仍然非常大。
到現(xiàn)在我們可以有一個(gè)概念,以了解不用知道金額的交易如何被有效驗(yàn)證:
1.礦工透過Pedersen Commitment的加法同態(tài)性,確保在不知道交易金額的情況下,還能確定等式左右兩邊輸入等于輸出
2.透過Range Proof來確定某個(gè)不知道數(shù)額的交易輸入或輸出,確實(shí)大于零,以避免被憑空創(chuàng)造出新錢。
2、CoinJoin 混合交易
在過去有許多人認(rèn)為在比特幣的交易圖上,能夠看到「哪筆輸數(shù)對(duì)應(yīng)到哪筆輸出」是一件非常容易暴露隱私的地方,因此Gregory Maxwell(是的,又是他)題出了一個(gè)叫做CoinJoin的概念,他要做的事情非常簡單,就是將兩筆交易混合。
在MW協(xié)議以錢,有許多錢包或者額外的服務(wù),就有配置CoinJoin的服務(wù)于其間,例如WasabiWallet和Tumblebit、JoinMarket,然而單靠Coinjoin卻依舊是不安全的,大家仍舊可以從交易數(shù)額中試圖去還原,同時(shí)因?yàn)槭莻€(gè)別的服務(wù),參與的人數(shù)太少,在資金匹配上也需要花一定的時(shí)間。這時(shí)候佛地魔在MW協(xié)議中將CoinJoin的技術(shù),結(jié)合機(jī)密交易(CT),就能夠避免交易能夠從「數(shù)字」方面去被推敲出來,同時(shí)在交易路徑上也可以透過CoinJoin的技術(shù)被混淆。
而且和過去個(gè)別使用CoinJoin的服務(wù)不同的地方,是這次Mimblewimble,徹底把CoinJoin寫在了協(xié)議層,如此一來不需要靠第三方的錢包或者服務(wù)幫忙就能完成這一件事情,而且有機(jī)會(huì)讓混合交易變的更有效率。
但現(xiàn)在就要開心的慶祝隱私交易的魔法能夠?qū)崿F(xiàn),就還太早了,因?yàn)榧词够旌辖灰讛?shù)額,我們還是能夠知道交易雙方的公鑰,并且能透過這些公鑰址去嘗試重構(gòu)每一筆交易,因此在這樣的情境下,我們必須要有新的公私鑰系統(tǒng),來確保隱私安全。
3、OWAS ( One-way Aggregate Signatures,單向聚合簽名)
Jedusor在他的初略版白皮書中,提出了可以用Yuan Horas Mouton的單向聚合簽名( One-way Aggregate Signatures,簡稱OWAS)的方式去完成,比較有趣的一點(diǎn)是在Andrew Poelstra在他詳細(xì)版的白皮書中,卻沒有用到OWAS這個(gè)詞,而是在Sinking Signature還有compact chain中去驗(yàn)證這個(gè)技術(shù),甚至連后來開發(fā)Grin的Ignotus Peverell的Github的MW簡介中,也沒出現(xiàn)OWAS這個(gè)詞,而是直接說Transaction Aggregation(交易聚合),不知道這個(gè)專有名詞,為什么在這個(gè)三個(gè)重要的MW文件中,出現(xiàn)的方式會(huì)略有不同,但在此還是以O(shè)WAS去代稱(我知道在之前已經(jīng)有如Boneh等學(xué)者在研究聚合簽名 )。
所謂的聚合簽名,就是指當(dāng)你看到很多交易的輸入以及輸出時(shí),我們將不能再把這些輸入及輸出的公鑰重新拆解,并且拼湊出一個(gè)完整的交易順序,因此我們將所有簽名聚合在一起,并且不能使他逆向被還原。
OWAS由兩個(gè)部分組成,一是Kernel Excess(內(nèi)核剩余),一是Kernel Offsets(交易核偏移因子),還記得我們所說的致盲因子之差嗎?對(duì)的,就是Alice既要傳送錢給Bob,又不希望Bob知道他的私鑰(致盲因子),于是他給他了(致盲因子差)*G,這時(shí)候我們?yōu)榱吮苊馊思覐慕灰字械墓€推測(cè)出交易途徑,我們用了單向聚合簽名的方式來降低大家知道這個(gè)值的可能性,因此我們產(chǎn)生了以下算式
輸出的Confidential Transactions總額-輸出的Confidential Transactions總額= Kernal_excess + kernel_offset
透過這種方式,我們就可以將最后作為的公鑰的余項(xiàng)(例如剛才上面在講機(jī)密交易時(shí)的50*G)拆分成兩部分,例如X*G拆成(x1+x2)*G ,這時(shí)候大家能構(gòu)讓外界看到的值x1*G就是所謂的Kernel Excess,你可以把它看作是公鑰;而另外一部分就是x2*G,稱作Kernel Offsets,他會(huì)和這個(gè)區(qū)塊中所有交易的Kernel Offsets一起被相加,而當(dāng)他們這么多個(gè)Kernel Offsets被相加后,你也就看不出來,哪個(gè)Kernel Offset是哪一筆交易中的了,所以這個(gè)方法才會(huì)被叫做單向聚合簽名,因?yàn)樗麤]辦法在做逆向工程了。因此,當(dāng)一筆MW上的交易在給礦工驗(yàn)證時(shí),我們可以想像Kernel Excess就是公鑰,而Kernel Offsets是私鑰。
到此,隱私交易的部分就徹底完成了,我們?cè)诖撕喍讨貜?fù)一次
1-1、機(jī)密交易-加法同態(tài):確保在不知道交易金額的情況下驗(yàn)證等式兩邊成立
1-2、機(jī)密交易-范圍證明:確保在零知識(shí)證明下,每個(gè)輸入輸出值大于零,避免憑空創(chuàng)造多余金錢。
2、混幣交易:讓我們無法從交易數(shù)額中去回推交易路徑
3、單向聚合簽名:讓交易的公鑰不會(huì)被暴露出交易路徑
三、Cut-through核銷:減少礦工儲(chǔ)存狀態(tài)
cut-through是MimbleWimble中一個(gè)針對(duì)礦工的精巧設(shè)計(jì),他能夠確保的是礦工不需要長期存儲(chǔ)這么多的交易狀態(tài),而cut-through的概念就是在一筆交易已經(jīng)被確定其所有權(quán)的情況下(也就是被驗(yàn)證)后,只要能夠維持輸入等于輸出(input=output),那么過程中多余的內(nèi)容都可以被刪除。
例如原本的幾個(gè)交易可能長這個(gè)樣子
Input1+Output1=Ouput1+Change1+Output2+Change2
=》Cut through之后(Output1等式兩邊都有因此可以被刪去)
Input1=Change1+Output2+Change2
然而在這里必須特別說明,我認(rèn)為Cut-through的概念并非能夠在目前實(shí)作的兩個(gè)項(xiàng)目中(Grin&BEAM),達(dá)到很好的隱私,例如在Grin中,其實(shí)Cut-through的功能是能夠被關(guān)掉的,只要將~/.grin/main/grin-server.tomlar的archive_mode從
archive_mode = false
變成
archive_mode = true
in ~/.grin/main/grin-server.toml
如此一來礦工的節(jié)點(diǎn)就不會(huì)執(zhí)行核銷的動(dòng)作。因此我認(rèn)為目前部分外界人士,可能認(rèn)為Cut-through能夠透過刪除資料來解決隱私,就目前的實(shí)作來看可能會(huì)是一個(gè)誤解。
四、MinbleWimble的后續(xù)效應(yīng)與限制
MimbleWimble不但是一個(gè)許多隱私協(xié)議所組成的隱私幣區(qū)塊鏈協(xié)議,更是許多過去比特幣社群所遇到問題時(shí),一些原本在比特幣上無法實(shí)現(xiàn)的好方法被應(yīng)用的好場(chǎng)景,然而MimbleWimble也像是練就了某種神功后,具有某些后遺癥的武者,因此在最后,我試圖去探討,MimbleWimble會(huì)產(chǎn)生什么后續(xù)的影響,以及發(fā)展可能有什么樣的限制。
1.挑戰(zhàn)其他隱私幣的地位和公鏈設(shè)計(jì)原則
筆者認(rèn)為,MimbleWimble協(xié)議所影響的,首先是挑戰(zhàn)既有隱私幣的地位,例如Monero和Zcash,MW協(xié)議中不但不需要為了驗(yàn)證交易的合法性,而保留以驗(yàn)證的交易作廢清單,同時(shí)Cut-through的功用,也讓礦工能夠減少儲(chǔ)存已驗(yàn)證的狀態(tài)這種較為不合理的手法。另外,我認(rèn)為MW協(xié)議也是少數(shù),用減少資料儲(chǔ)存來達(dá)到可擴(kuò)展性的公鏈設(shè)計(jì)手法,同時(shí)他也減少了許多區(qū)塊鏈中應(yīng)該要被礦工所記載的內(nèi)容,在MW中,一筆交易里面礦工要知道什么:最主要的就是交易有效性與通貨膨脹,可能會(huì)影響未來不具高度智能合約需求的貨幣項(xiàng)目,往這樣的方向去發(fā)展。
2.限制
雖然MW在隱私協(xié)議上采取了非常巧妙的手法,去實(shí)現(xiàn)了匿名交易。但其本身依舊有某一些限制,在此我將他分為三點(diǎn):一是Range Proof所占的容量影響交易狀態(tài)儲(chǔ)存的容量;二是交易實(shí)作上的使用體驗(yàn);三則是智能合約等等貨幣交易以外的區(qū)塊鏈功能實(shí)現(xiàn)能力。
2-1、Range Proof所占的容量影響交易狀態(tài)儲(chǔ)存的容量
上文曾經(jīng)說過,透過Cut-through,我們能夠減少礦工的儲(chǔ)存內(nèi)容物,避免狀態(tài)大量累積的問題,然而,在MW區(qū)塊鏈中,無法被刪減的,是每筆輸入與輸出中的范圍證明(range proof),Range Proof是一個(gè)簡單的零知識(shí)證明(688bytes),容量相較于交易訊息本身(單個(gè)交易約33bytes),相較而言其實(shí)是非常大的差距,這也是會(huì)影響未來礦工儲(chǔ)存資料,以及未來可擴(kuò)展性的關(guān)鍵。
2-2、共同構(gòu)建交易的實(shí)作體驗(yàn)
在MW協(xié)議下的交易,我們必須要交易雙方共同去將一筆交易完成,例如Alice寄錢給Bob,Bob必須證明他知道交易金額,并且在回傳訊息給Alice,最后交易經(jīng)過Alice驗(yàn)證運(yùn)算后才完成,這樣的過程不需要同步在線上完成,但需要交易雙方共同構(gòu)建,和比特幣、以太坊等等密碼貨幣那種只需一方傳送金額簽章到區(qū)塊鏈上的概念較為不同,因此目前例如在Grin上,有兩種方式可以進(jìn)行交易:
· 寄送檔案: Bob需要收到交易檔案( transaction file),并且生成一個(gè)回應(yīng)的檔案(response file),并且寄回給Alice。
· 網(wǎng)頁(HTTP): Bob的Grin錢包必須要監(jiān)聽一個(gè)端口。無論Alice的錢包什么時(shí)候寄給他,Bob的錢包都會(huì)自動(dòng)執(zhí)行既有的步驟。但這卻有一個(gè)比較苛刻的條件,就是錢包需要在一個(gè)固定的IP地址下,并且你的錢包客戶端要持續(xù)運(yùn)作才能完成。
這些過程其實(shí)都是非常不人性,很難在未來普及使用。目前Grin有開發(fā)一個(gè)新錢包grinbox,目標(biāo)是能夠像比特幣一樣的交易,但很持續(xù)在開發(fā)中,如果未來有任何消息,我會(huì)持續(xù)更新。
2-3、貨幣交易之外如智能合約等功能的擴(kuò)展現(xiàn)制
MimbleWimble和比特幣較為不同的是其較難支持區(qū)塊鏈中的交易腳本,這也導(dǎo)致了如比特幣可以實(shí)現(xiàn)的簡單智能合約、或者閃電網(wǎng)絡(luò)等等,然而,我認(rèn)為這或許是大家已經(jīng)不太震驚的MW缺點(diǎn)所在了,而且目前就筆者所見,已經(jīng)有一些有趣的專案被展開,例如精確版MW白皮書的撰寫人:Blockstream的Andrew Poelstra,目前正在研究透過無腳本腳本 ( scriptless-scripts)的方式來創(chuàng)造MimbleWimble上簡單的應(yīng)用,同時(shí)也有人實(shí)現(xiàn)了Grin上的原子交換。或許未來可能有更輕巧的智能合約實(shí)現(xiàn)方式出現(xiàn)。
評(píng)論
查看更多