这是一门完整开设的区块链系统课程。它回答的问题只有一个:

这套系统是怎么被造出来的?每一个设计决策在解决什么问题,代价是什么?

它按美国研究型大学的标准组织(Stanford CS 251、MIT 6.5610、Berkeley CS 294-144 的合集):每一个机制都先给出它要解决的问题,再给出设计,最后给出这个设计放弃了什么

课程信息

项目 内容
课程编号 CS 251 — Blockchain and Cryptocurrency Systems
课程层次 本科高年级 / 研究生入门
先修 一门编程语言(能读懂 200 行程序)、基础数据结构(树、哈希表)、基础概率。不需要密码学基础——第二单元从零讲起
代码语言 Go——Merkle 树、UTXO 状态机、共识协议、mini-EVM 全部给出可运行实现。选 Go 是因为它是这个领域的母语:go-ethereum、CometBFT、btcd 都是 Go 写的
组织方式 每个机制先问"没有它会怎样",再问"它凭什么成立",最后问"它的代价是什么"

这门课不讲什么

不讲币价、不讲赛道、不讲怎么发币、不提供任何投资建议。

也不教 Solidity 语法和 Hardhat/Foundry 的用法——这些东西的半衰期是两年,而且到处都是。这门课讲的是不会过期的那一层:为什么 Gas 必须存在、为什么 n ≥ 3f+1、为什么 Rollup 的真正瓶颈是数据可用性。

⚠️ 关于时效性:这个领域有一部分内容是活的(EIP-4337、EIP-4844、各家 Rollup 的实际参数)。本课的处理方式是把「设计约束」和「当前取值」分开写——比如挑战期讲清楚它由什么决定,“7 天"只作为当前实例出现。标准变了,正文的推理仍然成立。

课程结构

课程分为七个单元,共 35 讲。

Unit 1 · 问题与信任模型(第 1–3 讲)

在讲任何技术之前,先把问题定义清楚:我们到底要解决什么,以及理论上什么是做不到的。

Unit 2 · 密码学原语(第 4–8 讲)

区块链用到的密码学其实只有四样:哈希、Merkle 树、签名、承诺。这个单元从零讲起,不假设任何背景。

Unit 3 · 账本与状态(第 9–13 讲)

链是一个复制状态机。这个单元讲状态怎么表示、怎么证明、怎么膨胀。

Unit 4 · 网络与共识(第 14–20 讲)

全课最核心的单元。共识不是"大家投票”,而是"在没有身份的世界里如何给事件排序”。开头先讲网络层——因为所有共识协议的安全性证明,都建立在"诚实节点之间能互相通信"这条网络假设之上。

Unit 5 · 执行环境(第 21–25 讲)

从"记账"到"运行程序":链上虚拟机与它的全部约束。

Unit 6 · 扩容与跨域信任(第 26–31 讲)

“把区块调大点"为什么不行,以及 Rollup 的安全到底建立在什么之上。最后两讲用同一把"信任假设"的尺子,量跨链桥和预言机——两者都是在往一个自洽的密码学系统里,注入它无法自行验证的断言。

Unit 7 · 隐私与安全(第 32–35 讲)

实验

六个实验,全部用 Go,从零实现,不依赖任何区块链库。

习题

每套习题都附完整解答,不是"答案略”。

参考