PS(本篇对纯小白不是很友好,需要对密码学有基本的了解)
密码学基础
哈希函数
- 加密哈希函数(cryptographic hash function)
- 抗碰撞(collision resistance)
碰撞必然发生:输入无限>输出2256,对于现在的算力,没有有效的方法找到两个不同的输入有相同的输出 - 单向(hiding)
为了保证私钥安全性 - puzzle friendly
用来证明工作量(proof of work)
- 抗碰撞(collision resistance)
SHA-256
- Security Hash Algorithm
256指的是生成256位的0101串
数据结构
区块链
-
hash pointers
-
Block chain is a linked list using hash pointers
Merkle tree
- block heder 存放 root hash
- block body 存放 transaction
- Merkle tree 提供 Merkle proof
- Proof of membership : 验证 Merkle proof -----[Θ(logn)]
- Proof of non-membership : 挨个验证H(tx) ----[Θ(n)]
共识机制
比特币系统中都包含了输入和输出两部分,输入说明币的来源,输出部分给出收款人公钥的哈希
- 能够防止 double spengding attack,节点需要验证每笔交易的合法性,合法的交易才能写进区块中
BTC实现
- transaction - based ledger
- 全节点维护——UTXO:Unspent Transaction Output
- total inputs = total outputs
- 1BTC——0.99BTC (缺少的0.01BTC作为记账权打包的奖励 transaction fee)
- 全节点维护——UTXO:Unspent Transaction Output
- account - based ledger