区块链核心技术
学习目标
- 理解区块链底层核心技术:哈希函数、默克尔树、数字签名、加密技术
- 掌握主流共识机制的原理与分类
- 了解区块的运行原理与整体架构
- 认识联盟链的特点与应用场景
前置知识
- 基本的计算机科学概念(数据结构、算法)
- 对密码学有初步认知(非必须)
- 已阅读 01-Web3 概述与愿景
一、哈希函数
1.1 什么是哈希函数
哈希函数(Hash Function)是一种将任意长度的输入映射为固定长度输出的数学函数。输出的结果称为哈希值(Hash Value)或摘要(Digest)。
输入(任意长度) → 哈希函数 → 输出(固定长度)
例如:
SHA-256("Hello") → 185f8db32271fe25f561a6fc938b2e264306ec304eda518007d1764826381969
SHA-256("Hello!") → 334d016f755cd6dc58c53a86e183882f8ec14f52fb05345887c8a5edd42c87b7
仅仅多了一个感叹号,输出就完全不同——这就是哈希函数的雪崩效应。
1.2 哈希函数的特点
| 特性 | 说明 |
|---|---|
| 正向计算容易 | 给定输入,可以快速算出哈希值 |
| 逆向推导困难 | 给定哈希值,几乎不可能反推出原始输入 |
| 抗碰撞性 | 很难找到两个不同的输入,使得它们的哈希值相同 |
| 确定性 | 相同的输入永远产生相同的输出 |
| 雪崩效应 | 输入的微小变化会导致输出的巨大变化 |
1.3 常见的哈希算法
MD5:
- 输出长度 128 位(32 个十六进制字符)
- 计算速度快,但安全性已被破解
- 目前仅用于文件完整性校验等非安全场景
SHA-256:
- 输出长度 256 位(64 个十六进制字符)
- 比特币采用的哈希算法
- 安全性高,目前尚未被破解
- 是区块链领域最广泛使用的哈希算法
哈希函数在区块链中的应用极为广泛:区块哈希、交易哈希、默克尔树、工作量证明(挖矿)等都依赖于哈希函数。
二、默克尔树与默克尔证明
2.1 什么是默克尔树
默克尔树(Merkle Tree)是一种树形数据结构,它的每个叶子节点是数据块的哈希值,每个非叶子节点是其子节点哈希值的组合哈希。
Root Hash
/
Hash01 Hash23
/ /
Hash0 Hash1 Hash2 Hash3
| | | |
Data0 Data1 Data2 Data3
- 叶子节点:原始数据的哈希值
- 中间节点:子节点哈希拼接后再次哈希
- 根节点(Merkle Root):整棵树的"指纹",代表了所有数据的摘要
2.2 默克尔证明
默克尔证明(Merkle Proof)用于高效验证某条数据是否包含在默克尔树中,而不需要下载全部数据。
验证过程:
假设要验证 Data1 是否在树中:
1. 提供 Data1 的哈希 Hash1
2. 提供兄弟节点 Hash0
3. 计算 Hash01 = Hash(Hash0 + Hash1)
4. 提供兄弟节点 Hash23
5. 计算 Root = Hash(Hash01 + Hash23)
6. 将计算结果与已知的 Merkle Root 对比,一致则验证通过
优势:
- 验证一条数据只需要 O(log n) 个哈希值,而非 O(n) 条全部数据
- 这使得轻节点(SPV 节点)可以在不存储完整区块链的情况下验证交易
三、数字签名
数字签名是区块链中身份验证和交易授权的核心技术。
3.1 基本原理
数字签名基于非对称加密(公钥密码学),包含一对密钥:
- 私钥(Private Key):只有持有者知道,用于签名
- 公钥(Public Key):公开的,任何人都可以用来验证签名
3.2 签名与验证流程
签名过程(发送方):
1. 对原始数据计算哈希值
2. 用私钥对哈希值进行加密,生成数字签名
3. 将原始数据和数字签名一起发送
验证过程(接收方):
1. 用发送方的公钥解密数字签名,得到哈希值 A
2. 对收到的原始数据计算哈希值,得到哈希值 B
3. 对比 A 和 B,一致则验证通过
3.3 在区块链中的作用
- 身份验证:证明交易确实是由私钥持有者发起的
- 防篡改:交易内容一旦被修改,签名验证就会失败
- 不可否认:签名者无法否认自己签过的交易
在区块链中,你的私钥就是你的身份。常说的"Not your keys, not your coins"(不是你的私钥,就不是你的币),强调的正是私钥的重要性。
四、加密技术
区块链中使用的加密技术主要分为两大类:
4.1 对称加密
- 加密和解密使用同一把密钥
- 优点:计算速度快
- 缺点:密钥分发困难——如何安全地将密钥传递给对方?
- 常见算法:AES、DES、3DES
4.2 非对称加密
- 加密和解密使用不同的密钥(公钥加密,私钥解密)
- 优点:解决了密钥分发问题,公钥可以公开
- 缺点:计算速度比对称加密慢
- 常见算法:RSA、ECC(椭圆曲线加密)
区块链主要使用椭圆曲线加密(ECC),特别是 secp256k1 曲线(比特币和以太坊均采用)。相比 RSA,ECC 在同等安全级别下密钥更短、计算更快,非常适合资源受限的场景。
五、共识机制
共识机制是区块链的核心,它解决了一个根本问题:在没有中心化权威的情况下,如何让所有节点对数据达成一致?
根据"先写后共识"还是"先共识后写",可以将主流共识机制分为两大类。
5.1 先写入后共识
这类机制先让节点提出区块,再由网络确认其合法性。
POW(工作量证明,Proof of Work):
- 节点通过消耗算力解决数学难题来竞争记账权
- 最先解出难题的节点获得出块权和奖励
- 代表项目:比特币
- 优点:安全性经过十多年验证,去中心化程度高
- 缺点:能耗巨大、交易确认慢
POS(权益证明,Proof of Stake):
- 节点根据质押的代币数量和时间来竞争记账权
- 质押越多,获得出块权的概率越大
- 代表项目:以太坊 2.0
- 优点:能耗低、效率高
- 缺点:可能导致"富者越富"
DPOS(委托权益证明,Delegated Proof of Stake):
- 代币持有者投票选出一定数量的"代表"(超级节点)来轮流出块
- 代表项目:EOS
- 优点:交易速度快、吞吐量高
- 缺点:去中心化程度降低,容易形成寡头
POX(混合证明):
- 结合 POW 和 POS 的优点
- 不同阶段或不同功能使用不同的共识方式
- 试图在安全性、去中心化和性能之间取得平衡
5.2 先共识后写入
这类机制先让节点就区块内容达成共识,再将区块写入链。
PBFT(实用拜占庭容错,Practical Byzantine Fault Tolerance):
- 节点之间通过多轮投票达成共识
- 能容忍不超过 1/3 的恶意节点
- 优点:交易最终性强(一旦确认就不可逆)、延迟低
- 缺点:节点数量增加时通信开销急剧增长,不适合大规模公链
Chained-BFT:
- PBFT 的改进版本,将共识过程流水线化
- 每一轮的投票同时也是对前一轮的确认
- 降低了通信复杂度,提高了吞吐量
- 代表项目:Diem(原 Libra)
Tower-BFT:
- 利用时间作为共识的辅助手段
- 节点对某个区块投票后,必须等待一定时间才能改变投票
- 等待时间随投票轮次指数增长,使得历史区块越来越难被推翻
- 代表项目:Solana
六、区块运行原理
一个区块的基本结构包含:
6.1 区块头(Block Header)
| 字段 | 说明 |
|---|---|
| 前一区块哈希 | 指向上一个区块,形成链式结构 |
| 时间戳 | 区块创建的时间 |
| 默克尔根 | 该区块所有交易的默克尔树根哈希 |
| 难度目标 | POW 中的挖矿难度(仅 POW 链) |
| Nonce | 矿工尝试的随机数(仅 POW 链) |
6.2 区块体(Block Body)
- 包含该区块内的所有交易记录
- 交易被组织成默克尔树,根哈希存在区块头中
6.3 运行流程
- 用户发起交易,用私钥签名后广播到网络
- 各节点收到交易后放入交易池(Mempool)
- 出块节点从交易池中选取交易,打包成区块
- 通过共识机制确认区块的合法性
- 确认后的区块被追加到链上,交易正式生效
- 所有节点同步最新状态
区块之间通过"前一区块哈希"首尾相连,形成一条不可篡改的链。如果篡改了某个历史区块的数据,其哈希值就会改变,导致后续所有区块的"前一区块哈希"都失效——攻击者必须重新计算之后所有区块的哈希,在算力上这几乎不可能实现。
七、联盟链
7.1 什么是联盟链
联盟链(Consortium Blockchain)是介于公有链和私有链之间的区块链形态。它由多个已知的组织共同维护,只有获得授权的节点才能参与共识和读写数据。
7.2 联盟链的特点
| 特点 | 说明 |
|---|---|
| 部分去中心化 | 由多个联盟成员共同管理,而非完全开放或单一机构控制 |
| 可控性强 | 节点准入需要审批,网络行为可监管 |
| 数据不默认公开 | 数据仅对联盟成员可见,支持隐私保护 |
| 交易速度快 | 节点数量有限且互相信任,共识效率远高于公有链 |
7.3 联盟链 vs 公有链
| 维度 | 公有链 | 联盟链 |
|---|---|---|
| 参与者 | 任何人 | 授权组织 |
| 去中心化程度 | 高 | 中等 |
| 交易速度 | 较慢(BTC ~7 TPS) | 较快(可达数千 TPS) |
| 隐私性 | 数据公开 | 数据可控 |
| 典型场景 | 加密货币、DeFi | 企业协作、政务 |
八、应用场景
区块链技术(尤其是联盟链)已在多个领域落地应用:
8.1 商品溯源
- 商品从原材料到终端消费者的每一个环节都记录在链上
- 消费者扫码即可查看完整的流转链路
- 数据不可篡改,有效防止造假
- 典型案例:食品安全溯源、奢侈品防伪、药品追踪
8.2 公益慈善
- 捐款的每一笔去向都记录在链上,公开透明
- 捐赠者可以实时追踪资金流向
- 解决了传统慈善的信任危机
- 杜绝资金挪用和暗箱操作
8.3 供应链金融
- 核心企业的信用可以通过区块链传递给上下游中小企业
- 应收账款可以在链上确权和流转
- 金融机构基于链上数据为中小企业提供融资
- 降低了信息不对称,提高了融资效率
8.4 互助保险
- 保险规则写入智能合约,理赔条件透明
- 符合条件时自动触发理赔,无需人工审核
- 参与者共同管理资金池
- 降低了运营成本和道德风险
九、整体架构
区块链系统的整体架构通常分为以下几层:
| 层级 | 说明 |
|---|---|
| 应用层 | DApp、智能合约、用户界面 |
| 合约层 | 智能合约引擎、虚拟机(EVM 等) |
| 共识层 | 共识算法(POW、POS、PBFT 等) |
| 网络层 | P2P 网络、节点通信、数据广播 |
| 数据层 | 区块结构、链式存储、默克尔树、数字签名 |
每一层都承担特定的职责,共同构成了完整的区块链系统。
十、百度超级链(XuperChain)
百度超级链(XuperChain)是百度自主研发的区块链底层技术,也是国内较有代表性的联盟链平台之一。
主要特点
- 自主知识产权:核心技术完全自研,拥有多项专利
- 高性能:单链可达数万 TPS,满足大规模商用需求
- 灵活共识:支持可插拔的共识机制,可根据场景选择 PBFT、DPOS 等
- 智能合约:支持 Solidity 和 C++ 等多语言合约开发
- 隐私保护:内置多种隐私计算方案
- 开源开放:核心代码已开源,降低了企业接入门槛
XuperChain 已在政务、司法、医疗、金融等领域有落地应用,是国内企业级区块链解决方案的重要选择之一。
小结
本篇介绍了区块链的核心技术栈:哈希函数保证数据完整性,默克尔树实现高效验证,数字签名确保身份认证,加密技术保护数据隐私,共识机制解决去中心化环境下的信任问题。这些技术共同构成了区块链的技术基座。联盟链将这些技术应用于企业协作场景,在商品溯源、公益慈善、供应链金融等领域已经产生了实际价值。
上一篇:01-Web3 概述与愿景
下一篇:03-智能合约与 Solidity 基础(待续)
主题测试文章,只做测试使用。发布者:Walker,转转请注明出处:https://walker-learn.xyz/archives/7479
