区块链入门

Devin
Web3

区块链入门

一、什么是区块链?(20 分钟)

1.1 区块链的定义

区块链是一种分布式账本技术,它将数据以”区块”的形式存储,并通过密码学方法将这些区块按时间顺序连接成”链”。

核心特点

  • 去中心化:没有中央服务器,数据存储在多个节点上
  • 不可篡改:一旦数据写入区块链,几乎无法修改
  • 透明可追溯:所有交易记录公开可查
  • 匿名性:使用地址而非真实身份
  • 安全性:通过密码学保证数据安全

1.2 为什么需要区块链?

传统中心化系统的问题

  • ❌ 单点故障风险(服务器宕机)
  • ❌ 数据可被篡改
  • ❌ 需要信任中介机构
  • ❌ 隐私泄露风险

区块链的解决方案

  • ✅ 分布式存储,没有单点故障
  • ✅ 密码学保证数据不可篡改
  • ✅ 无需信任中介,代码即法律
  • ✅ 用户掌控自己的数据

1.3 实际类比理解

传统银行账本 vs 区块链账本

特性传统银行账本区块链账本
存储位置银行中央服务器全网多个节点
记账权银行独自记账全网共同记账
信任基础信任银行信任算法和代码
透明度用户只能看到自己的记录所有记录公开透明
篡改难度银行内部可修改几乎不可能篡改

二、区块(Block)的结构(30 分钟)

2.1 什么是区块?

区块是区块链的基本单位,可以理解为一个数据容器,里面装着一批交易记录。

2.2 区块的组成部分

一个区块主要包含以下部分:

┌─────────────────────────────────┐
│         区块头 (Block Header)    │
├─────────────────────────────────┤
│  • 版本号 (Version)              │
│  • 前一区块哈希 (Previous Hash)   │
│  • 默克尔根 (Merkle Root)         │
│  • 时间戳 (Timestamp)             │
│  • 难度目标 (Difficulty)          │
│  • 随机数 (Nonce)                 │
└─────────────────────────────────┘
┌─────────────────────────────────┐
│         区块体 (Block Body)      │
├─────────────────────────────────┤
│  • 交易列表 (Transactions)       │
│    - 交易1: A转账给B 1 ETH       │
│    - 交易2: C转账给D 2 ETH       │
│    - 交易3: ...                  │
└─────────────────────────────────┘

2.3 区块头详解

1. 前一区块哈希(Previous Block Hash)

  • 指向前一个区块的哈希值
  • 这是区块”链”的关键:通过这个值把区块串联起来
  • 如果前面的区块被修改,这个哈希值就会改变,整条链都会断裂

2. 时间戳(Timestamp)

  • 记录区块创建的时间
  • 确保交易的时间顺序

3. 随机数(Nonce)

  • 用于工作量证明(挖矿)
  • 矿工不断调整这个数字,直到找到符合条件的哈希值

4. 难度目标(Difficulty)

  • 控制挖矿难度
  • 确保平均出块时间稳定(比特币约 10 分钟,以太坊约 12 秒)

2.4 区块体详解

区块体包含了交易列表,每个交易包括:

  • 发送方地址
  • 接收方地址
  • 转账金额
  • Gas 费用(以太坊)
  • 交易签名

2.5 实际例子

以太坊区块示例

区块号: 18234567
哈希: 0x1a2b3c4d5e6f...
父区块哈希: 0x9f8e7d6c5b4a...
时间戳: 2023-10-15 14:23:45 UTC
Gas使用量: 15,234,567
交易数量: 150笔
矿工奖励: 2 ETH

三、哈希(Hash)的原理(30 分钟)

3.1 什么是哈希?

哈希函数是一种数学算法,它可以将任意长度的数据转换成固定长度的字符串(哈希值)。

3.2 哈希的特性

1. 单向性(不可逆)

  • 从数据可以计算出哈希值
  • 但从哈希值无法反推出原始数据

2. 确定性

  • 相同的输入永远产生相同的输出
  • Hash("Hello") = 0x1a2b3c...(每次计算结果都一样)

3. 雪崩效应

  • 输入数据的微小变化会导致输出哈希值的巨大变化
Hash("Hello")  = 0x1a2b3c4d5e6f...
Hash("hello")  = 0x9f8e7d6c5b4a...  // 完全不同!

4. 抗碰撞性

  • 几乎不可能找到两个不同的输入产生相同的哈希值
  • 这保证了数据的唯一性

3.3 常见哈希算法

算法输出长度应用场景
MD5128 位❌ 已被破解,不推荐
SHA-1160 位❌ 不够安全
SHA-256256 位✅ 比特币使用
Keccak-256256 位✅ 以太坊使用

3.4 哈希在区块链中的作用

1. 区块识别

  • 每个区块都有唯一的哈希值作为”身份证”
  • 通过哈希值可以快速定位和验证区块

2. 链接区块

  • 每个区块包含前一个区块的哈希值
  • 形成不可篡改的链式结构

3. 工作量证明

  • 矿工需要找到符合特定条件的哈希值
  • 这个过程需要大量计算,证明了工作量

4. 交易验证

  • 交易数据通过哈希生成默克尔树
  • 可以快速验证交易是否被篡改

3.5 实际演示

在线工具体验哈希: 访问 https://emn178.github.io/online-tools/sha256.html

尝试输入:

输入: "Hello World"
SHA-256输出: a591a6d40bf420404a011733cfb7b190d62c65bf0bcda32b57b277d9ad9f146e

输入: "Hello World!"  // 只加了一个感叹号
SHA-256输出: 7f83b1657ff1fc53b92dc18148a1d65dfc2d4b1fa3d677284addd200126d9069
// 完全不同的哈希值!

3.6 为什么哈希让区块链不可篡改?

区块1         区块2         区块3
Hash: A       Hash: B       Hash: C
Data: "X"     Data: "Y"     Data: "Z"
PrevHash: -   PrevHash: A   PrevHash: B

如果有人试图修改区块2的数据:
Data: "Y" → "Y被篡改"

区块2的哈希值会改变:
Hash: B → Hash: B'

但区块3中记录的前一区块哈希仍然是B,不是B'
链条断裂!篡改被发现!

要成功篡改,需要:
1. 修改区块2
2. 重新计算区块2的哈希
3. 修改区块3中的PrevHash
4. 重新计算区块3的哈希
5. 修改区块4、5、6...所有后续区块
6. 必须在全网51%的节点上同时完成
→ 几乎不可能!

四、链(Chain)的形成(20 分钟)

4.1 区块如何连接成链?

每个区块都包含前一个区块的哈希值,就像链条的环环相扣:

创世区块          区块1            区块2            区块3
┌──────┐        ┌──────┐         ┌──────┐         ┌──────┐
│Hash:0│───────>│Hash:1│────────>│Hash:2│────────>│Hash:3│
│PrevH:│        │PrevH:│         │PrevH:│         │PrevH:│
│  无  │        │  0   │         │  1   │         │  2   │
└──────┘        └──────┘         └──────┘         └──────┘

4.2 创世区块(Genesis Block)

  • 创世区块是区块链的第一个区块
  • 它没有前一个区块,所以 PrevHash 为空或特殊值
  • 比特币创世区块包含了中本聪的留言:“The Times 03/Jan/2009 Chancellor on brink of second bailout for banks”

4.3 链的增长过程

1. 矿工收集待处理的交易
2. 将交易打包成新区块
3. 在区块头填入上一个区块的哈希值
4. 通过计算找到符合条件的Nonce
5. 广播新区块到全网
6. 其他节点验证并接受
7. 新区块成为链的最新一环

4.4 分叉问题

有时会出现两个矿工同时挖出新区块的情况:

          ┌─> 区块A
区块999 ──┤
          └─> 区块B

解决方案:最长链原则
- 继续挖矿
- 最终某条链会更长
- 全网接受最长的链
- 短链被放弃(孤块)

五、共识机制(Consensus Mechanism)(40 分钟)

5.1 什么是共识机制?

在去中心化的网络中,如何让所有节点对”哪些交易是有效的”、“区块链的当前状态是什么”达成一致?这就需要共识机制

共识机制的目的

  • 决定谁有权添加新区块
  • 防止双花攻击(同一笔钱花两次)
  • 保证网络安全
  • 激励参与者诚实行为

5.2 工作量证明(PoW - Proof of Work)

代表:比特币、早期以太坊

原理: 矿工需要解决一个数学难题(找到符合条件的 Nonce),第一个解出的矿工获得记账权和奖励。

工作流程

1. 收集交易 → 2. 组装区块 → 3. 计算哈希
                                    ↓
                          是否满足难度要求?
                              ↙        ↘
                            否          是
                            ↓           ↓
                      修改Nonce     广播区块
                      重新计算      获得奖励

难度要求示例

假设要求:哈希值必须以5个0开头

Nonce = 1234
Hash = 0x8a7f6e5d... ❌ 不符合

Nonce = 5678
Hash = 0x000009ab... ❌ 只有4个0

Nonce = 9012
Hash = 0x00000123... ✅ 符合!区块被接受

优点

  • ✅ 安全性高(需要 51%算力才能攻击)
  • ✅ 完全去中心化
  • ✅ 经过长期验证

缺点

  • ❌ 能耗巨大(比特币全网耗电相当于一个国家)
  • ❌ 出块慢(比特币约 10 分钟)
  • ❌ 算力集中化(大型矿池)

5.3 权益证明(PoS - Proof of Stake)

代表:以太坊 2.0、Cardano

原理: 验证者需要质押一定数量的代币,系统随机选择验证者来创建新区块。质押越多,被选中的概率越大。

工作流程

1. 用户质押32 ETH成为验证者
2. 系统随机选择验证者
3. 被选中的验证者验证交易并创建区块
4. 其他验证者投票确认
5. 诚实验证者获得奖励
6. 作恶验证者会被罚没质押的代币(Slashing)

与 PoW 的对比

特性PoWPoS
选择方式算力竞争质押量+随机
能耗极高极低(节能 99%+)
硬件要求专业矿机普通电脑
攻击成本需要 51%算力需要 51%质押币
出块速度慢(10 分钟)快(12 秒)
中心化风险矿池集中大户集中

优点

  • ✅ 节能环保
  • ✅ 出块速度快
  • ✅ 参与门槛相对较低
  • ✅ 攻击成本高(攻击者会损失质押的币)

缺点

  • ❌ 富者愈富(大户优势)
  • ❌ “无利害关系”问题
  • ❌ 相对较新,验证时间较短

5.4 其他共识机制

1. 委托权益证明(DPoS - Delegated Proof of Stake)

  • 代表:EOS、TRON
  • 原理:代币持有者投票选出少数超级节点
  • 优点:速度极快
  • 缺点:中心化程度较高

2. 权威证明(PoA - Proof of Authority)

  • 代表:私有链、联盟链
  • 原理:由预先认证的权威节点负责验证
  • 优点:效率高
  • 缺点:中心化

3. 实用拜占庭容错(PBFT)

  • 代表:Hyperledger Fabric
  • 原理:多轮投票达成共识
  • 适用:联盟链

5.5 以太坊从 PoW 到 PoS 的转变

The Merge(合并)- 2022 年 9 月 15 日

以太坊完成了从 PoW 到 PoS 的历史性转变:

转变前(PoW)

  • 矿工使用 GPU 挖矿
  • 高能耗
  • 出块时间:13-15 秒

转变后(PoS)

  • 验证者质押 32 ETH
  • 能耗降低 99.95%
  • 出块时间:12 秒
  • 为后续扩容打下基础

📝 知识检验(测试你的理解)

选择题

  1. 区块链的核心特点不包括
    • A. 去中心化
    • B. 不可篡改
    • C. 中央服务器控制
    • D. 透明可追溯
    • 点击查看答案 C。区块链是去中心化的,没有中央服务器控制。
  2. 以下关于哈希函数的说法错误的是
    • A. 哈希是可逆的,可以从哈希值推出原始数据
    • B. 相同输入产生相同输出
    • C. 输入的微小变化会导致输出巨大变化
    • D. 很难找到产生相同哈希值的不同输入
    • 点击查看答案 A。哈希函数是单向的,不可逆。
  3. PoW 和 PoS 的主要区别是
    • A. PoW 更节能
    • B. PoS 需要算力竞争
    • C. PoS 通过质押代币参与共识
    • D. PoW 速度更快
    • 点击查看答案 C。PoS 通过质押代币而非算力竞争来参与共识。

简答题

  1. 用自己的话解释什么是区块链?
    • 参考答案 区块链是一种分布式数据库技术,它将数据以区块的形式存储,并通过密码学方法将区块按时间顺序连接成链。它的特点是去中心化、不可篡改、透明公开,所有参与者共同维护一个统一的账本。
  2. 为什么说区块链是不可篡改的?
    • 参考答案 因为每个区块都包含前一个区块的哈希值,如果修改某个区块的数据,它的哈希值就会改变,导致后面所有区块的 PrevHash 不匹配,链条断裂。要成功篡改,需要重新计算被修改区块及其之后所有区块的哈希值,并且要在全网 51%的节点上同时完成,这在实际中几乎不可能。
  3. PoW 和 PoS 各有什么优缺点?
    • 参考答案 PoW 优点:安全性高、完全去中心化、经过长期验证 PoW 缺点:能耗巨大、出块慢、算力集中化 PoS 优点:节能环保、出块快、攻击成本高 PoS 缺点:大户优势明显、相对较新

四、助记词安全须知(重要!)

🔴 助记词的重要性

助记词是钱包的”万能钥匙”:

  • ✅ 可以恢复你的所有账户
  • ✅ 可以在任何设备上导入钱包
  • ✅ 即使忘记密码,也能恢复钱包

⚠️ 任何人获得你的助记词,就能控制你的所有资产!

正确的备份方式

✅ 推荐做法

  • 用笔抄写在纸上
  • 多份备份,分开保存
  • 存放在安全的地方(保险箱)
  • 考虑使用金属备份板(防火防水)

❌ 千万不要

  • 截图保存在手机或电脑
  • 保存在云盘(iCloud、Google Drive 等)
  • 通过微信、邮件发送
  • 保存在联网的设备上
  • 告诉任何人(包括客服)

任务 3:在 Sepolia 测试网领取测试 ETH(0.5 小时)

🎯 学习目标

  • 理解测试网的作用
  • 成功切换到 Sepolia 测试网
  • 从水龙头领取测试 ETH
  • 验证交易是否成功

一、什么是测试网?(5 分钟)

1.1 测试网的定义

测试网是用于测试和开发的区块链网络,它与主网(真实的以太坊网络)功能相同,但:

  • ✅ 使用的是测试币,没有真实价值
  • ✅ 可以免费获取
  • ✅ 用于学习和测试智能合约
  • ✅ 不用担心损失真金白银

1.2 为什么需要测试网?

学习阶段

  • 练习钱包操作
  • 学习 DApp 交互
  • 测试智能合约

开发阶段

  • 部署和测试合约
  • 发现并修复 bug
  • 验证功能是否正常

1.3 主要测试网

测试网共识机制获取难度推荐度
SepoliaPoS容易⭐⭐⭐⭐⭐
GoerliPoA中等⭐⭐⭐⭐
Mumbai (Polygon)PoS容易⭐⭐⭐⭐

本教程使用 Sepolia,因为:

  • 官方推荐的测试网
  • 水龙头较多,容易获取
  • 与主网环境最接近

二、切换到 Sepolia 测试网(5 分钟)

步骤 1:显示测试网络

  1. 打开 MetaMask
  2. 点击右上角三个点 → 设置
  3. 选择”高级”
  4. 找到”显示测试网络”
  5. 打开开关

步骤 2:切换网络

  1. 点击左上角的网络名称(默认是”Ethereum Mainnet”)
  2. 在下拉列表中选择”Sepolia 测试网络”
  3. 等待网络切换完成

步骤 3:确认切换成功

切换后你会看到:

  • 网络名称显示”Sepolia”
  • ETH 余额为 0(因为是新钱包)
  • 货币符号显示”SepoliaETH”

三、从水龙头领取测试 ETH(15 分钟)

方法 1:Alchemy Sepolia Faucet(推荐)

网址https://sepoliafaucet.com

步骤

  1. 访问上述网址
  2. 使用邮箱注册 Alchemy 账号(或直接 Google 登录)
  3. 登录后,输入你的钱包地址
  4. 点击”Send Me ETH”
  5. 等待 1-2 分钟

限制

  • 每 24 小时可领取 0.5 SepoliaETH
  • 需要 Alchemy 账号

方法 2:QuickNode Faucet

网址https://faucet.quicknode.com/ethereum/sepolia

步骤

  1. 访问网址
  2. 粘贴你的钱包地址
  3. 完成验证码
  4. 点击”Request”
  5. 等待交易确认

限制

  • 每 24 小时可领取
  • 可能需要 Twitter 账号验证

方法 3:Infura Faucet

网址https://www.infura.io/faucet/sepolia

步骤

  1. 注册 Infura 账号
  2. 输入钱包地址
  3. 完成验证
  4. 领取测试币

方法 4:Google Faucet

网址https://cloud.google.com/application/web3/faucet/ethereum/sepolia

步骤

  1. 使用 Google 账号登录
  2. 输入钱包地址
  3. 完成 reCAPTCHA 验证
  4. 点击”Get test tokens”

四、验证测试 ETH 到账(5 分钟)

1. 在 MetaMask 中查看

  1. 打开 MetaMask
  2. 确保在 Sepolia 网络
  3. 查看 ETH 余额
  4. 通常 1-3 分钟内到账

2. 在区块链浏览器查看

Sepolia 区块链浏览器https://sepolia.etherscan.io

查看方法

  1. 复制你的钱包地址
  2. 访问 https://sepolia.etherscan.io
  3. 在搜索框粘贴地址
  4. 点击搜索
  5. 查看交易记录和余额

你会看到

  • Balance:你的 SepoliaETH 余额
  • Transactions:交易列表
  • 第一笔交易:从水龙头收到的测试 ETH

五、测试转账(练习)(5 分钟)

现在你有了测试 ETH,可以尝试进行转账:

练习:给自己的另一个账户转账

步骤

  1. 在 MetaMask 创建第二个账户(Account 2)
  2. 复制 Account 2 的地址
  3. 切换回 Account 1
  4. 点击”发送”
  5. 粘贴 Account 2 的地址
  6. 输入金额(例如 0.01 ETH)
  7. 点击”下一步”
  8. 查看 Gas 费用
  9. 点击”确认”
  10. 等待交易完成

观察

  • 交易需要时间(10-30 秒)
  • Account 1 的余额减少
  • Account 2 的余额增加
  • 实际扣除 = 转账金额 + Gas 费

六、常见问题解答

Q1:水龙头说”已超过限制”?

A:等待 24 小时后再试,或尝试其他水龙头。

Q2:测试 ETH 一直没到账?

A

  1. 检查网络是否切换到 Sepolia
  2. 到区块链浏览器查看交易状态
  3. 水龙头可能拥堵,耐心等待
  4. 尝试其他水龙头

Q3:测试 ETH 用完了怎么办?

A

  1. 等 24 小时后再从水龙头领取
  2. 尝试不同的水龙头
  3. 在社区请求赞助(Discord、Telegram)

Q4:测试 ETH 有价值吗?

A:没有!测试 ETH 仅用于测试,不能兑换真实货币。

Q5:可以把主网地址和测试网地址混用吗?

A:地址是通用的,但:

  • 不要往测试网地址发送真实 ETH
  • 资产在不同网络是独立的
  • 务必确认网络再操作

📝 任务检查清单

完成今天的学习后,请确认:

理论知识

  • 理解区块链的基本概念
  • 知道区块的结构
  • 理解哈希函数的作用
  • 知道 PoW 和 PoS 的区别
  • 能用自己的话解释不可篡改性

实践操作

  • 成功安装 MetaMask
  • 创建第一个钱包
  • 备份助记词(纸质备份)
  • 切换到 Sepolia 测试网
  • 领取到测试 ETH(至少 0.1 ETH)
  • 完成一笔测试转账

安全意识

  • 知道助记词的重要性
  • 知道如何安全备份助记词
  • 了解常见的诈骗手段
  • 记住:永远不要分享助记词

📚 拓展学习资源

文章推荐

  1. 比特币白皮书(中文版)
    • 了解区块链的起源
    • 理解点对点电子现金系统
  2. 以太坊白皮书(中文版)
    • 理解智能合约概念
    • 了解以太坊的愿景

视频推荐

  1. 3Blue1Brown: 比特币是如何运作的?
    • YouTube 搜索: “3Blue1Brown Bitcoin”
    • 优秀的可视化讲解
  2. 区块链 100 问
    • B 站搜索相关系列
    • 适合初学者

在线工具

  1. 区块链演示工具
  2. 以太坊燃气费追踪

💭 今日学习总结

请用自己的话回答以下问题,加深理解:

  1. 今天最大的收获是什么?


  2. 哪个概念最难理解?


  3. 有什么疑问需要进一步研究?


  4. 明天想重点学习什么内容?



📅 明日预告

第 1 周周二(3 小时)

  • 学习公钥/私钥原理
  • 学习数字签名与交易机制
  • 使用 Etherscan 浏览器查看链上交易

预习建议

  • 思考:为什么需要公钥和私钥?
  • 了解:什么是非对称加密?

🎉 恭喜你完成第一天的学习!

记住:

  • 理论+实践 = 深度理解
  • 每天进步一点点
  • 不懂的及时记录和查询
  • 加入社区,多交流

继续加油!明天见! 💪


学习时间记录

  • 开始时间:**__**
  • 结束时间:**__**
  • 实际用时:**__**

完成状态:✅ 已完成 / ⬜ 未完成