通過提供分布式存儲的區塊鏈系統,數據制造者可以維護自己生產的數據,這是一個開始,更進一步,數據制造者可以通過不同的的方法和渠道來實現數據的收益,與此同時,我們也可以通過這樣的方式從機器人手中分享數據。
一個擁有自己數據的所有權,并能夠實現數據自由交易的未來,是一個值得為之努力的更好的未來。
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、智能合約??捎涗洜顟B的存儲可以豐富智能合約的廣度,智能合約在得到數據的支持后,能夠產生新的用途,出現新的類型,進而可能帶來全新的生態。
2、跨鏈。該系統可為其他的區塊鏈系統提供分布式的數據存儲服務,也可以對其他區塊鏈的鏈上狀態進行相關的再處理。
通過提供分布式存儲的區塊鏈系統,數據制造者可以維護自己生產的數據,這是一個開始,更進一步,數據制造者可以通過不同的的方法和渠道來實現數據的收益,與此同時,我們也可以通過這樣的方式從機器人手中分享數據。
一個擁有自己數據的所有權,并能夠實現數據自由交易的未來,是一個值得為之努力的更好的未來。
評論
查看更多