Code Examples
Example code for interacting with Classic USD using popular libraries. These snippets show common operations like reading balances and transferring tokens.
Note: Replace placeholder addresses with actual contract addresses from the contracts page before using in production.
Using viem (Recommended)
viem is a modern TypeScript library for Ethereum interactions.
Install viem
npm install viemRead $USC Balance
import { createPublicClient, http, parseAbi } from 'viem'
import { etc } from 'viem/chains'
const USC_ADDRESS = '0xDE093684c796204224BC081f937aa059D903c52a' // Replace with actual address
const client = createPublicClient({
chain: etc,
transport: http('https://etc.rivet.link'),
})
const erc20Abi = parseAbi([
'function balanceOf(address owner) view returns (uint256)',
'function decimals() view returns (uint8)',
'function symbol() view returns (string)',
])
async function getUSCBalance(address: string) {
const balance = await client.readContract({
address: USC_ADDRESS,
abi: erc20Abi,
functionName: 'balanceOf',
args: [address],
})
// USC has 6 decimals
return Number(balance) / 1e6
}
// Usage
const balance = await getUSCBalance('0xYourAddress')
console.log(`Balance: ${balance} USC`)Transfer $USC
import { createWalletClient, http, parseAbi, parseUnits } from 'viem'
import { privateKeyToAccount } from 'viem/accounts'
import { etc } from 'viem/chains'
const USC_ADDRESS = '0xDE093684c796204224BC081f937aa059D903c52a' // Replace with actual address
const account = privateKeyToAccount('0xYourPrivateKey')
const walletClient = createWalletClient({
account,
chain: etc,
transport: http('https://etc.rivet.link'),
})
const erc20Abi = parseAbi([
'function transfer(address to, uint256 amount) returns (bool)',
])
async function transferUSC(to: string, amount: number) {
// Convert to 6 decimals
const value = parseUnits(amount.toString(), 6)
const hash = await walletClient.writeContract({
address: USC_ADDRESS,
abi: erc20Abi,
functionName: 'transfer',
args: [to, value],
})
return hash
}
// Usage: Transfer 100 USC
const txHash = await transferUSC('0xRecipient', 100)
console.log(`Transaction: ${txHash}`)Using ethers.js
Alternative example using ethers.js.
Read $USC Balance with ethers
import { ethers } from 'ethers'
const USC_ADDRESS = '0xDE093684c796204224BC081f937aa059D903c52a' // Replace with actual address
const RPC_URL = 'https://etc.rivet.link'
const provider = new ethers.JsonRpcProvider(RPC_URL)
const erc20Abi = [
'function balanceOf(address owner) view returns (uint256)',
'function decimals() view returns (uint8)',
]
const contract = new ethers.Contract(USC_ADDRESS, erc20Abi, provider)
async function getUSCBalance(address: string) {
const balance = await contract.balanceOf(address)
const decimals = await contract.decimals()
return ethers.formatUnits(balance, decimals)
}
// Usage
const balance = await getUSCBalance('0xYourAddress')
console.log(`Balance: ${balance} USC`)ERC-20 ABI Reference
$USC implements the standard ERC-20 interface. Here are the commonly used functions:
| Function | Description |
|---|---|
| balanceOf(address) | Get token balance of an address |
| transfer(address, uint256) | Transfer tokens to an address |
| approve(address, uint256) | Approve spender allowance |
| transferFrom(address, address, uint256) | Transfer using allowance |
| allowance(address, address) | Check spender allowance |
| totalSupply() | Get total token supply |
| decimals() | Get token decimals (6) |