0x0000000000000000000000000000000000000065に存在するシステムsmart contractです。Solidity開発者に対して、Injectiveチェーンのexchange moduleと直接やり取りするためのgas効率の良いネイティブな手段を提供します。このprecompileを活用することで、smart contractは以下のようなさまざまなexchange関連のアクションをシームレスに実行できます:
- サブアカウントへの資金の入金および出金。
- スポットおよびデリバティブ注文の発注またはキャンセル。
- サブアカウント残高およびオープンポジションのクエリ。
- 他のアカウントまたはcontractに対する認可グラントの管理。
Precompileの呼び出し:直接アクセス vs プロキシアクセス
Exchange Precompileとのやり取りには、主に2つの方法があります: 1. 直接アクセス(自己呼び出しContract) このモードでは、smart contractが自身の代わりにprecompileとやり取りします。contract自体が、自身の資金を使用し、自身のポジションを管理して、exchange moduleで操作を実行するアクターとなります。 例:grantee)がユーザー(userAddress、granter)から指定されたアクションを実行するための明示的な認可が必要です。この認可は、precompileが提供するapproveおよびrevokeメソッドを使用して管理されます。ユーザーの資金のセキュリティを確保するため、これらの認可は慎重に扱うことが重要です。
特定のアクションを代わりに実行するようcontractを認可するには:
grantee:認可されるcontractのアドレス。msgTypes:granteeが実行を許可されるメッセージタイプの配列(例:MsgCreateDerivativeLimitOrder、MsgDeposit)。完全なリストはExchangeTypes.solまたはInjective Protocolのprotobuf定義を参照してください。spendLimit:メッセージタイプごとまたはグラント全体で、granteeが利用できるトークンの最大量を定義するCosmos.Coin構造体の配列。duration:認可が有効な期間(秒単位)。
例:直接メソッド
以下のExchangeDemo contractは、smart contractが直接アクセスメソッドを使用する方法を示しています。自身のサブアカウントと資金を使用して、資金の入金、資金の出金、デリバティブ指値注文の作成、サブアカウントポジションのクエリなどの基本的なexchangeアクションを実行します。
Exchange.solおよびExchangeTypes.solファイルには、precompileとやり取りするために必要なインターフェース定義とデータ構造が含まれています。これらは通常、公式のInjective Solidity contractsリポジトリで入手可能であるか、プロジェクトの依存関係として含めることができます。
開発を始める
このExchangeDemo smart contractのビルド、デプロイ、およびやり取りの詳細な手順(サブアカウントの設定や資金調達を含む)については、solidity-contractsリポジトリの包括的なデモを参照してください。
まとめ
Exchange Precompileは、洗練されたプロトコル統合型の取引ロジックをInjective上のsmart contractに直接組み込むことを可能にする強力なツールです。contractが独自のポートフォリオを管理する場合でも、他のユーザー向けの多機能な取引インターフェースとして機能する場合(approveおよびrevokeを使用したプロキシパターン経由)でも、このprecompileはSolidityを使用してコアexchange moduleとやり取りするためのクリーンで安全かつ効率的な方法を提供します。
自己完結型のcontractロジックには直接呼び出しを優先し、より広範なInjectiveエコシステム向けの再利用可能なcontractインターフェースを構築する際には、堅牢な認可を備えたプロキシパターンを慎重に実装することを忘れないでください。
\