> 技术文档 > 学习笔记《区块链技术与应用》第二天 共识机制

学习笔记《区块链技术与应用》第二天 共识机制


如何发行一个一个虚拟币?

人民币如何发行?
人民银行印制——防伪(密钥)——发布(公钥)——使用(没法花两次——双花攻击 double spending attack)
数字货币就是文件,可以复制,可以双花。
改进:1. 唯一编号,2. 所属检查

去中心化:

  1. 谁来发布货币
  2. 怎么防范double spending attack

Create Coin -> A(10) 铸币交易(Coinbase tx)(凭空发行)
↑ A -> B(5) signed by A
↑ A -> C(5) signed by A

输入部分:说明来源+公钥
输出部分:验证Hash+收款人的公钥Hash地址

B->C(2) singed by B
B->D(3) singed by B

C->E(1) singed by C

两种Hash point: 1. Linked block 2. coin from(防止双花)

学习笔记《区块链技术与应用》第二天 共识机制
一次交易:(私钥签名,公钥验证,我收到交易我验证)
A的签名+B的地址(account)
A需要B的地址,B需要A的公钥

再谈Block header, Block body

Block header:

  1. version
  2. hash of previous block header (只取header不管body)
  3. Merkle root hash
  4. target
  5. nonce
    H(block header) <= target

Block body:

  1. transaction list
  • full node (fully validating node): 全节点(保存所有信息,可以验证交易)
  • light node (无法独立验证交易合法性)(系统中大多数是轻节点)

每个账户都可以发起交易并广播给所有节点,谁来决定哪些交易可以写入区块?按照什么顺序?唯一性如何保证?

  • distributed consensus 分布式共识
  • distributed hash table 分布式hash表
  • impossibility result 不可能结论
    • FLP asynchronous, faulty,异步系统中一个成员有问题就不能取得共识。
    • CAP theorem, 最多只能同时满足两个
      • consistency 一致性
      • availability 可用性
      • Partition tolerance 容错

比特币中的共识协议

Consensus in BitCoin
任何基于投票的方案首先确认谁有投票权membership。
基于节点投票问题:sybil attach女巫攻击,大量产生可投票的攻击节点。
基于算例投票:
H(block header) <= target
不停的尝试nonce,找到符合要求nonce,整个节点获得记账权,写入下一个区块的权利(记账权),其他节点收到后验证合法性(验证block header nBits是否正确,查nonce是否符合<target, 所有header都符合要求,验证body交易偶读合法1 签名,2无双花问题)

  • 最长合法链longest valid chain
  • forking attack 分叉攻击
  • 等长的临时分叉会存在一段时间,直到其中一个抢先一步找到下一个区块则变为合法。短的链会被丢弃orphan block学习笔记《区块链技术与应用》第二天 共识机制

比特币系统两个问题

谁有权发行货币

如何验证合法性

mining 挖矿