Skip to content

Upgradable NFT — スマート コントラクトを更新できるようにした NFT 実装のサンプル コード

License

Notifications You must be signed in to change notification settings

takeiyuto/upgradable-nft

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Upgradable NFT

スマート コントラクトを更新できるようにした NFT 実装のサンプル コードです。@openzeppelin/contracts-upgradeable パッケージの ERC721EnumerableUpgradeable を利用しています。

動作方法

  1. 適切なディレクトリでこのレポジトリをクローンし、ライブラリをダウンロードします。
git clone https://github.com/takeiyuto/upgradable-nft.git
cd upgradable-nft
yarn
  1. コンパイルします。
yarn truffle compile
  1. 新しいターミナルを開いて、同じディレクトリから、ローカル環境でテスト用ブロックチェーン Ganache を起動します。このとき、以下の <MNEMONIC> の箇所を、テストに用いるウォレット アカウントのニーモニックで置き換えて実行します。
yarn ganache -m "<MNEMONIC>"
  1. 手順 2. のターミナルに戻って、デプロイします。プロキシ コントラクトが 0x... にデプロイされました。 という表示によって、デプロイされたプロキシ コントラクトのアドレスが表示されます。また最後に あとでこの行をコメントアウトします というエラー表示が出て終了します。
yarn truffle migrate
  1. さらに新しいターミナルを開いて、適切なディレクトリでフロントエンドのレポジトリをクローンし、ライブラリをダウンロードします。もし既にクローン済みである場合は、git checkout upgradable コマンドでブランチを切り替えてください。
git clone -b upgradable https://github.com/takeiyuto/hello-nft-web.git
cd hello-nft-web
yarn
  1. 手順 5. と同じターミナル上で、ローカル Web サーバを起動して、フロントエンドを開始します。
yarn http-server .
  1. MetaMask などのソフトウェア ウォレットが入ったブラウザで、http://127.0.0.1:8080/ を開きます。フロントエンドの表示に従って、手順 4. で確認したプロキシ コントラクトのアドレスを入力すると、コントラクトのバージョンが 1 であることを確認できます。

  2. コントラクトをアップグレードするために、migrations フォルダ内の 3_version_2_deploy.js の、以下の行をコメントアウトします。

throw "あとでこの行をコメントアウトします";
  1. 手順 4. と同じターミナルに戻り、デプロイします。アップグレードが完了しました。 という表示が出ます。
yarn truffle migrate
  1. 手順 7. と同じブラウザに戻ります。すると、同一のプロキシ アドレスを入力したまま、コントラクトのバージョンが 2 であることを確認できます。手順 7. の前後で NFT を発行していれば、それらも引き継がれていることが確認できます。

  2. Ganache およびローカル Web サーバは、それぞれ Ctrl + C で終了できます。

npmyarn

yarnnpm と同様、Node.js 向けのパッケージ マネージャです。次のコマンドで、システム全体で使えるように、インストールできます (macOS や Linux では、システム ディレクトリに書き込む権限を得るため、先頭に sudo が必要になるかもしれません)。

npm install -g yarn

yarn を使わない場合、上記の手順を次のように読み替えると、npm でも同じように実行できます。

  • 引数のない単独の yarn コマンドは npm install にする。
  • それ以外の yarn コマンド (例えば yarn truffle ... など) は、yarnnpx に読み替える。

ライセンス表示

このサンプル コードは、MIT Licenseで提供しています。

参照

徹底解説 NFTの理論と実践の第5章3節を参照してください。本書の Web サイトも参考にしてください。

About

Upgradable NFT — スマート コントラクトを更新できるようにした NFT 実装のサンプル コード

Topics

Resources

License

Stars

Watchers

Forks