如何与 Uniswap、Sushiswap 等去中心化交易所交互,理解 AMM(自动做市商)的原理

一、DEX 是什么(一句话面试版)

DEX(去中心化交易所)

→ 不靠订单簿撮合

→ 不托管资产

→ 通过智能合约 + AMM 算法,让用户直接在链上完成兑换

Uniswap / Sushiswap 本质:

一组部署在链上的合约 + 一个前端 UI


二、AMM 是什么(核心思想)

1️⃣ AMM 在解决什么问题?

传统交易所(CEX):

  • 有订单簿
  • 有做市商
  • 有撮合引擎

DEX 没有:

  • 没人挂买卖单
  • 没人撮合

👉 那价格从哪来?


2️⃣ AMM 的答案

价格由"池子里的资产比例"决定

池子里永远有两种币,比如:

复制代码
ETH / USDC 池
x = ETH 数量
y = USDC 数量

Uniswap V2 的核心公式(必须会):

复制代码
x * y = k   (恒定乘积)

k 是常数,交易前后不变


3️⃣ 用大白话解释一次交易过程

假设池子里:

复制代码
ETH = 10
USDC = 20,000

此时:

复制代码
ETH 价格 ≈ 2000 USDC

你用 1000 USDC 买 ETH

  • USDC ↑
  • ETH ↓
  • 必须保持 x * y = k

👉 价格自动变化

👉 你买得越多,价格越贵

👉 这就是滑点(slippage)


三、Uniswap / Sushiswap 怎么交互(前端视角)

1️⃣ 合约层结构(非常重要)

你前端真正交互的不是「DEX」,而是这些合约:

合约 作用
ERC20 代币合约
Pair / Pool 资金池
Router 封装好的交易入口
Factory 创建池子

👉 99% 前端只调 Router


2️⃣ 一次 Swap 的完整流程(必背)

USDC → ETH 为例:

Step 1:approve(必有)
ts 复制代码
USDC.approve(
  routerAddress,
  amountIn
)

授权 Router 花你的 USDC


Step 2:调用 Router.swap
ts 复制代码
router.swapExactTokensForTokens(
  amountIn,
  amountOutMin,
  path,        // [USDC, WETH]
  to,          // 你的地址
  deadline
)

🔑 参数解释(面试重点):

参数 说明
amountIn 你付出的币
amountOutMin 最少能接受多少(防滑点)
path 兑换路径
deadline 防止交易卡太久

3️⃣ 为什么一定要 approve?

因为:

  • ERC20 遵循 "转账必须授权"
  • Router 不是你
  • 合约不能随便动你资产

👉 approve → swap 是 DeFi 高频考点


四、AMM 的几个核心概念(必会)

1️⃣ 滑点(Slippage)

你看到的价格 ≠ 最终成交价

原因:

  • 交易会改变池子比例

前端常见处理:

  • 设置 0.5% / 1% / 自定义

2️⃣ LP(流动性提供者)

你也可以往池子里存币赚钱

复制代码
存 ETH + USDC
→ 获得 LP Token
→ 赚手续费

3️⃣ 无常损失(Impermanent Loss)

价格波动导致:

  • 你提供流动性
  • 不如直接持币

👉 LP 风险点,面试经常问


五、Uniswap vs Sushiswap(一句话区别)

项目 Uniswap Sushiswap
本质 AMM AMM
起源 原创 Fork Uniswap
代币 UNI SUSHI
特点 稳定、主流 激进、功能多

👉 前端交互几乎一模一样


六、前端如何"真的"用起来(你该练什么)

推荐最小实战路径(很适合你)

1️⃣ 用 wagmi + ethers

2️⃣ 连钱包

3️⃣ 调用 Uniswap Router

4️⃣ 实现:

  • 读价格(getAmountsOut)
  • approve
  • swap
  • 显示滑点 / 失败原因

七、面试一句话总结(直接背)

DEX 通过 AMM 算法,用资金池代替订单簿。

Uniswap 使用恒定乘积公式 x*y=k 定价,

前端主要通过 Router 合约完成 approve + swap,

交易中需要处理滑点、授权、路径和截止时间等问题。

相关推荐
软件工程小施同学1 天前
区块链可投会议CCF C--PETS 2026 截止2.28
区块链
lsrsyx1 天前
暖阳人生 · 共建智慧康养新生态
区块链
blockcoach2 天前
刘教链|大减速时代
区块链
devmoon2 天前
从 0 到 1 实现两条独立区块链Parachain的跨链通信能力之实操指南
开发语言·rust·区块链·信息与通信·polkadot
devmoon2 天前
区块链预言机(Oracle)解析:Polkadot、以太坊与 Solana 如何把现实世界带入链上?
开发语言·oracle·区块链·信息与通信·以太坊·polkadot·solana
devmoon2 天前
区块链 Indexer 全解析:为什么 Web3 应用离不开数据索引器?(Polkadot / Ethereum / Solana 对比与未来展望)
rust·web3·区块链·以太坊·polkadot·solana·indexer
Blockchina2 天前
什么是“永续合约去中心化交易所”(Perp DEX)
区块链·perp dex·去中心化合约交易所
选择不变3 天前
飞云趋势擒妖-副图指标操盘技术图文教程--如何识别建仓,洗盘,主升,出货
区块链
wenzhangli73 天前
OoderAgent AI 能力分发与自动化协作框架白皮书(V0.7.3 )
网络·去中心化·p2p
、我是男生。3 天前
大A、美股、港股
区块链