中山大學軟件工程學院副院長鄭子彬:區塊鏈節點及共識可靠性可維護區塊鏈穩定運行

12月26日,2021CCF中國區塊鏈技術大會在海南海口舉辦,本次會議由中國計算機學會(CCF)主辦,中國計算機學會區塊鏈專業委員會、海南大學承辦,中科國鼎數據科學研究院協辦。大會戰略合作媒體巴比特現場報道。

中山大學軟件工程學院副院長、區塊鏈與智能金融研究中心主任、國家數字家庭工程技術研究中心副主任、IET Fellow鄭子彬發表題為《區塊鏈可靠性研究》的主題演講。他提出,區塊鏈節點及共識的可靠性可維護區塊鏈的穩定運行,智能合約的可靠性可以保障這個鏈上服務的正確進行,以及交易網絡的可靠性可促進交易雙方的互信。

以下為巴比特整理的演講全文:

我彙報的題目是“區塊鏈可靠性關鍵技術與挑戰”。我們知道軟件可靠性的定義是說軟件產品在規定的條件下,在規定的時間區間內完成規定功能的能力。軟件可靠性是一個比較傳統的領域,它已經存在很多年。

隨着這些年的發展,1983年電氣與電子工程師協會(IEEE)給出了軟件可靠性的定義。這個定義到今天為止仍然被廣泛接受和應用。軟件學這些年的發展,經歷了幾個階段。

從最開始的單機軟件,進行互聯互通之後就變成了一個分佈式的系統,發展到現在,區塊鏈是一個特殊的分佈式軟件,主要跟傳統分佈式系統差別在於,其強調價值的傳遞。

從節點的角度來說,我們發現區塊鏈的節點數量很多,比如說比特幣有13000多個節點,它的網絡動態性很強。從數據的角度來說,其數據的冗餘程度很大。比特幣有一萬三千多個節點,在不同方面,相對的數據節點易構性也是不同的,從實用的角度來說,這個區塊鏈價值網絡複雜性比較大。

我們來對比一下從軟件可靠性跟區塊鏈可靠性的區別,首先在故障類型上面,區塊鏈類型更加多樣;在執行環境方面,區塊鏈相對更加複雜;從提供服務方面,區塊鏈可以通過智能合約、交易所等方式可以提供更加多種多樣的服務。

從分析方法的角度來看,區塊鏈的可靠性是比較新的一個領域,目前還沒有形成相關的分析框架。但是,從最終軟件系統出故障的角度,區塊鏈的影響會涉及整個生態,影響範圍更廣、更大。

我們來看幾個區塊鏈軟件可靠性真實的案例,比如在2019年9月30日,比特幣的出塊時間長達近兩個小時,正常來說它應該是十分鐘出一個塊,這個現象相當於整個比特幣軟件系統暫停交易達到了兩個多小時,這對一些交易來說產生了比較大的影響。

第二個案例是發生在以太坊上的,如果用戶急需用錢又捨不得把以太坊賣掉的話,你可以把這個幣抵押到上面獲取美元,然後你再用美元去贖回你的幣。暫時沒有抵押的形式,因為幣價波動比較大,但是當這個幣價大跌的時候,它就有可能跌破抵押物的價值。

這時候就要對抵押物進行一個清倉拍賣,把它賣出去,否則跌得太快,賣的不及時就會產生一些不良交易。在2020年的3月12日當天,以太坊價格跌破了抵押物的閾值,所以需要進行拍賣。但由於當時沒有及時知道現實世界中幣價大跌,因此其拍賣不夠及時從而錯過時機,導致產生了超過四百萬美元的不良債務。

下一個案例是以太坊EVM整型溢出的問題。在Solidicy合約中,將數據放入比它本身小的存儲空間,將256這麼一個數字把它存儲到一個uint8的變量里時,它就會產生溢出,因為uint8隻能存儲0-255,256存進去它就變成零了。

在整型溢出的問題中,它就被人家利用,當時出現的情況是,A的賬戶會增加,但是當A賬戶減少的時候,因為它溢出了,所以減去了0,這就相當於A的賬戶沒有減少,然後B的賬戶又一直在增加,整個代幣大量的增發,幣增發過量就導致用戶對這個幣失去信心了,價格不斷下跌,所以拋售發生了,最後導致其市值跌至9億美元,這個後果還是比較嚴重的。

可靠性的問題,我們團隊在過去幾年主要是圍繞幾個方面開展研究。

首先是節點和共識的一個可靠性。目前比特幣的節點數已經超過了一萬三千個,以太坊超過了二千七百個,我們的目標是研究在區塊鏈節點中怎樣高效並且可靠地達成共識。

因為它的數據需要進行同步,所以就會涉及到性能方面、可靠性方面的問題,圍繞這個節點和共識的可靠性,我們團隊在圍繞性能監測和設計等方面開展了一些研究。第一個工作是基於日誌節點性能監測,目前我們公司監測的領域裡有各種各樣不同的鏈,第三方的客觀表現,能對這些區塊鏈的性能,以及不同的節點做一個客觀,公平公正的評估跟監測。

在這個工作中,我們提出了基於日誌實時性能監測的框架,提出區塊鏈交易多個分階段性能的指標,比較細密度性能的指標,有利於對不同區塊鏈性能做一個對比和分析。我們提出基於這個日誌的方法,在性能損耗方面能夠降低80%以上。

RPC接口大家都知道,每次接入RPC接口來獲取一些性能數據時,它都會影響這個區塊鏈本身的性能,還會耗費一定的CPO跟內存等來滿足你的需求。因此我們不看好這種方式,為了評測它,反而對其性能造成一個損耗。並且測評結果也不準確,因此,我們就提出基於日誌的方式來平衡這個影響。現在工作是基於強化學習工作數量的決策,因為傳統的一些分工策略都是靜態的,所以我們需要研究如何高效、安全地調整分配的數量,從而提升整個系統的分佈率。

我們提出了一個框架,基於深度強化學習,能夠動態地決定系統中分配的數量,並且通過一個共識,最終獲得一個全局的分配策略,這個方法比起原來靜態的分工策略,可以提升2.8倍的吞吐率,而且它具有更高的安全性。

同時,我們還研究了基於分佈式探索的關鍵委員會調度的方法,提出了一個在線分佈式隨機探索的策略,以平衡交易的吞吐率與積累的時長,使得委員會的價值最大,這個方法能夠有效的減少等待的時間,從而進一步提升系統的吞吐率。

此外,我們研究了跨方向的協議,因為這個不同方向的通訊會影響性能,所以需要提升跨方向交易的處理性能,為了優化跨方向的事情,我們提出了一個層級方向的模型。模型重疊了一個橋接方向,提高它的處理效率,最後實驗對比了傳統模型,這種層級方向的性能可以達到2.95倍。另一方面,這個解決方案是提出了用戶狀態動態調整策略實現分佈性的負載均衡,基於這個狀態劃分的跨方向協議。提出的方法在系統的存儲量、交易確認的延遲、工作的負載均衡等方面都能夠優於傳統的方案。

在2019年阿里巴巴的一個創新研究計劃中,我們派出了8名學生到螞蟻金服實習,花費31個月開發代碼並應用到螞蟻集團的區塊鏈系統中,它最大可以提升45%的系統智能合約的存儲量,雙方已經合作申請了20餘項專利。

第二部分是智能合約可靠性的一些研究,在工業上面以代碼為代表的智能合約數量比較龐大,超過4000萬個,有超過24萬個用戶部署了自己的合約,用戶發起的交易超過了12億次,合約內部的交易超過了26億次,在多個國家中開源的數量不多,只有二三十萬個合約,我們能夠找到它們的源代碼。近年來,智能合約開源的速度有所加快。

在智能合約的生態裡面,它存在大量的欺詐行為,有異常有缺陷等等問題,所以需要跟它的可靠性開展一些相應的研究,圍繞這一點,我們團隊也做了一些初步的探索和研究工作。

第一個工作是基於定型符號執行的漏洞檢測,傳統的符號執行,會面臨路徑爆炸導致時間長,效率低的問題。我們利用CPU的多核能力進行符號執行,並且探索多個符號的路徑,並且維護一個全局狀態,以遍於幫助及時發現合約的漏洞。

我們把這個方法設計成一個插件,它能便捷地應用到主流的合約符號執行的工具中。同時在第三方的數據集以及16核的CPU中,可以把兩個已有的工具的效率提升7-8倍的效果。另一方面,我們開展了基於學習方法的智能合約漏洞的檢測,它的研究問題是如何設計高準確率的漏洞檢測的模型,我們的解決方案是從現有的工具檢測的結果,總結出了三類常見的假陽性的模式,從這些假陽性模式中提取特徵,提出了基於代碼所適用於的一種漏洞檢測的模型。

最後提出的方法,可以把主流檢測工具的假陽性從70%降低到20%以下,同時,圍繞這個導向型技術,我們也優於加快智能合約的模糊測試,它的研究問題是如何定位,並且加速觸發具有漏洞的持續路徑,提高某個測試工具的檢測效率。

首先,我們總結了七條漏洞必須具備的操作碼,在某個測試的過程中,對這些操作碼給予更加大的成效,給予更加主要的幫助,我們發現商業中小於5%的代碼,能夠真正觸發漏洞,而成功觸發漏洞的時間通過我們的方法可以平均減少7%,最高可以減少23%。

另外,我們還圍繞智能合約上的龐氏騙局事件開展了一些研究,研究問題主要是我們如何要通過智能合約的機器,能夠自動識別出它是不是一個騙局,解決方案是提出了一個機器學習的框架,從合約的賬戶資金流的特徵就已經查出這些特徵,以及我們對它的代碼做了一個統計,提取了很多代碼層面的特徵,通過這兩類特徵疊加起來,我們龐氏騙局識別的算法可以達到90%以上的識別率。

通過我們的方法,發現了以太坊平台存在的400個真實的龐氏騙局。在智能合約特性方面,我們主要是研究如何挖掘相似的合約,提取它參與的代碼,然後能為智能合約的版本更新提供支持。

比如兩個合約很相似,A合約進行了更新,這時候我們就可以提醒B合約,是不是也需要做類似的更新,我們通過語義的相似度來分析這些相似的合約,提取他們的差異代碼結合更新。同時,我們也圍繞低效合約的編程模式進行了識別多樣化,參考上面的執行合約是需要費用的,這時需要對這個智能合約的編程進行一個優化,來降低成本,我們總結了六種常見的低效編程的模式,然後提出了基於語法樹優化的方法,我們發現超過一半以上的合約,至少包含了一種低效編程模式。

第三部分是交易網絡的可靠性,這個區塊鏈的功能是一個巨大的交易網絡,由於交易量巨大,使其存在各種異常情況以及洗錢等一些非法的行為,影響了整個區塊鏈的生態建設。

我們團隊針對交易網絡的可靠性也做了一些初步的探索跟研究,首先是電子賬戶的一個識別,這裡的主要目標是能夠通過一個算法自動化地把交易網絡裡面的賬戶給識別出來。

我們主要的解決思路是,基於複雜網絡的建模,提出一種動態交易網絡分析的框架,採用SVD分解方法分析交易網絡的波動情況。進一步提升識別準確性,我們的方法可以達到準確率82%以上。圍繞這方面我們還提出了另外一種方案,用來提取這個賬戶的特徵,來進行釣魚詐騙的識別。

這種方法可以加速我們的計算,因為不同賬戶之間的距離,都可以通過這個特徵降量來進行計算,所以在這個釣魚詐騙的一些交易數據及識別準確性可以達到90%以上,提升了12.8%,同時我們還用圖形、網絡來嘗試做類似的一個問題,其好處是可以進一步的挖掘裡面深層次的特徵,能夠達到更優識別的準確性。它的缺點就是績效複雜度太高,交易網絡太大,所以這個網絡運行起來,效率仍然有待提升。

最後做個小結:

一、區塊鏈節點及共識的可靠性可維護區塊鏈的穩定運行;

二、智能合約的可靠性可以保障這個鏈上服務的正確進行;

三、交易網絡的可靠性可促進交易雙方的互信;

四、區塊鏈可靠性成為引人關注的研究問題。

本文鏈接:https://www.8btc.com/article/6718806

轉載請註明文章出處

(0)
上一篇 2021-12-28 17:15
下一篇 2021-12-28 18:13

相关推荐