LocalMonero will be winding down
- Effective immediately, all new signups and ad postings are disabled;
- On May 14th, 2024, new trades will be disabled as well;
- After November 7th, 2024, the website will be taken down. Please reclaim any funds from your arbitration bond wallet prior to that date, otherwise the funds may be considered abandoned/forfeited.
RingCT環形機密技術是如何隱藏門羅幣交易的金額
加密貨幣如果只靠一種技術保護隱私,那麼一旦這個技術被破解,則該幣的隱私安全就會崩壞,因此門羅幣並不是靠單一機制,而是通過三種可以協同工作的技術,共同完成隱私保護,這樣做的好處是在提高整體私密性的同時也彌補了單一技術的缺點. 這種三管齊下的方法由ring signatures環形簽名技術, RingCT環形機密技術, 以及 stealth addresses隱身位址技術. 這三種技術分別隱藏了實際的輸出,也就是發送者,交易金額和接收者. 今天我們將重點討論RingCT環形機密技術.
包括防彈協議在內廣義上的RingCT環形機密技術,可以說是門羅幣三大加密技術裡最先進的,並且可能是最難理解的,因此我們將不去討論它的確切原理,而是在邏輯層面說明如何在不知道某個確定量的前提下,仍舊可以對其進行確認. 讀者不用擔心,我們將一如既往地使用比喻和例子幫助大家理解.
首先,讓我們先探討一下,為什麼轉帳金額驗證是十分必要的. 大家有沒有思考過,完全黑箱操作的危害是什麼,其實答案很簡單,如果轉帳金額不被協力廠商驗證的話,只要有機會,很多人可以利用某些漏洞和方法憑空賺錢. 讓我們通過一個例子來看一下某些人的小聰明.
如果你想從你的朋友那裡購買一件商品,而他商品的售價為十美元,假設交易開始前你正好有十美元,而他只有那件商品,他手裡一分錢也沒有. 那麼當交易結束的時候,由於你給了他十美元,所以他的餘額變成了十美元,而你的餘額變成零. 這個過程裡一共只有10美元,此交易未創建或銷毀任何資金.
而在加密貨幣世界裡,當買家支付了10美元購買商品時,另一個本來餘額為零的賣家,憑空超發或者強行找零給買家2美元,他們的帳本就和之前不同了. 現在雙方的餘額不再是一方0美元和另一方10美元,而是一方10美元和另一方2美元, 交易前兩人總餘額為10美元,現在兩人總和變成了12美元,憑空捏造出兩美元.你可以想像,如果重複這樣做,他們將能夠在短時間內積聚巨額財富.
使用比特幣和其他透明的幣,這其實很容易看到. 使用者可以通過查看交易雙方的轉入和轉出,確保買家有足夠的錢支付,不憑空捏造,收款方也老老實實接受,不會額外記帳或者超額找零. 可是如果買賣雙方的交易金額已加密且不可見,則其它用戶和節點將無法直接驗證買家所支付的金額和賣家收到的金額是否一致.
為了增加比特幣的隱私性,Gregory Maxwell發明創造了Confidential Transactions縮寫為CT,機密交易技術,這是一種交易金額完全隱蔽的新技術,同時可以證明在交易過程中沒有人憑空增發或銷毀任何加密貨幣.與大多數保護隱私技術一樣,它沒有被比特幣採納,但是門羅幣熱衷於實現它. 而在當時有一個問題,該技術和環簽名技術並不相容. 因此,當時的一名MRL門羅幣實驗室研究人員,Shen Noether將CT機密交易技術修改為RingCT,也就是與環簽名技術相容的門羅幣版本.
再一次重申,這種驗證的實現方式是非常技術性的,只在介紹為主的科普文章中很難解釋其中科學邏輯和代碼實現. 好在對於刨根問底的加密術愛好者,網上有大量深入的文章介紹了CT的內部工作原理的論文可以深入研究. 對於其他普通人,本文將簡單說明機密交易是如何在交易金額隱秘的情況下,仍可以證明沒有增發或者銷毀任何幣的.
假設愛麗絲想轉帳給鮑勃. 愛麗絲將向鮑勃發送10 門羅幣,鮑勃將收到10 門羅幣. 轉帳前後餘額為10,所以這裡沒有錯. 但是愛麗絲不想讓任何人知道她到底發送了多少幣. 因此,她和鮑勃創建了一個只有兩個人知道的秘密數字.假設共用數字是22. 現在,愛麗絲將10門羅幣,也就是她實際轉帳的數字,乘以22得到220,220就是她與網路節點共用的數位.
礦工和節點並不知道秘密數字是22. 如果他們知道雙方秘密是22,他們是可以將220除以秘密數字22,然後獲得實際發送的金額10門羅幣. 但是由於他們並不知道,因此他們並不能知道雙方到底轉帳多少錢. 但他們會看到鮑勃將獲得220,而愛麗絲也發送了220.交易前後金額相等,220 =220.通過這種方式,網路可以在不知道Alice發送Bob的真實數量的情況下,驗證沒有創建或銷毀任何的門羅幣.
因為Bob知道共用的秘密號碼是22,所以當他收到錢時,他只用金額220,除以22,就得到Alice發送的真實金額10門羅幣.而Alice和Bob都知道發送了多少,收到了多少,而其他人都只能觀測到一串錯誤的數位.這裡譯者再添加另一個例子幫助大家理解,假設愛麗絲給了鮑勃10美元,由10個硬幣和3張紙幣組成,那麼節點只去驗證,鮑勃是否收到了這10個硬幣和三張鈔票,具體面額並不知道,只有當事人知道,節點只負責確認轉帳前後還是這10個硬幣和3張鈔票,沒有人增發也沒有人銷毀.
再一次,再一次重申,這並不是CT技術的實際工作方式,本文只是給出了一個比較好理解的例子. 真正的方式涉及諸如Pedersen彼德森承諾,發送者會發送兩個轉帳量,一個加密量發送給接收方,一個承諾量發送給網路節點,以及……好吧,還是不要繼續說了,是的,其實寫到這裡很多讀者已經看暈了.
但是要注意的另一件事是,儘管RingCT確實隱藏了交易中兩方之間的交易金額,但它並未隱藏另外兩組數字.
首先是coinbase金額,這裡的coinbase不是指那個交易所,而是中文翻譯成幣基的加密貨幣概念. 也許你不熟悉此術語,它的基本含義就是礦工打包某個區塊所獲得的爆塊獎勵. 爆塊獎勵並沒有乘以一個秘密數字,任何人都可以看到每個塊礦工的的獎勵到底是多少.通過這種方式,可以將所有coinbase交易相加來知道現有的門羅幣總量,他們的總和將等於當前流通的門羅幣.
第二個未隱藏的數位是使用者發送交易時願意支付給礦工的費用. 礦工費必須公開,以便礦工們可以知道應該優先處理哪些轉帳. 這其實是損害使用者隱私的一種潛在方式,如果某人每次發送交易時使用的礦工費都一樣,例如0.12345,則也可能被關聯其交易.
除此之外,RingCT環形機密技術,自2017年1月以來一直在隱藏門羅幣主鏈上的其它一切交易金額,我們的集體隱私也因為它而更加強大.
