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()}`);
Related Pages
- WebSocket Guide — Raw WebSocket RPC usage
- API Reference — REST API endpoints
- Assets Pallet — On-chain asset management
- Exchange Pallet — DEX mechanics