dydx chain
v4 将是一个独立的 L1 区块链,具有完全去中心化的链下订单簿和匹配引擎。dYdX 链将基于 Cosmos SDK 和 CometBFT PoS 共识协议。
dYdX v4 设计成完全去中心化的端到端。主要组件大致包括协议、索引器和前端。每个组件都将作为开源软件来提供。
协议(或 “应用程序”)
协议是 L1 区块链,在 CometBFT 之上构建并使用 CosmosSDK。节点软件用 Go 编写,并编译为单个二进制文件。与所有 CosmosSDK 区块链一样,v4 使用权益证明共识机制。
该协议将由节点网络支持。有两种节点:
- 验证者:验证者负责将订单存储在内存中的订单簿中(即链下且不承诺达成共识),将交易传达给其他验证者,并通过共识过程为 dYdX 链生成新区块。共识过程将以加权循环方式(以质押到节点的代币数量加权),让验证者轮流担任新区块的提议者。提议者负责提议下一个区块的内容。当订单匹配时,提议者将订单添加到所提议的区块中,并启动共识回合。如果 ⅔ 或更多的验证者(按质押权重)批准一个区块,则该区块视为已提交并添加到区块链中。用户将直接向验证者提交交易。
- 全节点:全节点表示运行不参与共识的 v4 应用程序的进程。它是一个质押权重为 0 的节点,不提交提议,也不对提议投票。然而,全节点连接到验证者网络,参与交易的传达,并处理每个新提交的区块。全节点具有 dYdX 链及其历史的完整视图,旨在支持索引器。某些方可能决定(出于性能或成本原因)运行他们自己的全节点和/或索引器。
索引器
索引器是一个只读服务集合,其目的是以更高效和 web2 友好的方式,为用户索引和发送区块链数据。其方式是使用来自 v4 全节点的实时数据,将其存储在数据库中,通过 websocket 和 REST 请求,向最终用户提供该数据。
虽然 v4 协议本身能够将端点公开给关于某些基本链上数据的服务查询,但这些查询往往很慢,因为验证者和全节点没有经过优化,无法有效处理查询。此外,对验证者的过多查询会削弱其参与共识的能力。出于这个原因,许多 Cosmos 验证者倾向于在生产中禁用这些 API。因此,应当将索引器和全节点与验证者分开来构建和维护。
索引器将使用 Postgres 数据库存储链上数据,使用 Redis 存储链下数据,使用 Kafka 来消费链上/链下数据并流式传输到各种索引器服务。
前端
为了构建端到端的去中心化体验,dYdX 正在构建三个开源前端:Web 应用程序、iOS 应用程序和 Android 应用程序。
- Web 应用程序: 该网站将使用 Javascript 和 React 来构建。该网站将通过 API 与索引器交互,以获取链下订单簿信息,并将交易直接发送到链上。dYdX 将开源前端代码库和相关部署脚本。这样,人人都可以通过 IPFS/Cloudflare 网关,在自己的域名/托管解决方案中轻松部署和访问 dYdX 前端。
- 移动版:iOS 和 Android 应用程序分别使用原生 Swift 和 Kotlin 来构建。移动应用程序将以与 Web 应用程序相同的方式,与索引器交互,并将交易直接发送到链。移动应用程序也将是开源的,人人都可以将移动应用程序部署到 App Store 或 Play 商店。特别是对于应用程序商店,部署者需要有一个开发者账户和一个 Bitrise 账户才能完成应用程序提交过程。
订单生命周期
既然我们了解了 dYdX v4 的每个组件,现在让我们看看在下订单时,这些组件如何共同发挥作用。 在 v4 上下订单时,将遵循以下流程:
- 用户在去中心化前端(例如网站)或通过 API 做交易
- 订单发送到验证者。该验证者将该交易传达给其他验证者和全节点,以便使用新订单更新他们的订单簿。
- 共识过程选择一个验证者担任提议者。选定的验证者匹配订单并将其添加到下一个提议的区块中。
- 提议的区块继续通过共识过程。
- 如果 2/3 的验证者节点投票确认该区块,则该区块将提交并保存到所有验证者节点和全节点的链上数据库中。
- 如果提议的区块没有成功达到 2/3 阈值,则将拒绝该区块。
- 提交区块后,更新的链上(和链下)数据从全节点流式传输到索引器。然后,索引器通过 API 和 Websockets 将此数据提供给前端和/或查询此数据的其他外部服务。
上面的流程是订单/数据如何在 v4 中移动的总体概述。
止盈止损
- 实现下单的message(ConditionalOrder)
- 将订单存储到store里
- 在EndBlock里,处理可能触发的止盈止损单
相关代码: x/clob/abci.go:EnbBlock->x/clob/keeper/untriggered_conditional_orders.go:PollTriggeredConditionalOrders
桥接
跨区块链资产桥接已被证明具有挑战性。大多数现有桥梁都存在用户体验和/或安全性问题。 dYdX 专注于合成交易的好处之一是,只需存在一种抵押资产(例如稳定币)即可实现任何资产的合成交易。
首要任务(按顺序)是支持以下方面的最佳体验:
- Transfers from/to CEXs
- Transfers from/to Ethereum
- Transfers from/to other chains / rollups
Cosmos 还支持 IBC,这是一种用于在两个 IBC (cosmos) 支持的链之间进行去中心化且安全的资产桥接的协议。这意味着 dYdX v4 只需要在任何安全的 Cosmos 链上存在一种稳定币,然后就可以使用 IBC 轻松桥接到 dYdX 链。
Circle的CCTP 已接入Noble 链。
Noble是 Cosmos 专用区块链,专为原生资产发行而构建。 Noble 是 Cosmos 和 IBC 生态系统中原生 USDC 的发行链。作为基础设施提供商,Noble 插入了几十个连接 IBC 的区块链,并实现了原生 USDC 在整个 IBC 生态系统中的无缝传输。
什么是CCTP?
CCTP 使 USDC 能够通过本机销毁和铸币流程在受支持的区块链之间安全地发送。不存在对托管桥接的依赖。以下是简单 CCTP 传输流程的示例:
- 用户通过第三方应用程序将 USDC 从一条链转移到另一条链,从而在源链(例如以太坊)上销毁 USDC
- Circle 的自动化服务观察并证明燃烧事件
- 用户或第三方将证明转发到目标链(例如,Noble)
- 用户在目标链上接收 USDC(例如 Noble)
Squid
Squid 是一键跨链交易构建器,支持 20 秒内跨链交换。 Squid 利用 Axelar 的去中心化互操作性基础设施,并经过 Uniswap 桥提供商评估的批准。 Squid 通过 API、SDK 和前端开发工具为 60 多个区块链的团队提供互操作性服务。
dYdX v4 的开源代码与 Squid 的 API 集成,支持从任何 Squid 支持的 EVM 链或汇总中单击加入和退出 dYdX 应用程序链。用户将能够在由 Squid 提供支持的 dYdX Chain 前端中一键存入 dYdX Chain 账户。
目标:向 dYdX Chain 地址存款或取款。
- 示例1:用户想要在 dYdX 链上获得 USDC,他们在以太坊 L1 上有 USDC。
- 路线: USDC通过Axelar通用消息传递(GMP)发送到Osmosis,然后在Osmosis上交换到Noble USDC,通过Noble链从Osmosis桥接Noble USDC到dYdX Chain。一键完成所有操作。
- 示例2:用户想要在 dYdX 链上获得 USDC,他们在 Arbitrum 上有 ETH。
- 路线: ETH 在 Kyberswap 上兑换成axlUSDC,axlUSDC 通过 Axelar GMP 发送到 Osmosis,axlUSDC 在 Osmosis 上兑换成 Noble USDC,然后通过 Noble 链从 Osmosis 桥接到 dYdX Chain。一键完成所有操作。
- 将eth上的USDC转到osmosis链:tx
- event:
- destinationChain :osmosis
- destinationContractAddress :osmo1tqctx98qz2aa25j5knzuztxaerl3z0ld8q6c72
- payload :000000007B7D
- symbol :USDC
- amount :149990000000
- event: