【補足解説】NFTを独自mintする方法

コントラクトのdeployからmintまでの流れは、こちらの方の素晴らしい記事を参考にさせて頂きました。
https://zenn.dev/mkurita/articles/be1021226887fd

で、当記事ではざっくりと全体の流れをおさらい含め、NFT化したい画像の準備やメタデータの準備など補足解説をしていきます。

大まかな流れとしてはこんな感じです。

【1】NFT化する画像を用意してipfsへアップロード

【2】対応するjsonファイルを用意してipfsへアップロード

【3】ERC721でmintするためのコントラクトを準備

【4】deployする

【5】mintする

【6】nft化完了!

【1】NFT化する画像を用意してipfsへアップロード

0.png、1.png…と連番で画像を準備し、1つのフォルダにまとめてください。(フォルダ名は何でもOK)

その後、ピニャータへフォルダごとアップロード。登録してない方は登録しましょう。
https://www.pinata.cloud/

詳しい使い方は素晴らしい方達が解説してくれてるので、ググってみてください。

アップロードしたら、アップロードしたURLをコピーしてください。【2】で使います。

【2】対応するjsonファイルを用意してipfsへアップロード

jsonファイルのつくり方はOpenSea公式を参照
https://docs.opensea.io/docs/metadata-standards

{
  "description": "{画像の説明文を入れる}", 
  "external_url": "{適当にURLを入れる(TwitterのアカウントURLとか)}", 
  "image": "{ここにピニャータにアップロードした画像フォルダURLを貼り付ける(末尾スラッシュを忘れずに)}", 
  "name": "{画像名を入れる}"
}

0、1…(拡張子はつけない)形でjsonファイルを用意し、1つのフォルダにまとめてください。(フォルダ名は何でもOK)

アップロードしたら、アップロードしたURLをコピーしてください。【3】で使います。

【3】ERC721でmintするためのコントラクトを準備

https://wizard.openzeppelin.com/
こちらで簡単にコントラクトを作ることができます。

Base URIに【2】でコピーしたjsonファイルの入ったフォルダのURLを貼り付けます。

その後、Open in Remixをクリック。Remixという統合開発環境が開きます。

※Remixでテストネットワークへのdeployとmintができちゃいます。


で、開いたら、コンパイルをクリック。


緑のチェックが付いている下のメニューを開いて、

ENVIRONMENTをInjected Provider -Metamaskを選択。

*Metamaskの登録をしていない方は事前にしてください。
*ネットワークをRinkbyに設定してください。OpenSeaのテストネットワークがRinkbyを採用しているため。
*Rinkbyのテスト用etherを持っていない方は事前に貰っておいてください(テスト用etherの貰い方はこちら

CONTRACTでMyTokenを選択。

【4】deployする

黄色いDeployボタンをクリックするとDeployされる。

【5】mintする


Deployボタンの下らへんに「Deployed Contracts」というのがある。

そこにDeployされたコントラクト情報が表示される。

ここでsafeMintというメソッドに自身のウォレットアドレスを引数として渡してから実行すると、mintされる。

という感じでした!

【6】nft化完了!

本当にmintされたのか確認するにはOpenSeaのテストサイトで、自身のCollectedをみると確認できます。
https://testnets.opensea.io/

画像のアップロードとメタデータのアップロードに関しての情報があまりなかったので、今回まとめてみました。

【解決】curlでPOSTする際にwindows環境だと文字化けする

たとえばこんなコードがあったとする。

curl -X POST -H "Content-Type: application/json" -d '{"id": 4, "title": "テスト"}' "http://localhost:3000/test" -v

MacとかLINUX環境では普通にPOSTできるみたいだが、Windowsだと出来ない。

“の前に\をつけてエスケープすると動くなんていう記事もありますが、動きますが文字化けします。

なのでこのままでは正常に書き込みできません。

結論どうするかというと、外部ファイルを作成してそれをサーバーへ送ります。

{“id”: 4, “title”: “テスト”}

post.json(名前はなんでもいいですが)にUTF-8で書き込み。

で、こんなコードを書くと文字化けせずに書き込みができます。

curl -X POST -H "Content-Type: application/json" -d "@post.json" "http://localhost:3000/test" -v

【Truffle】Xserver(エックスサーバー)でTruffleの環境構築をしてみる

Xserverでスマートコントラクトをデプロイしてみたい!と思ったので、試してみた。

色々苦戦したけど、何とか出来たのでシェアします。ポイントはnode.jsのバージョンです。
12系じゃないとtruffleがインストールできない。

まずはエックスサーバーへTeratermなどでSSH接続しましょう。

接続方法が分からない方はこちら↓
https://www.xserver.ne.jp/manual/man_server_ssh_connect_tera.php

次にnode.jsを入れます。こちらブログを参考にすると分かりやすいので、説明は割愛します。
https://hapicode.com/server/xserver-nodejs.html

nvmを以下サイトの手順に沿ってインストール
https://heynode.com/tutorial/install-nodejs-locally-nvm/

バージョンを参照
nvm ls-remote

12系じゃないとtruffleがインストールできなかったのでインストール。
nvm install 12.22.11

プロジェクトフォルダへ移動してからこのコマンド
npm init -y

truffleをインストール
nvm install -g truffle

(プロジェクトフォルダ直下で)以下のコマンド
truffle init

これでXserverでtruffleが使える環境が整いました。

【AWS】truffleがインストール出来ないのでnode.jsのバージョンを切り替え解決

AWS(EC2)にtruffleを入れたかったのですが、ERR code1が出てしまいインストールできず。

よくよく見ると、node.js公式ではv12を使うように記載がありましたので、v12の最終版である12.22.11をインストールすることにしました。
https://trufflesuite.com/tutorial/index.html#background

nvm ls-remote

nvm install 12.22.11

node -v

解説

nvm ls-remoteコマンドでnodejsのバージョン一覧が出てきます。(確認)

nvm install xx.xx.xxで指定バージョンをインストールできます。

node -vで指定したバージョンになっていればOK。

その後はtruffleをインストール⇒起動。

npm install -g truffle

truffle init

【AWS】teratermでSSH接続できない(ホストへ接続できません):2022年

AWSでWebサーバーを構築してみたのですが、teratermでSSH接続できない…!というところでハマってしまったので原因と解決策をメモしておきます。

結論からいうと、AWS側の設定が原因でした。

原因

・サブネットにパブリックサブネットを割り当てていない
・自動割り当てパブリックIPが有効になっていない

この辺り、デフォルトだと割り当てられていなかったり、無効になっているので注意が必要。

ちなみにEC2です。

Solidity入門基礎編【6】 – CryptoZombiesで学習 –

第5回に引き続きSolidity入門基礎編を進めていきます。

今回で入門基礎編は最後になります!

今回の内容は、フロントエンドとWeb3.js。web3.jsというライブラリを使ってフロントエンドからコントラクトを実行する流れを学んでいきます。

前回のはこちら。
Solidity入門基礎編【5】 – CryptoZombiesで学習 –

初めての方はこちらから。
Solidity入門基礎編【1】 – CryptoZombiesで学習 –

始めるまえにこちらへアクセスしてください。
https://cryptozombies.io/jp/lesson/6/chapter/1

続きを読む

Solidity入門基礎編【5】 – CryptoZombiesで学習 –

第4回に引き続きSolidity入門基礎編を進めていきます。

今回はERC721についての学習。

ERC721は話題になってるNFT(NON-FUNGIBLE TOKEN)のトークン規格ですね。

前回のはこちら。
Solidity入門基礎編【4】 – CryptoZombiesで学習 –

初めての方はこちらから。
Solidity入門基礎編【1】 – CryptoZombiesで学習 –

始めるまえにこちらへアクセスしてください。
https://cryptozombies.io/jp/lesson/5/chapter/1

続きを読む