通过 Gelato 自动化 Kwenta 上的条件订单

  • gelato
  • 发布于 2023-07-11 18:48
  • 阅读 30

Kwenta 是一个在 Optimism 上交易期权和期货的 DeFi 平台,通过 Gelato 提供的自动化服务支持条件订单(包括止损和限价订单)。

博客 — 用例

使用 Gelato Automation 自动化 Kwenta 上的条件订单

Kwenta 是 DeFi 世界中的一个平台,允许在 Optimism 上交易期权和期货。交易者可以参与各种链上和真实世界资产的交易。此外,借助创新的 Smart Margin Wallet 功能,高级交易操作得到了简化和精简。

Kwenta 的一项超能力是它对条件订单的支持,其中包括止损单和限价单。而这背后的秘诀是 Gelato 提供的自动化。

因此,让我们来探索这种激动人心的合作关系,以及 Gelato 的自动化如何改善 Kwenta 的体验。

什么是 Gelato Automation?

Gelato Automation 使开发者能够使用基于时间和自定义逻辑的触发器,安全可靠地自动化智能合约。

这使 web3 应用程序能够自动化复杂的过程,包括在满足特定条件时执行智能合约。在 Kwenta 的背景下,Gelato 会自动执行限价单和止损市价单。

条件订单

要了解 Gelato 如何与 Kwenta 协同工作,我们首先需要深入研究条件订单。传统交易中的条件订单是指发送给经纪商的指令,用于在满足某些条件时执行交易。这些指令可以是止损单(当股票价格跌至一定水平时触发卖出指令)或限价单(仅以指定价格或更高的价格执行)。

在 Kwenta 基于智能合约的框架内,这些订单可能错综复杂且计算量大。这就是 Gelato 的用武之地。该平台旨在无缝且高效地管理和自动化这些条件订单的执行。

Gelato 在 Kwenta 中的简化角色

当 Kwenta 上的用户想要仅在满足特定条件(例如,加密货币达到一定价格)时才进行交易时,他们会创建所谓的条件订单。让我们分解一下它如何与 Gelato 协同工作:

Gelato 在 Kwenta 中的作用可以分解为一些关键功能。让我们仔细看看每一个:

下达条件订单

Kwenta 智能合约中的 _placeConditionalOrder 函数负责下达条件订单。此订单会在 Kwenta 系统以及 Gelato 中注册。它会检查订单是否有足够的保证金,以及头寸大小是否发生变化(非零 sizeDelta)。如果订单需要更多保证金,该函数会验证是否充足并提交保证金。然后,它会创建一个与此订单相关的 Gelato 任务。

    function _placeConditionalOrder(
        bytes32 _marketKey,
        int256 _marginDelta,
        int256 _sizeDelta,
        uint256 _targetPrice,
        ConditionalOrderTypes _conditionalOrderType,
        uint256 _desiredFillPrice,
        bool _reduceOnly
    ) internal {
        if (_sizeDelta == 0) revert ZeroSizeDelta();

        // 如果头寸需要更多保证金,我们必须提交保证金
        if (_marginDelta > 0) {
            _sufficientMargin(_marginDelta);
            committedMargin += _abs(_marginDelta);
        }

        //为此条件订单创建并提交 Gelato 任务
        bytes32 taskId = _createGelatoTask();

        // 内部存储条件订单
        conditionalOrders[conditionalOrderId] = ConditionalOrder({
           …
        });

        EVENTS.emitConditionalOrderPlaced({
         …
        });

        ++conditionalOrderId;
    }
创建 Gelato 任务

_createGelatoTask 函数负责为每个条件订单创建一个新的 Gelato 任务。这是建立 Kwenta 和 Gelato 之间链接的地方。

function _createGelatoTask() internal returns (bytes32 taskId) {
        IOps.ModuleData memory moduleData = _createGelatoModuleData();

        taskId = IOps(OPS).createTask({
            execAddress: address(this),
            execData: abi.encodeCall(
                this.executeConditionalOrder, conditionalOrderId
                ),
            moduleData: moduleData,
            feeToken: ETH
        });
    }
执行条件订单

executeConditionalOrder 函数负责在 Kwenta 上执行条件订单。调用时,它会执行多个步骤来完成订单。

它遵循一系列步骤来确保订单得以执行。首先,它检索订单详细信息并将其从 Kwenta 的记录中删除。

然后,它向 Gelato 支付任何必要的费用,并确定订单属于哪个市场。它根据当前的市场状况确定执行订单的价格。如果订单被标记为“仅减少”,它会确保该订单只能减少头寸的大小。为订单预留的任何保证金都会被释放。

最后,它会修改保证金并将订单提交到市场以供执行。订单完成后,会触发一个事件以通知所有人。

简而言之,executeConditionalOrder 函数可确保订单正确执行,并使所有内容在 Kwenta 上平稳运行。

Kwenta 和 Gelato 的下一步是什么?

Kwenta 与 Gelato 的合作才刚刚开始。Kwenta 将通过使用 Gelato 改进自动化以及集成来自 Pyth 的 Oracle 网络的更快价格提要来增强其交易体验。Gelato 任务将进行升级以实现更快的执行,而 Pyth 更频繁的价格提要将减少延迟和定价差异。这将带来更可靠和更高效的交易,从而增强风险管理和交易自动化。

关于 Gelato

准备好见证 web3 的新时代吧,Gelato 受到 400 多个 web3 项目的信赖,为 DeFi、NFT 和游戏领域数百万笔交易的执行提供支持。

Gelato 目前提供四项服务:

  • Web3 Functions:通过运行去中心化的云函数,将你的智能合约连接到链下数据和计算。

  • Automate:以可靠、开发者友好且去中心化的方式自动执行交易,从而自动化你的智能合约

  • Relay:通过一个易于使用的 API,让你的用户可以访问可靠、强大且可扩展的 Gasless 交易

  • Gasless Wallet:一个强大的 SDK,使开发者能够通过结合 Gelato Relay + Safe's Smart Contract Wallet 来提供世界一流的 UX,从而实现账户抽象

见证 Gelato 引领的迈向去中心化未来的持续旅程!

  • 原文链接: gelato.cloud/blog/automa...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
gelato
gelato
The Web3 Developer Cloud. Launch your own chain via our #1 Rollup-As-A-Service platform.