如何設(shè)計(jì)一個(gè)安全的加密貨幣錢(qián)包
作為一名加密貨幣愛(ài)好者和區(qū)塊鏈行業(yè)建設(shè)者的一員,我將盡我最大的努力來(lái)更好地構(gòu)建加密貨幣生態(tài)系統(tǒng)。在這篇文章中,我將分享我的經(jīng)驗(yàn),如何為數(shù)字資產(chǎn)交易設(shè)計(jì)一個(gè)安全的加密貨幣錢(qián)包。希望對(duì)建立基于區(qū)塊鏈和加密貨幣經(jīng)濟(jì)的業(yè)務(wù)基礎(chǔ)有所幫助。
數(shù)字資產(chǎn)管理是至關(guān)重要的,尤其是對(duì)于那些建立在區(qū)塊鏈基礎(chǔ)上的機(jī)構(gòu)。一個(gè)典型的使用案例是加密貨幣交易所或場(chǎng)外交易平臺(tái)(OTC),使成千上萬(wàn)的交易者在不受時(shí)間和空間限制的情況下提取或剝離他們的數(shù)字資產(chǎn),銀行級(jí)別的安全性和高可用架構(gòu)是這類(lèi)創(chuàng)業(yè)公司要獲取的基本要求。
熱錢(qián)包,暖錢(qián)包和冷錢(qián)包
關(guān)于錢(qián)包的常識(shí)不會(huì)在文章中介紹,但是我們應(yīng)該學(xué)習(xí)三種錢(qián)包之間的交易業(yè)務(wù)系統(tǒng)。
· 熱錢(qián)包:僅用于從系統(tǒng)發(fā)送交易,應(yīng)保留足夠但不太多的資金來(lái)服務(wù)取款。它應(yīng)該有嚴(yán)格的政策限制硬幣的數(shù)量,也就是說(shuō),小額取款應(yīng)該盡可能自動(dòng)化,但大額提款應(yīng)該在提款前得到行政部門(mén)的批準(zhǔn)。
· 暖錢(qián)包:用于所有存款到系統(tǒng),請(qǐng)求一個(gè)地址發(fā)送資金到新用戶加入時(shí)??蛻舫渲档脚X(qián)包的資金應(yīng)自動(dòng)或定時(shí)提取到冷錢(qián)包。
· 冷錢(qián)包:用于系統(tǒng)大部分資金的存儲(chǔ),我想至少是7/10,用于暖錢(qián)包的充值。冷錢(qián)包也被稱(chēng)為離線錢(qián)包,因?yàn)樗蛩阍诓贿B接任何網(wǎng)絡(luò)的設(shè)備上運(yùn)行。
因此,在討論加密貨幣錢(qián)包系統(tǒng)體系結(jié)構(gòu)的設(shè)計(jì)思想時(shí),需要考慮安全存儲(chǔ)私鑰、智能風(fēng)險(xiǎn)控制取款系統(tǒng)和存款鏈確認(rèn)三個(gè)關(guān)鍵問(wèn)題。如果我們必須優(yōu)先考慮這些安全因素的發(fā)展,這些密鑰的重要性逐步減少,因?yàn)樽钪匾氖撬借€存儲(chǔ)。
基于實(shí)際用例的體系結(jié)構(gòu)
持有自己的私鑰是采用加密貨幣的主要原因。傳統(tǒng)的金融方式,尤其是跨境匯款,使得貨幣的轉(zhuǎn)移十分繁瑣。在使用數(shù)字資產(chǎn)錢(qián)包時(shí),個(gè)人或機(jī)構(gòu)之間的業(yè)務(wù)邏輯存在許多差異。
如何設(shè)計(jì)數(shù)字資產(chǎn)錢(qián)包取決于您存儲(chǔ)的私鑰的位置。主要有三種模式:在手機(jī)中存儲(chǔ)私鑰、區(qū)塊鏈全節(jié)點(diǎn)或安全的網(wǎng)絡(luò)程序環(huán)境。
1. 分散式移動(dòng)應(yīng)用錢(qián)包持有密鑰并簽署原始交易。當(dāng)手機(jī)app創(chuàng)建錢(qián)包時(shí),pubkic key注冊(cè)到網(wǎng)絡(luò)程序(主要是webservices)。網(wǎng)絡(luò)程序與p2p網(wǎng)絡(luò)交互,從區(qū)塊鏈臺(tái)賬中獲取信息(維護(hù)UTXO,查詢(xún)以太坊賬戶余額, nonce值,交易歷史等),并廣播新的交易。這些鏈能夠錢(qián)包滿足大多數(shù)人使用。
2. 帶錢(qián)包的區(qū)塊鏈節(jié)點(diǎn)提供全方位服務(wù),直接在網(wǎng)絡(luò)環(huán)境中創(chuàng)建和簽署原始交易。與全服務(wù)節(jié)點(diǎn)的系統(tǒng)集成通過(guò)JSON-RPC與區(qū)塊鏈全服務(wù)節(jié)點(diǎn)交互來(lái)管理錢(qián)包。錢(qián)包私鑰與區(qū)塊鏈分類(lèi)賬一起存儲(chǔ),同時(shí)暴露在不太安全的開(kāi)放網(wǎng)絡(luò)環(huán)境中。有許多黑客入侵案件引起的json - rpc連接。我認(rèn)為使用區(qū)塊鏈節(jié)點(diǎn)實(shí)現(xiàn)的原始錢(qián)包是不好的做法。有人建議比特幣內(nèi)核應(yīng)該將節(jié)點(diǎn)和錢(qián)包從功能中分離出來(lái)
3. 為了提高安全性,可以通過(guò)在更安全的環(huán)境中運(yùn)行的一個(gè)單獨(dú)的錢(qián)包程序生成私鑰,我們稱(chēng)之為簽名程序。全服務(wù)的另一部分是網(wǎng)絡(luò)程序,它構(gòu)造原始交易和廣播簽名交易。整個(gè)過(guò)程是,網(wǎng)絡(luò)程序創(chuàng)建未簽名的交易,并以成功的方式將未簽名的交易轉(zhuǎn)移到簽名程序(然后簽名程序?qū)⒑灻蟮慕灰追祷亟o網(wǎng)絡(luò)程序,最后由網(wǎng)絡(luò)程序?qū)⒑灻慕灰讖V播到對(duì)等網(wǎng)絡(luò)。
簽名程序和網(wǎng)絡(luò)程序
錢(qián)包全方位服務(wù)包括四個(gè)部分。
· 首先是錢(qián)包管理,私鑰由wallet-core(簽名程序)程序生成,并由levelDB存儲(chǔ)
· 第二是外部端點(diǎn),取款流程和錢(qián)包生成,wallet-gateway(網(wǎng)絡(luò)程序)構(gòu)建原始交易,為業(yè)務(wù)系統(tǒng)提供外部端點(diǎn),使用wallet-core和wallet-gateway組件之間的gRPC協(xié)議傳輸數(shù)據(jù)。
· 第三個(gè)是ledger-monitor程序,它訂閱最佳塊事件并推送到MQ(RabbitMQ)。
· 最后一個(gè)是ledger-consumer,它與兩個(gè)MQ消費(fèi)者相結(jié)合,一個(gè)是為我們的系統(tǒng)錢(qián)包維護(hù)UTXO區(qū)塊鏈,另一個(gè)是處理消費(fèi)者(用戶通知)的存款。