Blockchain Fundamentals Summary

jerichou
2025-05-14 / 0 评论 / 6 阅读 / 正在检测是否收录...

一、区块链

1.定义

对区块链最好的描述是将其描述为一个公共数据库,它由网络中的许多计算机更新和共享。

"区块"指的是数据和状态是按顺序批量或"区块"存储的。

"链"指的是每个区块加密引用其父块。 换句话说,区块被链接在一起。 在不改变所有后续区块的情况下,区块内数据是无法改变,但改变后续区块需要整个网络的共识。

网络中的每台计算机都必须就每个新区块和链达成一致。 这些计算机被称为“节点”。 节点保证所有与区块链交互的人都有相同的数据。 要完成此分布式协议,区块链需要一个共识机制。

以太坊采用pos共识机制。 任何想在链上添加新区块的人都必须质押以太币(以太坊原生货币)做为抵押品并运行验证者软件。 接着,可以随机选择这些“验证者”来提出区块,再由其他验证者检查并添加到区块链中。 存在一种奖励和惩罚体系,有力地激励参与者尽可能地诚实和保持在线。

2.以太的pos和pow联系

2.1. 基本机制

维度PoW(比特币、早期以太坊)PoS(以太坊2.0、Cardano)
验证方式矿工通过算力竞争解决数学难题(哈希碰撞)验证者通过质押代币获得出块权(随机选择)
资源消耗依赖高能耗硬件(ASIC/GPU),电力成本极高仅需普通服务器,能耗极低(约为PoW的0.1%)
出块速度比特币:10分钟/区块;以太坊PoW:15秒/区块以太坊PoS:12秒/区块(更稳定)

2.2. 安全性对比

维度PoWPoS
攻击成本需控制51%算力(硬件+电力成本)需控制2/3质押代币(经济成本更高)
防御手段算力竞争使攻击代价高昂Slashing罚没机制(作恶者质押代币被销毁)
分叉风险临时分叉常见(需等待多个确认)几乎无分叉(快速最终性)

2.3. 经济模型

维度PoWPoS
参与者矿工(投入硬件和电力)质押者(锁定代币)
收益来源区块奖励+交易费质押奖励+交易费
中心化风险矿池集中化(少数矿池控制多数算力)富者愈富(大质押者收益更高)

2.4. 去中心化程度

维度PoWPoS
参与门槛高(需专业矿机)较低(普通用户可质押)
硬件依赖ASIC/GPU垄断,普通用户难参与无需特殊硬件,节点易部署
治理权力算力决定话语权质押代币量决定话语权

2.5. 典型应用

  • PoW:比特币(BTC)、莱特币(LTC)、早期以太坊(ETH 1.0)。
  • PoS:以太坊2.0(ETH)、Cardano(ADA)、Solana(SOL)。

2.6.为什么以太坊从PoW转向PoS?

  1. 能源效率:PoS能耗仅为PoW的0.1%,更环保。
  2. 安全性:PoS的Slashing机制使攻击成本远高于PoW。
  3. 可扩展性:PoS为分片链(Sharding)等扩容方案铺路。

3.以太坊(ETH)还为网络提供加密经济安全,主要通过以下三种方式实现:

  1. 奖励机制:用于激励验证者——既奖励正常提议区块的验证者,也奖励揭发其他验证者不诚实行为的验证者;
  2. 质押抵押:验证者需要质押ETH作为担保,一旦发现恶意行为,其质押的ETH将被销毁;
  3. 共识权重:在新区块的"投票"过程中,ETH持有量决定投票权重,直接影响共识机制中分叉选择算法的决策。

4.EVM(Ethereum Virtual Machine)

​ EVM是一个去中心化的虚拟执行环境,其核心特征包括:

全局一致性1.所有以太坊节点以完全相同的逻辑执行代码
2.确保全网状态的一致性
智能合约执行层1.作为智能合约的专用运行时环境
2.节点通过运行EVM处理合约调用请求
Gas计量体系1.采用"gas"作为计算资源计量单位
2.精确量化每项操作的计算成本
3.实现双重保障:
✓ 网络资源高效分配
✓ 基础层安全防护

4.1.EVM的本质

  • EVM(Ethereum Virtual Machine) 是以太坊的运行时环境,专门用于执行智能合约的字节码(EVM Code)
  • 类比eBPF

    • 相似点:两者都是基于字节码的虚拟机,使用JIT(即时编译)技术优化执行。
    • 不同点

      特性EVMeBPF
      应用场景执行智能合约(去中心化)内核数据处理(网络/安全)
      运行环境区块链节点(全球分布式)Linux内核(单机)
      权限控制无特权限制(Gas费约束)受内核严格沙盒限制
      JIT优化有(如Ethereum JIT)有(如LLVM JIT)
EVM Code(字节码)
  • 智能合约的编译结果:开发者用Solidity/Vyper编写合约,编译为EVM字节码。

    // Solidity源码
    contract Example {
        function add(uint a, uint b) public pure returns (uint) {
            return a + b;
        }
    }

    → 编译为EVM字节码(十六进制):

    0x6080604052348015600f57600080fd5b506004361060285760003560e01c806...
  • 执行过程

    1. EVM解析字节码,按指令逐条执行。
    2. 使用栈(Stack)内存(Memory)临时存储数据(见下文)。

4.2. EVM的栈(Stack)与内存(Memory)

(1)EVM栈

  • 作用:用于临时存储计算中间值(类似CPU寄存器)。
  • 特点

    • 深度固定:最多1024个槽位(每个槽位32字节)。
    • 操作受限:只能通过PUSH/POP/SWAP等指令访问栈顶。
  • 示例
    // Solidity中的加法操作 → EVM字节码
    add(a, b) → PUSH1 a, PUSH1 b, ADD
    栈状态变化
    | Stack |       |
    |-------|-------|
    |       |       | ← 初始空栈
    |     a |       | ← PUSH1 a
    |     b |     a | ← PUSH1 b
    |  a+b  |       | ← ADD(弹出a和b,压入结果)
(2)EVM内存
  • 作用:临时存储复杂数据(如数组、字符串)。
  • 特点

    • 动态扩容:按需扩展,但需支付Gas费。
    • 易失性:仅在当前合约调用期间存在,调用结束后清空。
  • 示例

    function storeData() public {
        bytes memory data = new bytes(100); // 分配100字节内存
    }

    → EVM会分配内存并记录偏移量供后续使用。

4.3. 智能合约与EVM的关系

(1)智能合约的生命周期

  1. 编写:用Solidity/Vyper等语言编写逻辑。
  2. 编译:生成EVM字节码和ABI(应用二进制接口)。
  3. 部署:将字节码作为交易发送到链上,存储在合约地址中。
  4. 调用:用户通过交易触发合约函数,EVM执行对应字节码。
(2)合约与EVM的交互
  • 每个合约调用:创建一个独立的EVM实例,隔离执行环境。
  • Gas机制:限制计算和存储资源,防止无限循环或滥用。

4.4. 质押节点与EVM的关系

(1)质押节点的组成

以太坊PoS节点分为两部分:

  1. 执行层(Execution Layer)

    • 运行EVM,处理交易和智能合约(如Geth、Nethermind客户端)。
  2. 共识层(Consensus Layer)

    • 负责PoS共识(如Prysm、Lighthouse客户端),验证区块和投票。
(2)质押者的角色
  • 成为验证者:需质押32 ETH并运行执行层+共识层客户端
  • 职责

    • 区块提议者:打包交易并生成新区块(需执行EVM)。
    • 投票验证者:对其他区块进行签名确认(不直接涉及EVM)。
(3)EVM的分布性
  • 每个节点都有EVM:所有完整节点(包括质押节点)本地运行EVM,独立验证交易和合约。
  • 全局一致性:所有节点的EVM必须对同一交易输出相同结果(确定性执行)。

二、Smart Contracts

1. 智能合约的本质

智能合约是存储在以太坊区块链上的程序,由代码(函数)和数据(状态)组成,具有以下核心特性:

  • 链上账户:拥有独立的地址(如 0x742...d35),可以持有ETH余额并接收交易。
  • 不可篡改:一旦部署,代码和状态无法被修改(除非合约自带自毁逻辑)。
  • 自动执行:通过交易触发,严格按代码逻辑运行,无需第三方干预。

2. 智能合约 vs. 普通账户

特性智能合约账户普通用户账户(EOA)
控制者代码逻辑私钥持有者
创建方式通过交易部署合约代码私钥生成地址
触发行为需外部交易调用函数可主动发起交易
代码存储有(EVM字节码)

3. 智能合约的核心组成部分

(1)代码(Functions)
  • 可调用函数:定义合约的行为逻辑(如转账、铸造NFT、投票等)。

    function mintNFT(address to, uint256 tokenId) public {
        _mint(to, tokenId); // 内部实现NFT铸造
    }
(2)数据(State)
  • 状态变量:存储在链上的持久化数据(如余额、所有权记录)。

    mapping(uint256 => address) private _owners; // 记录NFT所有者
    uint256 public totalSupply;                 // NFT总供应量
(3)事件(Events)
  • 日志记录:用于前端监听合约状态变化(如NFT转账)。

    event Transfer(address indexed from, address indexed to, uint256 tokenId);

4. 智能合约的生命周期

  1. 编写:用Solidity/Vyper等语言定义逻辑。
  2. 编译:生成EVM字节码和ABI(应用二进制接口)。
  3. 部署:通过交易将字节码发送到区块链,生成合约地址。
  4. 交互:用户或合约调用其函数(如mintNFT)。

5. 智能合约的不可逆性

  • 代码不可变:默认无法升级或删除(除非代码中包含selfdestruct)。
  • 交易不可逆:一旦执行(如NFT铸造),状态变更永久记录在链上。

三、密码学基础

1.数字签名

  • Alice想证明某个消息是自己发送的
  • Alice用自己的私钥签名 其他人可以用Alice的公钥验证签名的有效性
  • 在没有私钥的情况下无法伪造签名
  • ECDSA基于椭圆曲线的数字签名

2.钱包地址

  • 每个地址对应了一对公私钥
  • 私钥=>公钥=>钱包地址

3.靠哈希算法出块pow

  • 暴力枚举计算哈希小于某个值或者哈希值前面有多少个0
  • 没有除了暴力枚举计算满足要求的哈希 通过算力的分散性保证去中心化出块

4.靠哈希算法维护最长链,防止攻击

  • 每一个块的头部都包含上一个区块的哈希值
  • 想要修改之前区块的某个内容 需要从那个区块开始后面的所有区块都需要修改
  • 枚举哈希很难 很难对抗全网算力算出新链

5.默克尔树

  • 一种机遇哈希的树状结构
  • 依靠哈希快速确认某个值是否在一个集合中的数据结构
  • 常用于区块存储交易 发行白名单确认等场景
  • 某个节点的哈希值生成父节点的哈希值直至根节点的哈希值 只要改了一个节点的数据就会导致根节点的哈希值变化

四、layer 2

1.rollup

Rollup 是什么?

Rollup 是一种区块链扩容技术,旨在解决以太坊等区块链网络的高 Gas 费和低吞吐量问题。它的核心思想是:

  • 将大量交易“打包”到链下计算,仅将少量关键数据提交到主链(Layer 1)。
  • 利用主链的安全性,同时大幅提升交易处理速度并降低成本。

1.1 Rollup 的核心原理
(1)交易执行移到链下
  • 传统区块链(如以太坊主网):每个节点需要执行并验证所有交易,导致速度慢、成本高。
  • Rollup

    • 交易在链下(Layer 2)批量执行。
    • 仅将交易数据的压缩摘要(Merkle 根)和状态变化证明提交到主链。
(2)依赖主链保障安全性
  • Rollup 的最终结算和争议处理仍依赖 Layer 1(如以太坊)。
  • 即使链下运营商作恶,用户仍可通过主链挑战并恢复资金。

1.2. Rollup 的两种主要类型

Rollup 分为两类,区别在于如何证明交易的有效性

类型Optimistic RollupZK-Rollup(零知识证明 Rollup)
验证方式默认信任,欺诈时挑战(Fraud Proof)每笔交易用零知识证明(ZK-SNARKs)验证
最终性7 天挑战期(延迟高)即时确认(延迟低)
计算开销低(无需复杂证明)高(生成 ZK 证明需要大量计算)
隐私性透明(交易数据公开)可选隐私(ZK 可隐藏细节)
代表项目Arbitrum, OptimismzkSync, StarkNet, Scroll

(1)Optimistic Rollup(乐观 Rollup)
  • 核心假设:假设所有交易都是诚实的,除非有人提出挑战。
  • 工作流程

    1. 运营商批量处理交易,提交状态根到主链。
    2. 如果有欺诈,挑战者可在 7 天内提交欺诈证明(Fraud Proof)。
    3. 主链验证后回滚错误交易。
  • 优点:兼容 EVM(适合通用智能合约),Gas 费低。
  • 缺点:提款需要等待挑战期(约 7 天)。

(2)ZK-Rollup(零知识证明 Rollup)
  • 核心机制:每批交易生成一个零知识证明(ZK-SNARK/STARK),证明交易有效。
  • 工作流程

    1. 交易在链下执行并生成 ZK 证明。
    2. 证明和状态变化提交到主链。
    3. 主链验证证明后立即确认交易。
  • 优点

    • 即时最终性(无需等待挑战期)。
    • 更高吞吐量(证明可压缩大量交易)。
  • 缺点

    • 生成 ZK 证明计算复杂,对通用智能合约支持较晚(如 zkEVM)。

1.3. Rollup 的关键技术
(1)数据压缩
  • Rollup 将交易数据压缩后存储在链上(如仅保存交易哈希、签名聚合)。
  • 例如:

    • 普通转账:原始数据 100B → 压缩后 10B。
    • 智能合约调用:通过状态差异记录而非完整输入。
(2)状态根(State Root)
  • 表示 Rollup 链的当前状态(账户余额、合约存储等)。
  • 主链只需存储最新状态根,而非完整历史。
(3)欺诈证明 vs 有效性证明
Optimistic Rollup(欺诈证明)ZK-Rollup(有效性证明)
证明类型仅在争议时生成每批交易必须生成
安全性依赖诚实多数假设数学证明(密码学保证)
延迟高(需挑战期)低(即时验证)

1.4. Rollup 的典型应用
(1)DeFi(去中心化金融)
  • Uniswap 在 Arbitrum(Optimistic Rollup)上部署,降低交易费。
  • dYdX 使用 StarkEx(ZK-Rollup)实现高性能衍生品交易。
(2)NFT 和游戏
  • Immutable X(基于 StarkWare)提供零 Gas 费的 NFT 交易。
  • Sorare(足球 NFT 游戏)使用 ZK-Rollup 处理海量交易。
(3)支付网络
  • Loopring(ZK-Rollup)实现低成本、高速的代币转账。

1.5. Rollup vs 其他扩容方案
方案吞吐量安全性兼容性代表项目
Rollup依赖主链高(EVM 兼容)Arbitrum, zkSync
Plasma依赖退出机制低(仅支付)OMG Network
侧链(Sidechain)独立安全性中(需跨链桥)Polygon PoS
状态通道极高依赖参与者在线低(特定场景)Raiden Network

1.6. 未来发展方向
  • ZK-EVM:让 ZK-Rollup 完全兼容以太坊智能合约(如 zkSync 2.0、Scroll)。
  • 混合 Rollup:结合 Optimistic 和 ZK 的优势(如 Optimism 未来可能集成 ZK)。
  • 去中心化排序器:防止 Rollup 运营商垄断交易排序(当前多为中心化控制)。

总结

Rollup 通过链下执行 + 链上验证,在保持安全性的同时大幅提升性能,是以太坊扩容(如 Danksharding)的核心组件。选择 Optimistic 还是 ZK 取决于需求:

  • 追求低成本和 EVM 兼容性 → Optimistic Rollup(Arbitrum/Optimism)。
  • 需要即时最终性和高吞吐 → ZK-Rollup(zkSync/StarkNet)。

2.零知识证明

2.1. 零知识证明是指一方(证明者)向另外一方(验证者)证明一个陈述是正确的 而无需透露除该陈述是正确外的其他信息

  • 证明者:负责计算交易并且把这些交易聚合成零知识证明
  • 验证者:验证证明者提交的零知识证明的有效性
  • 验证者发送一个随机数,证明者使用私钥生成签名发送给验证者,验证者根据公钥验证签名的合法性

2.2 zk-SNARK

  • 非交互性:证明者向验证者一次性发送一个消息,两者无需进行交互。
  • 简洁性:验证速度快,存储空间小。
  • 核心逻辑:

    • 预先的“魔法仪式”(可信设置)

      • 一群人共同生成一组公共参数(类似“魔法黑板”),包含加密的秘密数字。
      • 完成后,原始秘密会被销毁,确保无人作弊。
    • 证明者生成“密码纸条”

      • 你用公共参数和你的秘密(如方程的解),计算出一个简短的证明(类似“纸条”)。
      • 这个证明利用了数学魔法(椭圆曲线、多项式),使得:

        • 验证者能快速检查。
        • 但无法从证明反推你的秘密。
  • 应用:
    • zcash:
      • 一种隐私优先的加密货币,允许用户选择性地隐藏交易信息(发送方、接收方、金额),同时保证交易合法性。
      • 核心功能

        • 屏蔽交易(Shielded Transactions):使用 zk-SNARK 证明交易有效,但不透露任何细节。
        • 透明交易(Transparent Transactions):类似比特币,公开所有信息(可选)。
      • 工作流程

        1. 隐私交易生成

          • 发送方生成 zk-SNARK 证明(证明自己有权花费资金,且金额平衡)。
          • 交易中仅包含加密的金额和地址,以及 zk-SNARK 证明(约 200 字节)。
        2. 矿工验证

          • 矿工验证 zk-SNARK 证明的合法性,无需知道具体交易内容。
          • 如果证明有效,交易被打包到区块。
      • 举例

        • Alice 向 Bob 转 1 ZEC,但链上只看到“有人转了一笔钱”,不知道是谁、多少钱。
        • 只有 Alice 和 Bob 能通过“查看密钥”解密交易详情。
    • filecoin:
      • 是一个去中心化存储市场,用户支付代币(FIL)存储文件,矿工提供存储空间并获得奖励。
      • 核心问题:如何证明矿工真的存储了用户的数据,且未作弊?
      • 解决方案

        • 复制证明(PoRep):矿工必须证明自己存储了数据的唯一副本(防止重复存储同一份数据骗奖励)。
        • 时空证明(PoSt):矿工需持续证明自己仍在存储数据(防止中途删除数据)。
      • zk-SNARK 的作用

        • 压缩证明

          • 矿工生成 zk-SNARK 证明,证明自己完成了存储任务。
          • 证明体积极小(几百字节),节省区块链空间。
        • 高效验证

          • 网络节点只需验证 zk-SNARK,无需下载全部存储数据。
      • 举例

        • 用户上传 1TB 电影到 Filecoin 网络。
        • 矿工 A 声称存储了该文件,并提交 zk-SNARK 证明。
        • 其他节点只需验证证明,无需下载 1TB 文件即可确认矿工诚实。

    2.3 zk Rollup项目

    • zksync
      • 基于zk-SNARK实现
      • 安全依赖初始化信任设置,要求至少有一个参与者是诚信的
      • evm兼容,可以把智能合约转换操作码来实现solidity兼容
      • 同时支持链上和链下存储
    • starkware
      • 基于zk-stark技术实现
      • 相比zk-snark具备的优势

        • 透明性:zk- stark无需信任设置
        • 扩展性:zk-stark降低了计算复杂度,生成证明速度更快
        • 抗量子攻击:使用抗冲突的哈希函数提供抵御量子攻击

2

评论 (0)

取消