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