查看原文
其他

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

LXDAO LXDAO
2024-10-03


在区块链技术的创新浪潮中,Aptos 作为新兴的 Layer1 公链,通过其独特的 Move 编程语言和模块化设计架构,以高扩展性和强安全性为加密领域带来了新的篇章。而 Uniswap,作为 DeFi 领域的去中心化交易所,若与 Aptos 相结合,会产生怎样的火花呢?让我们回顾一下本期 LX 分享会的精彩内容。


8月20日晚8点,LX 分享会如期举行。Aptos 的开发者 Logan 受邀分享,LXDAO 运营小组 PM Cikey 主持了此次活动。直播错过的朋友可以点击链接查看回放。👇

🎙️ 回放链接:https://youtu.be/_sofdktmD_8?si=uiSGieA4UFker876



01

Aptos 区块链概述


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

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

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


Aptos 的特点包括:

1. 扩展性:通过独特的内存池设计和并行执行提高性能。

2. 安全性:利用 Move 语言进行形式化验证,确保合约安全性。形式化验证使用数学方法对合约进行全面验证,避免遗漏潜在错误。


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

1. 共识层
· 使用 AptosBFT
· 使用 DPoS

2. 执行层
· 使用 MoveVM
· 使用并行执行引擎

3. 合约层
· 使用 Move 语言
· 支持资源模型
· 支持对象存储模型

4. SDK 支持
· 
Typescript
· Rust
· Go
· Python



02

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 则通过静态调度避免了潜在的安全问题。



03

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)确定价格。


在 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 中的余额进行操作。


对于实际操作,可以通过提供的代码页面进行测试,包括 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
1. 参数 (args)
· 代币地址: 0x06eea31b180c68c8122b7a0217044667ae847c8cd673dfc03a6de6905399db99
· 数量: 1000000000

Faucet MUSDC
1. 参数 (args)
· 代币地址: 0xd154de5c8718df3f6c9bb5a07f17700ae61f88dcb609ad3ee23467d5de573284
· 数量: 1000000000


Aptos 还提供了丰富的学习资源,包括文档、学习实例和 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



04

精彩答疑集锦


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

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

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

· Aptos 国库投票:https://governance.aptosfoundation.org/

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



05

结语


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


·END·


内容 丨LXDAO
编辑 & 排版 | Logan、Soleil
设计 | Daisy


继续滑动看下一个
LXDAO
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存