ブロックチェーン エンジニア集中講座 week8 ~Ethereum挑戦編~ 参加レポート

HashHub Space
5 min readJan 28, 2019

--

HashHubでは毎週日曜日に2ヶ月集中して学習をするブロックチェーンエンジニア集中講座をフレセッツと共同で運営しています。詳しくはこちらをご確認ください。

ブロックチェーンエンジニア集中講座:https://www.blockchain-edu.jp/

<過去参加レポート>

week1 ~ブロックチェーンの仕組みと概要~:参加レポート

week2 ~ビットコイン基礎編~:参加レポート

week3 ~ビットコイン応用編~ :参加レポート

week4 ~ビットコイン実践編~ :参加レポート

week5 ~Ethereum基礎編~ :参加レポート

week6 ~Ethereum応用編~ :参加レポート

week7 ~Ethereum実践篇~ :参加レポート

講義開始

前回はスマートコントラクトについて学び,作成してみました。今回はEthereum挑戦篇ということで、スマートコントラクトの脆弱性を突いて観ながら、セキュリティーをみていきたいと思います。

最初はクリプトキティーのコードの重要な点だけを見ながら、どのようにバグを防いでいるかをみていきます。

いよいよ本題の脆弱性について説明していきます。今回みる脆弱性は「アンダーフローとオーバーフロー」「Re-entrancy攻撃」の二つです。

まずはアンダーフローとオーバーフローをみていきます。これはuint256 型を利用している際に、計算結果が 2^256 を超えるか、結果が負になる数だと桁 が溢れて予期しない数値になるというものです。これを利用することで、不正にコインの残高を増やすことができてしまいます。

この対策としてSafeMathを使うことが挙げられます。これまでの処理を、SafeMath を用いた処理に書き換えることで、脆弱性を解消することができま す。

次はRe-entrancy攻撃です。実行しようとしたコントラクトに指定した関数などがなかった場合、デフォルトで呼ばれる関数としてfallback関数が存在します。これを悪用することで、コントラクト内に存在する資金が取り出せるようになります。これはThe DAO事件で実際に使われた攻撃でもあります。

この解決策としてはETH を送り返す処理と、残高の書き換え処理の順番を入れ替えをすることで防ぐことができます。

今回の講義はこれで終了です。その後はテキストの演習問題を解きながら、脆弱性のあるコードとはどのようなものかを理解する時間となりました。

まとめ

今回はスマートコントラクトの脆弱性について学びました。実サービスでスマートコントラクトを利用する際に、バグがあったら大変です。そのため前回まで以上に重要な内容だったのではないかと思います。また4回(1ヶ月)Ethereumに触ってきたということで、受講者の皆さんも最初に比べるとかなりコードを読み書きできるようになっていました。まだまだ上級者とまではいきませんが、初心者は完全に抜け出したエンジニアになっているのではないでしょうか。

今回で全8回の講義が終わり、残すは特別講義のみとなりました。来週は実際のブロックチェーンエンジニアが普段どんなことをしているのかや、求められるエンジニア像などのお話になる予定です。

お知らせ

■HashHubでは入居者募集中です!

HashHubは、ブロックチェーン業界で働いている人のためのコワーキングスペースを運営しています。ご利用をご検討の方は、下記のWEBサイトからお問い合わせください。また、最新情報はTwitterで発信中です。

HashHub:https://hashhub.tokyo/

Twitter:https://twitter.com/HashHub_Tokyo

■ブロックチェーンエンジニア集中講座開講中!

HashHubではブロックチェーンエンジニアを育成するための短期集中講座を開講しています。お申込み、詳細は下記のページをご覧ください。

ブロックチェーンエンジニア集中講座:https://www.blockchain-edu.jp/

■HashHubでは下記のポジションを積極採用中です!

・コミュニティマネージャー

・ブロックチェーン技術者・開発者

・ビジネスディベロップメント

詳細は下記Wantedlyのページをご覧ください。

Wantedly:https://www.wantedly.com/companies/hashhub/projects

--

--