<ol id="ebnk9"></ol>
    1. 基于區塊鏈技術改進PBFT算法的供應鏈溯源方法

      發布時間:2025-06-21 01:24:26   來源:心得體會    點擊:   
      字號:

      郭 雨

      (吉林建筑科技學院 計算機科學與工程學院, 吉林 長春 130114)

      傳統供應鏈中,對于實現交易平臺之間、交易平臺與用戶之間、交易平臺與商戶之間等信息交互的利用,無法保障信息的有效利用以及信息安全性的維護,從而導致交易平臺在數據交互過程中產生各種各樣難以解決的問題,如溯源不清、交易數據被篡改、質量問題難以劃分責任等問題。

      區塊鏈技術已逐漸走入大眾的生活,成為社會關注的焦點。區塊鏈源于比特幣,利用加密鏈式區塊結構存儲數據,其中共識算法是區塊鏈技術的一個核心問題,利用共識算法來生成、驗證數據,可以有效地解決互聯網上信任與價值的可靠傳遞難題[1]。利用區塊鏈技術去中心化的特點,采用一種全新的數據庫技術,可以高價值、多方位對交易數據進行保護,并通過密碼學技術保護交易數據內容難以進行篡改、造假或者抵賴。區塊鏈技術的應用有助于建立新的交易平臺建設體系,以去中心化、開放的特征,強調和尊重時長交易的自愿原則,發揮統籌協調機制。

      1.1 區塊鏈

      傳統交易平臺數據需要一個第三方可信任的中介進行交易,與傳統的交易平臺相比,區塊鏈技術除了具有去中心化的優勢外,還可以保證網絡數據的一致性,實現點對點的交易,從而增加交易平臺的數據安全性和可靠性[2]。但是想要達到點對點的交易,就需要考慮區塊鏈安全、效率等因素。區塊鏈主要的共識算法有POW、POS、DPOS、PBFT。在這些共識算法中,拜占庭容錯算法(Practical Byzantine Fault Tolerance, PBFT)在交易平臺中具有更大的優勢。

      1.2 PBFT算法

      在分布式系統中,拜占庭容錯技術能夠很好地對應節點故障和傳輸錯誤的問題。但是早期的拜占庭算法是需要有數級的算法,算法復雜,使用難度較大。直到1999年提出的PBFT算法才將算法復雜度降為多項式級別,改進后的算法極大地提高了拜占庭算法的效率[3]。

      在PBFT算法中,存在view(視圖)概念,在每一個view里,相同配置下運行每一個節點,并且只能設置一個主節點,而其他節點作為view中的備選節點。view中的主節點主要對平臺申請數據進行排序,并且按照排序進行分配,將數據分別存儲到備份節點中。備份節點檢查主節點對請求的排序是否正常,如果出現分配異常狀態,就會觸發view change機制,將主節點進行替換,在view中進入一個新的主節點。

      PBFT算法主要執行流程如圖1所示。

      圖1 PBFT算法執行流程

      算法中包含5個階段。

      1)request:客戶端首先發送請求,請求信息發送格式為

      ,

      其中:o----執行操作

      t----時間;

      c----編號。

      2)pre-prepare:將收到的請求發送給主節點,主節點進行記錄,記錄后發送一條廣播數據給其他的備份節點,pre-prepare格式為

      < pre-prepare,v,n,d>,

      其中:v----所在視圖請求;

      n----主節點分配編號;

      d----digest編號。

      通過信息比對,如果備份節點在視圖中的數據與請求數據相同,并且未收到過相同節點信息,但是每個節點的摘要編號不相同,則該信息通過,進入下個階段。

      3)prepare:進入到prepare階段的備份節點會產生一條prepare廣播信息,并且會接收到其他節點發送的prepare信息,prepare格式為

      < prepare,v,n,d,i>,

      其中:i----節點編號。

      當節點接收到2倍的允許節點出錯的容錯數量,并且prepare中的請求、節點編號以及備份節點編號相同,則這個節點可以進入下個階段。

      4)commit:進入到commit階段的備份節點會產生一條commit廣播信息,同時,也會接收到其他節點發送的commit信息,commit格式為

      。

      當節點接收到包含自己在內2倍的允許節點出錯的容錯數量具有相同的v和n的commit信息后,在節點等待中編號較低的請求,請求經過同意后可以進行執行。

      5)reply:該節點對客戶請求進行答復,reply格式為

      < reply,v,t,v,t,r>,

      其中:r----請求所在的視圖;

      t----隊形的時間戳;

      i----作為請求答復的節點編號;

      r----請求答復的最終結果。

      當客戶端收到包含自己在內的允許節點出錯的容錯數量,并且請求答復時,t和r的結果都相同,這時表示請求被系統處理。當遇到網絡原因,客戶端未及時收到答復時,消息將會被重復發送。

      除此之外,當視圖中節點執行完成后,還需要對多余數據機型回收,即將之前的請求記錄信息進行清除,從而節省系統資源,減少系統資源的占用。在使用時,還需要考慮到網絡延遲等因素,可能導致視圖中的節點并不在同一個處理狀態中,因此,在PBFT算法設置check point協議,在check point協議中預先設置檢查點,在所有節點執行完畢并通過檢查點時,檢查點將會對全網進行全面檢查,并通知其他節點中的檢查點節點信息執行完畢。

      2.1 智能合約

      智能合約作為一種計算機協議,合約條款在執行時可以是全部或部分自動執行,同時,智能合約為了避免外界因素產生的干擾,實現當一個預先編號的程序被執行時,智能合約執行系統相應的協議條款[4]。這種執行方式使得合約的履行更加便捷,也為執行數據帶來保障。

      智能合約與傳統合約對比見表1。

      表1 智能合約與傳統合約對比

      智能合約與傳統合約對比,具有不可比擬的優勢,尤其是在區塊鏈技術出現以后,分布式賬本技術為智能合約提供了底層技術基礎,從而保證數據不被隨意篡改,并且保證數據能夠按照預定執行的合約條款執行[5]。在超級賬本中,智能合約部署在其fabric網絡節點上時,可以被調用的與分布式進行交互的程序代碼。在以太坊中,智能合約是運行在相互不信任參與者之間的協議,由區塊鏈的共識機制自動實施,不依賴于受信任的機構[6]。

      智能合約作為一種協議,其數據架構可以分為呈現層、應用層、業務層和數據層[7]。呈現層主要表示客戶前端,應用層根據不同應用程序進行不同設計,業務層包含系統所需要業務過程上的實現,數據層提供持久化數據服務[8]。智能合約的運行機制如圖2所示。

      圖2 智能合約運行機制

      智能合約可以自動觸發執行代碼,驗證合約的有效性,從而避免數據篡改的風險。為實現智能合約的交互操作,智能合約會預留一個接口,根據密碼學原理,使得合約與接口進行交互驗證,保證合約的安全性。

      2.2 PBFT算法的不足

      1)PBFT算法在分布式系統中,通過異步通信機制進行傳輸,從而達成共識[9]。PBFT算法具有很強的一致性,每次計算都需要遍歷整個網絡節點,但如果在交易平臺中具有龐大的網絡系統,此時PBFT算法的效率就會降低。當節點個數大于節點編號的1/3時,網絡安全將會遭到破壞,從而降低系統的安全性。同時,由于PBFT算法具有的特定通信機制,每一個備份節點的數據都需要進行5步驗證,導致PBFT算法執行效率不高。

      2)PBFT算法在系統view中,每一次的請求數據、備份節點的請求數據都需要有回應,但是交易平臺數據節點數量龐大,無形中增加了網絡通信和數據交換的數量,增加了系統的延時時長,從而降低計算效率。

      3)PBFT算法中,主節點與備份節點固定,如果節點進行動態變化,由于節點的固定問題,無法對應節點的動態變化,在交易平臺中,各個節點的數據量非常大,由于交易平臺中并不是一對一的交易,而是具有多家供應商和多用戶,并且在交易平臺中,供應商的數量也可以不斷變化,使得節點的數量和交互過程隨之變化,但是PBFT算法無法對節點進行動態的增加或者刪除,使得交易平等數據交互得到了限制。

      2.3 改進的PBFT算法設計

      根據區塊鏈技術采用的網絡模式對PBFT算法進行分析設計,假設服務器絕大部分時間處于正常狀態,不用每一個請求都在達成一致后再執行,取消共識過程,只需要在錯誤發生之后再進行共識,達成一致性即可,刪除原有算法中的reply階段,在各個備選節點收到消息后,如果收到pre-prepare階段的廣播消息,那么此次消息傳遞完成,取消客戶參與算法共識階段,將PBFT算法的執行流程簡化為三個階段,實現流程優化效果,PBFT算法改進流程如圖3所示。

      圖3 PBFT算法改進流程

      優化后的PBFT算法執行流程如下:

      1)取消客戶端發送請求的方式,備選節點中的任一節點都可發送請求,為防止請求被數據篡改,需要在請求時加入簽名,保護交易數據的可靠性。

      2)主節點不需要每次都檢查備選節點消息,而是每隔一段時間進行消息匹配,匹配內容為

      。

      這里替換原有數據格式,取消客戶端編號c,用s表示主節點簽名機制。其中t不再表示本地時間,用來表示每次主節點進行共識的時間間隔。

      3)在備用節點收到主節點的消息后,會進行消息驗證,并且進行消息回復。

      2.4 改進算法

      采用智能合約技術結果區塊鏈算法進行實驗數據對比分析,對改進后的PBFT算法進行實驗,并得到相應的實驗數據。首先建立智能合約的超級賬本,建立一個接口為Run的函數,通過結構調用智能合約內不同方法。主要偽代碼如下:

      func( )Run(){

      定義并處理不同函數

      if初始化數據{

      return返回數據

      }

      else if調用賬鏈代碼{

      return返回數據賬鏈代碼)

      }

      else if f刪除用戶{

      return t. 刪除用戶返,返回數據

      }

      func{

      對賬戶進行初始化,并分配賬戶A和B一個地址,并賦值。

      賬戶地址

      賬戶金額

      }

      初始化數據

      if 賬戶余額不足{

      return 返回錯誤信息

      }

      fmt.Printf(將執行后的結果寫入賬本中)

      從賬本中獲取狀態/變量信息

      查詢A賬戶當前余額并轉換為數值

      }

      return 返回主信息

      2.5 PBFT算法改進分析

      1)在PBFT算法中,如果頻繁地更換主節點,會導致view的跟換,從而影響系統效率以及系統的吞吐量,改進后的算法增加了主節點簽名機制,增加節點的信任度,并且在選取主節點時,可以從信任節點中進行選擇,不用進行原有節點選取方法。

      2)將PBFT算法原有的5個階段消息傳遞變為2個階段消息傳遞,增加主節點巡查機制,降低系統的通信次數,同時,減少網絡通信和數據交換的數量,降低系統的延時時長,從而提高計算效率。

      選取實驗主節點,利用智能合約機制與改進后的PBFT算法相結合,在實驗時選取6個主模擬節點,并將1節點和4節點設置為PBFT節點,進行300次主節點更換,對比原始PBFT算法和改進后的PBFT算法進行實驗,對比實驗數據如圖4所示。

      圖4 傳統算法與改進后的PBFT算法數據對比

      實驗結果表明,減少主節點數量,并且減少主要交互流程以及網絡通信和數據交換的數量,降低了系統的延時時長,從而提高計算效率。

      針對原始的PBFT算法存在系統延時時間長、計算效率低、主節點更換次數龐大等問題,提出改進PBFT算法的供應鏈溯源方法。減少主節點變換次數及交互流程,增加主節點簽名機制及節點的信任度,并且在選取主節點時,可以從信任節點中進行選擇,并與智能合約機制相結合,從而達到降低算法的通信開銷中心化、公開透明以及交易可追溯。整個構架對供應鏈中產品從生產商到消費者全過程數據記錄,保證了交易過程中產品的安全性。

      猜你喜歡交易平臺備份合約甘肅省體育產業資源交易平臺建設的推進路徑體育科技(2022年2期)2022-08-05健全監管機制規范互聯網交易平臺發展中國經貿導刊(2021年31期)2021-12-23公共資源交易平臺構建及體制機制創新現代企業(2021年2期)2021-07-20如何只備份有用數據而不備份垃圾數據計算機世界(2020年26期)2020-07-23創建vSphere 備份任務網絡安全和信息化(2020年1期)2020-01-15Windows10應用信息備份與恢復電腦愛好者(2019年8期)2019-10-30舊瓶裝新酒天宮二號從備份變實驗室太空探索(2016年10期)2016-07-10
      国产另类无码专区|日本教师强伦姧在线观|看纯日姘一级毛片|91久久夜色精品国产按摩|337p日本欧洲亚洲大胆精

      <ol id="ebnk9"></ol>