Skip to content

signals-protocol/signals-v0

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

160 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸš€ CLMSR Market System

Tests Security Coverage Status

CLMSR (Continuous Logarithmic Market Scoring Rule) implementation with comprehensive security hardening and 686 passing tests.


🎯 Quick Start

# Install dependencies
npm install

# Run tests (686 tests)
npm test

# Enforce coverage thresholds
npm run coverage && npm run coverage:check

# Compile contracts
npm run compile

# Generate complete codebase documentation
./combine_all_files.sh

πŸ“Š Project Status

Metric Status Details
Tests βœ… 686 passing Full hardhat suite + subgraph matchstick
Security βœ… Hardened Critical vulnerabilities fixed
Documentation βœ… Complete Auto-generated comprehensive docs
Gas Optimization βœ… Optimized Efficient chunk-split algorithms
Coverage βœ… β‰₯80% gated Enforced via npm run coverage:check
Development Status βœ… Production Ready Deployed on Base Mainnet

πŸ—οΈ Architecture Overview

🎯 Core Concept: CLMSR (Continuous Logarithmic Market Scoring Rule)

CLMSR is an automated market maker algorithm for prediction markets:

  • Price Formula: P_i = exp(q_i/Ξ±) / Ξ£_j exp(q_j/Ξ±)
  • Cost Formula: C = Ξ± * ln(Ξ£_after / Ξ£_before)
  • Liquidity Parameter: Ξ± (configurable per market)

🧩 System Components

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   CLMSRRouter   β”‚    β”‚ CLMSRMarketCore β”‚    β”‚ CLMSRPosition   β”‚
β”‚   (UX Layer)    │───▢│ (Core Logic)    │───▢│   (NFT Mgmt)    β”‚
β”‚  πŸ“… PLANNED     β”‚    β”‚   βœ… ACTIVE     β”‚    β”‚   βœ… ACTIVE     β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
         β”‚                       β”‚                       β”‚
         β–Ό                       β–Ό                       β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ CLMSRManager    β”‚    β”‚ LazyMulSegTree  β”‚    β”‚ FixedPointMath  β”‚
β”‚ (Governance)    β”‚    β”‚ (Efficient DS)  β”‚    β”‚ (Math Library)  β”‚
β”‚  πŸ“… PLANNED     β”‚    β”‚   βœ… ACTIVE     β”‚    β”‚   βœ… ACTIVE     β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ“… Implementation Status: Core contracts (CLMSRMarketCore, CLMSRPosition) and libraries are fully implemented and tested. Manager and Router contracts are planned for future implementation.


πŸ“ Project Structure

signals-v0/
β”œβ”€β”€ πŸ“„ contracts/
β”‚   β”œβ”€β”€ 🎯 core/CLMSRMarketCore.sol          # Core trading logic (1,031 lines)
β”‚   β”œβ”€β”€ πŸ”Œ interfaces/                       # Contract interfaces (4 files)
β”‚   β”œβ”€β”€ πŸ“š libraries/                        # Math libraries (2 files)
β”‚   β”œβ”€β”€ πŸ§ͺ test/                            # Solidity test helpers (2 files)
β”‚   └── 🎭 mocks/                           # Testing mocks (2 files)
β”œβ”€β”€ πŸ§ͺ test/
β”‚   β”œβ”€β”€ πŸ“Š core/                            # Core functionality tests (7 files)
β”‚   β”œβ”€β”€ πŸ”’ FixedPointMath.test.ts           # Math library tests (52 tests)
β”‚   └── 🌳 LazyMulSegmentTree.test.ts       # Segment tree tests (79 tests)
β”œβ”€β”€ βš™οΈ  hardhat.config.ts                   # Build configuration
β”œβ”€β”€ πŸ“¦ package.json                         # Dependencies
└── πŸš€ combine_all_files.sh                 # Auto documentation generator

πŸ›‘οΈ Security Enhancements

πŸ”’ Critical Security Fixes Applied

Issue Severity Description Status
Zero-Cost Attack πŸ”΄ Critical fromWad() truncation allowing free positions βœ… FIXED
Gas DoS Attack πŸ”΄ Critical Unlimited chunk splitting causing gas exhaustion βœ… FIXED
Time Validation 🟑 Medium Trading in expired markets βœ… FIXED
Overflow Protection 🟑 Medium Mathematical overflow in large trades βœ… FIXED

πŸ›‘οΈ Security Mechanisms

  1. Round-Up Cost Calculation

    // Before: fromWad() - truncation allows 0 cost
    uint256 cost6 = costWad.fromWad();
    
    // After: fromWadRoundUp() - guarantees minimum 1 micro USDC
    uint256 cost6 = costWad.fromWadRoundUp();
  2. Gas DoS Protection

    uint256 private constant MAX_CHUNKS_PER_TX = 100;
    
    uint256 requiredChunks = (quantity + maxSafeQuantityPerChunk - 1) / maxSafeQuantityPerChunk;
    if (requiredChunks > MAX_CHUNKS_PER_TX) {
        revert InvalidQuantity(uint128(quantity));
    }
  3. Time Boundary Validation

    if (block.timestamp < market.startTimestamp) {
        revert InvalidMarketParameters("Market not started");
    }
    if (block.timestamp > market.endTimestamp) {
        market.isActive = false;
        revert InvalidMarketParameters("Market expired");
    }

πŸ§ͺ Testing Excellence

πŸ“Š Test Coverage Breakdown

Category Tests Coverage Description
FixedPointMath 52 100% Mathematical operations & precision
LazyMulSegmentTree 79 100% Segment tree operations
Core Boundaries 42 100% Edge cases & boundary conditions
Core Deployment 15 100% Deployment & configuration
Core Events 25 100% Event emission & authorization
Core Execution 67 100% Trade execution & position management
Core Invariants 12 100% Mathematical invariants
Core Markets 32 100% Market creation & management
Total 324 100% Complete test coverage

🎯 Special Test Scenarios

  • Security Attack Prevention: Zero-cost positions, gas DoS attacks
  • Boundary Testing: Min/max quantities, time boundaries, tick boundaries
  • Mathematical Accuracy: CLMSR formulas, chunk splitting, precision
  • Gas Optimization: Large trades, complex operation scenarios
  • Error Handling: All revert conditions and edge cases

πŸš€ Key Features

🎯 Core Functionality

  1. Complete CLMSR Implementation

    • Continuous logarithmic market scoring rule
    • Chunk-split support for large trades
    • Per-market liquidity parameter configuration
  2. NFT-Based Position Management

    • ERC721 compatible position tokens
    • Range-based positions (lowerTick ~ upperTick)
    • Complete position lifecycle management
  3. High-Performance Data Structures

    • Lazy Multiplication Segment Tree
    • O(log N) updates and queries
    • Memory-efficient sparse arrays

πŸ›‘οΈ Security Features

  1. Attack Prevention Mechanisms

    • Zero-cost attack prevention
    • Gas DoS attack prevention
    • Time-based validation
  2. Mathematical Stability

    • Overflow protection
    • Precision maintenance
    • Safe exponential operations
  3. Access Control

    • Role-based permission management
    • Emergency pause mechanism
    • Authorized callers only

πŸ”§ Development Tools

πŸ“‹ Available Scripts

# Testing
npm test                    # Run all tests (324 tests)
npm run test:core          # Core functionality tests only
npm run test:math          # Math library tests only

# Build & Compilation
npm run compile            # Compile smart contracts
npm run clean              # Clean build artifacts

# Documentation
./combine_all_files.sh     # Generate complete codebase documentation
npm run docs               # Generate API documentation

# Code Quality
npm run lint               # Code style checks
npm run format             # Code formatting

πŸ› οΈ Advanced Build Script

The new combine_all_files.sh provides:

  • βœ… Automatic File Detection: Auto-recognizes new files
  • βœ… Live Test Results: Runs tests during script execution
  • βœ… Project Statistics: Auto-calculates file counts, sizes, lines
  • βœ… Git Integration: Extracts commit counts and contributors
  • βœ… Security Tracking: Auto-counts security fixes from README
  • βœ… Beautiful Output: Colorized output with emojis

πŸ“ˆ Performance Metrics

⚑ Gas Optimization

Operation Gas Cost Optimization
Position Open ~150K gas Optimized segment tree
Position Increase ~80K gas Cached calculations
Position Decrease ~90K gas Efficient state updates
Large Trade (10x chunk) ~800K gas Chunk-split algorithm

πŸƒβ€β™‚οΈ Execution Performance

  • Test Suite: 324 tests in ~4 seconds
  • Compilation: Full build in ~10 seconds
  • Documentation: Complete docs in ~5 seconds

🎯 Development Roadmap

βœ… Completed (v0.1)

  • Core CLMSR implementation
  • Security hardening
  • Comprehensive testing
  • Documentation automation
  • Gas optimization

🚧 In Progress (v0.2)

  • Frontend integration
  • Gas optimization improvements
  • Enhanced error handling

πŸ“… Planned (v0.3)

  • Manager contract implementation
  • Router contract with permit support
  • Oracle integration (price feeds for automatic settlement)

🀝 Contributing

πŸ”§ Development Setup

# Clone repository
git clone https://github.com/your-org/signals-v0.git
cd signals-v0

# Install dependencies
npm install

# Run tests to verify setup
npm test

# Start developing!

πŸ“ Code Standards

  • Solidity: 0.8.24, via-IR optimization
  • TypeScript: Strict mode, comprehensive typing
  • Testing: 100% coverage requirement
  • Documentation: Auto-generated, always up-to-date

πŸ› Bug Reports

When reporting bugs:

  1. Write reproducible test case
  2. Describe expected vs actual behavior
  3. Include environment info (Node.js, npm versions)

πŸ“„ License

MIT License - see LICENSE for details.


πŸ† Current Achievements

  • 🎯 324 Tests Passing - Complete test coverage
  • πŸ›‘οΈ Security Hardened - Critical vulnerabilities fixed
  • ⚑ Gas Optimized - Efficient chunk-split algorithms
  • πŸ“š Well Documented - Auto-generated comprehensive docs
  • 🌐 Production Deployed - Live on Base Mainnet

🌐 Live Deployments

βœ… PRODUCTION READY - Successfully deployed on multiple networks!

πŸ”· Base Mainnet

Successfully deployed and operational on Base Mainnet:

πŸ“‹ Contract Addresses

Contract Address Verified
CLMSRMarketCore 0x4424687a25302db5d1D3A9f7504e4710b0ab17E9 βœ…
CLMSRPosition 0x93E61D408456D27d5AB3fC4281B56Eb69A8296e7 βœ…
SUSD Token 0x19593B3AF55ad58Ce74514924a2F253FDF89CA34 βœ…
FixedPointMathU 0xA8Af982597D7A17c651c801B801EC86C92171A5d βœ…
LazyMulSegmentTree 0x1Ba59a311Fb42D475dBC55C9bc780e3883E25A53 βœ…

πŸ“Š Subgraph API

🎯 Active Market (Base)

  • Market ID: 1
  • Network: Base Mainnet (Chain ID: 8453)
  • Tick Range: 100,000 - 140,000 (400 bins)
  • Liquidity Parameter: 1000.0
  • Payment Token: SUSD (Signals USD)

🟠 Citrea Testnet Tangerine

πŸš€ READY FOR DEPLOYMENT - Configured for Citrea Testnet:

Network: Citrea Testnet Tangerine
Chain ID: 5115
RPC: https://rpc.testnet.citrea.xyz
Explorer: https://explorer.testnet.citrea.xyz

Deployment Commands:

# Deploy to Citrea Development
yarn deploy:citrea:dev

# Deploy to Citrea Production
yarn deploy:citrea:prod

Indexer: GoldSky (TheGraph not supported on Citrea)

cd clmsr-subgraph
npm run deploy:goldsky:citrea:dev
npm run deploy:goldsky:citrea:prod

πŸ“– Full Guide: CITREA_DEPLOYMENT.md

🚨 Development Status

The core CLMSR functionality is production ready and successfully deployed on Base Mainnet. All contracts are verified and operational.


This project is continuously improving. Run ./combine_all_files.sh for the latest documentation.

About

Signals - Continuous LMSR Bitcoin Price Prediction Market

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors