Web实习计划(一)

1.12

区块链的概念

区块链是一种按某种顺序将数据区块以hash指针相连的方式组合而成的链式数据结构,并以密码学、共识算法方式保证其不可篡改和不可伪造。 (工信部定义)

区块链是一种去中心化的分布式账本技术,用于在网络节点之间安全、透明且不可篡改地记录事务数据。每条链由一系列按照时间顺序相连的“区块”组成,每个区块内部包含了多笔交易数据及元数据,确保了数据记录的完整性与可追溯性。

区块链的特点:==公开透明、难以篡改、全程追溯、去中心化==

  • 公开透明:

    任何用户通过运行比特币或者以太坊的全节点客户端都能下载完整的账本数据并查看上述交易及账 户信息。

  • 难以篡改:

    区块链系统中的链式数据结构,是由包含交易信息的区块按照时间顺序从先到后链接起来的, 这个数据结构叫做“区块链”。在区块链中,除创世区块之外,每个区块都指向前一个区块。每一个区块的区块头都包含一个名为“父区块哈希值”的字段,这个区块通过存储在这个字段中的值“链接”到前一个区块(父区块)。除创世区块以外,每一个区块的区块头都包含其父区块的哈希值,所以本区块的哈希值也受到前一个区块(父区块)哈希值的影响。因此当一个区块链的规模越大,所包含的区块越多。对任何一个区块的篡改所引发的对整个区块链的篡改工作量也将越大。 同时因为区块链系统重每一个全节点都存储着一份一模一样的区块链数据结构,因此如果要对区块链数据进行篡改,仅仅篡改一个全节点存储的区块链数据是不够的,需要同时篡改全网至少51%的全节点所存储的区块链数据。区块链系统规模越大,包含的全节点数量越多,所要篡改的节点数也就越多,难度也就越大。

区块链是由一个个区块连接成的链。有不同的区块链,主流的是比特币和以太坊。

==hash指针(反向)是区块链的核心。==

而==区块由区块和区块头组成==。区块头包含上个区块的哈希以及一些本区块信息,区块体主要是包含交易信息。

出块时间:在比特币中区块大约每10分钟出块一次,而在以太坊中大约只有10~15秒。

区块头包含的信息:(通用的字段)

字段 作用
版本号(Version) 标识区块使用的协议版本
前一个区块哈希(Prev Block Hash) 将区块按时间顺序链式连接
区块体摘要(Merkle Root / State Root) 表示区块体数据的哈希摘要
时间戳(Timestamp) 区块创建时间
难度目标 / 随机性字段 用于共识算法
Nonce / 共识相关字段 用于 PoW / PoS 验证

以太坊2022 年 9 月 15 日之后共识机制变成POS(权益证明)之后,区块头的包含的信息:

字段 说明
parentHash 父区块哈希
stateRoot 全局状态树根(账户状态)
transactionsRoot 交易 Merkle Root
receiptsRoot 回执 Merkle Root
logsBloom 日志布隆过滤器
number 区块高度
timestamp 时间戳
gasLimit / gasUsed Gas 上限 / 已使用
baseFeePerGas EIP-1559 基础费
mixHash / prevRandao PoS 随机数
beneficiary 提议者地址

BTC

比特币(BTC)是比特币的原生代币。比特币作为一种激励被赋予了很高的价值,主要来源有两个:出块奖励和交易费。

这里的来源主要是对出块奖励的细分,实质上交易费也是出块奖励,因为一个是区块链系统的区块奖励,而交易费则是矿工自己选择的交易附带的交易费,这是不固定的。而且由于区块奖励每四年减少一半,所以预计在将来BTC的流动主要还是来自于交易。

出块奖励:

矿工挖矿时会将区块体里写入含有指定地址的交易(from是0地址,to是自己)作为第一笔交易。如果矿工挖矿成功之后地址会收到出块奖励(包含区块奖励以及交易费)。初始区块奖励是50BTC,每四年奖励减半,出块奖励趋近于0。预计发行2100 万 BTC,之后,激励矿工挖矿的动力变成交易费。

区块链生态系统的运行包含以下几个关键步骤:

  1. 用户发起交易:用户通过钱包应用发起转账、智能合约调用等操作
  2. 交易广播:交易信息被广播到整个网络中的各个节点
  3. 节点验证:网络中的矿工节点验证交易的合法性(余额是否足够、签名是否正确等)
  4. 打包成块:通过共识机制(如工作量证明),矿工将验证过的交易打包成新的区块
  5. 链接上链:新区块被添加到区块链上,更新全网的账本状态
  6. 奖励发放:成功打包区块的矿工获得代币奖励和交易手续费

区块链的种类

区块链根据访问权限与治理模式,大致可分为三类。公链、私链、联盟链。

公链

  1. 公有链简称公链,是指全世界任何人都可以随时进入读取、任何人都能发送交易且能获得有效确认的共识区块链。公链是一种非许可链。

  2. 通常,公链被认为是完全去中心化的,链上数据都是公开透明的,不可更改。任何人都可以通过交易或者挖矿读取和写入数据。一般会通过代币机制(Token)来鼓励参与者竞争记账,确保数据的安全性。

  3. ==公共链是真正意义上的完全去中心化的区块链, 它通过密码学保证交易不可篡改,同时也利用密码学验证以及经济上的激励,在互为陌生的网络环境中建立共识,从而形成去中心化的信用机制。==在公共链中的共识机制一般是工作量证明(PoW)或权益证明 (PoS),用户对共识形成的影响力直接取决于他们在网络中拥有资源的占比。

  4. 公链的特性:

    • 开源
    • 保护用户免受开发者的影响
    • 访问门槛低
    • 所有数据默认公开

私链

  1. 私链是指其写入权限仅在一个组织手里的区块,是一种许可链。私链在读取权限或者对外开 放,或者任意程度地进行了限制。

  2. 私有链的价值主要是提供安全、 可追溯、不可篡改、自动执行的运算平台,可以同时防范来自内部和外部对数据的安全攻击。

私链的特性:

  • 交易速度快
  • 隐私性好
  • 交易成本低

**联盟链 **

  1. 联盟链即机构联盟的区块链,是一种许可链。

  2. 联盟链有机构间根据自行商定的协议建立而成,成员节点参与区块链运行需要根据规则获得编写的权限。

  3. 联盟链由成员节点共同维护,提供成员管理、认证、授权、监控、审计等功能。

  4. 联盟链适合机构间交易清算结算的B2B场景,勇于节省对账和清算成本,减少人为错误的发生。联盟链对安全性能要求比公链高

  5. 本质上,联盟链是私链的一种,只是私有程度不同,且联盟链权限设计要求比私链更复杂;联盟链比纯粹的私链更具可信度。

总的来说,总体而言,在对可信度、安全性有很高要求,而对交易速度不苛求的落地场景,公有链 更有优势。而对于更加注重隐私保护、交易速度和内部监管的应用,开发私链或者联盟链则更加合适。

区块链类型 节点加入方式 数据可见性 管理模式 适合场景
公链 任何人自由加入 所有人可见 去中心化(大家投票) 加密货币、公共存证
联盟链 需联盟成员邀请/审批 仅联盟成员可见 多中心化(董事会决策) 供应链、金融协作
私链 由老板严格审批 仅内部成员可见 中心化(老板说了算) 企业内部管理、审计

Web2与Web3.0与Web3

维度 Web2 Web 3.0 Web3
控制权 平台垄断 部分开放 用户自治
数据存储 中心服务器 混合存储 区块链 / IPFS
支付系统 信用卡 / 支付宝 集成支付 加密货币
典型技术 JavaScript RDF / OWL 智能合约
代表企业 腾讯 / 阿里 W3C / DBpedia Uniswap / ConsenSys
  1. Web3 ≠ Web 3.0
    • Web3 是区块链驱动的革命
    • Web 3.0 是语义网技术驱动的数据组织升级
  2. Web3 不是万能的
    • 优势:金融、产权、隐私场景
    • 劣势:不适合高频社交(如微博)

去中心化的优势和挑战:

优势:

  1. 信任最小化

    去中心化网络无需依赖中心化第三方,交易和数据由共识算法和加密证明保障,降低了 “信任成本”。

  2. 抗审查与高弹性

    数据分布存储在多个节点,单点故障或审查攻击难以完全阻断网络,提升了系统的安全性和可用性。

  3. 用户自主管理

    用户通过私钥掌控资产与数据,平台无法随意更改或冻结账户,赋予个人更高的隐私权和所有权。

  4. 开放创新生态

    区块链与智能合约构建了去中心化应用(Dapps)平台,任何开发者都可在此基础上创新并获得代币激励,促进了技术和商业模式的多样化。

挑战:

  1. 可扩展性瓶颈

    公链在节点众多时共识效率低下,吞吐量和延迟问题突出,目前各大项目正通过分片、Layer 2 方案等技术进行优化。

  2. 安全与治理难题

    区块链的不可篡改特性虽能保证数据安全,但代码漏洞或治理失衡(如 DAO 中投票权集中)也可能导致严重损失。

  3. 用户体验与成本

    完全去中心化的系统往往对普通用户不够友好,如私钥管理复杂、交易手续费浮动大,需要在易用性与去中心化程度之间权衡。

  4. 法律与合规风险

    去中心化和匿名特性与现行法规存在冲突,跨境监管和合规要求尚未完善,给项目方和用户带来不确定性。

以太坊

以太坊(Ethereum)是一个开源的去中心化区块链平台,通过其原生加密货币以太币(Ether,简称 ETH)提供去中心化的以太虚拟机(EVM)来处理点对点合约。

以太坊的核心创新在于 ==智能合约(Smart Contracts)== 。智能合约是存储在区块链上的可执行代码,能够在满足预设条件时自动执行操作,无需人工干预。这一特性使得以太坊不仅是数字货币的载体,更是构建去中心化应用(Dapps)、去中心化金融(DeFi)、非同质化代币(NFT)等生态系统的基础设施。

以太坊的本质定位是:

  • 通用智能合约平台
  • 去中心化的执行层(Execution Layer)
  • 可组合的金融与应用基础设施

智能合约

智能合约是一种自执行的合约,合同条款直接写入代码中,并在区块链网络上运行。它们自动执行和强制执行合同中的条款和条件,无需第三方干预。

主要有以下特点:

  • 去中心化
  • 数据透明
  • 不可篡改
  • 消除交易对手风险

以太币(ETH)是以太坊的原生代币

在以太坊上进行的任何操作或交易,都需要使用以太币(ETH)来支付相关费用。

由于区块链是去中心化的,因此在区块链上的操作都需要支付手续费给网络服务提供商。这个手续费通常称为燃料费(Gas Fee)也就是wei。1 ETH = 10^9^Gwei = 10^18^ wei

比特币和以太坊的区别

维度 比特币(Bitcoin) 以太坊(Ethereum)
目标与定位 去中心化的数字货币,强调安全、稳定和稀缺性(总量 2100 万枚) 去中心化平台,支持智能合约和 Dapps,定位为“区块链 2.0”
编程能力 脚本语言有限,仅支持简单的交易验证逻辑 图灵完备的编程语言(如 Solidity),可开发复杂智能合约
共识机制 工作量证明(PoW),矿工通过算力竞争记账权 从 PoW 转向权益证明(PoS),通过 The Merge 实现能源效率优化
交易速度 每 10 分钟生成一个区块,交易确认较慢 区块时间约 12 秒,交易确认更快,适合高频应用
经济模型 总量固定,强调抗通胀属性 供应灵活,通过 EIP-1559 等机制可能呈现通缩趋势

以太坊的定位与演进

以太坊是一个基于区块链的 去中心化计算平台 ,它的目标是成为“全球计算机”,让任何人无需依赖第三方即可进行交易、管理数据或运行应用。为了实现这一目标,以太坊经历了多次重大升级,其中最关键的是从 工作量证明(PoW)转向权益证明(PoS) ,以及被称为 The Merge(合并) 的里程碑事件。

以太坊要解决的核心问题:

  • 无需信任的程序执行
  • 去中心化应用(dApp)
  • 可组合协议(DeFi / NFT / DAO)
1. 以太坊 1.0(PoW 阶段)

以太坊最初像比特币一样,使用 PoW(工作量证明) 机制来维护网络安全。简单来说:

  • 矿工通过计算机算力“挖矿”,争夺打包交易的权利。
  • 矿工需要消耗大量电力资源,竞争激烈。
  • 成功打包区块的矿工会获得新生成的 ETH 奖励。

问题

  • 能耗高:全球以太坊矿工的电力消耗相当于一个小国家的用电量。
  • 扩展性差:每秒只能处理约 30 笔交易(TPS),速度慢、费用高。

为了解决这些问题,以太坊启动了多次升级(如 Homestead、Metropolis),逐步优化网络性能和安全性,但核心的 PoW 机制仍未改变。

2. 以太坊 2.0 与 The Merge:从双链并行到完美合并

The Merge 完整故事

  1. 2020 年 12 月:信标链启动

    以太坊团队首先创建了一条全新的信标链(Beacon Chain),专门运行 PoS 共识机制。此时:

    • 以太坊主网继续使用 PoW 挖矿
    • 信标链独立运行 PoS 验证
    • 两条链并行存在,互不干扰
  2. 2022 年 9 月:历史性合并

    2022 年 9 月 15 日,The Merge 发生:

    • 以太坊主网“关闭”了 PoW 挖矿引擎
    • 将共识机制“插接”到信标链的 PoS 系统
    • 从此,以太坊主网由信标链保护安全
  3. 合并后的新架构

    现在的以太坊实际上是两层结构:

    • 执行层:处理交易、智能合约(原主网)
    • 共识层:管理验证者、确定区块顺序(信标链)
未来升级路线图

The Merge 只是起点,以太坊的“进化”还在继续!接下来的升级目标是:让更多人用得起、用得快、用得安全。以下是重点方向:

  1. 分片技术演进——从执行分片到数据分片

    原计划 vs 新策略

    • 原计划:将以太坊分成 64 条分片链,每条独立处理交易
    • 策略调整:专注于数据分片,配合 Layer 2 实现扩容

    当前方案

    • 数据可用性分片:为 Rollup 提供更多、更便宜的数据存储空间
    • 配合 Layer 2:主网专注安全和数据可用性,Layer 2 负责大量交易处理
    • EIP-4844 先行:通过 Blob 交易为分片技术做准备

    预期效果

    • Layer 2 成本进一步降低 90%+
    • 以太坊主网专注于做“结算层”和“数据可用性层”

    时间表:全面分片预计 2025-2026 年 启动,重点是 Proto-Danksharding

  2. EIP-4844(Cancun 升级)——“省钱神器”

    Layer 2 工作原理简述

    • Layer 2 在链下批量处理大量交易
    • 定期将交易数据“打包”提交到以太坊主网
    • 主网验证数据正确性,提供最终安全保障

    EIP-4844 的突破

    • 问题:以前 L2 提交数据需要使用常规交易,成本高昂
    • 解决方案:引入专门的“Blob 交易”类型,数据存储成本大幅降低
    • 技术细节:Blob 数据会在一定时间后自动删除,不会永久占用主网存储

    实际效果

    • L2 交易费用降低 70% - 90%

    • Arbitrum、Optimism 等主流 L2 费用降至几美分

    • 状态已于 2024 年 3 月 13 日上线主网,运行稳定

  3. ZK-Rollup 技术——“批量验证,一步到位”

    ZK-Rollup 简单理解

    • 想象你是老师,需要检查 1000 份作业
    • 普通方法:一份份检查(慢且耗时)
    • ZK 方法:学生提交一个“证明”,证明所有作业都做对了

    技术原理

    • 批量处理:在链下一次性处理数百笔交易
    • 零知识证明:生成一个简洁的“正确性证明”
    • 主网验证:以太坊只需验证这个证明,无需重新执行所有交易

    优势

    • 速度快:主网只需验证一个证明而非数百笔交易
    • 成本低:多笔交易分摊验证成本
    • 安全性高:继承以太坊主网的安全性

    代表项目:zkSync Era、Polygon zkEVM、Scroll

  4. 其他重要升级方向

    • EIP-1559 成果:已实现基础费用机制,但 Gas 费仍受网络拥堵影响较大
    • Verkle 树技术:优化状态存储结构,减少节点同步所需的数据量
    • 执行环境优化:提升 EVM 性能,支持更复杂的智能合约应用

以太坊的生态

以太坊的生态系统由多层架构组成,包括 L1(主网)、L2(二层扩展解决方案)、侧链(Sidechains) 等,共同支持高吞吐量和低费用的交易处理。

  1. Layer 1(L1)
    • 以太坊主网:核心区块链,负责最终安全性与共识。
    • EVM:以太坊虚拟机,执行智能合约代码。
    • 账户系统:外部账户(EOA)与合约账户(CA)共同构成网络基础。
  2. Layer 2(L2)
    • Rollup:通过将交易批量处理后提交至 L1,降低 Gas 费。
      • Optimistic Rollup:假设交易合法,仅在争议时验证。
      • ZK Rollup:通过零知识证明验证交易,无需链上争议。
  3. 侧链(Sidechains):独立运行的链,通过桥接与主网交互。
  4. 以太坊生态分层架构

以太坊生态可以分为以下几个层次:

1. 应用层(Application Layer)

用户直接交互的应用和界面:

  • DeFi 应用:Uniswap(去中心化交易所)、Aave(借贷协议)、Compound(借贷协议)
  • NFT 平台:OpenSea、Foundation、SuperRare
  • 钱包应用:MetaMask、Coinbase Wallet、Rainbow
  • DAO 工具:Snapshot、Aragon、Colony
2. 协议层(Protocol Layer)

以太坊的核心基础设施:

  • 共识层客户端:Prysm、Lighthouse、Nimbus、Teku
  • 执行层客户端:Geth、Nethermind、Erigon、Besu
  • 核心协议:EVM、状态管理、Gas 机制
3. 扩展层(Scaling Layer)

提升性能和降低成本的解决方案:

  • Layer 2 Rollups:Arbitrum、Optimism、Polygon zkEVM、zkSync Era
  • 侧链:Polygon PoS、xDAI(Gnosis Chain)
  • 状态通道:Lightning Network for Ethereum

以太坊文化与价值观

以太坊的文化深受 密码朋克运动(Cypherpunk) 影响,体现了对技术赋权个人、重塑社会协作的愿景:

核心价值观

  1. 去中心化治理(Decentralization)

    • 没有单一的控制者或权威机构
    • 社区通过公开讨论和 EIP(以太坊改进提案)机制共同决策
    • 验证者遍布全球,防止权力集中
  2. 无需许可与开放性(Permissionless & Open)

    • 任何人都可以使用、开发、部署智能合约
    • 开源代码,透明可审计
    • 无身份、地域、财富限制的参与门槛
  3. 抗审查性(Censorship Resistance)

    • 交易和智能合约不受政府或机构干预
    • 通过分布式验证确保网络弹性
    • 支持言论自由和经济自由
  4. 密码朋克精神(Cypherpunk Ethos)

    • 代码即法律:用算法和数学构建信任
    • 密码学保护隐私和自主权
    • 技术驱动的社会变革,而非政治手段
  5. 公共物品导向(Public Goods Orientation)

    • 优先考虑生态系统整体利益
    • 支持开源项目和基础设施建设
    • 通过各种资助计划推动创新
  6. 可持续发展理念

    • The Merge 体现了对环境责任的承诺
    • 长期主义思维,注重技术的可持续演进
    • 平衡创新速度与网络稳定性

账户

以太坊(Ethereum)中的账户分为 两种类型

  1. EOA(Externally Owned ,外部拥有账户)

    1. 外部拥有账户。最常见的账户类型,也是我们的个人账户(钱包地址)。EOA由私钥控制。将账户的公钥进行哈希运算,通常使用Keccak256算法进行哈希运算。去哈希值的最后20个字节(160位)。长度160 bit
  2. 合约账户(Contract Account)

    1. 合约账户。部署在网络上的智能合约,由在区块链上的代码控制。将调用或创建该智能合约的外部账户地址+交易数量Nonce。长度也是160bit。

    两种账户类型都能:

    • 接收、持有和发送 ETH 和 token。
    • 与已部署的智能合约进行交互。

    区别:数据存储上稍有不同, 因为外部账户无内部存储数据和合约代码,因此外部账户数据中 StorageRootCodeHash 是一个空默认值。 一旦属于空默认值,则不会存储对应物理数据库中。 在程序逻辑上,存在 code 则为合约账户。 即CodeHash为空值时,账户是一个外部账户,否则是合约账户。

    ==外部持有账户==

    • 创建帐户是免费的
    • 可以发起交易
    • 外部所有的帐户之间只能进行以太币和代币交易
    • 由一对加密密钥组成:控制帐户活动的公钥和私钥

    ==合约账户==

    • 创建合约存在成本,因为需要使用网络存储空间
    • 只能在收到交易时发送交易
    • 从外部帐户向合约帐户发起的交易能触发可执行多种操作的代码,例如转移代币甚至创建新合约
    • 合约帐户没有私钥。 相反,它们由智能合约代码逻辑控制
如何创建智能合约地址?

有两种在以太坊中创建智能合约地址的方法。

每个智能合约通过其地址在区块链中标识。该地址是一系列的长的数字和字符,它从0xba开始……但是问题是如何计算0xba。

部署在区块链上的智能合约代码是交易的一部分。当我们在区块链上==部署智能合约==时,我们需要一个钱包地址,以便流程将是第一种:钱包地址 => 交易 => 智能合约。当我们执行以太坊网络中的任何事务时,它将增加一个成为Nonce的数字。所以智能合约地址通过其钱包地址和Nonce确定。因此结论是将Nonce、发件人地址放在数组中,然后使用rlp.encode()机制,在rlp.encode()操作结果之后,使用keccak256()函数将其放置,并提供32个字节的数据。 智能合约地址使用哈希的最后20个字节。

创建智能合约地址的另一种方法是==使用成为create2opcode==。create2取决于发件人地址和合约代码以创建智能合约地址。创建一个智能合约地址并不是那么流行。

智能合约地址:智能合约地址独特地确定区块链上的智能合约,每个智能合约地址都与四个不同的字段相关联:

  • Nonce:一个计数器,用来显示外部帐户发送的交易数量或合约帐户创建的合约数量。 每个帐户只能执行具有一个给定随机数的一笔交易,以防范重放攻击,重放攻击指多次广播和重复执行已签署的交易。Nonce是一个整数,每次地址发送任何交易时都会增加。因此,在智能合约部署时间Nonce = 0之后,智能合约发送第一个交易后,Nonce将增加到1,然后依此类推。
  • Balance:这个地址拥有的 Wei 数量。 Wei 是以太币的计数单位,每个 ETH 有 1e18(10^18^) 个 Wei。如果我们将以太余额发送给智能合约,则其以太余额的增加,如果将智能合约发送到另一个地址,则其以太余额的下降。
  • CodeHash:当我们用solidity编程智能合约时,该代码将转到区块链上的存储代码字段。该哈希表示以太坊虚拟机 (EVM) 上的帐户_代码_。 合约帐户具有编程的代码片段,可以执行不同的操作。 如果帐户收到消息调用,则执行此 EVM 代码。 与其他帐户字段不同,不能更改。 所有代码片段都被保存在状态数据库的相应哈希下,供后续检索。 此哈希值称为 codeHash。 对于外部所有的帐户,codeHash 字段是空字符串的哈希。
  • storageRoot 有时被称为存储哈希。 Merkle Patricia trie 根节点的 256 位哈希已编码了帐户的存储内容(256 位整数值映射),并编码为 Trie,作为来自 256 的 Keccak 256 位哈希的映射位整数键,用于 RLP 编码的256位整数值。 此 Trie 对此帐户存储内容的哈希进行编码,默认情况下为空。

EOA地址也有四个字段:

  • Nonce:Nonce是一个整数,每次地址发送任何交易时都会增加。

  • Balance:balance将增加/降低取决于发送和接受的需求。

  • CodeHash: ==对于外部所有的帐户,codeHash 字段是空字符串的哈希。==

  • storageRoot 有时被称为存储哈希。 Merkle Patricia trie 根节点的 256 位哈希已编码了帐户的存储内容(256 位整数值映射),并编码为 Trie,作为来自 256 的 Keccak 256 位哈希的映射位整数键,用于 RLP 编码的256位整数值。==此 Trie 对此帐户存储内容的哈希进行编码,默认情况下为空。==

Gas模型

当你用钱包使用自己的 EOA 发起一笔交易(比如转账或操作合约),这件事当然 不会是免费的,你需要支付“燃料费”——也就是 Gas

Gas 是怎么计算的?

Gas 费用 = 用多少 × 每单位多少钱,就像你打车一样:

  • Gas Limit(限额):你最多愿意“烧”多少燃料。 比如你觉得最多可能需要 15 万单位,就设置 150,000。
  • Gas Price(单价):每单位燃料多少钱,用 Gwei 表示(1 Gwei = 0.000000001 ETH)。 网络越拥堵,价格越贵,就像打车高峰期加价。

所以,总费用 = Gas Limit × Gas Price

假设你设置 Gas Limit 为 150 000,Gas Price 为 100 Gwei,总费用就是 0.015 ETH。如果实际消耗 120 000 Gas,剩余 30 000 Gas × 100 Gwei = 0.003 ETH 会退还给你。

Gas 的存在有两个目的:

  • 激励矿工/验证者:你给得越多(Gas Price 越高),他们越愿意优先处理你的交易。
  • 防止资源滥用:如果有人想让合约死循环,Gas 会用光,交易失败,系统不会被拖垮。

在 EIP-1559 升级后,Gas Price 被拆分了:

以前,Gas Price 全部给矿工。 现在,分成两部分:

  • 基础费用(Base Fee):每个区块都会有,自动计算,直接销毁(直接消失)来帮助 ETH 通缩,毕竟物以稀为贵。
  • 小费(Tip):你额外加的钱,用来鼓励矿工优先处理你

以太坊虚拟机(EVM):代码的执行引擎

EVM(Ethereum Virtual Machine)是 以太坊的“大脑”,是专门用来运行智能合约的虚拟计算机。它运行在每个节点上,确保整个网络在处理代码时,结果都一致、可信任

EVM 的核心特点:

  • 图灵完备:就像真正的电脑一样,EVM 可以执行各种逻辑,比如 if 判断、循环等。
  • 全球同步:每个矿工/节点都会自己执行一遍合约代码,保证结果一样。
  • 隔离安全:EVM 把合约“关”在一个小房间里运行,不允许它乱访问用户的数据和网络,保护隐私和安全。

1.13

DeFi

DeFi,全称为 Decentralized Finance(去中心化金融),是基于区块链技术建立的金融体系,目标是提供不依赖传统银行或金融中介的服务,比如借贷、交易、支付等,让每个人都可以自由参与,无需审批、无需信任中介机构。

Uniswap

Uniswap 是以太坊上去中心化交易所(DEX)的代表。它使用 自动做市商(AMM) 机制,允许用户在无需订单簿的情况下进行代币交易。

x * y = K(L^2^)

  • **x**:池中的代币 A 数量

  • **y**:池中的代币 B 数量

  • **K(L^2^)**:一个恒定值,表示池子的总流动性

==K实际上并不恒定:==

通常 Uniswap V2 采用 XY=K 公式,但实际上 K 不是严格恒定,可以增大但不能减少。尽管AMM公式有时被称作“恒定乘积公式”

  • 如果用户多支付代币或捐赠代币,K 增大,流动性池变大
  • 如果 K 变小,交易会失败,确保资金池不会被恶意消耗。

例如:

  • 如果用户 免费存入额外代币,池子变大,但 Uniswap 不会阻止这种情况。
  • 但如果 balance0 × balance1 < reserve0 × reserve1,交易会回滚。

==Uniswap v2 最初按所提供金额的几何平均值铸造股份,流动性 = sqrt(xy)。该公式确保任何时候流动性池股份的价值基本上与最初存入的流动性比例无关……上述公式确保流动性池股份的价值不会低于该池中储备的几何平均值。==

为什么流动性计算使用 sqrt(K)
  • Uniswap V2 采用 几何均值 计算流动性: $liquidity = \sqrt{amount0 \times amount1} - MINIMUM_LIQUIDITY$
  • 为什么使用平方根?
    • 保证 LP 代币价值独立于最初存入的代币比例
    • 防止流动性计算变得不合理(如流动性翻倍却导致计算上变成四倍)。

==流动性提供者无法控制其资产售出的价格,只能根据池中代币的当前比例提供资产。如果有 100 个代币 x 和 200 个代币 y,新流动性提供者必须提供两倍于 x 的代币 y。同样的,如果用户销毁一定比例的代币,则可以赎回相应比例的代币x和代币y。==

公式变换:

image-20250319202432288

image-20250319202501060

x0:表示流入池中的代币A数量

y0:表示流出池中的代币B数量

  • (y - y0) =K/(x+x0)

  • y0 =y - K/(x+x0)

  • ==y0 = y * x0/(x+x0)==(没有手续费)

交换费率为F(0.3%(固定))

计算交换费:F*流入的代币数量

则:==y0 = (1-F)y * x0/(x+x0(1-F))==

在实践中,交换费用会添加到储备金中。因此,每笔交易实际上都会增加 K

恒定乘积公式的流动性并不是实际应用的流动性,它会减去一些最低流动性。这样做是为了防止被称为“买入通胀攻击”的攻击。

买入通胀攻击:简单的解释是,当总供应量等于0时,有很大的空间可以操纵铸造的股票数量,这可能会对后续用户铸造股份造成伤害。而防止买入通胀攻击的方法之一是铸造一些股票到0地址,通过这样做,我们可以保证一些代币被锁定在0地址内。之二是在合约部署时,由可信方注入一定的 token 和 ETH/WETH,并铸造 LP token 到一个多签或销毁地址,降低后续加入者的稀释风险。之三是在前端警告用户当总供应为 0 时交易风险。

最小流动性(Minimum Liquidity)

为了减少舍入误差增加流动性最小单位的理论精度,每个交易对的流动性池会燃烧(burn)第一批 MINIMUM_LIQUIDITY 代币

  • 对于大多数交易对来说,这个数值是极小的,影响可以忽略不计。
  • 燃烧机制是自动完成的,发生在首次流动性提供时,此后 totalSupply 将保持永久受限

Mint(铸造流动性)

如果池子是空的(即 LP 代币总供应量 = 0),那么表示还没有人提供流动性。

代码关键点解析:

  • 池子为空的检查
    • 如果池子是空的,进行初始铸造(下面详细解释)。
  • 一般情况的 Mint 逻辑:
    • 用户铸造的流动性是 amount0 / reserve0amount1 / reserve1 两者取最小值绿色框,行 126)。
    • 为什么取最小值?
      • 防止用户只存入一种代币,却获取了过多的 LP 代币
      • 保证存入的 token0token1 保持相同比例
例子:

假设池子有:

  • token0 = 10
  • token1 = 10

用户存入:

  • token0 = 10
  • token1 = 0

计算公式:

  • min(10/10, 0/10) = min(1, 0) = 0
  • 用户将无法获得 LP 代币!
为什么要这样设计?

假设池子最初有 100 token01 token1,LP 代币供应量是 1。

  • 现在某个用户存入 1 个 token1,总池子价值变为 200 美元。
  • 如果我们采用最大值计算,该用户可能获得 1 个 LP 代币,总供应量变为 2。
  • 这意味着他们以 100 美元的成本,直接占有了 50% 的流动性池,而原来的 LP 持有者被稀释了!
  • 因此,必须取最小值,确保存入代币的比例保持不变,防止被利用。
安全性检查
  • 供应比例检查:
    • 交易执行前,池子的 token0token1 比例可能会发生变化。
    • 如果另一个交易改变了储备量,用户最终获得的 LP 代币数量可能会低于预期。
    • Uniswap V2 允许一定的误差,以防止交易因为小幅变化而回滚(slippage 保护)。
解决首次铸造问题(First Minter Problem)

在流动性池中,第一个提供流动性的人 面临“通胀攻击”风险

  • Uniswap V2 销毁初始 MINIMUM_LIQUIDITY 代币,防止某个人拥有全部 LP 代币,并随意操控价格。
  • 这个方法避免了流动性恶意操纵问题,具体内容可以参考 ERC4626 的防御机制

mintFee 的计算逻辑

(1) 重要变量
  • fee:交易者支付的 0.3% swap 费用
  • mintFee:协议分得的 1/6 swap 费用(即 0.05% 交易量)
  • L:池子的 **流动性(liquidity),即 √(token0 reserves * token1 reserves)**。
  • rootK:当前池子的 流动性(含手续费)。
  • kLast上一次 mint/burn 时的流动性,用于计算增长部分。
  • totalSupply:LP 代币的总供应量。
(2) 计算 mintFee
  1. 计算池子的总流动性增长

    • 初始流动性:L_old = sqrt(reserve0_old * reserve1_old)
    • 当前流动性:L_new = sqrt(reserve0_new * reserve1_new)
    • 增量流动性 = L_new - L_old
  2. 计算协议应得份额

    • 由于协议收取 1/6 swap 费用,协议应得的流动性: $L_{protocol} = \frac{(L_{new} - L_{old})}{6}$
  3. 计算协议应该铸造的 LP 代币数(避免直接转移 token,改为稀释 LP 代币):
    $$
    mintFee = \frac{L_{protocol} \times totalSupply}{L_{new}}
    $$

流动性提供者(Liquidity Providers)

流动性提供者(LPs)并不是一个同质化的群体:

  • 被动 LPs 是希望通过投资其资产来累积交易手续费的代币持有者。
  • 专业 LPs 以做市为主要策略,通常会开发自定义工具来跟踪其在不同 DeFi 项目中的流动性头寸。
  • 代币项目方 有时会选择成为 LP,以为其代币创造一个流动的市场。这使得代币更容易买卖,并通过 Uniswap 实现与其他 DeFi 项目的互操作性。
  • DeFi 先锋 正在探索更复杂的流动性提供模式,如激励流动性、流动性作为抵押品等实验性策略。Uniswap 是这些创新的理想实验平台。

无偿损失(Impermanent Loss)

当流动性池中代币的价格与添加流动性时的价格发生变化时,就会发生无常损失,从而导致流动性提供者的价值损失。也称(发散损失)。

当你将资产(例如 ETH 和 DAI)以 50/50 比例添加到 Uniswap V2 的池中后,池子会自动执行 恒定乘积公式 $x \cdot y = k$。
当外部价格发生变化时,套利者会不断买卖,导致池内资产比例发生变化。结果就是:你的资产虽然价值没有消失,但数量上发生了变化,导致你取出来的价值比单纯“持币不动”更低。

img

  • 当价格波动越大(离开初始价格越远,无论涨还是跌),无常损失越大
  • 最大损失约为 **-100%**,当价格趋近于 0 或无限大时;
  • 价格不变(100%) 的点上,损失为 0;
  • 这只是理论损失,称为「无常」是因为如果价格最终回到原点,损失就会恢复;
  • 实际中,交易手续费(0.3%)和流动性挖矿奖励可以抵消甚至超过无常损失。

Compound

Compound是一个允许用户借贷代币的智能合约,它与你的银行类似,Compound把你的钱借给借款人,并随着时间的推移赚取利息。但与银行不同的是,你的利息是从你存入Compound的智能合约后开始复利计算的。由于整个流程中没有中间人,因此利息会比传统银行要高。与MakerDAO类似,Compound的贷款是通过超额担保确立的。借贷者将代币存入Compound中以增加他们的“借款能力”,如过借贷者的借款能力低于0,他们的抵押品将被出售以偿还债务。另外,每个资产的贷款利率是不同的,这根据资产的需求而决定。

通过Compound,你可以存入加密资产一赚取利息,也可以借入加密资产以进行投资或其他需求。传统的金融生态系统需要金融机构来提供借贷服务,而Compound通过Ethereum区块链上的一系列智能合约,实现了这个过程的自动化。通过智能合约,Compound满足了想要从闲置资产中赚取利息的贷款人与需要资产作为投资资本的借款人之间的需求。

Compound有一个名为COMP的治理Token,它赋予持有者对Compound协议变更进行投票的权利。在Defi中,需要治理Token将权利分配给用户,以保持平台的去中心化。

Compound协议让开发者可以基于以太坊建立各种各样的货币市场。所谓的货币市场,其实就是一个个的独立币池单元。每个币池里中只有一种ERC20代币,协议通过算法来决定这个池子里的币借贷的利率是多少。简单点说,这个算法会基于人们对这个币借贷的供需关系自动计算出利率。

不管你是来贷款还是放贷,你都是在跟Compound协议直接打交道。这一点跟那些点对点的借贷协议不太一样,在点对点的方案里,借贷双方会做匹配,然后你需要跟找你借钱的人(或者借你钱的人)进行沟通,双方自己商定好借款的利率、到期时间和抵押物品等等。而在Compound协议里,每个ERC20代币都有一个属于自己的借贷市场,里面包含每个用户在这个市场里的余额,以及各笔生效的借贷交易,乃至每段时期的历史利率,等等。用户可以通过抵押品的信贷额度无缝地从协议上借钱,你只需要看自己要借哪个币,不需要和别人沟通还款日期、利率,就能马上借钱。借款是实时且可预测的。每个货币市场都有一个由市场决定的浮动利率。

  • 标的资产(Underlying Token):即借贷资产,比如 ETH、USDT、USDC、WBTC 等。
  • cToken:也称为生息代币,是用户在 Compound 上存入资产的凭证。每一种标的资产都有对应的一种 cToken,比如,ETH 对应 cETH,USDT 对应 cUSDT,当用户向 Compound 存入 ETH 则会返回 cETH。取款时就可以用 cToken 换回标的资产。
  • 兑换率(Exchange Rate):cToken 与标的资产的兑换比例,比如 cETH 的兑换率为 0.02,即 1 个 cETH 可以兑换 0.02 个 ETH。兑换率会随着时间推移不断上涨,因此,持有 cToken 就等于不断生息,所以也才叫生息代币。计算公式为:exchangeRate = (totalCash + totalBorrows - totalReserves) / totalSupply
  • 抵押因子(Collateral Factor):每种标的资产都有一个抵押因子,代表用户抵押的资产价值对应可得到的借款的比率,即用来衡量可借额度的。取值范围 0-1,当为 0 时,表示该类资产不能作为抵押品去借贷其他资产。一般最高设为 0.75,比如 ETH,假如用户存入了 0.1 个 ETH 并开启作为抵押品,当时的 ETH 价值为 2000 美元,则可借额度为 0.1 * 2000 * 0.75 = 150 美元,可最多借出价值 150 美元的其他资产。

当用户存入标的资产后,Compound会根据兑换率返回标的资产相对应的cToken给到用户,作为一种存款凭证。当需要赎回存款时,用户需要将cToken还回去,Compound会根据最新的兑换率计算出需要赎回标的资产的数量并返还给用户。比如,用户存入 1 个ETH,当时的兑换率为 0.1,则返回 1/0.1 = 10 个 cETH,等到赎回时,假设兑换率已经升到了 0.15,则那 10 个 cETH 可赎回 10*0.15 = 1.5 个 ETH,多出的 0.5 个 ETH 就是利息所得。

当用户将存入的资产开启作为抵押品之后,则可以进行借款了。不过,不是所有资产都可以作为抵押品,比如 USDT 就不可以作为抵押品,其抵押因子为 0。ETH、DAI、USDC 的抵押因子都是 0.75,即 75%,表示价值 100 美元的抵押资产,可借额度为 75 美元,即最多可以借出价值 75 美元的数字资产。不过,不建议用完所有额度,不然,存在被清算的风险。

当用户的借款价值已经超过借款额度的时候,就可以被清算了。不过,智能合约没办法自动清算,所以需要外部的清算人调用智能合约的清算函数来执行清算。而为了激励第三方清算人来执行清算,就会有个清算激励,该激励由被清算人(即借款人)来承担。另外,清算人一般都是由程序化的清算服务来承担。

与 Compound V2 不同,每个 Compound 实例仅仅借出一种资产。也就是说,你只能从 USDC 市场借用 USDC,从 ETH 市场借用 ETH - 你无法借用其他任何东西。为了借用这些资产,你需要根据市场规定的抵押比例提供抵押品(该比例由治理设定)。在 Compound V3 中,可借资产被称为 base asset

MakerDAO(现已更名为 Sky):稳定币系统

MakerDAO 是一个 去中心化金融(DeFi)协议,无人控制、透明、基于智能合约运作。它主要的任务是维持 DAI 稳定币 的稳定价值并确保系统安全。MakerDAO 通过智能合约管理抵押资产,并利用 稳定费率 来调整系统中 DAI 的供需关系。

  1. 超额抵押生成 DAI

    在 MakerDAO 中,用户可以将其资产(如 ETH、BAT 或其他加密货币)抵押到系统中,并通过智能合约生成与美元挂钩的 DAI 稳定币。生成 DAI 时,用户的资产需要超额抵押,例如用户必须将价值 2 美元的资产抵押,才能生成 1 美元的 DAI。

  2. 稳定费率与清算机制

    • 为了确保 DAI 稳定,MakerDAO 使用 稳定费率 来调节市场。稳定费是用户在还款时需要支付的利息。这一机制帮助 MakerDAO 控制 DAI 的供应量,避免其脱离 1 美元的目标价格。
    • 如果抵押资产的价值下降,且用户的抵押率低于系统设定的安全阈值,系统会触发 清算,自动将抵押资产出售以偿还债务,防止系统破产。
DAI

DAI 是一种稳定币,设计上软挂钩美元(目标 1 DAI≈1 USD)。

它不是由公司发行的法币储备支持,而是由 过度抵押的加密资产 支撑。

任何人都可以通过抵押加密资产来 铸造生成 DAI。

抵押债仓(Vault, 原称 CDP)
  • 用户将加密资产(如 ETH、WBTC 等)存入智能合约中形成 抵押债仓
  • 根据抵押资产的价值,用户可以铸造一定数量的 DAI。
  • 抵押资产价值必须超过债务价值(过度抵押),以维持系统安全。
  • 如果抵押物价格下跌过快,系统将自动清算这些仓位来保障 Dai 的担保水平。

这种机制让 每个 DAI 都由价值更高的资产作为担保

MKR —— 治理 & 经济调节代币
  • MKR 是 MakerDAO 的治理代币,持有人可以参与系统参数设置(如稳定费、抵押类型等)。
  • MKR 不直接作为支付工具,但用于 投票治理与风险管理
  • 当系统出现不足时,系统可铸造新的 MKR 并卖出以弥补亏损;反之,多余收入可用来 焚烧 MKR 以降低总量。
  • 这使得治理者既承担责任也分享收益,与系统健康紧密挂钩。
MakerDAO 通过去中心化的治理架构运作:
  • MKR 持有人通过投票决定关键参数:如新增抵押类型、利率、清算比率等。
  • 投票机制包括信号投票和执行投票,前者收集意见,后者产生链上效果。
  • 去中心化确保协议由社区共识驱动,而非单个机构。

NFT

也称==ERC721==,是非同质化货币的缩写,也是一种类似于ERC20的代币标准。

  • NFT是一种不可同质化的代币,这意味着它们彼此之间有着鲜明的独特性,并且一个token不能 与同一类别的任何其他token互换。例如:一美元可以与其他任何美元互换 ,一美元的价值将于另一美元的价值相同。这些都是可替代的代币。
  • 每个NFTs都有一个uint256变量,称为tokenId。因此,对于每个EBR-721合同,合同地址键值 对 uint256 tokenId必须是唯一的。此外,dApps还应该有一个 “converter”来调节NFTs的输入 和输出过程。例如,converter将tokenId视为输入,并输出不可伪造的代币,如僵尸图像、杀 戮、游戏收藏品等。

OpenSea 是目前全球最大的 NFT 交易平台,基本上覆盖了所有主流 NFT 的交易。OpenSea 的创新在于,它不仅仅是一个交易平台,它的基础设施使得 NFT 能够快速流通,所有权记录通过区块链系统得到确认和传递。你不再需要通过传统的金融系统,而是可以直接用加密货币(如以太坊)进行交易。

Token URI:

Token URI(Token Uniform Resource Identifier,令牌统一资源标识符)是区块链和去中心化应用 程序(DApps)中的一个概念,特别是在与不可替代代币(NFT)相关的应用中。Token URI 是一个指 向元数据的链接,这些元数据描述了特定代币的属性和信息。元数据可以包括名称、描述、图像、属性 等。

以下是一些关于 Token URI 的关键点:

  1. 定义和作用:Token URI 是一个指向 JSON 文件的 URL,该文件包含了描述特定 NFT 的详细信 息。它用于为每个代币提供详细的、可读的信息,==并且节省gas==。
  2. 标准:在以太坊区块链上,ERC-721 和 ERC-1155 是最常见的 NFT 标准,这些标准都包括了 Token URI 字段。例如,ERC-721 标准中的 tokenURI 方法用于返回某个特定代币的 URI。
  3. 元数据内容:JSON 文件通常包括以下信息:
    • name : 代币的名称。
    • description : 代币的描述。
    • image : 代币相关的图像的 URL。
    • attributes : 代币的其他属性和特性,可以包括等级、类型等。
  4. 访问方式:当用户或应用程序需要查看 NFT 的详细信息时,可以通过 Token URI 访问存储在 链下(例如在 IPFS 或其他去中心化存储系统中)的元数据

DAO:去中心化自治组织(Decentralized Autonomous Organization)

通过智能合约在区块链上运行的组织。DAO的决策和管理过程是去中心化的,由所有持有代币的成员共同参与和投票决定。

维度 DAO 优点 DAO 缺点
权力 分散 被资本集中
透明度 极高 信息过载
执行 自动 容错差
效率 低成本执行 决策慢
安全 抗单点 易治理攻击

DAO 的优点在“抗中心化”,缺点在“无法抗人性与资本”。

MEME

MEME 原意为“迷因”,即网络文化中的梗、表情包、搞笑段子等。在加密圈,MEME 通常指那些以网络文化为基础的代币,比如 DOGE(狗狗币)、PEPE(青蛙币)、SHIB(柴犬币)等。

MEME 币的特点通常是“有趣、搞怪、社区驱动”,它们往往缺乏明确的技术价值,但通过强大的社区共识和文化认同获得价值。2024-2025 年,MEME 币市场出现了新的特点:公平发射(Fair Launch)、社区自治实用性整合成为新趋势。

交叉创新

  • DeFi + NFT:数字资产金融化
    • NFT 抵押借贷是这个领域最典型的应用。传统上,NFT 作为非同质化代币流动性较差,持有者很难在不出售的情况下获得流动性。DeFi + NFT 的结合解决了这个问题。
  • DAO + MEME:社区文化与治理融合
    • MEME 币与 DAO 治理的结合创造了一种全新的社区组织形式,既保持了 MEME 文化的趣味性,又具备了实际的治理功能。
  • AI + DeFi:智能化金融服务
    • 人工智能与去中心化金融的结合正在创造更智能、更高效的金融服务体验。
  • WEB3 + 乡建:南塘 DAO 的探索
  • 南塘 DAO 秉持“向乡土求共同体之 DAO,向加密寻世界性之道”的核心理念,旨在促进乡建与 Web3 领域的深度交流与融合,推动双方互学互鉴。

这些跨领域的创新不仅展示了 Web3 技术的可组合性,也为用户创造了更丰富的应用场景。随着技术的不断发展,我们预计会看到更多领域的融合创新,如 Social + DeFi、IoT + Blockchain 等。

预期发展

Intent-Based 交易

传统的 Web3 交易需要用户明确指定每一步操作(如选择 DEX、设置滑点等),而意图驱动的交易允许用户表达目标(如“用 100 USDC 买到最多的 ETH”),由系统内不同的求解器给出报价,系统最终自动寻找最优报价对应的路径执行。

账户抽象与智能钱包

账户抽象(Account Abstraction, AA)通过 ERC-4337 标准,让以太坊账户具备智能合约的灵活性,用户无需持有 ETH 即可进行交易,支持社交恢复、批量操作等高级功能。

模块化区块链

2025 年的区块链架构向模块化发展,将执行、共识、数据可用性、结算等功能分离,实现更好的可扩展性和可定制性。

AI + Web3 融合

人工智能与 Web3 的结合创造了新的应用范式,从去中心化 AI 训练到 AI 驱动的自动化交易。

1.14

合规

Web3 行业法律环境概览

自 2017 年以来,中国监管部门已陆续发布多项针对虚拟货币的限制政策,主要包括:

  • 禁止 ICO(首次代币发行);
  • 禁止虚拟货币交易所运营与提供撮合服务;
  • 明确虚拟货币不具有法偿性,不得作为支付工具;
  • 禁止境外交易平台向中国境内居民提供服务;
  • 打击以虚拟货币为载体的非法集资、传销、洗钱、赌博等活动。

当前主流监管基调为“全面封堵金融属性,有限容忍技术创新”。虽然 Web3 作为技术栈本身不被禁止,但一旦触及 Token 发行、融资、交易、矿池运营等高风险场景,便极易受到行政乃至刑事打击。

常见法律风险

核心法律风险梳理:
  • 代币发行与交易行为的法律风险
    • 当前,中国法律明令禁止任何单位或个人通过 ICO、IEO、IDO 等方式进行融资活动。不论代币是否命名为“积分”“凭证”或“治理 Token”,只要具备融资功能或可流通性,即可能构成非法金融行为。技术人员若参与代币模型设计、空投逻辑配置、合约部署等环节,也会被视为“共同行为人”,无法以“只是写代码”为由免责。
  • 赌博、传销、洗钱等刑事风险
    • Web3 项目的设计与经济激励模型直接影响风险等级。NFT 项目、DAO 社群、挖矿平台中常见的“邀请返利”“算力挂靠”“多级推广”模式,一旦涉及团队计酬、多层级返佣,可能触犯组织、领导传销活动罪。
  • 场外交易中的洗钱与非法经营风险
    • 虚拟货币在场外交易环节常被用作规避监管的“地下换汇”工具。境内个人先用人民币购买 USDT、ETH 等虚拟币,再通过链上或境外平台兑换美元、欧元等外币,形成跨境资金流转链条。此过程不仅绕过外汇监管,还使虚拟货币成为规避外汇管制的“桥梁资产”。根据《外汇管理条例》和刑法,未经许可反复组织撮合人民币与外币的虚拟币交易,可能构成非法经营外汇业务。因此,在参与虚拟币兑换时必须谨慎,对交易对手的信息、背景、资金来源进行审核,避免成为非法资金链条中的一环。
  • 民商事争议
    • 在 Web3 生态中,虚拟货币买卖、委托他人投资是常见的交易形式。根据我国目前的政策态度和司法实践,这类交易大概率被认定无效,即风险自担。
    • 以虚拟货币买卖为例,由于国家禁止虚拟货币作为法偿工具,涉及“币币交易”的合同,法院通常不予支持。因价格波动、对价不明、交付失败产生的纠纷,极可能遭遇“合同无效”或“法院不受理”的局面。
    • 委托代投方面,投资人基于友情或信任接受他人资金代为投资,行情波动、投资亏损或资金去向不明时,即使双方无恶意,也可能被追究民事赔偿责任,甚至面临涉嫌非法经营或非法集资的法律风险。委托方应在建立代投关系前,明确权利义务、委托范围及投资限制,并妥善保留协议及操作凭证,实时监督资金流向和账户变动,防止出现“全权委托”后的管理真空。
    • 受托方则必须严守权限,不得擅自扩大投资范围,例如仅授权操作现货时,禁止擅自进行杠杆或合约交易。同时,不应轻易接受陌生资金,或公开宣传接受公众的资金,避免因资金安全、投资亏损等引发风险事件。

全球监管背景与趋势

全球监管背景:

  • 近年来,全球加密货币合规化趋势日益明显,监管框架稳步推进:欧盟的 MiCA 正在逐步落地;新加坡出台新规,将反洗钱/反恐怖融资要求与 FATF 标准接轨;美国国会今年也出台了《稳定币法案》(GENIUS Act)和《稳定币法案》(STABLE Act),为稳定币发行、反洗钱和消费者保护等提供了清晰的框架。
  • 更健全的监管框架能够提供更清晰的指导方针,降低风险,增强用户信心,从而为加密货币行业释放新的增长机遇。越来越多的机构正在转变对合规的认识,不再将其视为障碍,而是将其视为战略优势。通过积极采取 KYC、客户尽职调查、地址筛选和交易监控等措施,他们正在全面显著提升合规能力。
  • 然而,区块链的匿名性和链上交互(尤其是跨链活动)的复杂性对机构在风险评估、团队协作和报告生成方面提出了重大挑战。

FATF

FATF(Financial Action Task Force,金融行动特别工作组) 是一个政府间组织,成立于 1989 年,总部位于法国巴黎。它是全球反洗钱和反恐怖融资标准的制定者。

  1. FATF 的核心职能:
  • 制定国际标准:制定反洗钱(AML)和反恐怖融资(CFT)的国际标准
  • 评估成员国:对成员国进行合规性评估,发布”灰名单”和”黑名单”
  • 协调全球行动:协调各国监管机构打击金融犯罪
  • 对 Web3 的影响:

Travel Rule(旅行规则)是 FATF 对加密货币行业最重要的监管要求:

  • 要求虚拟资产服务提供商(VASP)在转账时收集和传输发送方、接收方信息
  • 适用于超过 1000 美元/欧元的转账
  • 对 DeFi 协议和 DEX 提出了合规挑战

稳定币监管的意义

为什么需要稳定币监管?

  1. 系统性风险

    • 稳定币已成为 DeFi 生态的基础设施,总市值超过 1500 亿美元

    • 如果主要稳定币(如 USDT、USDC)出现问题,可能引发系统性风险

    • 2022 年 Terra UST 崩盘事件就是典型案例

  2. 货币政策影响

    • 稳定币可能影响传统金融体系的货币供应

    • 对央行数字货币(CBDC)构成竞争

    • 跨境支付可能绕过传统银行系统

监管目标:

  • 保护投资者:确保稳定币有足够的储备资产支持

  • 维护金融稳定:防止稳定币风险传导到传统金融体系

  • 反洗钱合规:防止稳定币被用于非法活动

全球主要监管趋势:

  • 趋严化

    • 各国都在加强加密货币监管

    • 重点关注稳定币、交易所和 DeFi 协议

    • 要求与传统金融体系类似的合规标准

  • 市场准入门槛提高

    • 新进入者面临更高的合规门槛

    • 有利于有实力的机构和企业

    • 可能推动行业整合

  • 协调化

    • 国际组织(FATF、G20)推动全球监管协调

    • 各国监管框架逐渐趋同

    • 跨境监管合作不断加强

  • 合规成本增加

    • 要投入更多资源满足监管要求
    • 法律和合规团队成为必需品
    • 业务模式可能需要调整
  • 创新友好

    • 部分国家(如新加坡、阿联酋)采取”监管沙盒”模式

    • 支持区块链技术创新

    • 在合规前提下允许业务发展

  • 长期利好

    • 明确的监管框架有助于行业健康发展

    • 合规企业更容易获得传统金融机构合作

    • 有助于吸引机构投资者进入

Web3 入职法律风险防范指南

  1. 雇佣关系新形态

    Web3 项目普遍采用境外注册方式,如在新加坡、开曼群岛、BVI 等设立控股实体,并通过 Telegram、Zoom 等方式线上面试及协作。这种分布式办公模式虽带来了灵活性,却也打破了传统劳动关系的边界。

    由于许多项目方在中国境内无注册公司,不具备用工主体资格,因此难以与员工签订有效的《劳动合同》,也无法依法缴纳五险一金。一旦发生薪资争议或因公受伤,员工将难以依照《劳动合同法》享受合法保障。

    需注意的是,我国社会保障体系与诸多生活事项紧密挂钩,包括落户、购房、贷款、子女教育、婚育福利等,缺失社保公积金的雇佣结构将直接影响个人生活。即使签署了书面合同,也可能因主体资格缺失被认定为无效,成为“白纸黑字”。

    为弥补上述漏洞,有些项目方会通过 EOR(名义雇主)模式,委托国内合规公司与员工签署合同。通过这种方式可以解决劳动关系里的部分问题,但在发生纠纷的情况下,劳动关系的认定仍然是需要关注的重点。

    因此,入职前应结合自身情况审慎评估:

    • 是否可以接受灵活用工?
    • 能否接受没有社保公积金的工作安排?如不确定,建议寻求专业律师帮助排雷。
  2. 薪酬结构及风险提示

    Web3 企业的薪酬结构常见“人民币 + Token”或“全 USDT”模式,尽管从收入上看更具吸引力,但其背后存在多重法律与税务风险。

    根据我国《劳动法》规定,工资应以法定货币(即人民币)支付,不得以实物或虚拟币等形式代替。这意味着,如果薪酬中 Token 或 USDT 部分被认定为工资支付,可能导致支付行为无效。

    相反,如果该部分未被明确纳入工资范围,则会拉低员工的平均工资基数,影响其社保缴纳、经济补偿计算等,间接损害劳动者合法权益。

    更需注意的是,用自发 Token 支付薪资的项目,其代币价值波动剧烈,甚至可能在项目失败后彻底归零,员工收入将大打折扣。

  3. 虚拟货币出金与合规风险

    由于薪酬中常含虚拟货币,员工通常需要通过“出金”将其兑换为人民币以满足日常支出。目前主流方式为 C2C 交易,包括场内挂单、场外担保交易、OTC 交易群等。

    然而,出金过程中极易卷入刑事风险。若交易对手使用涉赌、涉诈资金购币,收款方极可能因接收非法资金而遭遇银行卡冻结,甚至被要求退赔全部涉案金额。与此同时,参与高价出 U 交易、协助他人洗钱、绕开监管等行为,还可能构成 “帮信罪” 或 “掩饰、隐瞒犯罪所得罪”。

    因此求职者可以根据自身的经济情况和消费习惯,若日常需要法币支出,可以和公司协商薪资发放的方式,保留一部分法币收入。在出金时,务必通过可信渠道进行出金,避免参与灰色交易,并定期留存相关资金合法来源记录,以便自证清白。

  4. 项目合法性需提前审查

    入职前还应重点审查项目是否合法。即便员工非主导方,若整体项目涉嫌非法金融活动,也可能被牵连调查。建议主动要求查阅项目白皮书、Token 分发机制、收益模型、是否面向中国大陆用户、是否含有返利结构、投资承诺等。

其他风险

  1. 虚拟货币风险:

    中国整体监管对于虚拟货币为禁止态度。《关于进一步防范和处置虚拟货币交易炒作风险的通知(银发〔2021〕 237 号)》:确定(1)“虚拟货币”不具有与法定货币等同的法律地位,不能作为货币在市场上流通使用。(2)“虚拟货币”相关业务活动定性为非法金融活动(包括境外“虚拟货币”交易所通过互联网向我国境内居民提供的服务),提示公众参与“虚拟货币”投资交易活动存在的法律风险。(3)严厉打击“虚拟货币”相关的非法金融活动以及犯罪活动。在禁止金融机构、非银支付机构、互联网企业为“虚拟货币”相关业务活动提供服务的同时,要求加强对“虚拟货币”相关的市场主体登记和广告管理。

  2. 代币发行的风险:

    《关于防范代币发行融资风险的公告》规定 ICO 为未经批准非法公开融资的行为,明确了代币的非货币属性,并禁止各类代币交易所的兑换、买卖、定价和信息中介服务。

  3. 挖矿的风险:

    《关于整治虚拟货币“挖矿”活动的通知》《关于进一步防范和处置虚拟货币交易炒作风险的通知》规定,虚拟货币“挖矿”活动属于高能耗、高排放、低贡献的淘汰类产业,被全面禁止。虚拟货币相关全部业务活动均属于非法金融活动。境外交易所向境内居民提供服务同样非法。

钓鱼攻击(Phishing)

钓鱼攻击是最常见、最有效的网络攻击手段之一。攻击者通过伪造官方网站、社交账号、邮件、短信等,诱导受害者点击恶意链接、输入敏感信息(如助记词、私钥、账号密码),或下载恶意软件。

  • 伪造邮件/网站: 攻击者会仿冒知名企业、学校、项目方的邮箱或网站,发送“面试通知”“奖学金发放”“账号异常”等紧急信息,诱导你点击钓鱼链接。
  • 社交平台钓鱼: 在微信群、QQ 群、Telegram、Discord 等社群中,冒充官方人员、HR、学长学姐,发布虚假招聘、空投、福利活动。
  • 假冒客服/好友: 通过盗号、伪造头像昵称等方式,冒充你信任的人,诱导你转账或泄露信息。

安全

常见网络安全风险与攻击方式

钓鱼攻击(Phishing)

钓鱼攻击是最常见、最有效的网络攻击手段之一。攻击者通过伪造官方网站、社交账号、邮件、短信等,诱导受害者点击恶意链接、输入敏感信息(如助记词、私钥、账号密码),或下载恶意软件。

攻击方式与手段:

  • 伪造邮件/网站: 攻击者会仿冒知名企业、学校、项目方的邮箱或网站,发送“面试通知”“奖学金发放”“账号异常”等紧急信息,诱导你点击钓鱼链接。
  • 社交平台钓鱼: 在微信群、QQ 群、Telegram、Discord 等社群中,冒充官方人员、HR、学长学姐,发布虚假招聘、空投、福利活动。
  • 假冒客服/好友: 通过盗号、伪造头像昵称等方式,冒充你信任的人,诱导你转账或泄露信息。
恶意软件/木马(Malware & Trojan)

攻击方式与手段:

  • 伪装成面试/学习软件: 攻击者将木马程序伪装成“面试专用软件”“学习资料”“破解工具”等,诱导学生下载安装。
  • 剪贴板劫持: 木马常驻后台,监控剪贴板内容,一旦检测到钱包地址,自动替换为攻击者地址。
  • 浏览器扩展/插件后门: 通过伪装成热门插件,窃取浏览器中的敏感数据。
  • 远程控制: 木马获取系统权限后,可远程操控电脑,窃取文件、录屏、键盘记录等。
社交工程攻击(Social Engineering)

攻击方式与手段:

  • 冒充 HR/导师/同学: 通过社交平台、邮件、电话等方式,冒充你信任的人,获取信任后诱导你操作。
  • 群聊钓鱼: 在微信群、QQ 群、Telegram、Discord 等群聊中,冒充管理员、官方人员,发布钓鱼链接或虚假活动。
  • “好友”求助: 盗取你好友账号后,以“急需用钱”“帮忙测试”“转发链接”等理由诱导你转账或点击恶意链接。
供应链/第三方依赖攻击

攻击方式与手段:

  • 恶意浏览器插件/扩展:攻击者在 Chrome 商店等平台上传带有后门的插件,诱导用户安装。
  • 开源库后门:攻击者在常用开源库、依赖包中植入恶意代码,影响大量下游用户。
  • 官方渠道被劫持:即使是“正规商店”下载的软件,也可能因被攻击而批量感染。
地址污染与扫描木马(Clipper/Scanning Bots)

攻击方式与手段:

  • 剪贴板劫持:木马监控剪贴板,一旦检测到钱包地址,自动替换为攻击者地址。
  • 输入框监听:恶意软件监听浏览器或输入法,实时获取输入内容。
传统隐私与账号安全风险

攻击方式与手段:

  • 弱密码/密码复用:多个平台使用相同密码,一旦某个平台泄露,其他账号也被攻破。
  • 邮箱/SIM 卡劫持:通过社工、运营商漏洞等手段,劫持你的邮箱或手机号,重置所有账号密码。
  • 双因素认证缺失:未开启 2FA,账号易被盗。

1.15

EIP-7702与ERC-4437

EIP-7702 引入的是「第四种交易类型」。

“第四种交易类型”指的是: 在以太坊现有 3 种 Typed Transaction 之外,新增一种全新的 txType = 0x04 的交易编码与语义规则,而不是“交易用途的第四类”。

账户类型

首先回顾一下账户类型。

以太坊(Ethereum)中的账户分为 两种类型

  1. EOA(Externally Owned ,外部拥有账户)

    1. 外部拥有账户。最常见的账户类型,也是我们的个人账户(钱包地址)。EOA由私钥控制。将账户的公钥进行哈希运算,通常使用Keccak256算法进行哈希运算。去哈希值的最后20个字节(160位)。长度160 bit
  2. 合约账户(Contract Account)

    1. 合约账户。部署在网络上的智能合约,由在区块链上的代码控制。将调用或创建该智能合约的外部账户地址+交易数量Nonce。长度也是160bit。

    两种账户类型都能:

    • 接收、持有和发送 ETH 和 token。
    • 与已部署的智能合约进行交互。

    区别:数据存储上稍有不同, 因为外部账户无内部存储数据和合约代码,因此外部账户数据中 StorageRootCodeHash 是一个空默认值。 一旦属于空默认值,则不会存储对应物理数据库中。 在程序逻辑上,存在 code 则为合约账户。 即CodeHash为空值时,账户是一个外部账户,否则是合约账户。

    ==外部持有账户==

    • 创建帐户是免费的
    • 可以发起交易
    • 外部所有的帐户之间只能进行以太币和代币交易
    • 由一对加密密钥组成:控制帐户活动的公钥和私钥

    ==合约账户==

    • 创建合约存在成本,因为需要使用网络存储空间
    • 只能在收到交易时发送交易
    • 从外部帐户向合约帐户发起的交易能触发可执行多种操作的代码,例如转移代币甚至创建新合约
    • 合约帐户没有私钥。 相反,它们由智能合约代码逻辑控制
如何创建智能合约地址?

有两种在以太坊中创建智能合约地址的方法。

每个智能合约通过其地址在区块链中标识。该地址是一系列的长的数字和字符,它从0xba开始……但是问题是如何计算0xba。

部署在区块链上的智能合约代码是交易的一部分。当我们在区块链上==部署智能合约==时,我们需要一个钱包地址,以便流程将是第一种:钱包地址 => 交易 => 智能合约。当我们执行以太坊网络中的任何事务时,它将增加一个成为Nonce的数字。所以智能合约地址通过其钱包地址和Nonce确定。因此结论是将Nonce、发件人地址放在数组中,然后使用rlp.encode()机制,在rlp.encode()操作结果之后,使用keccak256()函数将其放置,并提供32个字节的数据。 智能合约地址使用哈希的最后20个字节。

创建智能合约地址的另一种方法是==使用成为create2opcode==。create2取决于发件人地址和合约代码以创建智能合约地址。创建一个智能合约地址并不是那么流行。

智能合约地址:智能合约地址独特地确定区块链上的智能合约,每个智能合约地址都与四个不同的字段相关联:

  • Nonce:一个计数器,用来显示外部帐户发送的交易数量或合约帐户创建的合约数量。 每个帐户只能执行具有一个给定随机数的一笔交易,以防范重放攻击,重放攻击指多次广播和重复执行已签署的交易。Nonce是一个整数,每次地址发送任何交易时都会增加。因此,在智能合约部署时间Nonce = 0之后,智能合约发送第一个交易后,Nonce将增加到1,然后依此类推。
  • Balance:这个地址拥有的 Wei 数量。 Wei 是以太币的计数单位,每个 ETH 有 1e18(10^18^) 个 Wei。如果我们将以太余额发送给智能合约,则其以太余额的增加,如果将智能合约发送到另一个地址,则其以太余额的下降。
  • codeHash:当我们用solidity编程智能合约时,该代码将转到区块链上的存储代码字段。该哈希表示以太坊虚拟机 (EVM) 上的帐户_代码_。 合约帐户具有编程的代码片段,可以执行不同的操作。 如果帐户收到消息调用,则执行此 EVM 代码。 与其他帐户字段不同,不能更改。 所有代码片段都被保存在状态数据库的相应哈希下,供后续检索。 此哈希值称为 codeHash。 对于外部所有的帐户,codeHash 字段是空字符串的哈希。
  • storageRoot 有时被称为存储哈希。 Merkle Patricia trie 根节点的 256 位哈希已编码了帐户的存储内容(256 位整数值映射),并编码为 Trie,作为来自 256 的 Keccak 256 位哈希的映射位整数键,用于 RLP 编码的256位整数值。 此 Trie 对此帐户存储内容的哈希进行编码,默认情况下为空。

EOA地址也有四个字段:

  • Nonce:Nonce是一个整数,每次地址发送任何交易时都会增加。

  • Balance:balance将增加/降低取决于发送和接受的需求。

  • codeHash: ==对于外部所有的帐户,codeHash 字段是空字符串的哈希。==

  • storageRoot:==此 Trie 对此帐户存储内容的哈希进行编码,默认情况下为空。==

以太坊交易的“类型”

最原始的交易(Legacy tx)

最早的以太坊只有一种交易格式:

1
[nonce, gasPrice, gasLimit, to, value, data, v, r, s]
  • 没有 type byte
  • 编码方式固定
  • 扩展性极差

EIP-2718:Typed Transaction 的引入(分水岭)

EIP-2718 定义了一个总框架

1
transaction = type || rlp(payload)

只要有了 type 字节,就可以不断扩展新交易。


EIP-2718 体系

第一种:EIP-2930(type = 0x01)

Access List Transaction

1
2
3
4
5
6
7
8
9
10
11
0x01 || rlp([
chainId,
nonce,
gasPrice,
gasLimit,
to,
value,
data,
accessList,
v, r, s
])

作用:

  • 提前声明 storage / address
  • 减少 cold access gas

第二种:EIP-1559(type = 0x02)

Dynamic Fee Transaction

1
2
3
4
5
6
7
8
9
10
11
12
0x02 || rlp([
chainId,
nonce,
maxPriorityFeePerGas,
maxFeePerGas,
gasLimit,
to,
value,
data,
accessList,
v, r, s
])

作用:

  • baseFee
  • fee market reform

第三种:EIP-4844(type = 0x03)

Blob Transaction(Cancun)

1
2
3
4
5
6
7
8
9
10
11
12
13
0x03 || rlp([
chainId,
nonce,
maxPriorityFeePerGas,
maxFeePerGas,
gasLimit,
to,
value,
data,
accessList,
blobVersionedHashes,
v, r, s
])

作用:

  • 承载 blob
  • 给 L2 用
第四种:EIP-7702(type = 0x04)
  • 新的 RLP payload 结构
  • 新的验证规则
  • 新的执行语义(EOA code override)

这在 EIP-2718 体系里就是:全新的 Typed Transaction

1
2
3
4
5
6
7
8
9
10
11
12
13
0x04 || rlp([
chainId,
nonce,
maxPriorityFeePerGas,
maxFeePerGas,
gasLimit,
to,
value,
data,
accessList,
authorizationList, // 新增
v, r, s
])

关键不是字段多少,而是:

  • 只有 0x04 交易才能携带 authorizationList
  • 只有它能触发:==EOA → 临时合约化==

为什么需要EIP-7702?

在7702之前,以太坊账户模型有一个根本割裂:

类型 特性
EOA 能发起交易(有私钥),但不能自定义验证逻辑
CA 能写复杂逻辑,但不能主动发交易

这导致:

  1. EOA 无法做到

    • 多签
    • 社交恢复
    • 自定义签名算法
    • session key / 限额
    • sponsor gas
  2. Account Abstraction(AA)只能靠“绕路”

    • EIP-4337:用合约 + mempool + bundler 模拟
    • 但不是协议原生,复杂、gas 高、UX 差

    而EIP-7702就是为了让EOA在不失去私钥模型的前提下,具备合约级的能力。

Pectra升级之后,将使我们能够升级我们的EOA(外部持有账户),这意味着我们可以将代码附加到EOA的CodeHash上,我们还讲拥有像合约账户一样的存储,同样的也是占用StorageRoot。这时候EOA和CA的四个字段在内容上没有区别。

如何将EOA升级到智能合约?

基本上我们需要发送第四种交易类型,定义这个授权列表的参数,包括链ID还有现有智能合约的地址,以及我们希望附加到EOA上的代码。

我们可以设置多个授权,然后定义将要使用的链以及该链上的合约地址。让智能合约在每个链都可以附加不同的代码以及不同的逻辑。并且EOA可以执行此代码。

EIP-7702 的“前身们”

第一代:EIP-86 / EIP-2938(早期 AA,已废弃)

EIP-86(2017)

  • 最早提出 “所有账户都是合约”
  • 彻底取消 EOA

问题:

  • 破坏性太强
  • 共识成本过高
  • 客户端复杂度爆炸

结论:过于激进,失败


第二代:EIP-4337(合约层 AA)

你应该非常熟了,我简要点关键。

EIP-4337 核心

  • UserOperation
  • 不走 tx mempool
  • bundler → EntryPoint → 合约钱包

优点

  • 不改共识
  • 已上线(主网可用)

缺点

  • 非原生
  • gas 高
  • infra 复杂
  • dApp 兼容成本

这是“模拟 AA”,不是协议 AA


第三代:EIP-3074(7702 的直接前身)

EIP-3074 做了什么?

引入两个新 opcode:

  • AUTH
  • AUTHCALL

允许:

1
2
3
     EOA 授权

合约代替 EOA 发起调用

即:

合约可以“借用”EOA 的身份

能力

  • 批量交易
  • sponsor gas
  • 合约代管 EOA

致命问题(为什么被否)

  • 安全模型太危险

    • 合约一旦获得 AUTH

    • 就可能:

      • 无限调用
      • drain 资产
      • 用户难以理解授权范围
  • UX 风险极高

  • 易被钓鱼

Vitalik 最终反对 EIP-3074

EIP-7702 vs EIP-3074(关键区别)

对比项 EIP-3074 EIP-7702
权力主体 合约 EOA 自身
授权模型 EOA → 合约 EOA 临时升级自己
风险 授权不可控 作用域 = 单笔交易
执行上下文 合约控制 EOA 控制
设计哲学 借身份 变形账户

EIP-7702 与 EIP-4337 的关系

它们不是竞争,而是互补

  • 7702
    • 协议级
    • 面向 EOA
    • 更轻量
  • 4337
    • 合约级
    • 面向合约钱包
    • 更灵活

未来很可能:

  • 普通用户:7702
  • 高级钱包 / DAO / Bot:4337
安全改进点
  • 临时生效
  • 不可跨交易持久授权
  • 私钥仍是最终控制权
对以太坊模型的影响

EIP-7702 实际上在模糊:EOA和CA的区别

没有打破它,而是:

在不推翻 EOA 的情况下,引入“合约行为能力”

这是一个极其以太坊风格的折中设计

EIP-7702的核心机制

EIP-7702 引入一个新概念(简化表述):EOA 的 code 不是空,而是“指向某个合约代码”

  • 不是部署合约
  • 不改变账户类型
  • 只是告诉 EVM:执行这个 EOA 时,逻辑来自某段合约代码
简易工作流程
1
2
3
4
5
6
7
8
9
10
11
12
13
EOA 发交易

交易中声明:使用 code = X

EVM 执行时:
- msg.sender = EOA
- 执行逻辑 = 合约 X
- storage = EOA 自己的 storage

交易结束

EOA 恢复为普通 EOA

但是:

  • EOA仍然签名交易
  • 状态存储在EOA的storage
  • 只在本次交易有效

==本质是 “EOA 的一次性 delegatecall 语义”==

有了 7702,一个普通 EOA 可以:

  • 使用 多签 / 自定义验证逻辑
  • 支持 批量交易
  • 使用 session key
  • 免 gas / sponsor gas
  • 兼容现有 dApp(msg.sender 仍是 EOA)

不需要迁移成合约钱包
不需要 EIP-4337 的整套 infra

EIP-7702 允许 EOA 在单笔交易中,临时拥有一段“合约代码指针”,EVM 执行时用该代码,但 ==storage== / ==balance==/ ==nonce== / ==msg.sender==全部仍属于该 EOA

而这次的临时修改状态不是部署代码,也不是修改账户类型,更不是永久升级。

EIP-7702不是新增字段,而是:允许某些交易在执行期“覆盖”codeHash的取值来源

  • 状态中EOA仍然 codeHash =empty
  • 但在执行时:effectiveCode = tx.authorization.codeAddress

这是执行层(Execution Layer)语义变化,不是状态结构变化。

交易层:EIP-7702的新交易格式:

EIP-7702 引入 新的交易类型(类似 EIP-1559)。

1
2
3
4
5
6
7
8
9
10
11
12
13
Transaction7702 {
chainId
nonce
gasLimit
maxFeePerGas
maxPriorityFeePerGas
to
value
data

authorizationList[] // 核心
signature
}
authorizationList 的结构
1
2
3
4
5
6
Authorization {
chainId
nonce
codeAddress // 指向已有合约
signature // EOA 对本 authorization 的签名
}

EOA 明确签名声明:在本交易中,我同意把“我的代码”解释为 codeAddress

  • codeAddress 必须是已部署合约
  • 合约代码 不会被复制,只是引用
EVM的执行逻辑

Step 1:交易进入执行层

  • 交易 sender = EOA
  • nonce / gas 校验正常

Step 2:验证 authorization

authorizationList 中每一项:

  1. 校验签名:

    1
    ecrecover(authorization) == sender
  2. 校验:

    • chainId 正确
    • nonce 正确(防重放)
    • codeAddress 有 code

失败 → 整笔交易 revert


Step 3:构造「执行期账户视图」

这是 7702 的核心实现点

客户端在执行交易时:

1
executionContext.accountCode[sender] = code(codeAddress)

但注意:

  • 不写入 state trie
  • 不改 codeHash
  • 不持久化

只是 execution-layer overlay


Step 4:CALL / DELEGATECALL 行为变化

对 sender(EOA)来说:

1
2
3
4
address(this)   == EOA
msg.sender == EOA
storage == EOA.storage
code == codeAddress.code

等价于:

1
EOA.delegatecall(codeAddress)

但这不是 delegatecall 指令,而是 账户级语义改变

delegatecall 是“合约借用代码”,7702 是“账户临时戴代码”

对比项 delegatecall EIP-7702
触发方式 opcode 交易级语义
执行主体 合约 EOA
msg.sender 不变 EOA
address(this) 调用者 EOA
storage 调用者 EOA
是否嵌套 不可嵌套
是否持久
风险 合约可控 用户签名明确授权

Step 5:执行结束

  • storage 写入: 持久(写在 EOA 下)
  • balance 变化: 持久
  • code: 不保存
  • 下一个交易:EOA 仍是普通 EOA
重入 / selfdestruct / create 的处理

selfdestruct

  • 如果 codeAddress 中调用 selfdestruct
    • 不会销毁 EOA
    • 不会影响 codeAddress
  • 只影响正常转账语义

客户端 屏蔽破坏性账户行为


create / create2

  • create 的 address(this)EOA
  • 所以:
    • EOA 可以直接创建合约(之前做不到)
  • 但 nonce 规则仍是 EOA 的 nonce

这是一个 新能力点 + 新攻击面


重入

  • 因为没有 AUTH 之类的“跨交易授权”
  • 重入仅限本次 call tree
  • 不存在 3074 那种“持久授权风险”

回滚与失败语义
场景 行为
authorization 校验失败 整笔交易 revert
执行中 revert storage / balance 回滚
OOG 全回滚
codeAddress revert 等价普通 revert

不会留下任何“半升级状态”

客户端实现角度

在 Geth / Nethermind / Besu 中:

  • 不新增 trie
  • 不新增 account field
  • EVM 执行前
    • 构造一个 StateOverlay
    • 覆盖 GetCode(sender) 的返回值

这也是 7702 能快速落地的重要原因

==EIP-7702 的实现本质是:在执行层为 EOA 增加一个“临时 code lookup override”,所有状态写入仍锚定在 EOA,自始至终不改变账户本体==

Account Abstraction(AA)

Account Abstraction(AA)直译是 ”账户抽象”。就是把“谁能发交易、如何验证交易、怎么付 gas”从以太坊协议里写死的规则,变成“可编程的逻辑”。

AA 不是“智能合约钱包”, 而是“把交易合法性的判定权,从协议交给账户本身”。

为什么以太坊需要 AA

传统以太坊账户模型

1
2
3
4
5
6
7
8
9
EOA:
- 只能用 ECDSA 私钥签名
- 只能单签
- 只能自己付 gas
- 逻辑 = 协议写死

Contract Account:
- 可编程逻辑
- 不能主动发交易

这导致一个结构性问题

“最需要灵活性的账户(用户账户),反而最不灵活。”


AA 到底“抽象”了什么?

AA 抽象的是这三件事

1. 交易验证逻辑(Validation)

传统 EOA:

1
require(ecrecover(tx.sig) == sender)

AA 账户可以:

  • 多签
  • 社交恢复
  • BLS / Passkey / WebAuthn
  • session key
  • 限额 / 白名单

“谁能花钱”变成代码决定


2. Gas 支付逻辑(Gas Abstraction)

传统:

1
sender.balance >= gas * price

AA 可以:

  • 第三方代付(Paymaster)
  • 用 ERC20 付 gas
  • sponsor tx
  • 延迟结算

“谁付 gas”不再是 sender


3. 交易执行逻辑(Execution)

传统:

  • 一次 tx = 一个 call

AA 可以:

  • 批量交易
  • 条件执行
  • 原子组合

“怎么执行”变成账户逻辑的一部分


AA 的终极目标

让“账户 = 程序”,而不是“账户 = 私钥”。


AA 的三种实现路径

这是你刚才一直在接触但没明确区分的地方。


路线一:协议级 AA(最理想)

  • 修改共识 / EVM
  • 所有账户原生可编程

例子:

  • 早期 EIP-86(失败)
  • EIP-7702(部分实现)

优点:原生、干净
缺点:难推进、改动大


路线二:合约级 AA(现实妥协)

代表:EIP-4337

1
2
3
4
5
UserOperation

EntryPoint

Smart Wallet

已上线
不是协议原生
gas 高 / infra 重


路线三:混合 / 渐进式 AA(现在的方向)

  • 保留 EOA
  • 给 EOA 加能力
  • 不破坏生态

代表:

  • EIP-7702
  • ERC-7579(模块化钱包)

把 AA 和 7702 结合起来看

7702 为什么被说成 AA?

  • 7702 不把 EOA 变成合约
  • 但它允许:
    • 自定义验证
    • sponsor gas
    • 批量执行
  • 且这些逻辑来自 合约代码

所以它是:

“EOA 的一次性 Account Abstraction”


一个极简对照表
能力 传统 EOA AA EIP-7702
自定义验证 ×
多签 ×
sponsor gas ×
合约逻辑 × √(临时)
协议原生 ×(4337)
永久 ×