Blockstack是如何解決中心化存儲問題的
我們先理解傳統(tǒng)的web或移動app如何與存儲交互。每當用戶登錄到app時,app從遠程存儲器中獲取用戶數據并將其顯示給用戶。所有復雜的計算都運行在云服務器上,而不是客戶端上,客戶端充當一個簡易的顯示終端。
下面是兩個虛構角色Alice和Bob與傳統(tǒng)web/移動app交互的例子。
假設我們有兩個用戶Alice和Bob。他們都有 App:Whatsapp,Facebook 或者 Snapshot。他們與App的提供者交互。這些App基本上運行SQL或者其他數據庫為用戶提供服務。當Alice想要使用即時通訊應用與Bob交互時,Alice將消息發(fā)送給服務提供者,而服務提供者將消息發(fā)送給Bob。
例如,Alice首先向存儲服務器發(fā)送信息“Hi”,然后存儲服務器將信息發(fā)送給Bob。交互路徑是 Alice→存儲服務器→Bob,Alice←→Bob之間沒有直接路徑。這是個中心化的過程,服務提供者代表Alice和Bob傳遞數據,并控制如何共享數據。Alice和Bob都是通過查詢中新心服務器來查找彼此的消息。服務提供者總是信任的唯一來源。
中心化存儲帶來的問題
1.讀取寫入數據與用戶身份標識沒有嚴格關聯。 不能保證Bob收到的消息確實來自于Alice,或者消息是篡改的。而且,這些大公司也并不是免費提供服務的。他們向廣告商出售用戶數據,從用戶數據中牟利。這樣,他們可以更好地鎖定潛在客戶。在某些情況下,他們的做法是違法的:德國一家法院本月剛剛裁定,Facebook非法收集數據,違反了消費者相關的法律。
2. 用戶不能選擇不同的存儲提供者 ,只有app才能選擇存儲器以及把用戶數據保存在什么位置
3.用戶無法控制誰查看他們的數據,存儲器總是可以查看他們的數據
Blockstack 如何解決中心化存儲問題
以便使用戶能夠控制自己的數據,并嚴格地將自己的數據與用戶身份標識關聯起來。Blockstack提供了去中心化存儲系統(tǒng)(Gaia)和區(qū)塊鏈命名系統(tǒng)(blockchain naming system即BNS)。用戶可以使用BNS提供的數字身份登錄到blockstack App。用戶數據將與用戶公鑰強關聯。App將代表用戶讀寫數據到Gaia hub(當且僅當用戶允許時)。所有用戶數據將被傳輸到他們的Gaia hub。Gaia hub可以由用戶自己擁有,也可以使用blockstack提供的默認存儲空間。blockstack 在默認情況下,hub用于存儲由用戶的公鑰加密的用戶數據。這樣,存儲器只能看到加密好的數據塊。
介紹 Gaia
Gaia是由完全由用戶擁有的存儲,用戶決定誰能看到它,并將其寫入存儲。他們可以隨時更改存儲器。它是基于驅動程序模型構建的分布式高性能存儲系統(tǒng),支持許多存儲服務。它是基于驅動程序模型構建的分布式高性能存儲系統(tǒng),支持許多存儲服務。只需做很少的工作,開發(fā)人員就可以通過Gaia為Dropbox、azure、S3 實現存儲。
Gaia vs IPFS:Gaia和IPFS的主要區(qū)別在于,Gaia用戶對他們的數據的控制權,但在IPFS中有一個開放的網絡,你的數據被放置在不同的人的設備上。
Blockstack app 如何存儲數據以及用戶如何控制自己的數據?
假設現在Alice正在使用一個blockstack 消息App。她使用自己的Gaia服務和她自己的公鑰進行交互。Bob有相同的App。Alice和Bob都想和對方交流。為了相互通信,Alice 的 Gaia服務和Bob 的Gaia服務之間必須有讀/寫路徑。
問題出現了,Blockstack App如何與Gaia存儲交互,以及Gaia如何為用戶提供全面控制?
用戶和存儲后端都定義了URL。Blockstack App定義了用戶存儲的URL路徑。它根據用戶從不同的存儲器進行讀寫,這種方式允許用戶對數據的控制。查找路徑允許用戶控制和存儲他們的數據。
Blockstack App 如何在 Gaia 中查找數據?
這個過程分 4 步:
1.在虛擬鏈中查找名稱以獲得(名稱、散列)對
2.將用戶名解析為數據(通過BNS和Atlas網絡控制),以獲得相應的區(qū)域文件
3.從zonefile中發(fā)現存儲后端URI,并查找連接到存儲后端的URI
4. 從Gaia服務中獲取數據
解釋
App將給定的用戶名解析為某些數據。假設我們有一個用戶sidra.id。App將使用blockstack.js 程序庫中的Blockstack BNS。Atlas網絡獲取根文件(區(qū)域文件),這個文件定義很多關于名稱的信息。它還將提供存儲 App數據的URL。
一旦App完成了對 App根文件 的查找。申請者將能夠獲得更具體的數據。假設想查找文件foo.json。然后,唯一的要求是執(zhí)行一個正常的URL獲取。最后的設置是在Gaia規(guī)范中定義的。
如何更改 Gaia的儲存器? 在系統(tǒng)中,如果用戶想要更改正在運行的Gaia儲存器。因為用戶擁有自己的用戶名,所以他們可以很容易地將不同的數據與他們的用戶名相關聯,這允許他們選擇不同的App路由。這最終允許他們更改App執(zhí)行這些查找的方式。查找定義了數據的控制,只要用戶能夠控制數據的查找就控制了數據。
Gaia 接口
Gaia是一個存儲后端,它提供了一個簡單的接口。因此,App可以像普通的post、get和put請求工作一樣進行讀寫。Gaia定義了三種路徑:
1. PUT/store/《public-key-hash》/《file-name》 通過App代表用戶向Gaia服務寫入數據
2. GET/store/《public-key-hash》/《file-name》從公鑰哈希定義的用戶中讀取文件
寫一個 Gaia hub
Blockstack App代表用戶編寫,例如,app調用PUT請求將一些數據提交到Gaia服務,并提供和驗證頭,就像公鑰簽名文本一樣。Gaia服務將驗證此App實際上被授權向用戶Gaia寫入數據。
從 Gaia 中讀取數據
1. 獲取zone文件和數據
2. 驗證zonefile hash 是否匹配用戶公鑰
結論
Gaia是Blokckstack App的存儲后端。它提供了用戶擁有自己數據的能力,但是存儲的數據仍然依賴于傳統(tǒng)的DNS服務和復雜的云存儲。它還將大多數用戶設備無法處理的計算負載強加給用戶。對于去中心化的互聯網來說,用戶隱私還有很長的路要走。大多數用戶還沒有為這種變化做好準備。DApp需要對用戶友好,并使其他人做的工作更少才能成功。





