# 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を使用してイベントを発火させます。


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://doc.yabumi.xyz/readme/mi/yabumi-nft-minto.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
