2. 比特币 [Bitcoin]

2.1. 区块链历史

  • 密码朋克(Cypherpunk)
    • 比特币之父:中本聪
    • 2009.1.3 成功挖出了50个比特币 (Hal-Finney)

2.2. 区块链前景

  • 应用场景
    • 资产:数字资产发行、支付(跨境支付)、交易、结算
    • 记账:股权交易、供应链金融、商业积分
    • 不可篡改:溯源、众筹、医疗证明、存在性证明
    • 点对点:共享经济、物联网
    • 隐私:匿名交易

2.3. 比特币是什么

  • 比特币是数字货币

  • 什么是货币
    • <货币论>:货币是可以承载价值的一般等价物
  • 数字货币
    • 一串数字
  • 信任从何而来
    • 财产只受自己控制(只受自己的私钥控制)
    • 无通胀(总量2100万个)
    • 没有假钞
    • 流通性好(点对点直接到账,流通性好)
  • 去中心化记账系统

2.4. 比特币原理

  • 账本如何验证

  • 所有权问题

  • 为什么参与记账?(挖矿)

  • 以谁的账本为准?(共识机制)

  • 账本如何验证?
    • 核对账本记录 少数服从多数
    • Hash(原始信息) = 摘要信息
    • 账本记录时间:每10分钟记录一次
  • 账户所有权问题
    • 银行系统:账号 姓名 身份证
    • 比特币系统:点对点交易
    • 账号->地址
    {
        "付款地址":"S9DF8FSS0SS34D"
        "收款地址":"JFSDJFSSDJFDSL"
        "金额":"0.2btc"
    }
    
    • 密码->私钥
    地址:23JKFADFASFS
    私钥:iwueoijslkdjakljdfjsa9f9982423k4jkl234j23l4j2k3l
    Hash(Hash(fun(iwueoijslkdjakljdfjsa9f9982423k4jkl234j23l4j2k3l)))    ->    23JKFADFASFS
    
  • 非对称加密技术(交易签名)
    • 交易进行Hash得到摘要
    • 用私钥对摘要进行签名
  • 签名过程

hash('{"付款地址":"SSFJDSJFNXNDKD1"
           "收款地址":"I23EIOWIEJKLDJSLW"
           "金额":"0.2btc"
        }') -> 8adsfkash123

#参数1为交易摘要
#参数2为私钥
#返回签名信息
sign("kjfaldsk342kl","jfeaifjaoweiu489324jkfaljflasd") -> "23i4ouipafifjiof"
  • 广播交易

  • 验证

    #参数1为签名信息 #参数2为收款方地址 #返回交易摘要 verify(“39230kksdfkl”,”2934uiowjiwejoq”) -> “9SK88SDF8S”

    if(verify("123wasdsad123","dqaasd12233de")
        == hash('{"付款地址":"SSFJDSJFNXNDKD1"
                "收款地址":"I23EIOWIEJKLDJSLW"
                "金额":"0.2btc"
                }') )
    
  • 写入账本

  • 广播

  • 签名和验证
    • 签名:加密的过程
    • 验证:解密的过程
  • 补充
    • 关于隐私(银行做的很差)
    • 安全(比特币系统中如果不泄露私钥,金额绝对安全)

2.5. 为什么记账

  • 记账:Hash打包过程

  • 消耗资源

  • 奖励
    • 每次记账,新发行一定数量的比特币到账户 12.5个比特币
  • 挖矿-工作量证明
    • 规则
      • 一段时间内(10分钟)只有一人可以记账成功
      • 通过解决密码学难题(即工作量证明)竞争获取唯一记账权
      • 其他节点复制上次记账结果
  • 工作量证明

Hash(上一个Hash值,交易记录集) = 456635BCD
Hash(上一个Hash值,交易记录集,随机数) = 0000aFD563BCD
#现在为了增加难度,要求是18个0开头,率先找到可以记录成功
#交易记录集:收集广播中还没有被记录账本的交易
                    交易的有效性验证
                    添加一笔给自己转账的交易(挖矿奖励)
  • 工作量分析

2.6. 共识机制(工作量证明;最长链选择)

两个节点同时完成工作量证明,使用谁的区块?

  • 无仲裁机构裁决
  • 都说用我的区块

为什么要遵守协议

  • 节点工作量只有在其他的节点认同其是有效的

每个节点只认可累计工作量最大的区块链

  • 独立
  • 延长最长链
  • 分叉解决

2.7. 进阶

比特币P2P网络

区块结构Merkle Tree

比特币UTXO及交易脚本

比特币白皮书