FLIPGUARD
Fair votes. Stronger governance.
An onchain governance security layer on Monad Testnet that prevents flash-loan voting power grabs, enforces holding periods, and blocks sybil exploiters before transactions land.
CONTINUOUS SCROLLING DEFENSE STACK
5 PILLARS OF FLIPGUARD
Checkpoint Verification
Checkpointed Snapshot Power
Vote weight is strictly computed from checkpointed token balances at the exact moment of proposal creation. Any tokens transferred or purchased after the snapshot count for zero weight.
Time-Weighted Defense
Minimum Holding Period
Tokens that arrived into a wallet within the minimum holding period window before proposal creation are automatically disqualified. Flash loans and borrowed power cannot swing results.
Sybil & Loan Forensics
Real-Time Risk Registry
Authorized decentralized monitors inspect onchain liquidity signals. Known loan borrowers and sybil attack clusters are flagged in MockRiskRegistry, triggering contract-level rejections.
Gas-Safe Preflight
assessVoter() Simulation
Before a voter ever broadcasts a transaction, FlipGuard simulates the vote against the Monad RPC. If ineligible, the UI halts and explains the exact reason without wasting gas.
High Throughput
Native Monad Execution
Built for Monad's parallel execution engine with 10,000 TPS and 1-second block times. Gas limits are explicitly budgeted to match Monad's gas-limit fee model.
SLIDE 03 · THE ATTACK VECTOR
THE FLASH-LOAN GOVERNANCE EXPLOIT
Standard ERC20 governance tokens only check the current block balance or unshielded snapshots. Attackers borrow millions in liquidity, vote on malicious proposals, and repay the loan in a single transaction.
Instant Borrowing
Attacker borrows 10,000,000+ governance tokens from a lending pool or DEX flash loan for near-zero upfront capital.
Snapshot Hijack
Tokens arrive seconds before a proposal snapshot or are cast directly on an unprotected Governor contract.
Treasury Drain
Malicious proposal executes to transfer DAO treasury funds, then attacker repays the loan and keeps the stolen capital.
SLIDE 04 · ONCHAIN CONTRACT LOGIC
HOW FLIPGUARD GUARDS THE VOTE
Preflight Query
assessVoter(id, voter)RPC view call evaluates holding duration and registry flag. Rejects invalid attempts before gas is consumed.
Snapshot Balance
getPastVotes(voter, snap)Retrieves checkpointed weight at the exact proposal creation block. Future purchases have zero voting power.
Holding Window
snap - holdingPeriodChecks historical balance before the holding threshold. Wallets acquiring power inside the window are blocked.
Risk Registry
registry.isFlagged(voter)If an authorized monitor flagged the address for borrowing anomalies, castVote() reverts immediately.
SLIDE 05 · PRODUCTION READINESS
DEPLOYED ON MONAD TESTNET
Fully compiled, deployed, and verified with live mock DAO ballots, onchain tallies, and deterministic voter preflight simulations.
CONTRACT ADDRESS (CHAIN ID 10143)
0x4F9f04C3E913F418a656DB14003c63ea97653F92
View contract on Monad Explorer ↗