Slide 1

Slide 1 text

NFT つくってみた
 Smith


Slide 2

Slide 2 text

自己紹介
 図々しくも本日二回目の登壇なので割愛します。


Slide 3

Slide 3 text

この LT で伝えたいこと
 ● NFT つくるの簡単だよ!ってこと


Slide 4

Slide 4 text

NFT とは (ざっくり)
 ● Non Fungible Token の略、「代替不可なトークン」という意味
 ● 世の中では NFT アートとかが流行っている
 ● 高額取引されたりしてて、胡散臭いような夢があるような
 ● NFT アートは所有権を証明できる!って言ってる
 ● (けど、アートの複製はできるんだなぁ)


Slide 5

Slide 5 text

NFT 開発するのに必要な技術
 この本を半分読めば出来ます →


Slide 6

Slide 6 text

開発のしかた


Slide 7

Slide 7 text

必要なもの
 ● geth (ローカルネットワーク)
 ● truffle (スマートコントラクト開発環境一式)
 やること
 1. スマートコントラクトを書く
 2. テストを書く
 3. フロントから操作する UI を作る (本質的じゃない割に地味にめんどい)
 4. 実際のブロックチェーンウォレットを使ってテスト
 5. デプロイ
 開発のしかた


Slide 8

Slide 8 text

開発のしかた: スマートコントラクトを書く
 スマートコントラクトとは
 ● ブロックチェーン上で動作するプログラムのこと
 ● スマートコントラクトを介して誰が何をやったかは全て記録される
 ● 中身は簡単なクラス定義みたいなものなのでビビらなくて OK
 スマートコントラクトの作り方
 ● スマートコントラクトには ERC と呼ばれる規格がある
 ● NFT 用の規格もあり、 ERC 721 とか ERC 1155 が NFT を取り扱う
 ● オープンソースで ERC 721 や ERC 1155 の基本実装が提供されている
 ● 簡単なものなら基本実装をラップするだけで OK


Slide 9

Slide 9 text

必要なもの
 ● (truffle に組み込まれています)
 テストの書き方
 ● JavaScript のエコシステムが使える 
 ● デフォルトで mocha
 ● つまり、テスト用に新たな言語やライブラリを覚え なくもよい
 ● スマートコントラクト独特の要素さえ押さえれば OK!
 ● テスト実行も truffle test と叩くだけ、楽 ちん!
 開発のしかた: テストを書く


Slide 10

Slide 10 text

必要なもの
 ● web3.js
 やること
 1. 動作確認したい機能の UI を作る
 2. 動作確認テスト
 mocha での記法とはまた若干違ってたりする ので、もっとも煩わしいパート。
 開発のしかた: フロントから操作する UI を作る


Slide 11

Slide 11 text

必要なもの
 ● Metamask
 ● ウォレットアカウント
 やること
 1. 作った Web UI をポチポチする
 2. ガス代もちょっと確認する
 開発のしかた: 実際のウォレットを使ってテスト


Slide 12

Slide 12 text

必要なもの
 ● Infura アカウント
 ● ウォレットアカウント
 ● ガス代
 やること
 1. Infura という DApps デプロイ用サービ スを利用 (無料)
 2. Infura を介してテストネットやメインネッ トにデプロイ
 3. これも truffle 設定でできる
 開発のしかた: デプロイ


Slide 13

Slide 13 text

気をつけたこと


Slide 14

Slide 14 text

気をつけたこと
 特定のアカウントしか NFT の発行・削除ができないように
 ● NFT 発行 API もスマートコントラクトから操作する
 ● これをスマートコントラクトをデプロイしたアカウントのみに制限
 NFT の持ち主にしか所有権の移動ができないように
 ● 発行した NFT ID 毎に所有者をマップし、所有権を確認するようにした
 税制リスク
 ● リスクが図りきれないので、Smith 個人で勝手に作って勝手に配る体裁


Slide 15

Slide 15 text

気をつけたこと
 OSS 化
 ● ソースコードはスマートコントラクトのデプロイ後に開示する
 ● (開示されたものは複製してデプロイしても良いです)
 ● 第三者が勝手に一番最初にデプロイしたら、なんかやだから
 デプロイ一発勝負
 ● コード回収してデプロイしなおすと、スマートコントラクトのアドレスが変わります
 ● つまりウォレットで参照するアドレスが変わっちゃう!


Slide 16

Slide 16 text

困ってること


Slide 17

Slide 17 text

ビューアがない!
 ● 記念アイコンの URL を知るすべを用意しきれていない・・・!
 ● 画像すら見れない NFT ・・・!
 ● abi は公開するので自分で URL 引いて!
 ガス代高ぇ・・・!
 ● ガス代高ぇ・・・!
 困ってること


Slide 18

Slide 18 text

ガス代高ぇ・・・!


Slide 19

Slide 19 text

● 24.5 Gwei / gas (実測値)
 ○ = 0.0000000245 ETH / gas
 ● スマートコントラクトのデプロイに必要なガス
 ○ 3160899 ガス
 ○ = 0.0774420255 ETH
 ● 30万円 / ETH くらい (2022/03/12時点)
 ● つまり、デプロイだけで 2.3万円・・・!
 
 この勉強会、予算ないんです・・・!
 ガス代高ぇ・・・!


Slide 20

Slide 20 text

「NFTは出す・・・!
 
  出すが・・・・」


Slide 21

Slide 21 text

「今回はまだネットワークの
  指定まではしていない
 
  そのことを
  どうか諸君らも思い出していただきたい」


Slide 22

Slide 22 text

「つまり・・・
 
  我々がその気になれば
  NFT の受け渡しは」


Slide 23

Slide 23 text

「テストネットでということも
 
  可能だろう・・・
  ということ・・・!」


Slide 24

Slide 24 text

この LT で伝えたいこと
 ● NFT つくるの簡単だよ!ってこと


Slide 25

Slide 25 text

● NFT つくるの簡単だよ!ってこと
 ● ガス代高ぇ!
 ● ガス代高ぇ!
 ● ガス代高ぇ!
 ● ガス代高ぇ!
 ● ガス代高ぇ!
 ● ガス代高ぇ!
 この LT で伝えたいこと


Slide 26

Slide 26 text

(ガス代を抑えるソリューションもありますが
 イベントに間に合いませんでした、すいません!!!)
 この LT で伝えたいこと


Slide 27

Slide 27 text

ということで、
 Görli テストネットで
 NFT 配ります!(涙)


Slide 28

Slide 28 text

テストネットでもいいよって方は
 connpass 記載のアンケートに
 アドレスを記入する項目があるので
 回答おねがいします!


Slide 29

Slide 29 text

まとめ
 ● スマートコントラクトの開発やデプロイの開発環境は潤沢に整ってる
 ● とはいえ、独特の気をつけなきゃいけないポイントがある
 ○ 基本、非同期処理
 ○ セキュリティ周り
 ● ガス代高ぇ・・・!
 ● ガス代高ぇ・・・!
 ● ガス代高ぇ・・・!