Plume
  • Introduction
    • Overview
  • Official Tokens
    • PLUME ($PLUME) Token
    • Plume USD (pUSD)
  • Plume Security
    • AML Screening
    • Compliance at Plume
    • Audits and Security
  • Developers
    • Plume Testnet
    • Smart Contracts
    • How-to Guides
      • How to Connect to Testnet
        • Install and Configure Wallet
        • Claim test tokens
      • How to Deploy Smart Contracts
        • Deploy using Remix IDE
        • Deploy using Foundry
        • Deploy using Hardhat
      • How to Verify Smart Contracts
        • Verify using Foundry
        • Verify using Hardhat
      • How to Run a Node
    • Plume vs. Ethereum
    • Gas and Fees
    • Finality
  • Community and Support
    • Community Channels
    • Brand Assets
    • Terms of Service
    • Privacy Policy
  • MORE
    • Glossary
    • FAQ
Powered by GitBook
On this page
  • Before you Begin
  • Foundry Setup
  • Setup your project
  • Deploy your Contract
  • Sample Output
  1. Developers
  2. How-to Guides
  3. How to Deploy Smart Contracts

Deploy using Foundry

PreviousDeploy using Remix IDENextDeploy using Hardhat

Last updated 22 days ago

is a Solidity framework for deploying smart contracts, built by and written in Rust to be blazingly fast.

Before you Begin

  • Check if you are using the right

  • Have enough test tokens in your wallet

Learn more about claiming test tokens from .

Foundry Setup

Simply follow their to install and run Foundry, then follow their to create a new project.

Run the following commands in your terminal:

curl -L https://foundry.paradigm.xyz | bash
foundryup

Setup your project

To start a new project with Foundry, use :

forge init plume

Let's install the OpenZeppelin dependency required for our sample smart contract.

forge install openzeppelin/openzeppelin-contracts
Sample Smart Contract Code
src/RolexYachtMaster40.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.25;

import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
import {ERC721} from "@openzeppelin/contracts/token/ERC721/ERC721.sol";

contract RolexYachtMaster40 is Ownable, ERC721 {
    error NFTAlreadyMinted();
    bool private _minted;

    constructor() Ownable(msg.sender) ERC721("Rolex Yacht-Master 40", "") {}

    function mint() public onlyOwner returns (uint256) {
        if (_minted) {
            revert NFTAlreadyMinted();
        }
        _safeMint(owner(), 0);
        _minted = true;
        return 0;
    }
}
forge build

[⠰] Compiling...
[⠔] Compiling 38 files with Solc 0.8.27
[⠒] Solc 0.8.27 finished in 1.01s
Compiler run successful!

Deploy your Contract

export PLUME_RPC_URL=https://testnet-rpc.plume.org
export CONTRACT_PATH=<contract_file>:<contract_name>

forge create $CONTRACT_PATH \
    --rpc-url $PLUME_RPC_URL \
    --broadcast \
    --legacy --interactive

The below command will verify the contract and deploy it simultaneously.

export PLUME_RPC_URL=https://testnet-rpc.plume.org
export VERIFIER_URL=https://testnet-explorer.plume.org/api/
export CONTRACT_PATH=<contract_file>:<contract_name>

forge create $CONTRACT_PATH \
    --rpc-url $PLUME_RPC_URL \
    --verify \
    --verifier blockscout \
    --verifier-url $VERIFIER_URL \
    --broadcast \
    --legacy --interactive

Make sure to replace the details in the <contract_file>:<contract_name> with your contract details.

Sample Output

No files changed, compilation skipped
Enter private key:
Deployer: 0x32820DE739394C1ee69264ef3C0193E4B5C0122c
Deployed to: 0xa43a88ccfec87295aa0c5017a7ddcc5cdfcacdd0
Transaction hash: 0x1441297a9288fc37820a09e2e9b1d14d62b5d6341fd1e14159eabcedb7dfe115

This is a sample NFT contract based on implementation to tokenize our CBO's prized Rolex watch on Plume.

Then, compile the project using :

Follow the instructions on in the and set your PLUME_RPC_URL environment variable similar to the ETH RPC URL. The below command will deploy the sample smart contract provided above.

To verify the contract while deploying, use --verify flag, more details .

You can view the deployed contract on the .

OpenZeppelin's open-source ERC-721
forge build
"Deploying" documentation
here
Plume Testnet Explorer
Foundry
Paradigm
here
"Getting Started" documentation
"Projects" documentation
forge init
network configuration