【IPFS應用開發】IPFS原生應用 IPFS原生DAPP

本系列文章是針對 https://blog.csdn.net/weixin_43668031/article/details/83962959 內容的實現所編寫的。開發經歷包括思考過程、重構和推翻重來。

【IPFS應用開發】IPFS原生應用 IPFS原生DAPP

一個基於IPFS的原生Dapp

看似一個普通的網站:但他已經成爲了一個原生的IPFS應用。
https://github.com/bill080307/VideoShare
在這裏插入圖片描述
在這裏插入圖片描述
http://ipfs-gateway.dlimba.top:8082/ipns/QmUnZTQFJCd573goUHECvkG63UdAW9CTgZAMvp8EkGnMmJ/
截止2019年底,網上介紹IPFS網站,或者IPFS應用的文章很多,但是我還沒見過一個完全原生的IPFS應用,從CryptoKitties到百度萊茨狗,從到DTube到,他們是DAPP,他們的業務數據確實已經上了分佈式區塊鏈技術,但是執行程序是傳統單點式的,執行程序不在鏈上。數據在鏈上,但是數據所對應的顯示單元、貼圖,該如何顯示不在鏈上,這就導致如果服務器掛了,仍然無法使用這個所謂的DAPP了。如果只是將數據放到分佈式賬本上也叫Dapp,那就太小看Dapp中的D(Decentralized)了。
看似這是一個普通的視頻網站,但實際運行除了ipfs節點無需其他服務軟件了,當然把網頁顯示到屏幕上的瀏覽器還是需要的。

Dapp (僅數據)

一般定義
一般對於Dapp的定義是,運行在分佈式網絡上,參與者的信息被安全保護(也可能是匿名的),通過網絡節點進行去中心化操作的應用。
以太坊定義
以太坊定義智能合約/Dapp是一個交易協議,根據區塊鏈上設定的條件來執行的一個合約或者一組合約。
–百度百科

對於大多數人來說這類Dapp早就接觸過了,比如
在這裏插入圖片描述
百度萊茨狗
在這裏插入圖片描述
CryptoKitties
這些Dapp、D遊戲、D軟件確實做到了數據分佈式(D),採用以太坊作爲數據庫就完美的解決了數據分佈式的過程,但是並不能稱之爲【原生】,因爲對於一個應用APP來說包含程序和數據2部分,他們沒有做到應用的分佈式。通過瀏覽器打開的Dapp,仍然需要訪問服務器的index.html作爲應用程序的入口,Dapp的程序部分沒有接入到分佈式網絡中算不算是一個真正的Dapp。當服務器不可用時(比如服務器宕機、域名解析錯誤)程序部分就無法使用,光有數據也沒法使用Dapp了。
在這裏插入圖片描述
DTube主界面
DTube 和 YouTube的界面很像,有未來的YouTube之稱,但是他僅僅是將大文件存放當了IPFS上而已,網站本身並不是分佈式的,只是大文件傳輸時用了IPFS技術。

原生Dapp

對於僅將數據存入分佈式賬本的應用而言,原生Dapp是把應用的程序數據都放到分佈式賬本上。在編寫過程中用到了一些傳統架構下的程序用於輔助,這些輔程序並不破壞原生Dapp的運行,用輔助程序只是爲了讓原生Dapp更加方便、穩定的運行和使用。
我的應用 https://github.com/bill080307/VideoShare 相對於以太坊寸土寸金的地盤,選擇ipfs這種分佈式的儲存方式,使用nodejs作爲開發語言,編譯出來的程序部分js可以放到ipfs上,通過IPFS網關直接在瀏覽器中打開運行。只需開啓一個ipfs節點就可以程序本身和數據了。
在這裏插入圖片描述
播放頁面 http://ipfs-gateway.dlimba.top:8082/ipfs/QmPh5RHFtxrKBx7b8YDr3y72cycjmhFtHiryafz7jeeEws

原生Dapp的缺點

真正做到分佈式應用的程序很少,當然缺點也不少。
難以做統計,在我這個應用中無法做到統計播放次數,這是因爲分佈式架構引起的,採集播放數據固然需要中心化。如果在我分佈式應用中嵌入如【站長流量統計 - 友盟+】可以實現,但是隻能統計部分,因爲我的原生Dapp是可以在沒有互聯網,僅有內網的情況下運行的,這部分播放無法連通中心化的服務器。
更新迭代困難,我作爲發佈節點,通過ipns已經更新的記錄,但是全網想要同時收到新版本是不可能的。幾分鐘,幾小時,甚至幾天,才能完成全網程序版本的更新,他們的更新就像社交圈,ipns記錄通過一傳十,十傳百的方式擴散更新。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章