msykn

[Ethereum]NFTを発行できるDapp

nft

概要

NFTを発行してOpenSeaに出品できるDappを開発しました。
メインネットで動かせるほどのEhterを持っていないので、テストネット(Rinkeby)で動かしています。

できること

1.「ファイルを選択」

ファイルを選択する。

2.「ファイルをアップロード」

選択したファイルをNFT.Storage(分散型ファイルストレージ)にアップロードする。
成功するとmetadataが返ってくる。

3.「MINT」

NFT.Storageから返ってきたmetadataを使ってmint(NFTを発行)する。
ERC721に準拠したトークンであれば、自動的にOpenSeaに公開される。
nft4

作ってみた感想

png等のデジタルアートは、Ethereum上に保存されるのではなく、今回のように別のストレージ等に保存される事が一般的のよう(オフチェーン)。
この場合、ERC721トークンがデータとして持っているのは、「デジタルアートそのもの」ではなく「デジタルアートの置き場所」。
これをアナログアートに置き換えると、「アートの保管場所(ex.美術館,倉庫...)の住所が掲載されている証明書」と考えられる。
つまり厳密には「NFTアート」ではなく、「アートのアドレス付きNFT」が日本語としては正しいのではないだろうか。
ストレージからデジタルアートを削除する事もできるし、そうすると参照先を失ったトークンが残るのみ。
OpenSeaではアートそのものを取引しているのではなく、アートの所有権を取引している(?)

今回はEthereumを使用したが、Symbolブロックチェーンを使うと、デジタルアート自体もブロックチェーン上に保存できる(フルオンチェーン)らしいので興味あり。

使用した技術

Ethereum(スマートコントラクトを構築するためのプラットフォーム)
Metamask(Ethereum系Cryptoウォレット)
Solidity(スマートコントラクト開発言語)
Hardhat(スマートコントラクト開発フレームワーク)
OpenZeppelin(スマートコントラクトを作成するためのライブラリ)
Alchemy(インターネットからEthereumネットワークに接続するためのAPI)
Ethers(アプリからEthereumネットワークに接続するためのライブラリ)
Next.js(フロントエンドフレームワーク)
NFT.Storage(分散型ファイルストレージ)
OpenSea(NFTアートマーケット)