ネットワーク輻輳時のスマートコントラクト設計

この記事では、Ethereumのガスの意味と、なぜ最近急騰しているのかを理解していきましょう。その上で、RSKやEOSのような他のスマートコントラクトプラットフォームが、スマートコントラクトデザインの際にガス価格にどのように対処しているのかを見ていきましょう。
Ethereumはガスの問題を抱えています。笑い話のように聞こえるかもしれませんが、開発者はこの発言を笑っている以外に何もしていないと断言できます。
DeFi(分散型金融)アプリケーションの需要の高まりにより、メインのEthereumブロックチェーンでは混雑が増加しています。これにより、メインチェーン上のガス価格が高騰しています。Bitinfochartsによると、取引手数料の中央値は2018年初頭以来の最高水準にまで高騰しています。

スマートコントラクトとイーサリアム仮想マシン

スマートコントラクトは自動化された契約です。それらは、そのコードに書かれた特定の命令で自己実行しており、特定の条件に抵触したときに実行されます。

スマートコントラクトについては、こちらの詳細ガイドをご覧ください。
スマートコントラクトとは、Ethereumのエコシステム上で何らかの物事が実行される方法です。誰かがEthereumで特定のタスクを完了させたい場合、1人または複数の人とスマートコントラクトを開始します。

スマートコントラクトは、IFTTTロジック、別名IF-THIS-THEN-THATロジックに基づいて動作するプログラミング言語 “solidity “を使用して書かれた一連の命令のようなものです。基本的には最初の命令セットが完了したら、次の関数を実行し、その次の関数を実行して、契約が終了するまで繰り返します。

これがスマートコントラクトの核となる原理です。これによって、弁護士のような第三者ではなく、コードによって監督された複数の当事者間の拘束力のある契約が可能になるのです。

Ethereum仮想マシンとは?

Ethereum仮想マシンは、スマートコントラクトを実行するエコシステムです。適切なスマートコントラクト機能には3つの重要な要素があります。

  • 決定的であること。
  • 終わらせることができること。
  • 分離されてること。

特徴その1:決定論的
プログラムは与えられた入力に対して毎回同じ出力を与えるならば、決定論的である。例えば、3+1 = 4 の場合、3+1 は常に 4 になります (同じ基底を仮定しています)。したがって、プログラムが異なるコンピュータで同じ入力セットに同じ出力を与えるとき、それは決定論的と呼ばれます。

特徴その2:終わらせることができる
数学的論理学では、”halting problem “と呼ばれるエラーがあります。基本的には、与えられたプログラムが制限時間内に関数を実行できるかどうかを知ることができないということです。これは明らかにスマートコントラクトの問題であり、契約は定義上、与えられた制限時間内に終了することができなければなりません。スマートコントラクトには停止メカニズムを統合できる環境が必要です。

特徴その3:分離されている
ブロックチェーンでは、誰しもがスマートコントラクトをアップロードすることができます。しかし、そのため、コントラクトには知らず知らずのうちに、ウイルスやバグが含まれている可能性があります。コントラクトが分離されていないと、システム全体に支障をきたす可能性があります。したがって、エコシステム全体を悪影響から守るためには、コントラクトをサンドボックスで隔離することが重要です。

Ethereumはこれらの機能をすべてEVMを通じて提供しています。それは、シンプルながらも強力なTuring Complete 256ビット仮想マシンです。

イーサリアムのガスとは?

ガスとは、特定の操作を実行するのにかかる計算量を計測する単位です。EVMで実行されるすべてのスマートコントラクトはsolidityを使ってコード化されています(Ethereumは将来的にsolidityからViperに移行する予定です)。

下の画像は、Ethereumのイエローページから取得したもので、具体的な指示がどれくらいガス代がかかるかの大まかな目安を得るために使用することができます。

Image Courtesy: Ethereum Yellow Paper
Ethereumでのガスの仕組みをよりよく理解するために、例えを使ってみましょう。あなたが旅行に行くとしましょう。その前に以下のような手順を踏むとします。

  • あなたはガソリンスタンドに行き、あなたの車にどのくらいのガソリンを入れたいかを指定します。
  • あなたの車にガソリンを入れてもらいます。
  • あなたはガソリンスタンドにあなたがガスのために彼らに借りている金額を支払う。

さて、Ethereumとの比較をしてみましょう。
ガスやスマートコントラクトのように、実行したい操作が車です。
ガスは、よく言えば…ガソリンです。
ガソリンスタンドはあなたのマイナーです。
あなたが彼らに支払ったお金がマイナーの手数料です。

ユーザーがEthereumで実行したい操作はすべて、以下のようにガスを供給しなければなりません。

  • そのデータをカバーするために必要な固有ガス
  • 計算処理全体をカバーするために

私たちは、基本的な部分をカバーしましたが、あなたは多分次の質問をしています。
なぜこのガスシステムがあるのか?
答えは簡単…インセンティブです。
他のプルーフ・オブ・ワークのピアツーピアシステムと同様に、Ethereumもマイナーのハシュレートに大きく依存しています。マイナーが多ければ多いほど、ハッシュレートが高くなり、システムはより安全で高速になります。

より多くのマイナーをシステムに引き込むためには、マイナーにとって可能な限り収益性の高い魅力的なシステムにする必要があります。Ethereumではマイナーがお金を稼ぐ方法は2つあります。

  • ブロックを発掘しブロック報酬を得ること
  • 採掘されたブロックの一時的な独裁者になること

2つ目のポイントを探ってみましょう。
マイナーはブロック内の取引を行う責任があります。そのためには、計算能力を使ってスマートコントラクトを検証しなければなりません。ガスシステムでは、そのために特定の料金を請求することができます。

この料金はマイナーの料金として知られており、生態系に積極的に参加するために十分なインセンティブを与えることができます。

では、どれくらいの料金を請求できるのでしょうか?それを計算する前に、ガスの測り方を理解しておきましょう。

ガスを測る最小単位はウェイです。ですから、1回の作業で1ガス単位を使った場合、1ウェイと呼びます。
こんな感じで単位が増えていきます。
Image Credit: Steemit
先に進む前に、ガスリミットの概念を知っておくことが大切です。

ガスリミットとは?

Ethereumで操作を行うためには、操作生成者(取引を開始した人やスマートコントラクトを作成した人)がマイナーに提出する前にガスの上限を指定しなければなりません。ガスリミットが定義されて初めて、マイナーは操作の実行を開始します。

ガスリミットを提出する際には、以下の点を考慮する必要があります。

  • 異なる操作ではガスコストが異なる(以前にも示したように)。
  • マイナーはガスがなくなった瞬間に実行を停止します。
  • ガスが残っている場合は、すぐにオペレーションジェネレーターに返金されます。

これを仮定のシナリオで運用してみましょう。

我々は2つの数字を追加していると仮定し、そのためにコントラクトは次のアクションを実行する必要があります。

  • 10を変数に格納します。この操作に45ウェイのガスがかかるとしましょう。
  • 2つの変数を追加して、これが10ウェイガスのコストだとしよう。
  • 再び45ウェイガスのコストがかかる結果を格納します。

ガスの限界が120ウェイだとします。
マイナーが使用したガスの合計は(45+10+45)100ウェイです。
1ウェイが0.02マイクロETHであると仮定して、彼らに支払われる手数料は、(100*0.02マイクロETH)=0.000002ETHです。
さて、ガスはどのくらい残っているのでしょうか?

20ウェイは操作ジェネレーターに返金されます。
これを指定したことで、考慮しなければならないシナリオが2つあります。

  • ガスリミットが低すぎる。
  • ガスリミットが高すぎる。

シナリオ1:ガスの限界値が低すぎる

操作がガス欠になると、実際には何も起きなかったかのように元の状態に戻りますが、操作ジェネレーターはマイナーに計算コストの手数料を支払わなければならず、操作はブロックチェーンに追加されます(実行されていなくても)。

ドライブの例えに戻りますが、車のガソリンを満タンにしていないと目的地に到着できませんが、それでもガソリンスタンドに燃料代を支払っていますよね?

これがどのように機能するのか 仮説的な追加スマートコントラクトで見てみましょう。

  • 10を変数に格納します。この操作に45ウェイのガスがかかるとしましょう。
  • 2つの変数を追加して、これが10ウェイガスのコストだとしよう。
  • 再び45ウェイガスのコストがかかる結果を格納します。

しかし、今回はガスの上限が90Weiとなっています。
さて、契約を履行するために必要なガスは100ウェイであることがわかっていますが、90ウェイしかありません。
このシナリオでは、マイナーは90ウェイ分の計算を行い、(90 * 0.02マイクロETH) 0.000018ETHとなる90ウェイ分のオペレーショナルジェネレーター料金を請求します。
また、コントラクトは元の状態に戻り、ブロックチェーンに追加されます。

シナリオ2. ガスリミットが高すぎる

では、ガスの上限を高く設定しすぎるとどうなるのか?

それをするのは理にかなっているのではないでしょうか?結局、余った分はジェネレーターに返金されるんですよね?

紙の上では良いことのように聞こえるが、実際にはそれほどうまくはいかない。Ethereumの各ブロックには全体的なガスの上限があることを覚えておく必要があります。マイナーは、ブロックのガス制限以下になるような操作しか追加できません。

ガスの限度額が42,000の取引Aと、通常の限度額が21,000の取引BとCの2つの取引があったとします。
マイナーが自分のブロックに入れるのはどっちが理にかなっているのでしょうか?

  • 取引Aを入れて、大量のガスを返金するのでしょうか?
  • それとも、取引BとCを入れて、ほとんど何も還付されないのでしょうか?

2番目のポイントは、経済的には彼らにとってより意味があるのではないでしょうか?
これはまさに、肥大化したガスの制限を持つことが賢明な方法ではない理由です。

ガスの高低差 VS 手数料の高低差

ガスとEtherは同じものではないことは、これまでのところ明らかであるべきです。Etherがそのガスのために支払わなければならない価格、別名FEESであるのに対しガスは必要とされる計算能力の量です。

これまでに得た知識をもとに、あるガスと料金のシナリオを見ていきましょう。

  • あるTxが低いガスを持っている場合、そのTxが計算を終えるのに十分なガスを持っていないので、 マイナーはそれを拾うことさえしないだろう。
  • 料金が低いオペレーションは、それをカバーするのに十分なガスを持っているかもしれませんが、それでもマイナーは、料金が安いオペレーションは彼らにとって経済的に実行可能ではないので、それを拾い上げようとはしません。
  • ガス料金が高い場合は、ガスの上限が高くて肥大化していることを意味し、マイナーはそれを拾い上げません。
  • 料金が高いTxであれば、マイナーは大儲けすることを知っていて、すぐにそれを拾い上げます。
ethgasstationによると、異なる取引手数料のための推奨ガス価格は、次のとおりです。

イーサリアムのガス価格の上昇

最近Ethereumブロックチェーンの利用が増えています。これは、より複雑なスマートコントラクトの利用が増えているためです。

Ethereumのガソリンスタンドにあるように、USDTのようなステーブルコインやUniswapのような分散型取引所は、このスペースでより多くのガスを消費するスマートコントラクトとなっています。この使用量の増加は、ユーザーが取引をより早く処理するために高い手数料を支払うことを促します。このように、多くのアクティビティがある場合、手数料率はすぐにスパイラルアップすることができます。

この状況がいかにドラスティックなものであるかを理解するにはこれを考えてみましょう。

Coin Metricsによると、ある時点で1取引あたりの平均コストは、2020年の開始時の約8セントから、7日間の平均で約91セントまで上昇していると Digital Assets DataのConnor Abendschein氏がこのように指摘しています。
「現在のところ高いガス料金のため、小規模なプレイヤーはSynthetixのようなDeFiの最も興味深いプロトコルのいくつかに参加することができません。」

EthereumとDeFiはオープンでアクセスしやすい世界的な金融システムを構築するためのものなので、これは恥ずかしいことです。

もっと悪いのは、より複雑なDeFiプロトコルやユーザーがエコシステムに参入してくると、この問題が悪化するだけだということです。

では、Ethereumの競合はガス問題にどう対処しているのでしょうか?を見ていきましょう。

EOSにおけるスマートコントラクトデザイン:オーナーシップモデル

Ethereumのガスシステムは、レンタルモデルと考えることができます。Ethereumはグローバルスーパーコンピュータであり、アプリケーションを作成したり実行したりするためのリソース(ガス)をレンタルします。

一方、EOSはオーナーシップモデルを採用しています。分散型スーパーコンピュータではなく、EOS は、Dapp 開発者が様々な Dapps を作成したりコーディングしたりするために利用できる分散型オペレーティングシステムになることを計画しています。EOSトークンは料金所のような役割を果たし、それを持つことで帯域幅、計算、RAMなどの様々なリソースにアクセスすることができます。

これらのリソースは不足しているため、EOSはトークンを長く保有することを望んでいません。EOSの背後にある会社Block.oneはプラットフォームの規約で、3年間トークンを使用しないEOSメンバーはアカウントを解約されると明示的に述べています。

EOSトークンをステークしてロックアップすることで、その見返りとしてネットワークやCPUの帯域幅など、同等のリソースを提供してもらうことができます。ただし、RAMは希少資源であるため、ステークスで自動的に手に入るわけではありません。そのため、入手するにはRAMマーケットプレイスから直接購入する必要があります。

誰かがRAMを売買するたびに、0.5%の手数料が買い手側と売り手側の両方に適用されます(全体では1%)。これは実際には、ユーザーにRAMを販売するための経済的なインセンティブを与え、回収された手数料が速やかに燃やされる(生態系から削除される)ため、投機的なマーケティングやインフレを抑止します。

この内部RAMマーケットプレイスは、RAMの安定した供給があることを確認し、将来的に予測される不足分を相殺します。システムが設定した価格に基づいて、現在利用可能なRAMの供給量に基づいてRAMを購入することができます。

これらのリソースを購入して使用することで、開発者は分散型アプリケーションを作成することができます。

Ethereumとは対照的に、EOSではガス価格を支払う必要はありません。スマートコントラクトのための帯域幅、CPU、ストレージを受け取るためにEOSトークンを張る必要があります。これに加えて、RAMも必要になります。RAMはそのような希少な資源なので、内部のRAMマーケットプレイスから購入する必要があります。EOSリソースプランナーによると、RAMは1KiBあたり0.154ドルです。

では、これらの情報を頭に入れた上で、アプリケーションを動かすためにどれくらいのEOSを賭ける必要があるのかを見てみましょう。1000人のユーザーのためのアプリケーションを作ろうとしているとしましょう。その際には、以下のような指標を考慮する必要があります。

  • ユーザーアカウントごとに支払います。
  • 各ユーザーアカウントの保管料を支払う必要があります。
  • また、必要なネットワーク帯域幅やCPUの帯域幅も考慮する必要があります。

RSK – BitcoinとEthereumの架け橋 – スマートコントラクトデザイン

Rootstock(RSK)は、サイドチェーン技術によりビットコインのブロックチェーンに接続されたスマートコントラクトプラットフォームです。ルートストックはEthereumのアプリケーション(web3/EVM/Solidityモデル)と、基礎となる暗号通貨としてのビットコインとの互換性を目指して誕生しました。RSKが生まれた背景には、ビットコインのブロックチェーンにスマートコントラクトの機能を持たせることが考えられていました。その非常に核心的な部分では、ルートストックは以下の組み合わせです。

  • EthereumのEVMと互換性のあるチューリング完全なリソースアカウント型決定論的仮想マシン(スマートコントラクト用)。
  • 強力なフェデレーションに基づく2ウェイペッグのビットコインサイドチェーン(BTC建て取引用
  • SHA256Dのマージマイニングコンセンサスプロトコル(ビットコインのマイナーに依存したコンセンサスセキュリティのため)で、ブロック間隔は30秒。迅速な支払いのために)。

RSKでは、Ethereumブロックチェーンに直接接続するトークンブリッジを構築することができます。これにより、コントラクト作成者は両ブロックチェーンの利点を活用できるだけでなく、両ブロックチェーン間での相互運用性の高い繁盛したエコシステムを構築することができます。

では、これをガス代に換算するとどうなるのでしょうか?RSKは歴史的にガス代に関してはEthereumよりも安くなっています。

上の青い線がEthereumのガス価格で、下の緑の線がRSKのガス価格です。Ethereumと比較した場合、RSKがどれだけガスの効率が良いかをより明確にしたい場合は、こちらをチェックしてみてください。

これは過去10日間のEthereumとRSKの平均取引手数料の比較です。これが意味するのはRSKが安いだけでなく、ビットコインブロックチェーンの全体的な安全性をもたらし、EthereumとEOSの両方に明確な優位性を与えているということです。

総括

DeFiの革新と普及の全く新しい時代を迎えるにあたり、開発者は効率的にアプリケーションを開発できるプラットフォームを必要とするでしょう。Ethereumが先陣を切っていることは誰も否定しませんが、RSKのような他のプラットフォームは、将来のヘビーヒッターの可能性を秘めていることは間違いありません。

スマートコントラクトやあらゆる種類の腐りやすいトークンや腐りにくいトークンの開発がRSK上でシームレスに行われているという事実を考慮に入れると、開発者はこのスマートコントラクトプラットフォームをテストする大きなインセンティブを持っていると言えるでしょう。


原文:https://blockgeeks.com/guides/smart-contract-design-in-times-of-congested-networks/ By blockgeeks