インターフェイス
ZenLink DEX プロトコルでは、DEX資産を含むいくつかのモジュールが定義されています。ここでは、Rust で記述された Module 版を例に、基本的な機能の説明をします。
モジュールアセット
アセットとは、Zenlink DEX プロトコルの基本モジュールである。ERC20のような外観です。 ユーザーはこれを使って流動性やトークンを管理することができます。
Issue(発行)
ERC20トークンの新規発行
パラメーター:
'total': 初期の総供給量
'asset_info':アセット情報には'name' , 'symbol' , 'decimals' が含まれます。
Transfer(転送)
トークンをオーナーから受け取り側に転送します。
パラメーター:
`target`: アセットの受取手
`amount`: 転送するアセットの量
Approve(承認)
トークンID
を持つ呼び出し元のトークンに対するspender
の許容amount
を金額として設定します。操作が成功したかどうかを示す真偽値を返します。
パラメーター:
`spender`: 支払い者のアカウント
`amount`: 許容量
Transfer From(転送元)
トークンを送信者から受信者に許容機構を使用して移動します。操作に成功したかどうかを示す真偽値を返します。
パラメーター:
`id`: アセットID
`from`: アセット送信者
`target`: アセット受信者
`amount`: 転送するアセット量
DEXモジュール
DEXはZenLink DEX プロトコルのコアモジュールです。以下の機能を実装しています。
ペア作成
取引ペアの初期化。
パラメーター:
origin: トレードアカウント
token_0: アセットID
token_1: アセットID
解説:
Token_0とToken_1は、取引ペアを構成する2つのアセット(流動性プールとも呼ばれる)を表します。
(token_0, token_1) と (token_1, token_0) 同じ取引ペアです
流動性追加
パラメーター:
origin: トレードアカウント
token_0: 取引ペアを構成するアセットID
token_1: 取引ペアを構成するアセットID
amount_0_desired: 流動性プールに預けたい token 0 の量
amount_1_desired: 流動性プールに預けたい token 1 の量
amount_0_min: 流動性プールに預ける token 0 の最低量
amount_1_min: 流動性プールに預ける token 1 の最低量
target_parachain: 流動性プールのパラチェーンID
deadline: このトランザクションの締切ブロック
解説:
次のシナリオで考えてみましょう:
アリスはABC(Parachain200のネイティブアセット)とXYZ(Parachain300のネイティブアセット)を持っています。
アリスはABC/XYZ流動性プールに流動性を預けたいです。
ABCはParachain300でABC'と表記されています。
Parachain300に流動性プール(取引ペア ABC'/XYZ)があります。
例外事項:
Parachain200で流動性追加取引を行う場合、Parachain300 のアセット(XYZ)を十分に確保してください。そうでない場合、取引は失敗し、Parachain200のアセット(ABC)はABC'という形でParachain300に存在することになります。
Parachain300で流動性追加取引を行う場合、Parachain300(ABC')にParachain200の資産を十分に確保する必要があります。ABC'がない場合、Parachain200に十分なABCがあったとしても、取引は失敗となります。
流動性の削除
パラメーター:
origin: トレードアカウントTrading account.
token_0: 取引ペアを構成するアセットID
token_1: 取引ペアを構成するアセットID
liquidity: 耐えられる流動性の高さ
amount_token_0_min: 流動性削除後に得られると予想される token_0 の最低量。
amount_token_1_min: 流動性削除後に得られると予想されるtoken_1の最低額。
to: 受信するアカウント(Recipient account)
deadline: このトランザクションの締切ブロック
token_0をtoken_1とスワップする
パラメーター:
origin: トレードアカウント
amount_in: 送信したい正確な token 0 の量
amount_out_min: あなたが期待する token 1 の最低量
path: トランザクションパス
to: 受け取りアドレス(Recipient address)
target_parachain: 流動性プールのパラチェーンID
deadline: このトランザクションの締切ブロック
解説:
pathはアセットIDの配列として表現されます。
最初の要素は送信中のアセットを表し、最後の要素はターゲットアセットを表します。
[A, B]:A/Bの流動性プールでAとBをスワップします。
[B, A]:A/Bの流動性プールでBとAをスワップします。
[A, B, C]:A/Bの流動性プールでAとBをスワップし、B/Cの流動性プールでBとCをスワップします。
さらに、
pathの長さ制限はありません。
APIサーバーからpathを取得します。現在プールは1つしかないため、パスの長さは2で固定されています。
token_0とtoken_1をスワップする
パラメーター:
origin: トレードアカウント
amount_out: 取得したい正確な token 1 の量
amount_in_min: 送信する token 0 の最低量
path: トランザクションパス
to: 受け取りアドレス(Recipient address)
target_parachain: 流動性プールのパラチェーンID
deadline: このトランザクションの締切ブロック
解説:
pathはアセットIDの配列として表現されます。
最初の要素は送信中のアセットを表し、最後の要素はターゲットアセットを表します。
[A, B]:A/Bの流動性プールでAとBをスワップします。
[B, A]:A/Bの流動性プールでBとAをスワップします。
[A, B, C]:A/Bの流動性プールでAとBをスワップし、B/Cの流動性プールでBとCをスワップします。
さらに、
pathの長さ制限はありません。
APIサーバーからpathを取得します。現在プールは1つしかないため、パスの長さは2で固定されています。
パラチェーンにマッピングされたネイティブアセットを転送する
パラメーター:
origin: トレードアカウント
asset_id: アセットID
target: 受け取りアドレス(Recipient address)
amount: アセット量
解説:
このインターフェースは他のパラチェーンによってマッピングされたアセットをチェーン内のアカウントにのみ転送することができます。
例えば、Parachain300のABC'をParachain200のアカウントではなく、Parachain300のアカウントに転送するなど。
マッピングされたネイティブアセットを他のパラチェーンに転送する
パラメーター:
origin: トレードアカウント
asset_id: アセットID
para_id: 対象のパラチェーンID
account: 受け取りアドレス(Recipient address)
amount: アセット量
解説:
このインターフェースは、マッピングされた/ネイティブなアセットを他のパラチェーンのアカウントに転送することができます。
例えば、Parachain300のABC'やXYZをParachain200のアカウントに転送する。
Last updated