|
|
@ -98,8 +98,112 @@ pipenv install flask==0.12.2
|
|
|
|
pipenv install requests==2.18.4
|
|
|
|
pipenv install requests==2.18.4
|
|
|
|
```
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 2.1 创建项目及区块结构
|
|
|
|
### 2.1 区块链的实现代码
|
|
|
|
- blockchain.py
|
|
|
|
- demo/blockchain.py
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 3. 以太坊
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- 比特币的局限性
|
|
|
|
|
|
|
|
- 2013 Vitalik Buterin 发表了以太坊白皮书
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- 以太坊描述及特点
|
|
|
|
|
|
|
|
- 去中心化应用平台
|
|
|
|
|
|
|
|
- 区块链 2.0
|
|
|
|
|
|
|
|
- 可编程(操作系统)
|
|
|
|
|
|
|
|
- 智能合约, EVM
|
|
|
|
|
|
|
|
- 约每 15 秒出块, 挖矿奖励3ETH, 叔块奖励
|
|
|
|
|
|
|
|
- 无总量限制(比特币总共有2100万枚)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### 3.1 核心概念-智能合约
|
|
|
|
|
|
|
|
- 以太坊上的程序, 是代码和数据(状态)的集合
|
|
|
|
|
|
|
|
- 准图灵完备
|
|
|
|
|
|
|
|
- 典型应用: 代币: EOS, 游戏: 迷恋猫
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- 编程语言: Solidity
|
|
|
|
|
|
|
|
- 类 JavaScript语言 .sol
|
|
|
|
|
|
|
|
```solidity
|
|
|
|
|
|
|
|
contract HelloWorld{
|
|
|
|
|
|
|
|
function hello() public returns(string){
|
|
|
|
|
|
|
|
return "Hello World";
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- IDE : Remix
|
|
|
|
|
|
|
|
- https://remix.ethereum.org
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- 运行环境: EVM
|
|
|
|
|
|
|
|
- Solidity -> EVM
|
|
|
|
|
|
|
|
- Java -> JVM
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### 3.2 核心概念-账户
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- 账户
|
|
|
|
|
|
|
|
- 地址(Address): 20字节
|
|
|
|
|
|
|
|
- 状态(State)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- 账户分类
|
|
|
|
|
|
|
|
- 外部账户(EOA)
|
|
|
|
|
|
|
|
- 合约账户
|
|
|
|
|
|
|
|
- 消息由于外部账户发布, 合约的账户不能主动发起交易, 只能通过外部触发
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### 3.3 核心概念-钱包
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- 钱包(理解为一个开发者工具)
|
|
|
|
|
|
|
|
- Geth, Mist, MetaMask
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```shell
|
|
|
|
|
|
|
|
# 启动终端
|
|
|
|
|
|
|
|
geth --datadir testNet --dev console 2>> test.log
|
|
|
|
|
|
|
|
# 查看账号信息
|
|
|
|
|
|
|
|
eth
|
|
|
|
|
|
|
|
# 列出账号的一些信息
|
|
|
|
|
|
|
|
personal.listAccounts
|
|
|
|
|
|
|
|
# todo 各种 API, 自行进行查看即可
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### 3.4 核心概念- 交易手续费 Gas
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- 费用: Gas价格(用以太币计价) * Gas 数量
|
|
|
|
|
|
|
|
- Gas 可以限制工作量, 从账户进行付费, 矿工进行获取
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- 以太币单位
|
|
|
|
|
|
|
|
- 最小单位: 1Wei(伟)
|
|
|
|
|
|
|
|
- 10^9 Wei = 1 Gwei
|
|
|
|
|
|
|
|
- 10^12 Wei = 1szabo(萨博)
|
|
|
|
|
|
|
|
- 10^15 Wei = 1 finey(芬尼)
|
|
|
|
|
|
|
|
- 10^18 Wei = 1 Ether
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### 3.4 核心概念- 以太坊网络
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- 主网, 测试网络, 私有链, 模拟环境
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- 区块链分类
|
|
|
|
|
|
|
|
- 公有链, 联盟链, 私有链
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 4. 去中心化应用
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- 传统互联网应用
|
|
|
|
|
|
|
|
- 中心化, 容易更新, 数据完全掌控
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- 去中心化应用
|
|
|
|
|
|
|
|
- 去中心化, 按规则运行
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- 去中心化 Dapp
|
|
|
|
|
|
|
|
- 应用层
|
|
|
|
|
|
|
|
- 前端 : APP, H5/CSS
|
|
|
|
|
|
|
|
- 后端 : 节点, 存储
|
|
|
|
|
|
|
|
- 智能合约
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- 去中心化应用案例
|
|
|
|
|
|
|
|
- 预测平台: Augur
|
|
|
|
|
|
|
|
- 谜恋猫: https://www.cryptokitties.co/
|
|
|
|
|
|
|
|
- 百度莱茨, 网易招财猫, 小米加密兔
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -127,4 +231,3 @@ pipenv install requests==2.18.4
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
##
|
|
|
|
|