見出し画像

クロスチェーンを見てみる ~Chainlink CCIP② 手数料設定~

前回やり切れなかった、CCIPの手数料設定についてドキュメントを読む


  • 基本はソースチェーン上で固定の手数料を支払う

  • LINK、ネイティブトークン、ERC20のラップドトークンが支払いに使える

  • 宛先のコントラクトで設定した手数料が実際に支払った金額多い場合も払い戻しはない
    ※ここの仕組みは後述の内容を読んで確認

CCIPの課金モデルでは、メッセージで指定されたfeeTokenを使用して、ソースチェーン上で単一の手数料を支払います。
CCIPはスマート・エクセキューションと呼ばれるガスロックされた料金支払いメカニズムを使用し、宛先チェーンのガススパイクに関係なく、クロスチェーントランザクションの確実な実行を支援します。 CCIPはLINKと代替アセットでの手数料支払いをサポートしており、現在ブロックチェーンネイティブのガストークンとそのERC-20ラップバージョンが含まれています。 CCIPの支払いモデルは、ユーザーの摩擦を大幅に減らし、時間をかけて多数のブロックチェーンで発生する手数料支払いをサポートすることで、CCIPをより多くのブロックチェーンに迅速にスケールさせるように設計されています。
課金とは別に、CCIPがccipReceive()を実行するのに十分なガスを確保できるように、(宛先チェーンの)コントラクトに設定するgasLimitを慎重に見積もることを忘れないでください。 このユーザー設定限度額から未使用のガスは払い戻されません。

https://docs.chain.link/ccip/billing#overview

0.算出ロジックの概要(Billing Mechanism)

  • 所謂ガス代と、途中に関与するノードオペレータへの手数料を合算

fee = blockchain fee + network fee

fee:料金
CCIPメッセージの処理にかかる料金の合計

blockchain fee:ブロックチェーン料金
 これは、ノードオペレータがCCIPメッセージを宛先ブロックチェーンに配信するために支払うガスコストの見積

network fee:ネットワーク使用料
分散型オラクル・ネットワーク(DON)リスク管理ネットワーク(Risk Management Network)を運営するノード・オペレーターを含むCCIPサービス・プロバイダーに支払われる手数料

https://docs.chain.link/ccip/billing#billing-mechanism

1. ブロックチェーン手数料(Blockchain fee)

blockchain fee = execution cost + data availability cost

実行コスト(execution cost)

  • 宛先ごとに定価があり、そこに確実にTx実行するための係数(安パイ度)と消費量を掛け合わせて算出

  • この内、ガス消費量は各ノードがコントラクト実行するためのガス代と、トークン転送かそれ以外の処理かで分かれる係数を足し合わせて算出される

実行コストは、宛先チェーン上で取引を実行するための推定ガス使用量と直接相関する
execution cost = gas price * gas usage * gas multiplier

ガス料金(gas price)
宛先チェーンのガス価格。 CCIPは、各ソースチェーン上に、各 feeToken で表されるソースチェーン上でのガス価格のキャッシュを保持する

ガス乗数(gas multiplier)
 スマート実行(Smart Excution)のスケーリング係数。 この倍率により、ブロックチェーンのガス使用量の急増に関係なく、トランザクションの確実な実行が保証される

ガス消費量(gas usage)
下記数式で算出される
gas usage = gas limit + destination gas overhead + destination gas per payload + gas for token transfers

ガス上限(gas limit)
宛先チェーンにある受信コントラクトでccipReceive()を実行するためにCCIPが消費できるガスの最大量を指定する。 ユーザーはCCIPメッセージの追加引数フィールドでガスリミットを設定する。
※注意: CCIPがccipReceive()を実行するのに十分なガスを確保できるように、宛先チェーンのコントラクトに設定するgasLimitを慎重に見積もることを忘れないでください。このユーザーが設定した上限から未使用のガスは払い戻されません。

宛先ガスオーバーヘッド(destination gas overhead)
これはCCIP(DONのコミット+DONの実行)とリスク管理ネットワークによって宛先チェーンで発生する固定ガスコスト

ペイロードごとの宛先ガス(destination gas per payload)
 この変動ガスはCCIPメッセージのデータ・フィールドの長さに依存します。 ペイロードがない場合(CCIPはトークンのみを転送する)、値は0です

トークン転送のガス(gas for token transfers)
この可変ガスコストは、トークンを宛先チェーンに転送するためのものです。 トークンの転送がない場合、値は0です

https://docs.chain.link/ccip/billing#blockchain-fee

データ可用性コスト(Data availability cost)

  • DAで手数料を課すチェーンが宛先の場合、追加で徴収されるコスト
    (ガス代の追加料金のようなイメージか)

このコストは宛先チェーンがL2レイヤーの場合にのみ関係する。
L2レイヤーの中には、データの可用性に対して手数料を課すものがある。 例えば、optimistic rollupsはオフチェーンでトランザクションを処理し、そのトランザクションデータをcalldataとしてイーサリアムにポストする。

https://docs.chain.link/ccip/billing#data-availability-cost

2.ネットワーク手数料(Network fee)

  • トークンの転送か、それ以外かでテーブルが変わる

  • また、トークンの転送においても、Lock and Unlock型かそれ以外で算出方法及びテーブルが変わる
    (Lock and Unlockであるとラップドトークンが例となる認識)

分散型オラクル・ネットワーク(DON)およびリスク管理ネットワーク(Risk Management Network)を運営するノード・オペレーターを含むCCIPサービス・プロバイダーに支払われる手数料は、以下のように計算される

https://docs.chain.link/ccip/billing#network-fee

トークン転送またはプログラム可能なトークン転送

トークン転送またはプログラム可能なトークン転送(トークン+データ)の場合、ネットワーク手数料はトークン処理メカニズムとレーンによって異なります

Lock and Unlock
ネットワーク手数料はパーセンテージ制である。 各トークンについて、以下の式で計算されます
tokenAmount * price * percentage
・tokenAmount: 転送されるトークンの量
・price: 初期価格はUSDで、feeTokenに変換される
・percentage:ネットワーク料金表に記載

Lock and Mint, Burn and MintBurn and Unlock
ネットワーク料金は固定額です。 ネットワーク料金表をご覧ください。

https://docs.chain.link/ccip/billing#token-transfers-or-programmable-token-transfers

メッセージング(Messaging (only data)

ネットワーク料金は米ドル建ての固定額です。 ネットワーク料金表をご覧ください

https://docs.chain.link/ccip/billing#messaging-only-data

ネットワーク料金表テーブル(Network fee table)

以下の表は、異なるレーンにおける異なるユースケースに対して課金されるネットワーク料金の概要です。 パーセンテージ・ベースの手数料は、メッセージ内で転送された値に対して計算されます。 米ドル建ての手数料はメッセージごとに適用されます。

https://docs.chain.link/ccip/billing#network-fee-table


Network fee table

所感

概要の理解

  • 確実にトランザクションが実行されるように係数できっちり設定できるようになっている

  • トークンの転送かそれ以外かで算出ロジックが変わる

もう少し深掘りたい点

  • ノードオペレータとなった時に、どれくらいの割合が手元に入ってくるか
    (例えば、実行レイヤーのノードを運用した時に、ネットワーク手数料としてどれ程の金額が手数料として入るか)

この記事が気に入ったらサポートをしてみませんか?