system_properties - JSON-RPC Method
Description
Returns the chain properties including token decimals, token symbol(s), and SS58 address format. This JSON-RPC method provides essential configuration information needed for properly formatting addresses and token amounts in applications.
Parameters
This method does not require any parameters.
Returns
Field | Type | Description |
---|---|---|
ss58Format | number | SS58 address format for this chain |
tokenDecimals | array | Array of token decimal places |
tokenSymbol | array | Array of token symbols |
Request Example
{
"jsonrpc": "2.0",
"method": "system_properties",
"params": [],
"id": 1
}
Response Example (Acala)
{
"jsonrpc": "2.0",
"result": {
"ss58Format": 10,
"tokenDecimals": [12, 12, 10, 10],
"tokenSymbol": ["ACA", "AUSD", "DOT", "LDOT"]
},
"id": 1
}
Code Examples
- Python
- JavaScript
- TypeScript (@polkadot/api)
import requests
import json
from decimal import Decimal
def get_system_properties():
url = "https://api-acala.n.dwellir.com/YOUR_API_KEY"
headers = {"Content-Type": "application/json"}
payload = {"jsonrpc": "2.0", "method": "system_properties", "params": [], "id": 1}
response = requests.post(url, headers=headers, data=json.dumps(payload))
return response.json()["result"]
properties = get_system_properties()
decimals = properties["tokenDecimals"][0]
symbol = properties["tokenSymbol"][0]
ss58_format = properties["ss58Format"]
print(f"Primary token: {symbol}")
print(f"Decimals: {decimals}")
print(f"SS58 Format: {ss58_format}")
class TokenFormatter:
def __init__(self, decimals, symbol):
self.decimals = decimals
self.symbol = symbol
self.unit = Decimal(10) ** decimals
def format_amount(self, raw_amount):
amount = Decimal(raw_amount) / self.unit
return f"{amount:.4f} {self.symbol}"
def to_raw(self, amount):
return int(Decimal(amount) * self.unit)
formatter = TokenFormatter(decimals, symbol)
print(formatter.format_amount(1000000000000))
const getChainProperties = async () => {
const response = await fetch('https://api-acala.n.dwellir.com/YOUR_API_KEY', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ jsonrpc: '2.0', method: 'system_properties', params: [], id: 1 })
});
const data = await response.json();
return data.result;
};
const properties = await getChainProperties();
const decimals = properties.tokenDecimals[0];
const symbol = properties.tokenSymbol[0];
const ss58Format = properties.ss58Format;
console.log(`Chain uses ${symbol} with ${decimals} decimals (SS58 ${ss58Format})`);
import { ApiPromise, WsProvider } from '@polkadot/api';
import { formatBalance } from '@polkadot/util';
const api = await ApiPromise.create({ provider: new WsProvider('wss://api-acala.n.dwellir.com/YOUR_API_KEY') });
const properties = await api.rpc.system.properties();
const ss58Format = properties.ss58Format.unwrapOr(10);
const tokenDecimals = properties.tokenDecimals.unwrapOr([12]);
const tokenSymbol = properties.tokenSymbol.unwrapOr(['ACA']);
formatBalance.setDefaults({ decimals: tokenDecimals.map(d => d.toNumber()), unit: tokenSymbol.map(s => s.toString()) });