Remixでコードを記述しよう
目次 [hide]
Remixとは、ブラウザ上でコードの記述からテスト・デプロイまでをすべて行うことができる、お手軽かつ万能の開発環境です。本記事ではこのRemixを使用して、ジェネラティブNFTをMintするためのコードを書いていきます!
Remixの初期設定
まずはRemix にアクセスしましょう。起動画面がしばらく表示されたあとに、トップページが表示されます。
はじめに、左上のボタンからワークスペース(作業を行うためのフォルダやファイルのかたまり)の作成を行いましょう。

ワークスペース名は任意の名前で結構です。今回はkanji
としました。

Solidityファイルの作成
ワークスペースを作成するとデフォルトでサンプルのファイルがいくつか用意されているのですが、今回は使用しないため消してしまいましょう。
contarcts
フォルダ以下の3つのファイルを選択して右クリック > 「Delete All」で削除してください。
(Shift
+ クリックで複数選択が可能です)

続いて、contracts
フォルダを右クリック > 「NewFile」で新たにファイルを作成しましょう。
こちらも任意の名前で結構ですが、コレクション名と同じにするとわかりやすいです。サンプルではDotKanji
としました。
ここでファイル名を入力すると自動で拡張子.sol
が付与されますが、これは「Solidityファイル(コントラクトを作成するためのプログラミング言語)だよ」という意味になります。
コードの貼り付け
Remix上で作成したファイルに、前パートで事前にコピーしておいた「hashlips_nft_contract」フォルダのcontract/SimpleNft_flat.sol
の中身をまるごと貼り付けましょう。

コードのカスタマイズ
コントラクトの修正
続いてコード内の一部をカスタマイズしていきます。貼り付けたコードの1235行目あたり、contract NFT is ERC721Enumerable, Ownable {
から始まるコードを探してみましょう。
contract/DotKanji.sol
︙ contract NFT is ERC721Enumerable, Ownable { using Strings for uint256; string baseURI; string public baseExtension = ".json"; uint256 public cost = 0.01 ether; uint256 public maxSupply = 1000; uint256 public maxMintAmount = 10; bool public paused = false; bool public revealed = false; string public notRevealedUri; ︙
まず初めに、contract NFT is …
の「NFT
」部分を.sol
ファイル名と同じ名前に変更しておきましょう。今回の例ではcontract DotKanji is …
となります。
続いて、変数(プログラムを動かす設定値)の中身を変えていきましょう。変更する必要があるのは以下の5箇所になります。
変数名 | 内容 | 差し替え例 |
---|---|---|
cost |
NFTを1つミントするために必要な値段 | 0.001 |
maxSupply |
ジェネラティブNFTの総数 | 1000 |
maxMintAmount |
一度にミントできる最大数 | 10 |
paused |
ミントできない状態か | true |
revealed |
Reveal(公開)されているかどうか | true |
今回の例では0.001ethで販売し、1000点の画像を用意、1度に10個までミント可能、Reveal設定は無しとしたいため、「差し替え例」のような内容を入力しました。
paused
は後から差し替えできるので、いまはtrue
(ミントできない状態)としておきましょう。
ちなみにpaused
とrevealed
は名前の前にbool
とついていますが、これはYES/NOを管理する変数という意味になります。内容が「YES」のときはtrue
、「NO」の場合はfalse
と入力する必要があるので覚えておいてください。
今回の作業後のコードは以下のようになります。お手元のコードと比較してみてくださいね。
contract/DotKanji.sol
︙ contract DotKanji is ERC721Enumerable, Ownable { using Strings for uint256; string baseURI; string public baseExtension = ".json"; uint256 public cost = 0.001 ether; uint256 public maxSupply = 1000; uint256 public maxMintAmount = 10; bool public paused = true; bool public revealed = true; string public notRevealedUri; ︙
【オプション】HashLipsへのサポートの削除
貼り付けたコードの一番下を見ると、HAshLipsに5%を支払うという処理が入っています。
HashLipsを応援したい!という方はそのままで結構ですが、売上が100%自分にほしい!という方は以下の箇所を消しておきましょう。

コード差分としては以下のとおりです。
【 Before 】
contract/DotKanji.sol
︙ function withdraw() public payable onlyOwner { // This will pay HashLips 5% of the initial sale. // You can remove this if you want, or keep it in to support HashLips and his channel. // ============================================================================= (bool hs, ) = payable(0x943590A42C27D08e3744202c4Ae5eD55c2dE240D).call{value: address(this).balance * 5 / 100}(""); require(hs); // ============================================================================= // This will payout the owner 95% of the contract balance. // Do not remove this otherwise you will not be able to withdraw the funds. // ============================================================================= (bool os, ) = payable(owner()).call{value: address(this).balance}(""); require(os); // ============================================================================= } }
↓
【 After 】
contract/DotKanji.sol
︙ function withdraw() public payable onlyOwner { // Do not remove this otherwise you will not be able to withdraw the funds. // ============================================================================= (bool os, ) = payable(owner()).call{value: address(this).balance}(""); require(os); // ============================================================================= } }