MANTRA Chain
  • Introduction
    • Overview
    • Why MANTRA Chain
    • Building on MANTRA Chain
    • MANTRA RWA Suite
  • Using MANTRA Chain
    • MANTRA Chain Wallet Setup
      • Connect to Testnet
      • Connect to Mainnet
      • Testnet Faucet
    • MANTRA Zone
    • MANTRA Bridge
      • MANTRA Bridge User Guide
      • MANTRA Bridge FAQs
    • Stake
      • Stake User Guide
      • Stake FAQs
    • MANTRA Swap
      • MANTRA Swap User Guide
      • Liquidity Pools User Guide
      • MANTRA Swap FAQs
    • Claiming Journey
      • Check If You're Eligible
      • Claiming Journey User Guide
      • I've redeemed my rewards, now what?
    • Chakra Pool
      • What can I do with my USDY
      • Chakra Pool Deposit Guide
      • How KARMA works for Chakra Pool
        • How much KARMA do I get for depositing into Chakra Pool?
        • Can I make multiple deposits and how will KARMA be calculated then?
        • My KARMA is not updated even though I make multiple deposits?
        • Will I get daily KARMA for my deposit on USDY Chakra Pool launched on Hongbai earlier?
      • Chakra Pool FAQs
    • MANTRA Zone Leaderboard
      • MANTRA Zone Leaderboard User Guide
        • Mission Guides
          • Pledge your OM 🕉️
          • Claim OM Staking Rewards
          • OMly Drip 💧
      • MANTRA Zone Leaderboard FAQs
  • Developing on MANTRA Chain
    • Getting Started
      • DuKong Testnet
      • Install Prerequisites
      • Setting Up Dev Environment
      • Compiling a Contract
      • Deployment and Interaction
    • CosmWasm Quick Start Guide
      • CosmWasm Contracts
      • Understanding CosmWasm File Structure
    • DAPP Tooling
      • Cosmos SDK
      • Important Libraries
      • Developer Resources
    • Developer FAQs
  • MANTRA Smart Contracts
    • Overview
    • MANTRA Dex
      • 🚢Deployments
      • 📚Common Types
      • 💰Fee Collector
      • ⌛Epoch Manager
      • 🌊Pool Manager
      • 🎁Farm Manager
    • Claimdrop Contract
    • Audits
  • Node & Validator Operations
    • Overview
    • Node Setup & Deployment
      • Node System Requirements
      • Running a Node
      • How to run Mantrachain with Systemd
      • Validator Nodes
        • Connect sidecar
    • Validator Architecture Recommendations
      • Secure Validator
    • Governance
      • Draft a Proposal
        • Text Proposal
        • Community Spend Proposal
        • Software Upgrade
        • Cancel Software Upgrade
      • Submitting a Proposal
      • Verifying your transaction
      • Depositing funds
      • Voting on a Proposal
    • Download nodes snapshots
  • MANTRA Chain with EVM (Alpha)
    • Getting Started on OMSTEAD Testnet
  • Setup Instructions
  • Using Foundry
    • Deployment with Foundry
  • Using Hardhat
    • Deployment with Hardhat
  • Mainnet OM Information
    • Background
    • Updated OM Tokenomics
    • OM Distribution Updates
    • Inflation & Vesting Schedule
    • Legacy tokens to mainnet staking tokens
  • Appendix
    • Frequently Asked Questions
      • General FAQs
        • What is MANTRA Chain?
        • What are the key features/ modules available to builders on MANTRA Chain?
        • What support is available for developers and validators that join the ecosystem
        • Where can i find MANTRA Social Accounts & Communities?
        • How can an Issue or a bug be reported?
        • How can I identify official MANTRA communication and websites?
      • Validator FAQs
        • What does a new validator’s journey look like?
        • What are my key responsibilities as a validator?
        • What is uptime and how is it maintained?
        • What are the hardware requirements?
        • How to get validator keys?
        • How can I connect a validator from an older testnet to the newest testnet?
        • How do I create a backup snapshot of a node?
        • How do I restore a node from a snapshot?
        • What are the different states a validator can be in?
        • How do I unjail a validator?
        • How do I edit a validator's description?
        • What is self-delegation?
        • Is there a minimum amount of OM that must be delegated to be an active validator?
      • Developer FAQs
        • What is MANTRA Chain, and how does it utilize the Cosmos ecosystem?
        • How does MANTRA Chain ensure interoperability with other blockchains in the Cosmos ecosystem?
        • What is the Cosmos ecosystem, and how does it differ from other blockchain platforms?
        • Which programming languages are commonly used for developing on the Cosmos ecosystem?
        • How do I get started with development on the Cosmos ecosystem?
        • What are Cosmos SDK and Tendermint, and how do they work together?
        • What are Cosmos zones and how do they interact?
        • How do I build and deploy smart contracts on the Cosmos ecosystem?
        • How do I interact with Cosmos chains and applications programmatically?
        • What is the best way to learn about developing for the MANTRA Chain and Cosmos ecosystem?
      • Hongbai FAQs
        • Where do I sign up for Hongbai?
        • Why do I need to provide 2 wallets during signup?
        • How can I Login?
        • What should I do if I forgot my password?
        • What can I do if i forget my registered email?
        • Where do i verify my email?
        • How to connect my Metamask wallet?
        • Is Hongbai app a testnet or live app?
        • Can I change my wallet ?
        • Error “invalid user credentials“
        • Why can i not Invest?
      • How to Guides
        • Install Keplr Wallet
        • Keplr and Ledger
        • Add DuKong Testnet to Keplr
        • Get Tokens from Faucet
        • Track activity on Leaderboard
      • More Help & Support
      • MANTRA Zone FAQs
        • MANTRA Zone General FAQs
          • What wallets are currently supported on the MANTRA Zone?
          • How do I connect my wallet to the MANTRA Zone?
          • How do I copy my connected wallet’s address?
          • How do I connect a different wallet to the MANTRA Zone?
          • Can I disconnect my wallet from MANTRA Zone?
          • How can I resolve seeing multiple entires of the same amount of testnet OM in my Keplr wallet?
          • The question that I have is not covered by the FAQ, what should I do?
        • MANTRA Bridge FAQs
          • What is MANTRA Bridge?
          • Why should I use the MANTRA Bridge?
          • Is there a fee for using the MANTRA Bridge?
          • Do I have to pay gas fees?
          • What tokens will I receive?
          • How does the migration process work?
          • How long should the MANTRA Bridge order take?
          • How can I track the status of my MANTRA Bridge order?
          • What happens to my ERC20 OM tokens once I use the MANTRA Bridge?
          • Which network can I use on the MANTRA Bridge?
          • What should I do if I see ‘Wrong network’ error on the app?
          • Will there be a two-way bridge in the future?
          • My MANTRA Bridge order is stuck on Ethereum?! How can I fix this?
          • Who can I contact for support during the migration process?
          • Which EVM chains can I bridge from?
          • Are the OM tokens I receive wrapped tokens or the native MANTRA Chain OM tokens?
          • Is the MANTRA Bridge a non-custodial solution?
          • What happens if the MANTRA Bridge is hacked or goes offline?
          • Are there any risks associated with using the MANTRA Bridge?
          • How does the MANTRA Bridge ensure the security of my tokens during migration?
          • Can I use my existing Ethereum wallet to access the MANTRA Bridge?
          • How does wallet linking and airdrop participation work?
        • Stake FAQs
          • What is Stake?
          • What are validators, and how do I choose one?
          • What rewards can I earn by staking $OM?
          • How are staking rewards calculated?
          • Can I choose to unstake my $OM coins?
          • What is the unbonding period?
          • Can I change validators after staking $OM?
          • Can I stake $OM with multiple validators?
          • Are there any risks involved with staking $OM?
          • Will my rewards gets automatically restaked after redemption?
          • Do I lose my claimable rewards when performing actions with a validator with unclaimed rewards?
          • My wallet is showing a 0 balance even though I have funds. What should I do?
          • How do I know if my $OM is staked?
        • Chakra Pool FAQs
          • What are the Chakra Pool rewards?
          • What is USDY?
          • How do I get the yield from the treasury bonds by holding USDY?
          • Can I change my linked wallet?
          • I don’t remember my linked wallet - what can I do?
          • What are the bonus rewards and where I can see my rewards?
          • How are the USDY rewards calculated and when can I redeem my USDY rewards?
          • How are the $OM rewards calculated and when can I redeem my $OM rewards?
          • How are the $ONDO rewards calculated and when can I redeem my $ONDO rewards?
          • What can I do with my USDY and $OM rewards after redemption?
        • MANTRA Zone Leaderboard FAQs
          • I have someone that wants to participate in the MANTRA Zone Leaderboard but they don’t know how.
          • What does the ⚡icon and ‘Get + x KARMA’ text under the ‘KARMA’ section refer to?
          • The KARMA on the Zone Leaderboard only lists MANTRA Chain wallets, how to check my EVM wallet rank?
          • Which wallet IDs are visible on the Leaderboard Ranking Table?
          • Why are there three different categories for the Leaderboard Ranking Table?
          • How can I get the Leaderboard Ranking Table to show where my connected wallet ranks currently?
          • How can I search where a specific wallet ID ranks in the Leaderboard Ranking Table?
          • How can I search what wallet ID currently ranks in a specific ranking number?
          • My KARMA and/or multiplier amount did not update on the Leaderboard Ranking Table, why is that?
          • What is the calculation for the KARMA?
          • I’m unable to see the OMly Faucet on my Keplr/Cosmostation wallet
          • I'm unable to see my OMly Faucet Claim transaction on the explorer
          • The question that I have is not covered by the FAQ, what should I do?
        • MANTRA Swap FAQs
          • What is Swap?
          • How can I swap?
          • I have connected my EVM wallet, but I’m still unable to swap. Why?
          • Where can I view my past transactions?
          • Why is my swap button disabled?
          • Why can’t I swap with a slippage more than 5%?
          • What is Exchange Rate?
          • How do I get OM tokens in my wallet?
          • How do I get other tokens in my wallet?
          • Will the swap fee be deducted from my sell or buy token?
          • Why can’t I see the balance of tokens in my wallet but on the Swap panel?
          • How do I add liquidity to a pool?
          • I am unable to provide liquidity to the pool.
          • While adding liquidity, why are the two tokens USD value not equal?
          • How do I withdraw my funds from Liquidity Pools?
          • Why can I not see my tokens for withdrawal?
          • Why can I not remove liquidity?
          • Why is my deposited value of the two tokens changing in my position?
          • Do liquidity pools have a bonding period?
          • What are LP tokens?
          • What can I do with my LP tokens?
          • Why can I not see any LP token balance?
          • I am connected with my MANTRA wallet, but still cannot view my positions?
          • I provided liquidity, but I can’t see my position. What should I do?
          • Why is my transaction not successful?
    • Glossary
    • MANTRA's Incentivised Testnet
      • Testnet Phase 1
      • Hongbai - Testnet Phase 2
  • Third Party Bridges
    • Base Bridge
    • Polygon Bridge
Powered by GitBook
On this page
  1. Developing on MANTRA Chain
  2. Getting Started

Install Prerequisites

In this section, we will set up our machine and install the prerequisites for developing, deploying and interacting with smart contracts on MANTRA Chain.

PreviousDuKong TestnetNextSetting Up Dev Environment

Last updated 6 months ago

Go

You can set up Go following the . The latest versions of mantrachaind require go version v1.18+.

Rust

Assuming you have never worked with Rust, you will first need to install some tooling.

The standard approach is to use rustup to maintain dependencies and handle updating multiple versions of cargo and rustc, which you will be using.

Installing Rust in Linux and Mac

First, . Once installed, make sure you have the wasm32 target:

rustup default stable
cargo version
# If this is lower than 1.55.0+, update
rustup update stable

rustup target list --installed
rustup target add wasm32-unknown-unknown

wasm32-unknown-unknown states the target specification, and is called "target triple" consisting of three strings separated by hyphens.

Strings represent architecture, vendor, and operating system respectively. unknown means there is no specifications for the target and the application is more flexible.

Read the for a more detailed explanation.

Installing Rust in Windows 10

Continue running rustup-init.exe, and proceed with the installation.

Optionally:

Install the wasm32 target:

rustup default stable
cargo version
# If this is lower than 1.55.0, update
rustup update stable

rustup target list --installed
rustup target add wasm32-unknown-unknown

Docker


Install cargo-generate package

Cargo-generate is a command-line tool used in Rust programming for generating new Rust projects from predefined templates. It allows developers to quickly set up a new project with a specific structure, dependencies, and configuration.

cargo install cargo-generate --features vendored-openssl

cargo install cargo-run-script

mantrachaind

mantrachaind is the backbone of the CosmWasm platform for MANTRA DuKong Chain. The binary is pre-built for both Linux and MacOS clients.

On Linux:

# Download the CLI
curl -LO < https://github.com/MANTRA-Chain/mantrachain/releases/download/v1.0.0-rc3/mantrachaind-1.0.0-rc3-darwin-arm64>

# Unzip the CLI
unzip mantrachaind-1.0.0-rc3-darwin-arm64

On MacOS:

# Download the CLI for Intel chips
curl -LO <https://github.com/MANTRA-Chain/mantrachain/releases/download/v1.0.0-rc3/mantrachaind-1.0.0-rc3-darwin-amd64.tar.gz>

# Download the CLI for Silicon chips (M1, M2...)
curl -LO <https://github.com/MANTRA-Chain/mantrachain/releases/download/v1.0.0-rc3/mantrachaind-1.0.0-rc3-darwin-arm64.tar.gz>

# Extract the CLI
tar -xzvf mantrachaind-1.0.0-rc3-darwin-*.tar.gz

You should see the following output, or similar, after executing the mantrachaind command.

Usage:
mantrachaind [command]

Available Commands:
    add-genesis-account Add a genesis account to genesis.json
    collect-gentxs      Collect genesis txs and output a genesis.json file
    config              Create or query an application CLI configuration file
    debug               Tool for helping with debugging your application
    export              Export state to JSON
    gentx               Generate a genesis tx carrying a self delegation
    help                Help about any command
    init                Initialize private validator, p2p, genesis, and application configuration files
    keys                Manage your application's keys
    migrate             Migrate genesis to a specified target version
    query               Querying subcommands
    rollback            rollback cosmos-sdk and tendermint state by one height
    start               Run the full node
    status              Query remote node for status
    tendermint          Tendermint subcommands
    tx                  Transactions subcommands
    validate-genesis    validates the genesis file at the default location or at the location passed as an arg
    version             Print the application binary version information

Flags:
    -h, --help                help for mantrachaind
        --home string         directory for config and data (default "/Users/<your-user-name>/.mantrachain")
        --log_format string   The logging format (json|plain) (default "plain")
        --log_level string    The logging level (trace|debug|info|warn|error|fatal|panic) (default "info")
        --trace               print out full stack trace on errors

if you receive the following error: mantrachaind: error while loading shared libraries: libwasmvm.x86_64.so: cannot open shared object file: No such file or directory you will need to install the CosmWasm library libwasmvm.x86_64.so (see below).

Install CosmWasm library

If you are on a x86_64 system:

sudo wget -P /usr/lib <https://github.com/CosmWasm/wasmvm/releases/download/v2.1.0/libwasmvm.x86_64.so>

On arm64 (i.e. Apple silicon chips):

sudo wget -P /usr/lib <https://github.com/CosmWasm/wasmvm/releases/download/v2.1.0/libwasmvm.aarch64.so>

On MacOS, you might not be allowed to write on /usr/lib even as root.
If that’s the case, try storing libwasmvm.*.so on /usr/local/lib instead.
For certain operating systems, you might encounter architecture compatibility issues with mantrachaind, as the binary is designed for the AMD64 (x86_64) architecture. This can make direct execution on some systems difficult.

To address this, you have a few options: use Docker to emulate an x86_64 environment on your ARM64 Mac, utilize GitHub Codespaces, or run a virtual machine that supports the x86_64 architecture.
   
Additionally, you can refer to the section on "Deployment Using TypeScript (Windows/Linux/Mac)" to set up your dev environment and deploy your contracts on the DuKong Testnet.

Setting up jq

jq is a lightweight and flexible command-line JSON processor. It helps us to slice and filter and map and transform structured JSON data.

Installation will vary depending on your operating system (i.e. Linux, MacOS or Windows).

Linux (Ubuntu / Debian):

sudo apt-get install jq

MacOS:

brew install jq

Windows:

winget install jqlang.jq

Git

Git is a free and open-source version control system that allows you to track changes made to code, collaborate with others, and maintain different versions of your project. It's primarily used for source code management, but it can be used to track changes in any set of files.

Linux (Ubuntu / Debian):

sudo apt-get install git

MacOS:

brew install git

Windows:


Setting up your IDE

We will need a good IDE for developing smart contracts with Rust. The following development environments are highly recommended and coupling them with the corresponding Rust plugins will help you learn the syntax, especially if you have no prior experience.

There are other editors out there with varying degrees of Rust support. However, unless you have a strong preference for another editor (e.g., Sublime, Emacs, Vim) , trying one of the two above is recommended, especially if you are new to Rust. Once you are confident in the language, you can always use another editor and customize it to your liking.

First, download and execute rustup-init.exe from or .

If requested, manually download and install Visual C++ Build Tools 2019, from . Make sure "Windows 10 SDK" and "English language pack" are selected.

Download and install , and modify the environment variables to add \<gvim folder> to the PATH.

Download and install . Modify the environment variables to add \<git folder>\bin to PATH.

Turn on Developer Mode (Settings -> Update and Security: For Developers) and enable Device Discovery, to be able to access the Windows 10 server through ssh ().

Docker is essential for setting up and running applications in isolated environments. You can install Docker by following the instructions on the for your respective operating system. If you are a Windows user, make sure to activate the WSL integration in Docker Desktop settings.

You can find all the pre-built binaries on the .

More information can be found in here:

Alternatively, see the '' site for other options.

Go to the official and download the latest version of Git for Windows.

offers great support for Rust, especially when coupled with the extension. This extension makes use of the rust compiler to type-check all your code as you save. This gives the same error messages as the actual compiler would and highlights the errors, but it can be a bit slow to respond (as it runs the compiler). It is a solid option, particularly if you are used to VSCode.

Another option is , Jetbrains’ IDE specifically designed for Rust development. It offers a robust suite of features to streamline the development process, including intelligent code completion, real-time error detection, and powerful refactoring tools. RustRover enhances productivity with its customizable interface, seamless integration with version control systems, and comprehensive debugging capabilities. It is highly recommended, more so, if you are coming from another Jetbrain product (eg. Goland).

official documentation
install rustup
rust docs
rustup.rs
rust-lang.org
https://visualstudio.microsoft.com/visual-cpp-build-tools/
gvim
git for windows
https://www.ctrl.blog/entry/how-to-win10-ssh-service.html#section-mssshserv-enabl
official Docker website
MANTRA GitHub Repo
https://github.com/CosmWasm/wasmvm
Download jq
Git download page
VSCode
rust-analyzer
RustRover