作者:Chloe,IOSG Associate
本文僅做行業學習交流之用,不構成任何投資建議
“求種子”時代的存儲協議:BitTorrent
說起BitTorrent,很多人會覺得陌生。但提到下載“種子”,相信不少人能回想起幾年前為了玩遊戲或看電影在網絡上到處“求種子”的情景,這裡的種子就是BitTorrent的下載術語。種子文件就是記載下載文件的存放位置、大小、下載服務器的地址、發布者的地址等數據的一個索引文件。
簡單來說,BitTorrent是一種P2P下載協議,比起傳統的從網站服務器下載的方式要高效許多。舉一個形象的例子,學生時代班裡的同學聚在一起抄作業,但只有一個同學寫了作業,其他所有同學都要抄這一份答案。每個同學抄作業的速度不一樣,一旦想抄作業的人多起來,這個流程就很難進行。因此普遍的做法是,一些同學抄選擇題,一些同學抄填空題,一些同學抄問答題,然後大家換著抄,效率一下就上去了。
BitTorrent原理和“抄作業“類似,每個需要下載文件的用戶只下載文件的一部分,在下載的同時,我們的電腦會充當服務器將下載的此部分文件傳輸給其他的用戶。也就是說在我們下載的同時,我們也在上傳(別人從我們的電腦上下載的部分),**所以說在享受別人提供的下載的同時,我們也在貢獻。 **因此下載這個文件的用戶越多,種子就越多,同步進行的速度越快,下載的速度也會越快。
去中心化存儲的先行者:IPFS
儘管大大提升了下載效率,BitTorrent仍然存在一些問題,為了優化這些問題,就不得不提到IPFS。相信許多讀者一定更熟悉IPFS,現在鼎鼎大名的去中心化存儲項目例如Arweave和Filecoin,就是以IPFS為基礎建立的。 IPFS的中文譯為星際文件系統,是一個可分佈式存儲且共享文件的網絡傳輸協議。
用BitTorrent下載時必須使用種子文件,用戶需要將所有下載內容的地址放在這個種子文件當中才能進行下載。 IPFS的顯著優勢之一是採用了DAG數據結構存儲數據,這種數據結構的好處體現在:IPFS是以**基於內容而不是基於地址的尋址方式存儲和尋找文件的。 **這意味著如果我們要尋找一個文件,我們不需要知道它在哪裡,只需要知道它包含的是什麼內容。 IPFS會為每個文件生成一個唯一的哈希值(例如QmSNssW5a9S3KVRCYMemjsTByrNNrtXFnxNYLfmDr9Vaan),當用戶需要檢索這個文件時,只需要問IPFS誰有這個哈希(QmS…Vaan)就可以完成檢索。因為哈希值能防止重複存儲,所以相同內容的文件不會被IPFS重複存儲。這樣的做法優化了存儲,也提高了網絡性能。
動態存儲的解決方案:Ceramic
通過上述描述,細心的讀者可能會發現IPFS存在一個巨大的缺陷。在IPFS中,文件一旦被存儲是不能在系統中修改的,因為修改文件內容會改變文件的哈希值,用戶無法通過原始的哈希值找到更改的文件。這是IPFS被大家所詬病的一個痛點:**不善於存儲需要隨時更新升級的文件。 **因此,人們急需一種高效且去中心化存儲動態數據的解決方案。
值得慶幸的是,人們對這個賽道的探索已經開始了。關注Web 3.0、SocialFi或者DID的朋友一定聽聞過這個項目的大名——Ceramic。 Ceramic是一個用於創建、託管和共享數據的去中心化開源平台,不少DID和Social Graph都是基於Ceramic上構建的。前文提到,IPFS在存儲靜態文件方面表現良好,但其本身缺乏計算和狀態管理能力,無法實現更高級的類似數據庫的功能,例如可變性、版本控制、訪問控制和可編程邏輯。而Cermaic的出現,使得以上問題得到了一定程度的解決。
高效的版本控制
在Ceramic裡,每條存儲信息都表示為可疊加的log(計算機裡記錄程序運行情況的日誌文件),稱為一個Stream。 Stream在概念上類似於Git。 **Git是一個開源的分佈式版本控制系統,可以有效、高速地處理大大小小的項目版本管理,是目前最流行的版本控制軟件,可用來存儲代碼、跟踪修訂歷史記錄、合併代碼更改,恢復為較早的代碼版本等等。 **Git處理數據時像一個“快照”,這與我們用google docs共享文檔並查看歷史版本有一點相似。每當你提交更新或保存數據狀態時,它就會對當時的全部文件創建一個快照並保存這個快照的索引。如果文件沒有修改,Git 不再重新存儲該文件,而是只保留一個鏈接指向之前存儲的文件,大大提高了效率。
實際上,IPFS上也可以使用Git來存儲動態數據。但是開發者需要在Git里新建一個hash-log文件,用以記錄每次Git log和IPFS哈希更新的映射表,並且需要手動保持同步動態,或者運用IPNS命名系統保持動態更新。這樣的操作費時費力,效率很低。
**Ceramic採用了“疊加log”的方式,StreamID不會根據內容改變而改變,因此可以非常便捷地存儲修改版本或者回溯之前的版本,不必再頻繁更改哈希值。 **此外,Ceramic在其他存儲協議之上搭建了一層新的layer,意味著其可組合性很高。用戶可以自行選擇將數據存儲在哪裡,包括去中心化的Arweave、Filecoin,中心化的AWS等等,都可以利用Ceramic實現自動化版本控制。並且因為每個Stream只存儲log而不是數據,Ceramic不需要一個global ledger來全局同步數據狀態,因此Ceramic的橫向可擴展性是非常高的。
便捷的身份驗證和訪問控制
除了版本控制的優勢之外,Ceramic還提供了非常便捷的身份驗證和訪問控制。當新數據要被添加進Stream時,修改者需要驗證身份,否則將不能對數據進行修改。 **不同的Stream可以要求不同的身份驗證機制,而Ceramic提供了非常強大的內嵌身份驗證機制—— DID。 **例如適合終端用戶的3ID DID,適合開發者的key DID,支持用NFT進行身份驗證的NFT DID和適合DAO等需要多重身份驗證的Safe DID等,保障了數據的安全性。同時,Ceramic還賦予了Stream可編程邏輯,例如如果Stream A狀態改變,則Stream B可被訪問並且升級等等。
Ceramic的出現極大賦能了Web 3.0的建設。目前已經有很多DID以及Web3.0社交平台項目在Ceramic上開發。值得關注的有Social Graph Middleware平台CyberConnect,Web3.0 Twitter的Orbis,即時通訊平台The Convo Space等等。我們很期待Ceramic的基礎設施能夠給應用層帶來的新的可能。