2020年10月8日
ファイルコインの特徴:Gas料金
訳注:Gas(ガス)とはスマートコントラクト実行のためのマイナーへの手数料の事
今回はFilecoinネットワークの特徴に焦点を当てたシリーズの最新回です。ガス料金がどのように作用・動作するのか、そしてなぜガス料金がFilecoinネットワークにとって重要なのかについて掘り下げていきます。
Filecoinはブロックチェーン基盤に整備されたエコシステムです。参加者は分散型ネットワーク上で取引を行います。ネットワーク(の状態)は、マイナーがマイニングしたブロック内のメッセージを記録し、処理することで更新されます。メッセージには、ストレージのオンボード、ストレージの取引、進行中のProof、トークンの取引など様々なものがあります。
しかしブロック内で処理できるメッセージの数は、チェーンの性能、スケーラビリティ、および検証時間などにより制限されています。そのため、ネットワーク上のメッセージのサブセットだけがいつでもブロックで処理に関係することができます。
さらにメッセージの実行処理は、ネットワーク上の計算リソースとストレージリソースの両方を消費します。そこでメッセージによって消費されるリソースの指標として「ガス」が登場します。メッセージが消費するガスは、ブロックチェーンにメッセージを送信・処理するために送信者が支払うコストに直接影響します。そして一つのブロックにおける合計ガス使用量には制限があります。
ガスは自動車の燃料のように、Filecoinブロックチェーンの燃料と考えることができます。距離を走ったり、坂道を登ったり降りたりしてエンジンが動いている間に消費されるガソリン代を支払わなければなりません。同様に、Filecoin上のメッセージ送信者は、Filecoinブロックチェーン上のメッセージの実行を「動力」または「燃料」とするガスの代金を支払うことになります。
Filecoinではガスをどのように利用するのでしょうか?
ガスは当初、メッセージによって消費される計算リソースとストレージリソースの指標としてEthereumブロックチェーンに実装されました。ここから「GasUnit」というフレーズが生まれました。歴史的に他のブロックチェーンでは、マイナーがネイティブ通貨の単位でGasFee(ガス料金)を指定し、メッセージを実施することでどれだけガスが消費されたかに応じて、ブロックを生成するマイナーに料金を支払うというものでした。
しかしネットワーク上の各ノードは、各メッセージを検証し、ネットワークの一貫した状態を維持するためにストレージや計算リソースを消費しなければならないため、ガスの消費はネットワーク全体が負担すべきコスト(ガス)とも言えます。そのため特定のメッセージでは、使用されたガスをバーン(訳注:消滅される事)して、ネットワークを補います。このコストを分散させないと、ブロックを生産するマイナーが他のマイナーを無視して計算コストの高いメッセージを無料で実施する可能性があるため、マイニング報酬のずれが生じます。
BaseFee(基本料金)はEthereumのEIP1559*で導入された概念です。BaseFeeにメッセージのガス使用量を掛けたものが「バーン」されます。バーンされるということは、使われていないアドレスに送られ、ネットワーク上から消滅することを意味します。これは、ある時点でのネットワークの帯域幅の需要に基づいて動的に調整されます。ネットワークが混雑すると、ネットワークのBaseFeeよりも低い料金のメッセージ送信者は、混雑が解消されるまで待機します。BaseFeeの変化率は、DOS攻撃や混雑に対して迅速に上昇し、ネットワークが混雑しなくなるにつれて迅速に減少するように設計されています。ネットワークの混雑を悪化させるメッセージ送信者も、より高い料金を支払う必要があるためコスト面で対策されています。バーンはまたネットワーク参加者全員に利益をもたらす緩やかなデフレ圧力を生み出します。
* EIP1559の解説 https://www.coindeskjapan.com/68184/
車の例えに戻って、車のガソリンであるガスと、道路であるネットワークで考えてみましょう。例えば通勤ラッシュなどで道路が渋滞していて、車が停車と発進を繰り返す状態であれば、より多くのガスを消費することになります。そのような場合は、しばらく待ってから出発したほうがいいかもしれません。同じ理論がFilecoinネットワークにも当てはまります。ネットワークのトラフィックが混雑しているときは、ガソリン代が高くなるので、しばらく待ってから出発するのが賢明かもしれません。
メッセージ送信者は、手数料のバーンに加えて、ブロックを生成するマイナーのための優先的な手数料を支払う事も可能です。これはGasPremiumと呼ばれ、プロトコル外でも手配することができます。
(訳注:残念ながらプロトコル外というのが何を意味するのか記載がありませんでした)
ガスの実用的なガイドについて。
皆様がガスの仕組みをよりよく理解するために、以下ではメッセージに関連するガスの概念とその相互作用のリストを説明します。これらはメッセージの送信者によって設定することができますが、現在はLotusで自動化されております。
GasLimit – メッセージの実行で消費されるガス上限。メッセージの送信者によって推定され、指定されます。一つのブロックに含まれるすべてのメッセージのGasLimitの合計は、BlockGasLimitを超えてはなりません。GasUnit単位で表される。
GasUsage – メッセージの処理が実際に消費するガスの量。現在のプロトコルでは、メッセージが実行される前に正確にどのくらいのガスを消費するかはわかりません。 GasUnit単位で表される。
GasFeeCap – メッセージをブロックに書き込むために、送信者がGasUnitごとに支払う最大値です。メッセージの送信者は、メッセージを送信する際にGasFeeCapにGasLimitを乗じた額の最低残高を持っていなければなりません。attoFIL/GasUnit単位で表される。
GasPremium – GasLimitの単位ごとにブロックを生成するマイナーに支払われる優先料金。これはGasFeeCapによって上限が設定されており、BaseFeeの方が優先度が高くなります。attoFIL/GasUnit単位で表される。1attoFIL/GasUnitが最低単位。
BaseFee – チップセット内のすべてのメッセージのGasLimitの合計に基づいて動的に調整されるネットワーク全体の変数。これは、GasLimitの合計がブロックのGasLimitターゲットを超えると増加し(ネットワークの混雑を示す)、下回ると減少します。attoFIL/GasUnit単位で表される。
メッセージ送信者は、メッセージ毎にGasFeeCapとGasLimitを指定するだけです。GasUsageにBaseFeeを乗じた値は、ネットワークのリソースが消費されるとバーンされます。GasFeeCapからBaseFeeを引くと、GasPremiumが得られます。GasPremiumにGasLimitを掛けたものが、優先料金としてブロック生成マイナーに支払われます。GasLimitとGasUsageの差額の一部はバーンされ、残りはメッセージの送信者に返却されます。
(訳注:難しい事が書いてありますが、要はETHの送金と同じで、高速処理してほしければ多額のガスを支払うこと、ネットワークが混雑しているとガスも高騰すること、余ったガスは返却されること)
現在の既定値では、マイナーは収益を最大化するために、GasFeeCap/GasLimitに基づいてメッセージを選択できます。ネットワークが混雑しBaseFeeが高い時は、マイナーはブロックをアンダーパックすることを選ぶことができます。
将来
研究チームとエンジニアリングチームは、ガスの使用量を減らし、ネットワークのパフォーマンスを改善して容量を増やすために、さまざまなオンチェーンでのメッセージが消費するリソースを削減するために取り組んでいます。しかし、現在Filecoinには、比較的短い期間でチェーンに含まれなければならないメッセージ(SubmitWindowedPoStなど)があり、そうでない場合はペナルティが発生します。このようなメッセージの経済構造を改善し、サービス品質を保証できるようにするために、さらなる作業が行われています。我々は、クライアント、マイナー、開発者、パートナー、およびトークン保有者と協力し合い、ネットワークをより良い方向へと進化させていきます。今後の改善のために、Filecoin Lotusのドキュメント*1とFilecoin Improvement Protocol*2を参照して下さい。
*1 https://github.com/filecoin-project/lotus
*2 https://github.com/filecoin-project/FIPs
※当記事については、ご参考情報となります。正確性・真実性確認にはご自身で情報ソースを確認して下さい。
また、Protocol Labs公式からの情報更新を翻訳しております。
そのため、記事発行時点の内容のため、後日に内容が変更される可能性があります。
更新情報は速やかに公表させていただきます。
※発信元
コメント