什么是Dapp
Dapp的特征:
1. 运行在对等网络上,注意不同于分布式网络
2. 参与者信息被安全存储,隐私保护
3. 通过网络节点去中心化操作
C/S应用于DAPP
去中心化应用的优点
- 容错性好
- 防止单一机构的干扰
- 用户更容易相信该应用
去中心化应用缺点
- 更新困难
- 用户身份认证较为困难
- 程序扩充困难
- Dapp之间协作仍然比较困难
智能合约
- 智能合约:一段写在区块链上的代码
- 构建:区块链内的多个用户共同参与制定
- 存储:通过P2P网络扩散到每个节点,并存入区块链
- 执行:将满足条件的事务进行验证,达成共识后自动执行并通知用户
智能合约的部署步奏
以太坊合约部署
Dapp开发框架
- Truffle:代码-编译-部署-测试-打包
- Solidity:智能合约编程语言
- Web3.js:智能合约调用
大概流程就是我们的Dapp是部署在以太坊的节点上.而我们的节点是和整个P2P网络上的节点进行链接的.用户操作的web页面背后是通过web3.js来与Dapp客户端打交道的
以太坊EVM
- 以太坊是一套可以实现分布式应用的平台协议.它的核心是可以执行任意复杂算法的以太坊虚拟机(EVM)
- 网络上的每一个节点都运行着EVM并执行相同的指令.因为这个原因,以太坊经常被描述为”世界电脑”
EVM的一些特点
- EVM是一个256位的机器
- 持久化存储是相当昂贵的,因为每个节点都要保存所有数据,如果更新一个节点的数据,所有节点都要更新
- Solidity编译器会为了减少gas的使用而做出相应的优化
EVM的不足
- 标准库较少
- 调试和测试相对困难,基本的打印语句都没有,必须部署发布
- 暂时不支持浮点数
- 代码无法升级
以太坊的问题
- 性能较差,公链TPS<20
- 区块链难以存储”大数据”
- “智能合约”难以实现复杂的算法.eg.float不能做
一些可能的解决方案
- 闪电网络,状态通道,不改变共识算法,小改进
- Coco Blockchain Framework等(微软的框架),改变共识算法,基本达到商用水平
- 多种区块链混合.典型的如Akasha等区块链媒体,IPFS存储文章数据+区块链存储关键属性,执行合约
相关网络资料
- Solidity: http://solidity-cn.readthedocs.io/zh/develop/
- Truffle: http://truffleframework.com/docs/
- Web3.js: https://web3js.readthedocs.io/en/1.0/
- Remix: http://remix.readthedocs.io/
智能合约典型代码
- Truffle Box:
http://truffleframework.com/boxes/ - openzeppelin库: https://openzeppelin.org/
- 迷恋猫合约:
https://github.com/axiomzen/cryptokitties-bounty
资料
- Mastering Ethereum
https://github.com/ethereumbook/ethereumbook