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它必须满足以下条件:
- 该应用程序必须是完全开源的,它必须自主运行,并且没有任何实体控制其大部分令牌。该应用程序可以响应于所提议的改进和市场反馈来调整其协议,但是所有更改必须由其用户的共识来决定。
- 应用程序的数据和操作记录必须以密码方式存储在公共的分散式区块链中,以避免出现任何中心故障。
- 应用程序必须使用访问应用程序所必需的加密令牌(比特币或系统本身的令牌),并且(矿工)的任何价值贡献都应在应用程序的令牌中得到奖励。
- 应用程序必须根据标准加密算法生成令牌,以证明价值节点对应用程序有所贡献(比特币使用工作量证明算法)。