Getting Started
StableBonds Documentation
StableBonds is built on viem, wagmi, and Circle Web3 Services (WaaS). There is no proprietary SDK — all on-chain interactions use standard EVM tooling on Arc Testnet.
Connect to Arc Testnet
Arc Testnet (Chain ID 5042002) uses USDC as its native gas token. Connect using viem — the arcTestnet chain config is included in viem/chains.
// StableBonds uses viem + wagmi — no custom SDK required
// Install dependencies
npm install viem wagmi @circle-fin/web3-services-sdk
// Configure a public client on Arc Testnet
import { createPublicClient, http } from 'viem';
import { arcTestnet } from 'viem/chains';
const client = createPublicClient({
chain: arcTestnet, // Chain ID: 5042002
transport: http('https://rpc.testnet.arc.network')
});
// Verify connection
const block = await client.getBlockNumber();
console.log('Connected to Arc. Block:', block);Read USDC Balance
USDC on Arc Testnet is a standard ERC-20 token deployed at0x3600000000000000000000000000000000000000. Read balances using the standard balanceOf call. USDC uses 6 decimal places.
// Read your USDC balance on Arc Testnet
import { createPublicClient, http, formatUnits, parseAbi } from 'viem';
import { arcTestnet } from 'viem/chains';
const USDC_ADDRESS = '0x3600000000000000000000000000000000000000';
const client = createPublicClient({
chain: arcTestnet,
transport: http('https://rpc.testnet.arc.network')
});
const USDC_ABI = parseAbi([
'function balanceOf(address account) view returns (uint256)'
]);
const rawBalance = await client.readContract({
address: USDC_ADDRESS,
abi: USDC_ABI,
functionName: 'balanceOf',
args: ['0xYourWalletAddress']
});
// USDC uses 6 decimals
const balance = formatUnits(rawBalance, 6);
console.log('USDC Balance:', balance);Schedule a Bond Payment
Two-step process: first approve the vault to spend your USDC, then call deposit to lock funds into a yield-bearing bond. The vault address is 0x3522E90D3496D530F7bd2767bE818Cd2F6846b0A.
// Schedule a payment bond via the StableBonds vault contract
// The vault is deployed at: 0x3522E90D3496D530F7bd2767bE818Cd2F6846b0A
import { createWalletClient, http, parseUnits } from 'viem';
import { arcTestnet } from 'viem/chains';
import { privateKeyToAccount } from 'viem/accounts';
const VAULT_ADDRESS = '0x3522E90D3496D530F7bd2767bE818Cd2F6846b0A';
const USDC_ADDRESS = '0x3600000000000000000000000000000000000000';
const account = privateKeyToAccount('0xYourPrivateKey');
const walletClient = createWalletClient({
account,
chain: arcTestnet,
transport: http('https://rpc.testnet.arc.network')
});
// Step 1 — Approve vault to spend USDC
const approveHash = await walletClient.writeContract({
address: USDC_ADDRESS,
abi: parseAbi(['function approve(address spender, uint256 amount) returns (bool)']),
functionName: 'approve',
args: [VAULT_ADDRESS, parseUnits('1000', 6)] // 1,000 USDC
});
// Step 2 — Deposit into vault to start earning yield
const depositHash = await walletClient.writeContract({
address: VAULT_ADDRESS,
abi: parseAbi(['function deposit(uint256 amount, address recipient, uint256 maturityDays)']),
functionName: 'deposit',
args: [parseUnits('1000', 6), '0xVendorAddress', 90n] // 90-day bond
});
console.log('Bond created. Tx:', depositHash);Circle Smart Account Authentication
StableBonds uses Circle Web3 Services (WaaS) for user authentication. Users sign in via Passkey (Touch ID / Face ID / Windows Hello) — no seed phrase, no browser extension required. The resulting Circle Smart Account gets gasless transactions on Arc.
// Sign in with Circle Smart Account (Passkey / WebAuthn)
// StableBonds uses Circle WaaS — no seed phrase required
import { W3SSdk } from '@circle-fin/web3-services-sdk';
const sdk = new W3SSdk({
appId: process.env.NEXT_PUBLIC_CIRCLE_APP_ID
});
// Trigger passkey login (Touch ID / Face ID / Windows Hello)
await sdk.execute(userToken, encryptionKey, [
{ type: 'createWallet' } // creates Circle Smart Account
]);
// Once logged in, the Smart Account address is available
// and all transactions are gasless on Arc (fees sponsored by Circle)Contract Addresses — Arc Testnet
All contracts below are deployed on Arc Testnet (Chain ID: 5042002). Verify on testnet.arcscan.app.
| Contract | Chain ID | Address |
|---|---|---|
| USDC (ERC-20) | 5042002 | 0x3600...0000 |
| StableBonds Vault | 5042002 | 0x3522...6b0A |
| Circle CCTP Token Messenger | 5042002 | 0x8FE6...2DAD |