今天和大家要聊的話題:關于IPFS存儲的思考。此篇文章和區塊鏈關系不大,因為IPFS本身不屬于區塊鏈技術,但是它和區塊鏈進行耦合是目前一種極佳的場景,今天的1000字,我會從IPFS耦合區塊鏈方案和IPFS文件存儲引發的思考兩個維度講解。篇幅有限,以下不再普及概念相關問題。
IPFS耦合區塊鏈
IPFS耦合區塊鏈最能解決大文件上鏈存儲的問題。大家知道,區塊鏈存的是交易,而每個區塊是有大小限制的,比如BTC是1M左右,中間還引發了閃電網絡和BCH的故事,所以區塊的大小直接限制了交易的大小。比如甲給已轉了1個比特幣,就是一筆交易記錄到區塊鏈上,這幾個字段可能就幾字節而已。而實際落地場景中,遠不是存轉賬這么簡單,對于一個業務稍微復雜的聯盟鏈來講,我們所謂的“交易”可能是一個物流信息、一個合同摘要或者一份操作記錄等等,但是繞不開的話題是:這個“交易”大小的限制。這里給大家一個參考,目前行業認可的一筆交易控制在100K以內是個極佳狀態,若再大,或者把交易拆分或者選擇部分核心數據上鏈,剔除掉不重要的數據。
講完存儲方式,那IPFS是如何耦合的呢?其實對于90%以上的場景,IPFS僅僅用來解決了非結構化數據上鏈的問題。什么是非結構化數據?比如一部電影、一張照片就是非結構化數據,大家可想而知,一部高清電影的起步都是G級別的,這東西上鏈是不可能的,所以就要用到IPFS技術:大文件分片后文件會得到一個幾K大小的hash值,當基于這個hash提取文件的時候,IPFS首選會有一個分布式hash對照表,然后再去相應的節點拉取所有分片,組合成一部完整的電影,而這個幾K的hash值是可以上鏈的。這樣,區塊鏈存操作指紋和非結構化數據的hash值,就能解決區塊鏈大文件存儲的問題了。
以上就是常用的策略,總結一下:第一:區塊鏈存儲的都是交易,而交易的大小是有限制的;第二,區塊鏈不可能存大的非結構化數據,IPFS的加入,使這個問題成為可能。一般講到這里,客戶是能接受這個方案的,但也不要忘記IPFS自身的各種缺陷(尤其是網絡穿透問題),就如區塊鏈缺陷一樣,這不打算講,大家可以自行百度,接下來講一下IPFS文件存儲引發的思考。
IPFS文件存儲引發的思考
既然《爆擊區塊鏈3.0》,我們就要落實更多維度的思考,下面說重點。
IPFS還可以縱向切分結構化數據。什么是結構化數據?簡單來說:比如一張表記錄了“誰、什么時間、干了什么”等等,這就是結構化數據。我們可以用IPFS玩什么呢?縱向分片切分!繼續打比方,比如我記錄一個結構化數據,其中有七個字段,分別是:1(姓名)、2(年齡)、3(性別)、4(身高)、5(轉賬金額)、6(轉賬狀態)、7(接收者)。為了保障數據的安全,我們慣用的做法是把這7個字段統一打包后,打散分片到不同的服務器上,這是最簡單的思路。其實,還可以這樣玩:我可以把字段1/3/5字段打一個包、2/4/6字段打一個包、7字段單獨打一個包,再把三個包分片到不同的服務器上,就會分別形成三個子hash,這樣能看1/3/5或者2/4/6或者7字段的用戶得到對應的子hash就可以了;再延伸一下,為了安全,還可以進一步設定子三個子hash必須拼湊到一起才可以看到7個字段的數據。所以,一個單純的IPFS(非區塊鏈技術)就可以玩出很多類似“授權”和“數據更安全”的花樣出來!