> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sequence.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# NFTドロップセールの作成

> このガイドでは、SequenceのPrimary Sales 721の作成方法を解説します。セールスコントラクトの作成、NFTコントラクトの作成、コレクションの作成、未公開トークンの作成・公開、ウォレット認証、購入・ミントまでの手順を含みます。

未公開トークンを販売してゲームの成長を加速し、セール期間終了後にすべての未公開トークンが本来の特徴を明かすことで、プレイヤーに素晴らしい報酬を提供しましょう。このガイドでは、ERC721コントラクトのゲームアイテムを活用したドロップセールを、任意のカスタム通貨や既存通貨で実施するためのPrimary Saleコントラクトのデプロイ手順を解説します。Sequenceプラットフォームの以下の技術を使用します：

1. [Primary Sales Contract](/solutions/builder/contracts/deploy-primary-sales-contract/): プライマリーセールのためのコントラクトのセットアップとデプロイ方法です。WebショップやNFTドロップなどに適しています。
2. [Embedded Wallet](/solutions/wallets/developers/embedded-wallet/overview)：Web SDK と Sequence Embedded Wallet を使ってユーザー認証を行います。
3. [Sequence Indexer](/solutions/indexer/overview): Sequence Indexerを活用してNFTメタデータやユーザーのウォレット資産を照会します。
4. [Sequence Metadata](/solutions/builder/collections)：Sequence BuilderのUIやAPIを使ったコレクションやトークンのメタデータ管理・更新。

## ゲームアイテム用Primary Salesのボイラープレートをクローンする

<Tabs>
  <Tab title="Sequence CLI">
    #### [Sequence CLI](https://github.com/0xsequence/sequence-cli/)を使って、Primary Salesリポジトリを簡単にクローンできます。

    ```bash theme={null}
    npx sequence-cli boilerplates create-primary-drop-sales-erc721-starter
    ```
  </Tab>

  <Tab title="Github">
    #### GithubからPrimary Salesリポジトリをクローンできます。

    ```shell theme={null}
    git clone https://github.com/0xsequence-demos/primary-drop-sale-721-boilerplate.git
    ```

    <br />

    その後、インストールして実行してください：

    <br />

    ```shell theme={null}
    pnpm install && pnpm dev
    ```

    <br />

    依存関係をインストールすると、`.env.example` が自動的に `.env` にコピーされ、事前に用意されたキーでテストできるようになります。

    <br />

    準備ができたら、`.env` の内容をあなたのプロジェクト情報に置き換えてください。
  </Tab>

  <Tab title="Githubテンプレート">
    #### GithubのPrimary Salesボイラープレートを利用できます。

    [https://github.com/0xsequence-demos/primary-drop-sale-721-boilerplate](https://github.com/0xsequence-demos/primary-drop-sale-721-boilerplate) にアクセスし、右上の「Use this Template」をクリックしてください。

    <br />

    新しく作成したリポジトリをクローンします。

    <br />

    その後、インストールして実行してください：

    <br />

    ```shell theme={null}
    pnpm install && pnpm dev
    ```

    <br />

    依存関係をインストールすると、`.env.example` が自動的に `.env` にコピーされ、事前に用意されたキーでテストできるようになります。

    <br />

    準備ができたら、`.env` の内容をあなたのプロジェクト情報に置き換えてください。
  </Tab>
</Tabs>

## このリポジトリの使い方

このリポジトリで何ができるのでしょう？隠されたメタデータ付きNFTを販売できるのです！さまざまな特性やレアリティを持つトークンをユーザーに提供できます。剣？盾？絵画？ランダムなバトルパス？もしかしたらゴールデンチケットも？どんな結果が待っているのか、想像するだけでドキドキしますね！ユーザーにミステリーと、トークン公開時のご褒美を与えましょう。

### 未公開トークンの作成

このステップでは、スクリプトを使ってNFTコレクション用の未公開トークンを作成する方法を説明します。コレクションが正しく設定されていることを確認し、コレクション詳細画面のURLからIDをコピーしておいてください。

未公開トークンを作成するには、`scripts/utils/getBodyAndKeys.ts` ファイル内で `collectionId` と作成したいトークン数（`number`）を設定してください。サンプルも記載されています。

<Warning>
  `.env` ファイルで `JWT_SECRET_KEY`、`VITE_PROJECT_ACCESS_KEY`、`VITE_PROJECT_ID` を必ず設定してください。
</Warning>

#### スクリプト：

```bash theme={null}
pnpm create-unrevealed-tokens
```

### プロジェクト接続フローとERC721セールスコントラクトの設定

ここからは、プロジェクトの接続フローをすべて完了し、未公開トークンを含むコレクションと紐づくERC721セールスコントラクトを設定する必要があります。

#### 重要な注意点：

* プライマリセールスコントラクトの在庫数は、エンドポイントで作成した未公開トークン数と同じでなければなりません。
* 例えば、未公開トークンを300個生成した場合、セールスコントラクトの在庫も300個に設定し、コントラクトと未公開トークンの整合性を保ってください。
* 未公開トークンのコレクションをコントラクトに紐づける。
* ERC721セールスコントラクトの総供給量（在庫）が未公開トークン数と一致していることを確認してください。これにより、コントラクトで販売される内容と未公開トークンの間に不整合が生じません。

### リポジトリで独自のPrimary Salesコントラクトを設定する

いくつかのサンプルコントラクトや変数を用意していますが、多くの場合、独自のコントラクトを利用することになるでしょう。その場合は、以下の手順に従って設定してください。

<Steps>
  <Step title="Sequence BuilderでPrimary Salesコントラクトをデプロイする。">
    まず、販売したいゲームアイテムを格納するPrimary Sales ContractとERC721コントラクトが必要です。その手順については[こちらのガイド](/solutions/builder/contracts/deploy-primary-sales-contract)をご覧ください。
  </Step>

  <Step title="プロジェクトのセールス設定を行う。">
    セールスコントラクトをデプロイしたら、ボイラープレートのセールス設定を更新します。`src/salesConfigs.ts` を開き、salesConfigs変数にプロジェクトで利用する各コントラクトのセール情報を、対応するネットワークごとに配列で追加してください。例：

    ```ts theme={null}
    export const salesConfigs: SaleConfiguration[] = [
      {
        nftTokenAddress: "0x70a2177079877e4aae639d1abb29ffa537b94970",
        salesContractAddress: "0xa55574c5ed4cd1dbc5feba47a204fdfb483edadd",
        chainId: 80002, //polygonAmoy
      }
    ];
    ```

    <Note>
      現在Sequenceでサポートされている全チェーンは<a href="https://status.sequence.info" target="_blank" rel="noopener noreferrer" style={{ fontWeight: 700 }}>こちら</a>で確認できます。
    </Note>
  </Step>

  <Step title="プロジェクトのデフォルトchainIdを設定する。">
    デフォルトのchainIdを設定するには、`src/salesConfigs.ts` の defaultChainId 変数を、プロジェクトで最初に表示したいchainIdに変更してください。これはsalesConfigs変数に含まれているchainIdと一致している必要があります。例：

    ```ts theme={null}
    // In this case, the chosen `defaultChainId` is 80002 (amoy), which is present in the previously declared `salesConfigs` variable.
    export const defaultChainId = 80002;
    ```
  </Step>

  <Step title="完了です！">
    これでプライマリドロップセールが正しく表示・動作するようになります。購入するには、セールの通貨として設定したトークンをウォレットに用意し、購入数量を指定し、「購入」ボタンをクリックしてください！
  </Step>
</Steps>

### トークンの公開

期待が高まりますね。ユーザーは自分の運命を知るのを心待ちにしています。NFTの本当の属性を公開して、みんなを喜ばせましょう！このスクリプトは、すべての未公開トークンを公開し、ランダムに生成された実際の値をNFTに割り当てます。メタデータの生成方法は自由にカスタマイズできます！

未公開トークンを公開するには、`scripts/utils/getBodyAndKeys.ts` ファイル内で `collectionId` を設定してください。サンプルも記載されています。

<Warning>
  `.env` ファイルで `JWT_SECRET_KEY`、`VITE_PROJECT_ACCESS_KEY`、`VITE_PROJECT_ID` を必ず設定してください。
  このステップの前に、プライマリセールを無効化するために有効期限を設定するか、コントラクトの在庫がなくなるまで待つ必要があります（必須）。
</Warning>

#### スクリプト：

```bash theme={null}
pnpm reveal-tokens
```
