一文解析區(qū)塊鏈可運維性的六大誤解
可運維性的訴求是一個很重要的訴求,它在幣圈的缺位不是因為幣圈不需要它,而是因為幣圈有難言之隱。
什么是IT系統(tǒng)的“可運維性”?通俗地講,IT系統(tǒng)的可運維性就是一個IT系統(tǒng)自身所提供的確保該系統(tǒng)的正常運行狀態(tài)、排除該系統(tǒng)的異常運行狀態(tài)、應(yīng)對突發(fā)的運行需求的能力。當(dāng)然,這種能力,需要最終與從事運維工作的人相結(jié)合才能真正發(fā)揮其預(yù)期效果,但是如果系統(tǒng)提供的“可運維性”能力很差,就會導(dǎo)致從事運維工作的人有勁使不上或者只能用非常低級原始的辦法來達成運維目標(biāo)的情況。從這個意義上講,IT系統(tǒng)的可運維性是它得以付諸安全平穩(wěn)高效運行的前提。
筆者在傳統(tǒng)金融行業(yè)從事過多年IT運維管理,深知可運維性對于金融機構(gòu)的重要性。讓我們來看一看可運維性在金融行業(yè)是如何體現(xiàn)的。
在金融行業(yè),確保系統(tǒng)的正常運行狀態(tài)的主·要途徑是架構(gòu)手段,即通過高可用架構(gòu)實現(xiàn)盡量短的故障恢復(fù)時間目標(biāo)(RTO)和可容忍故障恢復(fù)點目標(biāo)(RPO)。很多關(guān)鍵業(yè)務(wù)系統(tǒng)的RTO為秒級,RPO為0,這意味著不容許任何數(shù)據(jù)丟失和業(yè)務(wù)狀態(tài)錯亂,業(yè)務(wù)的短暫中斷不會造成普通用戶感官上的明顯停頓。為此在高可用架構(gòu)中要有大量的冗余設(shè)計和接管(failover)措施,從機房、電力、網(wǎng)絡(luò)、主機、存儲、數(shù)據(jù)庫、中間件、域名解析到應(yīng)用,都需要在架構(gòu)設(shè)計上一體化考慮,都不允許出現(xiàn)單一故障點(Single Point of Failure) 。
在金融行業(yè),排除系統(tǒng)的異常運行狀態(tài)是監(jiān)控手段和應(yīng)急操作特權(quán)入口,提供詳盡、可理解、可視化的直觀監(jiān)控信息,可幫助運維人員實時了解系統(tǒng)和網(wǎng)絡(luò)的真實健康狀況,以便及早發(fā)現(xiàn)并應(yīng)對異常;提供應(yīng)急操作特權(quán)入口,可以為例如改錯、選擇性關(guān)停、限流等應(yīng)急手工操作提供一個安全方便的操作環(huán)境。
在金融行業(yè),應(yīng)對突發(fā)的運行需求的主要途徑,在架構(gòu)層面是參數(shù)化設(shè)計,在操作層面是保留最終干預(yù)權(quán)。靈活的參數(shù)化設(shè)計可在短時間內(nèi)通過參數(shù)調(diào)整來應(yīng)對突發(fā)的業(yè)務(wù)改變。
比如2015年,證券市場的“熔斷”機制推出后數(shù)天即被要求叫停,借助于參數(shù)化設(shè)置的這種靈活性,技術(shù)系統(tǒng)僅僅需要把熔斷觸發(fā)條件設(shè)置成邏輯上不可能的參數(shù)值就可以很快滿足這一突發(fā)的運行需求。最終干預(yù)權(quán)則是對關(guān)鍵業(yè)務(wù)系統(tǒng)的核心模塊提供人工干預(yù)的應(yīng)急接口,來進行滿足突發(fā)的運行需求的操作。注意,突發(fā)運行需求的起因并不是系統(tǒng)發(fā)生了異常,而是系統(tǒng)運行的宏觀外部條件(如政策)發(fā)生了異常,迫使系統(tǒng)必須以非常規(guī)的手段進行應(yīng)對。
區(qū)塊鏈?zhǔn)且环N基于密碼學(xué)和分布式共識機制為一個特定用戶群提供信任服務(wù)的基礎(chǔ)設(shè)施。近年來,區(qū)塊鏈技術(shù)得到了迅猛發(fā)展,不僅在民間有基于“虛擬貨幣+社區(qū)+區(qū)塊鏈平臺”的“幣圈”打法,在傳統(tǒng)金融機構(gòu)和其他行業(yè)也出現(xiàn)了僅利用區(qū)塊鏈平臺服務(wù)于業(yè)務(wù)目標(biāo)的“鏈圈”打法。隨之,區(qū)塊鏈語境下如何體現(xiàn)可運維性也開始浮出水面。
不要以為區(qū)塊鏈技術(shù)從其架構(gòu)本性上來講就是高可用的,因此就可以忽視可運維性的問題。實際上,區(qū)塊鏈技術(shù)發(fā)展的現(xiàn)狀為區(qū)塊鏈的可運維性提供的技術(shù)資源還太少太少。
從區(qū)塊鏈領(lǐng)域遇到的大大小小涉及可運維性的問題當(dāng)中,筆者深深地體會到,區(qū)塊鏈的可運維性既需要大力度借鑒傳統(tǒng)金融機構(gòu)管理可運維性的一系列理念和做法,也需要基于區(qū)塊鏈語境本身的特殊性發(fā)展一系列原創(chuàng)性的運維管理做法,尤其是要糾正區(qū)塊鏈領(lǐng)域的一些錯誤的認(rèn)識和做法。
2016年The DAO事件余波未平,2017年以太坊又爆出了Parity多重簽名合約誤鎖漏洞。區(qū)塊鏈的可運維性又一次引起熱議。去年比特幣社區(qū)還在嘲笑以太坊社區(qū)一言不合就分叉,今年分叉的事情就輪到了比特幣社區(qū)自己的頭上。每次看到社區(qū)出現(xiàn)這樣的情況,總會有傳統(tǒng)金融機構(gòu)的朋友出來說:看看,幸虧鏈圈沒有這么玩,否則指不定死多少回了!
其實,可運維性不僅是鏈圈、也同樣是幣圈所追求的區(qū)塊鏈特性。在解決了不可撤銷、不可仿冒、不可篡改、不可抵賴、不可雙花、不可透支這些價值傳輸最基本的問題之后,人們的目光停留在了隱私保護和可運維性上面。說起隱私保護特性,幣圈有ZCash這樣的虛擬貨幣推出。
說起可運維性呢?也許是去中心化的觀念先行,排除了大量在鏈圈看來很平常的運維手段的使用,從應(yīng)急處置和審計追責(zé)的角度,我們還沒有看到幣圈有有份量的可運維性技術(shù)解決手段的推出。但是,從預(yù)防為主的角度,至少智能合約的形式化驗證問題和在線升級的問題,已經(jīng)在幣圈引起了足夠的重視,這一跡象是正面的。
鏈圈呢?在這里我們必須提到鏈圈的兩個值得一提的努力。
第一個努力是埃森哲公司提出的“可編輯的區(qū)塊鏈”概念
在埃森哲的材料中,他們開宗明義,把可編輯區(qū)塊鏈的推出和傳統(tǒng)金融機構(gòu)的可運維性需求掛起鉤來,從不當(dāng)?shù)美?、錯賬沖正到烏龍指,各種必須修改的錯,都不能將錯就錯,需要得到授權(quán)的操作人員把錯賬改過來。如果區(qū)塊鏈承擔(dān)了記賬的任務(wù),那么改錯賬就應(yīng)該是區(qū)塊鏈必備的功能。
以比特幣、以太坊為典型代表的幣圈平臺做不了這件事情,除非分叉。埃森哲提出的解決手段則是使用基于“變色龍哈?!钡摹翱删庉嫷膮^(qū)塊鏈”。
從數(shù)學(xué)原理上看,可編輯的區(qū)塊鏈確實可以不分叉就能改錯,但是代價是開了一個既能篡改歷史又不可審計的后門。這樣一個東西的存在,不僅秉持堅定去中心化理念的幣圈不可接受,就算是在一定程度上容忍中心化要素存在的鏈圈,接受的人也不是很多。
第二個努力是R3聯(lián)盟去年底推出的Corda平臺
在Corda上,智能合約代碼和對應(yīng)該合約的正式有效的法律文本是互相勾稽的。合約法律文本的存證形態(tài)是合約代碼的不可缺少的附件,并以數(shù)字簽名存證。通過對附件的驗證,給予合約代碼所代表的“本意”一個抓得住的抓手。
一旦合約在運行中出現(xiàn)問題,至少可以通過查驗來確定這到底是法律合約原本就有的,還是合約的代碼實現(xiàn)沒有忠實地體現(xiàn)法律合約的“本意”造成的。
某種程度上,這也算是對此前一段時間以來合約代碼單兵突進、法律法規(guī)沒有同步跟進結(jié)果形成畸形生態(tài)的一個彌補。此外,Corda上并不存在一個“我的銀子我做主”的基礎(chǔ)賬本,任何單據(jù)(狀態(tài))都可以在合適的條件下經(jīng)公證被廢止。這也為改錯賬留下了可以運作的空間。可以說R3這些業(yè)務(wù)大咖們對于分布式賬本的可運維性的意義還是心中有數(shù)的。
由此可見,可運維性的訴求是一個很重要的訴求,它在幣圈的缺位不是因為幣圈不需要它,而是因為幣圈有難言之隱,在目前技術(shù)條件下無法把這個訴求落到實處,而只能訴諸分叉這樣無奈而又笨拙的手段。鏈圈對于可運維性的訴求來源于傳統(tǒng)金融機構(gòu)使用者對于合規(guī)性的發(fā)自本能的自覺遵守,但并沒有形成一個完整的技術(shù)體系和技術(shù)方法論。
首先,“我的資產(chǎn)我做主”絕不是一個與現(xiàn)行法律體系完全兼容的做法。如果在技術(shù)上把“我的資產(chǎn)我做主”做實,“做主”在技術(shù)上體現(xiàn)為“掌握私鑰”,那么在一些場合下,執(zhí)法措施就落不到實處,就必須事實上遷就區(qū)塊鏈的技術(shù)設(shè)定。
在需要進行應(yīng)急處置的場景,尤其是需要對涉及資產(chǎn)余額的錯賬、烏龍指、非法所得、不當(dāng)?shù)美冗M行沖正、追究、查封、充公等操作的時候,這樣的做法在法律上有明顯的缺陷。
所以,從區(qū)塊鏈底層把執(zhí)法措施支持到位,是區(qū)塊鏈應(yīng)用單位滿足合規(guī)要求的起碼要求。如果說在之前以借鑒為主的階段大家還顧不上法律合規(guī)性的話,那么當(dāng)區(qū)塊鏈進入以技術(shù)上自主創(chuàng)新、自主掌控為主,應(yīng)用上以合規(guī)發(fā)展、為我所用為主的階段時,這樣的要求再不得到滿足就說不過去了。
其次,可運維性的要求應(yīng)該非常清晰地傳導(dǎo)到開發(fā)方。一是在開發(fā)方中逐漸形成基于最佳實踐的模板,把有共性的可運維性的功能(比如應(yīng)急處置特權(quán)下的沖正機制、凍結(jié)機制、剎車機制以及在線升級機制等)作為模板的標(biāo)配代碼嵌入其中。二是在開發(fā)方中逐漸形成基于業(yè)內(nèi)風(fēng)控理念和通過歷史教訓(xùn)積累下來的業(yè)務(wù)流程參考約束標(biāo)準(zhǔn),把重要的業(yè)務(wù)步驟之間共性的合理順序固化下來。秉持同樣運維理念的開發(fā)方應(yīng)該聯(lián)合起來,形成共享可運維性模板的聯(lián)盟。通過這樣的做法,讓區(qū)塊鏈應(yīng)用少走彎路。ChinaLedger白皮書2016版中系統(tǒng)闡述了如何在智能合約層面支持應(yīng)急處置的問題,有興趣的讀者可以參閱。
第三,區(qū)塊鏈絕不可以看成是一個“數(shù)據(jù)庫”,更遑論“分布式數(shù)據(jù)庫”
拿區(qū)塊鏈當(dāng)數(shù)據(jù)庫用,就會發(fā)現(xiàn)區(qū)塊鏈只有創(chuàng)建和讀取功能,沒有修改和刪除功能,就會得出“區(qū)塊鏈不如數(shù)據(jù)庫”的錯誤結(jié)論。其實,并不是區(qū)塊鏈不如數(shù)據(jù)庫,而是壓根兒不應(yīng)該把區(qū)塊鏈這樣來用。區(qū)塊鏈上記錄的不應(yīng)該是業(yè)務(wù)數(shù)據(jù),而只能是操縱業(yè)務(wù)數(shù)據(jù)的指令序列(或其日志)。區(qū)塊鏈不是要取代數(shù)據(jù)庫,而是要作為數(shù)據(jù)庫的高可靠性的前置。
我們要求日志不可遺漏、不可篡改,但并不是說數(shù)據(jù)本身不可改動。把一系列操作依序記錄在區(qū)塊鏈上,然后到真正的數(shù)據(jù)庫中依序執(zhí)行這些可留痕、可審計、可追責(zé)的正常操作和應(yīng)急操作,操作的最終結(jié)果寫在真正的數(shù)據(jù)庫而不是區(qū)塊鏈中。一旦數(shù)據(jù)庫發(fā)生問題需要回滾,只需從區(qū)塊鏈的特定高度進行重演,數(shù)據(jù)庫本身的高可用架構(gòu)也可因此大大簡化。應(yīng)急處置中如果需要對數(shù)據(jù)進行沖正,只需通過區(qū)塊鏈增加一條沖正的數(shù)據(jù)操縱指令,這個應(yīng)急處置行為本身既是需要特權(quán)許可的,也是留痕的、可審計的。
第四,通過分叉來修正區(qū)塊鏈數(shù)據(jù),即使在幣圈,也絕對不是值得提倡的事情
分叉本身意味著賬本的分裂,但在多條區(qū)塊鏈通過跨鏈機制互聯(lián)的場景下,會導(dǎo)致與之跨鏈互聯(lián)的賬本也跟著分裂。也就是說,當(dāng)分叉遇到跨鏈,分叉會把本來在一條區(qū)塊鏈內(nèi)的運維問題傳導(dǎo)到另外的區(qū)塊鏈中去,變成一個全網(wǎng)的運維問題,從而大大增加全網(wǎng)的運維難度。所以,從可運維性的基本理念出發(fā),不應(yīng)該聽任動輒分叉,而應(yīng)該利用互聯(lián)互通來反制那些輕率的分叉舉動。
第五,有缺陷的區(qū)塊鏈應(yīng)用特別是智能合約應(yīng)用上線,是一件十分危險的事情
它不僅可能影響自身的用戶群和業(yè)務(wù)生態(tài),還可能影響其他的用戶群和業(yè)務(wù)生態(tài)。由此看來,當(dāng)區(qū)塊鏈技術(shù)和應(yīng)用發(fā)展到一定階段,對承載重要業(yè)務(wù)、運作重要資產(chǎn)的區(qū)塊鏈實行某種形式的應(yīng)用準(zhǔn)入制,要求應(yīng)用自帶某種形式化驗證的過程與結(jié)果,要求應(yīng)用具備某種標(biāo)配的應(yīng)急處置功能,是十分必要的。
第六,區(qū)塊鏈可運維性應(yīng)該成為區(qū)塊鏈正規(guī)教育和區(qū)塊鏈技術(shù)培訓(xùn)的必選內(nèi)容
只有讓可運維性的理念和最佳實踐深入人心,只有把不注重可運維性導(dǎo)致的后果充分揭示出來,才能使區(qū)塊鏈技術(shù)人才建立關(guān)于區(qū)塊鏈技術(shù)的正確的知識結(jié)構(gòu)。這些人到了應(yīng)用開發(fā)第一線,才會更加自覺地為區(qū)塊鏈應(yīng)用扎牢可運維性的籬笆。
總的說來,筆者認(rèn)為,可運維性是區(qū)塊鏈應(yīng)用中不應(yīng)被忽視的重要訴求,必須從法律層面、行業(yè)最佳實踐及標(biāo)準(zhǔn)化層面、用法層面加以引導(dǎo)和約束,使可運維性的訴求貫穿區(qū)塊鏈應(yīng)用的始終。
作者:李秀琴
來源:https://www.leiphone.com/news/201802/aWVjxst0NJ2wfyDI.html
本文來源于人人都是產(chǎn)品經(jīng)理合作媒體@雷鋒網(wǎng),作者@李秀琴
題圖來自Pixabay,基于CC0協(xié)議
- 目前還沒評論,等你發(fā)揮!