干貨分享:交易所錢包管理系統設計
作為web3世界的核心樞紐,交易所托管著大量加密資產,它的錢包管理也關系到大量用戶的資產安全。本文作者從產品設計的視角,分享了交易所錢包管理系統的組成、業務流程,一起來看一下吧。
交易所作為web3世界的核心樞紐,托管著大量加密資產,其錢包管理關系到大量用戶的資產安全,因此很有必要對其錢包管理系統研究學習一番。這里我整理了一篇個人從產品設計者視角的學習筆記,希望能夠幫助到大家學習。
01 交易所錢包系統組成
交易所錢包系統設計主要需要考慮到安全性和便捷性。為了兼顧兩者,交易所大部分資產用冷錢包管理,以保證資產安全;而少部分資產使用熱錢包管理,以方便用戶提現資產。
不多說,先放圖:
1. 熱錢包系統
熱錢包系統由用戶充值錢包、歸集錢包、提現錢包、手續費錢包等組成。
1)用戶充值錢包
用戶需要向交易所進行代幣充值,需要為每一名用戶分配一個地址,用于充值代幣,其私鑰保存在服務端以供后續資金歸集時簽名。
2)歸集錢包
資產分散在各用戶充值錢包中不方便管理,因此當充值錢包達到一定規模時需要進行資金歸集,將資金統一歸集至歸集錢包。
大量資金統一管理在一個錢包中是存在比較大的安全風險,所以需要對歸集錢包中的資產進行分配并轉移。
3)提現錢包
為了方便用戶提現和資金安全,一般會將20%資金轉移到一個提現錢包(也可能是幾個錢包),這個錢包專門用于客戶提幣使用。
手續費錢包:歸集資金、轉移資金、用戶提現這幾個操作均需要交易費,當其他錢包ETH不足抵扣交易費時,由該錢包轉入一定的ETH作為交易費。
2. 冷錢包系統
冷錢包系統一般包含系統冷錢包和BOSS錢包組成。
- 系統冷錢包:一般會將20%~30%的資金會轉移至系統冷錢包,當提現錢包資金不夠時才會在系統冷錢包進行劃轉。
- BOSS錢包:一般50%以上資金會轉移至boss錢包,由公司一個或多個老板控制。
02 錢包系統業務流程
交易所錢包系統和主要涉及業務流程:
- 注冊—:生成充值地址
- 用戶充值處理
- 資金歸集
- 資金分配轉移
- 提現轉賬
不多說,先放圖:
1. 注冊—:生產充值地址
當用戶注冊賬戶,需要對應創建一個錢包,為用戶分配一個單獨的充值地址,私鑰由保存在服務端以用于資金歸集。
2. 用戶充值處理
我們需要持續監聽充值錢包代幣入賬及區塊確認數,一般12個區塊確認后才認定為入賬成功。入賬成功后,需要判斷平臺是否支持該代幣,若支持則增加賬戶對應代幣的余額,至此完成用戶充值處理。
3. 資金歸集
用戶充值完成后,我們需要判斷用戶充值錢包該代幣資產價值,一般當其價值達到1000U,我們需要將錢包中資金歸集到歸集錢包。
歸集前需要判斷預估gas是否過高(超過100 gas),若過高則等待降下來,再進行歸集。
另外,需要判斷錢包是否有足夠ETH以抵扣交易費,若不足則需從手續費錢包轉入0.01ETH再進行歸集。
4. 資金分配轉移
歸集錢包為熱錢包,當大量資產都在一個熱錢包是存在極大風險的,因此我們將資產轉移。
1)篩選統計
在進行劃轉和分配之前,我們需要對歸集錢包中資產進行篩選統計,篩選出平臺支持且有余額的代幣,然后統計篩出代幣的余額。
2)資金分配
我們將80%的資產轉移至冷錢包地址,20%繼續轉移至提現熱錢包中。這樣設計兼顧安全性和便捷性,冷錢包控制相對來說保證了安全性;而大部分玩家都是把大部分資金存放在交易所中,熱錢包20%流動資金是足夠支撐用戶的提幣需求,因此也一定保證了便捷性。
3)資金劃轉
我們一般為固定周期進行分配轉移,一般設計為一周劃轉一次,具體周期和時間可以根據業務和公司情況而定。我們根據代幣類型采用不同劃轉方式,ETH直接根據分配資金轉賬,ERC-20代幣使用合約批量打包轉賬(節省交易費)。
5. 提現轉賬
用戶發起提現后,由于Nonce機制存在,并不直接將交易發送至網絡,而使用本地隊列排隊,接收到上一條成功確認記錄后,再獲取最新Nonce,進行下一條轉賬發送。
發送前,判斷余額是否充足,若不足則需申請從系統錢包手動轉入足夠的代幣后再進行轉賬。
03 私鑰管理方案
1. 多簽
提示:以太坊本身不支持多簽,需要使用智能合約實現,合約本身又存在安全風險,因此交易所的以太坊私鑰一般采用該方案保存。
普通用戶可以將私鑰/助記詞保存在軟件、紙上或者通過大腦記憶保存。但對于擁有巨額資產的交易所而言,普通用戶的私鑰管理方式根本無法適用,否則將存在單點保存的風險。
為了避免一個私鑰的丟失導致地址的資金丟失,達到風險分散的目的,一般會采用多重簽名技術。所謂多重簽名技術,就是把一個錢包地址的控制權交給多個密鑰,這些密鑰保存在不同的地點,并分別生成簽名。舉個簡單的例子:
2-3多重簽名,表示3個人擁有簽名權,而兩個人簽名就可以支配這個賬戶里的資金;
1-2多重簽名,表示2個人可以簽名,兩個人擁有私鑰,誰都可以來支配這筆資金。
在熱錢包方面,一般采用2-3多重簽名,需要三個私鑰持有人中的兩個分別進行授權,才能完成簽名。
在冷錢包方面,一般采用的是2-2多重簽名,即每個私鑰的使用需要兩個人雙重授權才能進行提幣,以保證冷錢包安全。
2. 備份
在采用多重簽名的同時,為了進一步降低私鑰丟失或損壞的風險,還對私鑰進行了備份處理:
對于熱錢包,備份私鑰存儲辦公室附近的銀行保險柜。
對于冷錢包,一般備份兩份,一份存在辦公室附近的銀行保險柜,一份存在異地某一家銀行的保險柜;同時,異地銀行保險柜必須由兩個不同的人掌握,掌握銀行保險柜的兩個人不得乘坐同一輛交通工具。
參考:
https://cointelegraphcn.com/news/how-do-exchanges-manage-digital-wallets
https://www.jianshu.com/p/3a238354678e
https://www.jianshu.com/p/3a238354678e
本文由 @nobodyjack 原創發布于人人都是產品經理,未經許可,禁止轉載
題圖來自Unsplash,基于CC0協議
該文觀點僅代表作者本人,人人都是產品經理平臺僅提供信息存儲空間服務。
外行問個問題,交易者不是充幣進來委托交易所進行代幣買賣嗎,這大部分的幣都在冷錢包里,交易所怎么同步交易動作呢
對于中心化交易所,用戶看到的幣只是它數據庫一個記錄展示,交易也只是數據庫記錄變化而已。用戶充值的幣都是由交易所代為保管的,所以我們會看到一些交易所跑路提不了幣,幣都被交易所卷走了??
這個和銀行一樣的,你不提現,只是賬本數據變化,提現才能換成真實的幣