🌅
Sunrise日本語
  • Home
    • 👋Sunrise
  • 📜Learn
    • 🌆Sunrise
      • Proof of Liquidity
      • DA Fee Abstraction
      • Data Availability
      • Gauges Voting
      • Liquidity Pool
      • Liquidity Incentive
      • Swap
      • TokenConverter
      • Fee
      • Lockup Account
    • 💴$RISE
      • Allocations
    • 🏦Gluon
    • 💴$GLU
    • 🎓Thesis
      • App chain thesis
      • Interoperability
  • 🛠️Build
    • Client
    • L2 Blockchains
      • Rollkit
        • Sunrise Data
        • Rollkit L2 Chain
      • OP Stack
        • Sunrise Data
        • OP Stack L2 Chain
    • Validators
      • Proof of Data Availability
      • Self Delegation
  • 🏗️Run a Sunrise Node
    • Networks
    • Types of Nodes
      • Consensus
        • Full Consensus Node
        • Validator Node (Genesis)
        • Validator Node
        • Setup Cosmovisor
      • IBC Relayers
    • Resources
      • Upgrade
      • Environment
  • 🏗️Run a Gluon Node
    • Networks
    • Node
      • Validator Node
  • 🔗Links
    • GitHub
    • Discord
    • X (Twitter)
    • Medium
    • dev.to
  • 📓Deprecated (UnUniFi)
    • IBC Channels
    • Security
    • CosmWasm
      • Tutorial
      • Create Project
    • IYA Strategy
      • Interface
      • External CosmWasm chain with IBCHooks
      • External EVM chain with Axelar
    • Frontend
      • Cosmos Client TS
    • Resources
    • Setup ununifid
    • ununifid
      • Basic Commands
      • Module Commands
        • wasm
    • Build a Node
    • Build a Validator Node
    • Setup Cosmovisor
    • Mainnet Upgrades
    • IBC Relayer
GitBook提供
このページ内
  • インターフェースプロバイダー手数料報酬
  • スワップメッセージタイプ
  • ルート
  • ICS20トークン転送のためのスワップミドルウェア
  • シーケンス図
  1. Learn
  2. Sunrise

Swap

モジュールx/swapはx/liquiditypoolモジュール内の流動性を使用してトークンをスワップする機能を提供します。

インターフェースプロバイダー手数料報酬

レベル1: アプリ開発者向け

スワップモジュール上に構築されるフロントエンドアプリケーションには手数料を獲得する能力があります。これはどのように行われるのでしょうか?

注意すべき2つの重要なパラメータがあります:

  • interface_fee_rate: スワップの総額から取られる手数料で、パーセンテージで表示されます。

  • interface_provider: 手数料の送信先を指定するアドレスです。アドレスが提供されない場合、インターフェース手数料は取られません。


スワップメッセージタイプ

レベル1: アプリ開発者向け

受け取る金額または送る金額を指定するために使用できる2つのメッセージタイプがあります。

MsgSwapExactAmountIn – 指定された入力金額でトークンをスワップ

このメッセージを使用することで、ユーザーは提供したい正確な入力トークン量を定義してトークンをスワップできます。対応する出力は指定された入力に基づいて計算されます。

MsgSwapExactAmountOut – 指定された出力金額でトークンをスワップ

このメッセージを使用することで、ユーザーは受け取りたい正確な出力トークン量を定義してトークンをスワップできます。システムは希望する出力を達成するために必要な入力量を計算します。


ルート

レベル2: 上級ユーザー向け

このモジュールは再帰的構造を持つスワップルートをサポートし、連続(シリーズ)または同時(パラレル)に複数のステップを含む複雑なスワップを可能にします。ルート内の各ステップは検証され、入力と出力が正しく処理されるように処理されます。

message RoutePool {
  uint64 pool_id = 1;
}

message RouteSeries {
  repeated Route routes = 1 [
    (gogoproto.nullable)   = false,
    (amino.dont_omitempty) = true
  ];
}

message RouteParallel {
  repeated Route routes = 1 [
    (gogoproto.nullable)   = false,
    (amino.dont_omitempty) = true
  ];
  repeated string weights = 2 [
    (cosmos_proto.scalar)  = "cosmos.Dec",
    (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec",
    (gogoproto.nullable)   = false,
    (amino.dont_omitempty) = true
  ];
}

message Route {
  string denom_in = 1;
  string denom_out = 2;
  oneof strategy {
    RoutePool pool = 3;
    RouteSeries series = 4;
    RouteParallel parallel = 5;
  }
}

ICS20トークン転送のためのスワップミドルウェア

レベル1: アプリ開発者向け

スワップ機能はICS20トークン転送パケットによって自動的にトリガーされることがあります。これはIBC Hooksに似ており、あらゆるチェーン(Solidity IBC Eureka、Sei上のCosmWasmなど)でICS20を使用できる開発者がIBCミドルウェアを通じてスワップモジュールと対話するために使用できます。

メタデータ

シリアライズされたPacketMetadata JSON文字列をICS20転送パケットのmemoフィールドに配置する必要があります。

type PacketMetadata = {
  [namespace: string]: unknown;
  swap?: SwapMetadata;
};

type SwapMetadata = {
  interface_provider: string;
  route: Route;

  forward?: ForwardMetadata;
} & (
  | {
      exact_amount_in: {
        min_amount_out: string;
      };
    }
  | {
      exact_amount_out: {
        amount_out: string;
        change?: ForwardMetadata;
      };
    }
);

type ForwardMetadata = {
  receiver: string;
  port: string;
  channel: string;
  timeout: string;
  retries: number;
  next?: PacketMetadata;
};

シーケンス図

レベル2: 上級ユーザー向け

転送なしの基本的なスワップ

このシナリオでは、トークン転送が発生し、続いてスワップが行われますが、別のチェーンへの転送はありません。

sequenceDiagram
    autonumber
    Chain A ->> Sunrise: Transfer token X
    Sunrise --> Sunrise: recv_packet
    Sunrise ->> Sunrise: Swap token X to token Y
    Sunrise ->> Chain A: ack

転送を伴うスワップ

このシナリオでは、トークンが転送され、スワップされ、その後別のチェーンに転送されます。

sequenceDiagram
    autonumber
    Chain A ->> Sunrise: Transfer token X
    Sunrise --> Sunrise: recv_packet
    Sunrise ->> Sunrise: Swap token X to token Y

    Sunrise ->> Chain B: Forward token Y
    Chain B --> Chain B: recv_packet
    Chain B ->> Sunrise: ack
    Sunrise ->> Chain A: ack

余剰の払い戻しと転送を伴うスワップ

スワップが正確な出力量を指定する場合、過剰な入力は自動的に払い戻されます。スワップ後、残りのトークンは別のチェーンに転送されます。

sequenceDiagram
    autonumber
    Chain A ->> Sunrise: Transfer token X
    Sunrise --> Sunrise: recv_packet
    Sunrise ->> Sunrise: Swap token X to token Y

    Sunrise ->> Chain A: Change token X
    Sunrise ->> Chain B: Forward token Y
    Chain A --> Chain A: recv_packet
    Chain B --> Chain B: recv_packet
    Chain A ->> Sunrise: ack
    Chain B ->> Sunrise: ack
    Sunrise ->> Chain A: ack

レベル1: アプリ開発者向け

受信者アドレスの取り扱い

スワップ後、その後の変更や転送が失敗しても、「トークンX転送」の確認は常に成功します。スワップされたトークンは受信者のアカウントに残ります。

前へLiquidity Incentive次へTokenConverter

最終更新 2 か月前

ForwardMetadataはから派生しています。

詳細についてはを参照してください。

📜
🌆
Packet Forward Middleware
Github