為了避免混淆,請注意,這與 ERC-5564 隱身地址不同,在 ERC-5564 隱身地址中,發送方會為非交互式接收方計算隱身地址。
概括
在這個想法中,接收者計算地址並與發送者共享(不涉及隱私,使用像Metamask、交易所、公共錢包這樣的遺留系統)。
這是一個可以在現有隱私方案基礎上構建的應用程序。
為了保持隱私,你的交易對象無需使用基於隱私的錢包。但你需要底層隱私方案擁有足夠大的匿名集。
該應用程序可以與使用 ERC-6538 的其他隱私方案互操作,使其能夠與使用自己的隱私方案、無隱私方案以及可能其他隱私方案的用戶一起工作。
動機
大多數隱身地址解決方案都是由雙方用戶共同選擇加入的,也就是說,雙方用戶都需要遵循相同的協議或規則。協議有很多,例如 Aztec、ERC-5564、Railgun、Tornado Nova、zkBoB 等等。
因此,如果 A 想要向 B 付款,那麼兩個角色都必須註冊相同的協議。如果我們假設如此,那麼一切就都美好了,但實際情況是,大多數人不會使用任何隱私協議,即使有人使用,也可能不是你使用的那個。
目前的解決方案:
用戶加入多種流行的隱私協議,以便與任何人兼容。
用戶只需在公共以太坊上創建多個錢包地址,所有交易均公開。雖然資金被分散存放,以防止他人知曉您的真實餘額,但用戶可以從任何人處接收資金。但必須注意,這些地址之間不要直接連接,也不要使用 Tornado Cash 之類的工具。
只需將資金存放在集中交易所即可接收任何人的存款。
在支付領域,隱私保護的一大挑戰在於,要求支付參與者(付款人和收款人)都使用支持相同協議的軟件。這導致用戶出於隱私協議的新穎性而註冊,但最終用戶大多會進行公開交易,因為他們的互動對象並未註冊,除非他們很幸運地遇到註冊了相同系統的同伴。
抽象的
這篇文章探討了一種潛在的解決方案,它允許用戶選擇加入,以保持其餘額的合理隱私,同時允許他們向公共以太坊地址發送或接收資金。該解決方案是一款應用程序,可以構建在任何現有的基於UTXO的隱私方案之上,例如tornado nova。即使該應用程序至少集成了一個錢包,也可以。用戶可以自行生成多個EVM地址。他們與發送者交互,並向其提供一個新的地址。該地址是使用CREATE2預先計算的。一旦收到資金,錢包軟件就會使用中繼器將資金收集到底層隱私方案中,創建一個UTXO,用戶可以在未來的交易中使用。
這個解決方案是交互式的。在大多數日常用例中,例如向朋友或客戶付款,都需要交互,因為人們仍然會問“你想在主網還是某些特定的二層網絡?更喜歡ETH 、 Dai還是USDC?”。在這裡,用戶將自己生成一個新地址並將其提供給發送者,這就是交互。CREATE2 隱身地址不需要是 EIP/ERC,因為它更像是一個應用程序,其他用戶無需選擇遵循某些新協議。
它是如何工作的?
我可以鏈接到去年的 PoC 中的代碼來表達一些細節。
1. 用戶加入本系統
用戶安裝遵循所述協議的軟件。它會生成一個 32 字節的密鑰並將其存儲以備將來使用。
2. 用戶希望從客戶那裡收到錢
用戶生成一個新的隱身地址,該地址的生成方式如下:
兩個詞的哈希值:32 字節的秘密和 32 字節的隨機數(可以是增量的)
哈希是 32 字節鹽,與 CREATE2 一起使用以獲取地址https://github.com/ultralane/contracts/blob/b8e17ce7099ffb358488579927308d5f73716dc3/contracts/MixerPool。sol # SOL-L166
用戶(接收者)通過向發送者發送 EVM 地址來與發送者進行交互。
發送者可以以任何他們想要的方式向該地址發送資金,通過Metamask、從交易所提款或從隱私方案提款。
3. 用戶從客戶處收到錢
這筆錢被髮送到一個預先計算的地址,該地址是/將是一份合同。https : //github.com/ultralane/contracts/blob/b8e17ce7099ffb358488579927308d5f73716dc3/contracts/StealthAddress。sol
用戶的錢包軟件一旦上線並注意到隱身地址上的餘額:
它根據底層隱私方案的規範生成一個秘密記錄。通常,此類記錄包含秘密、金額以及用於防止衝突的隨機綁定。https ://github.com/ultralane/circuits/blob/42e39cd95345c6c47ee8b363854262ab03f29731/lib/src/note.nr#L3-L7
它在本地證明用戶知道鹽的原像。
它還添加了註釋承諾,以便中繼器無法篡改它(此部分在 PoC 中不存在)。
然後將該有效負載提供給中繼器,該中繼器調用池上的函數,從而進行公開交易,將資金轉移到用戶可使用的隱私池中。https ://github.com/ultralane/contracts/blob/b8e17ce7099ffb358488579927308d5f73716dc3/contracts/MixerPool.sol # L133-L160
此外,隱身地址還可以在 ERC-6538 註冊表中註冊。這樣,將來從某些選擇加入隱私保護的用戶向該地址轉賬時,就可以使用更高效的路徑。
用戶想要匯款
用戶的錢包軟件可以使用 ERC-6538 註冊表檢查該地址是否為隱身地址以及屬於哪種類型。如果發現使用了受支持的隱私協議,則進行處理。
如果使用底層隱私方案,則直接花費 UTXO 創建接收方可根據底層隱私協議的規範花費的新 UTXO。
如果那是 ERC-5564:隱身地址,則根據協議和隱身地址計算接收地址。
否則,該地址不使用任何隱私方案,因此只需將資金提取到該地址即可。
結論
如果以非交互方式接收來自陌生人的捐款,此解決方案無法直接起作用。例如,在 GitHub 自述文件中放置任何資金的地址。因為所有到同一地址的交易都將可見。這正是 ERC-5564 的閃光點,因為發送者在這裡創建一個新地址,但是它需要發送者選擇加入。用於捐款。在存儲庫中,人們通常會列出許多地址,例如BTC、 ETH、 Monero,他們可以列出隱私方案 Railgun 的另一個 x 地址或更多,而不是ETH地址(因為用戶可能不知道隱形地址或正在使用過時的錢包軟件)。
可以使用 ERC-6538 和其他隱私方案將 CREATE2 隱身地址與 ERC-5564 結合起來。基本上,在資金收集過程中,CREATE2 隱身地址可以在註冊表中註冊多個隱私方案。我意識到 ERC-6538 實際上非常強大,可以讓錢包與多個隱私方案互操作。
CREATE2 隱身地址與其他 EOA 無法區分,直到其中的資金被收回為止(最終會被收回)。因此,有人可以通過掃描區塊鏈輕鬆找到已使用的隱身地址,並追蹤發送到隱私池的資金。
當然存在向中繼器透露 IP 的問題。




