01 区块链开发基础知识 - 图1《以太坊课程大纲》
    区块链基础详解
    1)当下区块链 5) 什么是区块链 9)区块链核心概念
    2)区块链产生背景 6) 区块链的特点 10)区块链分类
    3)区块链发展历史 7)区块链加密货币的特点 11)区块链架构特点
    4)区块链场景概念 8)区块链核心技术 12)区块链典型应用分析

    go实战公链
    1)基本概念 5)地址
    2)工作量证明 6)交易确认
    3)持久化和命令行工具 7)网络
    4)交易

    以太坊与智能合约
    1)以太坊基础详解
    2)以太坊DAPP开发与solidity基础
    3)Truffle与web3.js
    4)以太坊DAPP开发与solidity高级
    5)智能合约项目实战

    分布式理论基础与实战开发
    1)分布式理论基础
    2)mapReduce实战开发
    3)raft理论基础与论文分析
    4)kvraft实现**

    一、区块链基础详解
    image.png
    1.区块链产生:
    1)密码朋克:通过匿名性来保护隐私安全【一项运动:美国人】
    2)不可篡改文件记录: 加盖时间戳到文件内容中,证实数据真实存在,保证安全
    3)数字现金:
    2.发展历史
    1)09年,比特币诞生 1.0 【公链】
    2)14年,以太坊诞生2.0 【公链】
    3)18年中期,EOS主网上线3.0 【公链】
    4)Fabric 【联盟链】
    3.区块链场景概念
    1)数字货币:可以与现金流进行等价交换[非某一运营商能否实现],拥有现有现金流的属性和功能
    2)ICO: 众筹
    3)电子钱包:在商场购物中常用的支付工具
    4.什么是区块链(定义)
    1)区块链是一种
    点对点传输协议
    现代密码学
    共识算法
    分布式数据存储
    新型的应用模型(将已有的成熟的框架技术进行集合产生的)
    5.区块链特点
    1)可追溯 (通过内容中时间戳进行追溯)
    2)不可篡改
    3)去中心化
    4)完整备份(区块链具有完整的分布式存储特性)
    5)历史记录(被存储的数据拥有完整的历史记录,可以快速查看,复原)
    6)交易广播 (一次交易分发给网络中的其他节点,同步进行接受)
    6.区块链加密货币特点
    1)独立性: 所有货币都是独立存在的
    2)唯一性: 地址、交易都具有不重复的唯一性
    3)匿名性:账户信息和个人信息没有关联,交易过程全程加密
    4)不可伪造:有时间戳
    7.区块链核心技术
    1)点对点的技术:在网络中的数据流通方式
    2)现代密码学: 在区块链中的应用:公私钥签名、哈希算法
    3)共识算法:数据一致性
    4)分布式数据存储:实现去中心化的重要技术依据
    8.区块链核心概念
    image.png
    1.区块链
    (1)本质:一个分布式记账本,通过共识算法来决定谁能抢到当前的记账权。
    区块链以区块为单位,以区块产生的时间顺序去进行连接。
    (2)区块:
    a. 区块链的基本组成单位
    b.区块头
    i. 时间戳
    ii. 当前区块哈希
    iii. 父区块哈希
    iV:随机数
    V: Merkle树(存储交易)
    Vi:区块号码
    image.png
    c.区块体: 交易数据
    image.png
    (3)分布式数据库:区块链中的区块数据都存储在每一个节点中,所有节点组成一个分布式数据库。
    任何一个或多个节点退出,都不会影响其他的节点,因为每个节点都存在有完整的数据。

    (4)节点
    1.可以理解成为一个运行区块软件的计算机
    2.分类
    i.全节点: 保存了完整的区块链副本【安全性极高,不需要对其他节点发送请求,效率不高】
    ii.轻节点: 不保存所有的区块,需要依赖全节点进行验证,效率更高,安全性不如全节点高
    iii.挖矿节点: 带有挖矿功能的全节点,专门处理交易验证。

    1. 5)挖矿<br />1.对交易进行验证处理(记账),区块就是通过挖矿产生的<br /> 哈希碰撞:不断生成哈希值然后与目标哈希值进行比较,一旦小于目标哈希值则完成工作量证明<br />2.穷举随机数算法:<br />生成哈希,与目标哈希进行比较,成功则说明挖矿成功。

    (6) 分叉
    1.升级分叉:代码出了bug需要进行升级 或者 实现的两个功能不兼容就分成两个
    a. 矿工遵循不同的机制(规则)导致分叉
    b. 硬分叉:如果区块链共识规则改变之后,不允许前向兼容,旧的节点没有办法认可新的几点产生的区块。
    c. 软分叉:如果区块链共识规则改变之后,允许前向兼容,旧的节点可以兼容新的几点产生的区块。
    image.png
    2.挖矿分叉:(记账权的抢夺)
    a. 现象: 两个或者多个矿工,同时完成了工作量证明,就会产生两个新的区块,形成分叉
    【目前全球最大的三个矿池都在中国】
    b.解决方案: 不同的矿工跟随了不同的区块,但是不同链算力会有区别,矿工的数量一样,
    链的增长速度就会不同,最终会出现一条链更长,这条链会变成主链。

    (7)51%攻击
    一旦算力达到了51%,攻击成本会高于收益成本 【得不偿失】

    (8)交易

    1. 1. 概念: 一笔资产在参与者之间的转移
    2. 1. 内容
    3. 1. 金额
    4. 1. 发送者
    5. 1. 接收者
    6. 1. 交易IDHASH

    (9)双花 【传统货币具有天然的唯一性】
    1.概念: 复用数字货币的数字特性,可以完成两次或者多次支付。
    2.传统虚拟货币之所以可以避免双花是因为有可以依赖的第三方机构提供保证。
    3.区块中需要达成只通过分布式节点之间的相互检验与共识机制来避免双花,同时完成价值转移。

    (10)UTXO( unspent transaction output) 交易模式
    【解决了双花问题】

    1. 1. 是比特币独有的交易模式,比特币交易过程中的基本单位,主要就是为了避免双花。

    (11)哈希
    1.将任意的原始数据(交易记录)通过指定哈希函数,编码成为特定长度的字符串
    2.在区块链中的使用:生成地址、交易验证
    3.特点:
    1.不可逆
    2.随机性
    3.时间正相关:输入的源数据越长,哈希处理时间就越长。

    (12)加密算法
    1.对称加密:加密与解密使用相同的密钥
    2.非对称加密:
    i. 采用公钥和私钥进行加密
    ii. 无法采用公钥反推私钥

    (13)数字签名
    数字签名是非对称密钥加密技术数字摘要技术的应用

    (14)Merkle树
    image.png
    1 . Merkle树可以是二叉数,也可以是多叉树,它具有树的所有特点
    2 . 在区块链中的作用:快速校验、归纳交易数据的完整性
    3 . 在区块链中,Merkle树可以极大提高查询效率,区块头只需要保存一个Merkle根的hash
    4 . Merkle支持SPV

    (15)P2P
    image.png
    1.通过对等网络来分配工作任务的分布式应用架构
    2.迅雷采用的就是P2P
    3.由于P2P中,所有网络节点的地位都是对等的,不存在任何一个中心化节点,也不存在所谓的层级结构,所以每个节点都需要承担验证区块数据等功能