Monero是一種安全且無法追蹤的電子加密貨幣。它來自一個開放原始碼、去中心化且任何人皆可自由參閱的開發(fā)專案。在這篇文章中,我們要來談?wù)?/p>
Monero是一種安全且無法追蹤的電子加密貨幣。它來自一個開放原始碼、去中心化且任何人皆可自由參閱的開發(fā)專案。在這篇文章中,我們要來談?wù)劖h(huán)狀簽名保密交易,通常簡稱為環(huán)簽交易(RingCT)。在上一篇文章中,我們呈現(xiàn)了Monero是如何藉由創(chuàng)造無法區(qū)分的交易輸入以保護付款者的隱私。過程中使用了數(shù)位簽名的技術(shù),將真正的交易簽署者隱藏在數(shù)個環(huán)狀簽名輸入中完成一筆交易。
另外,我們也闡述了金鑰映像(key image)是如何用來防止交易輸入被重復(fù)花費。然而為了更徹底的增加交易雙方的隱私,一個稱為環(huán)簽保密交易(RingCT)的協(xié)定被用來隱藏交易的金額。
在Monero 發(fā)展早期開始啟用RingCT 之前, Monero 的交易金額需要先分割成特別的單位數(shù)量。譬如,一筆金額為12.5 的交易輸出會被分割成三筆分別為10、2、0.5的金額。這樣的方式可以讓環(huán)狀簽名在建構(gòu)時可以有足夠等同的輸入來源,因為環(huán)狀簽名的輸入金額必須是一致的。但在這個交易步驟中,每一筆交易金額都是可見的。為了改善這個缺點, Monero 在2017 年的一月啟用了RingCT 協(xié)定。在啟用RingCT 的一個月后,大約有98% 的交易都是使用RingCT 協(xié)定。而在2017 年的九月之后,所有的Monero 交易都會是強制使用RingCT 協(xié)定。
如今在使用RingCT 的協(xié)定下,每個在挖礦中新產(chǎn)生的Monero 會先以可見金額的形式存在于交易輸出中。而當(dāng)這些新產(chǎn)生的Monero 在第一次被轉(zhuǎn)移時,將會產(chǎn)生帶有金額遮罩的RingCT 交易輸出。如此一來, Monero 的交易將不再需要被分割為特定的單位數(shù)量。
這代表著錢包在交易時可以任意挑選一個RingCT 的交易輸出,這大幅提高了匿蹤性。值得注意的是,一個環(huán)狀簽名里無法同時包含在RingCT 啟用前的舊交易輸出與帶有金額遮罩的新交易輸出。所以就如同新產(chǎn)生的Monero 的處理方式,在RingCT 啟用前的舊時期交易輸出必須要先轉(zhuǎn)換成RingCT 的交易輸出,接著才能與RingCT 的輸出形成環(huán)狀簽名。讓我們來舉個例子來解釋RingCT 是如何運作的。
舉例來說,若Alice 擁有一個金額為12.56 的交易輸出并想付款2.5 個Monero 給Bob。由于輸出是無法被花費兩次的,所以這個輸出將會被整筆花費出去,之后才會將找零返回給Alice 。以這個例子為例, Alice 的這筆交易將會有一筆12.56 Monero 的輸入和兩筆輸出,第一個輸出會是要付款給Bob 的2.5 Monero ,而另一筆將會是10.06 Monero 的找零將會傳送回她原本自己的錢包。
為了防止Monero 在交易的過程中被偽造而無中生有,每一筆Monero 的交易輸入與交易輸出各自的金額總和必須相同。而在RingCT 的交易中, Alice 會被要求提供一個此筆交易輸出的資訊,此資訊僅包含了讓交易網(wǎng)路可以驗證此筆交易的資訊,而不會公開實際上到底花費了多少金額。盡管提供的這些資訊看起來像是隨機的數(shù)字,礦工們?nèi)匀豢梢詮倪@其中驗證轉(zhuǎn)帳給Bob 的金額與可用的余額相同(詳見注1)。在RingCT 交易中,
另一個重要的機制是”范圍保護”,這個可以防止有人提交了負值的交易金額, 范圍保護在加密學(xué)上保證了交易中的金額是大于零并小于特定的數(shù)字,以保護Monero 的發(fā)行量?;谝陨系母鞣N機制設(shè)計,使得即使外部觀察者的角度無法從交易輸出中得知真正的交易金額,但依舊是可以驗證此筆交易為有效的。
拜Monero 擁有的隱私設(shè)計所賜,使用者可以隨意地發(fā)送給任何對象,而不用擔(dān)心有人會得知交易的金額或是交易雙方的身分。這些特性使得Monero 成為在保護隱私需求中最先進的數(shù)位貨幣,但這些創(chuàng)新的腳步不會停歇于此。在下一部影片中,我們將討論Kovri ,一個用C++ 打造的I2P 路由技術(shù),將使得Monero 的交易更加安全。
注1: 交易中須公開的資訊由這個公式而來:rct = x_G + a_H(G) 。
在這邊最重要的變數(shù)為a與x。
H(G)和G是關(guān)系到許多在這篇文章所述之外的因素故在此不做解釋。
a是在交易中的真正金額,在文章中的例子也就是2.5。
x是用來作為金額遮罩的隨機數(shù)字,由錢包所自動產(chǎn)生。
簡單來說,這個公式可以被簡單敘述為rct =隨機數(shù)字+真正的交易金額。
在RingCT的交易中,rct的值將會被發(fā)布到交易網(wǎng)路中作為一個交易輸出,而交易網(wǎng)路或礦工將可使用這個rct值去驗證交易輸入是否等于交易輸出的金額,以確認沒有額外的Monero 被偽造產(chǎn)生。然而,對于一個外部的觀察者來說,并無從得知變數(shù)x的實際金額,所以無法得知有多少金額在交易中被實際的花費掉。(Monero)
關(guān)鍵詞: Monero 電子加密貨幣 RingCT協(xié)定