Movatterモバイル変換


[0]ホーム

URL:


Skip to main content
Web3 [de]coded
  • Introduction
Chainstack ChatGPT plugin
Chainstack DLP browser extension
Advanced APIs
Tooling

Monad tooling

Complete Monad tooling guide for Chainstack nodes. Use MetaMask, Hardhat, ethers.js, viem, Foundry, Remix IDE, and more to build dApps on Monad blockchain.

Get started with areliable Monad RPC endpoint to use the tools below.
Monad is EVM compatible at the bytecode level, so all standard Ethereum development tools work out of the box without modification.

MetaMask

Onnode access details, clickConnect wallet.

Phantom

Phantom is a secure multi-chain wallet that supports Monad.
  1. InstallPhantom browser extension or mobile app.
  2. In Phantom, navigate toSettings >Developer Settings >Add Network.
  3. Enter the network details:
    • Network name —Monad Mainnet
    • RPC URL — your Chainstack endpoint
    • Chain ID —143
    • Currency symbol —MON
    • Block explorer URL —https://monvision.io
  4. ClickSave.

Backpack

Backpack is a next-level wallet and exchange that supports Monad.
  1. InstallBackpack browser extension or mobile app.
  2. Navigate toSettings >Networks >Add Custom Network.
  3. Enter the network details:
    • Network name —Monad Mainnet
    • RPC URL — your Chainstack endpoint
    • Chain ID —143
    • Currency symbol —MON
    • Block explorer URL —https://monvision.io
  4. Save the configuration.

Rabby

Rabby is a non-custodial multi-chain wallet with network auto-detection and transaction risk alerts.
  1. InstallRabby browser extension.
  2. In Rabby, navigate toSettings >Custom Network.
  3. Add your Chainstack endpoint with chain ID143.

HaHa

HaHa is a smart wallet with DeFi integrations, account abstraction support, and hardware wallet compatibility.
  1. InstallHaHa browser extension or mobile app.
  2. Navigate to wallet settings and selectAdd Network.
  3. Enter the network details:
    • Network name —Monad Mainnet
    • RPC URL — your Chainstack endpoint
    • Chain ID —143
    • Currency symbol —MON
    • Block explorer URL —https://monvision.io
  4. Save the configuration.

Hardhat

ConfigureHardhat to deploy contracts and interact through your Monad nodes.
  1. InstallHardhat and create a project.
  2. Create a new environment inhardhat.config.js:
    require("@nomiclabs/hardhat-waffle");...module.exports = {  solidity: "0.8.19",  networks: {    chainstack: {        url: "YOUR_CHAINSTACK_ENDPOINT",        accounts: ["YOUR_PRIVATE_KEY"]    },  }};
    where
    • YOUR_CHAINSTACK_ENDPOINT — your node HTTPS or WSS endpoint protected either with the key or password. Seenode access details.
    • YOUR_PRIVATE_KEY — the private key of the account that you use to deploy the contract
  3. Runnpx hardhat run scripts/deploy.js --network chainstack and Hardhat will deploy using Chainstack.
See alsoForking EVM-compatible mainnet with Hardhat.

Remix IDE

To make Remix IDE interact with the network through a Chainstack node:
  1. GetMetaMask and set it to interact through a Chainstack node. SeeInteracting through MetaMask.
  2. In Remix IDE, navigate to theDeploy tab. SelectInjected Provider - MetaMask inEnvironment.
This will engage MetaMask and make Remix IDE interact with the network through a Chainstack node.For a detailed tutorial with Remix IDE, seeTrust fund account with Remix.

web3.py

Build DApps usingweb3.py and Monad nodes deployed with Chainstack.
  1. Installweb3.py.
  2. Connect over HTTP or WebSocket. See alsoEVM node connection: HTTP vs WebSocket.

HTTP

Use theHTTPProvider to connect to your node endpoint and get the latest block number:
from web3import Web3web3= Web3(Web3.HTTPProvider('YOUR_CHAINSTACK_ENDPOINT'))print(web3.eth.block_number)
from web3import Web3web3= Web3(Web3.HTTPProvider('https://%s:%s@%s'% ("USERNAME","PASSWORD","HOSTNAME")))print(web3.eth.block_number)
where
  • YOUR_CHAINSTACK_ENDPOINT — your node HTTPS endpoint protected either with the key or password
  • HOSTNAME — your node HTTPS endpoint hostname
  • USERNAME — your node access username (for password-protected endpoints)
  • PASSWORD — your node access password (for password-protected endpoints)
See alsonode access details.

WebSocket

Use theWebsocketProvider object to connect to your node WSS endpoint and get the latest block number:
from web3import Web3web3= Web3(Web3.WebsocketProvider('YOUR_CHAINSTACK_ENDPOINT'))print(web3.eth.block_number)
from web3import Web3web3= Web3(Web3.WebsocketProvider('wss://%s:%s@%s'% ("USERNAME","PASSWORD","HOSTNAME")))print(web3.eth.block_number)
where
  • YOUR_CHAINSTACK_ENDPOINT — your node WSS endpoint protected either with the key or password
  • HOSTNAME — your node WSS endpoint hostname
  • USERNAME — your node access username (for password-protected endpoints)
  • PASSWORD — your node access password (for password-protected endpoints)
See alsonode access details.See alsoWebSocket connection to an EVM node.

web3.php

Build DApps usingweb3.php and Monad nodes deployed with Chainstack.
  1. Installweb3.php.
  2. Connect over HTTP:
    <?phprequire_once "vendor/autoload.php";use Web3\Web3;use Web3\Providers\HttpProvider;use Web3\RequestManagers\HttpRequestManager;$web3 = new Web3(new HttpProvider(new HttpRequestManager("YOUR_CHAINSTACK_ENDPOINT",5)));?>
    where YOUR_CHAINSTACK_ENDPOINT is your node HTTPS endpoint protected either with the key or password
  3. UseJSON-RPC methods to interact with the node.Example to get the latest block number:
    <?phprequire_once "vendor/autoload.php";use Web3\Web3;use Web3\Providers\HttpProvider;use Web3\RequestManagers\HttpRequestManager;$web3 = new Web3(new HttpProvider(new HttpRequestManager("YOUR_CHAINSTACK_ENDPOINT",5)));$eth = $web3->eth;$eth->blockNumber(function ($err,$data) {     print "$data \n";});?>

web3j

Build DApps usingweb3j and Monad nodes deployed with Chainstack.Use theHttpService object to connect to your node endpoint.Example to get the latest block number:
package getLatestBlock;import java.io.IOException;import java.util.logging.Level;import java.util.logging.Logger;import org.web3j.protocol.Web3j;import org.web3j.protocol.core.DefaultBlockParameterName;import org.web3j.protocol.core.methods.response.EthBlock;import org.web3j.protocol.exceptions.ClientConnectionException;import org.web3j.protocol.http.HttpService;import okhttp3.Authenticator;import okhttp3.Credentials;import okhttp3.OkHttpClient;import okhttp3.Request;import okhttp3.Response;import okhttp3.Route;public final class App {  private static final String USERNAME = "USERNAME";  private static final String PASSWORD = "PASSWORD";  private static final String ENDPOINT = "ENDPOINT";  public static void main(String[]args) {    try {      OkHttpClient.Builder clientBuilder = new OkHttpClient.Builder();      clientBuilder.authenticator(new Authenticator() {          @Override public Request authenticate(Route route,Response response)throws IOException {              String credential = Credentials.basic(USERNAME, PASSWORD);              return response.request().newBuilder().header("Authorization", credential).build();          }      });      HttpService service = new HttpService(ENDPOINT,clientBuilder.build(),false);      Web3j web3 = Web3j.build(service);      EthBlock.Block latestBlock = web3.ethGetBlockByNumber(DefaultBlockParameterName.LATEST,false).send().getBlock();      System.out.println("Latest Block: #" + latestBlock.getNumber());    }catch (IOException |ClientConnectionException ex) {      Logger.getLogger(App.class.getName()).log(Level.SEVERE,null, ex);    }  }}
where
  • ENDPOINT — your node HTTPS endpoint protected either with the key or password
  • USERNAME — your node access username (for password-protected endpoints)
  • PASSWORD — your node access password (for password-protected endpoints)
See alsothe full code on GitHub.

ethers.js

Build DApps usingethers.js and Monad nodes deployed with Chainstack.
  1. Installethers.js.
  2. Connect over HTTP or WebSocket. See alsoEVM node connection: HTTP vs WebSocket.

HTTP

Use theJsonRpcProvider object to connect to your node endpoint and get the latest block number:
const {ethers }= require("ethers");var urlInfo = {  url: "YOUR_CHAINSTACK_ENDPOINT",};var provider = new ethers.providers.JsonRpcProvider(urlInfo,NETWORK_ID);provider.getBlockNumber().then(console.log);
const {ethers }= require("ethers");var urlInfo = {  url: "YOUR_CHAINSTACK_ENDPOINT",  user: "USERNAME",  password: "PASSWORD",};var provider = new ethers.providers.JsonRpcProvider(urlInfo,NETWORK_ID);provider.getBlockNumber().then(console.log);
where
  • YOUR_CHAINSTACK_ENDPOINT — your node HTTPS endpoint protected either with the key or password
  • USERNAME — your node access username (for password-protected endpoints)
  • PASSWORD — your node access password (for password-protected endpoints)
  • NETWORK_ID — Monad network ID:
    • Mainnet:143
    • Testnet:10143
See alsonode access details.

WebSocket

Use theWebSocketProvider object to connect to your node WSS endpoint and get the latest block number:
const {ethers }= require("ethers");const provider = new ethers.providers.WebSocketProvider(  "YOUR_CHAINSTACK_ENDPOINT",  NETWORK_ID);provider.getBlockNumber().then(console.log);
where
  • YOUR_CHAINSTACK_ENDPOINT — your node WSS endpoint endpoint protected either with the key or password
  • NETWORK_ID — Monad network ID:
    • Mainnet:143
    • Testnet:10143
See alsonode access details.

viem

Build DApps usingviem and Monad nodes deployed with Chainstack.
  1. Installviem.
  2. Connect over HTTP or WebSocket.

HTTP

Use thecreatePublicClient function to connect to your node endpoint and get the latest block number:
import {createPublicClient,http }from 'viem'const client = createPublicClient({  transport: http('YOUR_CHAINSTACK_ENDPOINT')})const blockNumber = await client.getBlockNumber()console.log(blockNumber)
where YOUR_CHAINSTACK_ENDPOINT is your node HTTPS endpoint protected either with the key or password

WebSocket

Use thecreatePublicClient function with WebSocket transport:
import {createPublicClient,webSocket }from 'viem'const client = createPublicClient({  transport: webSocket('YOUR_CHAINSTACK_ENDPOINT')})const blockNumber = await client.getBlockNumber()console.log(blockNumber)
where YOUR_CHAINSTACK_ENDPOINT is your node WSS endpoint protected either with the key or password

Brownie

  1. InstallBrownie.
  2. Use thebrownie networks add command with the node endpoint. For example, Monad mainnet:
    brownie networks add Monad ID name="NETWORK_NAME" host=YOUR_CHAINSTACK_ENDPOINT chainid=NETWORK_ID
    where
    • ID — any name that you will use as the network tag to run a deployment. For example,chainstack-mainnet.
    • NETWORK_NAME — any name that you want to identify the network by in the list of networks. For example,Mainnet (Chainstack).
    • YOUR_CHAINSTACK_ENDPOINT — your node HTTPS or WSS endpoint protected either with the key or password
    • NETWORK_ID — Monad network ID:
      • Mainnet:143
      • Testnet:10143
Example to run the deployment script:
brownie run deploy.py --network chainstack-mainnet

Foundry

  1. InstallFoundry.
  2. Use--rpc-url to run the operation through your Chainstack node.

Forge

Useforge to develop, test, and deploy your smart contracts.To deploy a contract:
forge create CONTRACT_NAME --contracts CONTRACT_PATH --private-key YOUR_PRIVATE_KEY --rpc-url YOUR_CHAINSTACK_ENDPOINT
where
  • CONTRACT_NAME — name of the contract in the Solidity source code
  • CONTRACT_PATH — path to your smart contract
  • YOUR_PRIVATE_KEY — the private key to your funded account that you will use to deploy the contract.
  • YOUR_CHAINSTACK_ENDPOINT — your node HTTPS endpoint protected either with the key or password

Cast

Usecast to interact with the network and the deployed contracts.To get the latest block number:
cast block-number --rpc-url YOUR_CHAINSTACK_ENDPOINT
where YOUR_CHAINSTACK_ENDPOINT is your node HTTPS endpoint protected either with the key or password

Verify contracts

You can verify your smart contracts on Monad block explorers. For MonadExplorer (BlockVision), use Sourcify:
forge verify-contract CONTRACT_ADDRESS CONTRACT_NAME \  --verifier sourcify \  --verifier-url https://sourcify-api-monad.blockvision.org \  --rpc-url YOUR_CHAINSTACK_ENDPOINT
For Monadscan (Etherscan-based):
forge verify-contract CONTRACT_ADDRESS CONTRACT_NAME \  --verifier etherscan \  --verifier-url https://api.monadscan.com/api \  --etherscan-api-key YOUR_MONADSCAN_API_KEY \  --rpc-url YOUR_CHAINSTACK_ENDPOINT

Was this page helpful?

⌘I

[8]ページ先頭

©2009-2025 Movatter.jp