比特幣後端集成——我真的需要“錢包”的概念嗎?
我正在開發一個應用程序,它將接受針對我的應用程序中某些特定“項目”的比特幣,然後將其中一些比特幣轉移到外部地址。
在我讀到的許多類似項目中,他們使用“
wallets
”的概念。例如,如果您使用Bitcoinj
: 似乎要做的第一件事就是創建錢包!我了解什麼是GUI 錢包軟體以及為什麼這些軟體對最終使用者很重要。但是在後端應用程序中,如果我理解正確, a
wallet
只是 aseed
可以private/public keys pairs
確定性地生成一些。那是對的嗎?所以,最後,為了能夠管理髮送到“錢包”(發送給特定使用者或特定“項目”)的硬幣,唯一真正重要的是知道所涉及的私鑰.
在我的應用程序中,我計劃
private/public keys pair
為每個新的“接收硬幣”交易生成一個新的。不是來自seed
,只是隨機的一對!由於我已經有一個數據庫,我正在考慮將生成的密鑰儲存在一個表中(私鑰開始加密),其中包含有關事務用途的資訊。當我需要向外部地址發送硬幣時,我會解密一些私鑰,使用它們創建輸入,創建我要簽名的交易,然後廣播該交易。
換句話說,目前我真的沒有“錢包”的概念。
所以我的問題:
我是否遺漏了“錢包”實際上做了什麼(在後端應用程序中)?
我是否需要其他東西來實現我正在談論的“接收/發送”過程,或者我的數據庫表是否
private/public keys pairs
足夠?
我了解什麼是 GUI 錢包軟體以及為什麼這些軟體對最終使用者很重要。但是在後端應用程序中,如果我理解正確的話,錢包只是一個種子,可以確定性地生成一些私鑰/公鑰對。那是對的嗎?
沒錯,但你錯過了錢包最重要的功能……製作交易/比特幣腳本!這部分並不是微不足道的,因為它涉及硬幣選擇算法、比特幣標準腳本 +~segwit(也用於生成 segwit 地址)、簽名等。
最終重要的是密鑰確實……但你不應該低估錢包提供的功能,而不是持久化大量加密的私鑰,你應該明確地看看高畫質錢包(BIP32,BIP44,BIP49,BIP84)在給定種子/助記符的情況下,這“基本上”是一種確定性方法,可以處理無限量的密鑰。這樣你就可以堅持路徑。
看到一個錢包更像一個工具,或者一個庫一個模組一個包什麼的,你會要求我很確定,因為當你提到“使用它們創建輸入,創建一個我要簽名的交易,然後廣播該交易“,這就是錢包的作用。
關於您收到/發送,我想您必須處理或考慮給定的交易狀態,探勘,驗證(約 6 次確認,取決於您的要求)。這樣,您的應用程序的行為就會有所不同。基本上,您需要一個節點或 API 和一個錢包“包”工具,它們將彌合您的應用程序和節點之間的差距。