Cardano NFT(CNFT)をミントするWebアプリケーションです。
- Cardanoウォレット接続(Nami、Eternl、Flint、Yoroi等)
- NFTミント機能
- 画像アップロード
- メタデータ設定
- ローカルIPFSサーバーへのアップロード機能
- アップロード進捗表示
npm installローカルKubo RPCサーバーを使用する場合は、Kubo(IPFS)サーバーを起動してください。
-
Kuboをインストール(まだインストールしていない場合)
# macOS (Homebrew) brew install ipfs # Linux (snap) snap install ipfs # または公式サイトから: https://ipfs.io/docs/install/ # または https://github.com/ipfs/kubo/releases からダウンロード
-
Kuboを初期化(初回のみ)
ipfs init
-
Kubo RPCサーバーを起動
ipfs daemon
デフォルトで以下のポートで起動します:
- APIサーバー:
http://localhost:5001(Kubo RPC API) - ゲートウェイ:
http://localhost:8080 - スワーム:
4001
- APIサーバー:
-
環境変数(オプション)
.env.localファイルを作成して、Kubo RPCサーバーのURLを設定できます:IPFS_URL=http://localhost:5001 NEXT_PUBLIC_IPFS_GATEWAY=https://ipfs.io/ipfs/サーバーサイドで使用される環境変数:
IPFS_URL: サーバーサイドでのKubo RPCサーバーのURL(デフォルト:http://localhost:5001)
クライアントサイドで使用される環境変数:
NEXT_PUBLIC_IPFS_URL: クライアントから送信されるデフォルトURL
注意:
- Kubo RPC APIはサーバーサイドで呼び出されます(クライアントから直接呼び出しません)
- デフォルトでローカルホストのみを許可しています
- リモートサーバーを使用する場合は、サーバー環境変数で設定してください
npm run devブラウザで http://localhost:3000 を開いてください。
- Node.js 18以上
- Cardanoウォレット拡張機能(Nami、Eternl、Flint、Yoroiなど)
- IPFSサーバー(ローカルIPFSを使用する場合)
このアプリケーションは、NFTの画像とメタデータをローカルKubo RPCサーバーにアップロードする機能を提供します。
サーバーサイド実装: Kubo RPCの呼び出しはすべてサーバーサイド(Next.js APIルート)で実行されます。これにより、セキュリティが向上し、CORSの問題を回避できます。
- APIルート:
/api/ipfs/upload- ファイルアップロード/api/ipfs/upload-metadata- メタデータアップロード/api/ipfs/test-connection- 接続テスト
- Kubo RPCサーバーを起動(上記のセットアップを参照)
- アプリケーションの「Kubo RPCサーバーURL」フィールドにサーバーのURLを入力
- デフォルト:
http://localhost:5001 - このURLはサーバーサイドAPIに渡されます
- デフォルト:
- 「接続テスト」ボタンで接続を確認(オプション)
- NFTをミントすると、クライアントからAPIルート経由でサーバーサイドのKubo RPCが呼び出され、自動的に画像とメタデータがIPFSにアップロードされます
- アップロード後、IPFS CID(Content Identifier)が表示されます
- サーバーサイド実行: すべてのKubo RPC呼び出しはサーバーサイドで実行されます
- 自動ピン: アップロードしたファイルは自動的にピンされます(削除されません)
- エラーハンドリング: 接続エラーやアップロード失敗時に適切なエラーメッセージを表示
- 接続テスト: 接続ボタンでKubo RPCサーバーの状態を確認
- バージョン表示: 接続成功時にKuboのバージョンを表示
- 画像IPFS CID: アップロードされた画像のハッシュ値
- メタデータIPFS CID: アップロードされたメタデータのハッシュ値
これらのCIDは、NFTメタデータに含まれ、IPFSネットワーク上で画像やメタデータを参照するために使用されます。
- テストネットまたはメインネットでテストする際は、十分なADAをウォレットに用意してください
- NFTミントにはトランザクション手数料がかかります
- IPFSサーバーが起動していない場合、アップロードは失敗します
- ローカルIPFSサーバーを使用する場合、ファイルはローカルノードにのみ保存されます
- 他のノードからもアクセス可能にするには、IPFSネットワークにピンを追加する必要があります