DCC Documents
  • Quickstart
  • Overview
    • Introduction
    • Features
    • Our Goal
    • Consensus Engine
    • Issue ERC20 Token
  • Developers
    • Network Endpoints
    • Deploy Smart Contract
      • Using Remix
      • Using Hardhat
    • Deploy NFTs
      • Create A Foundry Project
      • Create Your ERC721 Contract
      • Add Metadata
    • Run a Node
      • Hardware & System Requirements
      • Install DCC
      • Run A Full Node
      • Run A Validator Node
        • Block Rewards
        • Apply For Running A Validator
        • Manager Account And Validator Account
        • Run A Validator
      • Troubleshooting
    • Explorer
    • Dev Toolkit
  • Individuals
    • Wallet
      • Supported Wallet
      • Tutorial on how to set up wallet
    • Network Configuration
      • Configure Value
      • Tutorial on how to config DCC network in Metamask
  • FAQs
    • FAQs
      • General FAQs
      • Validator FAQs
  • Future Developments
    • Milestone
  • Community
    • Community
  • Disclosure
    • Disclaimers
    • Risk Statement
    • Media Kit
Powered by GitBook
On this page
  • Prerequisites
  • Create A New Project With Forge
  • Add Configurations For DCC
  1. Developers
  2. Deploy NFTs

Create A Foundry Project

PreviousDeploy NFTsNextCreate Your ERC721 Contract

Last updated 2 years ago

Like hardhat and truffle, foundry is a development environment for Ethereum smart contracts. And it is becoming more and more popular. Likewise, you can use foundry for developing and deploying smart contracts for DCC.

Prerequisites

Foundry provides three command-line tools: forge, cast, and anvil. If you have successfully installed foundry, you can invoke any of those in your shell.

Create A New Project With Forge

Let's create a new project called "my-nft" with the forge command from foundry:

forge init my-nft

After executing the commands above, forge will create a directory named "my-nft". And there are several subdirectories and a file named "foundry.toml" in that directory:

my-nft/
├── foundry.toml
├── lib
│   └── forge-std
├── script
│   └── Counter.s.sol
├── src
│   └── Counter.sol
└── test
    └── Counter.t.sol

Add Configurations For DCC

You can add two profiles to your foundry project by appending the following lines to the end of your foundry.toml file:

[profile.dcc_main]
src = 'src'
out = 'out'
libs = ['lib']
# DCC has not implemented the London fork yet 
evm_version = 'berlin'
eth_rpc_url = 'https://rpc.docoin.shop'

[profile.dcc_testnet]
src = 'src'
out = 'out'
libs = ['lib']
# DCC has not implemented the London fork yet 
evm_version = 'berlin'
eth_rpc_url = 'https://rpc.docoin.shop'

To test the configurations above, let's deploy the generated contract in the "Counter.sol" file to the DCC testnet:

FOUNDRY_PROFILE=dcc_testnet  \
        forge create --private-key=xxxxxxxxxxx \
        --legacy  Counter
  • Forge reads the profile's name from the environment variable "FOUNDRY_PROFILE".

  • You should replace `xxxxxxxxxxx` with your own private key.

    • BTW, foundry also supports several other wallets: Keystore, mnemonic, and even Ledger. And it is not wise to use a private key except in a test.

  • You must use the --legacy option because DCC has not implemented EIP1559 yet.

If everything goes well, forge will print out the address of the deployed contract and the transaction hash for the deployment.

Install foundry