How To Tutorials
Deploy NFT Contracts

Using Truffle

27min

Overview

This guide walks you through using Truffle migrations to deploy an NFT smart contract to the Palm network.

🏁 Prerequisites

  1. Get PALM Tokens to pay the deployment transaction fees.
  2. MetaMask Wallet Setup to get your private key.
  3. Install Node.js.

Tutorial

1. Initialize Your NPM Project

Shell



2. Install Truffle on Your Project Folder

Shell



3. Initialize Truffle

Shell



4. Install Truffle's HDWalletProvider

Shell


5. Add your Contract

We'll use a contract based on the OpenZeppelin library’s ERC-721 implementation.

a) First, install the Open Zeppelin library in order to inherit its classes:

Shell


b) Next, create a file named NFT.sol under the contracts folder.

Document image


c) Lastly, add the following smart contract to NFT.sol file. Note that we have named our contract NFT, this can be any name.

The name will be important in the next step.



JS



6. Create Your Migration File

What are Migrations?

Migrations are JavaScript files that help you deploy contracts to the Ethereum network. These files are responsible for staging your deployment tasks, and they're written under the assumption that your deployment needs will change over time.`



Under the migrations folder, create your filename: 1_example_migration.js

create your filename: 1_example_migration.js
create your filename: 1_example_migration.js


Additional Resources



JS



7. Set environment variables with dotenv

  • Install dotenv
Shell


Keep Your Private Keys Secret Private keys must be kept secret and not committed to any code repository. In the example of this tutorial, the .env file should be added to your .gitignore file and kept local. For example, see MyCrypto's Protecting Yourself and Your Funds guide.



  • Create a .gitignore file
Add a .gitignore file
Add a .gitignore file




  • Create an .env file n your project's root folder, and set environment variables in the file as follows
PRIVATE_KEY = #The private key of the account you intend to use on the Palm network INFURA_API_KEY = #Your Infura API key
.env file
.env file






8. Edit truffle-config.js with the following text

JS



9. Deploy to the Target Palm Network Environment

Palm Testnet
Palm Mainnet
Example Logs






10. Look Up Your Deployment on the Palm Network Block Explorer

Paste your `contract address:` from the log of the previous step into the search bar. It may take 10-20 minutes to appear.



Testnet

Mainnet

Explorer URL



If successful, you will see something like this screenshot:



Document image



11. Install Truffle-Plugin-Verify

This plugin will allow you to automatically verify your smart contracts's source code straight from the CLI.

Shell



12. Add the plugin to your truffle-config.js file

JS



13. Verify Contract

Use the name of your contract to verify on the desired network.

Palm Testnet
Palm Mainnet
Example Log