Skip to content

Put Warrant Backing (USDC)

Put Warrants are backed by USDC stablecoins locked in smart contracts. This provides:

  • Real-time verifiable reserves
  • Instant settlement capability
  • No counterparty risk
  • Transparent collateral management

┌─────────────────────────────────────────────────────────────────┐
│ PUT COLLATERAL VAULT │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ PIPOPutVault.sol │ │
│ │ ───────────────────────────────────────────────────── │ │
│ │ │ │
│ │ Deposits: │ │
│ │ ├── Platform Pool: $2,000,000 USDC │ │
│ │ ├── Writer A: $500,000 USDC │ │
│ │ ├── Writer B: $300,000 USDC │ │
│ │ └── Writer C: $400,000 USDC │ │
│ │ │ │
│ │ Total USDC Locked: $3,200,000 │ │
│ │ Total Put Liability: $3,200,000 │ │
│ │ Reserve Ratio: 100% │ │
│ │ │ │
│ │ Functions: │ │
│ │ ├── deposit() → Lock USDC, mint Put tokens │ │
│ │ ├── withdraw() → Burn tokens, unlock USDC │ │
│ │ ├── settle() → Pay exercisers from vault │ │
│ │ └── verify() → Public reserve verification │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ Contract Address: 0x... │
│ Network: BSC / Base │
│ Verified: Yes (Etherscan/BscScan) │
│ │
└─────────────────────────────────────────────────────────────────┘

Platform Put Issuance:
├── 1. Platform allocates USDC from treasury
├── 2. USDC deposited to vault contract
├── 3. Put warrant tokens minted
├── 4. Tokens added to AMM pool
└── 5. Trading begins
Ratio: 1:1 (100% collateral)
Writer Put Issuance:
├── 1. Writer completes KYB verification
├── 2. Writer deposits USDC to vault
├── 3. Specifies: underlying, strike, expiry
├── 4. Put warrant tokens minted to writer
├── 5. Writer sells tokens on AMM
├── 6. Writer receives premium (USDC)
└── 7. Collateral remains locked until expiry
Minimum: $50,000 per position
Ratio: 100% of strike notional

FactorUSDCOther Options
Stability$1 pegVolatile (ETH, BTC)
LiquidityVery highVaries
Redemption1:1 for USDN/A
CustodySelf-custodiedCounterparty risk
RegulationUS regulatedVaries
Track Record5+ yearsVaries
USDC Risks and Mitigations:
├── De-peg Risk
│ ├── Mitigation: Monitor peg, pause if >1% deviation
│ └── Historical: Brief de-peg in March 2023, recovered
├── Regulatory Risk
│ ├── Mitigation: Circle is US regulated, transparent
│ └── Backup: Can support multiple stablecoins
├── Smart Contract Risk
│ ├── Mitigation: USDC contracts well-audited
│ └── Insurance: Covered under protocol insurance
└── Blacklist Risk
├── Mitigation: KYC all large writers
└── Policy: Compliant operations only

┌─────────────────────────────────────────────────────────────────┐
│ PUT EXERCISE SETTLEMENT │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 1. EXERCISE REQUEST │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ User: Submit exercise(amount) during window │ │
│ │ ├── Put tokens locked │ │
│ │ └── Exercise intent recorded │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ 2. PRICE FINALIZATION │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ Oracle: Publish settlement price │ │
│ │ ├── Multi-source aggregation │ │
│ │ └── Committee signature │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ 3. PAYOUT CALCULATION │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ Contract: Calculate payout │ │
│ │ ├── payout = (strike - oracle) / strike × notional │ │
│ │ ├── fee = payout × 1% │ │
│ │ └── net = payout - fee │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ 4. DISTRIBUTION │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ Vault: Transfer USDC │ │
│ │ ├── USDC sent to exerciser │ │
│ │ ├── Put tokens burned │ │
│ │ └── Writer's collateral reduced │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘

// Writer deposits USDC to write puts
function deposit(
address underlying,
uint256 strike,
uint256 expiry,
uint256 amount // USDC amount = put notional
) external {
// Transfer USDC from writer to vault
USDC.transferFrom(msg.sender, address(this), amount);
// Mint put warrant tokens to writer
putToken.mint(msg.sender, amount);
// Record writer position
positions[msg.sender][putToken] = Position({
collateral: amount,
minted: amount,
premium: 0 // Updated when sold
});
emit Deposit(msg.sender, putToken, amount);
}
// Writer withdraws after expiry (if OTM)
function withdraw(address putToken, uint256 amount) external {
require(block.timestamp > putToken.expiry(), "Not expired");
require(!putToken.exercised(), "Exercised positions cannot withdraw");
// Writer must return put tokens
putToken.transferFrom(msg.sender, address(this), amount);
putToken.burn(amount);
// Release USDC collateral
USDC.transfer(msg.sender, amount);
emit Withdrawal(msg.sender, putToken, amount);
}

Scenario: Multiple writers, partial pool exercise
Put Pool:
├── Platform Pool: $2M (62.5%)
├── Writer A: $0.5M (15.6%)
├── Writer B: $0.3M (9.4%)
└── Writer C: $0.4M (12.5%)
Total: $3.2M
Total Exercise: $500K (15.6% of pool)
Settlement:
├── Platform Pool pays: $500K × 62.5% = $312.5K
├── Writer A pays: $500K × 15.6% = $78K
├── Writer B pays: $500K × 9.4% = $47K
└── Writer C pays: $500K × 12.5% = $62.5K
Each writer's collateral reduced proportionally.

// Public function - anyone can verify
function verifyReserve(address putToken) external view returns (
uint256 required,
uint256 held,
bool sufficient
) {
required = putToken.totalSupply();
held = USDC.balanceOf(address(this));
sufficient = held >= required;
}
// Detailed breakdown
function getReserveDetails(address putToken) external view returns (
uint256 totalLiability,
uint256 platformCollateral,
uint256 writerCollateral,
uint256 reserveRatio
) {
totalLiability = putToken.totalSupply();
platformCollateral = platformDeposits[putToken];
writerCollateral = totalWriterDeposits[putToken];
reserveRatio = (platformCollateral + writerCollateral) * 10000 / totalLiability;
}
┌─────────────────────────────────────────────────────────────────┐
│ PUT RESERVE VERIFICATION │
├─────────────────────────────────────────────────────────────────┤
│ │
│ Warrant: SPACEX-PUT-150B-Q42025 │
│ Contract: 0x7a8...3f2 │
│ │
│ On-Chain Data: │
│ ├── Total Supply: 1,000,000 PUT tokens │
│ ├── Notional: $1 per token │
│ ├── Total Liability: $1,000,000 │
│ │ │
│ ├── Vault USDC Balance: $1,000,000 │
│ │ ├── Platform Pool: $700,000 │
│ │ └── KYB Writers: $300,000 │
│ │ │
│ └── Reserve Ratio: 100.00% ✓ │
│ │
│ Verification: ✅ FULLY COLLATERALIZED │
│ │
│ Block: 15,234,567 │
│ Timestamp: 2025-10-15 12:00:00 UTC │
│ │
│ [View on BscScan] [Verify Contract] │
│ │
└─────────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────────┐
│ PUT WRITER POSITIONS │
├─────────────────────────────────────────────────────────────────┤
│ │
│ Active Positions: │
│ │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ SPACEX-PUT-150B-Q42025 │ │
│ │ ├── Collateral Locked: $200,000 USDC │ │
│ │ ├── Tokens Minted: 200,000 │ │
│ │ ├── Tokens Sold: 180,000 (remaining: 20,000) │ │
│ │ ├── Premium Received: $22,000 (11%) │ │
│ │ ├── Current Status: OTM (SpaceX @ $185B) │ │
│ │ ├── Days to Expiry: 75 │ │
│ │ └── Actions: [Buyback] [View Details] │ │
│ └──────────────────────────────────────────────────────────┘ │
│ │
│ Portfolio Summary: │
│ ├── Total Collateral: $500,000 │
│ ├── Total Premium: $45,000 │
│ ├── Effective Yield: 9.0% │
│ ├── Annualized: 18.0% │
│ └── Max Potential Loss: $125,000 │
│ │
│ [Write New Put] [Withdraw Available] [Risk Report] │
│ │
└─────────────────────────────────────────────────────────────────┘

const deposit = await pipo.depositPutCollateral({
underlying: 'SPACEX',
strike: 150000000000, // $150B
expiry: 'Q42025',
amount: 200000 // $200K USDC
});
// Response
{
txHash: '0x...',
putTokenAddress: '0x...SPACEX-PUT-150B-Q42025',
tokensMinted: 200000,
collateralLocked: 200000,
vaultBalance: 1200000 // Total in vault after deposit
}
const reserve = await pipo.verifyPutReserve('SPACEX-PUT-150B-Q42025');
// Response
{
warrant: 'SPACEX-PUT-150B-Q42025',
totalSupply: 1000000,
vaultBalance: 1000000,
reserveRatio: 1.0,
verified: true,
breakdown: {
platform: 700000,
writers: 300000
},
blockNumber: 15234567
}