All admin functions verify the caller is the CONTRACT-OWNER:
(define-constant CONTRACT-OWNER tx-sender)
(asserts! (is-eq tx-sender CONTRACT-OWNER) (err ERR-NOT-AUTHORIZED))Inter-contract calls use authorized caller maps:
(define-map authorized-callers principal bool)- Escrow Pattern: All member funds are held in the escrow contract, not individual wallets
- Atomic Payouts: Payouts are processed atomically to prevent partial transfers
- Balance Verification: Contract verifies sufficient balance before any transfer
All public functions validate inputs:
- Contribution amounts within bounds (0.01 - 100 STX)
- Member counts within limits (3 - 50)
- Payout intervals within range (1 - 30 days)
- Reputation scores capped at 1000
Clarity's design inherently prevents reentrancy:
- No callbacks during STX transfers
- State changes are atomic
The admin can pause the entire protocol in emergencies:
(define-public (set-protocol-paused (paused bool)))When paused:
- No new circles can be created
- No new members can join
- Existing payouts can still be claimed
Members can request emergency withdrawal with:
- 7-day cooldown period
- Penalty fee deduction
- Maximum 30% of circle members can exit
- Circle Creator Lock: The creator cannot leave once the circle starts
- Fixed Payout Order: Slot order is determined at join time and cannot change
- No Partial Contributions: Members must contribute the full amount
- Single Active Circle: Members can only be in one circle at a time (per contract version)
DO NOT open public GitHub issues for security vulnerabilities.
Please report security issues via email to the development team with:
- Description of the vulnerability
- Steps to reproduce
- Potential impact assessment
| Audit Type | Status | Date |
|---|---|---|
| Internal Review | ✅ Complete | January 2026 |
| External Audit | 🔄 Pending | TBD |
| Bug Bounty | 📋 Planned | TBD |
- Verify Contract Addresses: Always confirm you're interacting with official contracts
- Start Small: Test with small amounts before committing larger sums
- Know Your Circle: Only join circles with trusted members
- Check Reputation: Review member reputation scores before joining
- Understand Emergency Exit: Know the penalties before requesting emergency withdrawal