Railgun & Railway - 一個 Vitalik 也用來作交易的隠私協議及錢包
Why - 為什麼?
今天為大家介紹一個連 Vitalik 也用來作交易的隱私協議及錢包。如果你擁有巨額的加密幣或代幣。而想把它們隱藏起來,讓人在區塊鏈瀏覽器查找不了,這是一個理想的工具。如果你在 defi 平台作代幣兌換 (swapping),在作大額兌換時,可能都會特別小心。因為有不少 validators 也都在窺視着這方面的訊息,在組成區塊交易順序時,在你的大額交易前插入自己的買入交易,然後當你的大額交易完成後,再作一條賣出交易。這樣就可以進行套利。或者,當你的錢包地址具有一定名氣後 (vitalik.eth 便是一例),會有人在監視着這錢包地址的一舉一動,那這帳戶在 defi 平台上作上一定額度的交易時,都會被視為市場訊號給仔細分析。
這時 Railgun 協議及其前端 Railway 錢包,可以幫助用戶提高隱私性。
What - 是什麼?
不知大家有没有玩過 StarCraft II,人類種族有一支 ghost 的部隊,他們有 cloaking 的技能可把自身隱藏起來作潛入或突破。Railgun 協議有些類似 cloaking 功能,可把用戶的代幣隱藏起來,在 railgun 協議內這叫作 shielding,直到那錢包主人把代幣 unshield 公開回來。
以下這圖可很好描述 Railgun 協議是如何運作的。
-
代幣在你最原本的公開地址之下 (上圖的 "Your Public 0x Address")
-
Shield Tokens 的操作可把代幣隱藏起來。隱藏後的代幣在區塊鏈瀏覽器上是查詢不了,被轉發到一個以 0zk 開首的加密地址。
它背後的運作原理是以 UTXO 方式儲存未用的代幣餘額,然後以零知証明來證明戶口內擁有相當數量的可用代幣額 (這裡有詳細說明)。
-
用戶可對被隱藏的代幣作以下操作:
- 隱密地轉發到其他 0zk 的私密地址 (Private Sends)。這操作可隱藏起 1) 發款方,2) 收款方,3) 代幣數額。唯一暴露的是對交易簽名的 broadcaster 地址 (見下文)。
- 可作兌換 (Private Swaps)。這裡作兌換,可把發款方地址隱藏起來
- 支持其他 defi 操作,包括把代幣加到流動池裡賺取收益。
-
當你發現需要把代幣重新公開時,可對其作 Unshield Tokens 的操作。Unshield 同時也可指定一個 0x 地址。即是說 Unshield 同時也能轉賬給另一個錢包。這時區塊鏈看到的發款方會是 broadcaster 和 railgun 的合約交互,也會看到收款方的地址,但可以把發款方隱藏起來。
How - 如何操作?
因為 Railgun 是一種協議,用戶需要一個前端 (錢包) 與這個協議交互。Railway 是現時社區最流行的前端 (這裡還有列出其他前端)。以下教程也會以 Railway 作試範。
首先下載 Railway app, 這前端没有瀏覽器版本,以下以桌面版 macOS 版本試範。
Railgun 現時支持的鏈有:Ethereum, BNB Smart Chain, Polygon, Arbitrum, 及 Sepolia Testnet.
在該鏈上試用需要有該鏈的原生幣支付起始的交易手續費。以下以 Polygon 鏈作例子。
1. 啟用 0zk 隱密地址
- 首先導入或創建一個錢包。這裡可以用戶主錢包的 seed phrase 導入。這樣錢包則已有一些代幣可用。
- 設置用戶的錢包密碼。
- 接着會顯示出錢包的 view-only private key。這個 view-only private key 可給審計部門查看用戶的交易訊息 (是的,railgun 協議也講求合法合規。這個 private key 需要現在抄下記好,之後不會再顯示出來) 及 0zk... 地址。0zk 可不用抄寫,因為可輕易取得。
- 設好後,將會如下圖,可按圖中上方的 Public Mode / Private Mode 設換公開地址 (0x 地址) 及私密地址 (0zk 地址)及查看帳戶餘額。
2. Shielding - 隱藏代幣 👻
-
在 Public Mode ,點擊醒眼的 Shield 按鈕。在右側顯示一個視窗,如下圖。
-
這時可點擊選取自己的私密地址。填寫代幣數目。按照意願,設置 shield 及 unshield 的手續費由誰來付 (發給自己時則分別不大)。
注意原生幣會 1:1 轉換成 wrapped tokens 存在私密地址裡。最後點選 Next。
-
輸入密碼。點選 Shield。
-
注意 Shield 的時候。它會需要 1 個小時 的確認時間,如下圖。在這段時間,協議會查詢公開的錢包黑名單,確保現時地址不在列明的黑名單內。這一步叫作 Private Proofs of Innocence。這也是協議合法合規的一步,確保協議不會被不法人士用作洗錢用途。而名單提供方由第三方提供。鏈接內說明了現時名單是由什麼機構提供。另外,假若協議偵察到地址和名單內地址吻合,它也只是拒絕交易,但不報告至第三方。
-
內心等待一個小時,這時可去點杯咖啡 ☕️
3. Unshielding - 公開隱藏的代幣
-
在 Pivate Mode, 點擊 Unshield。出現以下介面。
在這裡輸入對方地址。可以是自己原本 shield token 的錢包,也可以是其他人的錢包,即同時轉帳給他人。
另外,因為 shield token 時轉換作 wrapped tokens, 此時可選擇轉為原生幣 (Unshield to MATIC) 或 wrapped tokens (Unshield to WMATIC).
-
下一步是選擇交易簽名人 (broadcaster)。看似有兩個選擇,但其實如要可靠的話,還是選 Self broadcast (自己控制的帳戶) 自行簽名。這個簽名人的地址是會公開在區塊鏈瀏覽器的。看下面注意事項應如何創建一個全新的交易簽名人 (broadcaster)。
-
選好 broadcaster 後,生成零知証明 Generate Proof
-
最後就去進行 Unshield 交易
-
Unshield 及 其他隱藏後的交易都不需要等待 1 小時,只需等待約半分鐘左右確認交易並生成証明。跟着可看到交易成功。
注意事項
創建交易簽名人 (self-broadcaster)
在使用 Railgun 時,你需要有一個 broadcaster 帳戶來生成証明並代付手續費,這個 broadcaster 的地址也會公開成為交易的發起人 (From)。所以這 broadcaster 也要持有一些原生幣支付手續費。如果此時你用主帳戶直接發款至這 broadcaster 帳戶 (新帳戶),分析員可從區塊鏈數據中判斷出這帳戶和你有關聯。所以更隱蔽的做法是把主帳戶的原生幣 shield 起來。再從隱藏的代幣 unshield 到 broadcaster 帳戶。那在區塊鏈上只看到主帳戶和 railgun 的合約交互。這也是文檔 How to seed a self-broadcaster 部份要講解的事項。
其他參考
- Railgun: https://www.railgun.org/
- Railgun 文檔: https://docs.railgun.org/wiki
- Railway: https://www.railway.xyz/
- Railway 文檔: https://help.railway.xyz/
- Bankless: https://www.bankless.com/read/private-defi-railgun