附加章三:区块链
复习
- 数据一致性:数据一致性要求多个副本对同一份数据达成一致
- 分布式信任:网络中的多方可能彼此并不信任
TL;DR
- 区块链把交易按区块串成链,每块都记录着前一块的“指纹”
- 一旦改动历史,后续所有指纹都会对不上
- 分布式共识让互不信任的节点对同一份账本达成一致
- 去中心化并非没有代价:性能、能耗与治理都要权衡
正文
假设一群人要一起记账,但彼此并不完全信任:谁都想确认账本没有被偷偷改过,又不想只听某一个人的话。
区块链(blockchain)想解决的,正是这个难题:在没有中心权威的情况下,让多方对同一份账本达成一致。
一页页写满,再串起来
区块链的基本单位叫区块(block),每个区块里装着一批交易。关键在于,每个区块还会记录前一个区块的指纹(哈希值),像把一页页账目装订成册。
这个“指纹”有个重要性质:只要内容改动一丁点,算出来的指纹就会面目全非。于是,一旦有人想偷偷修改历史上某个区块,它的指纹就会变,后面所有区块记录的“前一块指纹”也就跟着对不上。想改一处,就得把之后全部重算并重写。 这让篡改历史的成本高得吓人。
大家一起认账
光有链表还不够。账本要由谁来记、以谁的版本为准?
区块链用一套共识机制,让分散的节点就“哪条链才是真的”达成一致。只有当多数参与者认可,新区块才会被接上。这样一来,没有哪一方能单方面说了算。
这正是它和传统中心化系统的根本区别:信任不再寄托于某个机构,而是寄托于公开的规则和大多数人的共同确认。
去中心化的代价
听起来很美,可天下没有免费的午餐。去中心化是有代价的:
- 性能:达成共识需要多方协调,速度往往远慢于中心化系统
- 能耗:某些共识机制要消耗大量算力
- 治理:规则一旦需要修改,协调众多参与者并不容易
所以区块链并不是“什么都该用它”。它真正擅长的场景,是多方互不信任、又没有合适的中立中心的时候。若本来就有可信的中心,或对性能要求极高,用它反而可能得不偿失。
技术选型从来如此:不是越新奇越好,而是越合适越好。
思考题
为什么“改动一个区块,会导致后面所有区块失效”?这与区块记录前一块指纹的设计有什么关系?
小结
知识点
- 区块串成链,每块记录前一块的哈希
- 篡改历史会破坏后续全部指纹
- 共识机制让互不信任的节点达成一致
- 去中心化在性能、能耗与治理上有代价
参考资料
- Wikipedia(zh):区块链:按区块链接的分布式账本
- Wikipedia(zh):密码散列函数:把内容映射为定长指纹的函数
- Wikipedia(zh):共识 (计算机科学):分布式系统达成一致的机制
思考题答案(仅供参考)
因为每个区块都记录了前一个区块的指纹。改动某个区块的内容后,它自己的指纹会变,于是下一个区块里记录的“前块指纹”就对不上;这个区块又必须重算,进而让再下一个也对不上,一环扣一环,直到链尾。除非把之后所有区块全部重算,否则篡改无法瞒过别人。
协议
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。
封面图
设计师 | 南国微雪