You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

130 lines
3.1 KiB
Markdown

1 year ago
## 1. 区块链技术的核心概念和原理
- 密码朋克 (Cypher punk)
- 维基解密的创始人 阿桑奇
- BT下载的作者 布莱姆-科恩
- WWW 的发明者 蒂姆博纳斯-李
- 智能合约概念的提出者: 尼克萨博
- Facebook 创始人: 肖恩帕克
- 中本聪
- Adam Back 发明了 Hash cash, 使用了 POW
- Haber/ Stornetta 提出时间戳方法保证数字文件安全的协议
- 戴维 发明了 B-money, 强调了点对点交易和不可更改记录
- 哈尔-芬尼 推出了 "加密现金"
- 2008 年中本聪 《比特币: 一个点对点的电子现金系统》
- 区块链技术前景
- 应用场景
- 资产:数字资产发行, 支付(跨境支付), 交易, 结算
- 记账:股权交易, 供应链金融, 商业积分
- 不可篡改:溯源, 众筹, 医疗证明, 存在性证明
- 点对点:共享经济, 物联网
- 隐私: 匿名交易
- 什么是货币?
- 凯恩斯《货币论》货币是可以承载价值的一般等价物
- 货币历史
- 铜币, 金银 -> 银票 -> 法币 -> 数字货币(一串数字)
- 信任从何而来
- 财产只受自己控制
- 无通胀(总量不变得)
- 没有假钞
- 流通性好
- 比特币是什么
- 去中心化的记账系统
- 比特币的原理
- 账本如何验证?
- 所有权问题?
- 为什么记账?(挖矿)
- 以谁的账本为准?(共识机制)
- Hash
- 哈希函数: Hash(原始信息) = 摘要信息
- 特点:
- 同样的原始信息用同一个哈希函数总能得到相同的摘要信息
- 原始信息任何微小的变化都会哈希出面目全非的摘要信息
- 从摘要信息无法逆向推算出原始信息
- 非对称加密技术(交易签名)
- 交易进行hash得到摘要
- 用私钥对摘要进行签名
- 所有权问题? 广播交易
- 签名及验证
- 为什么记账?
- 记账: Hash 打包过程
- 消耗资源
- 奖励 -> 比特币发行
- 挖矿 - 工作量证明
- 规则: 一段时间内只有一人可以记账成功
- 通过解决密码学的难题(即工作量证明)竞争获得唯一记账权
- 其他的节点复制记账结果
- 工作量证明
- Hash(上一个Hash值, 交易记录集) = 456635BCD
- Hash(上一个Hash值, 交易记录集, 随机数) = 0000aFD635BCD
- 交易记录集
- 收集广播中还没有被记录账本的交易
- 交易的有效性验证
- 添加一笔给自己转账的交易(挖矿奖励)
- 共识机制
- 两个节点同时完成工作量证明, 使用谁的区块?
- 无仲裁机构裁决
- 为什么要遵守协议?
- 节点的工作量只有在其他节点认可认同其是有效地
- 累计工作量最大的区块链
- 独立
- 延长最长链
## 2. 区块链的原理实现 (Python3)
- python, pip, pipenv, Flask/requests
```shell
# 安装运行的环境
pip install pipenv
# 安装 python 的运行环境 -> 生成 Pipfile
pipenv --python=python3.6
# 安装需要的依赖
pipenv install flask==0.12.2
pipenv install requests==2.18.4
```
### 2.1 创建项目及区块结构
- blockchain.py
##