0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Hyperledger FireFlyとNFTトークンの発行

Last updated at Posted at 2023-09-30

前回からの続きで、
今回は、NFTの発行手順を紹介したいと思います。

環境構築からNFT生成までのステップ(前回からの続き)

  • 初回紹介
    Hyperledger FireFly環境を新規でWeb3 ゲートウェイ機能を有効にしBinaceテストネットと通信できるようにします。

  • 前々回紹介
    BinaceテストネットトークンをFausetサイトから入手します。
    Binaceテストネット上にNFT用のコントラクト(ERC-721ベース)をデプロイします。

  • 前回紹介
    IPFS環境の調整

  • 今回紹介
    NFT用のコントラクトの関数などのメタ情報をFireFly側に登録します。
    NFTとして扱う画像をFireFly側に登録します。
    FireFly側に登録した画像をPublicに公開します。
    NFTテキストデータをFireFly側に登録します。
    FireFly側に登録したNFTテキストデータをPublicに公開します。
    発行したNFTを他のユーザに転送して、ウォレットから確認します。

準備

各サービスの起動

bscスタック※ UI環境
FireFlyのSwagger UI
※ bscスタック環境をまだ構築していない場合は、こちらを参照ください

NFTデータの準備

任意の画像データを手元に用意します。
ここで用意した画像データをNFTとして登録します。
今回は、このような画像を用意しました。
image.png

FireFlyにアップロード

画像をFireFlyに登録します。
FireFlyのSwagger UIから「/data」を探します。
Request bodyに「multipart/form-data」を指定します。
filename.extのchooseFileボタンからNFTとしてアップロードするファイルを選択します。
metadataおよびvalidatorのチェックボックスをOFFにします。
「Execute」ボタンをクリックします。
image.png
以下のレスポンスが返却されます。これでローカル環境のFireFlyに登録されました。
レスポンスの「id」をメモします。
image.png
つづいて、FireFlyに登録した画像データを公開します。
FireFlyのSwagger UIから「/data/{dataid}/blob/publish」を探します。
「dataid」を指定し、Body分は空({})を指定します。
image.png
入力し「Execute」ボタンをクリックします。
実行後、blob.publicにCIDが返却されます。
image.png
返却されたpublicのアドレスをmetadata.jsonに記載します。
このjsonファイルが画像を指し示す情報になります。このjsonファイルもIPFSに登録します。
以下のjsonファイルを作成します。このjsonファイルのファイル名をmetadata.jsonとします。
imageに上記publicのアドレスを記載ます。

metadata.json
{
	"description": "FireFly private NFT",
	"external_url": "https://qiita.com/LJC-mobileapps",
	"image": "https://ipfs.io/ipfs/QmfQQ7tTU4WyzQAJh5D3iy1LQ57kC55uepsmPJ8DxaGWLZ",
	"name": "FireFly Art"
}

記載したら画像をアップロードした手順と同じ操作をします。
FireFlyのSwagger UIから「/data」を開きます。
ファイルにmetadata.jsonを指定し、チェックボックスを2か所OFFにします。
Executeボタンをクリックします。
image.png
ここでのidをコピーします。
image.png
つづいて、FireFlyのSwagger UIから「/data/{dataid}/blob/publish」を開きます。
URIのdataidに「0c1490d6-6aaf-49c6-b0e3-7eef8a29d05f」を指定し、Body分は空({})を指定します。
image.png
Executeボタンをクリックします。
ここでのpublicをコピーします。
image.png
このpublicの値(jsonファイルのCID)がNFTトークンを紐づけるキー情報になります。
以上で、画像ファイルおよび画像を管理するメタデータの登録が完了です。

NFTトークンの発行

IPFSに登録した情報をNFTトークンに紐づけます。
FireFlyのSwagger UIから「/tokens/mint」を探します。
このAPIを実行することにより画像がNFTとしてトークンへの紐づけが完了します。
リクエスト欄に以下の内容を記載します。
poolには、作成済みのpoolIDを記載します。
toにNFTトークンを受け取るユーザのアドレス(Walletアドレス)を指定します。
uriに上記metadata.jsonを登録したときに返却されたIDを指定します。

{
  "amount": "1",
  "pool": "9aa198f9-b350-4aa4-8e14-c2cf82675ae2",
  "to": "0x250d2382c1D1076A722b3C0c1a7287D325a3e68a",
  "uri": "ipfs://QmXyAWrLHU3p6b8MrEd93kTZ2pT8Qui9pjwGcTaGMKAETh"
}

pool IDはこちらの画面から確認することができます。
image.png
image.png

正常に処理がされると、以下の内容のレスポンスが得られます。
image.png

トークンの紐づけは以上です。

localのIPFSで確認する

画像をFireFlyにアップロードしたときのCIDを指定してブラウザのURLにアドレスを入力します。
ロカール環境のURL
URLがリダイレクトされ画像が表示されることが確認できます。
image.png
metadata.jsonのURLを開くと、jsonファイルが表示されます。
ロカール環境のURL
URLがリダイレクトされ画像が表示されることが確認できます。
image.png

NFT登録手順と確認方法は以上です。

次回は

第4回にわたりNFTの登録までを紹介しました。
おおむね手動での操作であり、数種類のAPIを使用しながら進めてきました。
フロントエンドを構築しバックグランドでこれらの処理ができると、アプリケーションとしてもさらに応用ができるのではないかと考えています。
今後は、core機能やIPFS以外の各機能について紹介したいと思います。
次回は、イベントの操作について紹介します。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?