Privacy

如何正確接受捐贈?

  • November 22, 2021

想像一個想要接受比特幣捐贈的網頁。一種天真的方法是在頁面上提供一個地址,僅此而已。這裡的問題是,每個人都知道該地址,如果資金移動,該地址將在第一次支出後被重新用於新的捐贈。

好的,那我們怎樣才能做得更好呢?我們每次都可以擁有 xpub 並生成一個新地址……每次什麼?第一個基本策略是在有人向先前生成的地址發送捐款後立即生成一個新地址。這裡的問題是機器人對網頁的主動監控只會再次顯示所有地址。

我們能做得更好嗎?例如,我們可以為每個 IP 地址生成一個新地址。這樣做,機器人將始終看到一個專用於其 IP 地址的地址,除非來自機器人網路中的同一 IP 地址下的某人捐贈,否則機器人無法透露任何有用的資訊。這裡的問題是,如果我們假設轉換率不是很高,我們會生成很多地址,其中大多數從未收到任何捐贈。這會導致種子恢復出現問題,其中通常為在掃描終止之前掃描的空地址的最大數量定義了間隙限制。我認為這是非常特定於錢包的規則,但我認為總的來說,這裡存在問題(真的嗎?)。

那麼我們怎樣才能做得更好呢?假設我們想使用一個使用 24 字種子 + 密碼片語的冷儲存,我們很高興將比特幣核心與網頁一起執行。我們如何以一種易於管理、可以從種子中恢復並同時優化隱私的方式解決捐贈問題?某處是否已經存在解決方案(例如 BTCPayServer)?如果是這樣,它是如何工作的,這種解決方案的隱私屬性是什麼?

第一個基本策略是在有人向先前生成的地址發送捐款後立即生成一個新地址。

這不是一個好的策略。考慮愛麗絲打開捐贈頁面,查看地址並決定什麼都不發送。Bob 也會看到相同的地址並發送一些比特幣。Alice 可以跟踪此捐贈,或者至少知道有關交易相關輸入和歷史的一些資訊。

我們能做得更好嗎?例如,我們可以為每個 IP 地址生成一個新地址。

很少有工具可用於在每個請求上使用不同的 IP。所以,這可能不是最好的方法。

這裡的問題是,如果我們假設轉換率不是很高,我們會生成很多地址,其中大多數從未收到任何捐贈。這會導致種子恢復出現問題,其中通常為在掃描終止之前掃描的空地址的最大數量定義了間隙限制。我認為這是非常特定於錢包的規則,但我認為一般來說,問題存在於此

是的,根據我的理解,“差距限制”是一個問題。試圖解決捐贈地址隱私問題的最大問題。

某處是否已經存在解決方案(例如 BTCPayServer)?如果是這樣,它是如何工作的,這種解決方案的隱私屬性是什麼?

每次打開捐贈頁面時,BTCPayServer 都會創建一個新的比特幣地址。

範例:https ://btcpayjungle.com/api/v1/invoices?storeId=FSt2N7kxe7m5Nzbu5xxqSB83faZQG44Etx2wp266C4rC&price=10¤cy=USD

我在電子錢包中創建了一個新的比特幣錢包,預設差距限制為 20。我可以通過打開上述連結 20 次找到我錢包中的所有20 個地址。第 21 次打開頁面的請求返回了一個新地址:bc1qpzt7hax5cade0yu4grqn4aat62hdq9jj9cxuav我在錢包中看不到該地址。

我不得不通過執行以下命令來增加間隙限制,重新啟動電子以查看地址:

wallet.change_gap_limit(21)

因此,在這種情況下,BTCPayserver 有利於保護隱私,但如果有人試圖攻擊,則會在管理具有巨大差距限制的錢包時遇到問題。

每次刷新頁面時,Joinmarket 捐贈頁面還會提供一個新的比特幣地址:https ://bitcoinprivacy.me/joinmarket-donations 。Chris Belcher 在推特上分享說,很多地址都被導入到一個僅限手錶的錢包(核心)中。

其他解決方案:

可重複使用的支付程式碼: https: //support.samourai.io/article/68-what-are-paynyms


這是一個需要解決的有趣問題,如果我找到更好的解決方案或使用比特幣核心進行捐贈的方法,可以改善隱私且沒有其他重大問題,我會更新答案。

好問題!

對於每個點擊 [捐贈] 的匿名訪問者:

  • 生成一個新的高熵 URL,該 URL 可以公開訪問但無法猜測(此外,它可能會在一段時間後過期)
  • 根據 xpub 和計數器推導出一個新的比特幣地址;此地址專門用於此特定的捐贈嘗試

即使匿名訪問者不付錢就放棄了這個過程,她的唯一地址也永遠不會被重複使用。就地址空間差距而言,它是“浪費的”。

其他匿名訪問者將無法發現任何過去或未來的地址,因為他們無法猜測 URL-s。

唯一的缺點是理論上存在毫無意義的破壞行為的風險:可以循環點擊 [捐贈],從而增加錢包中未使用地址的數量。這並不是一個真正的大問題,因為大多數錢包都可以配置為任意間隙。我也從未聽說過在實踐中發生過這樣的破壞行為。

現在,最實用的方法是使用現有的開源、自託管的捐贈處理器,例如:

  • <https://cypherpunkpay.org/> - 最容易安裝和維護,明確關注隱私(披露:我是作者)
  • <https://btcpayserver.org/> - 傳奇、最全面、最成熟的一個

引用自:https://bitcoin.stackexchange.com/questions/106971