Transactions

在共享錢包中區分使用者餘額的最佳方法是什麼?

  • March 11, 2019

第一次在這裡發帖。我一直在考慮一個高度依賴比特幣使用以獲得最佳使用者體驗的應用程序。目前,所有使用者的共享錢包似乎是最好的選擇,因為我們在這裡討論的是使用者進行多次微交易(不是比特幣網路中的實際交易),數據庫始終跟踪誰有權獲得里面的 BTC 數量該平台。使用者最初必須將 BTC 發送到一個共享地址,從而為他們的賬戶“注資”。但是,確認使用者已將 1 BTC 發送到共享地址,然後將他們的帳戶與我的數據庫中的這個特定值相關聯的理想方法是什麼?我一直在考慮一些解決方案,但很想听聽大家的意見。提前致謝!

為每個使用者創建個性化地址是最好的做法,這是絕大多數服務所做的。使用 BIP 32/44/49/84 HD 錢包,您可以通過後端輕鬆管理的方式為每個使用者獲取個性化的存款地址。

製作單一的存款地址不僅難以區分使用者存款,而且對您的使用者隱私和您的服務也不利。為什麼要讓每個知道您的存款地址的使用者都知道您的服務隨著時間的推移收到了多少硬幣?

如果您要儲存使用者資金,您還應該注意後端硬幣管理(即,您應該使用適當的冷藏方法,以降低使用者資金被盜的風險)。這意味著您需要一個熱/冷錢包系統來管理不僅存款,還管理取款。因此,從這個意義上說,僅使用一個單一地址也是不夠的,這可能是不建構僅具有一個存款地址的系統的進一步原因。

如果你真的只需要創建一個存款地址,那麼你可以讓使用者使用他們將 BTC 發送到錢包中的地址的私鑰簽署消息。這將以加密安全的方式證明存款的所有權。但是,絕大多數使用者友好型錢包不提供消息簽名功能,因此需要此功能會嚴重損害使用者體驗和平台的可用性。我的猜測是,許多 BTC 使用者可能一開始就不知道如何簽署這樣的消息。

一種解決方法是遵循大多數中心化交易所一直遵循的方法。您為每個使用者創建一個唯一的 BTC 公共地址並維護他們的私鑰(您可以使用 HD 錢包來生成這些地址。)定期(例如每天一次,或者根據您擁有的使用者量更頻繁)您將 UTXO 從使用者轉移到主賬戶。

借助此方法,您已經解決了這兩個問題。首先,您可以跟踪使用者發送的 BTC(因為它將發送到他的唯一地址)。其次,在您的內部數據庫中,您可以在發送後將適當數量的 BTC 記入使用者帳戶,然後在收到交易時藉記/貸記。您無需在比特幣區塊鏈上實際進行這些交易,只需在您的內部數據庫中即可。當使用者想要提取資金時,您的軟體只需簽署該交易並允許使用者提取他所欠的金額。

雖然,我已經提到了一種解決方法,但這是由於您提出的問題的性質。不推薦這種方法。以集中的方式控制資金會破壞比特幣的基本結構。目前在不犧牲必要去中心化的情況下進行小額支付的最佳方式是通過側鏈,使用閃電網路等解決方案。您可以在此處閱讀有關它的更多資訊(描述不是問題的基礎)。

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