Upgrade to Pro — share decks privately, control downloads, hide ads and more …

NFT つくってみた

4e59283eae97be500d538af3bf036c23?s=47 Smith
March 13, 2022

NFT つくってみた

2022/03/12 に実施された Drecom SRE Sunday Vol.2 での LT 登壇資料です。

4e59283eae97be500d538af3bf036c23?s=128

Smith

March 13, 2022
Tweet

More Decks by Smith

Other Decks in Technology

Transcript

  1. NFT つくってみた
 Smith


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


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


  4. NFT とは (ざっくり)
 • Non Fungible Token の略、「代替不可なトークン」という意味
 • 世の中では

    NFT アートとかが流行っている
 • 高額取引されたりしてて、胡散臭いような夢があるような
 • NFT アートは所有権を証明できる!って言ってる
 • (けど、アートの複製はできるんだなぁ)

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


  6. 開発のしかた


  7. 必要なもの
 • geth (ローカルネットワーク)
 • truffle (スマートコントラクト開発環境一式)
 やること
 1. スマートコントラクトを書く


    2. テストを書く
 3. フロントから操作する UI を作る (本質的じゃない割に地味にめんどい)
 4. 実際のブロックチェーンウォレットを使ってテスト
 5. デプロイ
 開発のしかた

  8. 開発のしかた: スマートコントラクトを書く
 スマートコントラクトとは
 • ブロックチェーン上で動作するプログラムのこと
 • スマートコントラクトを介して誰が何をやったかは全て記録される
 • 中身は簡単なクラス定義みたいなものなのでビビらなくて OK


    スマートコントラクトの作り方
 • スマートコントラクトには ERC と呼ばれる規格がある
 • NFT 用の規格もあり、 ERC 721 とか ERC 1155 が NFT を取り扱う
 • オープンソースで ERC 721 や ERC 1155 の基本実装が提供されている
 • 簡単なものなら基本実装をラップするだけで OK

  9. 必要なもの
 • (truffle に組み込まれています)
 テストの書き方
 • JavaScript のエコシステムが使える 
 •

    デフォルトで mocha
 • つまり、テスト用に新たな言語やライブラリを覚え なくもよい
 • スマートコントラクト独特の要素さえ押さえれば OK!
 • テスト実行も truffle test と叩くだけ、楽 ちん!
 開発のしかた: テストを書く

  10. 必要なもの
 • web3.js
 やること
 1. 動作確認したい機能の UI を作る
 2. 動作確認テスト


    mocha での記法とはまた若干違ってたりする ので、もっとも煩わしいパート。
 開発のしかた: フロントから操作する UI を作る

  11. 必要なもの
 • Metamask
 • ウォレットアカウント
 やること
 1. 作った Web UI

    をポチポチする
 2. ガス代もちょっと確認する
 開発のしかた: 実際のウォレットを使ってテスト

  12. 必要なもの
 • Infura アカウント
 • ウォレットアカウント
 • ガス代
 やること
 1.

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

  13. 気をつけたこと


  14. 気をつけたこと
 特定のアカウントしか NFT の発行・削除ができないように
 • NFT 発行 API もスマートコントラクトから操作する
 •

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

  15. 気をつけたこと
 OSS 化
 • ソースコードはスマートコントラクトのデプロイ後に開示する
 • (開示されたものは複製してデプロイしても良いです)
 • 第三者が勝手に一番最初にデプロイしたら、なんかやだから
 デプロイ一発勝負


    • コード回収してデプロイしなおすと、スマートコントラクトのアドレスが変わります
 • つまりウォレットで参照するアドレスが変わっちゃう!

  16. 困ってること


  17. ビューアがない!
 • 記念アイコンの URL を知るすべを用意しきれていない・・・!
 • 画像すら見れない NFT ・・・!
 •

    abi は公開するので自分で URL 引いて!
 ガス代高ぇ・・・!
 • ガス代高ぇ・・・!
 困ってること

  18. ガス代高ぇ・・・!


  19. • 24.5 Gwei / gas (実測値)
 ◦ = 0.0000000245 ETH

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

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


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


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


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


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


  25. • NFT つくるの簡単だよ!ってこと
 • ガス代高ぇ!
 • ガス代高ぇ!
 • ガス代高ぇ!
 •

    ガス代高ぇ!
 • ガス代高ぇ!
 • ガス代高ぇ!
 この LT で伝えたいこと

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


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


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


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

    ガス代高ぇ・・・!
 • ガス代高ぇ・・・!
 • ガス代高ぇ・・・!