Ethereum: Solidityの Stack Too Deep問題

NO IMAGE

Ethereumのお約束。Stack Too Deep問題のメモ

概要

  • 大まかに16か17のローカル変数と返り値を書くと、コンパイル時にStack Too Deepと出る問題
  • 最低16 or 17以上書くとダメだけど、それより少なくてもダメな場合もある (function内の挙動による)

対応方法

  • 引数をまとめる
  • ローカル変数を減らす
  • 返り値を減らす
  • functionを分ける
  • stringは2つのスタック・スロット使うので、byte32にする
  • structにまとめる?

その他、色々やり方があるかも知れません。

仕組み

  • 2つのスタック・スロットを使う沢山のストレージ・リファレンスがある
  • スロットの中にオフセットが必要
  • EVMは、ある深さのスタックまでしかリーチできない
  • ローカル変数は、スタックの中に保存されている
  • この問題は、スタックの問題ではなく、ストレージの問題
  • 変数は、スタックの中にぎゅうぎゅう詰めになっているわけではない
  • 例えば、bool変数は、フルスタックの場所をとる

参考

関連用語

  • Ethereum, イーサリアム
  • Solidity
  • EVM, Ethereum Virtual Machine
  • stack, スタック, stack slot, スタックスロット
     

免責事項

本記事に掲載されている記事の内容につきましては、正しい情報を提供することに務めてはおりますが、提供している記事の内容及び参考資料からいかなる損失や損害などの被害が発生したとしても、弊社では責任を負いかねます。実施される際には、法律事務所にご相談ください。

技術・サービス・実装方法等のレビュー、その他解説・分析・意見につきましてはblock-chani.jp運営者の個人的見解です。正確性・正当性を保証するものではありません。本記事掲載の記事内容のご利用は読者様個人の判断により自己責任でお願いいたします。

     

コンセンサス・ベイス(株)とブロックチェーン事業を行なってみませんか?

当サイトを運営するコンセンサス・ベイス株式会社は、2015年設立の国内で最も古いブロックチェーン専門企業です。これまでに、大手企業の顧客を中心に、日本トップクラスのブロックチェーンの開発・コンサルティング実績があります。

ブロックチェーンに関わるビジネスコンサル・システム開発・教育・講演などご希望でしたら、お気軽にお問い合わせください。

     
     

ブロックチェーン学習に最適の書籍の紹介

図解即戦力 ブロックチェーンのしくみと開発がこれ1冊でしっかりわかる教科書

ブロックチェーン イーサリアムへの入り口 第二版 (ブロックチェーン技術書籍)

本書は、ブロックチェーン技術に興味を持ったエンジニアや、その仕組みを学び、自分の仕事に活かしたいビジネスパーソンを対象にして、ブロックチェーンのコア技術とネットワーク維持の仕組みを平易な言葉で解説しています。この本を読んだうえで、実際にコードを書くような専門書、ブロックチェーンビジネスの解説書を読むことで、理解度が飛躍的に高まるでしょう。(はじめにより)

イーサリアム(Ethereum)カテゴリの最新記事