---
title: "NFTの価格設定方法"
description: "NFTの価格設定方法を解説するガイドです。デジタル資産に適正な価値を設定する方法を紹介します。"
---

# NFTの価格設定方法

NFTの価格の設定方法についてのガイド

あわせて、その他のNFTチュートリアルシリーズもご覧ください。

- 🌟  [Web3.jsを使ってNFTをミントする方法](https://www.alchemy.com/blog/how-to-mint-an-nft-using-web3-js)
- 🪄  [Ether.jsでNFTをミントする方法](https://www.alchemy.com/blog/how-to-mint-an-nft-with-ethers-js)
- 👛  [モバイルウォレットでNFTを表示する方法](https://www.alchemy.com/blog/how-to-view-your-nft-in-your-mobile-wallet)
- 💻  [NFTミンターチュートリアル：フルスタックdAppの作り方](https://www.alchemy.com/blog/nft-minter-tutorial-how-to-create-a-full-stack-dapp)

NFTを作成したら、次はそれをNFT愛好家に販売したくなるでしょう。そのためには、NFTに価格を設定する必要があり、主に2つの方法があります。

1. スマートコントラクト内で設定する方法\(本ガイド\)
1. [NFTマーケットプレイス](https://www.alchemy.com/dapps/best/nft-marketplaces)やプラットフォームにNFTを出品する方法\(より一般的な方法\)

## コントラクト内でNFTの価格を設定する

#### ミント時に手数料を要求する

<CalloutBlock>

**NOTE**: 以下のセクションは、そのまま使えるソリューションではありません。[NFT Creation](https://www.alchemy.com/docs/how-to-interact-with-erc-721-tokens-in-solidity)チュートリアルの[Step 10](https://www.alchemy.com/docs/how-to-interact-with-erc-721-tokens-in-solidity)では、ミントに対する支払いを受け付けるために[Solidity](https://www.alchemy.com/overviews/solidity)を変更する必要があり、これはミントを実行するフロントエンドのweb3 / ethers.jsロジックにmsg.valueパラメータを含めてETHの送金を可能にする必要があることを意味します。

</CalloutBlock>

この手数料パターンは、コントラクト内で完結し、手数料の仕組みをミントプロセス自体に組み込むため、完全に分散化されています。ミント時に価格を設定するには、この動作を含むようスマートコントラクトを変更する必要があります。大まかに言うと、mint関数をpayableにして、NFTを購入者に転送する前に、ユーザーに一定量のETHの支払いを要求することで、NFTのミント価格を実現できます。

このタイプのミントプロセスのサンプルコードは以下の通りです。

`function mintToken(address to, uint256 tokenId, string uri) public virtual payable`

- ユーザーがETHを支払ってNFTをミントできるようにするには、この関数をpublicかつpayableにする必要があります。public関数は内部から、またはメッセージを介して呼び出すことができ、誰でもその関数と対話できるようにします。\(この関数をコントラクトのオーナーのみが呼び出せるようにしたくはありません。それでは購入希望者を締め出すことになってしまいます！\)

`require(msg.value >= 10, "Not enough ETH sent; check price!");`

- このrequire文は、payable関数が少なくとも10 weiを受け取ることを要求しており、それ以外の場合はこの関数は失敗し、リバートします。`msg.value `パラメータは、mint関数と一緒に送られてきたETHの金額です。**‍**

`mint(to, tokenId);`

- これはOpenZepplinのERC721コントラクトファイルに含まれるmint関数を呼び出し、選択されたNFTを購入者にインスタンス化/転送します。

`_setTokenURI(tokenId, uri);`

- これはOpenZepplinのERC721コントラクトファイルに含まれる**`\_setTokenURIfunction`**を呼び出し、NFTのURIを特定のエンドポイントに設定します。

‌ミントコントラクトに手数料を組み込む実装には、さまざまなバリエーションがあります。上記で紹介したものは最もシンプルなものの一つですが、多くのプロトコルでは、はるかに複雑な手数料パターンも使われています。

## オークションプラットフォームを通じてNFTの価格を設定する

#### NFTをOpenSeaや他のNFTオークションプラットフォームに出品する

コーディングを伴わない方法としては、新しくミントしたNFTを[OpenSea](https://www.alchemy.com/dapps/opensea)や他のNFTオークションサイトに単純に出品し、そこで価格を設定することもできます。NFTの上に構築されているOpenSeaのUI層により、価格の設定、入札の受付、あるいはより複雑なオークション方式の利用が可能になっており、そのロジックはすべてOpenSea側が処理してくれます。

[Ethereumメインネット](https://www.alchemy.com/rpc/ethereum)の場合は、こちらを使用してください: [https://opensea.io/](https://opensea.io/)

テストネットの場合は、こちらを使用してください: [https://testnets.opensea.io/](https://testnets.opensea.io/)

<CalloutBlock>

**NOTE:** NFTオークションプラットフォームは通常、出品やオークション処理に対して手数料を課します。各プラットフォームの動向を把握し、有利な料金を見つけてNFTの売上を最大化しましょう。[Zora](https://zora.co/)と[SuperRare](https://superrare.com/)は、OpenSeaと同様のサービスを提供する代替プラットフォームの一例です。

</CalloutBlock>
