LogoLogo
WebsiteTwitterGitHub
  • Introduction
    • Bridge
  • Wallets
    • fWallet
    • Rabby
    • MetaMask
    • Coinbase Wallet
    • Ledger
  • Staking
    • Overview
    • Stake FTM
    • Liquid Staking
    • Governance
  • Build on Opera
    • Overview
    • Tutorials
      • Deploy Contract
      • Verify Contract
      • Unit Test Contract
      • Create Fixed-Cap Asset
      • Create Variable-Cap Asset
      • Proxy Pattern
      • Diamond Proxy Pattern
    • Oracles
      • Chainlink
      • Band Protocol
      • API3
    • API
      • Public Endpoints
      • Transaction Tracing
      • Web3 API
      • GraphQL
        • Getting Started
        • Installation
        • Schema Basics
        • Schema Structure
        • Implementation Details
    • Providers
      • Contracts
        • Chainstack
        • thirdweb
        • GetBlock
      • API
        • The Graph
        • Covalent
        • Moralis
  • Funding
    • Gas Monetization
  • Run a Node
    • Overview
    • Node Providers
    • Mainnet
      • Run Validator Node
      • Run API Node
    • Testnet
      • Run Validator Node
      • Run Read-Only Node
    • Troubleshooting
    • FAQ
  • Technology
    • Overview
    • Consensus
    • Database Storage
    • Proof of Stake
    • Transaction Fees
    • Stablecoin
    • FAQ
  • Security
    • Contract Library
    • Fantom Safe
Powered by GitBook

© 2024 Fantom Foundation

On this page
  • Deploy an Opera Testnet Node
  • Install Foundry
  • Initialize With Foundry
  • Fund Your Account
  • Create the Hello World Contract
  • Deploy the Contract
Export as PDF
  1. Build on Opera
  2. Providers
  3. Contracts

Chainstack

PreviousContractsNextthirdweb

This section guides you through deploying a Hello World smart contract using and on the Opera testnet.

If you have any questions, reach out in the .

Deploy an Opera Testnet Node

You need a node to deploy a smart contract to the chain. To get your node:

  1. .

  2. .

  3. .

Install Foundry

Foundry is a development toolkit to work with smart contracts.

  1. .

  2. .

Initialize With Foundry

In your project directory, run foundry init. This will create a boilerplate project.

Fund Your Account

Create the Hello World Contract

In the initialized Foundry project in src/, create HelloWorld.sol:

// SPDX-License-Identifier: None

// Specifies the version of Solidity, using semantic versioning.
// Learn more: https://solidity.readthedocs.io/en/v0.5.10/layout-of-source-files.html#pragma
pragma solidity >=0.8.9;

// Defines a contract named `HelloWorld`.
// A contract is a collection of functions and data (its state). Once deployed, a contract resides at a specific address on the Fantom blockchain. Learn more: https://solidity.readthedocs.io/en/v0.5.10/structure-of-a-contract.html
contract HelloWorld {

   //Emitted when update function is called
   //Smart contract events are a way for your contract to communicate that something happened on the blockchain to your app front-end, which can be 'listening' for certain events and take action when they happen.
   event UpdatedMessages(string oldStr, string newStr);

   // Declares a state variable `message` of type `string`.
   // State variables are variables whose values are permanently stored in contract storage. The keyword `public` makes variables accessible from outside a contract and creates a function that other contracts or clients can call to access the value.
   string public message;

   // Similar to many class-based object-oriented languages, a constructor is a special function that is only executed upon contract creation.
   // Constructors are used to initialize the contract's data. Learn more:https://solidity.readthedocs.io/en/v0.5.10/contracts.html#constructors
   constructor(string memory initMessage) {

      // Accepts a string argument `initMessage` and sets the value into the contract's `message` storage variable).
      message = initMessage;
   }

   // A public function that accepts a string argument and updates the `message` storage variable.
   function update(string memory newMessage) public {
      string memory oldMsg = message;
      message = newMessage;
      emit UpdatedMessages(oldMsg, newMessage);
   }
}

Deploy the Contract

At this point, you are ready to deploy your contract:

  • You have your own node on the Opera testnet through which you will deploy the contract.

  • You have Foundry that you will use to deploy the contract.

  • You have a funded account that will deploy the contract.

To deploy the contract, run:

forge create HelloWorld --constructor-args "Hello" --contracts CONTRACT_PATH --private-key PRIVATE_KEY --rpc-url HTTPS_ENDPOINT
  • CONTRACT_PATH — path to your HelloWorld.sol file.

  • PRIVATE_KEY — the private key from your account.

Example:

forge create HelloWorld --constructor-args "Hello" --contracts /root/foundry/src/HelloWorld.sol --private-key d8936f6eae35c73a14ea7c1aabb8d068e16889a7f516c8abc482ba4e1489f4cd --rpc-url https://nd-123-456-789.p2pify.com/3c6e0b8a9c15224a8228b9a98ca1531d

Congratulations! You have deployed your Hello World smart contract on Opera!

You need to pay gas on the network to deploy the contract. Get testnet FTM .

HTTPS_ENDPOINT — .

See the Chainstack documentation for more and .

Chainstack
Foundry
Chainstack Discord
Sign up with Chainstack
Deploy a testnet node
Get the deployed node’s HTTPS endpoint
Install Rust
Install Foundry
through the faucet
your node's endpoint
tutorials
tools