打开一本新书:深入探讨 OpenBook
OpenBook 席卷了所有人,引发了 Solana 生态系统新一轮的团结浪潮。在这篇博客中,我们将详细介绍从其背景故事到未来潜力的所有内容,所以请坐下来享受!
简介:Openbook 的诞生
Serum Protocol 于 2020 年 8 月推出,是首批在 Solana 上提供低交易成本和高交易速度的去中心化交易所或 DEX 之一。它完全无需许可,并遵循中央限价订单簿或 CLOB 模型。
如果您不知道 CLOB 模型是什么以及它与 AMM 模型有何不同,您应该查看此博客。
Serum 的一个关键功能是 Solana 生态系统中的其他协议能够与 Serum 的链上订单簿集成并使用 Serum,进一步增加单一位置的流动性,使机构和零售用户的交易更加高效,并支持其他项目提供去中心化交易,而无需维护订单簿。
一切都很好,直到最近 FTX 崩溃,新任首席执行官 John Ray 宣布了一项总体警告,称存在安全漏洞,人们不知道哪些部分受到了损害。这是一个问题,因为 Serum 程序更新密钥不受 Serum DAO 控制,而是通过私钥连接到 FTX。这意味着,如果任何人掌握了私钥,他们就可以使用它通过部署可能损害平台或其用户的恶意代码来对 Serum 程序进行负面更新。
这是 Max 和其他几个开发人员试图解决的一个大问题。他们确定了 Serum 的最后部署版本。他们可以部署使用新程序ID和升级系统权限构建的相同版本。一群值得信赖的开发人员现在通过多重签名机制控制费用收入。
生态系统中各个开发人员的快速思考导致了 Serum v3 的分叉,现在称为 OpenBook。
说了这么多,让我们深入了解 OpenBook 的详细信息!
Open the (Order)Book
如前所述,OpenBook 是 Solana 上遵循 CLOB 模型的 DEX。在本节中,我们将讨论 DEX 的更多技术方面以及用户如何通过不同的订单类型与 DEX 进行交互。
在更高的层面上,交易的生命周期可以分为四个阶段:
- 下单:用户将资金从其 SPL 代币账户(钱包)转移到名为 OpenOrders 账户的中间账户,并向请求队列提交下单请求。
- 匹配订单:请求从请求队列中删除,与其他订单匹配,并放置在订单簿上,并在事件队列中报告任何结果交易。
- 消费事件:交易事件从事件队列中删除并进行处理,从而更新 OpenOrders 账户余额。
- 结算:用户可以随时将 OpenOrders 账户中的剩余资金转回 SPL 代币账户(钱包)。
让我们分别回顾一下每个阶段。
Placing Orders下订单
为了下订单,用户提交三个主要内容。
- 他的订单详细信息,即他正在交易的市场、价格、规模、订单类型和规模
- 其次是他们的SPL代币账户,如果卖出,则使用市场的基础货币,而如果买入,用户应使用报价货币代币账户。
- 最后,我们拥有用户的 OpenOrders 帐户。
这是什么? OpenOrders账户是一个中间人账户,存储与用户在OpenBook平台上的未平仓订单相关的信息,包括锁定的基础和报价货币数量以及用户下的所有未平仓订单列表。
在后端,如果用户正在购买,则用户根据所需资金和可用余额将资金从 SPL 代币账户转移到 OpenOrders 账户,从而增加 OpenOrders 账户。而如果用户正在出售,则用户根据可用余额和出售所需资金将资金从 OpenOrders 账户转移到 SPL 代币账户,同时减少 OpenOrders 账户余额。
DEX:
- 增加并从请求队列中检索序列号:DEX 为平台上的每个订单分配一个唯一的序列号。该序列号是从请求队列中检索的,请求队列是存储用户发出的订单放置请求的数据结构。序列号和订单价格用于确定新订单的 ID。
- “向请求队列添加一个项目,并指定订单详细信息(尺寸、价格、订单类型、边数)”:检索到序列号后,DEX 会向请求队列添加一个项目,其中包含订单详细信息(例如尺寸)订单、价格、订单类型(买入或卖出)和方(买入或卖出)。
- “将代表新订单的项目添加到 OpenOrders 帐户中可用槽位中的数组中”:DEX 还会创建一个代表用户订单的新订单对象,并将其添加到 OpenOrders 帐户中可用槽位中的数组中。该数组跟踪用户在平台上放置的所有未结订单。
在 Solana 上下订单时,适用特定规则以确保流程的安全性和完整性。
- 如果该过程的任何步骤失败,整个交易将被取消,以防止任何意外影响。
- 此过程的一个关键方面是将资金从用户的 SPL 代币帐户转移到 OpenOrders 帐户。此转账是通过对 SPL 代币程序的跨程序调用来执行的,这意味着 DEX 程序请求 SPL 代币程序执行转账,前提是 SPL 代币账户持有者已获得这样做的权限。
- 此外,为了使交易有效,必须由 SPL 代币账户和 OpenOrders 账户的所有者签名。通过DEX程序和SPL代币程序进行验证,确保合法账户所有者进行交易。
Matching Orders撮合订单
在基于 Solana 的 DEX 上匹配订单(也称为“曲柄转动”)是执行交易的关键步骤。它涉及从请求队列中删除请求,请求队列是一种存储用户发出的下单请求的数据结构。然后,匹配引擎通过更新订单簿上的订单并将有关结果交易的信息放入事件队列中来处理这些请求。这是一个持续的过程;任何人都可以通过支付交易费用来提交此指令。
需要注意的是,该过程是全自动的,不需要涉及订单的用户签名。这是因为该程序拥有该过程中涉及的帐户,并且匹配引擎过程是确定性的,这意味着它以已知且可预测的方式进行。请求队列中的每个项目都按顺序处理一次,并具有确定性效果。它确保过程安全并且人们无法影响交易。
Match Orders 的过程是一个事务,客户端提供一个限制参数,该参数指定要处理的请求队列中的请求数量。
每个请求都通过一系列步骤进行处理:
- 它已从 RequestQueue 帐户中删除。
- 相应的下单或取消订单是在 Orderbook 上进行的,Orderbook 是一种存储订单详细信息的数据结构。
- 如果是新订单,则存储在 Orderbook 中,包括订单侧、价格、剩余大小、下单者 OpenOrders 账户的公钥以及该订单在 OpenOrders 账户订单数组中的索引等信息。
- 强制执行 IOC(立即或取消)和仅发布等订单类型。
- 对于任何交易,两个相应的填充项目都会添加到事件队列中。
- 如果交易、取消或 IOC 订单不匹配,则 Out 项目将添加到事件队列中。
它导致匹配订单进程生成两个填充项目事件队列对象。这些是Fill 和Out 对象。这些对象存储下一步“使用事件”中使用的基本信息。
- 填充对象存储有关交易的信息,包括交易方、该方是否是制造商、各方支付和接收的货币数量以及支付的任何费用的数量。
- Out 对象存储有关任何不匹配或被取消的订单的信息,包括订单的侧面、已解锁的订单数量以及仍锁定的数量。
Fill 和 Out 对象还存储订单的 ID、槽号以及相应 OpenOrders 帐户的公钥。
Consuming Events消费事件
消费事件步骤根据匹配订单步骤生成的事件更新用户的账户余额;客户端必须读取并处理事件日志并提交相关帐户以进行更新。
Consumer Events的流程如下:
使用事件步骤根据匹配订单步骤中生成的事件更新用户的帐户余额。它检查用户的未结订单公钥是否在客户提交的账户列表中找到,以及是否存在
- 它通过更新用户的帐户余额来继续处理该事件,例如将 OpenOrders 帐户的总余额减少已支付的数量,将总余额和可用余额增加所收到的数量,以及将市场的总费用计数器增加所支付的费用数量。事件。
- 对于 Out 事件,它会按解锁数量增加 OpenOrders 账户的自由余额,如果锁定数量为零,则从 OpenOrders 账户列表中删除订单。
结算资金
此步骤允许用户将任何未锁定订单中的资金从其 OpenOrders 账户转回其 SPL 代币钱包。
它之所以有效,是因为用户提供其 OpenOrders 帐户和 SPL 代币帐户作为基础货币和报价货币,并使用与下单签名相同的密钥对对其进行签名。该指令使用对 SPL 代币程序的跨程序调用,将自由资金从基础货币金库和报价货币金库转移到提供的 SPL 代币账户。
此步骤是可选的,因为资金可以用于下更多订单,并且不会被没收或被任何第三方使用,但提取资金并将其保留在用户的 SPL 中也是无害的代币账户。
Canceling Order取消订单
取消订单与上面提到的流程类似,并且具有相似的生命周期。如果用户想要取消订单,他们需要向请求队列提交请求,然后匹配订单指令将处理该请求。在此过程中,订单将从订单簿中删除,并且 Out 事件将添加到事件队列中,表明订单已被取消。然后,该事件将由消费事件指令处理,该指令将通过将可用余额增加已解锁订单的数量来更新用户的 OpenOrders 帐户,并从帐户的订单列表中删除该订单(如果完全取消)。
Fees费用
关于费用,OpenBook 的核心贡献者在他们的第一次社区电话会议中表示,Openbook DEX 正在考虑降低接受者费用并让 GUI 收取全部费用,但可能不会是做市商的理想选择。另一种选择是对所有市场实行 4 个基点的固定费用,这是一致的,但对做市商来说可能吸引力较小。需要通过与做市商和交易者交谈来进行更多研究,以确定理想的方法。然而,它可能会吸引更少的做市商。他们还可以通过创建新的不和谐频道并专门派一个团队来完成这项任务来改进这一点。
不过,目前 OpenBook 收取 4bps 的吃单费用和 2bps 的挂单者回扣以及 2bps UI 回扣。如果您通过 OpenBook SDK 托管自己的 UI 或交易,则只需支付 2bps 并节省 UI 费用。
如何与 OpenBook 互动?
用户可以使用一个名为 Openbook-js(用 JavaScript 编写)的预构建库,并将其与私钥一起使用来与 Openbook 协议进行交互。
用户还可以使用基于网络的图形用户界面或 GUI 在 Openbook DEX 上进行交易,无需提供对其私钥的直接访问。 GUI 使用名为 Openbook-js 的开源客户端库构建,允许用户访问 DEX 并执行交易、检查交易历史记录和管理账户余额等操作。
用户通过单击右上角的按钮并单击钱包提供的弹出窗口中的“连接”,将钱包连接到 GUI。连接后,DEX 可以读取链上状态并显示特定于该用户的数据。要执行需要签名的操作,例如下订单,用户填写右上角的订单表格,点击买入或卖出,然后通过钱包提供的弹出窗口批准或取消相应的交易。该段落还鼓励 Solana 钱包提供商实现对 SPL 代币和 sol-wallet-adapter 接口的支持,以便用户更轻松地连接和使用 Openbook DEX。
Contribution and Competition贡献与竞争
OpenBook 遵循去中心化自治组织或 DAO 治理模型。 DAO 是一个在区块链网络上运行并由其成员运营的组织。代币持有者的成员可以对导致该组织发生变化的提案进行投票。
一些已经投票的提案可以在此处查看。
当被问及人们如何为 OpenBook 做出贡献时,核心贡献者表示,他们认识到,与传统的独立开发者资助相比,可能有更有效的方法来吸引和留住顶尖人才。相反,他们建议更明确地定义赏金,以吸引独立开发人员加入该项目。一种潜在的解决方案是使用 Gitcoin 赠款,每个团队都可以写下他们想要完成的特定任务,其他各方可以为其提供资金。此外,Openbook 团队可能会从 1 月份开始征集 Gitcoin 拨款提案,其中部分提案由 Solana 基金会资助。
此外,该团队设想从仅仅依靠基金会提供资金过渡到更加去中心化的方法,生态系统内的各种参与者(例如其他协议和做市商)也可以为项目的长期开发提供资金。
当被问及他们希望如何在未来继续发展并看到 OpenBook 与竞争对手竞争时,OpenBook 的核心贡献者表示,维持 Openbook DEX 作为免租金替代方案至关重要,即使如果其他下一代订单出现。没有寻租的平行订单簿是一项公共物品,并且会有所帮助。通过维护此订单簿,集成和可组合性可以减少流动性碎片。
正如团队之前所说,开发人员和团队应该考虑支付 Gitcoin 赏金来支持有机开发。 Openbook 计划在下一次 DeFi 黑客马拉松期间提交 RFP 以获得基金会赞助。
总之,我们的目标是维持 Openbook 作为一种无寻租倾向的免租金替代方案,并鼓励社区资助和开发商的有机开发。
未来展望
随着 Solana 和 Openbook 社区的不断扩大,个人和开发者有很多机会参与并为生态系统做出贡献。跟上最新的发展、资源和工具对于充分利用生态系统至关重要。建议访问 Project Openbook 网站以获取更新、查看各种可用的开发人员工具,并加入社区的 Discord 小组以保持信息灵通和联系。
当我向 Soju 提出类似的问题时,他说协议应该专注于构建只能在 Solana 上构建的东西,例如订单簿和衍生品。他相信这将带来一个更具影响力和价值的生态系统,而不是将资源浪费在不太重要的项目上。
他还强调,Openbook 是真正的社区拥有的订单簿,其作为公共利益原语的潜力是巨大的。 Soju 相信人们可以在它的基础上进行构建、分叉并以各种方式利用它,从而为项目和生态系统带来更大的潜力。
结语
总而言之,OpenBook 是一个在 Solana 上运行的 DEX,遵循中央限价订单簿或 CLOB 模型。该平台是作为 Serum Protocol 的一个分支创建的,它面临着与控制其程序更新密钥相关的安全问题。 OpenBook 旨在为 Solana 生态系统提供更安全、社区所有的订单簿,从而为机构和零售用户提供更高效的交易,并使其他项目能够在不维护订单簿的情况下提供去中心化交易。
OpenBook 为其用户提供一系列技术功能,包括下单、匹配、消费和结算交易,以及一系列交易费用。 OpenBook背后的团队也在积极探索改进该平台并使其对做市商更具吸引力的方法。用户可以使用名为 Openbook-js 的预构建库或基于 Web 的图形用户界面与平台进行交互,不需要他们提供对其私钥的直接访问。 OpenBook 是 Solana 生态系统的一个有价值的补充,为去中心化交易提供安全且社区拥有的订单簿。
看到 OpenBook 和整个 Solana 生态系统今年取得的成就,无疑将是令人兴奋的一年!