<dd id="saiiy"></dd>
  1. <s id="saiiy"></s>

    1. <s id="saiiy"></s>
      1. <span id="saiiy"><blockquote id="saiiy"></blockquote></span>

        基于區塊鏈技術(shù)改進(jìn)PBFT算法的供應鏈溯源方法

        發(fā)布時(shí)間:2025-06-07 22:09:28   來(lái)源:心得體會(huì )    點(diǎn)擊:   
        字號:

        郭 雨

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

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

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

        1.1 區塊鏈

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

        1.2 PBFT算法

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

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

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

        圖1 PBFT算法執行流程

        算法中包含5個(gè)階段。

        1)request:客戶(hù)端首先發(fā)送請求,請求信息發(fā)送格式為

        ,

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

        t----時(shí)間;

        c----編號。

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

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

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

        n----主節點(diǎn)分配編號;

        d----digest編號。

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

        3)prepare:進(jìn)入到prepare階段的備份節點(diǎn)會(huì )產(chǎn)生一條prepare廣播信息,并且會(huì )接收到其他節點(diǎn)發(fā)送的prepare信息,prepare格式為

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

        其中:i----節點(diǎn)編號。

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

        4)commit:進(jìn)入到commit階段的備份節點(diǎn)會(huì )產(chǎn)生一條commit廣播信息,同時(shí),也會(huì )接收到其他節點(diǎn)發(fā)送的commit信息,commit格式為

        。

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

        5)reply:該節點(diǎn)對客戶(hù)請求進(jìn)行答復,reply格式為

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

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

        t----隊形的時(shí)間戳;

        i----作為請求答復的節點(diǎn)編號;

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

        當客戶(hù)端收到包含自己在內的允許節點(diǎn)出錯的容錯數量,并且請求答復時(shí),t和r的結果都相同,這時(shí)表示請求被系統處理。當遇到網(wǎng)絡(luò )原因,客戶(hù)端未及時(shí)收到答復時(shí),消息將會(huì )被重復發(fā)送。

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

        2.1 智能合約

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

        智能合約與傳統合約對比見(jiàn)表1。

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

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

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

        圖2 智能合約運行機制

        智能合約可以自動(dòng)觸發(fā)執行代碼,驗證合約的有效性,從而避免數據篡改的風(fēng)險。為實(shí)現智能合約的交互操作,智能合約會(huì )預留一個(gè)接口,根據密碼學(xué)原理,使得合約與接口進(jìn)行交互驗證,保證合約的安全性。

        2.2 PBFT算法的不足

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

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

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

        2.3 改進(jìn)的PBFT算法設計

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

        圖3 PBFT算法改進(jìn)流程

        優(yōu)化后的PBFT算法執行流程如下:

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

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

        。

        這里替換原有數據格式,取消客戶(hù)端編號c,用s表示主節點(diǎn)簽名機制。其中t不再表示本地時(shí)間,用來(lái)表示每次主節點(diǎn)進(jìn)行共識的時(shí)間間隔。

        3)在備用節點(diǎn)收到主節點(diǎn)的消息后,會(huì )進(jìn)行消息驗證,并且進(jìn)行消息回復。

        2.4 改進(jìn)算法

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

        func( )Run(){

        定義并處理不同函數

        if初始化數據{

        return返回數據

        }

        else if調用賬鏈代碼{

        return返回數據賬鏈代碼)

        }

        else if f刪除用戶(hù){

        return t. 刪除用戶(hù)返,返回數據

        }

        func{

        對賬戶(hù)進(jìn)行初始化,并分配賬戶(hù)A和B一個(gè)地址,并賦值。

        賬戶(hù)地址

        賬戶(hù)金額

        }

        初始化數據

        if 賬戶(hù)余額不足{

        return 返回錯誤信息

        }

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

        從賬本中獲取狀態(tài)/變量信息

        查詢(xún)A賬戶(hù)當前余額并轉換為數值

        }

        return 返回主信息

        2.5 PBFT算法改進(jìn)分析

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

        2)將PBFT算法原有的5個(gè)階段消息傳遞變?yōu)?個(gè)階段消息傳遞,增加主節點(diǎn)巡查機制,降低系統的通信次數,同時(shí),減少網(wǎng)絡(luò )通信和數據交換的數量,降低系統的延時(shí)時(shí)長(cháng),從而提高計算效率。

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

        圖4 傳統算法與改進(jìn)后的PBFT算法數據對比

        實(shí)驗結果表明,減少主節點(diǎn)數量,并且減少主要交互流程以及網(wǎng)絡(luò )通信和數據交換的數量,降低了系統的延時(shí)時(shí)長(cháng),從而提高計算效率。

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

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

        <dd id="saiiy"></dd>
        1. <s id="saiiy"></s>

          1. <s id="saiiy"></s>
            1. <span id="saiiy"><blockquote id="saiiy"></blockquote></span>