Skip to main content

SDK & Integration Guide

Unit Network is built on Substrate, so you can use the standard Polkadot.js API to interact with the blockchain programmatically.


Installation

npm install @polkadot/api @polkadot/keyring @polkadot/util

Connect to Unit Network

import { ApiPromise, WsProvider } from '@polkadot/api';

async function connect() {
const provider = new WsProvider('wss://mainnet-unit.com:443');
const api = await ApiPromise.create({ provider });

await api.isReady;
console.log('Connected to Unit Network');

// Chain info
const [chain, nodeName, nodeVersion] = await Promise.all([
api.rpc.system.chain(),
api.rpc.system.name(),
api.rpc.system.version(),
]);

console.log(`Chain: ${chain} | Node: ${nodeName} v${nodeVersion}`);
return api;
}

Query Token Data

Get Token Metadata

// Query the Assets pallet for token info
const tokenId = 0; // UNITCOIN
const metadata = await api.query.assets.metadata(tokenId);
console.log('Token:', metadata.toHuman());

Get Account Balance

const address = '5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY';
const balance = await api.query.system.account(address);
console.log('Free balance:', balance.data.free.toHuman());

Get Treasury Value

const treasuryInfo = await api.query.treasury.treasuries(tokenId);
console.log('Treasury:', treasuryInfo.toHuman());

Subscribe to Real-Time Data

// Watch token price changes
const unsubscribe = await api.query.oracle.values(tokenId, (value) => {
console.log('Price update:', value.toHuman());
});

// Later: unsubscribe()

Submit Transactions

caution

Submitting transactions requires a funded account and proper key management. Never expose private keys in client-side code.

import { Keyring } from '@polkadot/keyring';

const keyring = new Keyring({ type: 'sr25519' });
const account = keyring.addFromUri('//Alice'); // Dev only!

// Transfer tokens
const transfer = api.tx.assets.transfer(
tokenId, // Token ID
recipient, // Destination address
amount // Amount (with decimals)
);

const hash = await transfer.signAndSend(account);
console.log('Transaction hash:', hash.toHex());

Example: Portfolio Tracker

import { ApiPromise, WsProvider } from '@polkadot/api';

async function getPortfolio(address) {
const api = await ApiPromise.create({
provider: new WsProvider('wss://mainnet-unit.com:443')
});

// Get all token balances for an address
const coreTokens = [
{ id: 0, symbol: 'UNITCOIN' },
{ id: 1, symbol: 'BTCU' },
{ id: 2, symbol: 'ETHU' },
{ id: 3, symbol: 'DOTU' },
{ id: 4, symbol: 'USDU' },
];

const portfolio = await Promise.all(
coreTokens.map(async (token) => {
const balance = await api.query.assets.account(token.id, address);
const price = await api.query.oracle.values(token.id);
return {
symbol: token.symbol,
balance: balance?.toHuman() || '0',
priceUsd: price?.toHuman() || '0',
};
})
);

console.table(portfolio);
await api.disconnect();
}

TypeScript Support

Polkadot.js provides full TypeScript support:

import { ApiPromise, WsProvider } from '@polkadot/api';
import type { Header } from '@polkadot/types/interfaces';

const api: ApiPromise = await ApiPromise.create({
provider: new WsProvider('wss://mainnet-unit.com:443')
});

const header: Header = await api.rpc.chain.getHeader();
console.log(`Block #${header.number.toNumber()}`);