Wallet

在沒有完整區塊鍊或第三方 API 的情況下接受比特幣支付?

  • July 16, 2017

我想製作一個使用比特幣支付的基本程序/腳本,但我沒有與整個區塊鏈同步的儲存空間,我不想依賴像區塊鏈提供的第三方 API .info 或 block.io。

基本上,我需要一個具有這三個屬性的錢包:

  • 輕量級(即不需要完整的區塊鏈)
  • 有一個 CLI 可以根據命令生成和返回接收地址
  • 有一個 CLI 來獲取總錢包餘額

我對瘦客戶端如 、 和 依稀熟悉ElectrumMultiBit而且MultiBit HD我知道 Electrum 甚至有一個 CLI,但他們的文件中似乎沒有關於生成新地址的任何內容:

<https://docs.electrum.org/en/latest/cmdline.html>

我讀過 Electrum 錢包使用地址隊列並在使用後自動生成新地址,因此即使我可以獲取與錢包關聯的地址列表,我也可以獲得我想要的功能。但同樣,CLI 似乎真的很有限。

總而言之,我很沮喪。當然有一種方法可以做我想做的事情,如果沒有明顯的解決方案,為什麼不呢?僅僅因為我負擔不起租用 90+GB 空間的伺服器來儲存區塊鏈,我就必須使用集中式服務和 API 來實現基本的錢包功能,這似乎違反直覺。

如果您不想執行節點或使用任何 3rd 方 API,您可以使用庫,因為您只想接受付款。

使用您錢包中的擴展公鑰,並使用庫從 HD xpub 生成新地址。當使用者付款時,它將顯示在您的手機/PC 錢包中。

例如,對於Bitcore 庫,它將是:

var bitcore = require("bitcore-lib");

var pub = new bitcore.HDPublicKey('xpubMyHDPublicKey');
var derivedHdPublicKey = pub.derive('m/0/1'); 
//increment up the keychain m/0/2, m/0/3, etc each order
var derivedPublicKey = derivedHdPublicKey.publicKey;
var address = new bitcore.Address(derivedPublicKey);
console.log(address);

然後只需跟踪伺服器數據庫上的訂單和地址。

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