前言

本文档汇总本次全部对话核心知识点,从零打通:EVM底层账户体系、合约编译/部署/初始化逻辑、EOA与CA核心关系、合约权限本质、链上交易调用链路、XYK恒定乘积AMM模型全套原理、池子深度与滑点机制、EVM与Solana核心差异,修正99%新手误区,可永久留存学习。

一、EVM底层核心:两类账户(区块链一切交互的根基)

EVM公链(ETH/BSC/Polygon/Arbitrum等)仅存在两种账户,无第三种,所有链上行为全部基于二者实现。

1.1 EOA 外部拥有账户(用户钱包)

定义:由私钥/公钥加密生成的人类可控账户(MetaMask等钱包地址)。

核心特性(EVM铁律)

  • 唯一可以主动发起链上交易的账户

  • 拥有私钥,可签名交易、支付Gas

  • 无任何代码、无合约逻辑、无持久化存储

  • 自带Nonce(交易序列号,防重放攻击)

  • 可持有链原生代币(ETH/BNB/MATIC)

1.2 CA 合约账户(部署生成的链上程序)

定义:由EOA部署交易生成的独立链上账户。

核心特性

  • 无私钥、无法主动发起任何交易,只能被动被调用

  • 拥有独立Bytecode(合约代码)+ 独立Storage持久化存储

  • 可持有原生代币、所有ERC20代币

  • 无自主意识、无决策能力,仅执行预设代码逻辑

1.3 终极核心区别(必背)

  • EOA = 交易发起者(唯一入口)

  • CA = 逻辑执行者(被动响应)

  • 所有链上操作(部署、转账、调用合约、Swap)源头一定是EOA

二、合约完整生命周期:源码 → 编译 → 部署 → 初始化 → 调用

2.1 编译阶段

Solidity$.sol$源码经过编译器处理,生成两份核心文件:

  • Bytecode:上链的机器指令,区块链仅存储该数据(无源码)

  • ABI:函数接口说明书,用于前端/脚本调用合约,不上链

2.2 部署阶段(特殊交易)

部署合约 = EOA发起一笔特殊交易(交易To地址为空,Data为Bytecode)

部署全过程:

  1. EOA签名交易、支付Gas

  2. 链生成全新唯一合约地址(CA)

  3. 将Bytecode写入该合约账户

  4. 自动且仅执行一次Constructor构造函数(初始化)

  5. 初始化数据永久写入合约Storage,部署完成

2.3 初始化核心规则

  • 部署瞬间 msg.sender = 部署者EOA钱包地址

  • 代币初始总量、初始归属、管理员地址,全部在构造函数定义

  • 代币数量无技术上限(uint256极大值域),开发者可任意设定

  • 链不审核代币总量、规则,仅执行代码读写存储

三、EOA与合约的归属、权限、交互关系(核心解惑)

3.1 底层无天然归属

EVM底层不存在合约归属、默认管理员。合约部署后是独立账户,和部署者EOA无任何底层绑定关系。

3.2 权限完全由代码人为定义

默认规则:无代码权限限制 = 全网所有EOA完全平等

精准结论:

  • 不写owner管理员、不写权限校验、不写税费逻辑

  • 部署完成后,部署者和所有普通用户调用权限完全一致

  • 唯一差异:初始代币全部铸造在部署者EOA(资产差异≠权限差异)

3.3 两种人为制造的特权(仅代码控制)

  1. 管理员权限:手动存储owner地址,通过 require(msg.sender==owner) 限制专属操作

  2. 税费/分润逻辑:代码内置交易抽成,自动转账至部署者EOA

3.4 部署者与合约的全程关系总结

  • 部署阶段:必须依赖部署者EOA,唯一关联期

  • 部署后常态:无特殊代码则完全无关,用户交互链路不经过部署者

四、链上调用链路终极规则(彻底破除误区)

4.1 普通用户调用链路

用户B$EOA$ 调用 A部署的合约C1:

正确链路:B → C1

错误链路:B→A→C1(完全不存在)

部署者A仅为历史部署记录,不参与、不中转、不校验本次交易。

4.2 两个核心变量区分

  • msg.sender直接调用当前合约的地址(EOA/合约均可)

  • tx.origin整笔交易最源头的EOA(永远是用户钱包,不会是合约)

4.3 多层合约调用链路

B调用C1,C1内部调用C2:B→C1→C2

  • C1视角:msg.sender = B

  • C2视角:msg.sender = C1,tx.origin = B

五、XYK恒定乘积AMM模型(DEX池子核心数学)

5.1 核心公式与定义

公式:x * y = k

  • x:池子内代币A储备量

  • y:池子内代币B储备量

  • k:恒定常数(核心稳定因子)

  • 瞬时价格:P = y / x

5.2 两种操作对k的影响(最核心考点)

1. 普通用户Swap兑换(交易)

  • 资产此消彼长(x增y减 / x减y增)

  • 无手续费模型k绝对恒定

  • 价格随供需自动涨跌,产生滑点

  • 仅改变比例,不改变池子总资金体量

2. LP添加/移除流动性(增减池子本金)

  • 添加流动性:x、y等比例同步增大 → k变大 → 池子加深、滑点降低

  • 移除流动性:x、y等比例同步减小 → k变小 → 池子变浅、滑点升高

  • 价格不变,仅改变池子深度

5.3 池子深度本质

池子深度 = k值大小

  • k越大:流动性越深,大额交易滑点越小,币价越稳定

  • k越小:流动性越浅,小额交易大幅插针、涨跌剧烈

  • 滑点只和池子k有关,和代币总发行量无关

5.4 池子初始化逻辑(必懂)

  • 空Pair池子创建后,reserve0、reserve1 = 0,k=0,无法交易

  • LP首次双币注入,才会生成初始x、y、k,激活交易功能

  • XYK模型必须双资产,无法单币建池交易

六、EVM架构与Solana核心差异(破除跨链误区)

6.1 EVM(ETH/BSC)架构

  • 逻辑+存储绑定:一个池子 = 一个独立Pair合约

  • Factory工厂批量部署新合约生成交易对

  • 每个Pair独立存储x、y、k,完全隔离

6.2 Solana架构

  • 逻辑与存储分离:一套AMM程序全网复用

  • 创建池子仅新建存储账户,不部署新代码

  • XYK数学模型通用不变,仅工程实现不同

七、高频核心误区汇总(100%避坑)

  1. ❌ 误区:部署者拥有合约特权 ✅ 纠正:无代码定义则全网平等

  2. ❌ 误区:用户调用合约需要经过部署者 ✅ 纠正:链路直接用户→合约

  3. ❌ 误区:Swap交易会改变k值 ✅ 纠正:仅LP加减流动性改变k

  4. ❌ 误区:代币总量决定滑点 ✅ 纠正:仅池子k值决定滑点

  5. ❌ 误区:合约可以主动发起交易 ✅ 纠正:仅EOA可发起交易

  6. ❌ 误区:Factory是合约通用部署方式 ✅ 纠正:仅AMM批量建池使用,普通合约直接部署

八、终极极简记忆口诀

  1. EOA是人可发起,CA是程序只响应

  2. 部署靠EOA签名,初始化仅跑一次构造

  3. 权限全靠代码写,默认人人都平等

  4. 交易链路不绕人,部署历史不参与

  5. Swap换手k不变,LP注资k加深

  6. 滑点只看池子k,无关总量和市值

(注:部分内容可能由 AI 生成)