墨汁の暗号通貨速報

主にETC、BTCを中心に海外で手に入れた情報を最速?で掲載してます

イーサリアムEIP150ガスプライスのハードフォークの問題点

EIP150のハードフォークに問題点の報告がありました。気になるので確認してみます。

 

ハードフォーク後100%壊れるコントラクトのリスト

 

github.com

 

ハイプライスないくつかのオぺコードに加えて、コール命令のガスコストの計算メカニズムの変更を行います。

 

EIP90ガスメカニズムはそれなしで導入され 、現在の全てのコントラクトは彼らがmsg.gasと表現する様にコールは機能しなくなり、コールを作成するためにいくらのガスコストにするか決定し、40というコールのガスコストに依存

 

これは新しいコンセンサスのバージョンは、全てのコントラクトは十分ではないガスの代わりに全ての使用可能なガスを使用し他の読み込みをするということであると家庭し。多くのガス欠エラー(イーサリアムの残高不足)によるトランザクション失敗というトピックを見てきたため、より深く探ることにしました。

 

Go/Rustでコーディングしていないため、イエローペーパーを確認します。

 

最近リリースされたイエローペーパーはこち

http://gavwood.com/Paper.pdf

 

このイエローペーパーには2つの非常に重要なガスエラーと払い戻しについて書いてありました。

 

コントラクトの作成と同様に、異常な動作(例えば消耗したガス供給、スタックアンダーフロー、無効なジャンプ先または無効な命令)により実行を停止、そしてガスがない状態CALLERに払い戻しをし、送金する前のポイントに状態を即座に戻す。

 

もしガスが不十分なとき、もし実行が無効(従って下に書いたδが定義されていない)なとき、もし例外なスタックアイテムがあるとき、もしジャンプ/ジャンプ先が無効であるまたは新たなスタックサイズが1024よりも大きい場合、実行が例外的な停止状態にあります

 

これらによるとコントラクトは全ての使用可能なガスを消費して失敗する6つのケースがあります

例外処理が実行される方法により、新たなガス計算メカニズムは問題を起こすと考えています。

 

・無効なジャンプ先 ー ハイリスクな問題

 

Solidity(EVMで用のプログラミング言語)コンパイルは無効なジャンプに投げるという処理を行うため、このような例外を発生させるコントラクトが大量にあります。例えば全ての競って出されるクラウドセールが資金上限に達し更にイーサを受け付けない様にThrow処理を使用する場合

 

もしコントラクトが無効で例外なジャンプを増加するコントラクトを呼び出したらどうなるでしょうか?

もし全ての使用可能なガスが送られ、実行が停止し、もし呼び出しの失敗後そこには引き出しのロジックがあり、永遠にお金をロックしたとすると?

 

・消耗したガス供給 ー ミディアムリスクな問題

 

EIP150のコンセンサスルールによると呼び出し命令のコストは700ガスで、存在するコントラクトはこの命令を実行することができます

例えば1000ガスで、呼び出されたコントラクトは実行を完了するために500ガスを必要とするが、そこには300ガスしか残っておらず(呼び出しは1000から700消費するため)そうはなりません。これはコントラクトの呼び出しロジックに影響を及ぼし、その結果、最悪の場合資金がロックされます。

 

・スタックサイズ、無効な命令とその残り ー ローリスクな問題

 

これは確実に今動作するコントラクトを作ることが可能であるが、ハードフォーク後にはスタックサイズと他のエラーにより動作しないでしょう

 

私はジャンプ先の問題には簡単な解決方法があると考えています。この例外全てのガスを消費すべきではなく、SolidityのThrow処理は他のものに置き換えられるべきです。例えば無効な命令です

2番めの問題に関しては解決策を考えられず、これも深刻な問題となっていると思います。

そして3番目は更に深刻な問題です。

 

この問題の報告者は他の提案もなく、なおかつネットワークは修正されないといけないので、EIP150を小さいスケールのマイニングオペレーションではあるがこの上記の疑いとおもにサポートするそうです。

コミュニティには即座に完了させるという幅広い合意がありますが、急ぐということは更に賛否両論となります

 

ここまでがRedditでの最初の投稿となります。これに続きの投稿やコアディベロッパーの回答などもあるのですが長いので一旦切ります。

(ほんの一部意味のないところはカットしてます。逆に説明を加えてるとこもあります)

 

元ソース(Redditは貼れないので検索から行ってください)

https://www.google.co.jp/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=why+i+belive+the+EIP150+hardfork+may+break

 

結論と考察

はてさてかなり難しい問題ですね。通常のユーザーには知り得ないような内容となっています。

実際自分が読んだ感想としては50:50の微妙なところですが、実際攻撃によりイーサリアムファンデーションは価格下げ220→182について焦っており、なおかつ攻撃のストレスに絶えずさらされ愚痴や挑発的言動を言うほどとなっているディベロッパー達は本当に今回のガスプライスのハードフォークに最新の注意を払ってるのでしょうか?

 

あまりに結論を急ぎすぎてるというのは自分も同じく感じています。実際に前回の記事の様な反応を見ると不安になりますね

 

このブログは下記サイトへと移転しています。

ethereum-japan.net