Blog Unchained

ブロックチェーン・仮想通貨・暗号資産の開発ブログ

Solidityの多重継承やダイヤモンド継承の挙動や優先順位について

Ethereum Advent Calendar 2018の11日目の記事です。

今回は、TrueUSDなど、Solidityの多重継承を活用して上手にモジュール化したプロジェクトを見ていて、Solidityでの多重継承の挙動がどのように行われるか不安になったので調べてみました。

本記事では、子コントラクトで親コントラクトのメソッドを実装しない場合どうなるのか、子コントラクトで親コントラクトのメソッドを実装しsuper.methodNameのようにして親コントラクトのメソッドを呼び出した場合どうなるのか、多重継承している場合はどうなるのか、ダイヤモンド継承をしている場合はどうなるかを解説します。

また、今回はSolidityの単純な継承の説明は省略しています。

実行環境は以下です。

  • Solidity 0.5.1+commit.c8a2cb62.Emscripten.clang
  • Remix
  • Rinkebyテストネットワーク

バッチリクエストを利用してTruffle migrateを高速化する方法

TruffleはEthereumスマートコントラクトの開発フレームワークとして最も有名ですが、GitHubなどに上がってるコードを参考に見てみると、雰囲気で使ってるんじゃないかと思うことがあります。

中には効率が悪いものもあって、Javascriptの並行処理を使ったり、トランザクションをバッチ処理することで高速化できるようなコードを見かけることもあります。

本記事では、Truffleを使ってコントラクトをデプロイする際に、バッチリクエストをすることでデプロイを高速化するための方法について紹介します。