Ashing's Blog

想学的太多 懂得的太少

0%

比特币理论基础笔记

0x01 概念

2008年中本聪发明比特币

  • 微观:数字货币,其价值来源于人对其的信任和共识

  • 宏观:去中心化的记账系统

0x02 比特币特点

1.财产只受自己控制(银行可以认为你的钱不合法而收缴,而比特币只有自己的私钥控制)

2.无通货膨胀(比特币总量2100万个不变,不会贬值)

3.无假钞(共识机制)

4.流通性好(点对点)

5.不可篡改(去中心化)

6.隐私性(无个人信息)

0x03 比特币原理

1 账本如何验证?

  • ①与所有人的账本一一核对(效率低,方案不通)
  • ②Hash(上一个区块的Hash+本区块信息),则只需要核对最后一个区块的hash值就可以验证账本
  • 哈希函数:MD5、SHA1、SHA256
    • 哈希函数特点:
    • ①输出确定性:同样原始信息用同一个哈希函数总能得到相同的摘要信息
    • ②碰撞性:原始信息任何微小的变化都会哈希出面目全非的摘要信息
    • ③单向性:从摘要信息无法逆向推算出原始信息,即单向函数 哈希函数主要用途:验证文件是否被修改

2 账户的所有权问题?

  • 比特币地址 私钥:谁拥有私钥谁就拥有比特币地址,即拥有支付权 比特币地址和私钥是一个非对称关系,私钥通过hash运算可以得到比特币地址,但是不能通过比特币地址逆向推算私钥。 1551084140086

  • 账户的所有权问题变为:不泄漏私钥的情况下证明拥有某个比特币地址的私钥?

    • 答:非对称加密技术 交易签名:

①交易进行hash得到摘要信息

1551084305692

②用摘要信息和私钥进行签名运算得到签名信息

1551084176333

  • 签名(加密)信息后,再广播签名信息和原始交易记录,再通过非对称密码技术验证(解密),验证通过后添加该区块。

1551084191076

  • 签名就是加密,验证就是解密。

1551084202365

3 为什么记账?

  • (同时也是比特币发行的过程) 记账规则:

    • ①一段时间内只有一个人可以记帐成功
    • ②通过解决密码学难题(即工作量证明,即挖矿)竞争获得唯一记账权(直接验证hash值谁都可以记账,所以引入工作量证明机制)
    • ③其他节点复制记账结果
  • 工作量证明:通过爆破随机数,找到满足规则随机数后则得到唯一记账权
    1551084216791

过程计算量很大,目前已经没有单独矿工挖矿。一般都是矿工组合成矿池,通过算力比来分成收益。过程非常耗电,所以从经济学角度只要有收益就会有矿工加入挖矿,最终会达到挖矿成本接近收益。

  • 交易记录集:
  • ①收集广播中还没有被记录账本的交易
  • ②交易的有效性验证
  • ③添加一笔给自己转账的交易(挖矿奖励)

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

  • 共识机制(选择累计工作量最大的区块,最长的链为主链) 由于网络不确定性会产生孤块

0x04 比特币工作流程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
1.节点分为:①发送节点②接收节点 
发送节点在比特币体系里就是用于提交交易信息的用户。接收节点在比特币体系里面就是通常指矿工。
如果有新的交易要提交,那么发送节点就会在比特币网络进行交易信息的广播。矿工则要一直监听比特币网络里是否有交易广播。

2.矿工收到广播的交易信息后,需要校验这个信息的签名等内容是否合法。如果校验通过后,就需要将收到的所有交易信息按照一定的规则组装成一个数据块,也就是区块。

3.刚刚组装的区块还只是在自己这里,还未被纳入比特币网络中正式的区块链中。 如何才能被正式纳入呢?这里就涉及到共识算法了。 因为每个矿工都可能组装了自己的区块,在每10分钟之内,只可能有一个区块被纳入正式区块链,那么所有的矿工就要根据规则在最短的时间内使自己的区块被其它矿工认可,谁最先做到,那么谁的区块就会被正式纳入。

4.能纳入区块链的规则就是共识算法,比特币中使用的共识算法是工作量证明法。即让所有的矿工都去寻找一个随机数,这个随机数是通过Hash算法算出来的,并且算出来的随机数需要满足一定的条件才是大家认可的随机数(需要满足该随机数能使整个区块的哈希值小于目标值),谁先计算/猜到这个随机数,它的区块就能被全网接受。

5.然后这个区块就可以纳入正式区块链,放到链条的最后面,然后各个节点再开始挖下一个区块,就这么一直接连接下去。

6.挖到有效区块的节点可以获得奖励,这个奖励主要有2部分组成:
①比特币体系约定每挖到一个有效区块奖励25比特币。
②交易手续费。(交易信息的提交节点需要以比特币形式付这一笔交易手续费)