内容紹介
NFTを仕組みとコードで知り尽くす!
NFTは、ブロックチェーン技術における最大のトレンドです。唯一無二のデジタルトークンとして、アートはもちろん、メタバースの不動産、チケット機能など、様々な応用があります。本書は、NFTについて基礎から応用まで深く学べる、実践的なガイドです。暗号通貨の歴史やブロックチェーンの基本概念、そしてスマートコントラクト設計やデプロイ方法など、理論と実践の双方を広くカバーします。すぐにデプロイできる多数のサンプルも紹介、NFTやDeFiの開発に興味ある方は必読の一冊です。この本を手に取って、NFTの深い世界に飛び込んでみてください!
このような方におすすめ
ブロックチェーン関連の技術者
デジタルアート、ゲーム、デジタルデータ販売に関連する技術者
目次
主要目次
はじめに
第1章 NFTの全体像
第2章 NFTを体験する
第3章 NFTを支える技術
第4章 最初のトークン:Hello NFT
第5章 スマートコントラクト開発に役立つ知識
第6章 NFTの規格ERC-721について
第7章 IPFS上のアートNFT
第8章 チケットトークンの実装
第9章 ジェネラティブNFTの実装
付録
索引
詳細目次
はじめに
第1章 NFTの全体像
1.1 NFTとは
1.2 NFTが誕生するまで
1.2.1 暗号通貨の歴史
1.2.2 NFTの歴史
1.3 NFTの様々な事例
1.4 Fungibility?代替可能性とは
1.5 ブロックチェーンとNFT
1.6 NFTのエコシステム
第2章 NFTを体験する
2.1 ウォレットの準備
2.2 ETHの購入と出庫
2.2.1 暗号資産取引所での口座開設
2.2.2 ETHの購入
2.2.3 ウォレットへの出庫
2.3 NFTの購入
2.4 NFTの発行と販売.
第3章 NFTを支える技術
3.1 ブロックチェーンの設計思想と仕組み
3.1.1 分散データベース
3.1.2 合意形成アルゴリズム
3.1.3 Proof of Workなどによるブロック作成
3.1.4 ハッシュチェーンと最長チェーンルール
3.1.5 複数の技術に支えられるブロックチェーン
3.2 BitcoinとEthereum
3.3 ブロックチェーンノードとNode as a Service
3.4 メインネットとテストネット
3.5 ブロックチェーンエクスプローラ
3.6.1 スマートコントラクトとは
3.6.2 ブロックチェーン上のスマートコントラクト
3.6.3 スマートコントラクト設計で意識すべき事項
3.7 Ethereum上のスマートコントラクト
3.7.1 DappsとDeFi
3.7.2 EVM
3.7.3 ガス
3.7.4 標準化された規格ERC
3.7.5 NFTの規格:ERC-721とERC-1155
3.8 コンテンツのホスティング
3.9 Dappsフロントエンドとweb3.js
第4章 最初のトークン:Hello NFT
4.1 事前準備
4.1.1 開発環境の整備
4.1.2 Infuraアカウントの作成
4.1.3 テスト用のウォレットの作成
4.2 NFTコードの作成
4.3 ローカル環境でのテスト
4.3.1 開発用ブロックチェーンの起動
4.3.2 初めてのブロックチェーンへのデプロイ
4.3.3 ウォレットからの動作確認
4.3.4 MetaMaskのリセット
4.4 パブリックブロックチェーンへのデプロイ
4.4.1 テストコインの入手
4.4.2 テストネットへのデプロイ設定
4.4.3 テストネットへのデプロイ
4.5 フロントエンドの実行
4.6 コントラクトコードのアップロード
第5章 スマートコントラクト開発に役立つ知識
5.1 Solidity言語について
5.1.1 EVMで実行される手続き型言語
5.1.2 コントラクト中心のオブジェクト指向
5.1.3 静的な型付けと、実行時の型情報の欠如
5.1.4 関数とABI
5.1.5 ブロックチェーン固有の状態変数や関数
5.1.6 データの記憶域の指定
5.1.7 関数の状態変更修飾子
5.1.8 イベント
5.1.9 その他の主な構文
5.2 Ownableによる管理用の関数の実装
5.3 アップグレード可能なコントラクト
5.3.1 プロキシコントラクト
5.3.2 アップグレード可能なコントラクトの開発
5.4 ガスの節約
5.4.1 ガス消費量の測定
5.4.2 コンパイラ最適化の有効化
5.4.3 変数定義の順序の工夫
5.4.4 構造体の活用
5.4.5 複数要素からなるデータの取り扱い
5.4.6 アルゴリズムの選択
5.4.7 データの所在の適正な指定
5.4.8 利用が終わったストレージ領域の解放
5.4.9 適切なガス代の選択
5.5 パブリックブロックチェーンへのデプロイ
5.5.1 開発時における注意事項
5.5.2 デプロイ直前の注意事項
5.5.3 デプロイ時のベストプラクティス
5.5.4 デプロイ異常時の即応方法
5.5.5 デプロイの再試行
5.6 テストの記述
5.6.1 Truffleによる既定のテスト
5.6.2 OpenZeppelinテスト環境
5.7 TypeScriptを用いた開発
5.7.1 TypeChainによる型情報の生成
5.7.2 TypeScriptによるコードの記述
5.7.3 webpackによるビルド
第6章 NFTの規格ERC-721について
6.1 実装すべき関数
6.2 2種類の移転関数
6.3 2種類の委任
6.4 実装すべきイベント1
6.5 トークンのメタデータについて
6.6 トークンを列挙できるようにするERC721Enumerable
6.7 発展的な内容
6.7.1 詳細な情報
6.7.2 ERC-1155
第7章 IPFS上のアートNFT
7.1 IPFSについて
7.2 Pinataへのアップロード
7.3 コントラクトの作成
7.4 トークンの発行
7.5 NFT売買サービスでの確認
第8章 チケットトークンの実装
8.1 設計について
8.1.1 要件
8.1.2 認証処理について
8.2 チケットコントラクトの開発
8.2.1 ベースとなるコントラクトの作成
8.2.2 価格設定の保持
8.2.3 販売および払い戻しの処理
8.2.4 移転の許可
8.2.5 コントラクトのビルド
8.3 フロントエンドの開発
8.3.1 コントラクトの型情報の定義
8.3.2 コントラクトに関する情報の定義
8.3.3 ユーザーインタフェースの骨子
8.3.4 ウォレット接続とコントラクトインスタンス作成
8.3.5 コントラクトからの情報の読み込み
8.3.6 チケットの購入
8.3.7 ログイン認証のためのウォレットによる署名
8.3.8 ビルド.
8.4 バックエンドの開発
8.4.1 ExpressによるWebサーバーの実行
8.4.2 署名検証とトークン所持の判断
8.4.3 サーバーの実行
8.5 動作の確認
8.5.1 管理者側の価格の設定
8.5.2 ユーザーページでのチケットの購入とログイン
8.5.3 メッセージまたは署名の改竄
8.5.4 チケットの払い戻しとその後のログイン試行
8.6 発展的な検討事項
8.6.1 メッセージの改変やリプレイ攻撃への対策
8.6.2 チケットの仕様に関する機能追加
8.6.3 売上の引き出しに関して
第9章 ジェネラティブNFTの実装
9.1 設計について
9.1.1 要件..
9.1.2 コンテンツとメタデータの仕様の決定
9.2 コントラクトの開発
9.2.1 ベースとなるコントラクトの作成
9.2.2 ユーザーからのトークン発行要求の受付
9.2.3 管理者による承認・却下またはユーザーのキャンセル
9.2.4 タイムスタンプの保存
9.2.5 販売ステータスと価格の管理
9.2.6 コントラクトのビルド
9.3 メタデータ生成ロジックとバックエンドの準備
9.3.1 SVGの描画とメタデータの生成
9.3.2 IPFSのCIDの生成
9.3.3 バックエンドの記述
9.3.4 ビルドおよび実行
9.4 フロントエンドの準備
9.4.1 コードの準備
9.4.2 ビルドおよびHTTPサーバーの起動
9.5 動作の確認
9.5.1 販売の開始とトークンの発行
9.5.2 平常でない場合のテスト
9.5.3 IPFSのコンテンツの確認
9.5.4 IPFSでのトラブルシューティング
9.5.5 IPFSピニングサービスで代用する
9.6 テストネットでの実験
9.6.1 フロントエンドのIPFSへのデプロイ
9.6.2 発行したトークンのOpenSeaでの確認
付録
索引
続きを見る