# 区块链与分布式数据库

LLMS 索引： [llms.txt](/llms.txt)

---

**区块链的本质，想提供的功能，及其演化方向，就是分布式数据库。**

确切的讲，是 **拜占庭容错（抗恶意节点攻击）的分布式（无领导者复制）数据库**。

![](featured.jpg)

如果这种分布式数据库用来存储各种币的 **交易记录**，这个系统就叫做所谓的“XX币”。例如以太坊就是这样一个分布式数据库，上面除了记载着各种山寨币的交易记录，还可以记载各种奇奇怪怪的内容。花一点以太币，就可以在这个分布式数据库里留下[一条记录（一封信）](https://etherscan.io/tx/0x2d6a7b0f6adeff38423d4c62cd8b6ccb708ddad85da5d3d06756ad4d8a04a6a2)。而所谓 **智能合约** 就是这个分布式数据库上的 **存储过程**。

从形式上看，**区块链** 与 **预写式日志（Write-Ahead-Log, WAL, Binlog, Redolog）** 在设计原理上是高度一致的。

WAL是数据库的核心数据结构，记录了从数据库创建之初到当前时刻的所有变更，用于实现主从复制、备份回滚、故障恢复等功能。如果保留了全量的WAL日志，就可以从起点回放WAL，时间旅行到任意时刻的状态，如PostgreSQL的PITR。

区块链其实就是这样一份日志，它记录了从创世以来的每笔Transaction。回放日志就可以还原数据库任意时刻的状态（反之则不成立）。所以区块链当然可以算作某种意义上的数据库。

区块链的两大特性：去中心化与防篡改，用数据库的概念也很好理解：

- **去中心化** 的实质就是 **无领导者复制（leaderless replication），** 核心在于 **分布式共识**。
- **防篡改** 的实质就是 **拜占庭容错**，即，使得 **篡改WAL的计算代价在概率上不可行** 。

正如WAL分为 **日志段**，区块链也被划分为一个一个 **区块** ，且每一段带有先前日志段的哈希指纹。

所谓挖矿就是一个公开的猜数字比快游戏（满足条件的数字才会被共识承认），先猜中者能获取下一个日志段的初夜权：向日志段里写一笔向自己转账的记录（就是挖矿的奖励），并广播出去（如果别人也猜中了，以先广播至多数为准）。所有节点通过共识算法，保证当前最长的链为权威日志版本。区块链通过 **共识算法** 实现日志段的 **无主复制**。

而如果想要修改某个WAL日志段中的一比交易记录，比如，转给自己一万个比特币，需要把这个区块以及其后所有区块的指纹给凑出来（连猜几次数字），并让多数节点相信这个伪造版本才行（拼一个更长的伪造版本，意味着猜更多次数字）。比特币中六个区块确认一个交易就是这个意思，篡改六个日志段之前的记录的算例代价，通常在概率上是不可行的。区块链通过这种机制（如Merkle树）实现 **拜占庭容错**。

区块链涉及到的相关技术中，除了 **分布式共识** 外都很简单，但这种 **应用方式** 与 **机制设计** 确实是相当惊艳的。区块链可以算是一次数据库的演化尝试，长期来看前景广阔。但搞链能立竿见影起作用的领域，好像都是老大哥的地盘。而且不管怎么吹嘘，现在的区块链离真正意义上的分布式数据库还差的太远，所以现在入场搞应用的大概率都是先烈。
