轻松构建 MEV 机器人,维护 Sui 网络健康并获取收益
2023-09-25 08:38
Sui Network
2023-09-25 08:38
Sui Network
2023-09-25 08:38
订阅此专栏
收藏此文章


Sui 存储基金的返还是 Sui 的独特功能,鼓励社区维护 Sui 网络的健康。


DeepBook是 Sui 的第一个原生流动性层,未完成的过期订单仍然存在链上,这就占用了网络存储空间。这些过期订单还会计入 DeepBook 的动态字段限制,而保持一个健康的网络和 DeepBook 的可操作性则需要清理这些旧订单。


幸运的是,Sui 的存储费机制奖励用户从链上删除对象,有远见的用户可以通过查找并删除 DeepBook 的未完成订单来赚取 Sui 存储基金的返还。这些操作还可以释放网络存储空间,保持 DeepBook 的可用性,并将其用于强大的订单处理。


找到并删除过期订单的最简单方法是部署一个自动执行此操作的机器人。查看下面的最大可提取价值(maximal extractable value,MEV)机器人的参考代码。这个免费使用的代码可以按原样编译,或修改以创建自定义机器人。


🌟 动态字段:

https://docs.sui.io/testnet/build/programming-with-objects/ch5-dynamic-fields




Sui 存储返还



Sui 在交易创建网络上的对象时会收取存储费,同时还会收取 gas 费。这个存储费将用于Sui 存储基金,该基金使用一种权益证明机制来补偿网络运营商维护链上存储的成本。这个设计考虑到运营商随时可能加入和离开网络,因此维护基金以支持那些在创建他们存储的对象之后加入的运营商。


与所有网络一样,未使用的文件和其他物件会随着时间的推移而积累,并占用越来越多的存储空间。当可用的存储空间完全被使用时,服务和性能会下降。在 Sui 上,增加的存储需求意味着运营商需要增加他们的存储容量,以确保网络性能良好。


从 Sui 中删除一个对象,比如一个已过期的 DeepBook 订单,会释放出相关对象所占用的空间。由于存储费是提前收取的,而对象在生命周期内都会收取存储费,因此 Sui 以 $SUI 的形式返还原始存储费的 99% 作为返还。Sui 上的存储费非常低,因此单个删除的返还也相应较低。虽然删除对象涉及到一笔 gas 费,但在许多情况下,存储费返还超过 gas 费,从而产生净收益。




DeepBook 过期订单



在 DeepBook 上的限价订单中,有人为 token 设置他们希望花费或获得的金额,但由于找不到匹配的订单,这些订单可能不会成交,类似于有人可能会为拍卖设置过高的价格而流拍。这些未成交的订单最终会过期,但却仍然存在于网络中。每个订单都是一个对象,占用一定数量的存储空间。


此外,每个订单使用动态字段,这是一种可以在对象上随时添加或删除的字段类型。DeepBook 在 Sui 上的所有池中都有 1000 个动态字段的限制。如果活动订单加上过期订单的数量达到 1000 个,DeepBook 将达到 1000 个动态字段的限制,直到数量降至 1000 以下,DeepBook 才能再次处理订单。


下面的代码显示了如何构建一个参考的 MEV 机器人,用于清除 DeepBook 中的过期订单。当机器人删除一个对象时,与该对象相关的存储费返还将发送到用于执行机器人的地址,从而有助于维护网络的健康状态和 DeepBook 的可用性,同时奖励机器人的创建者。




构建 MEV 机器人



以下参考代码,也可以在 Sui GitHub 存储库中找到,该代码演示了如何创建一个简单的 MEV 机器人,以从网络中删除 DeepBook 过期订单。


本文仅包括创建机器人所需的代码部分,请在 Sui 存储库中查看完整代码。


(1)创建一个连接到 Sui 网络的客户端:

const client = new SuiClient({url: "https://explorer-rpc.mainnet.sui.io:443"});

(2)以下行检索使用PoolCreated事件的所有 DeepBook 池:

let allPools = await retrieveAllPools();

(3)此部分检索每个池中的所有过期订单:

let allExpiredOrdersPromises = [];for (let pool of allPools) {
allExpiredOrdersPromises.push(retrieveExpiredOrders(pool.pool_id).then((expiredOrders) => { return {pool, expiredOrders} })); }let allExpiredOrders = (await Promise.all(allExpiredOrdersPromises)).flat();

(4)此代码显示了如何创建一个 事务来清理所有过期订单,然后使用devInspectTransactionBlock获取估计的存储费返还:

let {rebate, tx} = await createCleanUpTransaction(allExpiredOrders);
console.log(`Total estimated storage fee rebate: ${rebate / 1e9} SUI`);

除了上面的代码之外,存储库中的代码还显示了如何签名和执行事务。


存储库中的代码示例还演示了如何使用Helper函数检索所有页面的动态字段,它展示了如何将返回的数组分割成块。


🌟 存储库代码示例:https://github.com/MystenLabs/sui/pull/13293


示例代码中的干扰运行事务返回了网络上的过期订单,类似于以下内容:

Pool d9e45ab5440d61cc52e3b2bd915cdd643146f7593d587c715bc7bfa48311d826 has 6 expired orders out of 28 ordersPool f0f663cf87f1eb124da2fc9be813e0ce262146f3df60bc2052d738eb41a25899 has 6 expired orders out of 21 ordersPool 18d871e3c3da99046dfc0d3de612c5d88859bc03b8f0568bd127d0e70dbc58be has 1 expired orders out of 1 ordersPool 5deafda22b6b86127ea4299503362638bea0ca33bb212ea3a67b029356b8b955 has 5 expired orders out of 57 ordersPool 7f526b1263c4b91b43c9e646419b5696f424de28dda3c1e6658cc0a54558baa7 has 72 expired orders out of 2925 orders




激励社区



像 Sui 这样的去中心化、无需许可的网络需要一定程度的社区维护。由于过期订单不属于特定的 Sui 地址,任何人都可以将其删除,从而有机会获得存储费返还。尽管目前过期的 DeepBook 订单数量不多,但这种积极的指导将有助于随着使用增加,确保 DeepBook 系统长期保持健康。


Sui 是基于第一原理重新设计和构建而成的 L1 公有链,旨在为创作者和开发者提供能够承载 Web3 中下一个十亿用户的开发平台。Sui 上的应用基于 Move 智能合约语言,并具有水平可扩展性,让开发者能够快速且低成本支持广泛的应用开发。


获取更多信息:

https://linktr.ee/sui_apac 




关于 Sui Network


获取更多信息

官方网站: https://sui.io

Discord: https://discord.com/invite/sui

中文 Twitter: https://twitter.com/SuiNetworkCN

中文 Medium: https://medium.com/sui-network-cn

中文电报群: https://t.me/Sui_Blockchain_Chinese

【免责声明】市场有风险,投资需谨慎。本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。

Sui Network
数据请求中
查看更多

推荐专栏

数据请求中
在 App 打开