For the complete documentation index, see llms.txt. This page is also available as Markdown.

主な機能

1️⃣ シングルトン

PancakeSwap v3では、すべての流動性プールがそれぞれ独自のコントラクトを持っていたため、プールの作成や複数のプールをまたいだスワップのコストが高くなっていました。

Infinityはシングルトンモデルを実装することでこれを解決しました。現在はすべてのプールがPoolManagerと呼ばれる単一のコントラクト内に存在します。この変更によりプール作成のガスコストが最大99%削減され、複数のプールを経由するマルチホップスワップでも不要なトークン転送を回避することでコストを大幅に削減できます。

⚙️ 仕組み:

  • 各プールのデータは、固有のプールIDを使用して共有コントラクトに保存されます。

  • 新しいプールの作成は、フルコントラクトのデプロイではなく、状態の更新だけで済むようになりました。

  • プール間のスワップが高速化され、ガス使用量が削減されます。

このシングルトンアプローチは、フラッシュ会計やERC-6909などの最適化とともに、PancakeSwap Infinityを現在利用可能な最もガス効率の高いDEXプラットフォームの一つにしています。


⚡️ フラッシュ会計

フラッシュ会計はPancakeSwap Infinityの強力な最適化機能であり、マルチホップスワップや流動性変更などの複雑なトランザクション中のガス代削減に貢献しています。

旧バージョン(v3など)では、トランザクションの各ステップでトークンを各プールに出し入れしていたため、特にマルチホップスワップで高いガスコストが発生していました。

フラッシュ会計ではそれが不要になりました。各ステップ後にトークンを移動する代わりに、PancakeSwap Infinityはすべてのトークン移動を内部で追跡し、トランザクション全体の最後に1回だけ最終転送を行います。これにより大幅なガスの節約が可能になります。

⚙️ 仕組み:

  • Infinity(スワップや流動性追加など)を操作する際、システムが支払うべきまたは受け取るべきトークンの正味残高を計算します。

  • これらの正味トークン残高は、Ethereumのキャンクンアップグレード(EIP-1153)で導入された新機能であるTransient Storageを使用して一時的に保存されます。

  • Transient Storageは、トランザクション期間中のみ存在し、永続的な書き込みや読み取りが不要なため、従来のストレージよりもコストが低くなります。


🪙 ネイティブトークンサポート

シングルトンアーキテクチャとフラッシュ会計の導入により、PancakeSwap Infinityは流動性プールでネイティブガストークン(例:BNB、ETH)を直接サポートするようになりました。ラッピングとアンラッピングが不要になります。

✅ 主なポイント

  • 直接ネイティブトークンプール: WETHやWBNBを必要とせず、ETH/USDC、BNB/CAKEなどのプールを作成できます。

  • ガス効率: ネイティブトークン転送はERC-20トークン転送より約50%コストが低く、スワップや流動性操作のガスコスト削減につながります。

以前は廃止されていたが再有効化: 実装の複雑さと流動性の断片化により、以前のバージョンではネイティブトークンサポートが存在していませんでしたが、今回再度有効化されました。


📈 カスタム価格曲線

PancakeSwap Infinityは、ほとんどのAMMで使用されている従来のモデルを超えて、プール用のカスタム価格モデルを作成する権限を開発者に提供しています。

🔧 カスタム価格曲線とは何ですか?

カスタム価格曲線により開発者は:

  • ネイティブのプールマネージャーロジックをバイパスし、カスタム定義のスワップ動作を持つプールを作成できます。

  • スワップや流動性変更のトークン量の計算方法を変更できます。

  • 以下のようなカスタム手数料の仕組みを組み込めます:

    • 流動性引き出し手数料

    • 戦略に基づくリベートやペナルティ

これらはすべて、スワップパラメータを動的に傍受・変更できるbefore/afterスワップhookコールバックを通じて実現されます。

🛠 活用例

  • StableSwap曲線: USDCとUSDTなどのアセット間での価格インパクトを減らすため、1:1の価格比率付近でよりフラットな曲線を設計します。

  • RWA: 動的な供給量を持つ異なるアセットタイプのカスタム動作を作成します。

  • Hook レベルの手数料: 開発者手数料など、プールレベルの手数料とは異なるユニークな手数料を設定します。

  • カスタムリスクモデル: ボラティリティ、オラクルデータ、または外部指標を反映した価格設定を調整します。

以前のAMMバージョン(例:PancakeSwap v2/v3)では、価格設定ロジックはハードコードされており柔軟性がありませんでした。PancakeSwap Infinityのアーキテクチャにより、より資本効率の高い、カスタマイズされたプールの構築が可能になりました。

🔍 開発者の柔軟性

  • 開発者はカスタムhookコントラクトをデプロイして価格設定ロジックをオーバーライドできます。

  • beforeSwapやafterSwapなどのhookコールバックにより、トークンデルタの計算・適用方法を完全にコントロールできます。


🧮 ERC-6909:効率的なマルチトークン会計

PancakeSwap InfinityはERC-6909を採用しています。これは単一コントラクト内での複数トークンの内部会計向けに設計された、軽量でガス効率の高いトークン規格です。多くの従来のERC-20操作をミントとバーンのプリミティブで置き換えることで、大幅なガス節約とシンプル化されたトランザクションフローを実現しています。

⚙️ 仕組み

インタラクションのたびにトークンをプロトコルに出し入れするのではなく、ERC-6909トークンは内部残高を表します:

  • ミント:ユーザーがトークンを預けたり取引を実行したりする際、ERC-6909トークンをクレームとして受け取ることを選択できます。

  • バーン:後で、再度ERC-20トークンを転送する代わりに、ユーザーはERC-6909トークンをバーンして残高を精算したり新しい操作に活用したりできます。

このモデルにより外部トークン転送の必要性が大幅に削減されます。外部転送は通常、より高いガスコストが発生し、サードパーティのロジック(例:USDCのブラックリスト確認)が介在します。

🪙 ERC-6909のメリット

機能
メリット

✅ 内部残高クレーム

ユーザーとコントラクト間で繰り返しトークンを転送する必要がありません

✅ ガス効率の高いミント/バーン

トークンに関わらず一定のオーバーヘッド、外部コントラクト呼び出し不要

✅ ERC-1155よりシンプル

コードサイズが小さく、コールバックなし、バッチ転送要件なし

✅ マルチトークンサポート

単一のコントラクトで、分離された残高を持つ複数のトークンタイプを追跡可能

✅ PoolManagerとのシームレスな連携

冗長なERC-20承認と転送を排除

🚀 活用例

  • 高頻度トレーダー: ガスコストの高い転送を回避し、内部残高を使用して直接やり取りできます。

  • 流動性マネージャー: 過度なトークン移動なしに、より効率的にポジションの開閉が可能です。

💡 重要事項

  • ユーザーはトークン転送をすぐに精算する必要がない場合にERC-6909フローを選択できます。

  • 内部残高は後でまとめて精算でき、パワーユーザーにより高いコントロールと柔軟性を提供します。


💸 Donateメソッド

donate()メソッドにより、ユーザーはプール内のレンジ内の流動性プロバイダーにトークンを寄付することで直接インセンティブを与えることができます。このメソッドは、プールのトークンのみがサポートされることを保証しながら、プールの手数料会計システムを活用して支払いを処理します。

🔹 主な機能:

  • LPへの直接支払い: 寄付はプールのアクティブレンジ内で流動性を維持している流動性プロバイダーに直接行われ、報酬を提供します。

  • プールトークンのみサポート: donate()メソッドは適切な配布を保証するために手数料会計システムを活用するため、プールのトークンでの寄付のみサポートします。

  • すべてのユーザーが利用可能: 誰でもdonate()メソッドを呼び出すことができ、アクティブな流動性提供にインセンティブを与えることができます。

donate()メソッドはLPにインセンティブを与える強力なツールですが、寄付者は自分の寄付が他のユーザーにフロントランニングされる可能性があることに注意してください。これは、寄付が行われる直前にユーザーがプールに流動性を迅速に追加し、寄付された資金の一部を受け取る場合に発生することがあります。

フロントランニングを防ぐために、寄付者は寄付メカニズムを設計する際に追加の戦略を検討する必要があります:

  • 日和見的なフロントランニングの余地を最小化する方法で寄付が行われるようにします。

  • 寄付がこのような方法で悪用されないよう、時間遅延または特定の条件(before/afterドネートhookコールバックを使用)を追加します。

Last updated

Was this helpful?