試して学ぶスマートコントラクト開発
加嵜 長門, 篠原 航, 金 志京, 河西 紀明, 田中 克典, 佐々木 亮彰, 平野 浩司, 前川 彰, DMM.comブロックチェーン研究室 著
内容
目次
Chapter1 はじめてのスマートコントラクト 1 スマートコントラクトとは 1 広義のスマートコントラクト 2 狭義のスマートコントラクト 3 ブロックチェーンの特徴 2 ブロックチェーンで実現できること 1 ブロックチェーンが提供する5つの価値 2 トークンエコノミクス 3 インセンティブ・ディセンティブの設計 4 KYCによる信用担保 5 DApps開発での懸念事項 3 既存サービスの実例 1 ブロックチェーンを用いたサービス 2 スマートコントラクトで実装されたサービス 4 テストネットでのDAppsの利用 1 テストネットとは 2 ウォレットの基礎知識 3 ウォレットのセットアップ(MetaMask) 4 ウォレットのセットアップ(Coinbase Wallet) 5 テストネットでのEtherの入手 6 テストネットで試せるDApps Chapter2 Solidityによるスマートコントラクト開発 1 Ethereumの固有概念 1 Ethereumの内部通貨 2 手数料としてのガス 3 アカウントの種類 4 チェーンの採用を担うGhostプロトコル 5 EVM 2 Solidity概論 1 Solidityの特徴 2 コントラクト 3 型の種類 3 CryptoZombiesによるSolidityの学習 1 CryptoZombiesの概要 2 レッスン1:ゾンビファクトリーの作成 3 レッスン2:ゾンビは人間を襲う 4 レッスン3:Solidityの高度なコンセプト 5 レッスン4:ゾンビのバトルシステム 6 レッスン5:ERC721とクリプト収集物 7 レッスン6:フロントエンドとWeb3.js 4 RemixによるSolidityの実践 1 統合開発環境Remix 2 サンプルプロジェクト 3 Remixによる実践 4 Remixのログ機能による確認 Chapter3 スマートコントラクトのプロダクトデザイン 1 プロジェクトにおけるUXデザインの意義 1 UXデザインの必要性 2 プロダクトのユーザビリティ 3 開発プロセスでのUX/UIデザイン 4 非ウォータフォール開発の推奨 5 プロダクトの成果を定義する 2 リーンUXによる開発 1 リーンスタートアップとリーンUX 2 プロダクトとチームを成長させる 3 リーンUXの基本プロセスでのポイント 4 開発フェーズのポイント 3 プロトタイピングによるアプローチ 1 2種類のプロトタイピングの活用 2 戦術的プロトタイピング 3 体験的プロトタイピング 4 プロトタイプは最終成果物ではない 4 ユーザーテストの設計 1 ユーザーテストとは 2 従来的なユーザーテストの流れ 3 短期開発におけるユーザーテスト 4 軽量化ポイント 5 ユーザーテストのアンチパターン 5 サンプルプロダクトの設計 1 DApps『Quest α版』 2 戦術的プロトタイピング 3 体験的プロトタイピング Chapter4 DApps開発環境の構築 1 各ツールの紹介 1 Docker 2 Geth 3 Ganache 4 Node.js(npm) 5 Truffle 6 Git 7 Visual Studio Code 8 Solidity対応の統合開発環境・エディタ 2 macOSでの環境構築 1 Homebrew 2 Docker 3 Geth 4 Ganache 5 Node.js(npm) 6 Truffle 7 Git 8 Visual Studio Code 3 Windowsでの環境構築 1 Windows Sybsystem for Linux 2 Docker 3 Geth 4 Ganache 5 Node.js(npm) 6 Truffle 7 Git 8 Visual Studio Code 4 Linuxでの環境構築 1 Docker 2 Geth 3 Ganache 4 Node.js(npm) 5 Truffle 6 Git 7 Visual Studio Code Chapter5 開発用ブロックチェーンの構築 1 プライベートネットの構築 1 ローカル環境でのプライベートネットの構築 2 gethoによるプライベートネットの構築 2 より発展的なノード構築 1 Google Cloud Platformの登録 2 Google Cloud SDKのインストール 3 Google Cloud SDKの初期設定 4 kubectlのインストール 5 Kubernetes Engineクラスタの作成 6 Kubernetesで動作させるコンテナの作成 7 コンテナのデプロイ 3 Ethereumのネットワーク 1 P2Pネットワークの基礎 2 Ethereumのプロトコル 3 ノード探索 4 ログによる実践的な動作確認 Chapter6 スマートコントラクトの設計 1 データモデリング 1 概念データモデル設計 2 アトリビュートの洗い出し 3 論理データモデル設計 4 物理データモデル設計 2 コントラクトの設計 1 コントラクトの役割分担とデザインパターン 2 コントラクトが保持すべきデータの精査 3 機能の洗い出し 3 Truffleフレームワークによる開発準備 1 Truffleプロジェクトの作成 2 Truffle Develop 3 デプロイ先のEthereumネットワーク設定 4 Truffleコンソール 4 コントラクトの実装 1 OpenZeppelinのインストール 2 コントラクトの作成 3 コントラクトの機能実装 4 コンパイル 5 プライベートネットへのデプロイ 5 プライベートネットでの動作確認 1 デプロイとコントラクトオブジェクトの作成 2 コントラクトの状態呼び出し(call) 3 コントラクトの状態変更(transaction) 4 結果の確認 Chapter7 テスト手法と自動化 1 テストコードの記述 1 Truffleでのテストコード 2 テストコードの作成 3 テストの実行 4 テストカバレッジ 2 セキュリティチェック 1 自動セキュリティチェックツール 2 Mythril Classicでのセキュリティチェック 3 Quantstamp Betanetでのセキュリティチェック 3 テストの自動化 1 リポジトリによる管理 2 CI(継続的インテグレーション) 3 GitHubとGoogle Cloud Buildの連携 Chapter8 Webアプリケーションの実装 1 実装するアプリケーションの構成 1 一般的なWebアプリケーションの構成 2 DAppsの構成 3 本書で実装するDAppsの構成 2 フロントエンド実装 1 フロントエンドのフレームワーク 2 JSON-RPC 3 実装前の準備 4 Web3.js 5 Room一覧 6 Room作成 3 ミドルウェアとしてのデータベース構築 1 取り得るデータベースの種類 2 MySQLの構築 3 MySQLの動作確認 4 バックエンドAPIの開発 1 開発言語の選択 2 バックエンドのフレームワーク 3 開発に役立つ主要ライブラリ 5 データベースとコントラクトのデータ同期 1 データ不整合によるリスク 2 イベント取得の事前準備 3 コントラクトでのイベントの宣言と発火 4 イベントの検知とデータ同期 6 各コンテナの疎通確認 1 Docker Composeによる複数コンテナの起動 2 ブラウザでの確認 Chapter9 テストネットへのデプロイと監査 1 テストネットへのデプロイ 1 デプロイの準備 2 Truffleによるデプロイ 3 コントラクトの確認 2 セキュリティ監査 1 セキュリティ監査の重要性 2 監査サービス 3 ユーザーテスト 1 テストネットでのユーザーテスト 2 メインネットでのユーザーテスト 3 DAppsを育てるフェーズ Chapter10 発展的なDApps開発 1 Ethereumでの開発に便利なプロジェクト群 1 Swarm 2 IPFS 3 Oracle 4 Ethereum Name Service 5 Kyber Network 2 ERC規格で進む標準化 1 ERCとは 2 EIPとERC 3 ERCトークン規格の例 3 スマートコントラクトのデザインパターン 1 Factory Contract Pattern 2 Name Registry Pattern 3 Access Restriction Pattern 4 Pull Payment Pattern 5 Self Destruction Pattern 6 Circuit Breaker Pattern 7 Upgradable Contract Pattern Chapter11 DApps開発の未来 1 Ethereumの先端技術 1 Plasma 2 Casper 3 Sharding 4 eWASM 5 Vyper 6 Yul 7 Serenity 8 MetaMask Privacy Mode 2 Ethereum以外のスマートコントラクトプラットフォーム 1 EOS 2 NEO 3 Zilliqa 4 Kadena 3 新しい暗号技術 1 ゼロ知識証明 2 シュノア署名 3 BLS署名 4 秘密分散 5 準同型暗号 4 情報収集 1 日本国内での情報源 2 海外における情報源 3 情報ツールとしてのTwitter
カート
カートに商品は入っていません。