App vs DApp
- App = frontend + server
- DApp = frontend + contracts
|
App |
DApp |
入口 |
電腦瀏覽器/手機 |
Dweb瀏覽器/數字錢包 |
協議 |
http/https |
分佈式訪問與隱私保護協議 |
存儲 |
雲存儲等 |
分佈式存儲,如IPFS等 |
數據庫 |
關係型DB/NOSQL |
非結構化去中心化數據庫,如GUN等 |
一致性邏輯 |
服務器程序 |
智能合約 |
支付方式 |
電子支付/信用卡 |
數字貨幣 |
用戶管理 |
用戶名+密碼 |
公私鑰 |
域名 |
中心化DNS |
去中心化DNS,如ENS/Namecoin等 |
系統升級時的差異
分佈式數據庫 vs 區塊鏈
隨着技術的發展,App的後端數據庫早已擺脫中心化模式, 而採用去分佈式數據庫. 那麼同樣都是去中心化存儲模式, 分佈式數據庫 與 基於分佈式賬本的區塊鏈 有何不同:
|
分佈式數據庫 |
區塊鏈 |
容錯 |
CFT:容錯部分節點宕機 |
BFT:容錯部分節點作惡 |
選主 |
主節點如果不宕機,一直是主 |
輪流做主(權益,算力 或者 隨機) |
日誌複製 |
主的日誌強行覆蓋從節點 |
日誌可臨時分叉,最終對齊:最長鏈原則 |
安全 |
變更一旦Apply到狀態機不可回滾 |
最新變更可能被回滾, 需要判斷不可逆區塊高度(BTC:6, EOS:325) |
活性 |
網絡分割可能導致無法達成共識,選不出主 |
能夠容忍暫時的網絡分割,後續通過最長鏈原則達成最終一致 |
要將某個應用程序視爲Dapp它必須滿足以下條件:
- 該應用程序必須是完全開源的,它必須自主運行,並且沒有任何實體控制其大部分令牌。該應用程序可以響應於所提議的改進和市場反饋來調整其協議,但是所有更改必須由其用戶的共識來決定。
- 應用程序的數據和操作記錄必須以密碼方式存儲在公共的分散式區塊鏈中,以避免出現任何中心故障。
- 應用程序必須使用訪問應用程序所必需的加密令牌(比特幣或系統本身的令牌),並且(礦工)的任何價值貢獻都應在應用程序的令牌中得到獎勵。
- 應用程序必須根據標準加密算法生成令牌,以證明價值節點對應用程序有所貢獻(比特幣使用工作量證明算法)。