LogoLogo
  • 🏠Getting Started
  • 📖Overview
    • CrossFi Chain Overview
    • Architecture
      • Cosmos and EVM Role
  • Economy Overview
    • Native Coins Overview
    • XFI Coin
    • MPX Coin
      • eMPX Token
    • Get coins
  • Concepts
    • Vision and Mission
    • Use Cases
    • Lore
    • Glossary
    • Roles
    • FAQ
  • Ecosystem
    • XFI Scan
    • XFI Console
      • XFI-MPX Staking
      • Governance (DAO)
      • XDS
    • xApp
      • Swap
      • LP Tokens
      • Staking
      • Escrow/Vesting
    • XFI Bridge
    • EXE Interchain Protocol
  • ⚒️Developers
    • Why Develop on CrossFi Chain?
    • Quickstart
    • EVM
      • Deploying Smart Contracts
    • Connect a Frontend
      • Mainnet Cosmos Part
      • Mainnet EVM Part
      • Testnet Cosmos Part
      • Testnet EVM part
    • Configuring a Wallet
    • Integrating Developer Tools
  • API and Endpoints
    • XFI Scan API
    • API and Available Endpoints
    • Available RPC / API Validators
  • 🏗️Node Operators
    • Join a Network
    • Becoming a Validator
      • Introduction to Validating
      • Creating A Validator
      • Securing A Validator
      • Running a Validator
    • Setting Up the CrossFi Chain Client
      • Upgrading the Chain
      • Sending Transactions
      • Upgrade Your Node
  • ℹ️SEE Also
    • Contact and Media Channels
      • Telegram Channel
      • Telegram Chat
      • Discord
      • Medium
      • X (ex. Twitter)
      • LinkedIn
  • GitHub
  • Cross Finance Ecosystem Website
Powered by GitBook
On this page
  1. Developers
  2. Connect a Frontend

Mainnet Cosmos Part

PreviousConnect a FrontendNextMainnet EVM Part

Last updated 6 months ago

CosmJS

In order to use the cosmJS library function in the CrossFi network, you need to patch the cosmJS library as in the example:

const { stringToPath } = require('@cosmjs/crypto');
const { DirectSecp256k1HdWallet } = require('@cosmjs/proto-signing');
const { SigningStargateClient, GasPrice } = require('@cosmjs/stargate');
const bech32Converter = require('bech32-converting');

require('dotenv').config();

const COSMOS_RPC_URL = 'https://tendermint-rpc.mainnet.ms';
const MNEMONIC = process.env.MNEMONIC || '';
const GAS_PRICE = {
  mpx: GasPrice.fromString('10000000000000mpx'),
  xfi: GasPrice.fromString('100000000000xfi'),
};
const PREFIX = 'mx';
const HD_PATHS = [stringToPath("m/44'/118'/0'/0/0"), stringToPath("m/44'/60'/0'/0/0")];

async function main() {
  const clientOptions = {
    gasPrice: GAS_PRICE.xfi,
    broadcastTimeoutMs: 5000,
    broadcastPollIntervalMs: 1000,
  };
  const signer = await DirectSecp256k1HdWallet.fromMnemonic(MNEMONIC, { prefix: PREFIX, hdPaths: HD_PATHS });
  const signingClient = await SigningStargateClient.connectWithSigner(COSMOS_RPC_URL, signer, clientOptions);
  const [oldAddressAccountData, newAddressAccountData] = await signer.getAccounts();
  const chainId = await signingClient.getChainId();

  console.log('chain id:', chainId);
  console.log('old address:', oldAddressAccountData.address); // previous mainnet network
  console.log('new address:', newAddressAccountData.address); // current mainnet network
  console.log('new evm address:', bech32Converter(PREFIX).toHex(newAddressAccountData.address));
}

main();
⚒️
https://github.com/crossfichain/js-tx-example