> For the complete documentation index, see [llms.txt](https://doc.yabumi.xyz/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://doc.yabumi.xyz/readme/mi/yabumi-nft-minto.md).

# Yabumi NFT ミント

## １．Yabumi NFTのミント時に必要なもの

Yabumi NFTをミントする際、コントラクトはフロントエンドから以下を受け取ります。

* JointedID
* バックエンドで行った署名(r)
* バックエンドで行った署名(s)
* バックエンドで行った署名(v)

## ２．署名データ作成

以下の情報を元に、コントラクトでバックエンド同様の署名データ作成します。

* JointedID
* ミントアドレス(msg.sender)

## ３．署名アドレスを検証

以下情報を元に、コントラクトでバックエンド署名アドレスを検証します。

* 2.で作成した署名データ
* バックエンドで行った署名(r)
* バックエンドで行った署名(s)
* バックエンドで行った署名(v)

## ４．アドレスのエラー処理

2つのアドレスが一致しなかった場合はエラーとして処理します。

* 3.で検証したバックエンド署名アドレス
* コントラクトデプロイ時に受け取った署名アドレス

## ５．ミント済みのエラー処理

引数で受けったJointed IDが過去にミントされたものと一致した場合はエラーとして処理します。

## ６．インデックス割り当て

上記４，５のチェックをパスできたら、tokenIDを1\~からミントされた順番に採番します。

## ７．Jointed IDを保存

「JointedID」をミント済みとして変数へ保存します。

これで同一IDで複数ミントされることを防ぎます。

## ８．Token IDとの紐づけ

「JointedID」とToken ID紐付け情報を変数へ保存します。

## ９．ミントしたウォレットアドレスの保存

Token IDに対応したウォレットアドレスを変数へ保存します。

これでYabumi NFTのToken IDからウォレットアドレスを割り出せます。

## １０．ミント処理

ミントしたウォレットアドレスと採番したToken IDでミント処理を実行じます。

## １１．イベントの発火

Token IDと「JointedID」をイベントへ保存し、emitを使用してイベントを発火させます。
