# 调研目标 1. 搞清楚 V4在dydx下的 Architecture以及包含的组件 2. 各个组件间的配合方式以及组件的具体架构和逻辑 3. 结合我司项目进行综合考虑,寻找替代方案 # 任务子项及进度成果 *任务子项可能会随研究深入而不断增加* ## Architecture dydxV4用了cosmos的框架,将用户端的单子发送给validator,并由validator形成共识后交给fullnode中的执行模块完成执行等“上链”操作。 在用户发送交易,和产生共识并出块的这段时间内,订单也需要被索引,因此引入了indexer的角色,indexer从mempool中拿到这些还没有完成的order并记录,以确保应用对用户订单的“高可操作性”,同时indexer还对已经出块的“交易”们进行索引,以减轻应用端对链上数据获取的复杂性,提高易用和标准性。 其中可以简单的将validator和fullnode的关系理解为 以太坊merge后,共识层和以太坊节点间的关系。  ### 应用层组件 为了叙述方便和非开发人员理解,在这里分了validator,fullnode,indexer等组件,并以图示的方式进行讲解。但有时候在名字上可能有一些误导,比如validator在实际生产中,大部分情况下是拥有fullnode数据的。换一句容易理解的话来说,validator的角色,就类似于BTC网络中的挖矿节点,你需要消耗算力,但是你也可以起一个不挖矿的只参与网络传播的数据节点(fullnode)。 ### 代码层组件 在代码层主要是为了开发和维护,所以架构上可能和叙事描述有一些不同,会有一些合并或者拆分。 重要的组件为,protocol(链节点代码),indexer(对链上数据进行索引的服务) * protocol: protocol部分是一个mono repo,他包含了Cosmos SDK和 CometBFT等具体的具体实现,应用层的validator和fullnode逻辑就在其中。 * indexer: 按照DYDX规则对链上数据进行获取并加工的组件 ## 组件的具体实现和dydx的独特点(进行中) ### protocol - [ ] 在本地尝试以 BTC 和 ETH 永续合约和价格启动该链,并测试两个账户之间的订单的操作和数据结构 - [ ] 顺着makefile中的localnet-start来追溯相关组件的workflow - [ ] 从workflow中筛选出比较重要的组件和逻辑部分进行深度研究 ### protocol/x 1. assets: 管理资产相关的代码,包括客户端接口、资产保管和类型定义。 2. blocktime: 与区块时间相关的功能,可能包括客户端接口和时间管理逻辑。 3. bridge: 桥接功能,用于连接不同的区块链或系统,包括客户端接口和核心逻辑。 4. clob: 可能指的是中心限价订单簿(Central Limit Order Book),用于处理交易订单,包括订单管理、模拟测试和类型定义。 5. delaymsg: 延迟消息处理,可能用于在特定条件下发送或处理消息。 6. epochs: 与时代(epochs)相关的功能,可能用于管理不同的区块链时代或周期。 7. feetiers: 费用等级管理,可能包括费用计算和策略定义。 8. perpetuals: 永续合约相关功能,包括客户端接口、合约管理和模拟测试。 9. prices: 价格相关功能,可能包括价格获取、管理和模拟测试。 10. ratelimit: 速率限制功能,用于控制操作频率,可能包括客户端接口和限制策略。 11. rewards: 奖励机制相关代码,可能包括奖励计算和分配策略。 12. sending: 发送功能,可能用于处理资产或消息的发送。 13. stats: 统计数据相关功能,可能用于收集和管理统计信息。 14. subaccounts: 子账户管理,可能包括子账户的创建、管理和策略定义 15. vest: 可能与权益(vesting)相关,用于管理用户或合约的权益计划。 #### clob CLOB相关文件和目录: 核心逻辑和数据结构 - **keeper**: 包含了 CLOB 的核心逻辑和数据管理代码,如订单匹配、订单状态管理等。 - **types**: 定义了 CLOB 使用的数据结构,如订单、匹配结果等。 客户端接口(CLI) - **client/cli**: 包含了与 CLOB 相关的命令行接口代码,用于执行各种操作,如下单、取消订单等。 测试和模拟 - **e2e**: 可能包含端到端测试,用于验证 CLOB 功能的完整性和正确性。 - **simulation**: 包含模拟测试代码,用于测试 CLOB 在不同情况下的行为。 速率限制和监控 - **rate_limit**: 可能包含与订单速率限制相关的代码。 - **mev_telemetry**: 可能用于监控和收集关于市场效率价值(Market Efficiency Value, MEV)的数据。 其他辅助功能 - **memclob**: 可能包含内存中的订单簿实现,用于快速处理和查询订单。 - **ante**: 可能包含一些预处理或验证逻辑。 ### indexer TBD ## 项目结合 TBD
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up