Selendra

Documentation

Start with Selendra SDK

5-minute quickstart for Selendra SDK

Get started with Selendra SDK in 5 minutes. Three paths: React, Substrate, or EVM.

Install

npm install @selendrajs/sdk

Requirements: Node.js ≥16, React ≥18 (for hooks)

Path 1: React Developer

Wrap App

import { SelendraProvider } from "@selendrajs/sdk/react";

function App() {
  return (
    <SelendraProvider endpoint="wss://rpc-testnet.selendra.org">
      <YourComponents />
    </SelendraProvider>
  );
}

Use Hooks

import { useBalance, useTransaction } from "@selendrajs/sdk/react";

function WalletDisplay() {
  const { balance, loading } = useBalance(
    "5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY"
  );
  const { sendTransaction, status } = useTransaction();

  const handleSend = async () => {
    await sendTransaction({
      to: "5FHneW46xGXgs5mUiveU4sbTyGBzmstUspZC92UhjJM694ty",
      amount: "1000000000000",
    });
  };

  return (
    <>
      <div>Balance: {balance} SEL</div>
      <button onClick={handleSend} disabled={status === "pending"}>
        Send 1 SEL
      </button>
    </>
  );
}

Available: useSelendra, useBalance, useTransaction, useStaking, useContract, useEvents, and 9 more (docs)

Path 2: Substrate Developer

Connect & Query

import {
  SelendraSDK,
  ChainType,
  Connection,
  keypair_from_string,
} from "@selendrajs/sdk";

const sdk = new SelendraSDK({
  endpoint: "wss://rpc-testnet.selendra.org",
  chainType: ChainType.Substrate,
});
await sdk.connect();

// Get balance
const balance = await sdk.getBalance(
  "5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY"
);

// Send transaction
await sdk.submitTransaction({
  signer: "//Alice",
  to: "5FHneW46xGXgs5mUiveU4sbTyGBzmstUspZC92UhjJM694ty",
  amount: "1000000000000",
});

Staking

const conn = await Connection.new("wss://rpc-testnet.selendra.org");
const keypair = keypair_from_string("//Alice");
const signed = conn.sign(keypair);

await signed.stake_bond(1_000_000_000_000);
await signed.stake_nominate([
  "5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY",
  "5FHneW46xGXgs5mUiveU4sbTyGBzmstUspZC92UhjJM694ty",
]);

const info = await conn.get_staking_info(keypair.account_id());

Governance

const proposalsCount = await conn.get_treasury_proposals_count();
const validators = await conn.get_current_era_validators();

await signed.treasury_propose_spend(100_000_000_000_000, beneficiaryAddress);

Path 3: EVM (Beta)

Basic EVM operations. For full support, use web3.js.

const sdk = new SelendraSDK({
  endpoint: "https://rpc-testnet.selendra.org",
  chainType: ChainType.EVM,
});

const balance = await sdk.getBalance(
  "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb"
);

Limitations: Contract deployment, gas estimation, transaction history not ready. Use web3.js for production EVM.

Unified Accounts

import { UnifiedAccountManager } from "@selendrajs/sdk";

const manager = new UnifiedAccountManager(api);
const evmAddress = manager.substrateToEvm(substrateAddress);
const hasMapping = await manager.hasMappingOnChain(address);
await manager.claimDefaultEvmAddress(signer);

Network Endpoints

Testnet:

  • WS: wss://rpc-testnet.selendra.org
  • HTTP: https://rpc-testnet.selendra.org
  • Chain ID: 1953

Mainnet:

  • WS: wss://rpc.selendra.org
  • HTTP: https://rpc.selendra.org
  • Chain ID: 1961

Key Concepts

Decimals: Substrate uses 12, EVM uses 18

Formats: Substrate (SS58, starts with 5), EVM (hex, starts with 0x)

Status: pendingin_blockfinalized (2-3s)

Error Handling

try {
  await sdk.submitTransaction({...});
} catch (error) {
  if (error.code === "INSUFFICIENT_BALANCE") {
    console.log("Not enough balance");
  } else if (error.code === "INVALID_ADDRESS") {
    console.log("Address format invalid");
  }
}

Troubleshooting

IssueSolution
"Cannot connect"Check endpoint URL (wss:// or https://), try testnet
"Nonce too low"Query: await sdk.getAccountInfo(address)
"Insufficient balance"Get testnet SEL from faucet
"Module not found"Check React ≥18.0.0 installed

Examples

Clone and run: github.com/selendra/selendra-sdk/examples

git clone https://github.com/selendra/selendra-sdk
cd selendra-sdk/examples/simple-wallet
npm install && npm run dev

Next Steps


Support: GitHub Issues | Discussions

Contribute

Found an issue or want to contribute?

Help us improve this documentation by editing this page on GitHub.

Edit this page on GitHub