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开头,率先找到可以记录成功
#交易记录集:收集广播中还没有被记录账本的交易
交易的有效性验证
添加一笔给自己转账的交易(挖矿奖励)
- 工作量分析