天天看點

基于區塊鍊的防護物資捐贈監管系統(二):系統結構基于區塊鍊的防護物資捐贈監管系統(二):系統結構三、系統設計總結

基于區塊鍊的防護物資捐贈監管系統(二):系統結構

第1章 對研究背景及内容進行介紹

第2章 智能合約、密碼學知識、共識機制等相關技術

第3章 系統的整體設計

第4章 系統功能的具體實作

第5章 系統的實驗測試

目錄

  • 基于區塊鍊的防護物資捐贈監管系統(二):系統結構
  • 三、系統設計
    • 3.1 系統方案
      • 3.1.1 系統設計
      • 3.1.2 系統結構
    • 3.2 系統安全分析
      • 3.2.1 安全分析
      • 3.2.2 安全措施
      • 3.2.3 争議仲裁
    • 3.3 資料結構
      • 3.3.1 物資摘要鍊
      • 3.3.2 流轉記錄鍊
    • 3.4 智能合約
    • 3.5 隐私保護
  • 總結

三、系統設計

3.1 系統方案

系統旨在協助公益組織提高資訊化程度、增進運作效率,并且為公衆及監管部門提供一個将捐贈物資後續使用進展公開透明的平台,進而使公益組織實作透明化營運,重新獲得公衆尊重、提高社會公信力。根據需求特性本文選擇了基于區塊鍊技術建立這樣一個使用者為公益活動各方參與者,并且使用者均能與系統直接互動的監管平台,通過區塊鍊技術實作資訊透明公開,解決資訊不對稱的問題。

3.1.1 系統設計

基于區塊鍊的防護物資捐贈監管系統(二):系統結構基于區塊鍊的防護物資捐贈監管系統(二):系統結構三、系統設計總結

系統主要存在四類使用者,物資需求方、物資捐贈方、公益組織以及監管部門。如圖所示,使用者均可進行對區塊鍊的直接操作,但行為需要經過系統驗證,物資需求方通過區塊鍊釋出物資需求;物資捐贈方通過區塊鍊釋出物資捐贈情況,系統根據算法比對,進而實作捐受雙方的需求精準對接;公益組織負責相關物資的流轉驗證以及對使用者誠信的記錄和黑名單公示;監管部門可全程在區塊鍊上對物資進行跟蹤查詢,并可根據相關因素對公益組織進行評價。整體參照了軟體工程的疊代開發模式,能夠使軟體實作快速疊代,并且可根據實際回報更新系統版本。

物資需求方為社會公認的醫院,針對疫情中出現相關組織曾将緊缺防疫物資捐贈予未設立發熱門診等醫院的現象,物資需求方在向區塊鍊系統中送出物資需求時,需要提供相應資格證明以及門診壓力,便于系統進行認證及物資配置設定等操作。

物資捐贈方主要為社會各界愛心人士,但也存在不誠信使用者,是以使用系統前需要使用者進行身份資訊的實名認證;針對可能出現的供需對接後捐贈方物資遲遲未能發送的問題,設定時間鎖,若時間節點到期後相關雙方沒有發生争端,則捐贈有效;否則會将資訊記入信用記錄,并由系統進行黑名單公示。

公益組織也可能存在内部不誠信員工等問題,可采用外部監督志願者的形式,公益組織應主動向媒體通報公益活動開展、援建項目進度、重要會議召開等相關資訊。監管機構可為志願者或相關媒體、政府機構等。

3.1.2 系統結構

系統采用MVC架構結構,基于不同功能分為3層。

第一層View層負責資料的可視化操作。能夠實作資料查詢、資料交易、資料評價等功能。

第二層是Controller層,通過網絡控制資料流向Model層,并在檢測到資料變化時更新View層。這一部分由共識機制PBFT和基于P2P通信的節點伺服器組成。如圖3.2所示,每個節點既用于資料副本存儲,也作為區塊鍊節點;資料副本加密存儲在各個節點的資料庫當中,而将資料摘要存儲在區塊鍊當中,保證資料的不可篡改性和完整性;

第三層是Model層,負責處理資料邏輯的部分。由資料層和存儲層組成,每個伺服器建立并與維護物資摘要鍊和流轉記錄鍊,具體内容将在存儲結構中介紹。

基于區塊鍊的防護物資捐贈監管系統(二):系統結構基于區塊鍊的防護物資捐贈監管系統(二):系統結構三、系統設計總結

3.2 系統安全分析

3.2.1 安全分析

合法使用者正常使用系統的情況下,操作主要分為四種類型:1.捐贈方将物資資訊釋出并記錄在平台;2.物資需求方通過擷取資格認證後,将物資需求資訊釋出并寫入區塊鍊;3.系統進行物資資訊比對環節後,由公益組織将捐贈物資轉贈予物資需求方;4.在物資順利送達後,由公益組織負責跟進後續活動進展,并且将所有流通細節通報媒體,并寫入區塊鍊。

基于區塊鍊的防護物資捐贈監管系統(二):系統結構基于區塊鍊的防護物資捐贈監管系統(二):系統結構三、系統設計總結

如圖所示,系統可能會存在如下安全問題:

(1) 捐贈欺騙:由于不誠信使用者的存在,可能會出現物資捐贈方送出與其所擁有的實際物資品質、數量等不相符的物資捐贈資訊,導緻智能合約出現空比對等問題,影響系統後續功能實作;并且可能會出現非法使用者進行DDOS攻擊,不經過用戶端向伺服器發送大量無用資料包,導緻伺服器節點當機等問題;

(2) 不合格交易:同時可能出現使用者在捐贈物資資訊釋出後,物資捐贈方拒絕送出或逾時送出相關物資等情況,導緻物資需求方不能及時擷取防護物資;

(3) 需求欺騙:醫院等物資需求方可能會在利益驅使下申請與其自身實際需求不相符的物資,或請求與自身醫療資質不比對的防護物資;

(4) 節點欺騙:公益組織内部可能會存在不誠實員工,通過人為操作将緊缺物資配置設定給予其個人存在非法利益關系的機構,牟取非法收入;

3.2.2 安全措施

(1) 為了減小不誠信使用者威脅,在使用者注冊登入系統時,需要進行實名認證,系統會通過加密存儲的形式保護使用者個人資訊;在物資捐贈方上傳物品捐贈資訊時,需要提供相關産品标準、産品檢驗标志、有效合格證件、檢查第三方檢驗報告、企業滅菌記錄等資訊,進而減少不合格物品的影響;為防止出現DDOS攻擊,在使用者上傳資訊的資料包中加入裝置硬體特征碼,限制裝置一定周期内資料發送的次數。

(2) 針對出現不合格交易的問題,平台加入了信譽值系統,信譽值變化将影響其自身屬性和系統的後續使用;不同系統功能會設定門檻值,如果信譽值不滿足要求,相關功能會被限制通路,詳細設計内容會在下一章節進行介紹。如果相關人員存在操作行為問題,系統會将其記入信用黑名單并進行廣播,情節嚴重的則會移交法院依照法律進行評判。

(3) 對于存在的需求欺騙問題,同樣采取确認使用者身份的形式。與物資捐贈方不同,物資需求方在獲得醫院資格認證資訊的前提下,申領防護物資時必須向系統提供如發熱門診人員配置、診室數量、就醫人數等資訊,這些内容将影響後續物資比對算法計算。

(4) 為了防止節點欺騙,系統采用聯盟鍊結構,任何區塊鍊操作都需要系統内大部分節點達成共識;同時公益組織需要将區塊鍊上展示的慈善活動,通告媒體經公開通報後進行上鍊,以此避免節點欺騙;并且公益組織人員登入系統進行操作時,會留下其個人身份哈希值。

3.2.3 争議仲裁

在活動過程中可能會出現多方糾紛等問題,由監管部門作為第三方介入。當物資捐贈方或物資需求方在慈善活動過程中出現糾紛,或公衆對相關公益活動真實性存在質疑,可以向公益組織發起投訴,這是會由監管部門介入,如圖3.4所示,監管部門能夠通過系統查詢物資摘要鍊、流轉記錄鍊中活動資訊的記錄,進而通過直接證據或通過身份碼征詢相關員工等方式,對相關活動資訊溯源驗證,并執行相應必要的懲罰。

基于區塊鍊的防護物資捐贈監管系統(二):系統結構基于區塊鍊的防護物資捐贈監管系統(二):系統結構三、系統設計總結

3.3 資料結構

根據上述系統需求,設計了下面的資料結構。系統整體采用雙鍊的結構,物資摘要鍊負責記錄物資捐贈及需求資訊,友善比對及活動查閱;流轉記錄鍊負責記錄物流、經辦人等捐贈物資流轉資訊。詳細内容将在下文介紹。

3.3.1 物資摘要鍊

物資摘要鍊存儲物資捐贈方物資的資訊摘要以及物資需求方的需求資訊,同時在側鍊中存儲第三方的稽核标準以及相應活動的評價資訊,通過區塊鍊不可篡改的特點保證存儲資訊真實可靠。首先依照區塊鍊特性設計了包含父區塊哈希值、Merkle根以及時間戳的區塊頭結構,其中記錄的資訊包括:

(1) 父區塊哈希值:通過這個值将每個區塊首尾相連進而組成區塊鍊,對區塊鍊的安全性起到了至關重要的作用,關于安全性的具體叙述詳見之後的驗證算法;

(2) Merkle根:通過Merkle樹計算所得目前區塊的哈希值,将區塊中除評價側鍊以外的所有資訊内容利用 SHA256 算法計算哈希值;由于區塊任意底層葉子節點的變化都會傳遞進而影響其父節點直至根節點哈希值,是以可保證資料内容不被篡改;

(3) 時間戳,記錄生成該區塊的時間,精确到秒;通過時間戳技術将篡改區塊内容的難度進一步提升,如果想要篡改某一區塊内容就需要依次改動,直至将該區塊後面所有區塊改變;

(4) 區塊編号,記錄該區塊的高度便于系統查詢調用;

(5) 版本号,記錄生成區塊節點的平台版本資訊,便于系統後續的工程維護。

作為區塊鍊的基本結構,區塊頭内容适用于所有區塊類型。由于系統需求,需要對使用者的個人信譽進行評測以及記錄公益活動後續進展,是以設計采用二維鍊式的區塊鍊資料結構,如圖3.3所示,由物資摘要資訊構成的資料區塊作為縱鍊;

由使用者的評價資訊構成的區塊連結并作為側鍊,每個使用者進行系統操作過後,系統會為參與此次捐贈比對的雙方提供評價權限,受捐方可将該捐贈物資的使用情況釋出在區塊鍊上,進而影響捐贈方的信譽值,使用者信譽的具體計算方式将在下一章進行詳細講解。在查詢資訊時,可在縱鍊上找到資料摘要資訊區塊,在并根據側鍊上的評價資訊選取,進而提高系統的可讀性公平性,查詢資料的效率和系統的時間性能。

評價資訊的更新,建立在資料摘要鍊特殊的二維結構基礎上,由主節點直接完成,資料區塊的區塊頭Merkel樹根哈希值為除側鍊以外的其他資訊的計算結果;每個評價側鍊的創世區塊哈希值,為其所處區塊的區塊頭Merkel根哈希值,進而與資料區塊構成橫向鍊式結構;經過一個更新周期時間後,由主節點通過系統将側鍊的更新内容進行廣播并同步給所有其他節點。

基于區塊鍊的防護物資捐贈監管系統(二):系統結構基于區塊鍊的防護物資捐贈監管系統(二):系統結構三、系統設計總結

根據需求不同,分别針對性設計了如下不同功能的區塊體:

(1) 捐贈方區塊體,如圖3.4所示,區塊主體記錄的資訊有:

1)物資摘要資訊,包括物資描述、物資類型、物資數量、品質認證資訊等;

2)位址資訊,捐贈者所處地理位置,該資訊将影響後續的供需比對;

3)個人資訊,存放使用者個人身份碼,便于物資所屬權認證;

4)個人信譽側鍊,包含前一區塊的哈希值(用于構成一條完整鍊結構)、評價分數、評價文字描述以及資訊生成的時間等。為了實作可更新的評價側鍊,用于資料摘要鍊元件的哈希值計算将不包括側鍊内容,使用者送出評價後将進行一次廣播投票,確定合法後更新相應區塊。

基于區塊鍊的防護物資捐贈監管系統(二):系統結構基于區塊鍊的防護物資捐贈監管系統(二):系統結構三、系統設計總結

(2) 需求方區塊體,如圖3.5所示,區塊主體記錄的資訊有:

1)需求摘要資訊,包括需求描述、需求類型、需求數量等;

2)位址資訊,需求方如醫院所處地理位置,該資訊将影響後續的供需比對;

3)資格資訊,存放如醫院醫療資格認證碼,防止莆田系醫院幹擾;

4)門診資訊,如發熱門診從業人員情況、相關診室數量、門診就醫人數;

5)醫院信譽側鍊,包含前一區塊的哈希值,評價分數、評價文字描述等内容,信譽值具體更新算法将在下一章介紹。

基于區塊鍊的防護物資捐贈監管系統(二):系統結構基于區塊鍊的防護物資捐贈監管系統(二):系統結構三、系統設計總結

3.3.2 流轉記錄鍊

同樣采用上述的二維鍊式結構,流轉記錄鍊用于存儲捐贈物資後續活動進展産生的資訊,記錄使用者捐贈物資的轉移過程以及後續使用記錄等内容。

上述區塊頭内容同樣适用于流轉記錄區塊,流轉記錄鍊的資料結構與物資摘要鍊結構較為相似。如圖3.6所示,流轉記錄鍊中儲存:

(1) 流轉資訊如物流編号,便于查詢目前區塊所屬活動的物資貨運進展;

(2) 發送方資訊,存儲物資發送方的身份ID,便于确認物資所屬權以及後續獎勵或懲罰對象;

(3) 經辦人資訊,記錄公益組織從業人員身份ID,便于監管部門在活動後續介入調查驗證時的相關責任歸屬;

(4) 接收方資訊,包含接受物資捐贈的醫院等物資需求方資訊,用于活動記錄公開展示;

(5) 後續進展側鍊,後續動态更新經媒體通告後的公益活動進展。

基于區塊鍊的防護物資捐贈監管系統(二):系統結構基于區塊鍊的防護物資捐贈監管系統(二):系統結構三、系統設計總結

使用者的物資資産判定由流轉記錄鍊中的交易輸入輸出決定,區塊鍊可能會非常長,而交易必須查找并檢查其輸入。是以儲存了一個額外的集合稱之為未使用的交易作為可用的輸入, 執行一些檢查以確定交易有效,然後收集輸入并生成輸出并更新集合,執行的交易以Merkel tree形式存入區塊,以此避免大量的hash計算。

3.4 智能合約

物資捐贈方可以通過智能合約釋出自己的物資資訊,合約會包含需求物資的類型描述、物資數量等内容,系統在對使用者資格審查過後,會将該智能合約釋出到分享系統中。同樣,物資需求方可以通過其釋出自己的物資需求,合約包含上述區塊種的需求資訊、位址資訊、資格資訊以及門診情況等。

該系統智能合約主要包括三個部分:

(1) 初始化合約public String initialize():

該合約由使用者發起,初始化合約狀态;

contract Crowding {
    address public dataDemander;  // 發起人位址
    string public publicKey;  //發起人公鑰
    string public projectDetail;  //使用物資的活動描述
    string public styleDetail;  //需求物資類型細節
    uint public goalData;   // 需求物資數量目标
    uint public deadline;    // 截止日期
  }
           

(2) 物資資訊比對合約public String provide():系統會調用該合約協助完成捐受雙方數量類型上的精準比對,詳細比對方式将在下一章介紹;

(3) 使用者信譽評價public String reputationChange():其中包含物資捐贈方初始提供的捐贈物資資料,如物資數量DQTi (Data amount),物資品質DQLi(Data quality)等。在比對完成物資需求方收到對應物資活動完成後,系統會根據使用者回報對物資捐贈方信譽值重新确認。

與數字貨币交易不同,該系統設計的智能合約不僅僅包含資料的流轉,還包括資料的收集過程,是以在進行項目初始化時,物資需求方應該聲明所需要物資的數量,并描述需要物資的類型,這樣更有利于擁有該類型物資的提供者參與該項目。同時為了滿足物資使用的隐私性,發起合約項目的資料需求方還需要提供真實的身份以及使用目的,例如醫療機構名稱或者其他團體名稱,這樣物資提供者可以在參與公益活動時,知道自己的物資将被何人用于何種目的。

3.5 隐私保護

随着網絡的普及以及人們日益提高的隐私保護意識,使用者對其使用系統的要求也愈發嚴苛,本文系統采用AES+RSA結合的方式實作DH密鑰互動算法,對系統内所有必要的通信内容進行了雙向加密,保證系統中的安全通信不會被竊聽或冒充;對于網絡内傳輸的敏感内容,隻有擁有證書機構認證的授權使用者才能解密密文擷取資訊,具體方案在第二章中進行了講解。

使用者首次登陸系統時,會配置設定簽名私鑰資訊,私鑰與使用者手機用戶端綁定存儲在本地。系統會将使用者個人身份等驗證資訊進行捆綁,通過橢圓曲線數字簽名算法生成使用者身份碼。使用者個人隐私資料以加密的形式存儲,利用身份碼實作保護平台使用者隐私的同時,對捐贈物品所屬權進行認證。同時基于信譽值的通路控制,能夠有效限制可能存在非法操作的使用者擷取系統内容;系統支援匿名捐贈,但會将身份碼留作證據,用于可能出現的歸責流程。

總結

以上是系統結構的具體設計,接下來會對具體功能的實作進行展示,僅供參考。

第1章 對研究背景及内容進行介紹

第2章 智能合約、密碼學知識、共識機制等相關技術

第3章 系統的整體設計

第4章 系統功能的具體實作

第5章 系統的實驗測試