Solidity と Ethereum による実践スマートコントラクト開発
ソリディティートイーサリアムニヨルジッセンスマートコントラクトカイハツ
Truffle Suite を用いた開発の基礎からデプロイまで
- 著者:
- Kevin Solorio / Randall Kanna / David H. Hoover / 中城 元臣 / 株式会社クイープ(ケビン ソロリオ / ランドール カンナ / デイビッド エイチ フーバー / ナカジョウ ユキシゲ / カブシキガイシャクイープ)
- 出版社:
- オライリー・ジャパン
- 出版日:
- 2021年01月18日頃
- ISBN:
- 9784873119342
- 在庫:
- 在庫あり
なぜ注目されているか
書籍紹介
技書の森解説
『Solidity と Ethereum による実践スマートコントラクト開発』 (Kevin Solorio、Randall Kanna、David H. Hoover 著、中城 元臣 監訳、株式会社クイープ 訳、オライリー・ジャパン、2021 年 1 月刊) は、ブロックチェーン開発をこれから始めるエンジニアに向けて、EVM (イーサリアム仮想マシン) 上で動く Solidity と開発フレームワークの Truffle Suite を使い、スマートコントラクトの作成からテスト、フロントエンドの作成、デプロイまでを順に解説する書籍です。副題は Truffle Suite を用いた開発の基礎からデプロイまで、原書は Hands-On Smart Contract Development with Solidity and Ethereum です。版元の紹介文が示すとおり、資金調達のアプリケーションを実際に組み立てていく過程をたどる構成で、Web3 とスマートコントラクトのセキュリティも扱います。
全 4 部 12 章の構成、資金調達アプリを作りながら進む流れ
目次は全 4 部 12 章です。第 I 部「イーサリアムブロックチェーンの紹介」は、1 章でブロックチェーンの特徴とイーサとガス、アカウント、トランザクションの署名といったイーサリアムの基礎を、2 章で ERC-20 や ERC-721 のトークン、サプライチェーン、アプリケーションに対する適性評価を取り上げ、3 章で Parity、MetaMask、Node.js、Truffle と Ganache を導入します。第 II 部「スマートコントラクトの開発」は、4 章の Hello World と Greeter を Ownable にする題材から始まり、5 章で Ganache、Goerli、Rinkeby へのデプロイ、6 章と 7 章で資金調達アプリケーションと FundraiserFactory を、構造体やマッピング、イベント、フォールバック関数を使いながら組み立てます。第 III 部「Web3 を使ったスマートコントラクトの操作」は 8 章から 11 章で、Web3 のメソッドと MetaMask、React Truffle Box と Material-UI による画面、寄付と領収書の発行、資金の引き出しまでを作り込みます。第 IV 部「スマートコントラクトの保護」の 12 章は、脆弱性の種類と外部監査の準備、監査に利用できる無償のリソースを扱います。テストを扱う節は 4 章、6 章、7 章、11 章に置かれています。
デプロイ後に書き換えられないコードという技術背景
スマートコントラクトの開発が通常の Web 開発と大きく違うのは、ブロックチェーン に載せたコードを後から差し替えられない点です。不具合が見つかっても上書きでは直せず、コントラクトが預かる資金はそのまま危険にさらされます。しかも状態を書き換える処理には手数料としてガスが掛かり、トランザクションの並び順はネットワークの 合意形成の仕組み が決めるため、送った順に処理される保証もありません。12 章が挙げる脆弱性の型のうち、外部呼び出しの途中で同じ関数へ再び入られるリエントランシーや、取引の並び順に結果が左右される Transaction Ordering Dependence は、こうした実行環境の性質から生まれるものです。フロントエンド側では React の画面から Web3 のライブラリと MetaMask を通じてコントラクトを呼び、状態を書き込む send と読み取るだけの call を使い分けることになり、この区別がそのまま手数料と応答の待ち方の設計に効いてきます。
2021 年刊の道具立てと、読む前に確かめたい変化
本書の手順は 2021 年 1 月時点の道具立てを前提にしています。版元の正誤表 (2024 年 3 月更新) は、Parity の管理が OpenEthereum コミュニティーへ移管され get.parity.io がサポートされていないため OpenEthereum を使うよう案内し、npm でのインストールに版を指定する修正も載せています。Truffle の公式リポジトリの README は Truffle Suite の提供を終えると告知しており、5 章のデプロイ先の一つである Rinkeby は、Ethereum Foundation が 2022 年 6 月 21 日のブログで Ropsten、Kiln とともに非推奨とすることを告知しました。書かれた手順をそのまま再現するには置き換えが必要になる箇所がある一方、Solidity の構造体やマッピング、イベントの使い方、Web3 の send と call の区別、脆弱性の型と監査への備えといった考え方は、道具が替わっても持ち越せる部分です。
Web 開発の経験から DApp 開発へ進む人に向く理由
目次の道具立てから見ると、前提になるのは、Node.js と npm でパッケージを入れて動かす経験と、React の画面を読める程度の JavaScript の知識です。逆に、開発ツールの操作手順をそのまま写して動かしたい人や、Solidity の言語仕様を網羅的に引ける資料を探している人には目的が合いません。一つのアプリケーションをコントラクトから画面まで通して作り、最後に脆弱性と監査の観点で見直す流れを一冊で追えるのが本書の持ち味で、ブロックチェーン上のアプリケーションが何でできているのかを手を動かして理解したい Web 開発者にとっては、仕組みの全体像をつかむ近道になります。正誤表と道具の変化を手元に置きながら、1 章から順に進めてみてください。
言及した記事 (11 件)
SE 2年目で読んだ技術書45冊+α
♡ 284技術書, Se, 新人プログラマ応援, 新人プログラマ応援_記事投稿キャンペーンスマートコントラクト開発のための学習教材を紹介します
♡ 12solidityweb3開発者を目指すためのSolidity勉強方法
♡ 9solidity, SmartContract, web3.js, NFT, truffle「SolidityとEthereumによる実践スマートコントラクト開発」を読む-その1-
♡ 6solidity, ethereum, web3, ganache簡単なDAppを作ってみる Hello, world編
♡ 6HelloWorld, Blockchain, Ethereum, SmartContract, Dapp技術者でない人が 2022/2 現在に NFT を理解する方法
♡ 6NFT, Web3ERC20トークンを独自に作成するアプリを作ってみる
♡ 4Ethereum, スマートコントラクト, solidity, Ganache, ERC020DockerでTruffleを動かせるようにする方法
♡ 2Docker, スマートコントラクト, ブロックチェーン, truffle, イーサリアム2023年に学習終了したUdemy講座まとめ
♡ 1TypeScript, solidity, Udemy, Next.js, NestJSSolidityの例外をcatchした時にerr.reasonの値がうまく取得できなかった
♡ 1solidity
この本は技書デッキのカードです (攻撃 7 / 備え 5) 図鑑でこの本を見る