阅读区块链入门指南笔记#
以下为阅读《区块链入门指南》 的笔记。
区块链基础知识与关键技术#
共识机制#
区块链网络是由多个网络节点组成的,其中每个节点都存有一份信息备份,那它们是如何对交易达成一致的呢?也就是说,它们作为独立的节点,需要有一种机制来保障互相信任,这就是共识机制。
常用的共识机制有PoW(Proof of Work)工作量证明,PoS(Proof of Stake)权益证明,DPoS(Delegated Proof of Stake委任权益证明,DBFT(Delegated Byzantine Fault Tolerance)等。
比特币/以太坊主要采用的是工作量证明机制,通过算力比拼来增加恶意节点的作恶成本。通过动态调整挖矿的难度来让一笔交易时间控制在 10 分钟左右(6 个确认),但随着比特币挖矿越来越火热,消耗资源越来越多,对环境造成破坏;有些矿池拥有大量资源,也会造成一些中心化的风险。
权益证明机制则是通过权益(一般是代币)持有者进行投票来达成共识。这种机制不需要像工作量证明一样进行大量的算力比拼,但是也有一些风险,称为Nothing at Stake问题,很多权益持有者会在所有区块都投注并从中获利。为了解决这个问题,系统设置了一些规则,如对同时在多个链创建区块的用户/在错误链上创建区块的用户设置一些惩罚机制。目前以太坊正在向这种共识机制转变。
EOS则采用了委任权益证明,选出一些代表性的节点来进行投票,这种方式目的是优化社区投票的效率和结果,但带来了一些中心化的风险。
DBFT共识机制则是通过对节点分配不同的角色来达成共识,这样可以很大程度降低开销和避免分叉,但是也有核心角色作恶的风险。
比特币核心技术解读#
节点分为全节点和轻节点两种,早期所有的节点都是全节点,但随着数据量越来越大,运行在手机或平板等设备上的比特币客户端不需要存储整个区块链的信息,称为Simplified Payment Verification(SPV)节点,也叫轻节点。
Merkle Tree(默克尔树)是区块链系统中非常核心的数据结构,主要用于数据完整性验证和提高效率。它在比特币、以太坊等主流区块链中都有使用。Merkle Tree 是一种哈希二叉树,每个叶子节点是一段数据(如交易记录)的哈希值,每个非叶子节点是其两个子节点哈希值的再哈希:
| 功能 | 说明 |
|---|
| 数据完整性验证 | 一笔交易变动会导致整棵树根变动 |
| 轻节点验证 | SPV 客户端只需 Merkle 证明即可验证交易 |
| 节省带宽 | 不用全量同步交易数据 |
Merkle Tree 可以在不下载全部区块数据的情况下验证某笔交易是否包含在一个区块中。
这叫做 SPV(Simplified Payment Verification)轻节点机制,比特币钱包常用。
- 只需下载:
- 该交易的哈希值
- 到 Merkle Root 的“路径节点”(叫 Merkle Proof)
有了钱包(和资产)后,就可以开始交易了。我们来通过一个典型的比特币交易来理解这一流程:
A 和 B 都拥有一个比特币钱包地址(可以用 Bitcoin Client 生成,原理如上),假设 A 要给 B 转账 5 个 BTC,A 需要得到 B 的钱包地址,然后用自己的私钥对A->B转账5个BTC这笔交易签名(因为 A 的私钥仅有自己知道,所以拥有私钥则是拥有钱包资产的归属权);然后发布这笔交易,在比特币系统中发起交易需要支付小额矿工费作为交易手续费;矿工会开始验证这笔交易的合法性,得到六个确认后交易就可以被比特币账本所接受,整个验证过程大约 10 分钟。