web3 区块链技术与用

发布于:2025-07-19 ⋅ 阅读:(16) ⋅ 点赞:(0)

#53

敲点算法题

瑞吉外卖day4

调整心态 睡眠 及精神

web3

以下是应北京大学肖臻老师《区块链技术与用》公开课的完整教学大纲,综合课程内容、技术模块及前沿扩展,分为核心章节与专题拓展两部分,引用自公开课资料及学员笔记。

📘 一、课程概述与教学目标

  1. 课程定位

  • 系统讲解区块链底层技术原理(密码学、数据结构、共识协议)与典型应用场景(比特币、以太坊生态)。

  • 面向计算机科学、金融科技、分布式系统领域的学习者,强调理论与工程实践结合。

  1. 核心目标

  • 掌握区块链安全机制设计思想(如去中心化信任、防篡改)。

  • 具备分析行业痛点(如供应链溯源、金融结算)并设计区块链解决方案的能力。

⛓️ 二、比特币技术精讲(BTC)

  1. 密码学基础

  • 哈希函数特性(单向性、抗冲突性、谜题友好性)及在区块链中的应用(如Merkle树)。

  • 数字签名原理与公私钥体系,解决身份验证问题。

  1. 数据结构与协议

  • 区块链结构:Hash指针、创世块、最长链原则。

  • Merkle树与验证:轻节点Merkle Proof实现高效交易验证。

  • 共识机制:工作量证明(PoW)、挖矿难度动态调整、51%攻击防御。

  1. 关键问题解析

  • 双花攻击(Double Spending)及UTXO模型解决方案。

  • 分叉类型(硬分叉 vs. 软分叉)及对生态的影响。

  • 比特币脚本(Bitcoin Script)的局限性与应用场景。

💎 三、以太坊技术精讲(ETH)

  1. 账户模型与数据结构

  • 账户类型:外部账户(EOA)与合约账户,Nonce防重放攻击。

  • 状态存储:MPT(Merkle Patricia Trie)树实现高效状态更新与历史回溯。

  • 三棵树结构:状态树(全局账户)、交易树(区块内交易)、收据树(执行结果)。

  1. 共识优化与性能提升

  • GHOST协议:解决高频出块导致的临时分叉问题,引入叔块奖励机制。

  • 内存硬挖矿算法(Ethash):抵抗ASIC矿机,保障去中心化。

  • Gas机制:燃料费计算与智能合约执行成本控制。

  1. 智能合约与生态事件

  • 智能合约开发框架(Solidity)、部署流程及安全漏洞案例(如TheDAO事件)。

  • 权益证明(PoS)过渡方案(Casper FFG)与以太坊2.0升级方向。

🔮 四、前沿与扩展主题

  1. 跨链与扩容技术

  • Layer2解决方案(如Optimistic Rollup、ZK-Rollup)。

  • 跨链桥(Bridge)实现资产跨链转移的原理与风险。

  1. 隐私与安全进阶

  • 零知识证明(ZKP)、同态隐藏技术在匿名交易中的应用。

  • 智能合约安全审计工具(如Slither)及常见漏洞防范(重入攻击、溢出)。

  1. 行业应用与趋势

  • DeFi(去中心化金融)、NFT(非同质化代币)的底层支持逻辑。

  • 元宇宙(Metaverse)与区块链的融合场景分析(课时29)。

📚 五、课程特点与学习建议

  • 实践导向:结合Remix、Truffle等工具演示合约开发,通过案例(如NFT市场)深化理解。

  • 动态更新:涵盖以太坊升级(PoS)、隐私计算(课时28)等前沿内容。

  • 学习资源

  • 视频公开课:B站搜索“肖臻区块链”(含29节完整课时)。

  • 配套笔记:CSDN博客“肖臻区块链笔记”提供章节技术摘要。

💡 肖臻教授观点

“区块链技术远非仅限于加密货币(如比特币),其核心价值在于构建去中心化信任基础设施。当前仍处于技术爆发早期,深入理解原理者仍是稀缺人才。”

此大纲覆盖技术深度与行业宽度,适合系统性学习或作为开发参考指南。

以下是北京大学肖臻教授《区块链技术与应用》课程中密码学原理部分的详细笔记整理,结合课程核心内容与公开资料,重点涵盖哈希函数与数字签名两大技术模块。

🔑 一、哈希函数(Hash Function)

哈希函数是区块链的密码学基石,核心特性包括:

  1. 抗碰撞性(Collision Resistance)

  • 几乎不可能找到两个不同输入产生相同哈希输出(如 x ≠ yH(x) = H(y))。

  • 应用:保证数据完整性。例如,比特币区块头包含前一区块哈希值,篡改任一区块会导致后续所有哈希值失效。

  • ⚠️ 注:抗碰撞性依赖实践经验(如MD5已被破解,比特币采用SHA-256)。

  1. 隐藏性(Hiding)

  • 哈希值无法反推原始输入(单向性)。

  • 应用:实现“数字密封信封”。例如,预测结果拼接随机数后哈希公布,事后验证时比对哈希值即可证明未篡改。

  1. 谜题友好性(Puzzle Friendly)

  • 无法预知输入如何影响输出,适合工作量证明(PoW)。比特币要求矿工寻找满足 H(block header) ≤ target 的随机数(Nonce)。

  1. 确定性 & 雪崩效应

  • 同一输入始终输出相同哈希值;输入微小变化(如1比特)导致输出完全不同(例如 "A"3A7D"a"8F1C)。

区块链中的典型哈希算法

  • SHA-256:比特币区块链接与Merkle树。

  • Keccak-256:以太坊地址生成与状态树优化。

📝 二、数字签名(Digital Signature)

数字签名用于验证交易来源与完整性,基于非对称加密(公钥加密体系):

1. 核心流程
  • 签名生成

  • 发送方对消息 M 计算哈希值 H(M)

  • 私钥加密哈希值生成签名 S

  • 签名验证

  • 接收方用发送方公钥解密 S 得到 H(M)'

  • 比对 H(M)' 与本地计算的 H(M),一致则验证通过。

2. 关键特性
  • 不可伪造性:私钥唯一,签名无法被伪造。

  • 不可抵赖性:公钥可验证签名来源,发送方无法否认。

  • 数据完整性:哈希值匹配证明内容未被篡改。

3. 区块链应用
  • 比特币

  • 私钥代表账户控制权,交易需私钥签名。

  • 地址生成:私钥 → SHA256 → RIPEMD160 → Base58编码

  • 以太坊

  • 地址 = Keccak256(公钥) 的最后20字节。

  • 智能合约:预言机数据验证(如Chainlink先哈希上链,链下传递后比对)。

🌐 三、密码学在区块链中的综合应用

  1. Merkle树

  • 分层哈希结构,叶子节点为交易哈希,父节点为子节点哈希组合。

  • 作用:轻节点通过Merkle路径验证交易(如SPV钱包),无需下载全链数据。

  1. 抗攻击设计

  • 生日攻击防御:SHA-256碰撞概率极低(约2⁻¹²⁸)。

  • 量子计算威胁:Grover算法可加速哈希碰撞,但当前量子算力不足(需百万级量子比特)。

  1. 隐私增强技术

  • 零知识证明(ZKP):Zcash用哈希构建Nullifier防止双花。

  • 同态加密:支持加密数据直接运算(如隐私Rollup)。

🔮 四、前沿挑战与发展

  • 后量子密码学

  • NIST推荐SPHINCS⁺(哈希签名方案)抵御量子计算。

  • 算法升级实践

  • 比特币SegWit引入双重SHA256防御长度扩展攻击。

  • 跨链技术:Cosmos IBC协议通过哈希锁定证明交易真实性。

💎 核心总结

技术 核心特性 区块链应用场景
哈希函数 抗碰撞、隐藏性、谜题友好 区块链接、PoW挖矿、Merkle树验证
数字签名 不可伪造、不可抵赖、完整性 交易身份验证、地址生成、智能合约

学习提示:肖臻教授强调密码学是区块链的“信任基础设施”,理解其原理是掌握区块链安全机制的前提。建议结合Remix工具实践哈希计算与签名验证,加深对BTC/ETH交易流程的理解。

以下是肖臻《区块链技术与应用》第二课“数据结构”的详细讲解,重点围绕区块链核心数据结构展开,结合比特币实现进行说明:

⛓️ 一、区块链的链式结构(核心)

区块链本质是由哈希指针连接的区块链表,与普通链表的本质区别在于用哈希指针替代了普通指针。

  1. 哈希指针(Hash Pointer)

  • 结构:存储前一个区块的内存地址 + 该区块的哈希值(如 SHA-256(区块内容))。

  • 作用

  • 验证数据完整性:修改任一区块内容会导致其哈希值变化,后续所有区块的哈希指针失效。

  • 轻节点支持:只需保存最新区块哈希值即可验证整条链的篡改(如比特币SPV钱包)。

  • 创世区块:首个区块的 prev_hash 硬编码为全0(如 000...000),无前驱区块。

  1. 区块结构拆分 每个区块分为两部分:

  • 区块头(Block Header):存储元数据(约80字节),包含关键字段:

字段 作用
版本号 标识协议版本(如比特币的 version
前一区块哈希值 链接前序区块,形成链式结构(prev_hash
Merkle根 当前区块所有交易的Merkle树根哈希值
时间戳 区块生成时间(Unix时间戳)
难度目标 当前PoW挖矿的难度阈值(bits
Nonce 随机数,矿工调整以满足难度目标
  • 区块体(Block Body):存储交易列表(如比特币的 transactions)。

  • 交易按Merkle树组织,根哈希值存入区块头。

🌳 二、Merkle树(Merkle Tree)

用于高效验证区块内交易的完整性,本质是哈希二叉树

  1. 结构原理

  • 叶节点:单笔交易的哈希值(如 H(tx1))。

  • 非叶节点:子节点哈希拼接后再哈希(如 H(H(tx1) + H(tx2)))。

  • 根节点(Merkle Root):所有交易哈希的最终摘要,存入区块头。

  1. 核心功能

  • 防篡改:修改任意交易会连锁改变父节点哈希直至根节点,导致区块无效。

  • 轻节点验证(Merkle Proof)

  • 存在性证明:全节点向轻节点提供从目标交易到根节点的路径哈希值,轻节点逐层计算验证(复杂度O(log n))。

  • 不存在性证明:需全节点提供完整Merkle树(复杂度O(n)),比特币因交易未排序不支持高效验证。

  1. 比特币中的应用

  • 每个区块的区块体交易构建Merkle树,根哈希写入区块头。

  • 轻节点仅保存区块头即可验证交易是否被包含。

🔍 三、数据结构对比与演进

  1. 普通链表 vs 区块链

特性 普通链表 区块链
指针类型 内存地址指针 哈希指针(地址+哈希值)
防篡改 修改任一区块导致后续全部失效
存储需求 需保存全部节点 轻节点仅需保存最新区块头
  1. Merkle树优化方向

  • Sorted Merkle Tree:交易按哈希值排序,支持高效不存在性证明(比特币未采用)。

  • Merkle Patricia Trie(MPT):以太坊采用,结合前缀树压缩和Merkle验证,高效存储账户状态。

⚙️ 四、数据结构如何保障区块链特性

  1. 不可篡改性

  • 链式哈希指针 + Merkle树形成双重校验:篡改需重算所有后续区块哈希及Merkle根,计算成本极高。

  1. 去中心化

  • 轻节点依赖Merkle Proof验证交易,无需存储全链数据(比特币全节点约400GB,轻节点仅需数MB)。

  1. 高效验证

  • Merkle Proof使交易验证复杂度从O(n)降至O(log n),适合移动设备等低资源环境。

💎 总结:数据结构的核心价值

区块链通过哈希指针链 + Merkle树构建了“可验证不可篡改”的分布式账本:

  • 哈希指针 → 确保链式历史不可逆

  • Merkle树 → 实现交易高效验证与轻节点支持

  • 区块头/体分离 → 平衡安全性与存储效率

学习建议:结合代码实践(如Python实现Merkle树)或比特币区块浏览器(如blockchain.com)观察真实区块结构,深化理解。

以下是肖臻《区块链技术与应用》第三课“比特币协议”的详细解析,结合课程内容与比特币核心技术原理,从协议目标、核心机制到实际运行进行全面拆解:

⚙️ 一、比特币协议的设计目标

比特币协议的核心是解决去中心化电子现金系统的三大难题:

  1. 去信任化(Trustless) 无需银行等第三方,通过密码学与共识机制确保交易真实。

  1. 防双花(Double-Spending Prevention) 确保同一笔比特币不被重复使用。

  1. 抗审查(Censorship Resistance) 任何人均可参与交易,不受地域或身份限制。

🔗 二、协议核心机制解析

1. 区块链结构与数据不可篡改性
  • 链式哈希指针 每个区块头包含前一区块的哈希值(如 prev_hash),修改任一区块会导致后续所有哈希失效。

  • Merkle树 交易哈希值分层聚合为根哈希(存入区块头),轻节点通过 Merkle Proof(路径哈希)验证交易是否存在,复杂度仅O(log n)。

2. 工作量证明(PoW)与共识形成
  • 挖矿本质 矿工寻找随机数Nonce,使区块头哈希值满足: SHA-256(Block Header) ≤ Target(目标值由网络难度决定)。

  • 难度动态调整 每2016个区块(约2周)根据全网算力调整Target,维持出块时间约10分钟。

  • 最长链原则 节点默认接受最长链为有效链,攻击者需掌握51%算力才可能篡改历史。

3. UTXO模型:比特币的“账户体系”
  • 未花费交易输出(Unspent Transaction Output) 比特币余额由UTXO集合构成,交易需引用历史UTXO作为输入,并生成新UTXO。 示例: Alice向Bob支付1 BTC:

  • 输入:引用Alice之前收到的某笔UTXO(如2 BTC)。

  • 输出:生成Bob的1 BTC UTXO + Alice的找零1 BTC UTXO。

  • 优势

  • 并行交易处理,避免账户余额锁。

  • 天然支持交易溯源(每笔UTXO可追溯至创世区块)。

4. 脚本系统:可编程的交易验证
  • 锁定脚本(Locking Script)与解锁脚本(Unlocking Script)

  • 锁定脚本(输出端):定义UTXO花费条件(如“需提供Bob的签名”)。

  • 解锁脚本(输入端):提供满足条件的证据(如“Bob的签名”)。 典型脚本OP_DUP OP_HASH160 <PubKeyHash> OP_EQUALVERIFY O``P_CHECKSIG(验证签名与公钥匹配)。

  • 扩展性 通过脚本可支持多重签名、时间锁等复杂逻辑,为智能合约奠基。

5. P2P网络与交易传播
  • Gossip协议 节点将交易/区块随机转发给邻居,指数级扩散至全网。

  • SPV节点(轻节点) 仅下载区块头(约80字节/块),通过Merkle Proof验证交易,存储需求仅全节点的0.1%。

⚠️ 三、协议面临的挑战与解决方案

问题 原因 改进方案
交易吞吐量低 区块大小限制(1MB) SegWit(隔离见证)扩容
能源消耗高 PoW算力竞争 转向PoS(以太坊2.0)或Layer2
交易延展性 签名可修改不影响交易有效性 SegWit将签名移出交易ID计算

🔮 四、协议演进:分叉与升级

  1. 软分叉(Soft Fork)

  • 特点:向后兼容,未升级节点仍可验证交易(如SegWit)。

  • 案例:SegWit将签名数据移至新区块结构,释放区块容量。

  1. 硬分叉(Hard Fork)

  • 特点:规则不兼容,导致链分裂(如比特币现金BCH)。

  • 触发条件:社区对协议升级方向分歧(如区块大小从1MB增至8MB)。

💎 总结:比特币协议的核心价值

  • 安全基石:PoW+密码学保障去中心化信任。

  • 经济模型:区块奖励(新币发行)+交易费激励矿工维护网络。

  • 可扩展生态:脚本系统为DeFi、NFT等应用提供底层支持。

学习建议:

  1. 使用比特币区块浏览器查看真实交易结构(如输入/输出脚本)。

  1. 阅读https://bitcoin.org/bitcoin.pdf第4节“工作量证明”,理解PoW设计动机。

  1. 代码实践:用Python模拟UTXO模型交易验证流程。

分布式共识(Distributed Consensus)是分布式系统领域的核心问题,指在由多个独立节点组成的系统中,所有节点如何就某个值(或决策)达成一致,即使部分节点可能发生故障或网络存在延迟/分区。它是构建可靠、一致分布式系统(如区块链、数据库集群、分布式存储)的基础。

一、为什么需要分布式共识?

分布式系统的核心挑战在于节点间的不确定性

  1. 网络不可靠:消息可能延迟、丢失或乱序(如跨数据中心的通信)。

  1. 节点故障:部分节点可能宕机、响应慢或恶意行为(如拜占庭节点)。

  1. 时钟不同步:节点本地时钟无法保证绝对一致,无法依赖时间戳排序。

典型场景

  • 数据库集群需要确保多个副本的数据一致(如MySQL主从同步)。

  • 区块链网络需要所有节点对交易顺序和账本状态达成一致(如比特币)。

  • 分布式存储系统需保证多个存储节点的数据副本一致(如Ceph)。

二、分布式共识的核心问题

共识算法需解决以下关键问题:

  1. 一致性(Agreement):所有正常节点最终决定相同的值。

  1. 有效性(Validity):若所有节点初始提议同一个值,则最终决定必须是该值。

  1. 容错性(Fault Tolerance):在部分节点故障(或恶意行为)时仍能达成共识。

  1. 终止性(Termination):算法必须在有限时间内结束,避免无限等待。

三、经典共识算法与分类

根据容错能力和假设条件,共识算法分为两类:

1. Crash Fault Tolerance (CFT):容忍节点宕机

假设节点可能宕机,但不会恶意行为(诚实节点)。

代表算法:Paxos、Raft

  • Paxos(1989年提出):

  • 核心思想:通过“提案-接受”机制,在多个节点间对某个值达成多数派同意。

  • 特点:理论严谨但实现复杂,常被视为分布式共识的“基础模板”。

  • Raft(2013年提出):

  • 核心思想:将共识过程拆分为“Leader选举”“日志复制”“安全性检查”三个子问题,简化理解与实现。

  • 特点:更易工程化(如etcd、Consul使用Raft),但仅容忍少数节点故障(N/2-1)。

示例

  • Kubernetes的etcd使用Raft保证集群配置一致性;

  • TiDB的TiKV组件依赖Raft实现多副本数据同步。

2. Byzantine Fault Tolerance (BFT):容忍拜占庭故障

假设部分节点可能任意作恶(如发送矛盾信息、伪造数据)。

代表算法:PBFT、PoW、PoS

  • PBFT(Practical Byzantine Fault Tolerance)(1999年提出):

  • 核心思想:通过多轮消息交换(预准备、准备、提交阶段)验证节点一致性,最终多数派达成共识。

  • 特点:理论可容忍最多f个恶意节点(总节点数N≥3f+1),但通信复杂度高(O(N²))。

  • 应用:早期区块链(如Hyperledger Fabric)、航空航天系统。

  • PoW(Proof of Work)(比特币提出):

  • 核心思想:节点通过计算难题竞争记账权,最长链规则解决冲突,依赖算力保证安全性。

  • 特点:容忍≤50%算力作恶,但能耗高、效率低。

  • PoS(Proof of Stake)(以太坊2.0采用):

  • 核心思想:节点按持有代币量和时长投票,权益越高越可能被选为记账节点。

  • 特点:降低能耗,但存在“富者更富”问题。

关键区别

  • CFT算法(如Raft)假设节点仅会宕机,通信复杂度低(O(N)),适合企业级应用;

  • BFT算法(如PBFT)需应对恶意节点,通信复杂度高,但更适合开放网络(如区块链)。

四、共识算法的核心挑战

  1. 性能与扩展性

  • 传统共识算法(如PBFT)的通信复杂度随节点数平方增长,难以支撑大规模节点(如物联网场景)。

  • 解决方案:分片(Sharding)、分层共识(如以太坊2.0的信标链+分片链)。

  1. 最终一致性 vs 强一致性

  • 强一致性(如Raft)要求所有节点实时同步,牺牲部分可用性(CAP定理);

  • 最终一致性(如Gossip协议)允许短暂不一致,适合高可用场景(如Cassandra)。

  1. 安全性与活性权衡

  • BFT算法需在“防止作恶”(安全性)和“保证进展”(活性)间平衡,例如PBFT通过超时重试机制避免死锁。

五、共识在区块链中的特殊性

区块链网络是典型的“开放、匿名、拜占庭环境”,其共识需额外解决:

  1. 激励机制:如何鼓励诚实节点参与(如比特币的区块奖励)。

  1. 动态成员管理:允许节点自由加入/退出(如以太坊的PoS验证者选举)。

  1. 双花攻击防护:通过共识规则(如最长链原则)确保交易唯一性。

趋势

  • 从PoW转向PoS(降低能耗);

  • 结合分片和Layer2扩容(如以太坊2.0+Rollups);

  • 跨链共识(如Polkadot的GRANDPA协议)。

六、总结

  • CFT场景:优先选Raft/Paxos(如数据库、配置管理)。

  • BFT场景:需权衡性能与安全性(如联盟链选PBFT,公链选PoS/PoW)。

  • 未来方向:高效BFT算法(如HotStuff)、随机化共识(如Algorand)、融合AI的动态共识。

分布式共识的本质是通过规则设计,在充满不确定性的分布式环境中“建立信任”,是区块链、元宇宙等技术的底层基石。

比特币的分布式共识基于工作量证明(PoW)机制,通过算力竞争确保网络节点对交易和账本状态达成一致,核心逻辑如下:

一、核心机制:工作量证明(PoW)

  1. 挖矿过程

  • 节点(矿工)收集未确认的交易,打包成候选区块。

  • 通过不断尝试随机数(nonce),计算区块头哈希值,使其满足前N位为0的难度目标(如比特币当前要求前19位为0)。

  • 这个过程需消耗大量算力,类似“解谜”,最先完成的节点获得记账权。

  1. 最长链规则

  • 若多个节点同时找到合法区块,网络暂存多条链,后续节点优先在最长链(即包含最多工作量的链)上继续挖矿。

  • 随着时间推移,短链会被淘汰,最终所有节点收敛到同一条链。

二、关键特点

  1. 去中心化与安全性

  • 无需中心机构,任何节点均可参与挖矿,只要控制超过50%的算力即可篡改区块链(实际需超51%攻击,成本极高)。

  • 历史交易通过哈希链锚定,修改任意区块需重新计算后续所有区块,几乎不可行。

  1. 激励机制

  • 成功挖矿的节点获得区块奖励(比特币)和交易手续费,激励节点持续参与。

  • 奖励每21万个区块减半(约4年),从最初的50 BTC降至当前6.25 BTC。

三、优势与挑战

优势 挑战
抗女巫攻击(需真实算力) 能耗高(全球矿场年耗电量≈荷兰全国)
机制简单,易于实现 确认速度慢(平均10分钟/区块)
抗审查性强 硬件垄断(ASIC矿机集中算力)

四、与其他共识机制的对比

共识类型 代表项目 核心逻辑 典型场景
PoW 比特币 算力竞争,最长链优先 公链(强去中心化需求)
PoS 以太坊2.0 权益质押,随机选举验证者 公链/联盟链(追求效率)
PBFT Hyperledger 多轮投票,容忍拜占庭节点 联盟链(低延迟场景)

五、总结

比特币的分布式共识通过PoW+最长链规则,在无信任的开放网络中实现了去中心化、不可篡改、抗攻击的目标,奠定了区块链技术的基石。但其高能耗和低效率的缺点,也推动了PoS等新型共识机制的探索。


网站公告

今日签到

点亮在社区的每一天
去签到