# 一文详解!带你走进 Aptos Move 解锁 Uniswap V2 **Published by:** [LXDAO](https://paragraph.com/@lxdao/) **Published on:** 2024-08-31 **URL:** https://paragraph.com/@lxdao/aptos-move-uniswap-v2 ## Content 内容丨LXDAO 编辑 & 排版丨Logan、Soleil 在区块链技术的创新浪潮中,Aptos 作为新兴的 Layer1 公链,通过其独特的 Move 编程语言和模块化设计架构,以高扩展性和强安全性为加密领域带来了新的篇章。而 Uniswap,作为 DeFi 领域的去中心化交易所,若与 Aptos 相结合,会产生怎样的火花呢?让我们回顾一下本期 LX 分享会的精彩内容。8月20日晚8点,LX 分享会如期举行。Aptos 的开发者 Logan 受邀分享,LXDAO 运营小组 PM Cikey 主持了此次活动。直播错过的朋友可以点击链接查看回放。👇 🎙️ 回放链接:https://youtu.be/_sofdktmD_8?si=uiSGieA4UFker876Aptos 区块链概述理解 Aptos 之前,需要先了解区块链的基本概念。 区块链本质上是一个去中心化的共享数据库,类似于一个状态机,通过链上运行的合约程序改变状态。当用户希望修改余额时,只需提交交易,智能合约便会调整余额。 区块链的去中心化特性通过验证者网络来达成共识,从而确保交易和状态的一致性。Aptos 的特点包括:扩展性:通过独特的内存池设计和并行执行提高性能。安全性:利用 Move 语言进行形式化验证,确保合约安全性。形式化验证使用数学方法对合约进行全面验证,避免遗漏潜在错误。Aptos 的架构分为多个层次,包括共识层(使用 AptosBFT 和 DPoS)和执行层(使用 MoveVM 和并行执行引擎)。共识层 · 使用 AptosBFT · 使用 DPoS执行层 · 使用 MoveVM · 使用并行执行引擎合约层 · 使用 Move 语言 · 支持资源模型 · 支持对象存储模型SDK 支持 · Typescript · Rust · Go · PythonAptos 与 EVM 的区别Aptos 和 EVM 在多个方面有所不同:数据存储:EVM 的数据存储在合约存储槽中,而 Aptos 则在账户下存储数据。虚拟机和语言:EVM 支持多种语言编写合约,但安全性依赖语言开发者。而 Aptos 的 Move 语言与虚拟机紧密集成,减少了语言与虚拟机不一致的风险,并且 Move 语言具备强类型检查,提升安全性。并行化:Aptos 从一开始就支持并行执行,而 EVM 由于存储架构等问题所以并行化发展较晚。交易安全:EVM 使用 Nonce,Aptos 使用 Sequence Number,由合约定义,确保交易顺序的正确性。类型系统:EVM 的合约类型较为宽松,可能导致安全隐患;而 Move 使用强类型系统,提升了合约的安全性。动态调用:EVM 支持代理合约进行动态调用,而 Aptos 则通过静态调度避免了潜在的安全问题。Aptos 上的 Uniswap V2 实现Logan 介绍了如何在 Aptos 上实现常见的 Uniswap V2。 首先回顾 Uniswap V2 的基础知识, Uniswap V2 是一个去中心化交易所协议,主要由以下三部分组成:自动化市场做市商(AMM):通过流动性池(liquidity pools)进行交易。交易对:支持任意 ERC-20 代币之间的交易对。价格发现:使用恒定产品市场做市商(Constant Product Market Maker)公式(x * y = k)确定价格。在 Aptos 上实现 Uniswap V2 的步骤包括:创建流动池:创建 Fungible Asset Store Object 存储代币 和 Pool Object 存储 Pool 数据。创建交易对:将两个 Fungible Asset 的 Metadata 结合,生成新的 Metadata Object 作为新的 LP 代币。实现价格计算:通过公式计算 x * y = k,并根据 Fungible Asset Store Objec 中的余额进行操作。对于实际操作,可以通过提供的代码页面进行测试,包括 USDT 和 USDC 两个测试币,及相关的 Swap 和水龙头代码。代码示例 · OnChain Swap Code: https://explorer.aptoslabs.com/object/0x63e27b5730bdf07519d47d40e8d557b2fb9040bfe4676b77ca3ef928e4a51f77/modules/run/liquidity_pool?network=testnet · OnChain Faucet Code: https://explorer.aptoslabs.com/object/0x6fd9671a40f7735aa0843708b13668de5391dca46a2dbe6fac64e1e862c377a7/modules/run/launch/faucet?network=testnet Faucet MUSDT 参数 (args) · 代币地址: 0x06eea31b180c68c8122b7a0217044667ae847c8cd673dfc03a6de6905399db99 · 数量: 1000000000 Faucet MUSDC 参数 (args) · 代币地址: 0xd154de5c8718df3f6c9bb5a07f17700ae61f88dcb609ad3ee23467d5de573284 · 数量: 1000000000Aptos 还提供了丰富的学习资源,包括文档、学习实例和 Dapp 工作模板,帮助大家更好地学习和掌握 Aptos。 实例学习: https://learn.aptoslabs.com/ · OnChain - Randomness · Dispatchable Fungible Assets · Building a Stablecoin on Aptos · Integrate with Aptos Wallets文档站:https://aptos.dev/ · Objects · Aptos Digital Asset (DA) Standard · Aptos Fungible Asset (FA) Standard · Keyless、Passkey …创建 Dapp 工程模版:https://aptos.dev/en/build/create-aptos-dapp精彩答疑集锦Q1: 代码块是固定的还是可以自定义?如果自定义,如何避免风险? Logan 解释道,Aptos 的官方代码库需要通过提案和投票来升级,确保安全性。如果自定义开发代码,则需要谨慎选择代码来源,避免使用不熟悉的或存在安全问题的代码。 Q2: 如何快速确认模块是官方的还是用户自定义的? Logan 指出,官方模块有固定的地址,可以通过调用地址确认模块来源。 Q3: Aptos 的代码库升级机制是什么? Logan 介绍了 Aptos 的代码升级机制,包括合约层和节点层的升级。合约层的升级需要通过社区投票,节点层的升级类似于其他区块链,经过投票决定。 · Aptos 国库投票:https://governance.aptosfoundation.org/ Q4: Aptos 的账户模型与 Solana 的区别? Logan 解释,Aptos 和 Solana 的账户模型差异在于数据结构和操作方式。Aptos 的账户可以存储多个 Struct,灵活性更高,而 Solana 的账户模型较为静态且分散。结语以上就是本期 LX 分享会的精彩内容,相信大家对于 Aptos 的基础概念及其入门学习等已有了更全面与深入的了解,也基本掌握了 Uniswap V2 在 Aptos 上的实现。而随着区块链技术的不断进步, 我们也相信,Aptos 在未来也将拥有一片广阔的宇宙天地! ## Publication Information - [LXDAO](https://paragraph.com/@lxdao/): Publication homepage - [All Posts](https://paragraph.com/@lxdao/): More posts from this publication - [RSS Feed](https://api.paragraph.com/blogs/rss/@lxdao): Subscribe to updates - [Twitter](https://twitter.com/LXDAO_Official): Follow on Twitter