這是Seth For Privacy 的一篇觀點社論,他是隱私權倡導者和“選擇退出播客”的主持人。
長期以來,改善比特幣隱私的最基本關鍵之一是避免重複使用地址進行多次支付。但是,雖然現在這樣做似乎很簡單,大多數錢包都會為每次付款自動生成新地址,但當您需要簡單地重複接受來自多個人的付款或沒有復雜的基礎設施時,您會怎麼做?
這就是“可重複使用的支付代碼”(有時稱為“隱形地址”)的概念發揮作用的地方,它使簡單的靜態地址能夠用於重複支付,同時通過使支付更難鏈接在一起來保護鏈上隱私。
為什麼比特幣需要可重複使用的支付代碼?
雖然目前可以使用更複雜的基礎設施,例如由 比特幣支付服務器,為了在不重複使用地址的情況下接受捐贈或付款,需要在比特幣節點旁邊設置一個完全獨立的服務器,這使得接收付款的更簡單用例對大多數人來說過於復雜。
如果您只是希望能夠進行捐贈活動,讓朋友反復向您發送比特幣,或者讓其他人為您的工作小費,那麼現在您通常要么必須運行複雜的基礎設施,要么使用靜態比特幣地址的隱私極差.
輸入可重複使用的支付代碼,這個概念可以追溯到2015 年 隱身地址BIP 由彼得托德創建。雖然最初的提案從未正式成為提議的BIP(儘管BIP 編號為63),但作為繼任者, BIP47,近年來在錢包中的使用量開始增加,例如 Samourai 錢包 和 麻雀錢包,兩個優秀且以隱私為中心的比特幣錢包。
我們如何以無聲付款結束?
不幸的是,BIP47 有一個嚴重的缺點:為了讓接收者知道他們正在獲得一筆交易(從而能夠花費它!),發送者必須創建一個特殊的交易——稱為“通知交易”——on-鏈,以便接收者找到他們的資金, 此外 單獨發送他們的預期付款。雖然每個發件人只需執行一次,並且是支持BIP47 輕錢包使用的核心功能,但這會產生嚴重的費用、可擴展性,最重要的是,對於可重複使用的支付代碼的對抗性用例,還會涉及隱私問題。
謝天謝地, 魯本·索姆森 2022 年3 月13 日,以GitHub Gist 的形式放棄了一個非常有前途的提案,標題為 “無聲付款”, 其中關鍵的權衡從通知事務(有問題的結果,我們稍後會介紹)轉移到接收方更複雜的掃描過程。 Silent Payments 是原始“隱形地址”提案的另一個迭代,但利用了比特幣掃描、腳本類型(即Taproot)和一些漂亮技巧方面的許多進步。
如果您想更深入地了解Silent Payments 的起源和提議的功能,我強烈建議您閱讀Shinobi 的優秀文章, “比特幣無聲支付和秘密密鑰,” 但我們也會在下面以一種非常簡單的方式來介紹它。
無聲付款的工作原理,簡化
在我們深入探討為什麼我對靜默付款感到興奮之前,重要的是您必須非常簡單地了解靜默付款如何對發件人和收件人起作用。
對於發件人
當有人想將資金發送到靜默支付地址時,實際上他們需要做的就是掃描或複制/粘貼支付代碼到他們最喜歡的錢包中(假設它受支持),然後像往常一樣發送付款。但幕後究竟發生了什麼?
當發送者將靜默支付地址輸入他們的錢包時,他們的錢包將結合三個密鑰來創建一個唯一的一次性地址,只有預期的接收者可以從中消費。這個唯一地址是通過組合發送者想要花費給接收者的輸入之一的公鑰(或外行術語中的“地址”),接收者的公鑰(包含在靜默支付地址中)創建的,以及發件人生成的只有發件人和收件人知道的“共享秘密”密鑰。多虧了密碼學中所謂的“交換”屬性,發送者可以組合這些密鑰 但不能從結果地址消費,因為他們不知道收件人的私鑰(當然)。
當發送者組合這三個密鑰時,它們會生成一個新的公鑰(或地址)並將預期資金發送到這個只有接收者控制的新地址。在鏈上,這筆交易看起來 確切地 就像任何其他類似類型和腳本的支出一樣,沒有任何區別因素可以讓外部觀察者清楚地看到使用了靜默付款,更不用說擁有靜默付款地址的人了。
對於收件人
一旦我們到達接收者,我們就會看到靜默支付的主要權衡點在哪裡。如果您還記得發件人使用所花費的輸入的公鑰來生成唯一的一次性地址,您可能會問自己:“收件人如何知道他們已經收到了資金,以及發送到了哪個地址?”
這個問題是Silent Payments 提案的核心,這意味著收件人必須進行相對昂貴的掃描 每一個 創建無聲支付地址後,在比特幣區塊鏈上進行交易。這種掃描使接收者能夠查看輸入公鑰和使用他們的靜默支付地址生成的共享秘密以及任何交易中的輸出公鑰是否與他們的私鑰正確匹配,如果是,則將其添加到他們的錢包中。
與標準比特幣錢包掃描相比,這種掃描成本相當高,因為您不能簡單地將錢包中的派生地址列表與交易輸出列表進行比較來獲取您的錢包餘額。相反,您必須遍歷每筆交易,計算每個輸入的共享密鑰並與輸出進行比較,Somsen 將其比作“檢查每個簽名兩次,而不是一次”。比特幣解釋。 ”
理想情況下,此掃描將在初始塊下載(第一次同步整個比特幣區塊鏈時)或從錢包和比特幣節點卸載掃描的獨立軟件期間完成。
優化收件人的掃描時間
雖然這種掃描在計算上相當昂貴,但可以通過三個主要優化在不犧牲隱私或可替代性的情況下提高效率:
- 在創建靜默支付地址並保存時創建一個“生日”日期,這樣當您需要恢復時,您可以只從鏈上的那個塊開始掃描,而不是從創世塊開始掃描。
- 只檢查Taproot 輸出,因為目前鏈上很少有輸出是Pay-to-Taproot(“P2TR”)這將消除大部分事務並大大減少掃描時間。 理想情況下,隨著Taproot 的使用越來越多,這將變得不那麼有用,但可能會在一段時間內成為非常有效的優化。
- 只檢查UTXO 集而不是掃描每筆歷史交易,因為您只關心發往您的靜默支付地址的新的、傳入的、未使用的輸出。這確實有不提供交易歷史記錄的缺點,並且需要一個額外的數據庫而不是普通方法。
無聲付款比PayNyms 更適合的地方
現在進入問題的癥結所在:如果我們已經擁有PayNyms (BIP47) 並且他們目前看到越來越多的採用,我們為什麼需要新的東西?不幸的是,BIP47 的棘手問題仍然是通知事務,主要原因有兩個,在我看來,正是這個問題使得Silent Payments 更適合對抗性用例。
首先,要求通知交易使單筆付款效率極低,因為您必鬚髮送兩筆交易才能發送一筆付款。對於可重用支付代碼的許多常見用例來說,這是一個令人望而卻步的缺點,因為它會大大增加鏈上費用並使區塊鏈膨脹。其次,本次通知交易也有 大量的 隱私缺陷,因為世界上任何有互聯網連接的人都可以查看比特幣區塊鏈並確定哪些錢包集群(以及有多少)已“連接”到給定的PayNym。
讓我們採取 “自由車隊”卡車司機抗議場景 以二月份在加拿大發生的事情為例。如果那些為抗議者收集和分發比特幣捐款的人使用BIP47 PayNym 來收集這些捐款,那麼鏈上哪些錢包集群連接到PayNym 將是顯而易見的,因此這些錢包中的每一個都很可能都發送了捐款到“自由車隊”,允許政府和交易所打擊捐贈者。
雖然比特幣可以防止簡單地沒收捐贈者的資金(與GoFundMe 不同),但如果這些捐贈者曾經將他們的鏈上錢包與了解你的客戶(KYC) 交易賬戶或他們的身份相關聯,他們的當地政府可能會來尋求解釋甚至直接起訴他們。
對於這些關鍵問題,我認為BIP47 PayNyms 根本不足以應對可重複使用支付代碼的常見對抗性用例,這就是為什麼我對這個新提案如此興奮的原因。靜默付款時 將 通過PayNym 將資金接收到可重複使用的支付代碼的複雜性增加,由此產生的隱私、效率和非交互性收益是非常值得的,並使它們成為大多數用例中比特幣可重複使用支付代碼的理想步驟,這是迫切需要。
也就是說,PayNyms 確實滿足了一個非常具體的用例——它們允許可重複使用的支付代碼 沒有 運行比特幣全節點。在額外的交易和隱私問題與運行完整節點(作為接收者)的成本無關的情況下,PayNyms 仍然可以作為可重複使用的支付代碼的絕佳方法,同時保留輕量級的用戶體驗優勢。錢包。還有一種可能的未來處理通知交易的替代方法,將通知交易卸載給第三方,減少一些正在探索的鏈上隱私問題(但引入受信任的第三方) 這裡.
Samourai Wallet 目前使用此變體,以便利用PayNyms 進行協作交易,而無需先通知交易。
什麼是下一個步驟?
雖然無聲付款非常令人興奮,但重要的是要了解這些提案仍處於早期階段。 GitHub 上的Gist 提案正在接受廣泛的審查和評論,該領域的許多人正在研究許多關鍵方法,以在此過程中對其進行測試、優化和改進。 Silent Payments 正在進行的主要探索項目是各種方法的詳細基準,並找到更好地優化掃描而不會丟失隱私或可替代性的方法。
如果您是技術含量更高的用戶或開發人員:我們可以在此提案的生命週期早期獲得測試、基準測試和審查概念的人越多,它的長期性就越好,因此請務必提供 在GitHub 上看一下 如果你有更多的技術傾向。
如果您的技術含量較低,請務必留意比特幣雜誌以獲取未來的文章,並提供 關於無聲支付的“比特幣,解釋”的精彩解釋劇集 和 魯本·索姆森關於無聲支付的演講 觀看或聆聽以更詳細地了解這一切是如何運作的以及所採取的方法。
最後,我只想說,看到進一步的發展和研究有助於推動比特幣隱私向前發展總是令人興奮的,這個領域通常不被視為“性感”,但對於實現審查制度的抵抗和絕對至關重要讓比特幣真正成為“自由貨幣”。
特別感謝Samourai Wallet 的Ruben Somsen 和TdevD 抽出寶貴時間審閱本文並提供反饋。
這是Seth For Privacy 的客座帖子。所表達的觀點完全是他們自己的觀點,不一定反映BTC Inc 或比特幣雜誌的觀點。