• 第六章 比特币--区块链思想诞生的摇篮


    一、比特币项目简介
    特点:
    去中心化:没有任何独立个体可以对交易进行破坏,任何交易请求都需要大多数参与者的共识
    匿名性:账户地址是匿名的,无法从交易信息关联到具体的个体,这也意味着很难进行审计
    通胀预防:发行量上限2100万个,无法超发,每四年减半。
    1. 比特币大事记
    2008.10.31,中本聪发布比特币白皮书
    2009.1.3 18:15:05,中本聪挖出第一批50个币
    2010.5.21 佛罗里达的程序员用1万个币买了价值25美元的披萨优惠券
    2012.11.28 产量第一次减半
    2016.7.9 产量第二次减半
    2. 其他数字货币
    超过700种,比较出名有以太币和瑞波(Ripple)币
     
    二、原理和设计
    1. 基本交易过程
    用户将新交易记录写到比特币区块链网络中,等网络确认后即可认为交易完成。
    交易过程中,转账方需要通过签名脚本来证明自己是UTXO(Unspent Transaction Outputs),并生成新的输出的过程。
    2. 重要概念
    账户/地址:比特币采用了非对称加密算法,用户自己保留私钥,对自己发出的交易进行签名确认,并公开公钥。账户地址其实就是用户公钥经过一系列的Hash及编码去处后生成的160位(20字节)的字符串。
    交易:包括付款人地址、付款人对交易的签字确认、付款人资金的来源交易ID、交易的金额、收款人地址、收款人的公钥、时间戳
    交易脚本:输出脚本和认领脚本
    区块:4字节的区块大小信息、80字节的区块头信息、交易个数计数器(1~9字节)、交易的具体内容(可变长)
    3. 创新设计
    避免作恶:在一个开放的网络中,无法通过技术手段来保证每个人都是合作的。但是可以通过经济博弈来让合作者得到利益,让非合作者遭受损失和风险
    负反馈调节:
    共识机制
     
    三、挖矿
    1. 基本原理
    挖矿是参与维护比特币网络的节点,通过协助生成新区块来获取一定量新增比特币的过程。
    现在是每10分钟生成一个不超过1M大小的区块(记录了这10分钟内发生的验证过的交易内容),每个区块的成功提交者可以得到12.5个比特币的奖励。
    2. 挖矿过程
    参与者综合上一个区块的Hash值,上一个区块生成之后的新的验证过的交易内容,再加上自己猜测的一个随机数X,一起打包到一个候选新区块,让新区块的Hash值小于比特币网络中给定的一个数。这是一道面向全体矿工的“计算题”,这个数越小,计算出来就越难。
    3. 如何看待挖矿
    中国有超过全世界一半的算力。
    4. 共识机制
     
     
    四、共识机制
    1. 工作量证明
    工作量证明(PoW)通过计算来猜测一个数值(nonce),使得拼凑上交易数据后内容的Hash值满足规定的上限(来源于hashcash)。
    2. 权益证明
     
    五、闪电网络
    全网每秒7笔左右的交易速度,远低于传统金融交易系统。
    RSMC即“可撤销的顺序成熟度合同”。
    HTLC即“哈希的带时钟的合约”
     
    六、侧链
    简单来讲,以比特币区块链作为主链 (parent chain),其他区块链作为侧链,二者通过双向挂钩 (two-way peg),实现比特币从主链转移到侧链进行流通。
     
    七、热点问题
    1. 设计中的权衡
    区块容量:更大的区块容量可以带来更高的交易吞吐率,但会增加挖矿成本,带来中心化的风险,同时增大存储的代价。兼顾多方面的考虑,当前的区块容量上限设定为1MB。
    出块间隔时间:更短的出块间隔可以缩短交易确认的时间,但也可能导致分叉增多,降低网络可用性。
    脚本支持程度:更强大的脚本指令集可以带来更多的灵活性,但也会引入更多的安全风险。
    2. 分叉
    如果旧节点仍然能够验证接受新节点产生的交易和区块,则称为软分叉
    如果旧节点不接受新节点产生的交易和区块,则称为硬分叉
    3. 交易延展性
    是指当交易发起者对交易签名(sign)之后,交易ID仍然可能被改变。
    4. 扩容之争
    隔离见证方案:是指将交易中的签名部分从交易的输入中隔离出来,放到交易末尾的被称为见证(Witness)的字段当中。
    Bitcoin Unlimited方案(简称BU):指扩展比特币客户端,使矿工可以自由配置他们想要生成和验证的区块容量。
    5. 比特币的监管和追踪
     
    八、相关工具
    1. 客户端
    2. 钱包
    3. 矿机
     
  • 相关阅读:
    centos 6.8 配置 Redis3.2.5
    php将字符串转为二进制数据串
    php密码对称encrypt加密
    mysql 新建用户并赋予远程访问权限
    centos6.8 搭建postfix/dovecot邮件服务器
    centos 6.8 设置svn钩子同步至web目录
    百分百解决Job for network.service failed. See 'system的问题
    java锁机制详解
    解决网页打不开简书的问题
    SpringBoot读取不到application.yml
  • 原文地址:https://www.cnblogs.com/yahb/p/9000438.html
Copyright © 2020-2023  润新知