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: