1
雷鋒網(wǎng)按:聯(lián)盟鏈的出現(xiàn),吸引了眾多傳統(tǒng)行業(yè)企業(yè)與互聯(lián)網(wǎng)公司加入?yún)^(qū)塊鏈熱潮。其中,金融行業(yè)擁抱區(qū)塊鏈的熱情顯而易見,打出“ABCD”金融科技戰(zhàn)略的微眾銀行正是弄潮者之一。
出于推動分布式商業(yè)生態(tài)形成的目的,2017年7月,微眾銀行、萬向、矩陣元三方宣布開源區(qū)塊鏈底層平臺BCOS(BlockChain OpenSource)。而聚焦到金融領(lǐng)域,在安全、合規(guī)、平臺互操作性等需求推動下,金融區(qū)塊鏈合作聯(lián)盟(深圳)聯(lián)合8家成員機(jī)構(gòu)推出了面向金融行業(yè)的開源平臺FISCO BCOS(GITHUB地址:https://github.com/fisco-bcos)。
與早期版本相比,F(xiàn)ISCO BCOS在滿足金融級高頻交易、安全性及合規(guī)多項(xiàng)需求方面有什么改進(jìn),又是如何實(shí)現(xiàn)的?區(qū)塊鏈實(shí)踐項(xiàng)目是怎樣開發(fā)、部署、治理的?區(qū)塊鏈技術(shù)如何與已有IT設(shè)施和業(yè)務(wù)邏輯融合?時至今日,又有哪些新的經(jīng)驗(yàn)之談?雷鋒網(wǎng)此番邀請到微眾銀行區(qū)塊鏈?zhǔn)紫軜?gòu)師張開翔,細(xì)述聯(lián)盟鏈在承載商業(yè)級應(yīng)用方面的需求和挑戰(zhàn),本文將為您回顧此次熱門課程的部分精彩內(nèi)容。
課程回顧鏈接:http://www.mooc.ai/open/course/445
▍聯(lián)盟鏈五大挑戰(zhàn):安全、性能、可用性、業(yè)務(wù)落地和監(jiān)管
安全性
聯(lián)盟鏈需要一個立體分層的保護(hù),劃分為應(yīng)用、存儲、網(wǎng)絡(luò)和主機(jī)四個技術(shù)點(diǎn)。
進(jìn)行節(jié)點(diǎn)準(zhǔn)入控制:進(jìn)入聯(lián)盟需要審核且身份可驗(yàn)證,目前CA技術(shù)已經(jīng)相對成熟,金融機(jī)構(gòu)多半采用CFCA。新加入的節(jié)點(diǎn)可以驗(yàn)證IP地址、證書等,通過后才能發(fā)起連接加入聯(lián)盟鏈,進(jìn)行共識或者流通數(shù)據(jù)。
可靠的密鑰管理:密鑰是賬戶打開的最重要憑證,私鑰丟失則對所有財(cái)產(chǎn)和行為都不可控。我們對密鑰不但做了分離,還做了個“保險柜”,它可以通過軟件或加密記賬實(shí)現(xiàn),防止密鑰泄露。
靈活的權(quán)限控制:在聯(lián)盟鏈上我們劃分了開發(fā)、運(yùn)營、運(yùn)維、交易員和監(jiān)管五種角色,如DO分離(即開發(fā)和運(yùn)維分離)是基本運(yùn)作策略,開發(fā)只負(fù)責(zé)提交代碼,鏈上僅有交易員處理賬目或進(jìn)行資產(chǎn)轉(zhuǎn)換,監(jiān)管可以叫停業(yè)務(wù)、凍結(jié)賬號或暫停智能合約、調(diào)用接口來及時干預(yù),具有最高等級的權(quán)限。引入權(quán)限控制的做法和傳統(tǒng)交易系統(tǒng)相似,安全性有所保證。
性能
眾所周知,區(qū)塊鏈為了追求高一致性和高安全性,容易交易速度過慢,分布式網(wǎng)絡(luò)需要很多節(jié)點(diǎn)去參與。性能優(yōu)化就涉及到共識機(jī)制的問題,這其實(shí)是影響區(qū)塊鏈表現(xiàn)的核心因素。
POW就是用算力和電力挖礦,相對安全,規(guī)模較大,沒有50%以上算力無法顛覆網(wǎng)絡(luò),但難保證效率;
POS和DPOS都是在挖礦的基礎(chǔ)上用資產(chǎn)數(shù)量來加速共識過程,一定程度上通過犧牲安全性來保證效率和規(guī)模,現(xiàn)在有新框架如EOS也正是在往POS這條路上走,以太坊和Casper共識也是POS路線,但可能會出現(xiàn)權(quán)益高度集中如卡特效應(yīng)或者無權(quán)益者的潮水攻擊;
Leader的效率和規(guī)模有保障,但安全性完全取決于Leader的作為;
BFT是高安全高效率但規(guī)模難保證。共識機(jī)制中安全、規(guī)模和效率三者不可得兼,必須有所取舍。
我們選擇了PBFT共識機(jī)制,它能夠達(dá)到秒級確認(rèn)、高一致性和較高安全性,并發(fā)性能很高且不需要挖礦算力的損耗。這種模型下強(qiáng)調(diào)狀態(tài)管理和轉(zhuǎn)換以及簽名的搜集,網(wǎng)絡(luò)的抖動會特別大,所以規(guī)模不會很大。聯(lián)盟鏈參與機(jī)構(gòu)一般在幾十個到上百個之內(nèi),我們優(yōu)先強(qiáng)調(diào)一致性,以規(guī)模換安全?,F(xiàn)在也有用PBFT和POS、POW或隨機(jī)數(shù)來結(jié)合,保證效率同時提升規(guī)模。
我們另外還做一部分優(yōu)化,三步的投票確認(rèn)改為議長和跟隨者同步確認(rèn),理論上效率較此前提升一倍,考慮到網(wǎng)絡(luò)衰減,最終效率提升在60%到80%之間。此外記賬節(jié)點(diǎn)之間可以互相檢測心跳,讓網(wǎng)絡(luò)波動時鏈的表現(xiàn)更穩(wěn)健。
當(dāng)一臺機(jī)器已經(jīng)把自己的計(jì)算、帶寬、存儲等用到極致,到達(dá)能力上限,互聯(lián)網(wǎng)公司的常見思路之一是做平行擴(kuò)容或分片等等。區(qū)塊鏈也可以做類似的處理,比如多鏈并行架構(gòu)。假設(shè)有五百萬用戶,我們也可以把每一百萬用戶分到一條鏈上,按ID進(jìn)行一致性Hash或者其他路由策略,在不同鏈進(jìn)行計(jì)算和存儲。這一架構(gòu)目前已實(shí)現(xiàn)并開源。熱點(diǎn)賬戶也是金融業(yè)中常見的有性能挑戰(zhàn)的場景,整合多鏈架構(gòu)和跨鏈歸集技術(shù),增加多個影子戶分散熱點(diǎn)賬戶收付款壓力,實(shí)時交易和延時清算分離,實(shí)現(xiàn)容量優(yōu)化和賬戶安全。
想知道講師如何用默克爾樹和輕客戶端思想來攻克跨鏈交互問題嗎?點(diǎn)擊鏈接在線觀看更詳細(xì)內(nèi)容。
總的來說,目前聯(lián)盟鏈的解決方案可以滿足常見或有一定爆發(fā)性的金融場景需求,同時保證賬戶安全和系統(tǒng)穩(wěn)定。
可用性
現(xiàn)在我們能夠做到一年之內(nèi)停機(jī)時間極短,不會超過數(shù)小時。從運(yùn)維角度來說,一鍵部署、簡化建鏈過程很有必要,這才能形成多鏈效果。另外,金融機(jī)構(gòu)通常想要部署在機(jī)房而非云上,這樣更符合監(jiān)管合規(guī)的需求,同時他們的機(jī)構(gòu)內(nèi)出于安全需要而存在不少隔離設(shè)備,隔離區(qū)、服務(wù)區(qū)、對外合作區(qū)等區(qū)域的劃分,因此部署方式要適應(yīng)多種復(fù)雜環(huán)境。
業(yè)務(wù)落地
開發(fā)者最關(guān)心自己怎么寫合約——我們選擇了以太坊Solidity,并且根據(jù)GPL協(xié)議做了開源回饋到社區(qū)。以太坊的EVM虛擬機(jī)圖靈完備,具有豐富數(shù)據(jù)結(jié)構(gòu);目前發(fā)展已相對社區(qū)化,擁有廣泛的開發(fā)者和大量參考實(shí)現(xiàn)。EVM其實(shí)是個沙箱,可以跟共識機(jī)制良好結(jié)合。基于合約我們設(shè)置了一個和DNS類似的命名服務(wù),可以用一個簡短的名稱指向合約。因?yàn)楹霞s部署之后會是一串二進(jìn)制或十六進(jìn)制的地址,記憶困難,命名服務(wù)可將其友好化成一個名詞,還可以進(jìn)行版本管理。比如2.0發(fā)布時可以將部分流量引流到新版本,待2.0版本驗(yàn)證通過,再灰度升級把1.0流量切到2.0。
值得一提的是,AMOP(消息通信協(xié)議,Advanced Messaging Onchain Protocol)是個可以使鏈下系統(tǒng)與區(qū)塊鏈進(jìn)行通信的協(xié)議,還可以把兩個鏈下系統(tǒng)打通,機(jī)構(gòu)間點(diǎn)對點(diǎn)通信達(dá)成協(xié)商后再將交易發(fā)到鏈上。
▍應(yīng)用案例之一:基于聯(lián)盟鏈的機(jī)構(gòu)間對賬平臺
這是國內(nèi)首個在金融生產(chǎn)環(huán)境中運(yùn)行的區(qū)塊鏈應(yīng)用,目前已接入3家合作行,運(yùn)行交易記錄筆數(shù)已達(dá)上千萬,并且上線一年多以來保持零故障運(yùn)行。微眾銀行和合作行之間存在繁瑣的賬務(wù)來往,機(jī)構(gòu)間通常是T+1或T+2后根據(jù)賬目明細(xì)信息達(dá)成對賬。我們在其中建立區(qū)塊鏈體系,賬目明細(xì)在交易過程中產(chǎn)生,交易流水不遺漏不混亂地實(shí)時旁路上鏈,實(shí)現(xiàn)鏈上對賬和總賬、分類賬的展示。賬目功能的智能合約按時間維度創(chuàng)建,進(jìn)行數(shù)據(jù)分拆,便于維護(hù)升級。
脫敏:銀行存在很多敏感數(shù)據(jù),需要一個個字段去判斷哪些數(shù)據(jù)可以上鏈分享。
隔離:銀行間數(shù)據(jù)做物理隔離,如有需要可進(jìn)行跨鏈通信。我們有時會被問到,一旦以后出現(xiàn)量子通信等手段,被這些加密算法保護(hù)的數(shù)據(jù)很難得到保障?這個問題目前確實(shí)無法回答,最徹底的方式就是進(jìn)行物理隔離。
通信:經(jīng)過非對稱加密、https傳輸來保護(hù)銀行系統(tǒng)和區(qū)塊鏈之間的通信。
存儲:區(qū)塊鏈節(jié)點(diǎn)的數(shù)據(jù)加密后落盤存儲,保證數(shù)據(jù)存儲安全。
密鑰:各種私鑰、密鑰和節(jié)點(diǎn)分離保管,私鑰存儲服務(wù)和外網(wǎng)隔離。
而區(qū)塊鏈本身就是個互相備份、多活的分布式系統(tǒng),更利于健壯性設(shè)計(jì)。打個比方,4個節(jié)點(diǎn),三分之一容錯,那就是掛了一個節(jié)點(diǎn),但其他節(jié)點(diǎn)依舊可以通過P2P多路通信來調(diào)接、轉(zhuǎn)發(fā)、廣播,讓整個網(wǎng)絡(luò)在極短的時間內(nèi)達(dá)成一致。另外銀行自有的立體監(jiān)控體系也會加入,包括服務(wù)器監(jiān)控、區(qū)塊鏈運(yùn)行時的特性監(jiān)控、賬目監(jiān)控等,保證系統(tǒng)健壯運(yùn)行。
▍答疑解惑部分選段
1. 聯(lián)盟鏈對于迎合監(jiān)管需求還有哪些優(yōu)勢?
張開翔:運(yùn)行效率、容量等方面還是比公有鏈更高,隱私保護(hù)、數(shù)據(jù)安全的要求也更高。聯(lián)盟內(nèi)部是根據(jù)他們的一些訴求來搭建,比如資源整合,智能協(xié)作等等,對于機(jī)構(gòu)間尋求合作和創(chuàng)新的場景也更具優(yōu)勢。
2. 小企業(yè)不對等時,以較小的權(quán)重加入不能被接受嗎?
張開翔:這取決于業(yè)務(wù)場景,權(quán)限方面有所限制,至于在聯(lián)盟中所貢獻(xiàn)能力、收入分配等問題其實(shí)與技術(shù)關(guān)系不大。
3. 大集團(tuán)用聯(lián)盟鏈,公鏈幾乎都是創(chuàng)業(yè)公司吧,說是去中心化,想要顛覆現(xiàn)有中心化商業(yè)體系,這是否說明,大家還是從各自利益出發(fā)?聯(lián)盟鏈仍然是在不跳出現(xiàn)有商業(yè)模式情況下的形態(tài)。
張開翔:比起去中心,我們著眼于多中心,強(qiáng)調(diào)在分布式商業(yè)模型中,大家一起高效協(xié)作,可控創(chuàng)新,去對現(xiàn)有模型進(jìn)行優(yōu)化。也不排除在現(xiàn)有模式之外去,合法合規(guī)的前提下進(jìn)行創(chuàng)新。區(qū)塊鏈的信息共享和高效運(yùn)作確實(shí)為創(chuàng)新奠定了良好基礎(chǔ)。
4. 對賬場景,是否圍繞對賬需求直接開發(fā)分布式系統(tǒng)更高效?甚至不需要鏈?zhǔn)綌?shù)據(jù)結(jié)構(gòu)等。
張開翔:分布式數(shù)據(jù)庫來做這個其實(shí)是可以的,但是對賬場景還強(qiáng)調(diào)賬的一致性跟可驗(yàn)證。有沒有一種方法在高一致性之外,還能快速地驗(yàn)證數(shù)據(jù),最好是能進(jìn)行實(shí)時的計(jì)算呢?最后發(fā)現(xiàn)區(qū)塊鏈還是最適合的,因?yàn)閰^(qū)塊里包含了一批數(shù)據(jù),有hash這些快速驗(yàn)證的效果。
5. 對于自建CA這塊,如果有新機(jī)構(gòu)想要參與進(jìn)一個已經(jīng)運(yùn)營起來的聯(lián)盟鏈網(wǎng)絡(luò),那就要首先信任這個網(wǎng)絡(luò)創(chuàng)建之初創(chuàng)建出來的那個CA,那這個CA是不是要足夠開源才可以?
張開翔:CA會有許多維度,開源是其中之一,不過你相信這個聯(lián)盟而它提供CA,這個信任已經(jīng)足夠背書了。
6. 完整的BFT算法復(fù)雜度應(yīng)該是達(dá)到了N的N次方,PBFT應(yīng)該是a*N^2. 它的缺點(diǎn)規(guī)模大的時候可以說是效率低,要效率高的時候就是規(guī)模小,兩者不可兼得。容錯率小于33%,是這樣嗎?
張開翔:這個看法很好,拜占庭容錯確實(shí)無法撐起上千個節(jié)點(diǎn)的規(guī)模,有些變通方法比如分片、分set,用隨機(jī)的方式選擇一些可信的記賬者。不過我個人預(yù)計(jì)兩年之內(nèi),基于聯(lián)盟鏈的商業(yè)場景不會特別大,我非常期待有上百家機(jī)構(gòu)聯(lián)手,創(chuàng)造出里程碑式的記錄。目前拜占庭容錯在聯(lián)盟鏈中仍頗具生命力,我們同時也在研究更具活力的算法。
7. 相對業(yè)務(wù)的數(shù)據(jù)量級,空塊帶來的存儲空間和同步工作量,是否可以忽略不計(jì)了?
張開翔:基本上是的,這只是一個優(yōu)化,在極端的情況下提供一種可選的能力。比如你的業(yè)務(wù)只在白天有流量有交易,一天8萬秒,每秒存一塊,一天就有4萬個空塊需要你去同步,去空塊的特性還是用得上的。
8.存證場景使用區(qū)塊鏈存儲摘要值的必要性?使用分布式存儲系統(tǒng)對摘要值做保全不可以么?業(yè)務(wù)對摘要的簽名是可驗(yàn)證的。
張開翔:為什么現(xiàn)在我們的存證需要多個機(jī)構(gòu)加入簽名呢?這要說到業(yè)務(wù)共識。一個證據(jù)的產(chǎn)生,它的確定性、完整性確實(shí)可以通過摘要證明,但是這是否在現(xiàn)實(shí)法律里有效呢?我們引入機(jī)構(gòu)背書,也就是說機(jī)構(gòu)在證據(jù)產(chǎn)生和存儲的過程中是共同見證的,其效力比證據(jù)自描述要強(qiáng)很多。
想知道金鏈盟如何構(gòu)建金融級監(jiān)控與高校運(yùn)維管理體系?怎樣在聯(lián)盟鏈中實(shí)現(xiàn)監(jiān)管審計(jì)支持?還有區(qū)塊鏈存證系統(tǒng)等應(yīng)用案例詳解以及更多專家解答,立即點(diǎn)擊鏈接回顧課程完整版:http://www.mooc.ai/open/course/445
—————————————————————————————————
【金融科技大講堂】是由雷鋒網(wǎng)AI金融評論和AI慕課學(xué)院聯(lián)合出品的線上公開課,我們將有來自民生保險、微眾銀行、百度金融等機(jī)構(gòu)的技術(shù)和產(chǎn)品、業(yè)務(wù)大咖來與大家分享,區(qū)塊鏈技術(shù)在傳統(tǒng)金融業(yè)務(wù)中的實(shí)際應(yīng)用經(jīng)驗(yàn)!
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。