1. 区块链如何运行

image.png

2. 具体分析

1. 账户:公钥和私钥

image.png

2. 交易过程

step1: A发送交易信息
image.png
step2: 记账者挖矿
image.png
选一个随机数,进行hash计算;——》标准格式的输出值——》需要满足一个条件
工作量:找到这个随机数。

step3: 某个记账者把账单登记到账本中

  1. 查看上一次的账单hash值
  2. 查看所记录的交易是否合法:有无信息发出者的签名? 交易者的余额够不够?
  3. 最终验证本账单与本账单的hash值是否匹配

image.png

3. 区块与区块链的实体构造

image.png

  • 头哈希: 本页账单所计算出来的hash值;
  • 父哈希: 之前一页账单所计算出来的hash值;

    4. 比特币记录账户余额的模型 UTXO

    image.png
    传统的记账:注重初始状态和结束状态的值,即,开始有多少钱,交易完成后有多少钱?
    比特币记账:注重的是交易过程,保证输入和输出是相同的。具体步骤:
    case 1:
    需求:a初始50个币,需要给b支付20个。
    实现过程:a的输入的所有的50个币,交易了20个后,将剩余的30个币重新返回给a的地址.
    分析: a的输入:50个原始的比特币; 输出: 20个给了b, 30个给了自己的地址。
    case 2:
    需求: c初始有20个比特币,向b交易10个比特币。
    实现过程:c将所有的20个比特币输出,交易10个给b,将剩余10个输出给c自己地址;
    分析: c的输入:20个初始的比特币, c的输出:10个给b, 10个给c自己。

针对B进行分析
b此时账户中保存的并不是20+5+10个比特币信息,而是之前所有其他账户对其账户的输出信息。这些就是b还未花费的交易输出。——》其实就是余额。

case 4:
需求:b向其他人转32个比特币。
过程分析:因为B中保存的一共是35个未花费的交易输出,分3笔记录保存。此时b的输入是这35个输出信息;输出是对其他人的32个输出和对自己本身地址的3个输出。

5. 点对点支付中的双重支付问题

image.png
当一个记账者收到了a发送给b的交易信息,就不会再收到a发送给c的交易信息。

6. 分叉与最长链原则

image.png
每个矿工为了验证自己挖的矿(即记录的区块)可以被其他矿工所认可,他会在每60分钟(6个区块*10分钟/区块)时和全网进行对比,不一致时就会弃暗投明,重新更新最新区块链。

7. 区块链的读写权限

image.png
公有链:开放给所有人,只要想加入记账的人都可以加入进来;大家竞争记账权。—-》奖励机制
联盟链:记账的权限只开放给特定的人,审批机制——-》大家彼此都认识,小圈子内的交易是内部透明,多方参与账本组成联盟链,其对外部的记账者能提供价值的提升。他们小圈子中的成员不需要在区块链的内部获得奖励来奖励他们的诚实性。 不需要也没有奖励机制;
私有链:只能够自己/自己所在的组织中记账。
最新的提法不再是上述的划分,而是permission/permissionless——>许可链/非许可链。