## 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 ##