1. 系統組成
Galaxy Network 由下面三個部分組成:
Galaxy 核心網路一方面作為區塊鏈,提供公開不可篡改的記賬能力;另一方面作為 AI 資料平臺,動態感知使用者需求及網路狀態的變化,進行全域性資源排程,滿足全網體驗最優,成本最 低。
儲存網路聚合儲存礦工的儲存能力,提供近乎無限的儲存空間,通道編碼[1,16]進一步降低冗餘備份數量,儲存可靠性提高到 99.99999%。儲存網路以冷資料為主。
加速網路聚合過剩閒置資源的頻寬能力,提供 100Mbps 的超高速傳輸服務,加速礦工最小剩餘儲存空間只需 50MB;由 AI 演算法基於全網狀態完成快取資料在全網加速礦工的排程。加速網路以熱資料為主。
Galaxy 核心網路:
• 區塊鏈層
- 提供分散式記賬及智慧合約服務
- 由多個 Master Node 組成,DPoS+PoC 共識機制,支援 10000 TPS
- 出塊即挖礦,參與出塊並獲得獎勵
• 網路管理層
- 提供訂單匹配服務、儲存證明驗證服務、鏈下可審計的清算服務
- 基於AI 演算法的快取排程、推送服務及儲存修復服務
儲存網路:
• 百萬級帶硬碟的儲存礦工,要求Token 抵押、7*24 小時線上、公網IP 地址
• 為使用者提供可靠儲存服務
• 向核心網路提供儲存證明,獲得Token 回報
• 前 40%最大實際儲存量礦工獲得儲存挖礦獎勵
加速網路:
• 億級加速礦工,支援所有接入網路的裝置,包括PC、手機、機頂盒、智慧電視、路由器、Pad、光貓、智慧音箱等,剩餘儲存空間大於 50MB,對裝置線上穩定性沒有硬性要求
• 為客戶提供加速服務
• 向核心網路提供流量證明,獲得Token 回報
• 比 IPFS 快 100 倍,提供大於 100Mbps 的實時傳輸服務
2. 網路協議
Galaxy Network 由核心網路、儲存網路、加速網路及客戶執行的協議元組(Put ,Get,Push):
• Put(data) → key : 客戶端執行Put 協議將資料儲存在內容Hash 值key 下
• Get(key) → data : 客戶端執行Get 協議提取儲存在鍵值 key 下的資料
• Push(data) → key : AI 資料平臺指令推送服務向加速網路推送快取資料,形成分佈在加速網路上的快取資料,這些快取資料是Get 協議執行的前提
3. 系統屬性
成本:
成本分為儲存成本及加速成本。在同等條件下,儲存成本比公有云儲存成本降低 80%,加速成本比傳統CDN 成本降低 90%~95%。
體驗:
客戶關注資料的可提取性及傳輸體驗,其它分散式儲存網路由於資料分佈的數量、完整性及地域的不確定性,無法和公有云在體驗上進行競爭,不具備主流場景的商用能力。Galaxy Network在傳輸體驗上超越公有云,我們定義下載速率大於 100Mbps,比 IPFS 快 100 倍,未來突破500Mbps ~ 1000Mbps 的傳輸能力。
資料完整性:
如果有任意成功的Put 操作將資料D 儲存在鍵 key 下,那不存在有限的對手A 能使得客戶在對鍵 key 執行Get 操作接受D', 其中D' 不等於D。
儲存可靠性: 一個成功的Put 操作的定義是(D,f, m), 它的輸入資料被儲存在m 個獨立的儲存礦工中,並且它可以容忍最多f 個故障儲存礦工。如果有小於f 個故障儲存礦工,則對儲存資料Get 操作成功。例如資料經過通道編碼[1,16]後,編碼條帶儲存在 25 個儲存礦工和加速礦工上,第一個儲存礦工儲存 1 份完整資料D 的編碼副本R,第 2~25 個礦工儲存編碼後的 1/16 資料量副本。這個方案為 1+16+8 冗餘備份,m = 25, f = 10,小於 10 個礦工故障,Get 操作成功。
公開可驗證:
對於每個成功的Put 操作,儲存網路的儲存礦工可以生成資料正在被儲存的證明。這個儲存證明必須說服任何只知道 key 但並不能訪問 key 所對應的資料的有效驗證者。
公開可審計:
公開可審計代表如果所有儲存證明的操作軌跡被公開儲存,並且在未來能被檢查在正確的時間上資料確實被儲存了。
激勵:
如果儲存礦工和加速礦工由於成功提供了儲存和加速服務而獲得激勵,或者因為作弊而得到懲罰。所有儲存礦工和加速礦工的優勢策略是儲存資料和快取資料,並且保持線上狀態。
Galaxy 網路構建
Galaxy Network 是可升級,可公開驗證和激勵式設計的去中心化儲存和傳輸網路。客戶為了儲存資料和下載資料,向儲存礦工及加速礦工付費。儲存礦工和加速礦工提供磁碟空間和頻寬來賺取Token。儲存礦工和加速礦工只有在他們提供的服務被驗證正確時才會收到付款。
在本節中,我們介紹基於Galaxy Network 定義的構建過程。
1. 系統概述
Galaxy Network 由下面這些角色組成和定義:
1.1 參與者
任意使用者都可以作為客戶、DAPP、儲存礦工、加速礦工、Master Node 參與Galaxy Network。
• 客戶
客戶透過DAPP 向Galaxy Network 發起Put 協議儲存資料,或Get 協議請求資料。客戶和礦工簽署交易訂單,儲存及流量費用由為客戶提供服務的DAPP 支付。因此,客戶透過DAPP 使用Galaxy Network 的服務時,擁有和其它網際網路服務一致的使用者體驗:無需擁有區塊鏈錢包。
• DAPP
DAPP 透過預支付Token 使用 Galaxy Network 的儲存及頻寬資源,並向其客戶提供服務。DAPP 使用Galaxy Network 可以得到如下優勢:1)較低的儲存及頻寬價格;2)獲得GalaxyNetwork 的Token 激勵,鼓勵DAPP 的繁榮發展;3)DAPP 的客戶在沒有安裝錢包時,客戶作為加速節點參與到Galaxy Network,其加速收益為 DAPP 所得。
· 儲存礦工
儲存礦工透過提供儲存空間並且響應客戶的Put 請求參與到Galaxy Network。要想成為儲存礦工,客戶必須提供與儲存空間成比例的抵押,並且為了獲得更多的訂單,儲存礦工必須提供穩定線上時長、足夠的儲存空間、以及高質量的寬頻連線。儲存礦工與客戶達成儲存訂單後,必鬚生成儲存證明以證明儲存礦工在特定時間儲存了客戶的資料。如果儲存證明驗證成功,客戶會支付小額費用給儲存礦工。如果儲存證明失敗或不能提供證明,儲存礦工將被取消訂單或者被罰沒部分抵押。實際儲存量前 40%的儲存礦工,獲得儲存挖礦激勵。
• 加速礦工
加速礦工為客戶提供資料加速服務。加速礦工透過響應 Get 請求來參與Galaxy Network,透過 Push 協議向加速礦工快速部署資料。和儲存礦工不同,加速礦工不需要抵押,不需要提供儲存證明。儲存礦工也可以作為超級加速礦工參與加速服務。與其它去中心化儲存網路不同的地方在於, 幾乎任意裝置均可作為加速礦工參與Galaxy Network,以零成本賺取加速收益;高質量的加速礦工,如擁有公網IP 地址、高質量的頻寬、穩定線上,則可以提供更優質的加速服務,可以通
過提高報價賺取更高的回報。
• Master Node
Master Node 擁有三部分職責:
• 交易賬本及智慧合約
• 交易市場:儲存訂單匹配、儲存證明驗證及鏈下清算系統
• 儲存管理系統:用於快取管理及推送、儲存故障修復
Master Node 透過出塊及提供儲存管理服務獲得挖礦回報。
1.2 基礎網路
由儲存礦工及加速礦工組成了 Galaxy Network 的基礎網路,基礎網路在邏輯上包含儲存網路和加速網路。儲存網路及加速網路使用統一的節點架構:即統一在改進的 IPFS 架構上。但 IPFS 的 P2P引擎被替換,用於改進IPFS 在儲存效率及傳輸能力的不足。效率的提升是基礎網路的核心優勢。
由於儲存網路和加速網路共享統一架構,本質上是統一的 P2P 引擎,因此,儲存網路及加速網路統一了底層的儲存格式:
• 採用通道編碼[1, 16], 對檔案D 先編碼後儲存
• 採用條帶的格式進行儲存
• 儲存網路的安全儲存策略
• 儲存和加速網路統一以條帶為定址物件,而不再以塊為定址物件
1.3 交易市場
Galaxy Network 有兩個交易市場:儲存市場和加速市場。儲存市場允許客戶為儲存礦工儲存資料而付費。加速市場允許客戶為加速礦工提供加速服務而付費。交易市場由 Master Node 執行,保證礦工在提供服務時可以得到客戶的獎勵,同時也要保證客戶資料真實儲存在儲存礦工上。因此,交易市 場是一個可驗證的市場,一個基本的交易流程被分解為兩個階段:訂單匹配階段和結算階段。
儲存市場執行 Put 協議:
• 訂單匹配:
- 客戶和儲存礦工分別提交訂單到交易市場
- 匹配服務根據質量導向原則對客戶及儲存礦工的訂單進行匹配
- 當訂單匹配成功後,客戶傳送資料碎片給儲存礦工
- 雙方簽署交易訂單並提交到區塊鏈
• 結算:
- 驗證服務定期向儲存礦工發起儲存證明挑戰
- 儲存礦工生成儲存證明,提交給驗證服務
- 驗證服務驗證儲存礦工生成的儲存證明,驗證失敗則罰沒儲存礦工部分抵押
- 基於有效的儲存證明, 驗證服務生成向儲存礦工支付的指令
加速市場執行 Get 協議:
• 訂單匹配 :
- 客戶向加速礦工廣播訂單
- 加速礦工返回報價訂單
- 客戶決定是否與加速礦工建立交易訂單
• 結算:
- 加速礦工傳送小部分碎片給客戶,同步傳送一個經加速礦工簽名的流量證明(收據)
- 客戶對接收到的流量證明簽名,然後返回給加速礦工
- 加速礦工繼續傳送碎片資料給客戶
- 加速礦工向交易市場提供流量證明,獲得獎勵
Push 協議:
Push 協議是加速市場的支撐協議,透過 AI 資料平臺動態感知客戶加速需求及網路狀態的變化,快速高效在加速網路中部署客戶需要的快取資料,形成有序的資料快取分佈是超高速傳輸的基石。Push 協議由儲存礦工和推送伺服器承擔,根據其推送的流量,獲得加速礦工售賣頻寬的分成。
1.4 儲存證明
儲存礦工必須讓他們的客戶相信,客戶付費的資料已經被儲存礦工儲存。因此,我們提出的儲存證明(Proof-Of-Capacity) 允許儲存礦工證明資料已經被儲存到了唯一專用的物理儲存裝置上。儲存唯一的物理副本使客戶或Galaxy Network 能夠檢查儲存礦工是否不存在將多個資料副本重複複製到同一儲存空間。儲存礦工只有正確提供了儲存證明,才能得到客戶的支付。
1.5 流量證明
在加速市場,加速礦工和客戶端之間交換資料是在沒有第三方信任的中介情況下進行。因此加速礦工不能在加速服務完成後才得到客戶的支付,而必須在加速服務過程中,加速礦工在確認上一個流量碎片得到支付後,再繼續提供流量服務。這種模式導致了海量的碎片化交易。為解決這個問題,我們定義了流量證明(Proof-Of-Flow)方案,解決高併發交易的問題。
1.6 共識演算法
PoS 和 PoW 是當前最為流行的兩種共識機制。Galaxy Network 定位為去中心化儲存網路,交易量正比於儲存網路中的檔案數。 以PoW 和PoS 共識演算法為基礎的區塊鏈交易效能無法支撐Galaxy Network 的交易需求。 我們選擇DPoS 共識演算法作為解決方案的一部分。
2. 基礎網路
2.1 礦工架構
礦工節點架構繼承IPFS[6]的整體架構,Merkle DAG、IPLD、IPNS 等上層功能被保留,但P2P 引擎被替代,用於改進IPFS 的低效及體驗差的缺點,下表是Galaxy Network 與IPFS/Filecoin [5, 6]的對比:
2.2 通道編碼
IPFS[6]以分塊的方式儲存,檔案 D 被分成M 塊,每個塊離散分佈在不同的節點。與IPFS 不同,Galaxy Network 採用了空間變換,將檔案以塊為單位變換到通道編碼空間,每個塊包含 N個piece, 條帶(stripe)包含M*X 的piece 矩陣,M 為檔案包含的塊數,X 為每個塊包含的piece數,X≤N。Galaxy Network 統一以條帶為儲存物件。從任意N/X 個節點獲得資料後,即可解碼恢復原檔案。
下圖描述了檔案D 編碼的過程:
對檔案 D 以塊為單位透過通道編碼演算法[1,16]進行編碼,輸入 N 個 piece, 輸出 K 個編碼piece, 編碼 piece 各不相同,可以從 K 個 piece 中任意選取 N 個 piece, 即可恢復原始塊。K >N。 通道編碼的演算法複雜度為 O(n), 解碼效能在蘋果 A5 晶片上超過 200Mbps, 比 ReedSolomon 碼(O( )) [4] 快 100 倍以上。
2.3 儲存格式
條帶為礦工儲存格式,條帶的定義如下:
• 每個條帶包含檔案D 的所有塊, 從塊 1 到塊M
• 每個塊從K 中隨機選擇X 個piece, X ∈ {1,2,…, N} • 條帶是一個M * X 的piece 矩陣
• 所有條帶, 均不能出現重複piece
2.4 安全儲存策略
為了保證Galaxy Network 的儲存高可靠性,必須對儲存資料進行一定的冗餘備份,我們定義了一種 2.5 倍冗餘儲存方案:
• 儲存礦工 1 儲存資料D 的一份完整副本R,R 為M * N 的條帶
• 儲存礦工 2~25 儲存資料D 的副本R′,R′ 為 M * N/16 的條帶
• 從儲存礦工 1 下載資料或者從加速礦工 2~25 中隨機挑選 16 個儲存礦工即可恢復D
• 上述形成 1 + 16 + 8 的冗餘儲存方案
礦工的線上率分佈差別極大,在部分礦工線上率低的情況下,1+16+8 冗餘儲存方案並不能保證儲存可靠性達到 99.99999%。因此 Galaxy Network 根據礦工線上率的實際分佈,動態決策資料冗餘的倍數,維持儲存可靠性大於 99.99999%。
2.5 索引結構
在 IPFS 的實現中, 以 Merkle DAG 作為資料的統一索引結構。
其中:
• blob_hash = Hash(blob)
• file_hash = Hash(blob1_hash || blob2_hash || … || blobn_hash)
• 透過key=file_hash 在DHT 網路中定址對應Merkle DAG 物件,找到 Merkle DAG 中包含的 blob 列表
• 透過key=blob_hash 在DHT 網路中定址到對應的blob
IPFS 的索引結構有如下致命的效能缺陷:
• Merkle DAG 是一種資料塊的間接索引機制,當一個檔案被分成很多blob 時,需要多次定址
• DHT 網路的定址時間複雜度為 O( ), Merkle DAG 基於 DHT 定址導致定址時間非常長
• blob 被分散在多個儲存礦工,導致連線效率和傳輸效率極低
在Galaxy Network 中, 基於IPFS Merkle DAG 的索引結構,做出如下改進:
• 保留Merkle DAG 的索引結構不變
• blob_hash 鍵值到seed list 的對映儲存在DHT 網路
• blob_hash 只用於資料去重及驗證資料的完整性,不再用於定址
• 定址以prefix+file_hash 為鍵值建立到seed list 的對映,增加prefix 便於區別file_hash 到merkle DAG 的對映關係,這種定址對映可以一次查詢,返回所有礦工列表
• 儲存礦工及加速礦工儲存條帶,客戶無需與礦工頻繁交換儲存狀態及切換礦工,連線效率及傳輸效率高。
3. 交易市場
3.1 訂單
下列資料結構與交易市場相關,是交易市場的核心資料結構:
儲存訂單:
• size, 提交儲存的檔案大小
• funds, 客戶充值金額
• time, 客戶儲存檔案的最大時長,單位秒
• price, 客戶報價
• sign, 客戶簽名
詢價訂單:
• space, 儲存礦工剩餘的儲存空間
• price, 儲存礦工的報價
• sign, 儲存礦工簽名
交易訂單:
• 儲存訂單
• 詢價訂單
• timestamp, 被儲存礦工簽名的時間戳
• file_hash, 儲存檔案的hash 值
• sign, 客戶及礦工簽名
3.2 儲存市場
儲存市場是可驗證的市場,它允許客戶請求他們的儲存資料和儲存礦工提供他們的儲存空間。儲存市場執行Put 協議:
客戶端
1. 充值:客戶為儲存訂單充值
輸入:
• 檔案雜湊
• 檔案大小
• 充值金額
輸出:
• 返回 0 則表示區塊鏈成功接收充值交易
2. 新增訂單
輸入:
• 儲存訂單
輸出:
• 儲存礦工的詢價訂單列表
處理:
• 客戶從DHT 網路中查詢是否存在重複塊
• 如果存在重複塊,把<file_hash, 儲存礦工>新增到DHT,為該檔案建立索引
• 重新計算所有未重複塊的檔案大小,這些塊是需要提交儲存的
• 客戶向匹配服務提交儲存訂單
• 匹配服務返回儲存礦工的詢價訂單列表
3. 傳送資料
輸入:
• 儲存訂單
• 詢價訂單
• 資料p
• file_hash
輸出:客戶簽名的交易訂單
處理:
• 傳送資料<file_hash, p, 儲存訂單, 詢價訂單>到儲存儲存礦工
• 接收到儲存礦工的交易訂單
• 驗證交易訂單的有效性
• 客戶簽名交易訂單,傳送交易訂單到區塊鏈
儲存礦工
1. 抵押
輸入:
• 抵押金額
輸出:
• 輸出 0 表示成功
2. 接收資料
輸入:
• 儲存礦工私鑰
• 儲存訂單
• 詢價訂單
• 資料p
• file_hash
輸出:
• 儲存礦工簽名的交易訂單
處理:
• 驗證儲存訂單的合法性
• 編碼資料 R= entropy_encode(p), 儲存R
• 簽名交易訂單,傳送給客戶
• 把<file_hash, 儲存礦工> 新增到DHT 網路,建立索引
3. 生成儲存證明
輸入:
• N: 表示該檔案被分割成多少塊
• k:表示每一個儲存礦工在儲存後必須上報的儲存證明檔案子塊數
• Z: 表示當前區塊鏈最後一個區塊的雜湊值
• s: 表示為隨機數
• pk/sk 儲存礦工公私鑰對
輸出:
• 輸出儲存證明到驗證服務
匹配服務
4. 匹配訂單
輸入:
• 儲存訂單
輸出:
• 儲存礦工詢價訂單列表
處理:
• 在所有儲存礦工中找出符合條件的詢價訂單
· 儲存礦工剩餘儲存空間大於儲存訂單檔案大小
· 儲存礦工報價小於等於儲存訂單的報價
· 在滿足上述條件的儲存礦工中執行如下演算法,找出score最大的儲存礦工提供儲存服務
· 線上率 online_ratio: 儲存礦工24小時線上率
· pledge:儲存空間抵押
· pledge_avg: 所有儲存礦工抵押的平均值
· NAT型別評分 nat_score:
· 公網IP地址 :100
· Full coneNAT : 50
·IP 限制型NAT :30
· 埠限制型NAT:10
· 對稱型NAT :0
· proof_succ_score:儲存礦工所有儲存證明成功率
· score = online_ratio * 40 + (pledge / pledge_avg) * 30 + nat_score * 20+proof_succ_score * 10
• 返回score 最大的 3 個詢價訂單列表
驗證服務
5. 儲存挑戰
輸入:
• 交易訂單
• k:表示每一個儲存礦工在儲存後必須上報的儲存證明檔案子塊數
• Z: 表示當前區塊鏈最後一個區塊的雜湊值
• s: 表示為隨機數
輸出:
• 0:成功,1:失敗或超時
處理:
• 根據交易訂單生成儲存挑戰
• 接收儲存礦工的儲存證明
• 驗證儲存證明是否合法,超時沒接收到儲存證明判定失敗
• 把儲存證明驗證結果傳送給清算系統
清算服務
6. 接收儲存證明
輸入:
• 儲存證明驗證結果
輸出:
• 無
處理:
• 接收儲存證明驗證結果
• 歸併成功的儲存證明,生成賬單,傳送給智慧合約進行支付
• 失敗的儲存證明,傳送給智慧合約扣除儲存礦工部分抵押
推送服務
7. 安全備份策略
輸入:
• file_hash :檔案的加密雜湊值,用於索引該檔案
• 儲存礦工列表
• 條帶中每個塊包含的piece 數
輸出:
• 無
處理:
• 推送服務執行 1+16+8 安全備份策略,其中一份完整資料副本已儲存在第一個儲存礦工上,另外 24 份條帶推送到 24 個儲存礦工或加速礦工
• 推送服務根據file_hash 下載該檔案的完整資料副本R
• 對下載的資料進行解碼,恢復原始資料,D=entropy_decode(R) [1,16] • 對 D 進行編碼,生成儲存礦工需要的條帶
• 以 piece 為單位增加 1 位元組校驗碼
• 推送條帶到儲存礦工
3.3 加速市場
Get 協議執行週期:
客戶端
1. 下載訂單
輸入:
• file_hash
輸出:
• 檔案D
處理:
• 客戶向智慧合約充值
• 客戶根據file_hash 從DHT 網路獲取礦工列表(儲存礦工、超級加速礦工、加速礦工)
• 客戶傳送訂單請求到礦工,獲得礦工報價
• 為提升啟動階段的響應速度,優先挑選儲存礦工及超級加速礦工下載資料,在儲存礦工及超級加速礦工列表中挑選價格低的提供服務
• 加速礦工連線建立成功後,利用加速礦工替換儲存礦工及超級加速礦工
• 在加速礦工中選擇報價低的提供服務
• 接收加速礦工資料及流量證明
•客戶簽名後,傳送簽名後的流量證明到加速礦工
•收到流量證明後,加速礦工繼續推送資料到客戶
• 客戶發現部分加速礦工的傳輸質量不能滿足實時性時,終止與該加速礦工的交易,重新挑選其它加速礦工提供服務
• 如果出現加速礦工攻擊行為,偽造及篡改資料,客戶編碼接收資料成功後,校驗哪些加速礦工提交偽造資料,把加速礦工加入黑名單
• 客戶下載資料成功後提交給上層應用
加速礦工
2. 接收下載訂單
輸入:
• 客戶下載訂單
輸出:
• 詢價訂單
處理:
• 加速礦工接收到客戶的下載訂單後,發回詢價訂單
• 加速礦工接收到客戶的下載請求,傳送小片資料,同時傳送經加速礦工簽名的流量證明
• 接收到客戶簽名的流量證明
• 加速礦工繼續向客戶傳送小片資料
• 加速礦工提交流量證明到清算系統
清算
3. 接收流量證明
輸入:
• 加速礦工流量證明
輸出:
• 無
處理:
• 接收加速礦工流量證明
• 歸併碎片化流量證明,生成賬單
• 歸檔流量證明到Galaxy Network 儲存網路,供第三方公開審計
• 提交賬單到智慧合約,完成支付
3.4 Push 協議
AI 資料平臺
1. 接收狀態彙報
輸入:
• 加速礦工彙報剩餘儲存空間、條帶列表、NAT 型別
• 客戶端彙報下載檔案列表
• P2P%(P2P%=加速礦工流量/(加速礦工流量+超級加速礦工流量+儲存礦工流量)
輸出:
• 無
處理:
• 對接收到的資料進行清洗,存入本地LevelDB
• 把清洗後的資料儲存在Galaxy Network 儲存網路,可以供第三方公開訪問
2. 智慧決策
輸入:
• 清洗後的資料
輸出:
• 增加推送
• 刪除快取
處理:
• 根據下述維度進行決策
檔案訪問頻度
客戶訪問地理分佈
加速礦工剩餘儲存空間
加速礦工線上時長
加速礦工 NAT 型別
P2P%
• 刪除快取
統計全網加速礦工剩餘儲存空間,剩餘儲存空間< 10% * 總儲存空間,執行刪除策略
基於LRU 演算法篩選冷檔案
刪除加速礦工上儲存的冷檔案條帶
• 增加推送
根據檔案訪問頻度、P2P%、該檔案條帶數量決策是否要增加推送及推送數量
決策推送後,根據客戶訪問地理分佈、加速礦工線上時長、加速礦工NAT 型別、加速礦工剩餘儲存空間,挑選出合適的加速礦工列表
把決策結果通知到推送服務
推送服務
3. 接收推送命令
輸入:
• file_hash :檔案的加密雜湊值,用於索引該檔案
• 加速礦工列表
• 條帶中每個塊包含的piece 數
輸出:
• 無
處理:
• 推送服務根據file_hash 下載該檔案D 的完整資料副本R
• 對下載的資料進行解碼,恢復原始資料,D=entropy_decode(R) [1,16] • 對 D 進行編碼,生成推送給加速礦工的條帶
• 以 piece 為單位增加校驗碼
• 推送條帶到加速礦工
加速礦工
4. 接收資料
輸入:
• 編碼後的條帶
• 條帶中每個塊包含的piece 數量
• file_hash :檔案的加密雜湊值,用於索引該檔案
輸出:
• 無
處理:
• 校驗接收到的piece,校驗失敗則丟棄
• 儲存校驗成功的條帶
• 提交<file_hash, 加速礦工>到DHT 網路
4. 儲存證明 (Proof-Of-Capacity)
在 Galaxy Network 中,儲存礦工必須讓他們的客戶相信,客戶付費的資料已經被儲存礦工儲存,因此,儲存礦工必須接受客戶或Galaxy Network 的挑戰,儲存礦工基於挑戰生成儲存證明給Galaxy Network 或客戶來驗證。
4.1 動機
儲存證明允許使用者(驗證者V)將資料外包給儲存礦工(即證明人 P),使用者(驗證者 V)可以反覆檢查儲存礦工是否依然儲存資料D。使用者可以用比下載資料高效的方式來驗證儲存在儲存礦工的資料完整性。儲存礦工(證明人P)透過對一組隨機資料塊進行取樣和提交小量資料來生成擁有 的概率證明作為給使用者的響應。
我們需要強大的演算法阻止作惡礦工利用下面三種型別攻擊而獲得獎勵:女巫攻擊(Sybilattack)、外包攻擊(outsourcing attacks)、生成攻擊(generation attacks)
女巫攻擊:
作惡礦工可能透過建立多個女巫身份假裝物理儲存很多副本,但實際上只儲存一次。
外包攻擊:
作惡礦工在挑戰時可以快速從其他儲存礦工獲取資料,作惡礦工可能承諾能儲存比他們實際物理儲存容量更大的資料。
生成攻擊:
作惡礦工可能宣稱要儲存大量的資料,但是他們使用小程式有效地生成資料。如果這個小程式小於所宣稱要儲存的資料,則作惡礦工獲得的獎勵增加。
4.2 儲存證明
容量證明(PoC)[5, 10]是一個新型的儲存證明。它允許儲存礦工(即證明人 P)說服使用者(即驗證者V)一些資料D 已被儲存到它唯一的專用物理儲存上了。我們的方案是一種互動式協議。當證明人 P:
a) 承諾儲存資料D 的n 個不同的副本R(獨立物理副本),然後
b) 透過響應協議來說服驗證者V,P 確實已經儲存了每個副本