# 一文详解！带你走进 Aptos Move 解锁 Uniswap V2

By [LXDAO](https://paragraph.com/@lxdao) · 2024-08-31

---

![](https://storage.googleapis.com/papyrus_images/1b519a32597df2acf938135a4527bc2267475ceddbab377ce7eb57d471f5b51d.png)

内容丨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=uiSGieA4UFker876](https://youtu.be/_sofdktmD_8?si=uiSGieA4UFker876)

**Aptos 区块链概述**
---------------

理解 Aptos 之前，需要先了解区块链的基本概念。

区块链本质上是一个去中心化的共享数据库，类似于一个状态机，通过链上运行的合约程序改变状态。当用户希望修改余额时，只需提交交易，智能合约便会调整余额。

区块链的去中心化特性通过验证者网络来达成共识，从而确保交易和状态的一致性。

![](https://storage.googleapis.com/papyrus_images/45721f4d72bac40a04bc439f1678af8f86d9c946a72fe2eb92850299381eec54.png)

Aptos 的特点包括：

1.  扩展性：通过独特的内存池设计和并行执行提高性能。
    
2.  安全性：利用 Move 语言进行形式化验证，确保合约安全性。形式化验证使用数学方法对合约进行全面验证，避免遗漏潜在错误。
    

![](https://storage.googleapis.com/papyrus_images/3ba74bd2ddee62cd5a9e81205558e25c5ef7920ca4ade498901557e1c2d95b75.png)

Aptos 的架构分为多个层次，包括共识层（使用 AptosBFT 和 DPoS）和执行层（使用 MoveVM 和并行执行引擎）。

1.  共识层  
    · 使用 AptosBFT  
    · 使用 DPoS
    
2.  执行层  
    · 使用 MoveVM  
    · 使用并行执行引擎
    
3.  合约层  
    · 使用 Move 语言  
    · 支持资源模型  
    · 支持对象存储模型
    
4.  SDK 支持  
    · Typescript  
    · Rust  
    · Go  
    · Python
    

![](https://storage.googleapis.com/papyrus_images/c6ecf4c71361ed12a19307bfe4df3c3595161b79daf1c41fdb6330c5310a3ab0.png)

Aptos 与 EVM 的区别
---------------

Aptos 和 EVM 在多个方面有所不同：

1.  数据存储：EVM 的数据存储在合约存储槽中，而 Aptos 则在账户下存储数据。
    
2.  虚拟机和语言：EVM 支持多种语言编写合约，但安全性依赖语言开发者。而 Aptos 的 Move 语言与虚拟机紧密集成，减少了语言与虚拟机不一致的风险，并且 Move 语言具备强类型检查，提升安全性。
    
3.  并行化：Aptos 从一开始就支持并行执行，而 EVM 由于存储架构等问题所以并行化发展较晚。
    
4.  交易安全：EVM 使用 Nonce，Aptos 使用 Sequence Number，由合约定义，确保交易顺序的正确性。
    
5.  类型系统：EVM 的合约类型较为宽松，可能导致安全隐患；而 Move 使用强类型系统，提升了合约的安全性。
    
6.  动态调用：EVM 支持代理合约进行动态调用，而 Aptos 则通过静态调度避免了潜在的安全问题。
    

![](https://storage.googleapis.com/papyrus_images/323517e3d4e954885db668e4c65cb4e31988468cba1f6fc5ccf4425d6108c745.png)

Aptos 上的 Uniswap V2 实现
----------------------

Logan 介绍了如何在 Aptos 上实现常见的 Uniswap V2。

首先回顾 Uniswap V2 的基础知识， Uniswap V2 是一个去中心化交易所协议，主要由以下三部分组成：

1.  自动化市场做市商（AMM）：通过流动性池（liquidity pools）进行交易。
    
2.  交易对：支持任意 ERC-20 代币之间的交易对。
    
3.  价格发现：使用恒定产品市场做市商（Constant Product Market Maker）公式（x \* y = k）确定价格。
    

![](https://storage.googleapis.com/papyrus_images/1fb92d5ed8dafe97769a795f6f0a993ac05ec8c0dbd1cc24998df9688b552ac2.png)

在 Aptos 上实现 Uniswap V2 的步骤包括：

1.  创建流动池：创建 Fungible Asset Store Object 存储代币 和 Pool Object 存储 Pool 数据。
    
2.  创建交易对：将两个 Fungible Asset 的 Metadata 结合，生成新的 Metadata Object 作为新的 LP 代币。
    
3.  实现价格计算：通过公式计算 x \* y = k，并根据 Fungible Asset Store Objec 中的余额进行操作。
    

![](https://storage.googleapis.com/papyrus_images/1e1f584a5beababe4eb891502b48f4380698469b0e6e6865a43c8557b43c03e8.png)

对于实际操作，可以通过提供的代码页面进行测试，包括 USDT 和 USDC 两个测试币，及相关的 Swap 和水龙头代码。

> **代码示例**  
> · OnChain Swap Code： [https://explorer.aptoslabs.com/object/0x63e27b5730bdf07519d47d40e8d557b2fb9040bfe4676b77ca3ef928e4a51f77/modules/run/liquidity\_pool?network=testnet](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](https://explorer.aptoslabs.com/object/0x6fd9671a40f7735aa0843708b13668de5391dca46a2dbe6fac64e1e862c377a7/modules/run/launch/faucet?network=testnet)
> 
> **Faucet MUSDT**  
> 参数 (args)  
> · 代币地址: 0x06eea31b180c68c8122b7a0217044667ae847c8cd673dfc03a6de6905399db99  
> · 数量: 1000000000
> 
> **Faucet MUSDC**  
> 参数 (args)  
> · 代币地址: 0xd154de5c8718df3f6c9bb5a07f17700ae61f88dcb609ad3ee23467d5de573284  
> · 数量: 1000000000

![](https://storage.googleapis.com/papyrus_images/e6460d0cf0f1eb588ef2a87e16615b3b9132ec809947d46977cc9de2f9d43337.png)

Aptos 还提供了丰富的学习资源，包括文档、学习实例和 Dapp 工作模板，帮助大家更好地学习和掌握 Aptos。

**实例学习:** [https://learn.aptoslabs.com/](https://learn.aptoslabs.com/)

· OnChain - Randomness  
· Dispatchable Fungible Assets  
· Building a Stablecoin on Aptos  
· Integrate with Aptos Wallets

![](https://storage.googleapis.com/papyrus_images/90e750f255d702ac89103fa1af4937b4f7228e3ac9839cb5629c5e29a4cbc18e.png)

**文档站：**[https://aptos.dev/](https://aptos.dev/)

· Objects  
· Aptos Digital Asset (DA) Standard  
· Aptos Fungible Asset (FA) Standard  
· Keyless、Passkey …

![](https://storage.googleapis.com/papyrus_images/daf2e021cc4fcef218f11c3cba30eddd8de6061076e4e0d556c451d684062767.png)

**创建 Dapp 工程模版：**[https://aptos.dev/en/build/create-aptos-dapp](https://aptos.dev/en/build/create-aptos-dapp)

![](https://storage.googleapis.com/papyrus_images/06b876019849976e46e9418c14938bf79e12aa651e9aea753900821e846fd1bb.png)

**精彩答疑集锦**
----------

**Q1: 代码块是固定的还是可以自定义？如果自定义，如何避免风险？**  
Logan 解释道，Aptos 的官方代码库需要通过提案和投票来升级，确保安全性。如果自定义开发代码，则需要谨慎选择代码来源，避免使用不熟悉的或存在安全问题的代码。

**Q2: 如何快速确认模块是官方的还是用户自定义的？**  
Logan 指出，官方模块有固定的地址，可以通过调用地址确认模块来源。

**Q3: Aptos 的代码库升级机制是什么？**  
Logan 介绍了 Aptos 的代码升级机制，包括合约层和节点层的升级。合约层的升级需要通过社区投票，节点层的升级类似于其他区块链，经过投票决定。

· Aptos 国库投票：[https://governance.aptosfoundation.org/](https://governance.aptosfoundation.org/)

**Q4: Aptos 的账户模型与 Solana 的区别？**  
Logan 解释，Aptos 和 Solana 的账户模型差异在于数据结构和操作方式。Aptos 的账户可以存储多个 Struct，灵活性更高，而 Solana 的账户模型较为静态且分散。

**结语**
------

以上就是本期 LX 分享会的精彩内容，相信大家对于 Aptos 的基础概念及其入门学习等已有了更全面与深入的了解，也基本掌握了 Uniswap V2 在 Aptos 上的实现。而随着区块链技术的不断进步， 我们也相信，Aptos 在未来也将拥有一片广阔的宇宙天地！

---

*Originally published on [LXDAO](https://paragraph.com/@lxdao/aptos-move-uniswap-v2)*
