楠木軒

一文了解以太坊的隱形支付協議Umbra

由 喜東付 發佈於 科技

今年 4 月初的時候,以太坊聯合創始人 Vitalik Buterin 曾在推特上明確提到,以太坊生態系統急需解決隱私問題,主要原因是 ENS 域名的普及給以太坊用户帶來了很大的隱私問題,並且隨着 Defi 生態的不斷髮展,這種問題的嚴重性也將越來越突出。而除了 Vitalik 提到的 tornado.cash 項目,最近還出現了一個簡單的以太坊隱形支付協議,它的名字叫 Umbra。

據悉,Umbra 協議是由 Matt Solomon 和 Ben DiFrancesco 為 HackMoney 2020 虛擬黑客鬆開發的,目前已經在以太坊 Ropsten 測試網上可用。

那它是用來做什麼的?簡單説:

「有了隱形地址,付款人可以向接收者控制的地址發送 ETH 或 ERC20 代幣,而除了雙方之外,沒有第三方可以知道接收者是誰。」

在鏈上,交易看起來就像是簡單地傳輸到以太坊網絡上的一個未使用地址。

圖:在 Etherscan 上查看使用 Umbra 協議的 ETH 交易。在鏈上,隱形地址看起來就像是正常的 EOA 地址。

在鏈外,發送方已使用 ENS 通過接收方發佈的公鑰來生成新地址。通過加密用於生成地址的數據,並通過 Umbra 智能合約宣佈,發送方可以讓接收方知道他們已將付款發送到了新的隱形地址。而只有接收者才能生成提取資金所需的私鑰。

圖:Umbra 的接口,可通過 ropsten.umbra.cash 訪問,目前僅在 Ropsten 測試網可用

通過利用 Gas Station 網絡和 Uniswap,Umbra 使取款人能夠使用他們收到的代幣支付 gas。這就避免了在取款前用 ETH 來為隱形地址提供資金的需要。

Umbra 和 Tornado Cash 的不同

那 Umbra 和 Vitalik 經常提及的 Tornado Cash 有什麼不同呢?

簡單説,Tornado Cash 是一個使用零知識證明的鏈上混幣器,當你把幣放到裏面,並等待別人也這麼做之後,你就可以用自己的證明取出資產,由於每個人的資金都集中在混幣器中,所以來源地址和取款地址之間的鏈接就斷開了。

而 Umbra 協議則是用於兩個實體之間的支付,並附帶了一組不同的隱私權衡(即考慮的方向不同),Umbra 沒有破壞發送者和接收者地址之間的鏈接,而是使得該鏈接毫無意義。每個人都能夠知道資金被髮送到哪個地址,但他們卻無法知道是誰在控制那個地址。

除了這些,Umbra 協議還具有一些非常有意思的特性,比如它使用的 gas 要少得多,因為它不需要驗證鏈上的任何高級加密技術,所有的交易都是簡單的轉賬。此外,它使得 ETH 和任意 ERC20 代幣都可以私下轉讓,你不需要依賴於一個大型的匿名集。

Umbra 協議的工作原理描述

最後,簡單談談 Umbra 協議到底是如何實現的:

用户將已簽名的消息發佈到 ENS 文本記錄,以顯示他們的 Umbra 公鑰。此公鑰是從專門為 Umbra 生成的隨機私鑰派生出來的。

付款人使用這個公鑰,並加上一些隨機生成的數據,然後創建一個新的「隱形」地址。

付款人用接收者的公鑰加密隨機數據。

付款人將資金髮送到屏蔽地址,並將加密消息發送到 Umbra 的智能合約。合約將加密的消息作為事件進行廣播。

接收者掃描 Umbra 協議廣播的加密消息,直到找到一個可以用私鑰解密的消息。

接收者使用加密消息的內容加上他們的私鑰來生成隱形地址的私鑰。

接收者使用隱形地址的私鑰簽署一筆取款交易,將 ETH 或代幣發送到他們選擇的地址。

另外可選的一個途徑,取款交易通過 Gas Station 網絡交易中繼者廣播,避免了為訪問代幣的隱形地址提供 ETH 資金的需要。Umbra 合約通過 Uniswap 交換部分代幣,向 GSN 中繼者支付 gas。

截至目前,Umbra 協議依舊處於在 Ropsten 測試網測試的階段,根據 Ben DiFrancesco 表示,他們計劃完善 Umbra 協議,並很快將在以太坊主網上線,而他們的首要任務是確保合約的安全性,畢竟這涉及到了用户的資金安全。