系統難點
1.多數數字貨币需要為每個使用者單獨配置設定位址,如此多的位址如何友善備份?
多數貨币支援BIP44标準,通過BIP32建立助記詞BIP44管理密鑰能做到備份一個助記詞備份所有密鑰。
2.怎樣安全的管理密鑰?
密鑰從各種區塊錢包系統中分離出來,由一個系統統一管理密鑰,需要轉賬時調用密鑰系統生成轉賬簽名資料。
密鑰系統單獨部署和所有業務系統隔離,甚至可以購買不同廠商的雲伺服器進行隔離。
單獨的密鑰系統也減少了對區塊錢包的依賴,區塊錢包隻提供區塊資料同步不管理密鑰,如果區塊錢包出現故障可以切換到另外一個區塊錢包而不用轉移錢包中的密鑰。
3.如何確定充值、提現一定是成功的?
建立内部賬戶系統,賬戶有金額變動時先進行記錄,經過一定區塊确認後對比内部賬戶與區塊賬戶金額是否一緻,如果一緻說明充值、提現成功。
内部賬戶增加了系統的複雜性,需要對每一筆出入賬進行記錄,但是能夠很好的保證資金安全。
系統結構
系統主要由blockchain-server、crypto-server、xxx-observe三部分構成blockchain-server對外提供區塊服務,所有業務系統與區塊系統交易由blockchain-server完成。crypto-server管理密鑰,生成簽名資料。xxx-observe為區塊監聽系統,監聽區塊中賬戶資金變動的情況,不同的區塊部署不同的xxx-observe,如btc的bitcoin-observe、eth的ether-observe等。
bitcoin-server
币種價格查詢:收集各币種價格為業務系統提供查詢。
blockchain-server
生成助記詞:調用crypto-server系統生成助記詞,助記詞加密密碼存儲在blockchain-server系統。
生成密鑰:調用crypto-server系統生成密鑰,密鑰加密密碼存儲在blockchain-server系統。
添加位址監聽:根據區塊類型将監聽位址發送給對應的xxx-observe系統。
充值、提現通知:通知業務系統充值、提現資訊。
生成轉賬簽名資料:調用crypto-server系統生成轉賬簽名資料。
crypto-server
生成助記詞:生成助記詞并且根據blockchain-server系統設定的密碼将助記詞加密儲存在本地。
生成密鑰:根據助記詞生成密鑰,并且根據blockchain-server系統設定的密碼将密鑰加密儲存在本地。
生成轉賬簽名資料:根據收款人位址、金額、手續費等使用本地私鑰生成簽名資料傳回。
xxx-observe
同步區塊:連接配接區塊服務同步區塊資料,檢視資料中是否有監聽的位址,如果有記錄資料。
驗證區塊:經過一定數的塊确認後檢視區塊是否有效。
清算賬戶:監聽賬戶有餘額變動時需要對系統中的賬戶與區塊中賬戶餘額進行比較,防止充值、提現無效,隻有清算過的充值、提現記錄才會通知給業務系統。
充值、提現通知:監聽賬戶有充值、提現時通知blockchain-server系統。
業務流程
生成位址
業務系統調用blockchain-server系統生成密鑰接口,blockchain-server調用crypto-server生成密鑰,crypto-server系統生成密鑰後将位址傳回給blockchain-server,blockchain-server調用位址監聽接口通知xxx- observe監聽位址,添加監聽成功後傳回位址給業務系統。
充值
xxx- observe系統監聽到區塊資料有充值記錄時通知blockchain-server系統,blockchain-server通知業務系統有充值資訊,充值狀态為進行中。
xxx- observe系統經過一定區塊數确認後對監聽位址賬戶進行清算核對,如果餘額正确通知blockchain-server系統,blockchain-server通知業務系統充值成功。
提現
業務系統申請提現到blockchain-server系統,blockchain-server系統根據區塊類型将提現申請送出到相應的xxx- observe系統。
ether-observe運作批量提現任務,查詢出一條提現記錄,根據提現記錄查詢出滿足提現金額的賬号進行提現,ether-observe系統調用blockchain-server系統,blockchain-server根據提現位址查詢出私鑰密碼調用crypto-server完成提現簽名傳回,ether-observe系統獲得提現簽名資料後廣播到區塊鍊完成提現。
bitcoin-observe運作批量提現任務,查詢出多條提現及記錄,根據多條提現記錄查詢出多個滿足提現金額的賬号進行提現,bitcoin -observe系統調用blockchain-server系統,blockchain-server根據提現位址查詢出私鑰密碼調用crypto-server完成提現簽名傳回,bitcoin-observe系統獲得提現簽名資料後廣播到區塊鍊完成提現。
源代碼工程結構
上硬菜,直接附上系統架構源代碼GitHub位址:
https://github.com/JolyHuang/cube.git
https://github.com/JolyHuang/boot.git
全部源代碼擷取方式: