The "cash this out, don't let me play" button. Lock USDC into a Sablier stream that pays you back on your own schedule, so the degen you're about to be can't undo the win you just had.
Non-custodial. Non-cancelable. Enforced on-chain by Sablier v2.0 audited contracts. Not financial advice. DYOR.
Live: ripguard.xyz (Base mainnet) · testnet.ripguard.xyz (Base Sepolia)
You hit a W. Your brain says "one more play." You know how this ends.
RipGuard drops your USDC into a non-cancelable Sablier Lockup stream on Base. Your past self sets the unlock schedule. Your future self claims it back on the clock. The degen in the middle begs, and the on-chain answer is no.
No admin keys. No upgrade path. No RipGuard custody. We deploy zero custom contracts — the frontend calls Sablier directly. If RipGuard the site disappears tomorrow, your lock keeps counting down on-chain and you can claim it through BaseScan or the Sablier app.
- Pick an amount and a reload schedule. USDC on Base.
- Sign the lock. One transaction. The USDC routes directly into Sablier's Lockup contract with the sender, recipient, and unlock schedule you chose. Non-cancelable. Non-transferable.
- Come back and claim. Vaults show the live countdown and claimable amount. Claim when the schedule unlocks.
Six built-in presets plus custom:
| Preset | What it does |
|---|---|
| Hourly Payouts (24h) | Reload every hour for 24 hours |
| Hourly Payouts (3d) | Reload every hour for 3 days |
| Hourly Payouts (1w) | Reload every hour for 7 days |
| Daily Payouts (1w) | Reload once a day for 7 days |
| Panic Lock (24h) | Lock everything for 24 hours, one-shot unlock |
| Panic Lock + Daily Payouts | 1-day cliff, then daily reloads for 7 days |
Or build your own: pick a total window, a reload cadence, and optionally a waiting period before reloads start.
0.5% broker fee on each lock, collected via Sablier's native broker mechanism and routed directly to the RipGuard treasury during stream creation. Shown before you sign. No withdraw fees. No subscriptions. No yield cuts. No upside share.
Zero custom contracts. The frontend calls SablierLockup.createWithDurationsLL() directly. Every lock is a non-cancelable, non-transferable Lockup Linear stream with the sender and recipient both set to the depositor.
Contracts:
| Chain | Contract | Address |
|---|---|---|
| Base mainnet | Sablier Lockup v2.0 | 0xb5D78DD3276325f5FAF3106Cc4Acc56E28e0Fe3B |
| Base mainnet | USDC | 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 |
| Base Sepolia | Sablier Lockup v2.0 | 0xa4777ca525d43a7af55d45b11b430606d7416f8d |
| Base Sepolia | TestUSDC (mintable) | 0x54C0f145D70ca4792e695697B6498552F1EC0009 |
The packages/contracts/ directory holds an unused RipGuardRouter.sol from an earlier iteration. It is not deployed and not called by the frontend — kept around only as a reference for a potential Phase 2.
- Frontend: Next.js 16, React 19, Tailwind 4
- Web3: wagmi 2, viem 2, RainbowKit 2
- Protocol: Sablier Lockup v2.0 on Base
- Token: USDC on Base
- Indexer: Sablier Envio indexer (primary), on-chain
getLogsfallback - Monorepo: pnpm workspaces (
packages/app,packages/contracts)
Requires Node 22 (see .node-version). Node 24 causes SSR hydration errors.
pnpm install
cp packages/app/.env.example packages/app/.env.local
pnpm --filter app devKey env vars in packages/app/.env.local:
NEXT_PUBLIC_CHAIN—base(default) orbase-sepoliaNEXT_PUBLIC_SABLIER_LOCKUP— override for testnet addressNEXT_PUBLIC_USDC_ADDRESS— override for testnet addressNEXT_PUBLIC_TREASURY_ADDRESS— broker fee recipient. Set to zero address to disable the fee (useful on testnet).NEXT_PUBLIC_WC_PROJECT_ID— WalletConnect project ID
pnpm --filter app test # vitest, 56 tests
pnpm --filter app exec tsc --noEmit
pnpm --filter app buildRipGuard custodies nothing. Every lock is created directly in Sablier's audited Lockup protocol — an immutable, non-upgradeable contract that's been multi-audited and secures hundreds of millions in vesting streams. The RipGuard frontend is a UI. We deploy no custom contracts, hold no admin keys, and have no path to pause, rug, or freeze your funds.
That said: smart contracts carry risk. Start with $5. Verify the Sablier Lockup contract yourself on BaseScan before committing real size. The presets are designed around real-session behavior, but they're opinions, not financial advice.
If you find a vulnerability in RipGuard itself, please report it by opening a GitHub issue or reaching out before public disclosure.
- ripguard.xyz — mainnet
- testnet.ripguard.xyz — Base Sepolia
- Sablier docs
- Base
MIT