Smart Contracts
Explore USIC's audited smart contracts deployed on Base network.
Core Contracts
USI Token
ERC-20 token contract for the $USI platform token
0x987603A52d8B966E10FBD29DcB1A574049E25B07View X402 Payment Processor
Handles micropayment settlements for streaming
0x2345678901234567890123456789012345678901View Uniswap V4 Pool Manager
Uniswap V4 singleton pool manager for token swaps
0x8C4BcBE6b9eF47855f97E675296FA3F6fafa5F1AView Uniswap V4 State View
Read pool state and liquidity information
0x5d8E2E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8EView Track Registry
Stores track metadata and ownership information
0x3456789012345678901234567890123456789012View Token Factory
Deploys new track and profile token contracts for artists
0x4567890123456789012345678901234567890123View Staking Contract
Handles $USI staking and reward distribution
0x5678901234567890123456789012345678901234View Contract ABIs
Download the contract ABIs to integrate USIC into your application.
Security & Audits
Audit Reports
All USIC smart contracts have been audited by leading security firms to ensure the safety of user funds.
OpenZeppelin Audit
Core contracts audit - December 2024
Trail of Bits Audit
X402 protocol audit - January 2025
Bug Bounty Program
We offer rewards for responsible disclosure of security vulnerabilities. Bounties range from $1,000 to $50,000 depending on severity.
Learn MoreIntegration Examples
Reading Track Data
import { createPublicClient, http } from 'viem'
import { base } from 'viem/chains'
const client = createPublicClient({
chain: base,
transport: http()
})
const trackData = await client.readContract({
address: '0x3456789012345678901234567890123456789012',
abi: trackRegistryAbi,
functionName: 'getTrack',
args: [trackId]
})Checking $USI Balance
const balance = await client.readContract({
address: '0x987603A52d8B966E10FBD29DcB1A574049E25B07',
abi: erc20Abi,
functionName: 'balanceOf',
args: [userAddress]
})
console.log(`Balance: ${formatUnits(balance, 18)} USI`)Swap Tokens via Uniswap V4
import { executeV4Swap } from '@/lib/web3/uniswap-v4-swap'
const result = await executeV4Swap({
tokenIn: '0x...', // ETH or USDC
tokenOut: '0x...', // Profile or track token
amountIn: parseEther("0.1"),
slippageTolerance: 0.5, // 0.5%
walletClient
})
console.log(`Swap complete: ${result.txHash}`)Check Token Balance for Gating
import { checkTokenBalance } from '@/lib/web3/token-gate'
const hasAccess = await checkTokenBalance(
userAddress,
tokenAddress,
requiredBalance // e.g., 100 tokens
)
if (hasAccess) {
// Allow free streaming
} else {
// Require X402 payment
}