整理整理对数字货币和区块链的理解

写于 2017-10-22 | 分类于 编程

比特币火了一遍又一遍,我也看了一些相关资料,总是似懂非懂,今天看了廖雪峰老师的一些视频,整理记录了下来

比特币的特点

  • 创建了无需信任中心的货币发行机制(Decentralization)
  • 发行数量由程序决定,无法随意修改
  • 交易帐本完全公开可追溯,不可篡改(Block chain)
  • 密码学理论保证货币防伪造,防双花
  • 数字签名机制保证交易完整可信,不可抵赖和撤销

比特币网络运行机制

  • 用户创建交易并签名发送给P2P网络
  • 矿工验证交易后将一批交易打包成新区块并获取挖矿奖励
  • 其他节点验证并接受或拒绝该区块
  • 每一个新区块都指向前一个区块并形成区块链
  • 全网所有账户余额与全部历史交易记录都保存在区块链中

区块链特点

  • 区块链就是一个不断增长的全网总帐本
  • 每个完全节点都拥有完整的区块链
  • 节点总是信任最长的区块链
  • 伪造区块链需要拥有超过51%的全网算力

安全哈希算法的特点

  • 单向函数:输入可以很容易计算输出,输出无法反推输入,只能暴力穷举
  • 碰撞率低
  • 输出无规律:任何一个小改动,导致输出完全不同

比特币使用的两种哈希算法

  • 两次SHA-256:hash256=sha256(sha256(data))
  • 先计算SHA-256,在计算RipeMD160:hash160=ripemd160(sha256(data))

数字签名算法的作用

  • 签名不可伪造
  • 消息不可篡改
  • 签名不可抵赖

比特币使用的签名算法

  • 椭圆曲线:secp256k1

公钥和私钥

  • 任何人都可以使用公钥查询到对应的比特币的数量,但无法知道对应比特币的持有者
  • 比特币没有用户的概念,持有的私钥就可以使用对应公钥的比特币
  • 私钥被盗,黑客就可以花费对应公钥的比特币,且无法追回

比特币网络的难度值

  • 难度值保证大约每10分钟产生一个区块
  • 难度值在每2015个区块调整一次(如果区块平均生成时间<10分钟,则全网算力增加;〉10分钟,则全网算力减少)
  • 难度值随着全网算力的增减来动态调整

挖矿难度取决于全网总算力的百分比

  • 全网总算力:4500PH/s
  • 单机CPU算力:1~10MH/s
  • 单机GPU算力:1GH/s

比特币交易原理

  • 比特币交易并不是直接一对一交易,因为没有可信任的中间人
  • 交易输出:锁定脚本
  • 交易输入:解锁脚本
  • 验证交易:成功执行解锁脚本+锁定脚本
  • 支付的本质:程序触发的数字资产转移;无信任中介的零信任交易;可编程货币;智能合约

参考