Getting Started
USYC Protocol provides two core primitives for programmable Treasury yields on Arc Network:
Yield Vault
ERC-4626 compliant vault for automated Treasury yield access. Deposit USDC, earn ~4.5% APY.
Payment Streaming
Real-time payment flows for salaries, subscriptions, and vesting schedules.
Quick Start
Connect to Arc Network
Add Arc Testnet to your wallet (Chain ID: 462050)
Get Testnet Tokens
Use the faucet to get ARC and USYC tokens
Start Building
Integrate with our smart contracts using ethers.js or viem
Network Name: Arc Testnet
RPC URL: https://rpc.testnet.arc.network
Chain ID: 462050
Currency Symbol: ARC
Block Explorer: https://testnet.arcscan.appSmart Contracts
USYC Yield Vault
The main vault contract for depositing USDC and earning Treasury yields. Built on the ERC-4626 tokenized vault standard for maximum composability with other DeFi protocols.
Key Functions
deposit()Deposit USDC into the vault and receive vault shares representing your position. Your deposit immediately starts earning Treasury yields.
withdraw()Withdraw your USDC plus accumulated yield at any time. No lock-up periods or withdrawal penalties.
getYield()View your current accumulated yield without withdrawing. Returns the yield amount in USDC.
// Approve vault to spend USDC
await usdc.approve(vaultAddress, amount);
// Deposit USDC and receive vault shares
const shares = await vault.deposit(amount, recipientAddress);
// Check your current yield
const yield = await vault.getYield(userAddress);
// Withdraw anytime - get USDC + yield
await vault.withdraw(shares, recipientAddress, ownerAddress);Payment Streaming
Real-time payment streaming for continuous money flows. Perfect for salaries, subscriptions, and vesting schedules. Recipients can withdraw accumulated funds at any time.
Key Functions
createStream()Create a new payment stream to a recipient. Specify the total amount, start time, and end time. Funds flow continuously per second.
cancelStream()Cancel an active stream. The recipient keeps what has already streamed, and remaining funds return to the sender.
withdrawFromStream()Withdraw accumulated funds from a stream. Recipients can call this anytime to receive their earned tokens.
// Create a 30-day salary stream of 3,000 USDC
const streamId = await paymentStream.createStream(
employeeAddress, // Recipient
usdcAddress, // Token
3000 * 1e6, // Amount (6 decimals)
startTimestamp, // Start time
startTimestamp + 30 * 24 * 60 * 60 // End time (30 days)
);
// Employee withdraws accumulated salary
await paymentStream.withdrawFromStream(streamId);
// Cancel stream if needed (refunds remaining to sender)
await paymentStream.cancelStream(streamId);Yield Distributor
Automatically distributes Treasury yields to vault depositors. Handles the complex math of pro-rata yield distribution based on deposit amounts and duration.
Key Functions
distributeYield()Called periodically to distribute new Treasury yields to all vault depositors. Yield is distributed proportionally based on share ownership.
claimYield()Claim your accumulated yield separately from your principal. Useful if you want to harvest yields while keeping your deposit active.
// Check pending yield for a user
const pendingYield = await yieldDistributor.pendingYield(userAddress);
// Claim accumulated yield (keeps principal deposited)
await yieldDistributor.claimYield();
// Admin function: distribute new yield to all depositors
await yieldDistributor.distributeYield(yieldAmount);Deployed Contracts (Arc Testnet)
0xdAe34Fcc36D0772F6e04674971F798FA01bD05380xbA5720a03bAAEcaC455Ec82A48E2A5a45216c49e0xe9185F0c5F296Ed1797AaE4238D26CCaBEadb86CTestnet Only: These contracts are deployed on Arc testnet for testing. Mainnet deployment coming soon.
API Reference
Integration with ethers.js
import { ethers } from 'ethers';
// Connect to Arc Network
const provider = new ethers.JsonRpcProvider('https://rpc.testnet.arc.network');
// Contract ABIs (simplified)
const vaultABI = [
'function deposit(uint256 assets, address receiver) returns (uint256)',
'function withdraw(uint256 assets, address receiver, address owner) returns (uint256)',
'function balanceOf(address account) view returns (uint256)',
'function totalAssets() view returns (uint256)'
];
// Initialize contract
const vault = new ethers.Contract(VAULT_ADDRESS, vaultABI, signer);
// Deposit 1000 USDC
const tx = await vault.deposit(ethers.parseUnits('1000', 6), userAddress);
await tx.wait();Integration with viem
import { createPublicClient, createWalletClient, http } from 'viem';
import { privateKeyToAccount } from 'viem/accounts';
// Define Arc Testnet chain
const arcTestnet = {
id: 462050,
name: 'Arc Testnet',
network: 'arc-testnet',
nativeCurrency: { name: 'ARC', symbol: 'ARC', decimals: 18 },
rpcUrls: { default: { http: ['https://rpc.testnet.arc.network'] } }
};
// Create clients
const publicClient = createPublicClient({
chain: arcTestnet,
transport: http()
});
// Read vault balance
const balance = await publicClient.readContract({
address: VAULT_ADDRESS,
abi: vaultABI,
functionName: 'balanceOf',
args: [userAddress]
});Security
OpenZeppelin Standards
Built on battle-tested OpenZeppelin contracts including ERC-4626, ReentrancyGuard, and Pausable.
Open Source
All smart contract code is open source and available on GitHub for review and verification.
Audit Planned
Professional security audit scheduled before mainnet deployment. Results will be published publicly.
Non-Custodial
You maintain full control of your assets. No admin keys can access user funds.
Testnet Notice
USYC Protocol is currently deployed on Arc Testnet only. Use testnet tokens for testing - do not send real funds. Mainnet deployment will follow security audits and extensive testing.
Frequently Asked Questions
What is USYC?
USYC is a yield-bearing stablecoin backed by US Treasury Bills. It provides stable ~4.5% APY while maintaining a $1 peg, making it ideal for earning risk-free yields on-chain.
Is there a lock-up period?
No. Both the vault and payment streams allow instant withdrawals at any time. You always maintain full control of your assets with no penalties for early withdrawal.
What are the risks?
The main risk is smart contract risk. While we use battle-tested OpenZeppelin contracts and plan professional audits, all DeFi protocols carry inherent smart contract risk. USYC itself is backed by US Treasury Bills (AAA-rated).
When is mainnet launch?
Mainnet deployment is planned after comprehensive testing on Arc testnet and completion of security audits. Follow our Twitter @mous68881 for updates.