智能合约安全

2024年07月08日更新 456 人订阅
专栏简介 DeFi安全之杠杆挖矿 SharkTeam系列课程—NFT&GameFi开发与安全 NFT和GameFi概念介绍 ERC20/ERC721/ERC1155概念与协议 闪电贷和重入攻击:Grim Finance被黑事件分析 重入攻击:Uniswap V3流动性协议Visor Finance被黑事件分析 领航Web3安全,让数字生活更安全更美好:SharkTeam线上AMA实录 闪电贷攻击:Sashimi Swap被黑事件分析 ERC20相关业务的合约开发与合约安全 权限问题:Crosswise 被黑事件分析 细节决定成败:QBridge被黑事件分析 损失3.26亿,跨链协议再暴雷:Wormhole被黑事件分析 参数校验不严谨:Superfluid被黑事件分析 ERC721/ERC1155合约开发与合约安全 闪电贷+提案攻击-Beanstalk Farms攻击原理及资金流向分析 监守自盗?Titano.Finance被黑事件分析 AscendEX黑客攻击事件资金流向分析 NFT交易平台安全风险频发--OpenSea & X2Y2安全事件分析 SharkTeam系列课程—NFT 应用场景分析 SharkTeam发布2022年Q1智能合约安全态势感知季报 ChainAegis链上分析:以太坊合并后的中心化风险 大意失荆州-Akutar合约漏洞导致34M美元资金永久被锁 SharkTeam:十大智能合约安全威胁之回退攻击 闪电贷&重入攻击:Hundred与Agave被黑事件分析 从APE空投漏洞谈起,NFT安全情况究竟如何? 千里之堤,溃于蚁穴—跨链协议Nomad被黑事件分析 SharkTeam服务全线升级,重磅推出ChainAegis链上风险分析平台,全面保障Web3生态安全 ChainAegis:从链上数据看,FTX会崩盘吗? NFT合约同样也有重入风险:Revest Finance被黑事件分析 操纵预言机+提案攻击—Fortress Loans被黑事件分析 去年519,今年510—从链上分析的角度看,LUNA会不会真的陷入死亡螺旋? 算法稳定币UST崩盘—是完美风暴还是金融围猎? 6.2亿,再破记录:Ronin Bridge攻击事件技术分析与资金流向分析 周天王的愚人节-NFT精准钓鱼事件技术分析与资金流向分析 【深度】从链上分析和金融安全角度,看stETH的囚徒困境和Celsius挤兑事件 NFT流动性协议的安全困局—NFT借贷协议XCarnival被黑事件分析 NFT流动性市场安全问题频发—NFT交易平台Quixotic被黑事件分析 【深度】OpenSea 新协议 Seaport源码解析 重入攻击+闪电贷—NFT金融协议Omni被黑事件分析 SharkTeam发布2022年第二季度Web3安全态势感知报告 DeFi安全之DEX与AMMs SharkTeam完成Flow生态NFT市场MatrixMarket的安全审计 闪电贷技术详解-Part 1 闪电贷技术详解-Part 2 闪电贷技术详解-Part 3 SharkTeam系列课程:什么是DeFi借贷 DeFi安全之抵押借贷 从链上分析角度看Tornado Cash被制裁事件 Defi安全之借贷杠杆 链上数据角度,看DeFi隐私赛道的现状和未来 火眼金睛,教你如何识别Rug Pull项目 SharkTeam:十大智能合约安全威胁之重入攻击 SharkTeam:十大智能合约安全威胁之操纵预言机 SharkTeam:十大智能合约安全威胁之逻辑校验漏洞 SharkTeam:十大智能合约安全威胁之权限漏洞 SharkTeam:8月Web3安全报告 SharkTeam:十大智能合约安全威胁之合约升级漏洞 警惕以太坊合并后的重放攻击:Omni跨链桥被攻击事件分析 SharkTeam:十大智能合约安全威胁之函数恶意初始化 波卡“以太坊"Moonbeam的技术创新之路 左手以太坊、右手跨链-Moonbeam的创新与突破 批准+校验漏洞-TransitSwap安全事件分析 ChainAegis:BTC和ETH第三季度链上数据解读 默克尔树漏洞成因和链上资金追踪-BNBChain跨链桥攻击事件分析 SharkTeam:Move合约开发与合约安全 Moonbeam的多链架构 高保真还原BNBChain跨链攻击实现原理-攻击者选择高度为110217401的区块到底有什么讲究? SharkTeam:十大智能合约安全威胁之三明治攻击 香港要成为国际虚拟资产中心,链上安全是关键 SharkTeam:十大智能合约安全威胁之提案攻击 ChainAegis:FTX资金流向最新分析,风险大,请尽快提款 SharkTeam:十大智能合约安全威胁之重放攻击 Move语言安全性分析及合约审计要点 之权限漏洞、重入攻击 ChainAegis:Top20 中心化交易所资金储备链上分析-Part 1 区块链安全 Move语言安全性分析及合约审计要点 之逻辑校验漏洞 ChainAegis:Top20 中心化交易所资金储备链上分析-Part 2 ChainAegis:Top20 中心化交易所资金储备链上分析-Part 3 Move语言安全性分析及合约审计要点 之函数恶意初始化 链上数据分析:CeFi频繁暴雷后,DEX会成为主流吗? Move语言安全性分析及合约审计要点之回退攻击 SharkTeam:11月Web3安全报告 SharkTeam与NFMS达成合作,提供Move合约审计服务 Move语言安全性分析及合约审计要点之提案攻击 ChainAegis分析报告:Dogecoin排名前10的市值从何而来? SharkTeam完成APTOS生态项目NFMS的合约审计 ArWiki调研报告 Move语言安全性分析及合约审计要点之合约升级漏洞 Verto调研报告 在深熊中艰难前行,DeFi & CeFi 2022年度分析报告 SharkTeam:2022年度Web3安全报告 ChainAegis:2022年度NFT&GameFi分析报告 Move语言安全性分析及合约审计要点之操纵预言机 加密货币反洗钱(AML)分析 SharkTeam:Move语言安全性分析及合约审计要点 之三明治攻击 ChainAegis:BUSD链上数据分析报告 闪电贷攻击+业务逻辑漏洞:Platypus Finance事件分析 SharkTeam:Move语言安全性分析及合约审计要点之重放攻击 加密货币钓鱼团伙Monkey Drainer链上行为分析 权限漏洞+价格操纵:SwapX被攻击事件分析 ChainAegis:Blur链上数据分析报告 ChainAegis:数读Silvergate & SVB崩盘事件 业务逻辑漏洞+闪电贷攻击:Euler Finance被攻击事件分析 ChainAegis:稳定币协议Liquity链上分析报告 ChainAegis:GMX链上分析报告 SharkTeam与GoPlus Security达成战略合作,共同守护Web3世界安全 香港之夜,Dao的盛会 SharkTeam:2023年第一季度Web3安全报告 Talk with us,公链、DeFi等Web3时代的创新发展机遇有哪些? 香港Web3嘉年华“Web3与安全”主题论坛议程揭秘 2023香港Web3嘉年华,SharkTeam展台指引 权限校验漏洞:SushiSwap被攻击事件分析 香港会议期间,SharkTeam发布“链上安全分析研究报告” 安全是发展Web3的必要条件-SharkTeam受邀香港Web3嘉年华 ChainAegis:LSD赛道链上分析报告 Sui 与 Aptos 技术实现对比 ChainAegis:去中心化保险赛道及风险分析 ChainAegis:Pancakeswap V2V3链上数据分析 ChainAegis:AAVE V2/V3链上数据分析 ChainAegis:Gains Network链上数据分析 逻辑漏洞:DEUS被攻击事件分析 ChainAegis:BRC-20链上数据分析 ChainAegis:Blend链上数据分析 SharkTeam:Tornado.Cash提案攻击原理分析 SharkTeam:Sui主网链上数据分析 SharkTeam:Jimbos protocol闪电贷攻击原理分析 SharkTeam:RWA赛道链上数据分析 SharkTeam:Zksync Era链上数据分析 SharkTeam:Atomic Wallet攻击原理和洗钱模式分析 链安全 Sui主网上线满月,链上持币者数据分析 SharkTeam:Atlantis提案攻击原理分析 SharkTeam:HashFlow攻击事件原理分析 SharkTeam:2023年第二季度Web3安全报告 SharkTeam与Move Accelerator达成合作,Let’s Move! SharkTeam:Themis protocol闪电贷价格操纵攻击分析 SharkTeam:4月28日攻击者就已实施攻击-PolyNetwork攻击原理和资产转移分析 SharkTeam:AzukiDAO攻击事件分析 SharkTeam:BNO攻击事件原理分析 SharkTeam:Vyper漏洞导致Curve和JPEG'd等项目被攻击原理分析 SharkTeam:UniswapV4 Hook最佳安全实践 SharkTeam:UniswapX 源码分析 SharkTeam:Worldcoin运营数据及业务安全分析 SharkTeam与TOKEN2049正式达成合作伙伴关系 SharkTeam:Exactly Protocol攻击事件原理分析 SharkTeam:Rugpull工厂黑色产业链分析 SharkTeam开启9月双城记 SharkTeam上海区块链全球峰会展台指引 SharkTeam:Web3安全实践与创新 KYT/AML:Web3合规展业的必要条件 SharkTeam:典型钓鱼攻击链上资产转移分析 SharkTeam:起底朝鲜APT组织Lazarus Group,攻击手法及洗钱模式 SharkTeam:2023年第三季度Web3安全报告 SharkTeam:BH闪电贷攻击原理分析 SharkTeam:Platypus Finance攻击事件原理分析 SharkTeam:Onyx Protocol攻击事件原理分析 SharkTeam:Raft攻击事件原理分析 从链上分析角度看FTX破产清算过程,美国加密货币监管与风险处置能力究竟如何 SharkTeam:KyberSwap攻击事件原理分析 SharkTeam:ERC2771\&Multicall任意地址欺骗漏洞原理分析 SharkTeam:OKX DEX攻击事件分析及链上资产追踪 SharkTeam:从链上数据看稳定币的安全与监管 SharkTeam:2023年加密货币犯罪分析报告 SharkTeam:MIM_SPELL被攻击事件原理分析 SharkTeam:合约精度计算漏洞与安全建议 SharkTeam:Woo Finance被攻击事件分析 SharkTeam:Prisma Finance被攻击事件分析 SharkTeam:2024年第一季度Web3安全报告 SharkTeam:Hedgey Finance被攻击事件分析 SharkTeam:Sonne Finance攻击事件分析 SharkTeam:Web3常见钓鱼方式分析与安全防范建议 SharkTeam:UwU Lend攻击事件分析 SharkTeam:美国众议院FIT21法案解读 SharkTeam:2024年上半年度Web3安全报告

SharkTeam:UniswapX 源码分析

  • SharkTeam
  • 发布于 2023-08-04 14:34
  • 阅读 2968

UniswapX 源码分析

设计原理

UniswapX 旨在通过将路由复杂性外包给第三方填充者的开放网络来解决,然后第三方填充者竞争使用 AMM 矿池或自己的私人库存等链上流动性来填充掉期。

借助 UniswapX,交换者将能够使用 Uniswap 界面,而不必担心自己是否获得最佳价格,并且交易将始终在链上透明地记录和结算。所有订单均由 Uniswap 智能订单路由器支持,这迫使填充者与 Uniswap v1、v2、v3 以及一旦启动后的 v4 竞争。

优势

  • 通过聚合流动性来源获得更好的价格
  • 无 gas 交换
  • 防止 MEV(最大可提取值)
  • 交易失败无需支付任何费用
  • 在接下来的几个月中,UniswapX 将扩展到无 Gas 跨链交换。

工作原理

首先,假设 Alice(交换者)想要将 1 ETH 交换为 USDC。Alice 向(潜在的填充者)Bob、Charlie 和 Danielle 请求报价:

  • Bob 提出以 1,000 USDC 购买 Alice 的 ETH
  • Charlie 现有 999 USDC
  • Danielle 现有 998 USDC
  • Alice 还可以直接通过 Uniswap v3 将她的 1 ETH 兑换成 997 USDC

Alice 接受 Bob 的 1,000 USDC 报价,并签署订单。

该订单包括最大值(由 Bob 的报价 1,000 USDC 设置)和最小值 997 USDC(由 Uniswap 智能订单路由器 API 设置)。

Bob 可以使用他自己的 USDC 或将 Alice 的 1 个 ETH 路由到各种链上流动性场所(Uniswap 协议、Sushiswap 等)来填写 Alice 的订单。

Bob 决定使用自己的 USDC 来满足 Alice 的订单,并向 Alice 发送 1,000 USDC 以换取她的 1 ETH。

如果 Bob 决定放弃他的提议,Alice 不需要提交新的订单和签名。

相反,她现有的订单会自动更新,向任何能给她 999 USDC 作为回报的人提供 1 ETH。

一个区块已经过去,现在 Charlie 和 Danielle(以及参与 UniswapX 系统的任何其他填充者)都不愿意以 999 USDC 的价格填写 Alice 的订单。另一个以太坊区块(12 秒)到期后,Alice 的 1 ETH 可兑换 998 USDC。

突然,Danielle 意识到,通过将 Alice 的交易发送到 Uniswap v3 和 Sushiswap 的组合,她可以以 998 USDC 的价格填写 Alice 的 1 ETH 卖单,同时仍然为自己赚取 1 USDC 的利润。

Danielle 代表 Alice 将 Alice 的 1 ETH 发送到 Uniswap v3 和 Sushiswap,将 998 USDC 返还给 Alice,并为自己保留剩余的 1 USDC 输出。

交易流程

UniswapX 是一个去中心化交易协议,利用 Permit2 代币授权合约引入了基于签名的授权和转账功能,适用于任何 ERC20 代币。此外,UniswapX 还使用 Reactor 合约进行链上结算。Reactor 合约负责验证交易是否符合用户指定的参数,并可以撤销不符合条件的交易。要参与 UniswapX 的交易,兑换者首先必须授权 Permit2 合约。

兑换者无需手动创建和提交交易,而是对交易订单签名,指定以下参数:

  1. 输入代币(支付代币)
  2. 输出代币(获取代币)
  3. 输入(输出)数量
  4. 初始输出(输入)金额
  5. 最低输出(输入)数量
  6. 衰减函数
  7. 兑换期限
  8. 授权 UniswapX Reactor 合约代表其使用代币

这些订单由 MEV 搜索者、做市商和 / 或其他链上代理(统称为填单者)接收,并将其发送到 Reactor 合约。通过在链上提交兑换者的订单,填单者代表兑换者支付 Gas 费用。这些费用会反映在执行价格中,以补偿 Gas 成本。

Reactor 合约调用填单者的 Executor 合约,其中包含特定的订单执行逻辑。一旦确定资产来源,Executor 合约将资产发送到兑换者的地址,并从兑换者地址提取资金。最后,Reactor 合约验证订单是否满足条件。

UniswapX 没有规定填单者如何填充兑换者的订单。流动性可以来自 Uniswap 或其他去中心化交易所的链上流动性池、链下流动性源或其他 UniswapX 订单。多个订单可以捆绑到同一笔交易中,并且其他操作可以在链上原子执行。

关键源码解析

image.png

由于填充者需要代替交换者提交 gas,所以可以通过批量执行订单的方式来减少一次交易带来的手续费损耗。

image.png

_fill 函数中处理具体订单的执行逻辑,这里存在两种情况,如果填充者使用自己个人持仓来完成用户的兑换,则不需要使用回调合约,直接进行资金对换;否则需要在回调合约中来处理具体逻辑,例如到其他交易池中进行兑换等。

image.png

合约使用 validate 函数来验证填充者是否是订单的指定填充者。

image.png

image.png

合约使用了 permit2 库来完成签名的校验和代币的转账,以此保证交换者的钱不会被随意转走。

image.png

若填充者选择使用个人持仓完成订单,则会直接将代币从填充者地址转移到交换者地址。

image.png

在回调合约的回调函数执行完成后,调用 check 函数校验用户是否收到了足够的代币,若不满足足够的代币,则交易整个回退。

总结,合约中涉及到的只有关于链上的逻辑,由于用户并不需要支付 gas 费来完成这一笔交易,所以前期的多数操作选择在链下进行,包括用户的交换请求发送和对交易进行签名等。uniswapX 选择在链下将用户的交换请求发送给填充者,而一旦填充者接受了填充请求,则由填充者将交易发送到链上,并从中赚取差值作为利润。

image.png

About Us

SharkTeam的愿景是全面保护Web3世界的安全。团队由来自世界各地的经验丰富的安全专业人士和高级研究人员组成,精通区块链和智能合约的底层理论,提供包括智能合约审计、链上分析、应急响应等服务。已与区块链生态系统各个领域的关键参与者,如Polkadot、Moonbeam、polygon、OKC、Huobi Global、imToken、ChainIDE等建立长期合作关系。

官网:https://www.sharkteam.org

Twitter:<https://twitter.com/sharkteamorg>\ Telegram:<https://t.me/sharkteamorg>

Discord:<https://discord.gg/jGH9xXCjDZ>

  • 学分: 18
  • 分类: DeFi
  • 标签:
点赞 2
收藏 2
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

1 条评论

请先 登录 后评论