分散式儲存區塊鏈系統:人類未來的資料基礎設施?

買賣虛擬貨幣
透過提供分散式儲存的區塊鏈系統,資料製造者可以維護自己生產的資料,這是一個開始,更進一步,資料製造者可以透過不同的的方法和渠道來實現資料的收益,與此同時,我們也可以透過這樣的方式從機器人手中分享資料。一個擁有自己資料的所有權,並能夠實現資料自由交易的未來,是一個值得為之努力的更好的未來。撰文:吳為龍,Genaro聯合創始人Genaro聯合創始人、趣派科技技術長。曾為矽谷美信整合公司的核心開發者,併為三星提供演算法,後投身於區塊鏈研發,是第一批區塊鏈開發者和具備豐富創新經歷的技術極客,經驗涉及區塊鏈虛擬機器、P2P儲存、共識演算法等諸多底層技術。人的每一次行為都會在世界上產生一系列的記錄,一些是以記憶的方式被記錄下來的,比如結婚紀念日發生了什麼有趣的事情;另外一些是以資料的形式被記錄下來的,比如在那一天,購買了什麼紀念品、在什麼餐廳用餐。在網際網路時代,後者會被各種應用記錄下來,保留在公司的資料庫中,再透過一系列的計算被使用。比如一個使用攜程訂酒店的人,會發現訂完酒店後送的打折券正好是自己想要消費的一些遊樂園區。
網際網路公司透過利用使用者資料來最大化公司的利益,如果一個人每個月的收入是15000元,在交付房租3000元后,所有的網際網路公司都在透過對這個人資料的分析想辦法將他兜裡剩下的12000元榨乾淨。這種方式已經滲透到每個人生活中的每一個環節,它從側面反映出個人行為記錄是有資料價值的,使用者的每一次行為都讓網際網路公司更瞭解他個人的消費習慣和消費能力。這些有價值的資料是被網際網路公司直接免費拿走並使用的,我們可以將這樣的資料價值保留下來嗎?用現在最流行的話講就是,可以用區塊鏈試一下。1. 實現資料價值的基礎設施當我們談到資料價值的時候,需要先小小的計算一下資料的體量。如果每一個人一次消費產生80byte的記錄(按照信用卡和儲蓄卡ETF 80 byte file要求),每人每天按5次消費計算,僅僅計算2億的中國城市人口,就會發現每天產生的消費記錄資料為80GB,按照網際網路資料公司3個月左右開始畫像的話,則是7.2TB資料。那麼在消費次數、消費人數、資料積攢時長增加的時候,這類資料會以很快的速度達到PB級別。這些資料能夠被一般意義上的區塊鏈系統儲存並處理嗎?不能。一般意義上的區塊鏈系統,或者說大多數的公鏈,它是這樣一種分散式系統:系統中的每臺計算機都需要儲存同樣的檔案,以保證系統的功能。顯而易見,它們是無法提供PB級別的儲存空間將資料價值保留在上面的。
所以我們需要將資料儲存在分散式儲存系統中,再透過區塊鏈的結算功能性實現資料價值。簡單來講就是將儲存部署在分散式儲存系統中的同時,將狀態留在區塊鏈上,以待之後的處理和使用。這其中,分散式儲存是指透過不同的加密方式把資料儲存起來,確保資料和鏈上的賬號一一對應,在未來的使用中,利用不同的加密計算工具對資料進行快速的呼叫和處理,而在資料製造和計算時,都可以做到半匿名的方式。相較於傳統網際網路的Dropbox,因為結合了區塊鏈來儲存資料,在金鑰的功能性和本地私密性之外,能夠增加額外的處理功能介面,以滿足資料分享和計算的需求,從而幫助資料更好地分發和拓展,實現資料的價值。而「狀態」則是指資料來源以及資料的改變,或者資料運算的結果。將這些狀態留在區塊鏈上是為了對其運算和改變可以追溯,這樣可以更好的知道哪些資料更有價值,並透過即時的結算給出對應的價值。所以我們說,只有將區塊鏈系統與分散式儲存系統這兩種分散式系統相結合,而不是單純的只使用區塊鏈系統,才有可能實現資料的價值,而實現了可以使用分散式儲存系統中的資料的區塊鏈系統,是一種從設計到實現上都不同於一般公鏈系統的區塊鏈系統。不過,除了區塊鏈系統與分散式儲存相結合實現資料價值的方式之外,我們還可以從另一個角度探索資料價值的實現,即只用區塊鏈作為結算賬本,把資料放在本地,在完成本地計算後將結果放在區塊鏈上。此時本地計算需要可信計算作為一個媒介,同時需要考慮預言機問題,這部分可以參考現有的可信計算專案的解決方案。2. 詳解「區塊鏈系統」與「分散式儲存系統」
為了更清楚的理解提供分散式儲存的區塊鏈系統,我們先剖析一下「區塊鏈系統」和「分散式儲存系統」。區塊鏈是透過分散式節點的儲存資源,對全網全節點進行儲存同步,並透過相應的共識技術保證內部節點對儲存內容更改的有效性,維護一個完整的可查詢的資料庫。在此係統中,儲存的都是鏈內生成賬戶之間餘額的更改或者總剩餘,當然,更完善的一些系統功能也包括儲存了多個賬戶對資料庫中子賬目的資料狀態維護。因此,該系統的主要功能是記錄狀態的改變,然後同步。對節點來說,無論是PoW,PoS還是PoX,其核心的要求就是遵循特定的投票規則,將新的變動同步在所有節點的儲存中。如果一個系統使用的是區塊鏈結構,那麼它是不支援使用者個人資料,或者說不支援我們希望實現價值的資料的,區塊鏈上的資料是賬戶資料以及結算資料,這些資料是完全相同的儲存到每一個節點的。那麼什麼又是分散式儲存系統呢?分散式儲存系統是分享分散式節點的儲存資源,透過檔案完整性證明和糾刪碼校驗技術對資料儲存方的資料進行分散式管理,全網的節點並不維護相同的儲存資訊得以降低冗餘的一種分散式系統(區塊鏈系統中全網的節點維護相同的儲存資訊)。
回到本文一開始提到的消費資料的例子,現有的網際網路公司是透過資料的分散式儲存,透過RAFT和多級災備等方式,做適當備份來保證資料不丟失,建立起一個能儲存海量資料,並有效率、低開銷的系統。也就是說在分散式儲存系統這個部分,幾乎所有的公司都達成一個共識,就是分散式儲存是現階段實現大量資料儲存的最好的一種方法。無論區塊鏈存在不存在,分散式儲存系統已經是一個相對來說比較完善、並且已經廣泛用在實際生活中的系統了。3. 提供分散式儲存的區塊鏈系統在釐清區塊鏈系統和分散式儲存系統這兩種不同的分散式系統後,我們接著討論提供分散式儲存的區塊鏈系統。提供分散式儲存的區塊鏈系統是一種不同於一般公鏈的區塊鏈系統,它是分散式儲存+特殊的區塊鏈系統設計。一個普通的區塊鏈系統,其核心邏輯在於覆蓋所有與賬戶有關的交易屬性上,比如賬戶(公私鑰)、賬戶轉賬(簽名系統和共識系統)、以及條件狀態下的轉賬(操作碼和其對應的編碼方式)。而一個提供資料儲存的區塊鏈系統除了需要覆蓋以上三個屬性之外,由於其提供了儲存屬性,為了確儲存儲的狀態未來也可以對條件進行制約,需要在其操作碼上進行判斷邏輯的新增,以保證將儲存產生的狀態、資料支援的狀態都能在鏈上得到追溯,這就是我們需要對提供儲存的區塊鏈系統進行特殊設計的原因。
具體而言就是,區塊鏈是需要對特定條件下的資料狀態進行維護的,狀態被保護起來才能保證交易正確之後狀態相應改變了。那麼如果分散式儲存的狀態沒有透過相應的設計與區塊鏈系統結合的話,就會出現自動執行的一個空隙,如果狀態的空隙被人利用的話,就會出現儲存過程狀態提前被記錄,或者滯後被記錄,這會影響到區塊鏈系統中賬戶餘額,也就是產生了系統不安全的空間。因此,提供分散式儲存的區塊鏈系統和一般公鏈系統不同的部分主要就體現在「狀態」這部分,記錄某些狀態並作出賬戶上的反饋。另外,儲存相關狀態也使得智慧合約可以及時獲取狀態,從而可以設計出一個能夠使用外部資料的子賬本,這樣在工程上能更好的流程化,也會降低使用者由於預言機導致的鏈上資產損失的可能性。4. 分散式儲存系統的設計和挑戰在介紹完基本的概念後,接下來介紹系統的設計和實現。為了清晰,先討論分散式儲存系統的設計,再討論提供分散式儲存的區塊鏈系統的設計。分散式儲存系統的設計主要解決三個問題:檔案如何安全放入;檔案如何安全儲存;檔案如何不被儲存提供方「偷走」。
1.檔案如何安全放入把資料在客戶端上傳前做加密和分割,透過分散式儲存的分發方式上傳到儲存提供方的空間內,透過相關的儲存心跳檢測來保證在使用者需要資料的時候可以完整的取回。在整個過程中,使用者的資料在本地就已進行加密,使用者不需要擔心資料被偷窺以及儲存提供方沒有承擔明文儲存的風險。2.檔案如何安全儲存根據分散式儲存的冗餘儲存原理,一般來說對應一個資源,如果要保證任意兩個節點(N=2)掉線依舊不影響系統可用性,就需要維護2N+1個資源數。也就是說一份檔案需要存給5臺伺服器。按照12個節點為一個批次的設計,那麼任意5個節點掉線是不影響可用性的,但是如果遭遇重放攻擊,也就是加密後資源被不合理地配置,攻擊節點是可以透過某些方法來阻止檔案被安全召回的。這就需要對分發方式進行設計,來保障安全的儲存。
此外在儲存期間,可以透過相關的評分系統對節點質量進行評分,保證除了共識節點之外提供分散式儲存服務的節點的質量。3.檔案如何不被儲存提供方「偷走」首先,資料是在使用者本地機器上的客戶端加密的,這樣確保了上傳之前的檔案已經被加密,儲存方是無法看到使用者資料的。其次,在冗餘儲存的部分,每個儲存提供方的通訊目錄中不會包含所有的檔案碎片儲存方,這樣也一定程度上防止了共謀的可能性。在解決了以上這三個問題後,該系統就能夠被稱為一個安全的分散式儲存系統,可以提供分散式儲存服務了。在整個過程中,設計一個合理的分散式儲存可取回校驗方式是比較大的挑戰,它的要求不只是透過問詢達到返回結果的可靠,還要透過特殊方式預防重放攻擊試探以及攻擊,提高儲存系統的可用性。5. 提供分散式儲存的區塊鏈系統的設計和實現
提供分散式儲存的區塊鏈系統主要面向兩個物件,一是節點,透過提供儲存參與分散式系統的建立,其參與的程度、節點質量的好壞主要反映在提供的儲存上;二是使用者,透過智慧合約獲得儲存的狀態,並進行賬戶的收轉賬。那麼需要建立一個體系,在這個體系中,節點的儲存質量決定了節點能否獲得更優的收益,使用者可以在智慧合約中使用儲存的狀態。該系統的特殊設計主要在兩個部分,一個在技術部分,主要是解決使用功能性的問題;一個在治理部分,主要解決分散式服務供給方質量的問題。從技術的角度,支援分散式儲存的區塊鏈系統需要的是對儲存狀態的更新,以及方便使用,所以需要在原有的虛擬機器基礎上,增添相應的操作碼以及對應的狀態邏輯,保證聯動時不會造成狀態洩露。從治理的角度,由於使用了儲存這種低功耗的資源,那麼在共識上需要對PoS做修改,使用混合共識,節點除了抵押鏈上資產,還需要對儲存系統進行相關的貢獻才能出塊。這樣做的好處是:由於儲存本身無法產生特別大的收益,那麼透過出塊收益來補貼提供較大貢獻的節點,能夠激勵節點提供穩定的儲存。如果節點達不到出塊標準,也可以透過共建出塊節點的方式在鏈內部參與到節點建設中,保證可信任的抵押出塊節點能夠在出塊的列表內。除了上述兩個角度之外,從經濟模型的角度,需要在每一次儲存量提升之後,透過帕累託分佈對Staking條件進行微調,保證整個系統的抵押分佈不會停滯在某一個儲存階段。一系列這樣的調整和更新才能保證整個儲存生態的正向發展。
6. 資料的使用支援分散式儲存的區塊鏈系統能夠提供安全的方法儲存並使用每個人生產的寶貴資料,並保證使用者對其資料的所有權。只有在此基礎上,才能進而透過工具,讓使用者獲得這些屬於他的資料的價值。要實現資料的價值,涉及到如何對儲存後的資料進行計算,以及將計算結果進行充分利用等等問題,需要藉助於可信計算和更前沿的技術來實現,這是一個需要單獨探討的話題,本文將不做具體討論。在現階段,系統中的資料可透過如下兩種方法被使用:1、智慧合約。可記錄狀態的儲存可以豐富智慧合約的廣度,智慧合約在得到資料的支援後,能夠產生新的用途,出現新的型別,進而可能帶來全新的生態。2、跨鏈。該系統可為其他的區塊鏈系統提供分散式的資料儲存服務,也可以對其他區塊鏈的鏈上狀態進行相關的再處理。
透過提供分散式儲存的區塊鏈系統,資料製造者可以維護自己生產的資料,這是一個開始,更進一步,資料製造者可以透過不同的的方法和渠道來實現資料的收益,與此同時,我們也可以透過這樣的方式從機器人手中分享資料。一個擁有自己資料的所有權,並能夠實現資料自由交易的未來,是一個值得為之努力的更好的未來。

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;