Para Server SDK seamlessly integrates with Cosmos-based blockchains through the CosmJS library. Once you’ve set up and authenticated your Para Server client, the Cosmos integration works identically to the client-side implementation.

Before using this integration, ensure you’ve completed the server setup by importing a client session or creating a pregenerated wallet. See the Server Setup Guide for details.

Installation

Install the required dependencies for Cosmos integration:

npm install @getpara/cosmjs-v0-integration @cosmjs/stargate @cosmjs/proto-signing

Implementation

The Para integration with CosmJS provides a custom signer that works with Stargate Client:

import { Para as ParaServer, Environment } from "@getpara/server-sdk";
import { ParaProtoSigner } from "@getpara/cosmjs-v0-integration";
import { SigningStargateClient } from "@cosmjs/stargate";

// Para server client (already authenticated)
const paraServer = new ParaServer(Environment.BETA, "YOUR_API_KEY");

// Create the Para Cosmos Signer
const signer = new ParaProtoSigner(paraServer, "cosmos");

// Connect to the Cosmos network
const rpcUrl = "https://rpc.cosmos.network"; // Replace with your preferred RPC endpoint
const client = await SigningStargateClient.connectWithSigner(rpcUrl, signer);

// Get the wallet address
const address = await signer.getAddress();
console.log(`Wallet address: ${address}`);

// Get account balance
const balance = await client.getBalance(address, "uatom");
console.log(`Balance: ${balance.amount} ${balance.denom}`);

// Send tokens
const recipient = "cosmos1recipient";
const amount = {
  denom: "uatom",
  amount: "100000", // 0.1 ATOM (uatom is microatom, 1 ATOM = 1,000,000 uatom)
};

const result = await client.sendTokens(
  address,
  recipient,
  [amount],
  {
    amount: [{ denom: "uatom", amount: "5000" }],
    gas: "200000",
  }
);

console.log(`Transaction hash: ${result.transactionHash}`);

Chain Support

The Para Cosmos integration supports various Cosmos-based chains. You can specify the chain when creating the signer:

// For Cosmos Hub
const cosmosSigner = new ParaProtoSigner(paraServer, "cosmos");

// For Osmosis
const osmosisSigner = new ParaProtoSigner(paraServer, "osmosis");

// For other supported chains
const otherChainSigner = new ParaProtoSigner(paraServer, "chainName");

Best Practices

  • Use appropriate gas settings for different types of transactions
  • Implement proper error handling for network failures
  • Consider retry logic for RPC endpoints
  • Always verify transaction details before sending

Learn More

For detailed examples of using Para with Cosmos, including chain-specific operations and advanced transaction types, refer to our web documentation:

Examples

Explore our server-side Cosmos integration examples: