区块链入门
区块链入门
一、什么是区块链?(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 常见哈希算法
| 算法 | 输出长度 | 应用场景 |
|---|---|---|
| MD5 | 128 位 | ❌ 已被破解,不推荐 |
| SHA-1 | 160 位 | ❌ 不够安全 |
| SHA-256 | 256 位 | ✅ 比特币使用 |
| Keccak-256 | 256 位 | ✅ 以太坊使用 |
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 的对比:
| 特性 | PoW | PoS |
|---|---|---|
| 选择方式 | 算力竞争 | 质押量+随机 |
| 能耗 | 极高 | 极低(节能 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 秒
- 为后续扩容打下基础
📝 知识检验(测试你的理解)
选择题
- 区块链的核心特点不包括:
- A. 去中心化
- B. 不可篡改
- C. 中央服务器控制
- D. 透明可追溯
- 点击查看答案 C。区块链是去中心化的,没有中央服务器控制。
- 以下关于哈希函数的说法错误的是:
- A. 哈希是可逆的,可以从哈希值推出原始数据
- B. 相同输入产生相同输出
- C. 输入的微小变化会导致输出巨大变化
- D. 很难找到产生相同哈希值的不同输入
- 点击查看答案 A。哈希函数是单向的,不可逆。
- PoW 和 PoS 的主要区别是:
- A. PoW 更节能
- B. PoS 需要算力竞争
- C. PoS 通过质押代币参与共识
- D. PoW 速度更快
- 点击查看答案 C。PoS 通过质押代币而非算力竞争来参与共识。
简答题
- 用自己的话解释什么是区块链?
- 参考答案 区块链是一种分布式数据库技术,它将数据以区块的形式存储,并通过密码学方法将区块按时间顺序连接成链。它的特点是去中心化、不可篡改、透明公开,所有参与者共同维护一个统一的账本。
- 为什么说区块链是不可篡改的?
- 参考答案 因为每个区块都包含前一个区块的哈希值,如果修改某个区块的数据,它的哈希值就会改变,导致后面所有区块的 PrevHash 不匹配,链条断裂。要成功篡改,需要重新计算被修改区块及其之后所有区块的哈希值,并且要在全网 51%的节点上同时完成,这在实际中几乎不可能。
- 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 主要测试网
| 测试网 | 共识机制 | 获取难度 | 推荐度 |
|---|---|---|---|
| Sepolia | PoS | 容易 | ⭐⭐⭐⭐⭐ |
| Goerli | PoA | 中等 | ⭐⭐⭐⭐ |
| Mumbai (Polygon) | PoS | 容易 | ⭐⭐⭐⭐ |
本教程使用 Sepolia,因为:
- 官方推荐的测试网
- 水龙头较多,容易获取
- 与主网环境最接近
二、切换到 Sepolia 测试网(5 分钟)
步骤 1:显示测试网络
- 打开 MetaMask
- 点击右上角三个点 → 设置
- 选择”高级”
- 找到”显示测试网络”
- 打开开关
步骤 2:切换网络
- 点击左上角的网络名称(默认是”Ethereum Mainnet”)
- 在下拉列表中选择”Sepolia 测试网络”
- 等待网络切换完成
步骤 3:确认切换成功
切换后你会看到:
- 网络名称显示”Sepolia”
- ETH 余额为 0(因为是新钱包)
- 货币符号显示”SepoliaETH”
三、从水龙头领取测试 ETH(15 分钟)
方法 1:Alchemy Sepolia Faucet(推荐)
步骤:
- 访问上述网址
- 使用邮箱注册 Alchemy 账号(或直接 Google 登录)
- 登录后,输入你的钱包地址
- 点击”Send Me ETH”
- 等待 1-2 分钟
限制:
- 每 24 小时可领取 0.5 SepoliaETH
- 需要 Alchemy 账号
方法 2:QuickNode Faucet
网址:https://faucet.quicknode.com/ethereum/sepolia
步骤:
- 访问网址
- 粘贴你的钱包地址
- 完成验证码
- 点击”Request”
- 等待交易确认
限制:
- 每 24 小时可领取
- 可能需要 Twitter 账号验证
方法 3:Infura Faucet
网址:https://www.infura.io/faucet/sepolia
步骤:
- 注册 Infura 账号
- 输入钱包地址
- 完成验证
- 领取测试币
方法 4:Google Faucet
网址:https://cloud.google.com/application/web3/faucet/ethereum/sepolia
步骤:
- 使用 Google 账号登录
- 输入钱包地址
- 完成 reCAPTCHA 验证
- 点击”Get test tokens”
四、验证测试 ETH 到账(5 分钟)
1. 在 MetaMask 中查看
- 打开 MetaMask
- 确保在 Sepolia 网络
- 查看 ETH 余额
- 通常 1-3 分钟内到账
2. 在区块链浏览器查看
Sepolia 区块链浏览器:https://sepolia.etherscan.io
查看方法:
- 复制你的钱包地址
- 访问 https://sepolia.etherscan.io
- 在搜索框粘贴地址
- 点击搜索
- 查看交易记录和余额
你会看到:
- Balance:你的 SepoliaETH 余额
- Transactions:交易列表
- 第一笔交易:从水龙头收到的测试 ETH
五、测试转账(练习)(5 分钟)
现在你有了测试 ETH,可以尝试进行转账:
练习:给自己的另一个账户转账
步骤:
- 在 MetaMask 创建第二个账户(Account 2)
- 复制 Account 2 的地址
- 切换回 Account 1
- 点击”发送”
- 粘贴 Account 2 的地址
- 输入金额(例如 0.01 ETH)
- 点击”下一步”
- 查看 Gas 费用
- 点击”确认”
- 等待交易完成
观察:
- 交易需要时间(10-30 秒)
- Account 1 的余额减少
- Account 2 的余额增加
- 实际扣除 = 转账金额 + Gas 费
六、常见问题解答
Q1:水龙头说”已超过限制”?
A:等待 24 小时后再试,或尝试其他水龙头。
Q2:测试 ETH 一直没到账?
A:
- 检查网络是否切换到 Sepolia
- 到区块链浏览器查看交易状态
- 水龙头可能拥堵,耐心等待
- 尝试其他水龙头
Q3:测试 ETH 用完了怎么办?
A:
- 等 24 小时后再从水龙头领取
- 尝试不同的水龙头
- 在社区请求赞助(Discord、Telegram)
Q4:测试 ETH 有价值吗?
A:没有!测试 ETH 仅用于测试,不能兑换真实货币。
Q5:可以把主网地址和测试网地址混用吗?
A:地址是通用的,但:
- 不要往测试网地址发送真实 ETH
- 资产在不同网络是独立的
- 务必确认网络再操作
📝 任务检查清单
完成今天的学习后,请确认:
理论知识:
- 理解区块链的基本概念
- 知道区块的结构
- 理解哈希函数的作用
- 知道 PoW 和 PoS 的区别
- 能用自己的话解释不可篡改性
实践操作:
- 成功安装 MetaMask
- 创建第一个钱包
- 备份助记词(纸质备份)
- 切换到 Sepolia 测试网
- 领取到测试 ETH(至少 0.1 ETH)
- 完成一笔测试转账
安全意识:
- 知道助记词的重要性
- 知道如何安全备份助记词
- 了解常见的诈骗手段
- 记住:永远不要分享助记词
📚 拓展学习资源
文章推荐
- 比特币白皮书(中文版)
- 了解区块链的起源
- 理解点对点电子现金系统
- 以太坊白皮书(中文版)
- 理解智能合约概念
- 了解以太坊的愿景
视频推荐
- 3Blue1Brown: 比特币是如何运作的?
- YouTube 搜索: “3Blue1Brown Bitcoin”
- 优秀的可视化讲解
- 区块链 100 问
- B 站搜索相关系列
- 适合初学者
在线工具
- 区块链演示工具
- https://andersbrownworth.com/blockchain/
- 交互式学习区块、链、哈希
- 以太坊燃气费追踪
- https://etherscan.io/gastracker
- 了解实时 Gas 费用
💭 今日学习总结
请用自己的话回答以下问题,加深理解:
-
今天最大的收获是什么?
-
哪个概念最难理解?
-
有什么疑问需要进一步研究?
-
明天想重点学习什么内容?
📅 明日预告
第 1 周周二(3 小时):
- 学习公钥/私钥原理
- 学习数字签名与交易机制
- 使用 Etherscan 浏览器查看链上交易
预习建议:
- 思考:为什么需要公钥和私钥?
- 了解:什么是非对称加密?
🎉 恭喜你完成第一天的学习!
记住:
- 理论+实践 = 深度理解
- 每天进步一点点
- 不懂的及时记录和查询
- 加入社区,多交流
继续加油!明天见! 💪
学习时间记录:
- 开始时间:**__**
- 结束时间:**__**
- 实际用时:**__**
完成状态:✅ 已完成 / ⬜ 未完成