Solana上でNFTを作ってみて、ブロックチェーンのわからないことを整理していく
ブロックチェーン何もわからないマンなので、とりあえず何かしら作ってみてちょっとずつ理解してみた記事です。
用語を整理する
Solana
イーサリアムと同じブロックチェーンの理解でいます。
Metaplex
Solana上でNFTを発行するために必要なツールになります。
arweave
NFTを発行するのに使用した画像を保存するストレージになります。
phantom
Solana 上でNFT 扱う際に使用するウォレットを指します。
またchoromeの拡張も行うことができ、このウォレットの中身を確認することでNFTを受け取れているかを確認することができます。
NFTを発行したときに気になったこと
環境構築含め、基本下記ドキュメントをベースに進めました。 その中でNFTを発行したときに調べたことやつまづいたことを書いていきたいと思います。
ブロックチェーンにデータを書き込むにはコストがかかる
ブロックチェーンを触っている方なら当たり前だとは思うのですが、ブロックチェーンへの書き込みにはコストが発生します。solanaのdevnetの環境でテストを行う場合は、下記コマンドでSOL(solanaの仮想通貨)を自分に与えることができます。
$ solana airdrop 2
Send and Receive Tokens | Solana Docs
This page decribes how to receive and send SOL tokens using the command line tools with a command line wallet such as a…docs.solana.com
使用するストレージ
solanaでNFTを扱う場合は、arweaveが主流のようです(自分が調べた限り記事が多かったです)。arweaveはデータを永続的に保存できるように設計されており、かつ分散型になっています。metaplexからAWS S3にも保存できるみたいですが、推奨はしていないみたいです。理由は、AWS側で勝手にデータを削除できるからのようです。つまり分散型ではないからということなんでしょうね。
ちなみにarweaveの設定先は、configで設定することができます。
{
...
"storage": "arweave",
...
}
metaplex uploadコマンドは何をやっているか
主に以下のことをやっています。下記コマンドが成功したタイミングで、solanaのブロックチェーン上で取引を確認することができるようになっています。
- Arweave に NFT をアップロードする
- Candy Machine の 初期化を行う
ts-node ~/metaplex/js/packages/cli/src/candy-machine-v2-cli.ts upload \
-e devnet \
-k ~/.config/solana/devnet.json \
-cp config.json \
-c example \
./assets
Phantomウォレットをブラウザにインストールしているかの確認
web2.0の仕組みで、ユーザーのウォレット情報(public key)を取得するために、windowオブジェクト経由で取得することが可能です。isPhantomフラグを使えば、ウォレットが存在しているかどうかがすぐわかるので、web2.0のサービスと組み合わせる場合は非常に便利だなと感じました。
const isPhantomInstalled = window.solana && window.solana.isPhantom
便利な jsパッケージ
metaplexのドキュメントでも書かれていますが、jsのパッケージが存在し、これを使用すればそこまで難しくなく実装することが可能になっています。特にjs周りは非常に整備されてきているなと感じました。
NFTってなんだっけ
「100% 同じデジタル・データなのに、どちらが本物かを証明できるインフラ」が NFT なのです。
https://qiita.com/KEINOS/items/c92268386d265042ea16 より引用
NFTってなんだっけ?となったときに下記記事が非常によくまとまって、わかりやすかったです。
Discussion