整理整理对数字货币和区块链的理解
写于 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
比特币交易原理
- 比特币交易并不是直接一对一交易,因为没有可信任的中间人
- 交易输出:锁定脚本
- 交易输入:解锁脚本
- 验证交易:成功执行解锁脚本+锁定脚本
- 支付的本质:程序触发的数字资产转移;无信任中介的零信任交易;可编程货币;智能合约