交易所使用什麼軟體來管理錢包?
他們是寫包裝
bitcoind
還是有更好的解決方案?有些交易所處理幾十種數字貨幣,這是否意味著它們同時執行bitcoind
、、、、litecoind
等dogecoind
?
從交易所的角度來看,最好的選擇是主要編寫自己的軟體。從技術角度來看,交易所只需滿足以下條件即可接受加密貨幣:
- 必須允許交易所聲稱接受的比特幣或硬幣存款。
- 必須允許交易所聲稱接受的比特幣或硬幣的提款。
通常
bitcoind
,或者它的山寨幣變體,,,litecoind
等等dogecoind
,為加密貨幣的使用者處理這兩個問題。但交易所有特殊要求。以下是我能想到的一些問題,如果他們使用核心客戶端,交易所可能會發生這些問題。
- 核心客戶端不是為在多伺服器環境中工作而設計的,這對於大型交易所來說至關重要。
- 私鑰和對應的地址需要在特殊情況下儲存。交易所可能希望添加使用者名和地址,甚至重複使用地址以提高效率。
- 核心客戶端並不完全是輕量級的。交易所不需要很多通常與核心客戶端打包在一起的功能。例如,帳戶;它純粹是為了美觀地組織資金,交易所不需要的東西。
- 核心客戶端不允許對交易或其他組件進行更複雜的控制,無法使用SatoshiDice創建,
bitcoind
因為它需要操作交易輸入來創建發送,這是您目前無法使用的bitcoind
。那麼交易所應該做什麼呢?
使用兩者的組合,甚至放棄核心客戶端。有許多程式庫可以簡化比特幣技術的各個方面,libbitcoin是一個 C++ 庫,可讓您立即製作部分或完整節點。SatoshiDice 是在 BitcoinJ 上建構的,BitcoinJ是一個流行的比特幣 Java 庫。還有許多可用於其他語言的庫,但關鍵是建構節點並不太難。
我推薦混合使用,因為
bitcoind
它比您自己的程式碼更安全且無錯誤。您可能會不小心創建創建無效交易的程式碼,甚至不小心將硬幣發送到錯誤的地址。我會使用一個庫和我最喜歡的語言來檢測存款並將它們認證到帳戶,然後將原始交易推送到bitcoind
我自己或可能在同一台伺服器上執行的實例,在那裡它將對其進行驗證並負責將其發送到其他節點網路。減少程式碼混亂的空間。對於山寨幣,您需要一個正在執行的實例或只是對程式碼進行小的修改以區分。所有加密貨幣使用的協議之間並沒有太大的區別。無論如何,如果您打算接受硬幣作為交換,您應該知道。
TL; 博士
交易所應該使用他們自己編寫的軟體。這並不難做到,因為有許多可用的庫可以讓你對比特幣進行詳細的訪問。核心客戶端有時可能會成為瓶頸,但可以結合使用以避免上述瓶頸,同時維護交換的安全網,甚至可以簡化某些部分。