
Geth 源码系列:存储设计及实现
在区块链的世界中,状态存储是每一个节点的「记忆核心」 — — 它记录着亿万账户的余额、合约的代码、交易的痕迹,甚至决定着一笔交易能否被正确执行。作为以太坊生态的基石,Geth 客户端如何以精密的架构设计承载海量状态数据?其存储系统如何在性能、安全与可扩展性之间找到平衡? 这篇文章是 Geth 源码系列的第二篇,通过这个系列,我们将搭建一个研究 Geth 实现的框架,开发者可以根据这个框架深入自己感兴趣的部分研究。这个系列共有六篇文章,在这第二篇文章中,将系统讲解 Geth 的存储结构设计与相关源码,介绍其数据库层次划分并详细分析各个层次中相应模块的核心功能。 以太坊作为全球最大的区块链平台,其主流客户端 Geth(Go-Ethereum)承担了绝大部分节点运行与状态管理的职责。Geth 的状态存储系统,是理解以太坊运行机制、优化节点性能、以及推动未来客户端创新的基础。 本文作者: po Web3buidler.tech Core Contributor, EthStorage Engineer Geth 底层数据库总览 自 Geth v1.9.0 版本起,Geth 将其数据库分为...

以太坊单独质押实战教程:手把手教你完成部署
内容丨Ray 编辑 & 排版丨Yewlne、环环 以太坊的单独质押(Solo Staking)是保护网络安全和去中心化的黄金标准。通过运行自己的验证者节点,您可以直接参与网络共识,获得完整的质押奖励,并保持对资金的完全控制。本教程将为您提供详细的指导,帮助您在家中部署以太坊单独质押节点,确保安全性和稳定性。前提概要首先,我们需要有这样的一个基本概念:要处理来自执行层的传入验证器存款,您需要运行执行客户端以及共识客户端。这意味着我们至少需要部署两个客户端程序(在本教程中,为三个,共识客户端按照功能进行了拆分)。如果想了解更多执行客户端和共识客户端的差异及功能职责,可以点击阅读: https://ethereum.org/zh/developers/docs/networking-layer/一、选择执行客户端以太坊生态的客户端种类非常丰富,执行客户端和共识客户端都有多种不同语言的实现,如使用 Go 语言实现的 Geth, 使用 Rust 语言实现的 Reth 等。你可以根据自己喜好,选择不同的客户端,整体流程是类似的,只是不同客户端实现涉及的命令不同。在这里,我们不能对所有的客户端...

残酷共学申请指南独家速递!
在知识爆炸的时代,面对海量且拥杂的学习资源、松散且淡薄的学习氛围,如何在工作之余合理安排以有效坚持学习,俨然已是一个艰巨的挑战。为此,LXDAO 特别发起了——残酷共学,旨在通过以自主、开源的学习方式,严格的残酷共学计划和互助的学习氛围,帮助每一位参与者有序可持续的学习,更进一步地实现自我提升。残酷共学是什么残酷共学是由 LXDAO 发起的围绕某个「共学主题」共学活动,具体如下:参与者必须每天围绕某个「共学主题」进行学习,每周只有两次请假机会,通常每天至少需要花费半个小时(最好一个小时)来学习。参与者必须提交你的学习证明(按照共学内容设计)到 GitHub 所对应的「仓库」来证明你今天学习了。如果参与者没有完成上面两点,将会立刻被踢掉并且标记为 ❌ 失败。每期残酷共学以 4 周为一个周期,第一周为共学启动报名和熟悉共学规则,第二周到第四周将正式启动共学,为期 21 天,中途不得加入。共学方向包括不限于:英语、以太坊、Web3 技术、DAO、加密思潮等,自由自主发起,内容包括不限于:视频、书籍、文章、实战。如何残酷共学基于 GitHub 的流程,残酷共学发起人在 Github上创建...
LXDAO 是一个专注研发的 DAO 组织,致力于构建支持有价值的公共物品和开源项目的无限循环。 LXDAO is an R&D-focused DAO dedicated to building an Infinite Cycle that supports valuable

Geth 源码系列:存储设计及实现
在区块链的世界中,状态存储是每一个节点的「记忆核心」 — — 它记录着亿万账户的余额、合约的代码、交易的痕迹,甚至决定着一笔交易能否被正确执行。作为以太坊生态的基石,Geth 客户端如何以精密的架构设计承载海量状态数据?其存储系统如何在性能、安全与可扩展性之间找到平衡? 这篇文章是 Geth 源码系列的第二篇,通过这个系列,我们将搭建一个研究 Geth 实现的框架,开发者可以根据这个框架深入自己感兴趣的部分研究。这个系列共有六篇文章,在这第二篇文章中,将系统讲解 Geth 的存储结构设计与相关源码,介绍其数据库层次划分并详细分析各个层次中相应模块的核心功能。 以太坊作为全球最大的区块链平台,其主流客户端 Geth(Go-Ethereum)承担了绝大部分节点运行与状态管理的职责。Geth 的状态存储系统,是理解以太坊运行机制、优化节点性能、以及推动未来客户端创新的基础。 本文作者: po Web3buidler.tech Core Contributor, EthStorage Engineer Geth 底层数据库总览 自 Geth v1.9.0 版本起,Geth 将其数据库分为...

以太坊单独质押实战教程:手把手教你完成部署
内容丨Ray 编辑 & 排版丨Yewlne、环环 以太坊的单独质押(Solo Staking)是保护网络安全和去中心化的黄金标准。通过运行自己的验证者节点,您可以直接参与网络共识,获得完整的质押奖励,并保持对资金的完全控制。本教程将为您提供详细的指导,帮助您在家中部署以太坊单独质押节点,确保安全性和稳定性。前提概要首先,我们需要有这样的一个基本概念:要处理来自执行层的传入验证器存款,您需要运行执行客户端以及共识客户端。这意味着我们至少需要部署两个客户端程序(在本教程中,为三个,共识客户端按照功能进行了拆分)。如果想了解更多执行客户端和共识客户端的差异及功能职责,可以点击阅读: https://ethereum.org/zh/developers/docs/networking-layer/一、选择执行客户端以太坊生态的客户端种类非常丰富,执行客户端和共识客户端都有多种不同语言的实现,如使用 Go 语言实现的 Geth, 使用 Rust 语言实现的 Reth 等。你可以根据自己喜好,选择不同的客户端,整体流程是类似的,只是不同客户端实现涉及的命令不同。在这里,我们不能对所有的客户端...

残酷共学申请指南独家速递!
在知识爆炸的时代,面对海量且拥杂的学习资源、松散且淡薄的学习氛围,如何在工作之余合理安排以有效坚持学习,俨然已是一个艰巨的挑战。为此,LXDAO 特别发起了——残酷共学,旨在通过以自主、开源的学习方式,严格的残酷共学计划和互助的学习氛围,帮助每一位参与者有序可持续的学习,更进一步地实现自我提升。残酷共学是什么残酷共学是由 LXDAO 发起的围绕某个「共学主题」共学活动,具体如下:参与者必须每天围绕某个「共学主题」进行学习,每周只有两次请假机会,通常每天至少需要花费半个小时(最好一个小时)来学习。参与者必须提交你的学习证明(按照共学内容设计)到 GitHub 所对应的「仓库」来证明你今天学习了。如果参与者没有完成上面两点,将会立刻被踢掉并且标记为 ❌ 失败。每期残酷共学以 4 周为一个周期,第一周为共学启动报名和熟悉共学规则,第二周到第四周将正式启动共学,为期 21 天,中途不得加入。共学方向包括不限于:英语、以太坊、Web3 技术、DAO、加密思潮等,自由自主发起,内容包括不限于:视频、书籍、文章、实战。如何残酷共学基于 GitHub 的流程,残酷共学发起人在 Github上创建...
LXDAO 是一个专注研发的 DAO 组织,致力于构建支持有价值的公共物品和开源项目的无限循环。 LXDAO is an R&D-focused DAO dedicated to building an Infinite Cycle that supports valuable

Subscribe to LXDAO

Subscribe to LXDAO
Share Dialog
Share Dialog
<100 subscribers
<100 subscribers



内容丨LXDAO
编辑 & 排版丨Logan、Soleil
在区块链技术的创新浪潮中,Aptos 作为新兴的 Layer1 公链,通过其独特的 Move 编程语言和模块化设计架构,以高扩展性和强安全性为加密领域带来了新的篇章。而 Uniswap,作为 DeFi 领域的去中心化交易所,若与 Aptos 相结合,会产生怎样的火花呢?让我们回顾一下本期 LX 分享会的精彩内容。
8月20日晚8点,LX 分享会如期举行。Aptos 的开发者 Logan 受邀分享,LXDAO 运营小组 PM Cikey 主持了此次活动。直播错过的朋友可以点击链接查看回放。👇
理解 Aptos 之前,需要先了解区块链的基本概念。
区块链本质上是一个去中心化的共享数据库,类似于一个状态机,通过链上运行的合约程序改变状态。当用户希望修改余额时,只需提交交易,智能合约便会调整余额。
区块链的去中心化特性通过验证者网络来达成共识,从而确保交易和状态的一致性。

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

Aptos 的架构分为多个层次,包括共识层(使用 AptosBFT 和 DPoS)和执行层(使用 MoveVM 和并行执行引擎)。
共识层
· 使用 AptosBFT
· 使用 DPoS
执行层
· 使用 MoveVM
· 使用并行执行引擎
合约层
· 使用 Move 语言
· 支持资源模型
· 支持对象存储模型
SDK 支持
· Typescript
· Rust
· Go
· Python

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

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=testnetFaucet MUSDT
参数 (args)
· 代币地址: 0x06eea31b180c68c8122b7a0217044667ae847c8cd673dfc03a6de6905399db99
· 数量: 1000000000Faucet MUSDC
参数 (args)
· 代币地址: 0xd154de5c8718df3f6c9bb5a07f17700ae61f88dcb609ad3ee23467d5de573284
· 数量: 1000000000

Aptos 还提供了丰富的学习资源,包括文档、学习实例和 Dapp 工作模板,帮助大家更好地学习和掌握 Aptos。
实例学习: https://learn.aptoslabs.com/
· OnChain - Randomness
· Dispatchable Fungible Assets
· Building a Stablecoin on Aptos
· Integrate with Aptos Wallets

· 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 在未来也将拥有一片广阔的宇宙天地!

内容丨LXDAO
编辑 & 排版丨Logan、Soleil
在区块链技术的创新浪潮中,Aptos 作为新兴的 Layer1 公链,通过其独特的 Move 编程语言和模块化设计架构,以高扩展性和强安全性为加密领域带来了新的篇章。而 Uniswap,作为 DeFi 领域的去中心化交易所,若与 Aptos 相结合,会产生怎样的火花呢?让我们回顾一下本期 LX 分享会的精彩内容。
8月20日晚8点,LX 分享会如期举行。Aptos 的开发者 Logan 受邀分享,LXDAO 运营小组 PM Cikey 主持了此次活动。直播错过的朋友可以点击链接查看回放。👇
理解 Aptos 之前,需要先了解区块链的基本概念。
区块链本质上是一个去中心化的共享数据库,类似于一个状态机,通过链上运行的合约程序改变状态。当用户希望修改余额时,只需提交交易,智能合约便会调整余额。
区块链的去中心化特性通过验证者网络来达成共识,从而确保交易和状态的一致性。

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

Aptos 的架构分为多个层次,包括共识层(使用 AptosBFT 和 DPoS)和执行层(使用 MoveVM 和并行执行引擎)。
共识层
· 使用 AptosBFT
· 使用 DPoS
执行层
· 使用 MoveVM
· 使用并行执行引擎
合约层
· 使用 Move 语言
· 支持资源模型
· 支持对象存储模型
SDK 支持
· Typescript
· Rust
· Go
· Python

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

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=testnetFaucet MUSDT
参数 (args)
· 代币地址: 0x06eea31b180c68c8122b7a0217044667ae847c8cd673dfc03a6de6905399db99
· 数量: 1000000000Faucet MUSDC
参数 (args)
· 代币地址: 0xd154de5c8718df3f6c9bb5a07f17700ae61f88dcb609ad3ee23467d5de573284
· 数量: 1000000000

Aptos 还提供了丰富的学习资源,包括文档、学习实例和 Dapp 工作模板,帮助大家更好地学习和掌握 Aptos。
实例学习: https://learn.aptoslabs.com/
· OnChain - Randomness
· Dispatchable Fungible Assets
· Building a Stablecoin on Aptos
· Integrate with Aptos Wallets

· 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 在未来也将拥有一片广阔的宇宙天地!
No activity yet