Skip to content

Conversation

@trankhacvy
Copy link
Collaborator

@trankhacvy trankhacvy commented Aug 28, 2025

Summary by CodeRabbit

  • Documentation

    • Added a comprehensive whitepaper for Fully On-Chain Chess with MagicBlock Ephemeral Rollups, covering architecture, on-chain gameplay, rollup integration, SDK usage, economics, security, performance targets, and roadmap. Published in the documentation site for easy access.
  • Chores

    • Minor documentation site configuration cleanup and commented scaffolding for optional plugins. No functional or runtime impact.

@vercel
Copy link

vercel bot commented Aug 28, 2025

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Preview Comments Updated (UTC)
checkmate-docs Error Error Sep 4, 2025 2:08am
checkmate-web Error Error Sep 4, 2025 2:08am

@coderabbitai
Copy link

coderabbitai bot commented Aug 28, 2025

Walkthrough

Adds two new whitepaper documents (root WHITEPAPER.md and docs site MDX) describing a fully on-chain chess system and Ephemeral Rollup integration. Updates docs config to scaffold an optional Mermaid remark plugin via commented lines; no functional runtime changes.

Changes

Cohort / File(s) Summary of Changes
Whitepaper (Root)
WHITEPAPER.md
New comprehensive technical whitepaper covering architecture, on-chain program design, instruction set, multi-tenant configs, Ephemeral Rollup integration, SDK overview, security, performance, and roadmap. No code or API modifications.
Docs Whitepaper Page
apps/docs/content/docs/whitepaper/whitepaper.mdx
Adds MDX-rendered whitepaper to docs site with the same technical content and structure (architecture, data model, validation, rollup flows, SDK, economics, security, roadmap).
Docs Config Scaffolding
apps/docs/source.config.ts
Cosmetic import quote change and commented scaffold for optional Mermaid remark plugin in mdxOptions; no enabled plugins or runtime impact.

Sequence Diagram(s)

sequenceDiagram
    autonumber
    participant P as Player
    participant SDK as CheckMate SDK (TS)
    participant ER as Ephemeral Rollup
    participant L1 as Solana L1
    participant Prog as Chess Program

    rect rgb(235, 245, 255)
    note over P,SDK: Gameplay request (create/join/move/draw)
    P->>SDK: Initiate action
    SDK->>ER: Submit request (low-latency exec)
    ER->>Prog: Validate and update state (delegated)
    Prog-->>ER: State result / events
    ER-->>SDK: Response (success/error)
    SDK-->>P: Return outcome
    end

    alt Commit window reached
      note over ER,L1: Settlement / proof commitment
      ER->>L1: Commit state/proof
      L1->>Prog: Finalize commitment
      Prog-->>L1: Acknowledgement
      L1-->>ER: Finalization confirmed
    else Ongoing session
      note over ER: Continue ephemeral execution
    end

    opt Error path
      ER-->>SDK: InvalidMove / Unauthorized / etc.
      SDK-->>P: Surface error
    end
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Poem

I thump my paw on checkerboard ground,
Rollups whisper moves without a sound;
Knights leap swift in sub-100ms light,
Proofs hop home to L1 by night.
With docs so bright and SDK tight—
Checkmate! I nibble carrots in delight. 🥕♟️

✨ Finishing Touches
  • 📝 Generate Docstrings
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch docs/whitepaper

🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

CodeRabbit Commands (Invoked using PR/Issue comments)

Type @coderabbitai help to get the list of available commands.

Other keywords and placeholders

  • Add @coderabbitai ignore or @coderabbit ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Status, Documentation and Community

  • Visit our Status Page to check the current availability of CodeRabbit.
  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 5

🧹 Nitpick comments (10)
WHITEPAPER.md (10)

304-319: Provide encode/decode helpers to avoid magic numbers.

Expose helpers to extract color/type and to set/clear bits; improves correctness and readability.

 pub fn get_piece_at(&self, square: u8) -> u8 {
@@
 }
 
 pub fn set_piece_at(&mut self, square: u8, piece: u8) {
@@
 }
+
+// Suggested helpers
+pub fn piece_color(piece: u8) -> u8 { piece >> 4 }
+pub fn piece_type(piece: u8) -> u8 { piece & 0x0F }
+pub fn make_piece(color: u8, typ: u8) -> u8 { (color << 4) | (typ & 0x0F) }

595-597: Missing variables for draw ops.

acceptDrawParams and rejectDrawParams are used but not defined.

-const { instruction } = await chessMateSDK.acceptDrawIx(acceptDrawParams);
-const { instruction } = await chessMateSDK.rejectDrawIx(rejectDrawParams);
+const acceptDrawParams = { player: signer, gameId: BigInt(1), integratorId: address("YourIntegratorId") };
+const rejectDrawParams = { player: signer, gameId: BigInt(1), integratorId: address("YourIntegratorId") };
+const { instruction: acceptIx } = await chessMateSDK.acceptDrawIx(acceptDrawParams);
+const { instruction: rejectIx } = await chessMateSDK.rejectDrawIx(rejectDrawParams);

709-729: Stop polling on terminal states or errors.

Avoid perpetual timers and wasted RPC calls.

-  setInterval(async () => {
+  const t = setInterval(async () => {
     try {
       const gameAccount = await fetchGameAccount(erRpc, gameAccountPDA);
       if (gameAccount.exists) {
         updateUI(gameAccount.data);
         if (gameAccount.data.gameStatus === GameStatus.Finished) {
           handleGameEnd(gameAccount.data);
+          clearInterval(t);
         }
       }
     } catch (error) {
       console.error("Failed to fetch game state:", error);
+      clearInterval(t);
     }
   }, 1000);

490-499: Standardize naming: CheckMate vs ChessMate.

You use “CheckMate SDK” but instantiate chessMateSDK. Pick one style, e.g., checkmateSdk.

-const chessMateSDK = new ChessGameSDK();
+const checkmateSdk = new ChessGameSDK();

223-235: Mark custom attributes/macros as pseudo and link to docs.

#[commit] and delegation attributes are non-standard in Anchor. Label snippets as pseudo-code and add a reference.

-#[commit]
+// Pseudo-code: commit macro provided by MagicBlock
+#[commit] // see: MagicBlock Ephemeral Rollups docs

Also applies to: 195-203


821-836: Rephrase “reentrancy attacks” for Solana context.

Solana’s runtime model differs from EVM; reentrancy phrasing can mislead. Emphasize CPI safety and idempotent state transitions.

-// Protection against reentrancy attacks
+// CPI safety: idempotent state transitions; no re-entry into the same instruction within a tx

862-871: Sub-100ms and cost claims: add methodology/appendix.

Add environment, measurement method, N, percentile, and dates (e.g., August 2025), and clarify what “batch settlement every 2–4s” depends on.

I can draft a “Benchmarks & Assumptions” appendix with reproducible scripts (SDK + cluster settings). Want me to add it?

Also applies to: 867-871


612-637: Document square indexing origin (a1 index) to avoid off-by-one bugs.

You use e2=12, e4=28 implying a1=0, row-major. State this explicitly.

 // Smart RPC selection based on game status
+// Board indexing: a1=0, b1=1, ..., h1=7, a2=8, ..., h8=63 (row-major).

150-155: Explain IntegratorConfig.integrator_id vs integrator.

Redundant-looking fields. Add a sentence clarifying identity vs authority and immutability.


1-21: Tighten headline lists and punctuation.

LanguageTool flags minor list/punctuation issues in “Key Innovations” and “Competitive Advantages.” Add terminal periods or keep a consistent no-period style; use parallel structure.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 18c6ca2 and 19e846c.

📒 Files selected for processing (1)
  • WHITEPAPER.md (1 hunks)
🧰 Additional context used
🪛 LanguageTool
WHITEPAPER.md

[grammar] ~7-~7: There might be a mistake here.
Context: ... on-chain execution. Key Innovations: - Real-time Performance: Achieving sub-5...

(QB_NEW_EN)


[grammar] ~8-~8: There might be a mistake here.
Context: ...le maintaining full Solana compatibility - Complete On-Chain Logic: All game rule...

(QB_NEW_EN)


[grammar] ~9-~9: There might be a mistake here.
Context: ...erations executed transparently on-chain - Multi-Tenant Architecture: Scalable pl...

(QB_NEW_EN)


[grammar] ~10-~10: There might be a mistake here.
Context: ...grators with customizable fee structures - Seamless Integration: TypeScript SDK e...

(QB_NEW_EN)


[grammar] ~16-~16: There might be a mistake here.
Context: ...Fi landscape. Competitive Advantages: - No state fragmentation or bridge depende...

(QB_NEW_EN)


[grammar] ~17-~17: There might be a mistake here.
Context: ...ate fragmentation or bridge dependencies - Horizontal scaling through on-demand Eph...

(QB_NEW_EN)


[grammar] ~18-~18: There might be a mistake here.
Context: ...tal scaling through on-demand Ephemeral Rollups - Native Solana ecosystem integration - Tr...

(QB_NEW_EN)


[grammar] ~19-~19: There might be a mistake here.
Context: ...ps - Native Solana ecosystem integration - Transparent and immutable game mechanics...

(QB_NEW_EN)


[grammar] ~102-~102: There might be a mistake here.
Context: ...fecycle: Game Lifecycle Management: - create_game: Initialize new games with configurable...

(QB_NEW_EN)


[grammar] ~103-~103: There might be a mistake here.
Context: ...e new games with configurable parameters - join_game: Enable second player to join open game...

(QB_NEW_EN)


[grammar] ~104-~104: There might be a mistake here.
Context: ... configurable parameters - join_game: Enable second player to join open games - `can...

(QB_NEW_EN)


[grammar] ~104-~104: There might be a mistake here.
Context: ... Enable second player to join open games - cancel_game: Allow creators to cancel games before ...

(QB_NEW_EN)


[grammar] ~105-~105: There might be a mistake here.
Context: ...eators to cancel games before they start - forfeit_game: Enable players to concede during activ...

(QB_NEW_EN)


[grammar] ~108-~108: There might be a mistake here.
Context: ...during active games Move Execution: - make_move: Core instruction handling move validat...

(QB_NEW_EN)


[grammar] ~109-~109: There might be a mistake here.
Context: ...ndling move validation and state updates - Comprehensive chess rule validation incl...

(QB_NEW_EN)


[grammar] ~110-~110: There might be a mistake here.
Context: ...ule validation including check detection - Special move support (castling, en passa...

(QB_NEW_EN)


[grammar] ~113-~113: There might be a mistake here.
Context: ...passant, promotion) Draw Mechanics: - offer_draw: Propose draw to opponent - `accept_dra...

(QB_NEW_EN)


[grammar] ~114-~114: There might be a mistake here.
Context: ...- offer_draw: Propose draw to opponent - accept_draw: Accept pending draw offers - `reject_d...

(QB_NEW_EN)


[grammar] ~115-~115: There might be a mistake here.
Context: ...accept_draw: Accept pending draw offers - reject_draw`: Decline draw proposals **Financial Op...

(QB_NEW_EN)


[grammar] ~118-~118: There might be a mistake here.
Context: ...raw proposals Financial Operations: - claim_winnings: Distribute prize pools to winners - Au...

(QB_NEW_EN)


[grammar] ~150-~150: There might be a mistake here.
Context: ...ame_id: u64, } ``` This design enables: - White-label Integration: Third-party p...

(QB_NEW_EN)


[grammar] ~158-~158: There might be a mistake here.
Context: ...cial Architecture #### Escrow Mechanism The system implements a secure escrow me...

(QB_NEW_EN)


[grammar] ~168-~168: There might be a mistake here.
Context: ...ocked: bool, ``` Security Features: - Funds are locked in program-controlled a...

(QB_NEW_EN)


[grammar] ~174-~174: There might be a mistake here.
Context: ... in case of disputes #### Fee Structure The platform implements a dual-fee syste...

(QB_NEW_EN)


[grammar] ~175-~175: There might be a mistake here.
Context: ...e platform implements a dual-fee system: - Platform Fees: Base fees collected by ...

(QB_NEW_EN)


[grammar] ~176-~176: There might be a mistake here.
Context: ...Base fees collected by the chess program - Integrator Fees: Additional fees colle...

(QB_NEW_EN)


[grammar] ~177-~177: There might be a mistake here.
Context: ... fees collected by third-party platforms - Transparent Calculation: All fees calc...

(QB_NEW_EN)


[grammar] ~205-~205: There might be a mistake here.
Context: ...support } ``` Delegation Lifecycle: 1. Initiation: Game accounts are delegate...

(QB_NEW_EN)


[grammar] ~211-~211: There might be a mistake here.
Context: ... session ends #### Parallel Read Access During delegation, the base layer mainta...

(QB_NEW_EN)


[grammar] ~212-~212: There might be a mistake here.
Context: ... access to delegated accounts, ensuring: - Composability: Other programs can stil...

(QB_NEW_EN)


[grammar] ~219-~219: There might be a mistake here.
Context: ...on Details #### Conditional Compilation The program uses feature flags to suppor...

(QB_NEW_EN)


[grammar] ~243-~243: There might be a mistake here.
Context: ...ically reverted #### Session Management Ephemeral Rollup sessions are managed th...

(QB_NEW_EN)


[grammar] ~253-~253: There might be a mistake here.
Context: ...ormance Benefits #### Latency Reduction - Base Layer: 400ms average block time o...

(QB_NEW_EN)


[grammar] ~254-~254: There might be a mistake here.
Context: ...er**: 400ms average block time on Solana - Ephemeral Rollup: 10-50ms execution ti...

(QB_NEW_EN)


[grammar] ~255-~255: There might be a mistake here.
Context: ...: 10-50ms execution time for chess moves - User Experience: Near-instantaneous mo...

(QB_NEW_EN)


[grammar] ~258-~258: There might be a mistake here.
Context: ...d board updates #### Throughput Scaling - Horizontal Scaling: Multiple rollups c...

(QB_NEW_EN)


[grammar] ~263-~263: There might be a mistake here.
Context: ...ng active sessions #### Cost Efficiency - Reduced Base Layer Load: Only final st...

(QB_NEW_EN)


[grammar] ~379-~379: There might be a mistake here.
Context: ...e Handling Castling Implementation: - Validates king and rook positions - Chec...

(QB_NEW_EN)


[grammar] ~380-~380: There might be a mistake here.
Context: ...n**: - Validates king and rook positions - Checks for intervening pieces - Ensures ...

(QB_NEW_EN)


[grammar] ~381-~381: There might be a mistake here.
Context: ...ositions - Checks for intervening pieces - Ensures neither piece has moved previous...

(QB_NEW_EN)


[grammar] ~382-~382: There might be a mistake here.
Context: ...sures neither piece has moved previously - Verifies king is not in check **En Pass...

(QB_NEW_EN)


[grammar] ~385-~385: There might be a mistake here.
Context: ...is not in check En Passant Capture: - Tracks pawn double-moves for en passant ...

(QB_NEW_EN)


[grammar] ~386-~386: There might be a mistake here.
Context: ...ouble-moves for en passant opportunities - Validates capture conditions - Removes c...

(QB_NEW_EN)


[grammar] ~387-~387: There might be a mistake here.
Context: ...rtunities - Validates capture conditions - Removes captured pawn from board **Pawn...

(QB_NEW_EN)


[grammar] ~390-~390: There might be a mistake here.
Context: ...red pawn from board Pawn Promotion: - Detects pawns reaching the opposite end ...

(QB_NEW_EN)


[grammar] ~391-~391: There might be a mistake here.
Context: ... Detects pawns reaching the opposite end - Validates promotion piece selection - Up...

(QB_NEW_EN)


[grammar] ~392-~392: There might be a mistake here.
Context: ...nd - Validates promotion piece selection - Updates board state with promoted piece ...

(QB_NEW_EN)


[grammar] ~474-~474: There might be a mistake here.
Context: ...atically detects game-ending conditions: - Checkmate Detection: Validates that th...

(QB_NEW_EN)


[grammar] ~476-~476: There might be a mistake here.
Context: ...es positions where no legal moves exist but king is not in check - **Draw Condition...

(QB_NEW_EN)


[grammar] ~503-~503: There might be a mistake here.
Context: ...Installation and Setup Prerequisites: - Node.js 18+ - TypeScript 4.9+ **Install...

(QB_NEW_EN)


[grammar] ~504-~504: There might be a mistake here.
Context: ... Setup Prerequisites: - Node.js 18+ - TypeScript 4.9+ Installation: ```ba...

(QB_NEW_EN)


[grammar] ~512-~512: There might be a mistake here.
Context: ...ogram/token ``` Wallet Integration: The SDK works with any wallet implementi...

(QB_NEW_EN)


[grammar] ~696-~696: There might be a mistake here.
Context: ..., error); } } ``` Error Categories: - InvalidMoveError: Chess rule violations - `GameNotFoundE...

(QB_NEW_EN)


[grammar] ~697-~697: There might be a mistake here.
Context: ...InvalidMoveError: Chess rule violations - GameNotFoundError: Invalid game references - Unauthorize...

(QB_NEW_EN)


[grammar] ~698-~698: There might be a mistake here.
Context: ...eNotFoundError: Invalid game references - UnauthorizedPlayerError: Permission violations - InsufficientF...

(QB_NEW_EN)


[grammar] ~699-~699: There might be a mistake here.
Context: ...rizedPlayerError: Permission violations - InsufficientFundsError: Wallet balance issues - NetworkError`...

(QB_NEW_EN)


[grammar] ~700-~700: There might be a mistake here.
Context: ...icientFundsError: Wallet balance issues - NetworkError`: RPC connectivity issues ### 6.7 Integ...

(QB_NEW_EN)


[grammar] ~705-~705: There might be a mistake here.
Context: ...Patterns Event-Driven Architecture: The SDK supports real-time game state mo...

(QB_NEW_EN)


[grammar] ~771-~771: There might be a mistake here.
Context: ...r); ``` Caching and State Management: - Local game state caching to reduce RPC c...

(QB_NEW_EN)


[grammar] ~772-~772: There might be a mistake here.
Context: ...l game state caching to reduce RPC calls - Optimistic UI updates with rollback on f...

(QB_NEW_EN)


[grammar] ~773-~773: There might be a mistake here.
Context: ...stic UI updates with rollback on failure - Efficient board state serialization - Mi...

(QB_NEW_EN)


[grammar] ~774-~774: There might be a mistake here.
Context: ...re - Efficient board state serialization - Minimal account data fetching The Check...

(QB_NEW_EN)


[grammar] ~785-~785: There might be a mistake here.
Context: ...ty with user adoption: Platform Fees: - Base platform fee: 2.5% of entry fees - ...

(QB_NEW_EN)


[grammar] ~786-~786: There might be a mistake here.
Context: ... - Base platform fee: 2.5% of entry fees - Volume-based discounts for high-activity...

(QB_NEW_EN)


[grammar] ~787-~787: There might be a mistake here.
Context: ... discounts for high-activity integrators - Dynamic fee adjustment based on network ...

(QB_NEW_EN)


[grammar] ~790-~790: There might be a mistake here.
Context: ...ongestion Integrator Revenue Sharing: - Integrators earn 1-3% commission on game...

(QB_NEW_EN)


[grammar] ~807-~807: There might be a mistake here.
Context: ...egrator_fee; ``` Winner Distribution: - Winner receives 100% of prize pool - Dra...

(QB_NEW_EN)


[grammar] ~827-~827: There might be a mistake here.
Context: ...iple security layers: Access Control: - Player-specific move validation - Time-b...

(QB_NEW_EN)


[grammar] ~828-~828: There might be a mistake here.
Context: ...rol:** - Player-specific move validation - Time-based game state transitions - Auth...

(QB_NEW_EN)


[grammar] ~829-~829: There might be a mistake here.
Context: ...tion - Time-based game state transitions - Authority-based administrative functions...

(QB_NEW_EN)


[grammar] ~832-~832: There might be a mistake here.
Context: ...trative functions Financial Security: - Escrow-based prize pool management - Ato...

(QB_NEW_EN)


[grammar] ~833-~833: There might be a mistake here.
Context: ...:** - Escrow-based prize pool management - Atomic win/loss settlements - Protection...

(QB_NEW_EN)


[grammar] ~834-~834: There might be a mistake here.
Context: ...management - Atomic win/loss settlements - Protection against reentrancy attacks *...

(QB_NEW_EN)


[grammar] ~837-~837: There might be a mistake here.
Context: ...st reentrancy attacks Game Integrity: - On-chain move validation prevents cheati...

(QB_NEW_EN)


[grammar] ~846-~846: There might be a mistake here.
Context: ...n security through: State Delegation: - Temporary delegation of account authorit...

(QB_NEW_EN)


[grammar] ~847-~847: There might be a mistake here.
Context: ...emporary delegation of account authority - Automatic reversion to main chain - Cryp...

(QB_NEW_EN)


[grammar] ~848-~848: There might be a mistake here.
Context: ...rity - Automatic reversion to main chain - Cryptographic proof of state transitions...

(QB_NEW_EN)


[grammar] ~851-~851: There might be a mistake here.
Context: ... state transitions Validator Network: - Decentralized validation of rollup state...

(QB_NEW_EN)


[grammar] ~852-~852: There might be a mistake here.
Context: ...ecentralized validation of rollup states - Economic incentives for honest behavior ...

(QB_NEW_EN)


[grammar] ~853-~853: There might be a mistake here.
Context: ... Economic incentives for honest behavior - Slashing conditions for malicious actors...

(QB_NEW_EN)


[grammar] ~862-~862: There might be a mistake here.
Context: ...ance improvements: Transaction Speed: - Move confirmation: <100ms (vs 400ms on m...

(QB_NEW_EN)


[grammar] ~863-~863: There might be a mistake here.
Context: ...nfirmation: <100ms (vs 400ms on mainnet) - Game state updates: Real-time - Batch se...

(QB_NEW_EN)


[grammar] ~864-~864: There might be a mistake here.
Context: ...mainnet) - Game state updates: Real-time - Batch settlement: Every 2-4 seconds **C...

(QB_NEW_EN)


[grammar] ~867-~867: There might be a mistake here.
Context: ...t: Every 2-4 seconds Cost Efficiency: - Per-move cost: ~$0.0001 (vs $0.01 on mai...

(QB_NEW_EN)


[grammar] ~868-~868: There might be a mistake here.
Context: ...ove cost: ~$0.0001 (vs $0.01 on mainnet) - Game creation: ~$0.001 - Settlement: Sta...

(QB_NEW_EN)


[grammar] ~869-~869: There might be a mistake here.
Context: ....01 on mainnet) - Game creation: ~$0.001 - Settlement: Standard Solana fees ### 9....

(QB_NEW_EN)


[grammar] ~876-~876: There might be a mistake here.
Context: ...tiple mechanisms: Horizontal Scaling: - Multiple rollup instances for different ...

(QB_NEW_EN)


[grammar] ~877-~877: There might be a mistake here.
Context: ...ollup instances for different game types - Geographic distribution of rollup valida...

(QB_NEW_EN)


[grammar] ~878-~878: There might be a mistake here.
Context: ...raphic distribution of rollup validators - Load balancing across rollup endpoints ...

(QB_NEW_EN)


[grammar] ~881-~881: There might be a mistake here.
Context: ...llup endpoints Vertical Optimization: - Efficient board state encoding (64 bytes...

(QB_NEW_EN)


[grammar] ~882-~882: There might be a mistake here.
Context: ...fficient board state encoding (64 bytes) - Compressed move representation - Optimiz...

(QB_NEW_EN)


[grammar] ~883-~883: There might be a mistake here.
Context: ... bytes) - Compressed move representation - Optimized instruction layouts ### 9.3 N...

(QB_NEW_EN)


[grammar] ~898-~898: There might be a mistake here.
Context: ... (Q3-Q4 2025) Advanced Game Features: - Tournament bracket system - Team-based c...

(QB_NEW_EN)


[grammar] ~899-~899: There might be a mistake here.
Context: ... Features:** - Tournament bracket system - Team-based competitions - Spectator mode...

(QB_NEW_EN)


[grammar] ~900-~900: There might be a mistake here.
Context: ...bracket system - Team-based competitions - Spectator mode with live commentary - Ad...

(QB_NEW_EN)


[grammar] ~901-~901: There might be a mistake here.
Context: ...ns - Spectator mode with live commentary - Advanced time controls (Fischer, Bronste...

(QB_NEW_EN)


[grammar] ~904-~904: There might be a mistake here.
Context: ...er, Bronstein) Platform Improvements: - Mobile SDK development - Enhanced analyt...

(QB_NEW_EN)


[grammar] ~905-~905: There might be a mistake here.
Context: ...Improvements:** - Mobile SDK development - Enhanced analytics dashboard - Automated...

(QB_NEW_EN)


[grammar] ~906-~906: There might be a mistake here.
Context: ...velopment - Enhanced analytics dashboard - Automated market making for entry fees -...

(QB_NEW_EN)


[grammar] ~907-~907: There might be a mistake here.
Context: ...- Automated market making for entry fees - Integration with chess rating systems #...

(QB_NEW_EN)


[grammar] ~912-~912: There might be a mistake here.
Context: ...nts (Q1-Q2 2026) Ecosystem Expansion: - Additional board games (Go, Checkers, Ba...

(QB_NEW_EN)


[grammar] ~913-~913: There might be a mistake here.
Context: ...l board games (Go, Checkers, Backgammon) - Cross-game tournaments and leagues - NFT...

(QB_NEW_EN)


[grammar] ~914-~914: There might be a mistake here.
Context: ...on) - Cross-game tournaments and leagues - NFT integration for unique pieces and bo...

(QB_NEW_EN)


[grammar] ~915-~915: There might be a mistake here.
Context: ...integration for unique pieces and boards - Streaming and content creator tools **T...

(QB_NEW_EN)


[grammar] ~918-~918: There might be a mistake here.
Context: ...creator tools Technical Advancements: - Zero-knowledge proof integration for pri...

(QB_NEW_EN)


[grammar] ~919-~919: There might be a mistake here.
Context: ...edge proof integration for private games - Advanced AI opponent integration - Cross...

(QB_NEW_EN)


[grammar] ~920-~920: There might be a mistake here.
Context: ...games - Advanced AI opponent integration - Cross-chain bridge development - Enhance...

(QB_NEW_EN)


[grammar] ~921-~921: There might be a mistake here.
Context: ...gration - Cross-chain bridge development - Enhanced MEV protection ### 10.3 Long-t...

(QB_NEW_EN)


[grammar] ~926-~926: There might be a mistake here.
Context: ...26+) Governance and Decentralization: - DAO governance implementation - Communit...

(QB_NEW_EN)


[grammar] ~927-~927: There might be a mistake here.
Context: ...ation:** - DAO governance implementation - Community-driven feature development - D...

(QB_NEW_EN)


[grammar] ~928-~928: There might be a mistake here.
Context: ...n - Community-driven feature development - Decentralized tournament organization - ...

(QB_NEW_EN)


[grammar] ~929-~929: There might be a mistake here.
Context: ... - Decentralized tournament organization - Player-owned platform evolution ## 11. ...

(QB_NEW_EN)


[grammar] ~936-~936: There might be a mistake here.
Context: ... that delivers: Technical Excellence: - Sub-100ms move confirmations - 99%+ cost...

(QB_NEW_EN)


[grammar] ~937-~937: There might be a mistake here.
Context: ...llence:** - Sub-100ms move confirmations - 99%+ cost reduction compared to mainnet ...

(QB_NEW_EN)


[grammar] ~938-~938: There might be a mistake here.
Context: ... reduction compared to mainnet execution - Seamless integration with existing Solan...

(QB_NEW_EN)


[grammar] ~939-~939: There might be a mistake here.
Context: ...tion with existing Solana infrastructure - Robust security through cryptographic st...

(QB_NEW_EN)


[grammar] ~942-~942: There might be a mistake here.
Context: ...state delegation Economic Innovation: - Sustainable multi-tier fee structure - R...

(QB_NEW_EN)


[grammar] ~943-~943: There might be a mistake here.
Context: ...* - Sustainable multi-tier fee structure - Revenue sharing with platform integrator...

(QB_NEW_EN)


[grammar] ~944-~944: There might be a mistake here.
Context: ...evenue sharing with platform integrators - Transparent, escrow-based prize distribu...

(QB_NEW_EN)


[grammar] ~945-~945: There might be a mistake here.
Context: ...sparent, escrow-based prize distribution - Support for diverse token economies **D...

(QB_NEW_EN)


[grammar] ~948-~948: There might be a mistake here.
Context: ...token economies Developer Experience: - Comprehensive TypeScript SDK - Clean, in...

(QB_NEW_EN)


[grammar] ~949-~949: There might be a mistake here.
Context: ...rience:** - Comprehensive TypeScript SDK - Clean, intuitive API design - Extensive ...

(QB_NEW_EN)


[grammar] ~950-~950: There might be a mistake here.
Context: ...Script SDK - Clean, intuitive API design - Extensive documentation and examples - M...

(QB_NEW_EN)


[grammar] ~951-~951: There might be a mistake here.
Context: ...n - Extensive documentation and examples - Multiple integration patterns **User Be...

(QB_NEW_EN)


[grammar] ~954-~954: There might be a mistake here.
Context: ...e integration patterns User Benefits: - Instant gameplay feedback - Minimal tran...

(QB_NEW_EN)


[grammar] ~955-~955: There might be a mistake here.
Context: ... Benefits:** - Instant gameplay feedback - Minimal transaction costs - Provably fai...

(QB_NEW_EN)


[grammar] ~956-~956: There might be a mistake here.
Context: ...lay feedback - Minimal transaction costs - Provably fair game mechanics - Seamless ...

(QB_NEW_EN)


[grammar] ~957-~957: There might be a mistake here.
Context: ...ion costs - Provably fair game mechanics - Seamless wallet integration The platfor...

(QB_NEW_EN)


[grammar] ~964-~964: There might be a mistake here.
Context: ...has arrived. This chess platform stands as testament to what becomes possible when...

(QB_NEW_EN)


[style] ~964-~964: This sentence construction might be considered wordy, consider shortening it.
Context: ...ology meets timeless gameplay, creating experiences that are simultaneously familiar and revolutionary. --- *For technical...

(A_VERY_ORDERED_SENTENCE)

Comment on lines +276 to +299
// Piece encoding: 0xTC where T = type, C = color
// Color: 1 = White, 2 = Black
// Type: 1 = Pawn, 2 = Knight, 3 = Bishop, 4 = Rook, 5 = Queen, 6 = King

// Examples:
// 0x11 = White Pawn
// 0x26 = Black King
// 0x00 = Empty Square
```

#### Board Initialization
```rust
fn initialize_chess_board() -> [u8; 64] {
let mut board = [0u8; 64];

// White pieces (ranks 1-2)
board[0] = 0x14; // White Rook on a1
board[1] = 0x12; // White Knight on b1
// ... complete setup

// Black pieces (ranks 7-8)
board[56] = 0x24; // Black Rook on a8
// ... complete setup

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Fix encoding scheme inconsistency (0xTC vs 0xCT) and examples.

Examples and initialization align with 0xCT (color in high nibble, type in low), but the comment says 0xTC. Unify to 0xCT and adjust examples to be unambiguous.

-// Piece encoding: 0xTC where T = type, C = color
+// Piece encoding: 0xCT where C = color (high nibble), T = type (low nibble)

-// 0x11 = White Pawn
-// 0x26 = Black King
+// 0x11 = White Pawn  (C=1, T=1)
+// 0x26 = Black King  (C=2, T=6)
+// Helpers:
+//   color(piece) = piece >> 4
+//   typ(piece)   = piece & 0x0F
-    board[0] = 0x14; // White Rook on a1
-    board[1] = 0x12; // White Knight on b1
+    board[0] = 0x14; // White Rook on a1 (C=1,T=4)
+    board[1] = 0x12; // White Knight on b1 (C=1,T=2)
-    board[56] = 0x24; // Black Rook on a8
+    board[56] = 0x24; // Black Rook on a8 (C=2,T=4)
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
// Piece encoding: 0xTC where T = type, C = color
// Color: 1 = White, 2 = Black
// Type: 1 = Pawn, 2 = Knight, 3 = Bishop, 4 = Rook, 5 = Queen, 6 = King
// Examples:
// 0x11 = White Pawn
// 0x26 = Black King
// 0x00 = Empty Square
```
#### Board Initialization
```rust
fn initialize_chess_board() -> [u8; 64] {
let mut board = [0u8; 64];
// White pieces (ranks 1-2)
board[0] = 0x14; // White Rook on a1
board[1] = 0x12; // White Knight on b1
// ... complete setup
// Black pieces (ranks 7-8)
board[56] = 0x24; // Black Rook on a8
// ... complete setup
// Piece encoding: 0xCT where C = color (high nibble), T = type (low nibble)
// Color: 1 = White, 2 = Black
// Type: 1 = Pawn, 2 = Knight, 3 = Bishop, 4 = Rook, 5 = Queen, 6 = King
// Examples:
// 0x11 = White Pawn (C=1, T=1)
// 0x26 = Black King (C=2, T=6)
// 0x00 = Empty Square
// Helpers:
// color(piece) = piece >> 4
// typ(piece) = piece & 0x0F
#### Board Initialization
fn initialize_chess_board() -> [u8; 64] {
let mut board = [0u8; 64];
// White pieces (ranks 1-2)
board[0] = 0x14; // White Rook on a1 (C=1,T=4)
board[1] = 0x12; // White Knight on b1 (C=1,T=2)
// ... complete setup
// Black pieces (ranks 7-8)
board[56] = 0x24; // Black Rook on a8 (C=2,T=4)
// ... complete setup
}
🤖 Prompt for AI Agents
In WHITEPAPER.md around lines 276-299, the piece encoding comment currently says
"0xTC" but the examples and initialization use color in the high nibble and type
in the low nibble; change the canonical format text to "0xCT" (C = color in high
nibble, T = type in low nibble), update the brief mappings to state "Color: 1 =
White, 2 = Black (high nibble); Type: 1 = Pawn ... 6 = King (low nibble)", and
revise the example lines and the board initialization comments so they
consistently reflect 0xCT (e.g., 0x11 = White Pawn, 0x26 = Black King) and
ensure the inline board assignments/notes (like board[0] = 0x14 // White Rook on
a1) match that encoding.

Comment on lines +327 to +374
pub fn handler(
ctx: Context<MakeMove>,
from_square: u8,
to_square: u8,
promotion_piece: Option<PieceType>,
) -> Result<()> {
// 1. Basic validation
ctx.accounts.validate(from_square, to_square)?;

// 2. Turn validation
require!(
game_account.is_player_turn(&player.key()),
ChessError::NotPlayerTurn
);

// 3. Piece validation
let piece_at_from = game_account.get_piece_at(from_square);
require!(piece_at_from != 0, ChessError::NoPieceAtSquare);

// 4. Chess rule validation
require!(
utils::is_valid_chess_move(
&game_account.board_state,
from_square,
to_square,
piece_type,
&game_account.castling_rights,
game_account.en_passant_square,
promotion_piece.clone()
)?,
ChessError::InvalidMove
);

// 5. Check validation
require!(
!utils::move_leaves_king_in_check(
&game_account.board_state,
from_square,
to_square,
&player_color,
&game_account.castling_rights
)?,
ChessError::MoveExposesKing
);

// 6. Apply move
utils::apply_move_to_board(/* ... */)?
}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Undefined vars in move handler (piece_type, player_color); derive from board.

Code references piece_type and player_color without definitions. Decode from piece_at_from (or current turn).

     // 3. Piece validation
-    let piece_at_from = game_account.get_piece_at(from_square);
+    let piece_at_from = game_account.get_piece_at(from_square);
+    let piece_type = PieceType::from_byte(piece_at_from);
+    let player_color = PlayerColor::from_byte(piece_at_from);
     require!(piece_at_from != 0, ChessError::NoPieceAtSquare);
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
pub fn handler(
ctx: Context<MakeMove>,
from_square: u8,
to_square: u8,
promotion_piece: Option<PieceType>,
) -> Result<()> {
// 1. Basic validation
ctx.accounts.validate(from_square, to_square)?;
// 2. Turn validation
require!(
game_account.is_player_turn(&player.key()),
ChessError::NotPlayerTurn
);
// 3. Piece validation
let piece_at_from = game_account.get_piece_at(from_square);
require!(piece_at_from != 0, ChessError::NoPieceAtSquare);
// 4. Chess rule validation
require!(
utils::is_valid_chess_move(
&game_account.board_state,
from_square,
to_square,
piece_type,
&game_account.castling_rights,
game_account.en_passant_square,
promotion_piece.clone()
)?,
ChessError::InvalidMove
);
// 5. Check validation
require!(
!utils::move_leaves_king_in_check(
&game_account.board_state,
from_square,
to_square,
&player_color,
&game_account.castling_rights
)?,
ChessError::MoveExposesKing
);
// 6. Apply move
utils::apply_move_to_board(/* ... */)?
}
// 3. Piece validation
let piece_at_from = game_account.get_piece_at(from_square);
let piece_type = PieceType::from_byte(piece_at_from);
let player_color = PlayerColor::from_byte(piece_at_from);
require!(piece_at_from != 0, ChessError::NoPieceAtSquare);
🤖 Prompt for AI Agents
In WHITEPAPER.md around lines 327 to 374, the handler uses undefined locals
piece_type and player_color; derive them instead: decode piece_type from
piece_at_from (e.g. extract its PieceType enum/value) and derive player_color
from the piece metadata or from the game_account.current_turn (ensuring it
matches the piece owner); then pass those derived values into
utils::is_valid_chess_move and utils::move_leaves_king_in_check and any other
call sites, and update any variable names/casts to match expected function
signatures so the validations use the decoded piece type and correct player
color.

Comment on lines +436 to +456
// Time tracking per move
let time_taken = if let Some(last_move_time) = game_account.last_move_at {
(clock.unix_timestamp - last_move_time) as u32
} else {
0
};

// Update player time usage
match player_color {
PlayerColor::White => {
game_account.time_used_white += time_taken;
if let Some(increment) = game_account.get_time_increment() {
game_account.time_used_white =
game_account.time_used_white.saturating_sub(increment);
}
}
PlayerColor::Black => {
// Similar logic for black player
}
}
```
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Inconsistent field: last_move_at not defined in state.

Earlier state uses last_move: Option<LastMove>, but time control uses last_move_at. Align the model.

Option A (add timestamp field):

 pub struct GameAccount {
@@
-    pub last_move: Option<LastMove>,
+    pub last_move: Option<LastMove>,
+    pub last_move_at: Option<i64>, // unix ts
 }

Option B (use last_move.timestamp in snippet). Choose one and keep consistent throughout.

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
// Time tracking per move
let time_taken = if let Some(last_move_time) = game_account.last_move_at {
(clock.unix_timestamp - last_move_time) as u32
} else {
0
};
// Update player time usage
match player_color {
PlayerColor::White => {
game_account.time_used_white += time_taken;
if let Some(increment) = game_account.get_time_increment() {
game_account.time_used_white =
game_account.time_used_white.saturating_sub(increment);
}
}
PlayerColor::Black => {
// Similar logic for black player
}
}
```
pub struct GameAccount {
// … other fields …
pub last_move: Option<LastMove>,
pub last_move_at: Option<i64>, // unix timestamp of the last move
// … remaining fields …
}
🤖 Prompt for AI Agents
In WHITEPAPER.md around lines 436 to 456, the time-tracking snippet references
game_account.last_move_at which doesn't exist because the state uses last_move:
Option<LastMove>; update the code to use one consistent field: either add a
last_move_at: Option<i64>/timestamp to the game state everywhere (Option A) or
change this snippet to read the timestamp from last_move (e.g., if let
Some(last_move) = &game_account.last_move { (clock.unix_timestamp -
last_move.timestamp) as u32 } else { 0 }) (Option B); pick one approach, apply
it consistently across the state definition and all usages, and update any
getter/helper functions to match the chosen field name and type.

Comment on lines +548 to +550
tokenMint: address("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"), // USDC
entryFee: BigInt(1_000_000), // 1 USDC
timeControl: {
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Verification agent

🧩 Analysis chain

Devnet RPC with mainnet USDC mint; switch to devnet mint or paramize.

Using EPjF... (mainnet USDC) against devnet RPC will fail.

-  tokenMint: address("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"), // USDC
+  tokenMint: address(process.env.USDC_MINT!), // set per cluster (devnet/mainnet)

Also add a table or note mapping cluster→mint in docs.


🏁 Script executed:

#!/bin/bash
# Print context around the USDC mint snippet in WHITEPAPER.md
sed -n '530,580p' WHITEPAPER.md

Length of output: 1343


🏁 Script executed:

#!/bin/bash
# Search for USDC_MINT environment variable usage
rg -n "USDC_MINT" -C3 .

# Search for hardcoded USDC mint address occurrences
rg -n "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v" -C3 .

Length of output: 3874


Parametrize USDC mint in docs and examples
Replace every hard-coded mainnet USDC mint (EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v) with a configurable process.env.USDC_MINT—set to the devnet mint 4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU on devnet and the mainnet mint on mainnet (stackoverflow.com, docs.lmnl.app). Update WHITEPAPER.md and quick-start.mdx examples accordingly and add a cluster→mint mapping table in the docs.

🤖 Prompt for AI Agents
In WHITEPAPER.md around lines 548 to 550 the USDC mint is hard-coded to the
mainnet address EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v; replace usages
with a configurable environment variable process.env.USDC_MINT, update examples
to read that variable (and document the expected values), set the dev default to
4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU for devnet and the mainnet mint for
mainnet, apply the same change in quick-start.mdx examples, and add a small
cluster→mint mapping table in docs showing devnet and mainnet mint addresses and
how to set process.env.USDC_MINT.

Comment on lines +585 to +587
const { instruction } = await chessMateSDK.makeMoveIx(moveParams);
const signature = await sendTransaction(erRpc, [instruction], signer);

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

⚠️ Potential issue

sendTransaction not imported; batch snippet passes objects, not Instructions.

Import/send properly and pass instruction fields.

-const { instruction } = await chessMateSDK.makeMoveIx(moveParams);
-const signature = await sendTransaction(erRpc, [instruction], signer);
+const { instruction } = await chessMateSDK.makeMoveIx(moveParams);
+import { sendAndConfirm } from "@solana/kit"; // example; replace with actual
+const signature = await sendAndConfirm(erRpc, [instruction], signer);
-const instructions = [
-  await chessMateSDK.makeMoveIx(moveParams1),
-  await chessMateSDK.makeMoveIx(moveParams2)
-];
-const signature = await sendTransaction(erRpc, instructions, signer);
+const ix1 = (await chessMateSDK.makeMoveIx(moveParams1)).instruction;
+const ix2 = (await chessMateSDK.makeMoveIx(moveParams2)).instruction;
+const signature = await sendAndConfirm(erRpc, [ix1, ix2], signer);

Also applies to: 761-769

🤖 Prompt for AI Agents
In WHITEPAPER.md around lines 585-587 (also applies to 761-769), the snippet
calls sendTransaction but does not import or reference it and passes full
objects instead of Instruction instances; fix by importing or referencing the
correct sendTransaction helper (or RPC client method) at the top of the snippet
and ensure you pass the instruction field(s) (e.g., instruction or
instruction.instructions array) rather than the entire objects so the call
receives real Solana Instruction(s); update the example to extract and pass
instruction(s) and include the required import/initialization line.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 5

♻️ Duplicate comments (5)
WHITEPAPER.md (5)

405-413: Fix piece-encoding docs: 0xTC vs 0xCT inconsistency.

Unify to color high nibble, type low nibble; align examples and init comments.

-// Piece encoding: 0xTC where T = type, C = color
+// Piece encoding: 0xCT where C = color (high nibble), T = type (low nibble)
 // Color: 1 = White, 2 = Black
 // Type: 1 = Pawn, 2 = Knight, 3 = Bishop, 4 = Rook, 5 = Queen, 6 = King

-// 0x11 = White Pawn
-// 0x26 = Black King
+// 0x11 = White Pawn  (C=1,T=1)
+// 0x26 = Black King  (C=2,T=6)
-    board[0] = 0x14; // White Rook on a1
-    board[1] = 0x12; // White Knight on b1
+    board[0] = 0x14; // White Rook on a1 (C=1,T=4)
+    board[1] = 0x12; // White Knight on b1 (C=1,T=2)
-    board[56] = 0x24; // Black Rook on a8
+    board[56] = 0x24; // Black Rook on a8 (C=2,T=4)

Also applies to: 420-427


472-503: Undefined vars in move handler (piece_type, player_color).

Decode from piece_at_from before calling validators.

     let piece_at_from = game_account.get_piece_at(from_square);
+    let piece_type = PieceType::from_byte(piece_at_from);
+    let player_color = PlayerColor::from_byte(piece_at_from);
     require!(piece_at_from != 0, ChessError::NoPieceAtSquare);

565-585: last_move_at referenced but not part of state.

Add it to GameAccount or read timestamp from last_move. Recommend adding the field for clarity.

-// Time tracking per move
-let time_taken = if let Some(last_move_time) = game_account.last_move_at {
+// Time tracking per move
+let time_taken = if let Some(last_move_time) = game_account.last_move_at {
     (clock.unix_timestamp - last_move_time) as u32
 } else { 0 };

And in the state definition (earlier section):

 pub last_move: Option<LastMove>,
+pub last_move_at: Option<i64>, // unix ts

677-679: Devnet RPC + mainnet USDC mint will fail; parameterize mint per cluster.

Use process.env.USDC_MINT and document devnet/mainnet values.

-  tokenMint: address("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"), // USDC
+  tokenMint: address(process.env.USDC_MINT!), // devnet/mainnet specific

714-716: Import send helper and pass Instructions, not wrapper objects.

Fix both single-send and batch examples.

-const { instruction } = await chessMateSDK.makeMoveIx(moveParams);
-const signature = await sendTransaction(erRpc, [instruction], signer);
+import { sendAndConfirm } from "@solana/kit"; // or project helper
+const { instruction } = await chessMateSDK.makeMoveIx(moveParams);
+const signature = await sendAndConfirm(erRpc, [instruction], signer);
-const instructions = [
-  await chessMateSDK.makeMoveIx(moveParams1),
-  await chessMateSDK.makeMoveIx(moveParams2)
-];
-const signature = await sendTransaction(erRpc, instructions, signer);
+const ix1 = (await chessMateSDK.makeMoveIx(moveParams1)).instruction;
+const ix2 = (await chessMateSDK.makeMoveIx(moveParams2)).instruction;
+const signature = await sendAndConfirm(erRpc, [ix1, ix2], signer);
🧹 Nitpick comments (3)
apps/docs/content/docs/whitepaper/index.mdx (3)

52-169: Use mermaid fence for the architecture diagram (and specify languages for all fences).

Change the fence to ```mermaid so it renders in MDX and satisfies MD040.

-```
+```mermaid
 graph TB
 ...
-```
+```

775-777: Avoid const { instruction } re-declaration three times.

Rename for clarity or scope in separate blocks.

-const { instruction } = await chessMateSDK.offerDrawIx(offerDrawParams);
-const { instruction } = await chessMateSDK.acceptDrawIx(acceptDrawParams);
-const { instruction } = await chessMateSDK.rejectDrawIx(rejectDrawParams);
+const { instruction: offerDrawIx } = await chessMateSDK.offerDrawIx(offerDrawParams);
+const { instruction: acceptDrawIx } = await chessMateSDK.acceptDrawIx(acceptDrawParams);
+const { instruction: rejectDrawIx } = await chessMateSDK.rejectDrawIx(rejectDrawParams);

902-918: Polling snippet: add teardown to prevent leaking intervals.

Expose a disposer or clearInterval on game end/unmount.

-  setInterval(async () => {
+  const interval = setInterval(async () => {
     try {
       const gameAccount = await fetchGameAccount(erRpc, gameAccountPDA);
       if (gameAccount.exists) {
         updateUI(gameAccount.data);
         if (gameAccount.data.gameStatus === GameStatus.Finished) {
           handleGameEnd(gameAccount.data);
+          clearInterval(interval);
         }
       }
     } catch (error) {
       console.error("Failed to fetch game state:", error);
     }
-  }, 1000); // Poll every second
+  }, 1000); // Poll every second
+  return () => clearInterval(interval);
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 19e846c and 05f0d69.

📒 Files selected for processing (2)
  • WHITEPAPER.md (1 hunks)
  • apps/docs/content/docs/whitepaper/index.mdx (1 hunks)
🧰 Additional context used
🪛 LanguageTool
WHITEPAPER.md

[grammar] ~7-~7: There might be a mistake here.
Context: ... on-chain execution. Key Innovations: - Real-time Performance: Achieving sub-5...

(QB_NEW_EN)


[grammar] ~8-~8: There might be a mistake here.
Context: ...le maintaining full Solana compatibility - Complete On-Chain Logic: All game rule...

(QB_NEW_EN)


[grammar] ~9-~9: There might be a mistake here.
Context: ...erations executed transparently on-chain - Multi-Tenant Architecture: Scalable pl...

(QB_NEW_EN)


[grammar] ~10-~10: There might be a mistake here.
Context: ...grators with customizable fee structures - Seamless Integration: TypeScript SDK e...

(QB_NEW_EN)


[grammar] ~16-~16: There might be a mistake here.
Context: ...Fi landscape. Competitive Advantages: - No state fragmentation or bridge depende...

(QB_NEW_EN)


[grammar] ~17-~17: There might be a mistake here.
Context: ...ate fragmentation or bridge dependencies - Horizontal scaling through on-demand Eph...

(QB_NEW_EN)


[grammar] ~18-~18: There might be a mistake here.
Context: ...tal scaling through on-demand Ephemeral Rollups - Native Solana ecosystem integration - Tr...

(QB_NEW_EN)


[grammar] ~19-~19: There might be a mistake here.
Context: ...ps - Native Solana ecosystem integration - Transparent and immutable game mechanics...

(QB_NEW_EN)


[grammar] ~171-~171: There might be a mistake here.
Context: ...Chess players and third-party developers - Integration Layer: SDK, wallets, and f...

(QB_NEW_EN)


[grammar] ~172-~172: There might be a mistake here.
Context: ...*: SDK, wallets, and frontend interfaces - Platform Layer: Multiple integrator pl...

(QB_NEW_EN)


[grammar] ~173-~173: There might be a mistake here.
Context: ...tor platforms with custom configurations - Ephemeral Rollup Layer: High-speed exe...

(QB_NEW_EN)


[grammar] ~174-~174: There might be a mistake here.
Context: ... execution environments for active games - Solana L1 Layer: Permanent state stora...

(QB_NEW_EN)


[grammar] ~231-~231: There might be a mistake here.
Context: ...fecycle: Game Lifecycle Management: - create_game: Initialize new games with configurable...

(QB_NEW_EN)


[grammar] ~232-~232: There might be a mistake here.
Context: ...e new games with configurable parameters - join_game: Enable second player to join open game...

(QB_NEW_EN)


[grammar] ~233-~233: There might be a mistake here.
Context: ... configurable parameters - join_game: Enable second player to join open games - `can...

(QB_NEW_EN)


[grammar] ~233-~233: There might be a mistake here.
Context: ... Enable second player to join open games - cancel_game: Allow creators to cancel games before ...

(QB_NEW_EN)


[grammar] ~234-~234: There might be a mistake here.
Context: ...eators to cancel games before they start - forfeit_game: Enable players to concede during activ...

(QB_NEW_EN)


[grammar] ~237-~237: There might be a mistake here.
Context: ...during active games Move Execution: - make_move: Core instruction handling move validat...

(QB_NEW_EN)


[grammar] ~238-~238: There might be a mistake here.
Context: ...ndling move validation and state updates - Comprehensive chess rule validation incl...

(QB_NEW_EN)


[grammar] ~239-~239: There might be a mistake here.
Context: ...ule validation including check detection - Special move support (castling, en passa...

(QB_NEW_EN)


[grammar] ~242-~242: There might be a mistake here.
Context: ...passant, promotion) Draw Mechanics: - offer_draw: Propose draw to opponent - `accept_dra...

(QB_NEW_EN)


[grammar] ~243-~243: There might be a mistake here.
Context: ...- offer_draw: Propose draw to opponent - accept_draw: Accept pending draw offers - `reject_d...

(QB_NEW_EN)


[grammar] ~244-~244: There might be a mistake here.
Context: ...accept_draw: Accept pending draw offers - reject_draw`: Decline draw proposals **Financial Op...

(QB_NEW_EN)


[grammar] ~247-~247: There might be a mistake here.
Context: ...raw proposals Financial Operations: - claim_winnings: Distribute prize pools to winners - Au...

(QB_NEW_EN)


[grammar] ~279-~279: There might be a mistake here.
Context: ...ame_id: u64, } ``` This design enables: - White-label Integration: Third-party p...

(QB_NEW_EN)


[grammar] ~287-~287: There might be a mistake here.
Context: ...cial Architecture #### Escrow Mechanism The system implements a secure escrow me...

(QB_NEW_EN)


[grammar] ~297-~297: There might be a mistake here.
Context: ...ocked: bool, ``` Security Features: - Funds are locked in program-controlled a...

(QB_NEW_EN)


[grammar] ~303-~303: There might be a mistake here.
Context: ... in case of disputes #### Fee Structure The platform implements a dual-fee syste...

(QB_NEW_EN)


[grammar] ~304-~304: There might be a mistake here.
Context: ...e platform implements a dual-fee system: - Platform Fees: Base fees collected by ...

(QB_NEW_EN)


[grammar] ~305-~305: There might be a mistake here.
Context: ...Base fees collected by the chess program - Integrator Fees: Additional fees colle...

(QB_NEW_EN)


[grammar] ~306-~306: There might be a mistake here.
Context: ... fees collected by third-party platforms - Transparent Calculation: All fees calc...

(QB_NEW_EN)


[grammar] ~334-~334: There might be a mistake here.
Context: ...support } ``` Delegation Lifecycle: 1. Initiation: Game accounts are delegate...

(QB_NEW_EN)


[grammar] ~340-~340: There might be a mistake here.
Context: ... session ends #### Parallel Read Access During delegation, the base layer mainta...

(QB_NEW_EN)


[grammar] ~341-~341: There might be a mistake here.
Context: ... access to delegated accounts, ensuring: - Composability: Other programs can stil...

(QB_NEW_EN)


[grammar] ~348-~348: There might be a mistake here.
Context: ...on Details #### Conditional Compilation The program uses feature flags to suppor...

(QB_NEW_EN)


[grammar] ~366-~366: There might be a mistake here.
Context: ...nnotation } ``` #### Commit Annotations The #[commit] macro automatically hand...

(QB_NEW_EN)


[grammar] ~367-~367: There might be a mistake here.
Context: ...dles state commitment to the base layer: - Automatic Batching: Multiple operation...

(QB_NEW_EN)


[grammar] ~372-~372: There might be a mistake here.
Context: ...ically reverted #### Session Management Ephemeral Rollup sessions are managed th...

(QB_NEW_EN)


[grammar] ~382-~382: There might be a mistake here.
Context: ...ormance Benefits #### Latency Reduction - Base Layer: 400ms average block time o...

(QB_NEW_EN)


[grammar] ~383-~383: There might be a mistake here.
Context: ...er**: 400ms average block time on Solana - Ephemeral Rollup: 10-50ms execution ti...

(QB_NEW_EN)


[grammar] ~384-~384: There might be a mistake here.
Context: ...: 10-50ms execution time for chess moves - User Experience: Near-instantaneous mo...

(QB_NEW_EN)


[grammar] ~387-~387: There might be a mistake here.
Context: ...d board updates #### Throughput Scaling - Horizontal Scaling: Multiple rollups c...

(QB_NEW_EN)


[grammar] ~392-~392: There might be a mistake here.
Context: ...ng active sessions #### Cost Efficiency - Reduced Base Layer Load: Only final st...

(QB_NEW_EN)


[grammar] ~508-~508: There might be a mistake here.
Context: ...e Handling Castling Implementation: - Validates king and rook positions - Chec...

(QB_NEW_EN)


[grammar] ~509-~509: There might be a mistake here.
Context: ...n**: - Validates king and rook positions - Checks for intervening pieces - Ensures ...

(QB_NEW_EN)


[grammar] ~510-~510: There might be a mistake here.
Context: ...ositions - Checks for intervening pieces - Ensures neither piece has moved previous...

(QB_NEW_EN)


[grammar] ~511-~511: There might be a mistake here.
Context: ...sures neither piece has moved previously - Verifies king is not in check **En Pass...

(QB_NEW_EN)


[grammar] ~514-~514: There might be a mistake here.
Context: ...is not in check En Passant Capture: - Tracks pawn double-moves for en passant ...

(QB_NEW_EN)


[grammar] ~515-~515: There might be a mistake here.
Context: ...ouble-moves for en passant opportunities - Validates capture conditions - Removes c...

(QB_NEW_EN)


[grammar] ~516-~516: There might be a mistake here.
Context: ...rtunities - Validates capture conditions - Removes captured pawn from board **Pawn...

(QB_NEW_EN)


[grammar] ~519-~519: There might be a mistake here.
Context: ...red pawn from board Pawn Promotion: - Detects pawns reaching the opposite end ...

(QB_NEW_EN)


[grammar] ~603-~603: There might be a mistake here.
Context: ...atically detects game-ending conditions: - Checkmate Detection: Validates that th...

(QB_NEW_EN)


[grammar] ~605-~605: There might be a mistake here.
Context: ...es positions where no legal moves exist but king is not in check - **Draw Condition...

(QB_NEW_EN)


[grammar] ~632-~632: There might be a mistake here.
Context: ...Installation and Setup Prerequisites: - Node.js 18+ - TypeScript 4.9+ **Install...

(QB_NEW_EN)


[grammar] ~633-~633: There might be a mistake here.
Context: ... Setup Prerequisites: - Node.js 18+ - TypeScript 4.9+ Installation: ```ba...

(QB_NEW_EN)


[grammar] ~641-~641: There might be a mistake here.
Context: ...ogram/token ``` Wallet Integration: The SDK works with any wallet implementi...

(QB_NEW_EN)


[grammar] ~825-~825: There might be a mistake here.
Context: ..., error); } } ``` Error Categories: - InvalidMoveError: Chess rule violations - `GameNotFoundE...

(QB_NEW_EN)


[grammar] ~826-~826: There might be a mistake here.
Context: ...InvalidMoveError: Chess rule violations - GameNotFoundError: Invalid game references - Unauthorize...

(QB_NEW_EN)


[grammar] ~827-~827: There might be a mistake here.
Context: ...eNotFoundError: Invalid game references - UnauthorizedPlayerError: Permission violations - InsufficientF...

(QB_NEW_EN)


[grammar] ~828-~828: There might be a mistake here.
Context: ...rizedPlayerError: Permission violations - InsufficientFundsError: Wallet balance issues - NetworkError`...

(QB_NEW_EN)


[grammar] ~829-~829: There might be a mistake here.
Context: ...icientFundsError: Wallet balance issues - NetworkError`: RPC connectivity issues ### 6.7 Integ...

(QB_NEW_EN)


[grammar] ~834-~834: There might be a mistake here.
Context: ...Patterns Event-Driven Architecture: The SDK supports real-time game state mo...

(QB_NEW_EN)


[grammar] ~900-~900: There might be a mistake here.
Context: ...r); ``` Caching and State Management: - Local game state caching to reduce RPC c...

(QB_NEW_EN)


[grammar] ~901-~901: There might be a mistake here.
Context: ...l game state caching to reduce RPC calls - Optimistic UI updates with rollback on f...

(QB_NEW_EN)


[grammar] ~902-~902: There might be a mistake here.
Context: ...stic UI updates with rollback on failure - Efficient board state serialization - Mi...

(QB_NEW_EN)


[grammar] ~903-~903: There might be a mistake here.
Context: ...re - Efficient board state serialization - Minimal account data fetching The Check...

(QB_NEW_EN)


[grammar] ~914-~914: There might be a mistake here.
Context: ...ty with user adoption: Platform Fees: - Base platform fee: 2.5% of entry fees - ...

(QB_NEW_EN)


[grammar] ~915-~915: There might be a mistake here.
Context: ... - Base platform fee: 2.5% of entry fees - Volume-based discounts for high-activity...

(QB_NEW_EN)


[grammar] ~916-~916: There might be a mistake here.
Context: ... discounts for high-activity integrators - Dynamic fee adjustment based on network ...

(QB_NEW_EN)


[grammar] ~919-~919: There might be a mistake here.
Context: ...ongestion Integrator Revenue Sharing: - Integrators earn 1-3% commission on game...

(QB_NEW_EN)


[grammar] ~936-~936: There might be a mistake here.
Context: ...egrator_fee; ``` Winner Distribution: - Winner receives 100% of prize pool - Dra...

(QB_NEW_EN)


[grammar] ~956-~956: There might be a mistake here.
Context: ...iple security layers: Access Control: - Player-specific move validation - Time-b...

(QB_NEW_EN)


[grammar] ~957-~957: There might be a mistake here.
Context: ...rol:** - Player-specific move validation - Time-based game state transitions - Auth...

(QB_NEW_EN)


[grammar] ~958-~958: There might be a mistake here.
Context: ...tion - Time-based game state transitions - Authority-based administrative functions...

(QB_NEW_EN)


[grammar] ~961-~961: There might be a mistake here.
Context: ...trative functions Financial Security: - Escrow-based prize pool management - Ato...

(QB_NEW_EN)


[grammar] ~962-~962: There might be a mistake here.
Context: ...:** - Escrow-based prize pool management - Atomic win/loss settlements - Protection...

(QB_NEW_EN)


[grammar] ~963-~963: There might be a mistake here.
Context: ...management - Atomic win/loss settlements - Protection against reentrancy attacks *...

(QB_NEW_EN)


[grammar] ~966-~966: There might be a mistake here.
Context: ...st reentrancy attacks Game Integrity: - On-chain move validation prevents cheati...

(QB_NEW_EN)


[grammar] ~975-~975: There might be a mistake here.
Context: ...n security through: State Delegation: - Temporary delegation of account authorit...

(QB_NEW_EN)


[grammar] ~976-~976: There might be a mistake here.
Context: ...emporary delegation of account authority - Automatic reversion to main chain - Cryp...

(QB_NEW_EN)


[grammar] ~977-~977: There might be a mistake here.
Context: ...rity - Automatic reversion to main chain - Cryptographic proof of state transitions...

(QB_NEW_EN)


[grammar] ~980-~980: There might be a mistake here.
Context: ... state transitions Validator Network: - Decentralized validation of rollup state...

(QB_NEW_EN)


[grammar] ~981-~981: There might be a mistake here.
Context: ...ecentralized validation of rollup states - Economic incentives for honest behavior ...

(QB_NEW_EN)


[grammar] ~982-~982: There might be a mistake here.
Context: ... Economic incentives for honest behavior - Slashing conditions for malicious actors...

(QB_NEW_EN)


[grammar] ~991-~991: There might be a mistake here.
Context: ...ance improvements: Transaction Speed: - Move confirmation: <100ms (vs 400ms on m...

(QB_NEW_EN)


[grammar] ~992-~992: There might be a mistake here.
Context: ...nfirmation: <100ms (vs 400ms on mainnet) - Game state updates: Real-time - Batch se...

(QB_NEW_EN)


[grammar] ~993-~993: There might be a mistake here.
Context: ...mainnet) - Game state updates: Real-time - Batch settlement: Every 2-4 seconds **C...

(QB_NEW_EN)


[grammar] ~996-~996: There might be a mistake here.
Context: ...t: Every 2-4 seconds Cost Efficiency: - Per-move cost: ~$0.0001 (vs $0.01 on mai...

(QB_NEW_EN)


[grammar] ~997-~997: There might be a mistake here.
Context: ...ove cost: ~$0.0001 (vs $0.01 on mainnet) - Game creation: ~$0.001 - Settlement: Sta...

(QB_NEW_EN)


[grammar] ~998-~998: There might be a mistake here.
Context: ....01 on mainnet) - Game creation: ~$0.001 - Settlement: Standard Solana fees ### 9....

(QB_NEW_EN)


[grammar] ~1005-~1005: There might be a mistake here.
Context: ...tiple mechanisms: Horizontal Scaling: - Multiple rollup instances for different ...

(QB_NEW_EN)


[grammar] ~1006-~1006: There might be a mistake here.
Context: ...ollup instances for different game types - Geographic distribution of rollup valida...

(QB_NEW_EN)


[grammar] ~1007-~1007: There might be a mistake here.
Context: ...raphic distribution of rollup validators - Load balancing across rollup endpoints ...

(QB_NEW_EN)


[grammar] ~1010-~1010: There might be a mistake here.
Context: ...llup endpoints Vertical Optimization: - Efficient board state encoding (64 bytes...

(QB_NEW_EN)


[grammar] ~1011-~1011: There might be a mistake here.
Context: ...fficient board state encoding (64 bytes) - Compressed move representation - Optimiz...

(QB_NEW_EN)


[grammar] ~1012-~1012: There might be a mistake here.
Context: ... bytes) - Compressed move representation - Optimized instruction layouts ### 9.3 N...

(QB_NEW_EN)


[grammar] ~1027-~1027: There might be a mistake here.
Context: ... (Q3-Q4 2025) Advanced Game Features: - Tournament bracket system - Team-based c...

(QB_NEW_EN)


[grammar] ~1028-~1028: There might be a mistake here.
Context: ... Features:** - Tournament bracket system - Team-based competitions - Spectator mode...

(QB_NEW_EN)


[grammar] ~1029-~1029: There might be a mistake here.
Context: ...bracket system - Team-based competitions - Spectator mode with live commentary - Ad...

(QB_NEW_EN)


[grammar] ~1030-~1030: There might be a mistake here.
Context: ...ns - Spectator mode with live commentary - Advanced time controls (Fischer, Bronste...

(QB_NEW_EN)


[grammar] ~1033-~1033: There might be a mistake here.
Context: ...er, Bronstein) Platform Improvements: - Mobile SDK development - Enhanced analyt...

(QB_NEW_EN)


[grammar] ~1034-~1034: There might be a mistake here.
Context: ...Improvements:** - Mobile SDK development - Enhanced analytics dashboard - Automated...

(QB_NEW_EN)


[grammar] ~1035-~1035: There might be a mistake here.
Context: ...velopment - Enhanced analytics dashboard - Automated market making for entry fees -...

(QB_NEW_EN)


[grammar] ~1036-~1036: There might be a mistake here.
Context: ...- Automated market making for entry fees - Integration with chess rating systems #...

(QB_NEW_EN)


[grammar] ~1041-~1041: There might be a mistake here.
Context: ...nts (Q1-Q2 2026) Ecosystem Expansion: - Additional board games (Go, Checkers, Ba...

(QB_NEW_EN)


[grammar] ~1042-~1042: There might be a mistake here.
Context: ...l board games (Go, Checkers, Backgammon) - Cross-game tournaments and leagues - NFT...

(QB_NEW_EN)


[grammar] ~1043-~1043: There might be a mistake here.
Context: ...on) - Cross-game tournaments and leagues - NFT integration for unique pieces and bo...

(QB_NEW_EN)


[grammar] ~1044-~1044: There might be a mistake here.
Context: ...integration for unique pieces and boards - Streaming and content creator tools **T...

(QB_NEW_EN)


[grammar] ~1047-~1047: There might be a mistake here.
Context: ...creator tools Technical Advancements: - Zero-knowledge proof integration for pri...

(QB_NEW_EN)


[grammar] ~1048-~1048: There might be a mistake here.
Context: ...edge proof integration for private games - Advanced AI opponent integration - Cross...

(QB_NEW_EN)


[grammar] ~1049-~1049: There might be a mistake here.
Context: ...games - Advanced AI opponent integration - Cross-chain bridge development - Enhance...

(QB_NEW_EN)


[grammar] ~1050-~1050: There might be a mistake here.
Context: ...gration - Cross-chain bridge development - Enhanced MEV protection ### 10.3 Long-t...

(QB_NEW_EN)


[grammar] ~1055-~1055: There might be a mistake here.
Context: ...26+) Governance and Decentralization: - DAO governance implementation - Communit...

(QB_NEW_EN)


[grammar] ~1056-~1056: There might be a mistake here.
Context: ...ation:** - DAO governance implementation - Community-driven feature development - D...

(QB_NEW_EN)


[grammar] ~1057-~1057: There might be a mistake here.
Context: ...n - Community-driven feature development - Decentralized tournament organization - ...

(QB_NEW_EN)


[grammar] ~1058-~1058: There might be a mistake here.
Context: ... - Decentralized tournament organization - Player-owned platform evolution ## 11. ...

(QB_NEW_EN)


[grammar] ~1065-~1065: There might be a mistake here.
Context: ... that delivers: Technical Excellence: - Sub-100ms move confirmations - 99%+ cost...

(QB_NEW_EN)


[grammar] ~1066-~1066: There might be a mistake here.
Context: ...llence:** - Sub-100ms move confirmations - 99%+ cost reduction compared to mainnet ...

(QB_NEW_EN)


[grammar] ~1067-~1067: There might be a mistake here.
Context: ... reduction compared to mainnet execution - Seamless integration with existing Solan...

(QB_NEW_EN)


[grammar] ~1068-~1068: There might be a mistake here.
Context: ...tion with existing Solana infrastructure - Robust security through cryptographic st...

(QB_NEW_EN)


[grammar] ~1071-~1071: There might be a mistake here.
Context: ...state delegation Economic Innovation: - Sustainable multi-tier fee structure - R...

(QB_NEW_EN)


[grammar] ~1072-~1072: There might be a mistake here.
Context: ...* - Sustainable multi-tier fee structure - Revenue sharing with platform integrator...

(QB_NEW_EN)


[grammar] ~1073-~1073: There might be a mistake here.
Context: ...evenue sharing with platform integrators - Transparent, escrow-based prize distribu...

(QB_NEW_EN)


[grammar] ~1074-~1074: There might be a mistake here.
Context: ...sparent, escrow-based prize distribution - Support for diverse token economies **D...

(QB_NEW_EN)


[grammar] ~1077-~1077: There might be a mistake here.
Context: ...token economies Developer Experience: - Comprehensive TypeScript SDK - Clean, in...

(QB_NEW_EN)


[grammar] ~1078-~1078: There might be a mistake here.
Context: ...rience:** - Comprehensive TypeScript SDK - Clean, intuitive API design - Extensive ...

(QB_NEW_EN)


[grammar] ~1079-~1079: There might be a mistake here.
Context: ...Script SDK - Clean, intuitive API design - Extensive documentation and examples - M...

(QB_NEW_EN)


[grammar] ~1080-~1080: There might be a mistake here.
Context: ...n - Extensive documentation and examples - Multiple integration patterns **User Be...

(QB_NEW_EN)


[grammar] ~1083-~1083: There might be a mistake here.
Context: ...e integration patterns User Benefits: - Instant gameplay feedback - Minimal tran...

(QB_NEW_EN)


[grammar] ~1084-~1084: There might be a mistake here.
Context: ... Benefits:** - Instant gameplay feedback - Minimal transaction costs - Provably fai...

(QB_NEW_EN)


[grammar] ~1085-~1085: There might be a mistake here.
Context: ...lay feedback - Minimal transaction costs - Provably fair game mechanics - Seamless ...

(QB_NEW_EN)


[grammar] ~1086-~1086: There might be a mistake here.
Context: ...ion costs - Provably fair game mechanics - Seamless wallet integration The platfor...

(QB_NEW_EN)


[grammar] ~1093-~1093: There might be a mistake here.
Context: ...has arrived. This chess platform stands as testament to what becomes possible when...

(QB_NEW_EN)


[style] ~1093-~1093: This sentence construction might be considered wordy, consider shortening it.
Context: ...ology meets timeless gameplay, creating experiences that are simultaneously familiar and revolutionary. --- *For technical...

(A_VERY_ORDERED_SENTENCE)

apps/docs/content/docs/whitepaper/index.mdx

[grammar] ~9-~9: There might be a mistake here.
Context: ...le maintaining full Solana compatibility - Complete On-Chain Logic: All game rule...

(QB_NEW_EN)


[grammar] ~10-~10: There might be a mistake here.
Context: ...erations executed transparently on-chain - Multi-Tenant Architecture: Scalable pl...

(QB_NEW_EN)


[grammar] ~11-~11: There might be a mistake here.
Context: ...grators with customizable fee structures - Seamless Integration: TypeScript SDK e...

(QB_NEW_EN)


[grammar] ~19-~19: There might be a mistake here.
Context: ...ate fragmentation or bridge dependencies - Horizontal scaling through on-demand Eph...

(QB_NEW_EN)


[grammar] ~20-~20: There might be a mistake here.
Context: ...tal scaling through on-demand Ephemeral Rollups - Native Solana ecosystem integration - Tr...

(QB_NEW_EN)


[grammar] ~21-~21: There might be a mistake here.
Context: ...ps - Native Solana ecosystem integration - Transparent and immutable game mechanics...

(QB_NEW_EN)


[grammar] ~173-~173: There might be a mistake here.
Context: ...Chess players and third-party developers - Integration Layer: SDK, wallets, and f...

(QB_NEW_EN)


[grammar] ~174-~174: There might be a mistake here.
Context: ...*: SDK, wallets, and frontend interfaces - Platform Layer: Multiple integrator pl...

(QB_NEW_EN)


[grammar] ~175-~175: There might be a mistake here.
Context: ...tor platforms with custom configurations - Ephemeral Rollup Layer: High-speed exe...

(QB_NEW_EN)


[grammar] ~176-~176: There might be a mistake here.
Context: ... execution environments for active games - Solana L1 Layer: Permanent state stora...

(QB_NEW_EN)


[grammar] ~246-~246: There might be a mistake here.
Context: ... configurable parameters - join_game: Enable second player to join open games - `can...

(QB_NEW_EN)


[grammar] ~252-~252: There might be a mistake here.
Context: ...ndling move validation and state updates - Comprehensive chess rule validation incl...

(QB_NEW_EN)


[grammar] ~253-~253: There might be a mistake here.
Context: ...ule validation including check detection - Special move support (castling, en passa...

(QB_NEW_EN)


[grammar] ~258-~258: There might be a mistake here.
Context: ...) Draw Mechanics: - offer_draw: Propose draw to opponent - accept_draw: Accep...

(QB_NEW_EN)


[grammar] ~258-~258: There might be a mistake here.
Context: ...hanics**: - offer_draw: Propose draw to opponent - accept_draw: Accept pendin...

(QB_NEW_EN)


[grammar] ~321-~321: There might be a mistake here.
Context: ...against double-spending and manipulation - Support for partial refunds in case of d...

(QB_NEW_EN)


[grammar] ~328-~328: There might be a mistake here.
Context: ...Base fees collected by the chess program - Integrator Fees: Additional fees colle...

(QB_NEW_EN)


[grammar] ~329-~329: There might be a mistake here.
Context: ... fees collected by third-party platforms - Transparent Calculation: All fees calc...

(QB_NEW_EN)


[grammar] ~416-~416: There might be a mistake here.
Context: ...er**: 400ms average block time on Solana - Ephemeral Rollup: 10-50ms execution ti...

(QB_NEW_EN)


[grammar] ~417-~417: There might be a mistake here.
Context: ...: 10-50ms execution time for chess moves - User Experience: Near-instantaneous mo...

(QB_NEW_EN)


[grammar] ~549-~549: There might be a mistake here.
Context: ...**: - Validates king and rook positions - Checks for intervening pieces - Ensures ...

(QB_NEW_EN)


[grammar] ~550-~550: There might be a mistake here.
Context: ...ositions - Checks for intervening pieces - Ensures neither piece has moved previous...

(QB_NEW_EN)


[grammar] ~551-~551: There might be a mistake here.
Context: ...sures neither piece has moved previously - Verifies king is not in check **En Pass...

(QB_NEW_EN)


[grammar] ~556-~556: There might be a mistake here.
Context: ...ouble-moves for en passant opportunities - Validates capture conditions - Removes c...

(QB_NEW_EN)


[grammar] ~557-~557: There might be a mistake here.
Context: ...rtunities - Validates capture conditions - Removes captured pawn from board **Pawn...

(QB_NEW_EN)


[grammar] ~562-~562: There might be a mistake here.
Context: ... Detects pawns reaching the opposite end - Validates promotion piece selection - Up...

(QB_NEW_EN)


[grammar] ~563-~563: There might be a mistake here.
Context: ...nd - Validates promotion piece selection - Updates board state with promoted piece ...

(QB_NEW_EN)


[grammar] ~652-~652: There might be a mistake here.
Context: ...es positions where no legal moves exist but king is not in check - **Draw Condition...

(QB_NEW_EN)


[grammar] ~680-~680: There might be a mistake here.
Context: ...Setup Prerequisites: - Node.js 18+ - TypeScript 4.9+ Installation: ```b...

(QB_NEW_EN)


[grammar] ~689-~689: There might be a mistake here.
Context: ...ogram/token ``` Wallet Integration: The SDK works with any wallet implementi...

(QB_NEW_EN)


[grammar] ~886-~886: There might be a mistake here.
Context: ...InvalidMoveError: Chess rule violations - GameNotFoundError: Invalid game references - Unauthorize...

(QB_NEW_EN)


[grammar] ~887-~887: There might be a mistake here.
Context: ...eNotFoundError: Invalid game references - UnauthorizedPlayerError: Permission violations - InsufficientF...

(QB_NEW_EN)


[grammar] ~888-~888: There might be a mistake here.
Context: ...rizedPlayerError: Permission violations - InsufficientFundsError: Wallet balance issues - NetworkError`...

(QB_NEW_EN)


[grammar] ~889-~889: There might be a mistake here.
Context: ...icientFundsError: Wallet balance issues - NetworkError`: RPC connectivity issues ### 6.7 Integ...

(QB_NEW_EN)


[grammar] ~894-~894: There might be a mistake here.
Context: ...Patterns Event-Driven Architecture: The SDK supports real-time game state mo...

(QB_NEW_EN)


[grammar] ~964-~964: There might be a mistake here.
Context: ...l game state caching to reduce RPC calls - Optimistic UI updates with rollback on f...

(QB_NEW_EN)


[grammar] ~965-~965: There might be a mistake here.
Context: ...stic UI updates with rollback on failure - Efficient board state serialization - Mi...

(QB_NEW_EN)


[grammar] ~966-~966: There might be a mistake here.
Context: ...re - Efficient board state serialization - Minimal account data fetching The Check...

(QB_NEW_EN)


[grammar] ~979-~979: There might be a mistake here.
Context: ... - Base platform fee: 2.5% of entry fees - Volume-based discounts for high-activity...

(QB_NEW_EN)


[grammar] ~980-~980: There might be a mistake here.
Context: ... discounts for high-activity integrators - Dynamic fee adjustment based on network ...

(QB_NEW_EN)


[grammar] ~1003-~1003: There might be a mistake here.
Context: ...Distribution:** - Winner receives 100% of prize pool - Draw results in 50/50 spli...

(QB_NEW_EN)


[grammar] ~1024-~1024: There might be a mistake here.
Context: ...ol:** - Player-specific move validation - Time-based game state transitions - Auth...

(QB_NEW_EN)


[grammar] ~1025-~1025: There might be a mistake here.
Context: ...tion - Time-based game state transitions - Authority-based administrative functions...

(QB_NEW_EN)


[grammar] ~1030-~1030: There might be a mistake here.
Context: ...** - Escrow-based prize pool management - Atomic win/loss settlements - Protection...

(QB_NEW_EN)


[grammar] ~1031-~1031: There might be a mistake here.
Context: ...management - Atomic win/loss settlements - Protection against reentrancy attacks *...

(QB_NEW_EN)


[grammar] ~1046-~1046: There might be a mistake here.
Context: ...emporary delegation of account authority - Automatic reversion to main chain - Cryp...

(QB_NEW_EN)


[grammar] ~1047-~1047: There might be a mistake here.
Context: ...rity - Automatic reversion to main chain - Cryptographic proof of state transitions...

(QB_NEW_EN)


[grammar] ~1052-~1052: There might be a mistake here.
Context: ...ecentralized validation of rollup states - Economic incentives for honest behavior ...

(QB_NEW_EN)


[grammar] ~1053-~1053: There might be a mistake here.
Context: ... Economic incentives for honest behavior - Slashing conditions for malicious actors...

(QB_NEW_EN)


[grammar] ~1064-~1064: There might be a mistake here.
Context: ...nfirmation: <100ms (vs 400ms on mainnet) - Game state updates: Real-time - Batch se...

(QB_NEW_EN)


[grammar] ~1065-~1065: There might be a mistake here.
Context: ...mainnet) - Game state updates: Real-time - Batch settlement: Every 2-4 seconds **C...

(QB_NEW_EN)


[grammar] ~1070-~1070: There might be a mistake here.
Context: ...ove cost: ~$0.0001 (vs $0.01 on mainnet) - Game creation: ~$0.001 - Settlement: Sta...

(QB_NEW_EN)


[grammar] ~1071-~1071: There might be a mistake here.
Context: ....01 on mainnet) - Game creation: ~$0.001 - Settlement: Standard Solana fees ### 9....

(QB_NEW_EN)


[grammar] ~1080-~1080: There might be a mistake here.
Context: ...ollup instances for different game types - Geographic distribution of rollup valida...

(QB_NEW_EN)


[grammar] ~1081-~1081: There might be a mistake here.
Context: ...raphic distribution of rollup validators - Load balancing across rollup endpoints ...

(QB_NEW_EN)


[grammar] ~1086-~1086: There might be a mistake here.
Context: ...fficient board state encoding (64 bytes) - Compressed move representation - Optimiz...

(QB_NEW_EN)


[grammar] ~1087-~1087: There might be a mistake here.
Context: ... bytes) - Compressed move representation - Optimized instruction layouts ### 9.3 N...

(QB_NEW_EN)


[grammar] ~1104-~1104: There might be a mistake here.
Context: ...Features:** - Tournament bracket system - Team-based competitions - Spectator mode...

(QB_NEW_EN)


[grammar] ~1105-~1105: There might be a mistake here.
Context: ...bracket system - Team-based competitions - Spectator mode with live commentary - Ad...

(QB_NEW_EN)


[grammar] ~1106-~1106: There might be a mistake here.
Context: ...ns - Spectator mode with live commentary - Advanced time controls (Fischer, Bronste...

(QB_NEW_EN)


[grammar] ~1111-~1111: There might be a mistake here.
Context: ...mprovements:** - Mobile SDK development - Enhanced analytics dashboard - Automated...

(QB_NEW_EN)


[grammar] ~1112-~1112: There might be a mistake here.
Context: ...velopment - Enhanced analytics dashboard - Automated market making for entry fees -...

(QB_NEW_EN)


[grammar] ~1113-~1113: There might be a mistake here.
Context: ...- Automated market making for entry fees - Integration with chess rating systems #...

(QB_NEW_EN)


[grammar] ~1120-~1120: There might be a mistake here.
Context: ...l board games (Go, Checkers, Backgammon) - Cross-game tournaments and leagues - NFT...

(QB_NEW_EN)


[grammar] ~1121-~1121: There might be a mistake here.
Context: ...on) - Cross-game tournaments and leagues - NFT integration for unique pieces and bo...

(QB_NEW_EN)


[grammar] ~1122-~1122: There might be a mistake here.
Context: ...integration for unique pieces and boards - Streaming and content creator tools **T...

(QB_NEW_EN)


[grammar] ~1127-~1127: There might be a mistake here.
Context: ...edge proof integration for private games - Advanced AI opponent integration - Cross...

(QB_NEW_EN)


[grammar] ~1128-~1128: There might be a mistake here.
Context: ...games - Advanced AI opponent integration - Cross-chain bridge development - Enhance...

(QB_NEW_EN)


[grammar] ~1129-~1129: There might be a mistake here.
Context: ...gration - Cross-chain bridge development - Enhanced MEV protection ### 10.3 Long-t...

(QB_NEW_EN)


[grammar] ~1136-~1136: There might be a mistake here.
Context: ...tion:** - DAO governance implementation - Community-driven feature development - D...

(QB_NEW_EN)


[grammar] ~1137-~1137: There might be a mistake here.
Context: ...n - Community-driven feature development - Decentralized tournament organization - ...

(QB_NEW_EN)


[grammar] ~1138-~1138: There might be a mistake here.
Context: ... - Decentralized tournament organization - Player-owned platform evolution ## 11. ...

(QB_NEW_EN)


[grammar] ~1147-~1147: There might be a mistake here.
Context: ...lence:** - Sub-100ms move confirmations - 99%+ cost reduction compared to mainnet ...

(QB_NEW_EN)


[grammar] ~1148-~1148: There might be a mistake here.
Context: ... reduction compared to mainnet execution - Seamless integration with existing Solan...

(QB_NEW_EN)


[grammar] ~1149-~1149: There might be a mistake here.
Context: ...tion with existing Solana infrastructure - Robust security through cryptographic st...

(QB_NEW_EN)


[grammar] ~1154-~1154: There might be a mistake here.
Context: ... - Sustainable multi-tier fee structure - Revenue sharing with platform integrator...

(QB_NEW_EN)


[grammar] ~1155-~1155: There might be a mistake here.
Context: ...evenue sharing with platform integrators - Transparent, escrow-based prize distribu...

(QB_NEW_EN)


[grammar] ~1156-~1156: There might be a mistake here.
Context: ...sparent, escrow-based prize distribution - Support for diverse token economies **D...

(QB_NEW_EN)


[grammar] ~1161-~1161: There might be a mistake here.
Context: ...ience:** - Comprehensive TypeScript SDK - Clean, intuitive API design - Extensive ...

(QB_NEW_EN)


[grammar] ~1162-~1162: There might be a mistake here.
Context: ...Script SDK - Clean, intuitive API design - Extensive documentation and examples - M...

(QB_NEW_EN)


[grammar] ~1163-~1163: There might be a mistake here.
Context: ...n - Extensive documentation and examples - Multiple integration patterns **User Be...

(QB_NEW_EN)


[grammar] ~1168-~1168: There might be a mistake here.
Context: ...Benefits:** - Instant gameplay feedback - Minimal transaction costs - Provably fai...

(QB_NEW_EN)


[grammar] ~1169-~1169: There might be a mistake here.
Context: ...lay feedback - Minimal transaction costs - Provably fair game mechanics - Seamless ...

(QB_NEW_EN)


[grammar] ~1170-~1170: There might be a mistake here.
Context: ...ion costs - Provably fair game mechanics - Seamless wallet integration The platfor...

(QB_NEW_EN)


[grammar] ~1177-~1177: There might be a mistake here.
Context: ...has arrived. This chess platform stands as testament to what becomes possible when...

(QB_NEW_EN)


[style] ~1177-~1177: This sentence construction might be considered wordy, consider shortening it.
Context: ...ology meets timeless gameplay, creating experiences that are simultaneously familiar and revolutionary. --- _For technical...

(A_VERY_ORDERED_SENTENCE)

🪛 markdownlint-cli2 (0.17.2)
WHITEPAPER.md

50-50: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

Comment on lines 208 to 213
pub castling_rights: CastlingRights,
pub en_passant_square: Option<u8>,
pub king_white_square: u8,
pub king_black_square: u8,
pub last_move: Option<LastMove>,
```
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

State/time tracking mismatch: last_move_at used but not defined.

Add last_move_at to state (Option A) to match the later snippet.

 pub last_move: Option<LastMove>,
+pub last_move_at: Option<i64>, // unix ts

Also applies to: 611-616

🤖 Prompt for AI Agents
In apps/docs/content/docs/whitepaper/index.mdx around lines 208-213, the state
struct is missing the last_move_at field referenced later; add a last_move_at
field (e.g. last_move_at: Option<...>) to the state with the same timestamp type
used elsewhere in the document, then update the other matching location (lines
~611-616) to include the same field so the snippets stay consistent.

Comment on lines 441 to 449
// Piece encoding: 0xTC where T = type, C = color
// Color: 1 = White, 2 = Black
// Type: 1 = Pawn, 2 = Knight, 3 = Bishop, 4 = Rook, 5 = Queen, 6 = King

// Examples:
// 0x11 = White Pawn
// 0x26 = Black King
// 0x00 = Empty Square
```
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Fix piece-encoding docs: 0xTC vs 0xCT inconsistency.

Examples and board init imply color is high nibble. Make it explicit and consistent.

-// Piece encoding: 0xTC where T = type, C = color
+// Piece encoding: 0xCT where C = color (high nibble), T = type (low nibble)
 // Color: 1 = White, 2 = Black
 // Type: 1 = Pawn, 2 = Knight, 3 = Bishop, 4 = Rook, 5 = Queen, 6 = King

-// 0x11 = White Pawn
-// 0x26 = Black King
+// 0x11 = White Pawn  (C=1, T=1)
+// 0x26 = Black King  (C=2, T=6)
+// Helpers:
+//   color(piece) = piece >> 4
+//   typ(piece)   = piece & 0x0F
-    board[0] = 0x14; // White Rook on a1
-    board[1] = 0x12; // White Knight on b1
+    board[0] = 0x14; // White Rook on a1 (C=1,T=4)
+    board[1] = 0x12; // White Knight on b1 (C=1,T=2)
-    board[56] = 0x24; // Black Rook on a8
+    board[56] = 0x24; // Black Rook on a8 (C=2,T=4)

Also applies to: 458-465

🤖 Prompt for AI Agents
In apps/docs/content/docs/whitepaper/index.mdx around lines 441 to 449 (and
similarly 458 to 465), the piece-encoding comments are inconsistent about nibble
order: the text uses 0xTC while examples/board init use color as the high
nibble. Change the wording to state explicitly that encoding is 0xCT (C = color
in high nibble, T = type in low nibble), update the comment line ("Piece
encoding: 0xCT where C = color, T = type"), adjust the Color/Type labels to
match that order, and rewrite the examples to use 0xCT (e.g., 0x11 = White Pawn
if white=1 in high nibble, 0x62 = Black King if black=6, 0x00 = Empty) so the
docs and board init are consistent.

Comment on lines 516 to 526
utils::is_valid_chess_move(
&game_account.board_state,
from_square,
to_square,
piece_type,
&game_account.castling_rights,
game_account.en_passant_square,
promotion_piece.clone()
)?,
ChessError::InvalidMove
);
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Undefined vars in move handler (piece_type, player_color).

Derive them from piece_at_from (or current turn) before validations.

     // 3. Piece validation
     let piece_at_from = game_account.get_piece_at(from_square);
+    let piece_type = PieceType::from_byte(piece_at_from);
+    let player_color = PlayerColor::from_byte(piece_at_from);
     require!(piece_at_from != 0, ChessError::NoPieceAtSquare);

Also applies to: 529-538

Comment on lines 668 to 675
// Dual RPC configuration for standard Solana and Ephemeral Rollups
const rpc = createSolanaRpc("https://api.devnet.solana.com");
const erRpc = createSolanaRpc("https://devnet.magicblock.app");

// Initialize SDK
const chessMateSDK = new ChessGameSDK();
```

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Verification agent

🧩 Analysis chain

Use cluster-appropriate token mints; avoid hard-coding mainnet USDC on devnet.

Parametrize the mint via env and document values per cluster.

-const rpc = createSolanaRpc("https://api.devnet.solana.com");
+const rpc = createSolanaRpc(process.env.SOLANA_RPC_URL!);
-const erRpc = createSolanaRpc("https://devnet.magicblock.app");
+const erRpc = createSolanaRpc(process.env.EPHEMERAL_ROLLUP_RPC_URL!);
-  tokenMint: address("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"), // USDC
+  tokenMint: address(process.env.USDC_MINT!), // devnet: 4zMMC9..., mainnet: EPjF...
-  tokenMint: address("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),
+  tokenMint: address(process.env.USDC_MINT!),
-  tokenMint: address("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),
+  tokenMint: address(process.env.USDC_MINT!),

Would you like me to add a small cluster→mint table to this page?

Also applies to: 723-737, 781-787


🏁 Script executed:

#!/bin/bash
# Search for hard-coded RPC URLs and USDC mints in the whitepaper MDX
file="apps/docs/content/docs/whitepaper/index.mdx"
grep -n "createSolanaRpc" "$file"
grep -n "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v" "$file"
grep -n "tokenMint" "$file"

Length of output: 928


Parametrize RPC URLs and token mints
Replace hard-coded URLs at lines 669–670 with process.env.SOLANA_RPC_URL and process.env.EPHEMERAL_ROLLUP_RPC_URL, and swap out the mainnet USDC mint at lines 727, 746 and 785 for process.env.USDC_MINT. Add a small table mapping each cluster (devnet, mainnet) to its corresponding USDC mint address.

🤖 Prompt for AI Agents
In apps/docs/content/docs/whitepaper/index.mdx around lines 668–675 and the USDC
mint usages at lines 727, 746 and 785, replace the hard-coded RPC URLs
(currently https://api.devnet.solana.com and https://devnet.magicblock.app) with
process.env.SOLANA_RPC_URL and process.env.EPHEMERAL_ROLLUP_RPC_URL
respectively, and replace the hard-coded mainnet USDC mint addresses at lines
727, 746 and 785 with process.env.USDC_MINT; also add a small table in the doc
mapping each cluster (devnet, mainnet) to its corresponding USDC mint address
(use the env var names as placeholders) so readers know which mint applies to
each cluster. Ensure references in code blocks and prose are updated to use the
env var names consistently.

Comment on lines 714 to 716

const { instruction, integratorConfigPDA } =
await chessMateSDK.initializeIntegratorIx(params);
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Fix transaction sending examples: import sender and pass Instructions (not wrapper objects).

Explicitly import a send helper and extract the instruction field(s).

-const { instruction } = await chessMateSDK.makeMoveIx(moveParams);
-const signature = await sendTransaction(erRpc, [instruction], signer);
+import { sendAndConfirm } from "@solana/kit"; // adjust to your real helper
+const { instruction } = await chessMateSDK.makeMoveIx(moveParams);
+const signature = await sendAndConfirm(erRpc, [instruction], signer);
-const instructions = [
-  await chessMateSDK.makeMoveIx(moveParams1),
-  await chessMateSDK.makeMoveIx(moveParams2),
-];
-const signature = await sendTransaction(erRpc, instructions, signer);
+const ix1 = (await chessMateSDK.makeMoveIx(moveParams1)).instruction;
+const ix2 = (await chessMateSDK.makeMoveIx(moveParams2)).instruction;
+const signature = await sendAndConfirm(erRpc, [ix1, ix2], signer);

Also applies to: 896-898

🤖 Prompt for AI Agents
In apps/docs/content/docs/whitepaper/index.mdx around lines 714-716 (and
similarly lines 896-898), the example uses the returned wrapper object directly
when sending a transaction; instead import and use the appropriate send helper
(e.g., sendTransaction/sendInstruction helper) and pass the actual
Instruction(s) extracted from the wrapper (e.g., instruction or instructions
field) instead of the wrapper object; update the import statements to include
the send helper, destructure the instruction(s) from the initializeIntegratorIx
result, and call the send helper with those Instruction objects and the required
signers/context.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 6

♻️ Duplicate comments (10)
WHITEPAPER.md (10)

405-413: Fix encoding scheme inconsistency (0xTC vs 0xCT).

-// Piece encoding: 0xTC where T = type, C = color
+// Piece encoding: 0xCT where C = color (high nibble), T = type (low nibble)
+// Helpers: color(piece) = piece >> 4; typ(piece) = piece & 0x0F

417-431: Align board init comments with corrected 0xCT encoding.

-    board[0] = 0x14; // White Rook on a1
-    board[1] = 0x12; // White Knight on b1
+    board[0] = 0x14; // White Rook on a1 (C=1,T=4)
+    board[1] = 0x12; // White Knight on b1 (C=1,T=2)
@@
-    board[56] = 0x24; // Black Rook on a8
+    board[56] = 0x24; // Black Rook on a8 (C=2,T=4)

476-504: Undefined piece_type and player_color in handler snippet.

     // 3. Piece validation
-    let piece_at_from = game_account.get_piece_at(from_square);
+    let piece_at_from = game_account.get_piece_at(from_square);
+    let piece_type = PieceType::from_byte(piece_at_from);
+    let player_color = PlayerColor::from_byte(piece_at_from);
     require!(piece_at_from != 0, ChessError::NoPieceAtSquare);

201-206: Model/time tracking mismatch (last_move vs last_move_at).

Option A (add field):

 pub last_move: Option<LastMove>,
+pub last_move_at: Option<i64>, // unix ts

Or update time snippet to read last_move.timestamp.


565-585: Update time-control snippet per chosen timestamp source.

-let time_taken = if let Some(last_move_time) = game_account.last_move_at {
-    (clock.unix_timestamp - last_move_time) as u32
+let time_taken = if let Some(last_move) = &game_account.last_move {
+    (clock.unix_timestamp - last_move.timestamp) as u32

673-690: Devnet RPC with mainnet USDC mint; parametrize by cluster.

-  tokenMint: address("EPjFW...Dt1v"), // USDC
+  tokenMint: address(process.env.USDC_MINT!), // per cluster (devnet/mainnet)

692-700: Repeat of hardcoded USDC mint in join example.

-  tokenMint: address("EPjFW...Dt1v")
+  tokenMint: address(process.env.USDC_MINT!)

729-738: Repeat of hardcoded USDC mint in claim example.

-  tokenMint: address("EPjFW...Dt1v")
+  tokenMint: address(process.env.USDC_MINT!)

714-716: sendTransaction not imported; pass Instructions only.

-const { instruction } = await chessMateSDK.makeMoveIx(moveParams);
-const signature = await sendTransaction(erRpc, [instruction], signer);
+import { sendAndConfirm } from "@solana/kit";
+const { instruction } = await chessMateSDK.makeMoveIx(moveParams);
+const signature = await sendAndConfirm(erRpc, [instruction], signer);

896-898: Batch example passes objects, not Instructions.

-const instructions = [
-  await chessMateSDK.makeMoveIx(moveParams1),
-  await chessMateSDK.makeMoveIx(moveParams2)
-];
-const signature = await sendTransaction(erRpc, instructions, signer);
+const ix1 = (await chessMateSDK.makeMoveIx(moveParams1)).instruction;
+const ix2 = (await chessMateSDK.makeMoveIx(moveParams2)).instruction;
+const signature = await sendAndConfirm(erRpc, [ix1, ix2], signer);
🧹 Nitpick comments (6)
apps/docs/content/docs/whitepaper/whitepaper.mdx (5)

462-476: Align board init comments with corrected 0xCT encoding.

-    board[0] = 0x14; // White Rook on a1
-    board[1] = 0x12; // White Knight on b1
+    board[0] = 0x14; // White Rook on a1 (C=1,T=4)
+    board[1] = 0x12; // White Knight on b1 (C=1,T=2)
@@
-    board[56] = 0x24; // Black Rook on a8
+    board[56] = 0x24; // Black Rook on a8 (C=2,T=4)

618-638: Update time-control snippet to chosen timestamp source.

If you adopt Option A above, keep as-is; otherwise:

-let time_taken = if let Some(last_move_time) = game_account.last_move_at {
-    (clock.unix_timestamp - last_move_time) as u32
+let time_taken = if let Some(last_move) = &game_account.last_move {
+    (clock.unix_timestamp - last_move.timestamp) as u32

755-756: Same hardcoded USDC mint in join example.

-  tokenMint: address("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),
+  tokenMint: address(process.env.USDC_MINT!),

793-794: Same hardcoded USDC mint in claim example.

-  tokenMint: address("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),
+  tokenMint: address(process.env.USDC_MINT!),

382-396: Bold performance claims; add benchmark/citation footnotes.

Provide links or footnotes for latency/cost figures to increase credibility.

WHITEPAPER.md (1)

991-999: Performance and cost claims need references.

Add footnotes/links to benchmarks or clearly label as targets.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 05f0d69 and 4871493.

📒 Files selected for processing (3)
  • WHITEPAPER.md (1 hunks)
  • apps/docs/content/docs/whitepaper/whitepaper.mdx (1 hunks)
  • apps/docs/source.config.ts (2 hunks)
✅ Files skipped from review due to trivial changes (1)
  • apps/docs/source.config.ts
🧰 Additional context used
🪛 LanguageTool
WHITEPAPER.md

[grammar] ~7-~7: There might be a mistake here.
Context: ... on-chain execution. Key Innovations: - Real-time Performance: Achieving sub-5...

(QB_NEW_EN)


[grammar] ~8-~8: There might be a mistake here.
Context: ...le maintaining full Solana compatibility - Complete On-Chain Logic: All game rule...

(QB_NEW_EN)


[grammar] ~9-~9: There might be a mistake here.
Context: ...erations executed transparently on-chain - Multi-Tenant Architecture: Scalable pl...

(QB_NEW_EN)


[grammar] ~10-~10: There might be a mistake here.
Context: ...grators with customizable fee structures - Seamless Integration: TypeScript SDK e...

(QB_NEW_EN)


[grammar] ~16-~16: There might be a mistake here.
Context: ...Fi landscape. Competitive Advantages: - No state fragmentation or bridge depende...

(QB_NEW_EN)


[grammar] ~17-~17: There might be a mistake here.
Context: ...ate fragmentation or bridge dependencies - Horizontal scaling through on-demand Eph...

(QB_NEW_EN)


[grammar] ~18-~18: There might be a mistake here.
Context: ...tal scaling through on-demand Ephemeral Rollups - Native Solana ecosystem integration - Tr...

(QB_NEW_EN)


[grammar] ~19-~19: There might be a mistake here.
Context: ...ps - Native Solana ecosystem integration - Transparent and immutable game mechanics...

(QB_NEW_EN)


[grammar] ~171-~171: There might be a mistake here.
Context: ...Chess players and third-party developers - Integration Layer: SDK, wallets, and f...

(QB_NEW_EN)


[grammar] ~172-~172: There might be a mistake here.
Context: ...*: SDK, wallets, and frontend interfaces - Platform Layer: Multiple integrator pl...

(QB_NEW_EN)


[grammar] ~173-~173: There might be a mistake here.
Context: ...tor platforms with custom configurations - Ephemeral Rollup Layer: High-speed exe...

(QB_NEW_EN)


[grammar] ~174-~174: There might be a mistake here.
Context: ... execution environments for active games - Solana L1 Layer: Permanent state stora...

(QB_NEW_EN)


[grammar] ~231-~231: There might be a mistake here.
Context: ...fecycle: Game Lifecycle Management: - create_game: Initialize new games with configurable...

(QB_NEW_EN)


[grammar] ~232-~232: There might be a mistake here.
Context: ...e new games with configurable parameters - join_game: Enable second player to join open game...

(QB_NEW_EN)


[grammar] ~233-~233: There might be a mistake here.
Context: ... configurable parameters - join_game: Enable second player to join open games - `can...

(QB_NEW_EN)


[grammar] ~233-~233: There might be a mistake here.
Context: ... Enable second player to join open games - cancel_game: Allow creators to cancel games before ...

(QB_NEW_EN)


[grammar] ~234-~234: There might be a mistake here.
Context: ...eators to cancel games before they start - forfeit_game: Enable players to concede during activ...

(QB_NEW_EN)


[grammar] ~237-~237: There might be a mistake here.
Context: ...during active games Move Execution: - make_move: Core instruction handling move validat...

(QB_NEW_EN)


[grammar] ~238-~238: There might be a mistake here.
Context: ...ndling move validation and state updates - Comprehensive chess rule validation incl...

(QB_NEW_EN)


[grammar] ~239-~239: There might be a mistake here.
Context: ...ule validation including check detection - Special move support (castling, en passa...

(QB_NEW_EN)


[grammar] ~242-~242: There might be a mistake here.
Context: ...passant, promotion) Draw Mechanics: - offer_draw: Propose draw to opponent - `accept_dra...

(QB_NEW_EN)


[grammar] ~243-~243: There might be a mistake here.
Context: ...- offer_draw: Propose draw to opponent - accept_draw: Accept pending draw offers - `reject_d...

(QB_NEW_EN)


[grammar] ~244-~244: There might be a mistake here.
Context: ...accept_draw: Accept pending draw offers - reject_draw`: Decline draw proposals **Financial Op...

(QB_NEW_EN)


[grammar] ~247-~247: There might be a mistake here.
Context: ...raw proposals Financial Operations: - claim_winnings: Distribute prize pools to winners - Au...

(QB_NEW_EN)


[grammar] ~279-~279: There might be a mistake here.
Context: ...ame_id: u64, } ``` This design enables: - White-label Integration: Third-party p...

(QB_NEW_EN)


[grammar] ~287-~287: There might be a mistake here.
Context: ...cial Architecture #### Escrow Mechanism The system implements a secure escrow me...

(QB_NEW_EN)


[grammar] ~297-~297: There might be a mistake here.
Context: ...ocked: bool, ``` Security Features: - Funds are locked in program-controlled a...

(QB_NEW_EN)


[grammar] ~303-~303: There might be a mistake here.
Context: ... in case of disputes #### Fee Structure The platform implements a dual-fee syste...

(QB_NEW_EN)


[grammar] ~304-~304: There might be a mistake here.
Context: ...e platform implements a dual-fee system: - Platform Fees: Base fees collected by ...

(QB_NEW_EN)


[grammar] ~305-~305: There might be a mistake here.
Context: ...Base fees collected by the chess program - Integrator Fees: Additional fees colle...

(QB_NEW_EN)


[grammar] ~306-~306: There might be a mistake here.
Context: ... fees collected by third-party platforms - Transparent Calculation: All fees calc...

(QB_NEW_EN)


[grammar] ~334-~334: There might be a mistake here.
Context: ...support } ``` Delegation Lifecycle: 1. Initiation: Game accounts are delegate...

(QB_NEW_EN)


[grammar] ~340-~340: There might be a mistake here.
Context: ... session ends #### Parallel Read Access During delegation, the base layer mainta...

(QB_NEW_EN)


[grammar] ~341-~341: There might be a mistake here.
Context: ... access to delegated accounts, ensuring: - Composability: Other programs can stil...

(QB_NEW_EN)


[grammar] ~348-~348: There might be a mistake here.
Context: ...on Details #### Conditional Compilation The program uses feature flags to suppor...

(QB_NEW_EN)


[grammar] ~366-~366: There might be a mistake here.
Context: ...nnotation } ``` #### Commit Annotations The #[commit] macro automatically hand...

(QB_NEW_EN)


[grammar] ~367-~367: There might be a mistake here.
Context: ...dles state commitment to the base layer: - Automatic Batching: Multiple operation...

(QB_NEW_EN)


[grammar] ~372-~372: There might be a mistake here.
Context: ...ically reverted #### Session Management Ephemeral Rollup sessions are managed th...

(QB_NEW_EN)


[grammar] ~382-~382: There might be a mistake here.
Context: ...ormance Benefits #### Latency Reduction - Base Layer: 400ms average block time o...

(QB_NEW_EN)


[grammar] ~383-~383: There might be a mistake here.
Context: ...er**: 400ms average block time on Solana - Ephemeral Rollup: 10-50ms execution ti...

(QB_NEW_EN)


[grammar] ~384-~384: There might be a mistake here.
Context: ...: 10-50ms execution time for chess moves - User Experience: Near-instantaneous mo...

(QB_NEW_EN)


[grammar] ~387-~387: There might be a mistake here.
Context: ...d board updates #### Throughput Scaling - Horizontal Scaling: Multiple rollups c...

(QB_NEW_EN)


[grammar] ~392-~392: There might be a mistake here.
Context: ...ng active sessions #### Cost Efficiency - Reduced Base Layer Load: Only final st...

(QB_NEW_EN)


[grammar] ~508-~508: There might be a mistake here.
Context: ...e Handling Castling Implementation: - Validates king and rook positions - Chec...

(QB_NEW_EN)


[grammar] ~509-~509: There might be a mistake here.
Context: ...n**: - Validates king and rook positions - Checks for intervening pieces - Ensures ...

(QB_NEW_EN)


[grammar] ~510-~510: There might be a mistake here.
Context: ...ositions - Checks for intervening pieces - Ensures neither piece has moved previous...

(QB_NEW_EN)


[grammar] ~511-~511: There might be a mistake here.
Context: ...sures neither piece has moved previously - Verifies king is not in check **En Pass...

(QB_NEW_EN)


[grammar] ~514-~514: There might be a mistake here.
Context: ...is not in check En Passant Capture: - Tracks pawn double-moves for en passant ...

(QB_NEW_EN)


[grammar] ~515-~515: There might be a mistake here.
Context: ...ouble-moves for en passant opportunities - Validates capture conditions - Removes c...

(QB_NEW_EN)


[grammar] ~516-~516: There might be a mistake here.
Context: ...rtunities - Validates capture conditions - Removes captured pawn from board **Pawn...

(QB_NEW_EN)


[grammar] ~519-~519: There might be a mistake here.
Context: ...red pawn from board Pawn Promotion: - Detects pawns reaching the opposite end ...

(QB_NEW_EN)


[grammar] ~603-~603: There might be a mistake here.
Context: ...atically detects game-ending conditions: - Checkmate Detection: Validates that th...

(QB_NEW_EN)


[grammar] ~605-~605: There might be a mistake here.
Context: ...es positions where no legal moves exist but king is not in check - **Draw Condition...

(QB_NEW_EN)


[grammar] ~632-~632: There might be a mistake here.
Context: ...Installation and Setup Prerequisites: - Node.js 18+ - TypeScript 4.9+ **Install...

(QB_NEW_EN)


[grammar] ~633-~633: There might be a mistake here.
Context: ... Setup Prerequisites: - Node.js 18+ - TypeScript 4.9+ Installation: ```ba...

(QB_NEW_EN)


[grammar] ~641-~641: There might be a mistake here.
Context: ...ogram/token ``` Wallet Integration: The SDK works with any wallet implementi...

(QB_NEW_EN)


[grammar] ~825-~825: There might be a mistake here.
Context: ..., error); } } ``` Error Categories: - InvalidMoveError: Chess rule violations - `GameNotFoundE...

(QB_NEW_EN)


[grammar] ~826-~826: There might be a mistake here.
Context: ...InvalidMoveError: Chess rule violations - GameNotFoundError: Invalid game references - Unauthorize...

(QB_NEW_EN)


[grammar] ~827-~827: There might be a mistake here.
Context: ...eNotFoundError: Invalid game references - UnauthorizedPlayerError: Permission violations - InsufficientF...

(QB_NEW_EN)


[grammar] ~828-~828: There might be a mistake here.
Context: ...rizedPlayerError: Permission violations - InsufficientFundsError: Wallet balance issues - NetworkError`...

(QB_NEW_EN)


[grammar] ~829-~829: There might be a mistake here.
Context: ...icientFundsError: Wallet balance issues - NetworkError`: RPC connectivity issues ### 6.7 Integ...

(QB_NEW_EN)


[grammar] ~834-~834: There might be a mistake here.
Context: ...Patterns Event-Driven Architecture: The SDK supports real-time game state mo...

(QB_NEW_EN)


[grammar] ~900-~900: There might be a mistake here.
Context: ...r); ``` Caching and State Management: - Local game state caching to reduce RPC c...

(QB_NEW_EN)


[grammar] ~901-~901: There might be a mistake here.
Context: ...l game state caching to reduce RPC calls - Optimistic UI updates with rollback on f...

(QB_NEW_EN)


[grammar] ~902-~902: There might be a mistake here.
Context: ...stic UI updates with rollback on failure - Efficient board state serialization - Mi...

(QB_NEW_EN)


[grammar] ~903-~903: There might be a mistake here.
Context: ...re - Efficient board state serialization - Minimal account data fetching The Check...

(QB_NEW_EN)


[grammar] ~914-~914: There might be a mistake here.
Context: ...ty with user adoption: Platform Fees: - Base platform fee: 2.5% of entry fees - ...

(QB_NEW_EN)


[grammar] ~915-~915: There might be a mistake here.
Context: ... - Base platform fee: 2.5% of entry fees - Volume-based discounts for high-activity...

(QB_NEW_EN)


[grammar] ~916-~916: There might be a mistake here.
Context: ... discounts for high-activity integrators - Dynamic fee adjustment based on network ...

(QB_NEW_EN)


[grammar] ~919-~919: There might be a mistake here.
Context: ...ongestion Integrator Revenue Sharing: - Integrators earn 1-3% commission on game...

(QB_NEW_EN)


[grammar] ~936-~936: There might be a mistake here.
Context: ...egrator_fee; ``` Winner Distribution: - Winner receives 100% of prize pool - Dra...

(QB_NEW_EN)


[grammar] ~956-~956: There might be a mistake here.
Context: ...iple security layers: Access Control: - Player-specific move validation - Time-b...

(QB_NEW_EN)


[grammar] ~957-~957: There might be a mistake here.
Context: ...rol:** - Player-specific move validation - Time-based game state transitions - Auth...

(QB_NEW_EN)


[grammar] ~958-~958: There might be a mistake here.
Context: ...tion - Time-based game state transitions - Authority-based administrative functions...

(QB_NEW_EN)


[grammar] ~961-~961: There might be a mistake here.
Context: ...trative functions Financial Security: - Escrow-based prize pool management - Ato...

(QB_NEW_EN)


[grammar] ~962-~962: There might be a mistake here.
Context: ...:** - Escrow-based prize pool management - Atomic win/loss settlements - Protection...

(QB_NEW_EN)


[grammar] ~963-~963: There might be a mistake here.
Context: ...management - Atomic win/loss settlements - Protection against reentrancy attacks *...

(QB_NEW_EN)


[grammar] ~966-~966: There might be a mistake here.
Context: ...st reentrancy attacks Game Integrity: - On-chain move validation prevents cheati...

(QB_NEW_EN)


[grammar] ~975-~975: There might be a mistake here.
Context: ...n security through: State Delegation: - Temporary delegation of account authorit...

(QB_NEW_EN)


[grammar] ~976-~976: There might be a mistake here.
Context: ...emporary delegation of account authority - Automatic reversion to main chain - Cryp...

(QB_NEW_EN)


[grammar] ~977-~977: There might be a mistake here.
Context: ...rity - Automatic reversion to main chain - Cryptographic proof of state transitions...

(QB_NEW_EN)


[grammar] ~980-~980: There might be a mistake here.
Context: ... state transitions Validator Network: - Decentralized validation of rollup state...

(QB_NEW_EN)


[grammar] ~981-~981: There might be a mistake here.
Context: ...ecentralized validation of rollup states - Economic incentives for honest behavior ...

(QB_NEW_EN)


[grammar] ~982-~982: There might be a mistake here.
Context: ... Economic incentives for honest behavior - Slashing conditions for malicious actors...

(QB_NEW_EN)


[grammar] ~991-~991: There might be a mistake here.
Context: ...ance improvements: Transaction Speed: - Move confirmation: <100ms (vs 400ms on m...

(QB_NEW_EN)


[grammar] ~992-~992: There might be a mistake here.
Context: ...nfirmation: <100ms (vs 400ms on mainnet) - Game state updates: Real-time - Batch se...

(QB_NEW_EN)


[grammar] ~993-~993: There might be a mistake here.
Context: ...mainnet) - Game state updates: Real-time - Batch settlement: Every 2-4 seconds **C...

(QB_NEW_EN)


[grammar] ~996-~996: There might be a mistake here.
Context: ...t: Every 2-4 seconds Cost Efficiency: - Per-move cost: ~$0.0001 (vs $0.01 on mai...

(QB_NEW_EN)


[grammar] ~997-~997: There might be a mistake here.
Context: ...ove cost: ~$0.0001 (vs $0.01 on mainnet) - Game creation: ~$0.001 - Settlement: Sta...

(QB_NEW_EN)


[grammar] ~998-~998: There might be a mistake here.
Context: ....01 on mainnet) - Game creation: ~$0.001 - Settlement: Standard Solana fees ### 9....

(QB_NEW_EN)


[grammar] ~1005-~1005: There might be a mistake here.
Context: ...tiple mechanisms: Horizontal Scaling: - Multiple rollup instances for different ...

(QB_NEW_EN)


[grammar] ~1006-~1006: There might be a mistake here.
Context: ...ollup instances for different game types - Geographic distribution of rollup valida...

(QB_NEW_EN)


[grammar] ~1007-~1007: There might be a mistake here.
Context: ...raphic distribution of rollup validators - Load balancing across rollup endpoints ...

(QB_NEW_EN)


[grammar] ~1010-~1010: There might be a mistake here.
Context: ...llup endpoints Vertical Optimization: - Efficient board state encoding (64 bytes...

(QB_NEW_EN)


[grammar] ~1011-~1011: There might be a mistake here.
Context: ...fficient board state encoding (64 bytes) - Compressed move representation - Optimiz...

(QB_NEW_EN)


[grammar] ~1012-~1012: There might be a mistake here.
Context: ... bytes) - Compressed move representation - Optimized instruction layouts ### 9.3 N...

(QB_NEW_EN)


[grammar] ~1027-~1027: There might be a mistake here.
Context: ... (Q3-Q4 2025) Advanced Game Features: - Tournament bracket system - Team-based c...

(QB_NEW_EN)


[grammar] ~1028-~1028: There might be a mistake here.
Context: ... Features:** - Tournament bracket system - Team-based competitions - Spectator mode...

(QB_NEW_EN)


[grammar] ~1029-~1029: There might be a mistake here.
Context: ...bracket system - Team-based competitions - Spectator mode with live commentary - Ad...

(QB_NEW_EN)


[grammar] ~1030-~1030: There might be a mistake here.
Context: ...ns - Spectator mode with live commentary - Advanced time controls (Fischer, Bronste...

(QB_NEW_EN)


[grammar] ~1033-~1033: There might be a mistake here.
Context: ...er, Bronstein) Platform Improvements: - Mobile SDK development - Enhanced analyt...

(QB_NEW_EN)


[grammar] ~1034-~1034: There might be a mistake here.
Context: ...Improvements:** - Mobile SDK development - Enhanced analytics dashboard - Automated...

(QB_NEW_EN)


[grammar] ~1035-~1035: There might be a mistake here.
Context: ...velopment - Enhanced analytics dashboard - Automated market making for entry fees -...

(QB_NEW_EN)


[grammar] ~1036-~1036: There might be a mistake here.
Context: ...- Automated market making for entry fees - Integration with chess rating systems #...

(QB_NEW_EN)


[grammar] ~1041-~1041: There might be a mistake here.
Context: ...nts (Q1-Q2 2026) Ecosystem Expansion: - Additional board games (Go, Checkers, Ba...

(QB_NEW_EN)


[grammar] ~1042-~1042: There might be a mistake here.
Context: ...l board games (Go, Checkers, Backgammon) - Cross-game tournaments and leagues - NFT...

(QB_NEW_EN)


[grammar] ~1043-~1043: There might be a mistake here.
Context: ...on) - Cross-game tournaments and leagues - NFT integration for unique pieces and bo...

(QB_NEW_EN)


[grammar] ~1044-~1044: There might be a mistake here.
Context: ...integration for unique pieces and boards - Streaming and content creator tools **T...

(QB_NEW_EN)


[grammar] ~1047-~1047: There might be a mistake here.
Context: ...creator tools Technical Advancements: - Zero-knowledge proof integration for pri...

(QB_NEW_EN)


[grammar] ~1048-~1048: There might be a mistake here.
Context: ...edge proof integration for private games - Advanced AI opponent integration - Cross...

(QB_NEW_EN)


[grammar] ~1049-~1049: There might be a mistake here.
Context: ...games - Advanced AI opponent integration - Cross-chain bridge development - Enhance...

(QB_NEW_EN)


[grammar] ~1050-~1050: There might be a mistake here.
Context: ...gration - Cross-chain bridge development - Enhanced MEV protection ### 10.3 Long-t...

(QB_NEW_EN)


[grammar] ~1055-~1055: There might be a mistake here.
Context: ...26+) Governance and Decentralization: - DAO governance implementation - Communit...

(QB_NEW_EN)


[grammar] ~1056-~1056: There might be a mistake here.
Context: ...ation:** - DAO governance implementation - Community-driven feature development - D...

(QB_NEW_EN)


[grammar] ~1057-~1057: There might be a mistake here.
Context: ...n - Community-driven feature development - Decentralized tournament organization - ...

(QB_NEW_EN)


[grammar] ~1058-~1058: There might be a mistake here.
Context: ... - Decentralized tournament organization - Player-owned platform evolution ## 11. ...

(QB_NEW_EN)


[grammar] ~1065-~1065: There might be a mistake here.
Context: ... that delivers: Technical Excellence: - Sub-100ms move confirmations - 99%+ cost...

(QB_NEW_EN)


[grammar] ~1066-~1066: There might be a mistake here.
Context: ...llence:** - Sub-100ms move confirmations - 99%+ cost reduction compared to mainnet ...

(QB_NEW_EN)


[grammar] ~1067-~1067: There might be a mistake here.
Context: ... reduction compared to mainnet execution - Seamless integration with existing Solan...

(QB_NEW_EN)


[grammar] ~1068-~1068: There might be a mistake here.
Context: ...tion with existing Solana infrastructure - Robust security through cryptographic st...

(QB_NEW_EN)


[grammar] ~1071-~1071: There might be a mistake here.
Context: ...state delegation Economic Innovation: - Sustainable multi-tier fee structure - R...

(QB_NEW_EN)


[grammar] ~1072-~1072: There might be a mistake here.
Context: ...* - Sustainable multi-tier fee structure - Revenue sharing with platform integrator...

(QB_NEW_EN)


[grammar] ~1073-~1073: There might be a mistake here.
Context: ...evenue sharing with platform integrators - Transparent, escrow-based prize distribu...

(QB_NEW_EN)


[grammar] ~1074-~1074: There might be a mistake here.
Context: ...sparent, escrow-based prize distribution - Support for diverse token economies **D...

(QB_NEW_EN)


[grammar] ~1077-~1077: There might be a mistake here.
Context: ...token economies Developer Experience: - Comprehensive TypeScript SDK - Clean, in...

(QB_NEW_EN)


[grammar] ~1078-~1078: There might be a mistake here.
Context: ...rience:** - Comprehensive TypeScript SDK - Clean, intuitive API design - Extensive ...

(QB_NEW_EN)


[grammar] ~1079-~1079: There might be a mistake here.
Context: ...Script SDK - Clean, intuitive API design - Extensive documentation and examples - M...

(QB_NEW_EN)


[grammar] ~1080-~1080: There might be a mistake here.
Context: ...n - Extensive documentation and examples - Multiple integration patterns **User Be...

(QB_NEW_EN)


[grammar] ~1083-~1083: There might be a mistake here.
Context: ...e integration patterns User Benefits: - Instant gameplay feedback - Minimal tran...

(QB_NEW_EN)


[grammar] ~1084-~1084: There might be a mistake here.
Context: ... Benefits:** - Instant gameplay feedback - Minimal transaction costs - Provably fai...

(QB_NEW_EN)


[grammar] ~1085-~1085: There might be a mistake here.
Context: ...lay feedback - Minimal transaction costs - Provably fair game mechanics - Seamless ...

(QB_NEW_EN)


[grammar] ~1086-~1086: There might be a mistake here.
Context: ...ion costs - Provably fair game mechanics - Seamless wallet integration The platfor...

(QB_NEW_EN)


[grammar] ~1093-~1093: There might be a mistake here.
Context: ...has arrived. This chess platform stands as testament to what becomes possible when...

(QB_NEW_EN)


[style] ~1093-~1093: This sentence construction might be considered wordy, consider shortening it.
Context: ...ology meets timeless gameplay, creating experiences that are simultaneously familiar and revolutionary. --- *For technical...

(A_VERY_ORDERED_SENTENCE)

apps/docs/content/docs/whitepaper/whitepaper.mdx

[grammar] ~14-~14: There might be a mistake here.
Context: ...le maintaining full Solana compatibility - Complete On-Chain Logic: All game rule...

(QB_NEW_EN)


[grammar] ~15-~15: There might be a mistake here.
Context: ...erations executed transparently on-chain - Multi-Tenant Architecture: Scalable pl...

(QB_NEW_EN)


[grammar] ~16-~16: There might be a mistake here.
Context: ...grators with customizable fee structures - Seamless Integration: TypeScript SDK e...

(QB_NEW_EN)


[grammar] ~24-~24: There might be a mistake here.
Context: ...ate fragmentation or bridge dependencies - Horizontal scaling through on-demand Eph...

(QB_NEW_EN)


[grammar] ~25-~25: There might be a mistake here.
Context: ...tal scaling through on-demand Ephemeral Rollups - Native Solana ecosystem integration - Tr...

(QB_NEW_EN)


[grammar] ~26-~26: There might be a mistake here.
Context: ...ps - Native Solana ecosystem integration - Transparent and immutable game mechanics...

(QB_NEW_EN)


[grammar] ~57-~57: There might be a mistake here.
Context: ...1 System Architecture Overview <Mermaid chart=" graph TD graph TB subgra...

(QB_NEW_EN)


[grammar] ~58-~58: There might be a mistake here.
Context: ...rchitecture Overview <Mermaid chart=" graph TD graph TB subgraph [User...

(QB_NEW_EN)


[grammar] ~59-~59: There might be a mistake here.
Context: ...re Overview <Mermaid chart=" graph TD graph TB subgraph [User Layer] ...

(QB_NEW_EN)


[grammar] ~181-~181: There might be a mistake here.
Context: ...Chess players and third-party developers - Integration Layer: SDK, wallets, and f...

(QB_NEW_EN)


[grammar] ~182-~182: There might be a mistake here.
Context: ...*: SDK, wallets, and frontend interfaces - Platform Layer: Multiple integrator pl...

(QB_NEW_EN)


[grammar] ~183-~183: There might be a mistake here.
Context: ...tor platforms with custom configurations - Ephemeral Rollup Layer: High-speed exe...

(QB_NEW_EN)


[grammar] ~184-~184: There might be a mistake here.
Context: ... execution environments for active games - Solana L1 Layer: Permanent state stora...

(QB_NEW_EN)


[grammar] ~254-~254: There might be a mistake here.
Context: ... configurable parameters - join_game: Enable second player to join open games - `can...

(QB_NEW_EN)


[grammar] ~260-~260: There might be a mistake here.
Context: ...ndling move validation and state updates - Comprehensive chess rule validation incl...

(QB_NEW_EN)


[grammar] ~261-~261: There might be a mistake here.
Context: ...ule validation including check detection - Special move support (castling, en passa...

(QB_NEW_EN)


[grammar] ~266-~266: There might be a mistake here.
Context: ...) Draw Mechanics: - offer_draw: Propose draw to opponent - accept_draw: Accep...

(QB_NEW_EN)


[grammar] ~266-~266: There might be a mistake here.
Context: ...hanics**: - offer_draw: Propose draw to opponent - accept_draw: Accept pendin...

(QB_NEW_EN)


[grammar] ~329-~329: There might be a mistake here.
Context: ...against double-spending and manipulation - Support for partial refunds in case of d...

(QB_NEW_EN)


[grammar] ~336-~336: There might be a mistake here.
Context: ...Base fees collected by the chess program - Integrator Fees: Additional fees colle...

(QB_NEW_EN)


[grammar] ~337-~337: There might be a mistake here.
Context: ... fees collected by third-party platforms - Transparent Calculation: All fees calc...

(QB_NEW_EN)


[grammar] ~424-~424: There might be a mistake here.
Context: ...er**: 400ms average block time on Solana - Ephemeral Rollup: 10-50ms execution ti...

(QB_NEW_EN)


[grammar] ~425-~425: There might be a mistake here.
Context: ...: 10-50ms execution time for chess moves - User Experience: Near-instantaneous mo...

(QB_NEW_EN)


[grammar] ~557-~557: There might be a mistake here.
Context: ...**: - Validates king and rook positions - Checks for intervening pieces - Ensures ...

(QB_NEW_EN)


[grammar] ~558-~558: There might be a mistake here.
Context: ...ositions - Checks for intervening pieces - Ensures neither piece has moved previous...

(QB_NEW_EN)


[grammar] ~559-~559: There might be a mistake here.
Context: ...sures neither piece has moved previously - Verifies king is not in check **En Pass...

(QB_NEW_EN)


[grammar] ~564-~564: There might be a mistake here.
Context: ...ouble-moves for en passant opportunities - Validates capture conditions - Removes c...

(QB_NEW_EN)


[grammar] ~565-~565: There might be a mistake here.
Context: ...rtunities - Validates capture conditions - Removes captured pawn from board **Pawn...

(QB_NEW_EN)


[grammar] ~570-~570: There might be a mistake here.
Context: ... Detects pawns reaching the opposite end - Validates promotion piece selection - Up...

(QB_NEW_EN)


[grammar] ~571-~571: There might be a mistake here.
Context: ...nd - Validates promotion piece selection - Updates board state with promoted piece ...

(QB_NEW_EN)


[grammar] ~660-~660: There might be a mistake here.
Context: ...es positions where no legal moves exist but king is not in check - **Draw Condition...

(QB_NEW_EN)


[grammar] ~688-~688: There might be a mistake here.
Context: ...Setup Prerequisites: - Node.js 18+ - TypeScript 4.9+ Installation: ```b...

(QB_NEW_EN)


[grammar] ~697-~697: There might be a mistake here.
Context: ...ogram/token ``` Wallet Integration: The SDK works with any wallet implementi...

(QB_NEW_EN)


[grammar] ~894-~894: There might be a mistake here.
Context: ...InvalidMoveError: Chess rule violations - GameNotFoundError: Invalid game references - Unauthorize...

(QB_NEW_EN)


[grammar] ~895-~895: There might be a mistake here.
Context: ...eNotFoundError: Invalid game references - UnauthorizedPlayerError: Permission violations - InsufficientF...

(QB_NEW_EN)


[grammar] ~896-~896: There might be a mistake here.
Context: ...rizedPlayerError: Permission violations - InsufficientFundsError: Wallet balance issues - NetworkError`...

(QB_NEW_EN)


[grammar] ~897-~897: There might be a mistake here.
Context: ...icientFundsError: Wallet balance issues - NetworkError`: RPC connectivity issues ### 6.7 Integ...

(QB_NEW_EN)


[grammar] ~902-~902: There might be a mistake here.
Context: ...Patterns Event-Driven Architecture: The SDK supports real-time game state mo...

(QB_NEW_EN)


[grammar] ~972-~972: There might be a mistake here.
Context: ...l game state caching to reduce RPC calls - Optimistic UI updates with rollback on f...

(QB_NEW_EN)


[grammar] ~973-~973: There might be a mistake here.
Context: ...stic UI updates with rollback on failure - Efficient board state serialization - Mi...

(QB_NEW_EN)


[grammar] ~974-~974: There might be a mistake here.
Context: ...re - Efficient board state serialization - Minimal account data fetching The Check...

(QB_NEW_EN)


[grammar] ~987-~987: There might be a mistake here.
Context: ... - Base platform fee: 2.5% of entry fees - Volume-based discounts for high-activity...

(QB_NEW_EN)


[grammar] ~988-~988: There might be a mistake here.
Context: ... discounts for high-activity integrators - Dynamic fee adjustment based on network ...

(QB_NEW_EN)


[grammar] ~1011-~1011: There might be a mistake here.
Context: ...Distribution:** - Winner receives 100% of prize pool - Draw results in 50/50 spli...

(QB_NEW_EN)


[grammar] ~1032-~1032: There might be a mistake here.
Context: ...ol:** - Player-specific move validation - Time-based game state transitions - Auth...

(QB_NEW_EN)


[grammar] ~1033-~1033: There might be a mistake here.
Context: ...tion - Time-based game state transitions - Authority-based administrative functions...

(QB_NEW_EN)


[grammar] ~1038-~1038: There might be a mistake here.
Context: ...** - Escrow-based prize pool management - Atomic win/loss settlements - Protection...

(QB_NEW_EN)


[grammar] ~1039-~1039: There might be a mistake here.
Context: ...management - Atomic win/loss settlements - Protection against reentrancy attacks *...

(QB_NEW_EN)


[grammar] ~1054-~1054: There might be a mistake here.
Context: ...emporary delegation of account authority - Automatic reversion to main chain - Cryp...

(QB_NEW_EN)


[grammar] ~1055-~1055: There might be a mistake here.
Context: ...rity - Automatic reversion to main chain - Cryptographic proof of state transitions...

(QB_NEW_EN)


[grammar] ~1060-~1060: There might be a mistake here.
Context: ...ecentralized validation of rollup states - Economic incentives for honest behavior ...

(QB_NEW_EN)


[grammar] ~1061-~1061: There might be a mistake here.
Context: ... Economic incentives for honest behavior - Slashing conditions for malicious actors...

(QB_NEW_EN)


[grammar] ~1072-~1072: There might be a mistake here.
Context: ...mation: {'<'}100ms (vs 400ms on mainnet) - Game state updates: Real-time - Batch se...

(QB_NEW_EN)


[grammar] ~1073-~1073: There might be a mistake here.
Context: ...mainnet) - Game state updates: Real-time - Batch settlement: Every 2-4 seconds **C...

(QB_NEW_EN)


[grammar] ~1078-~1078: There might be a mistake here.
Context: ...ove cost: ~$0.0001 (vs $0.01 on mainnet) - Game creation: ~$0.001 - Settlement: Sta...

(QB_NEW_EN)


[grammar] ~1079-~1079: There might be a mistake here.
Context: ....01 on mainnet) - Game creation: ~$0.001 - Settlement: Standard Solana fees ### 9....

(QB_NEW_EN)


[grammar] ~1088-~1088: There might be a mistake here.
Context: ...ollup instances for different game types - Geographic distribution of rollup valida...

(QB_NEW_EN)


[grammar] ~1089-~1089: There might be a mistake here.
Context: ...raphic distribution of rollup validators - Load balancing across rollup endpoints ...

(QB_NEW_EN)


[grammar] ~1094-~1094: There might be a mistake here.
Context: ...fficient board state encoding (64 bytes) - Compressed move representation - Optimiz...

(QB_NEW_EN)


[grammar] ~1095-~1095: There might be a mistake here.
Context: ... bytes) - Compressed move representation - Optimized instruction layouts ### 9.3 N...

(QB_NEW_EN)


[grammar] ~1112-~1112: There might be a mistake here.
Context: ...Features:** - Tournament bracket system - Team-based competitions - Spectator mode...

(QB_NEW_EN)


[grammar] ~1113-~1113: There might be a mistake here.
Context: ...bracket system - Team-based competitions - Spectator mode with live commentary - Ad...

(QB_NEW_EN)


[grammar] ~1114-~1114: There might be a mistake here.
Context: ...ns - Spectator mode with live commentary - Advanced time controls (Fischer, Bronste...

(QB_NEW_EN)


[grammar] ~1119-~1119: There might be a mistake here.
Context: ...mprovements:** - Mobile SDK development - Enhanced analytics dashboard - Automated...

(QB_NEW_EN)


[grammar] ~1120-~1120: There might be a mistake here.
Context: ...velopment - Enhanced analytics dashboard - Automated market making for entry fees -...

(QB_NEW_EN)


[grammar] ~1121-~1121: There might be a mistake here.
Context: ...- Automated market making for entry fees - Integration with chess rating systems #...

(QB_NEW_EN)


[grammar] ~1128-~1128: There might be a mistake here.
Context: ...l board games (Go, Checkers, Backgammon) - Cross-game tournaments and leagues - NFT...

(QB_NEW_EN)


[grammar] ~1129-~1129: There might be a mistake here.
Context: ...on) - Cross-game tournaments and leagues - NFT integration for unique pieces and bo...

(QB_NEW_EN)


[grammar] ~1130-~1130: There might be a mistake here.
Context: ...integration for unique pieces and boards - Streaming and content creator tools **T...

(QB_NEW_EN)


[grammar] ~1135-~1135: There might be a mistake here.
Context: ...edge proof integration for private games - Advanced AI opponent integration - Cross...

(QB_NEW_EN)


[grammar] ~1136-~1136: There might be a mistake here.
Context: ...games - Advanced AI opponent integration - Cross-chain bridge development - Enhance...

(QB_NEW_EN)


[grammar] ~1137-~1137: There might be a mistake here.
Context: ...gration - Cross-chain bridge development - Enhanced MEV protection ### 10.3 Long-t...

(QB_NEW_EN)


[grammar] ~1144-~1144: There might be a mistake here.
Context: ...tion:** - DAO governance implementation - Community-driven feature development - D...

(QB_NEW_EN)


[grammar] ~1145-~1145: There might be a mistake here.
Context: ...n - Community-driven feature development - Decentralized tournament organization - ...

(QB_NEW_EN)


[grammar] ~1146-~1146: There might be a mistake here.
Context: ... - Decentralized tournament organization - Player-owned platform evolution ## 11. ...

(QB_NEW_EN)


[grammar] ~1155-~1155: There might be a mistake here.
Context: ...lence:** - Sub-100ms move confirmations - 99%+ cost reduction compared to mainnet ...

(QB_NEW_EN)


[grammar] ~1156-~1156: There might be a mistake here.
Context: ... reduction compared to mainnet execution - Seamless integration with existing Solan...

(QB_NEW_EN)


[grammar] ~1157-~1157: There might be a mistake here.
Context: ...tion with existing Solana infrastructure - Robust security through cryptographic st...

(QB_NEW_EN)


[grammar] ~1162-~1162: There might be a mistake here.
Context: ... - Sustainable multi-tier fee structure - Revenue sharing with platform integrator...

(QB_NEW_EN)


[grammar] ~1163-~1163: There might be a mistake here.
Context: ...evenue sharing with platform integrators - Transparent, escrow-based prize distribu...

(QB_NEW_EN)


[grammar] ~1164-~1164: There might be a mistake here.
Context: ...sparent, escrow-based prize distribution - Support for diverse token economies **D...

(QB_NEW_EN)


[grammar] ~1169-~1169: There might be a mistake here.
Context: ...ience:** - Comprehensive TypeScript SDK - Clean, intuitive API design - Extensive ...

(QB_NEW_EN)


[grammar] ~1170-~1170: There might be a mistake here.
Context: ...Script SDK - Clean, intuitive API design - Extensive documentation and examples - M...

(QB_NEW_EN)


[grammar] ~1171-~1171: There might be a mistake here.
Context: ...n - Extensive documentation and examples - Multiple integration patterns **User Be...

(QB_NEW_EN)


[grammar] ~1176-~1176: There might be a mistake here.
Context: ...Benefits:** - Instant gameplay feedback - Minimal transaction costs - Provably fai...

(QB_NEW_EN)


[grammar] ~1177-~1177: There might be a mistake here.
Context: ...lay feedback - Minimal transaction costs - Provably fair game mechanics - Seamless ...

(QB_NEW_EN)


[grammar] ~1178-~1178: There might be a mistake here.
Context: ...ion costs - Provably fair game mechanics - Seamless wallet integration The platfor...

(QB_NEW_EN)


[grammar] ~1185-~1185: There might be a mistake here.
Context: ...has arrived. This chess platform stands as testament to what becomes possible when...

(QB_NEW_EN)


[style] ~1185-~1185: This sentence construction might be considered wordy, consider shortening it.
Context: ...ology meets timeless gameplay, creating experiences that are simultaneously familiar and revolutionary. --- _For technical...

(A_VERY_ORDERED_SENTENCE)

🪛 markdownlint-cli2 (0.17.2)
WHITEPAPER.md

50-50: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🔇 Additional comments (4)
apps/docs/content/docs/whitepaper/whitepaper.mdx (3)

693-695: Package name likely incorrect (@solana-program/token).

Common package is @solana/spl-token. Verify and update to prevent copy/paste errors.

-npm install @checkmate/sdk @solana/kit @solana-program/token
+npm install @checkmate/sdk @solana/kit @solana/spl-token

890-898: Batch example passes objects, not Instructions.

-const instructions = [
-  await chessMateSDK.makeMoveIx(moveParams1),
-  await chessMateSDK.makeMoveIx(moveParams2)
-];
-const signature = await sendTransaction(erRpc, instructions, signer);
+const ix1 = (await chessMateSDK.makeMoveIx(moveParams1)).instruction;
+const ix2 = (await chessMateSDK.makeMoveIx(moveParams2)).instruction;
+const signature = await sendAndConfirm(erRpc, [ix1, ix2], signer);

Likely an incorrect or invalid review comment.


57-177: Enable Mermaid plugin or switch to fenced code block
The <Mermaid> component will render as plain text unless you’ve enabled a Mermaid MDX plugin (e.g. mdx-mermaid or remark-mermaidjs) in your docs config—double-check your next.config.js/gatsby-config.js under apps/docs. If you’d rather not enable the plugin, convert this to a fenced ````mermaid``` block and remove the redundant graph TD before `graph TB`. For example:

-<Mermaid chart={`
-graph TD
-   graph TB
+```mermaid
+graph TB
     subgraph [User Layer]
       U1[Chess Player 1]
       U2[Chess Player 2]
@@
     class RPC,ERRPC externalLayer
-`}/>
+```
WHITEPAPER.md (1)

637-639: Verify SPL Token package name.

-npm install @checkmate/sdk @solana/kit @solana-program/token
+npm install @checkmate/sdk @solana/kit @solana/spl-token

Comment on lines +216 to +221
pub castling_rights: CastlingRights,
pub en_passant_square: Option<u8>,
pub king_white_square: u8,
pub king_black_square: u8,
pub last_move: Option<LastMove>,
```
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Model/time tracking mismatch (last_move vs last_move_at).

Either add last_move_at to state or read timestamp from last_move. Pick one and keep consistent throughout.

Option A:

 pub last_move: Option<LastMove>,
+pub last_move_at: Option<i64>, // unix ts

Or update the time snippet to use last_move.timestamp.

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
pub castling_rights: CastlingRights,
pub en_passant_square: Option<u8>,
pub king_white_square: u8,
pub king_black_square: u8,
pub last_move: Option<LastMove>,
```
pub castling_rights: CastlingRights,
pub en_passant_square: Option<u8>,
pub king_white_square: u8,
pub king_black_square: u8,
pub last_move: Option<LastMove>,
pub last_move_at: Option<i64>, // unix ts
🤖 Prompt for AI Agents
In apps/docs/content/docs/whitepaper/whitepaper.mdx around lines 216 to 221
there is a mismatch between the state fields and the time usage: the struct
defines last_move: Option<LastMove> but documentation/snippet expects
last_move_at; fix by choosing one approach and making it consistent across the
doc — either add a pub last_move_at: Option<DateTime/ timestamp type> to the
state and populate it when moves occur, or update the time-related
example/snippet to read the timestamp from last_move (e.g., last_move.timestamp)
wherever last_move_at is referenced; ensure all examples and schema descriptions
are updated to reflect the chosen field.

Comment on lines +448 to +456
```rust
// Piece encoding: 0xTC where T = type, C = color
// Color: 1 = White, 2 = Black
// Type: 1 = Pawn, 2 = Knight, 3 = Bishop, 4 = Rook, 5 = Queen, 6 = King

// Examples:
// 0x11 = White Pawn
// 0x26 = Black King
// 0x00 = Empty Square
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Piece encoding spec contradicts examples (0xTC vs examples implying 0xCT).

Examples and initialization imply color is the high nibble. Correct the comment to 0xCT and clarify helper bit ops.

-// Piece encoding: 0xTC where T = type, C = color
+// Piece encoding: 0xCT where C = color (high nibble), T = type (low nibble)
+// Helpers: color(piece) = piece >> 4; typ(piece) = piece & 0x0F
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
```rust
// Piece encoding: 0xTC where T = type, C = color
// Color: 1 = White, 2 = Black
// Type: 1 = Pawn, 2 = Knight, 3 = Bishop, 4 = Rook, 5 = Queen, 6 = King
// Examples:
// 0x11 = White Pawn
// 0x26 = Black King
// 0x00 = Empty Square
🤖 Prompt for AI Agents
In apps/docs/content/docs/whitepaper/whitepaper.mdx around lines 448 to 456, the
piece-encoding comment incorrectly states 0xTC while examples treat the high
nibble as color; update the spec to 0xCT (C = color in high nibble, T = type in
low nibble), flip the descriptive mapping accordingly (Color: 1 = White, 2 =
Black; Type: 1 = Pawn ... 6 = King), update the examples to match (e.g., 0x11 =
White Pawn stays if interpreted as 0xCT or adjust examples so 0x12/0x21
consistent), and add a brief note on helper bit ops showing how to extract color
and type (color = (val >> 4) & 0xF, type = val & 0xF) so readers clearly see
high-nibble color, low-nibble type.

Comment on lines +518 to +546
// 3. Piece validation
let piece_at_from = game_account.get_piece_at(from_square);
require!(piece_at_from != 0, ChessError::NoPieceAtSquare);

// 4. Chess rule validation
require!(
utils::is_valid_chess_move(
&game_account.board_state,
from_square,
to_square,
piece_type,
&game_account.castling_rights,
game_account.en_passant_square,
promotion_piece.clone()
)?,
ChessError::InvalidMove
);

// 5. Check validation
require!(
!utils::move_leaves_king_in_check(
&game_account.board_state,
from_square,
to_square,
&player_color,
&game_account.castling_rights
)?,
ChessError::MoveExposesKing
);
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Undefined piece_type and player_color in handler snippet.

Derive both from piece_at_from (or current turn) before use to avoid non-compilable example code.

     // 3. Piece validation
-    let piece_at_from = game_account.get_piece_at(from_square);
+    let piece_at_from = game_account.get_piece_at(from_square);
+    let piece_type = PieceType::from_byte(piece_at_from);
+    let player_color = PlayerColor::from_byte(piece_at_from);
     require!(piece_at_from != 0, ChessError::NoPieceAtSquare);
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
// 3. Piece validation
let piece_at_from = game_account.get_piece_at(from_square);
require!(piece_at_from != 0, ChessError::NoPieceAtSquare);
// 4. Chess rule validation
require!(
utils::is_valid_chess_move(
&game_account.board_state,
from_square,
to_square,
piece_type,
&game_account.castling_rights,
game_account.en_passant_square,
promotion_piece.clone()
)?,
ChessError::InvalidMove
);
// 5. Check validation
require!(
!utils::move_leaves_king_in_check(
&game_account.board_state,
from_square,
to_square,
&player_color,
&game_account.castling_rights
)?,
ChessError::MoveExposesKing
);
// 3. Piece validation
let piece_at_from = game_account.get_piece_at(from_square);
let piece_type = PieceType::from_byte(piece_at_from);
let player_color = PlayerColor::from_byte(piece_at_from);
require!(piece_at_from != 0, ChessError::NoPieceAtSquare);
🤖 Prompt for AI Agents
In apps/docs/content/docs/whitepaper/whitepaper.mdx around lines 518 to 546, the
snippet uses undefined identifiers piece_type and player_color; derive them from
piece_at_from (and/or the game's current turn) before use: extract the piece
type from piece_at_from (e.g., by masking/decoding the stored piece value) into
piece_type and derive player_color from either piece_at_from (owner bit) or
game_account.current_turn, then replace the undefined variables with these
derived values so the example compiles and correctly validates moves.

Comment on lines +714 to +716
```typescript
// Initialize integrator (one-time setup)
const params = {
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

sendTransaction not imported; ensure correct helper and pass Instructions.

-const { instruction } = await chessMateSDK.makeMoveIx(moveParams);
-const signature = await sendTransaction(erRpc, [instruction], signer);
+import { sendAndConfirm } from "@solana/kit";
+const { instruction } = await chessMateSDK.makeMoveIx(moveParams);
+const signature = await sendAndConfirm(erRpc, [instruction], signer);
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
```typescript
// Initialize integrator (one-time setup)
const params = {
🤖 Prompt for AI Agents
In apps/docs/content/docs/whitepaper/whitepaper.mdx around lines 714 to 716, the
code references sendTransaction but it is not imported and the call must receive
the Instructions parameter; add the proper import for sendTransaction from the
helper module used in this project at the top of the file (e.g., import {
sendTransaction } from '.../helpers' or the correct path), and update the
initializer call to pass the Instructions object/variable into sendTransaction
so the transaction helper receives the required instructions.

Comment on lines +735 to +737
tokenMint: address("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"), // USDC
entryFee: BigInt(1_000_000), // 1 USDC
timeControl: {
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Verification agent

❓ Verification inconclusive

Devnet RPC with mainnet USDC mint; parametrize by cluster.

-  tokenMint: address("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"), // USDC
+  tokenMint: address(process.env.USDC_MINT!), // set per cluster (devnet/mainnet)

Add a small table mapping cluster→mint and sample .env.


Parametrize USDC mint by cluster in code samples
apps/docs/content/docs/whitepaper/whitepaper.mdx:735-737 – replace the hard-coded mainnet USDC mint ("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v") with address(process.env.USDC_MINT!), and add a table mapping each cluster to its USDC mint address plus a sample .env.

🤖 Prompt for AI Agents
In apps/docs/content/docs/whitepaper/whitepaper.mdx around lines 735 to 737, the
USDC mint is hard-coded to the mainnet address; replace the literal string with
address(process.env.USDC_MINT!) so the example is cluster-agnostic, and update
nearby documentation to include a small table mapping cluster names (mainnet,
devnet, testnet, local) to their respective USDC mint addresses plus a sample
.env snippet showing USDC_MINT=<mint-address> for each cluster; ensure the text
calls out that the env var must be set before running the sample.

Comment on lines +50 to +167
```
graph TB
subgraph "User Layer"
U1[Chess Player 1]
U2[Chess Player 2]
DEV[Third-party Developers]
end

subgraph "Integration Layer"
SDK[CheckMate TypeScript SDK]
WALLET[Solana Wallets]
UI[Chess UI/Frontend]
end

subgraph "Platform Layer"
INT1[Integrator Platform 1]
INT2[Integrator Platform 2]
INTN[Integrator Platform N]
end

subgraph "Ephemeral Rollup Layer"
ER1[Ephemeral Rollup 1]
ER2[Ephemeral Rollup 2]
ERN[Ephemeral Rollup N]
PROV[MagicBlock Provisioner]
end

subgraph "Solana L1 Blockchain"
subgraph "Chess Program (Anchor)"
GAME[Game Accounts]
PLAT[Platform Config]
INTEG[Integrator Configs]
ESC[Escrow Accounts]
end

subgraph "Token Program"
VAULT[Token Vaults]
MINT[Token Mints]
end

subgraph "System Programs"
SYS[System Program]
RENT[Rent Program]
end
end

subgraph "External Services"
RPC[Solana RPC]
ERRPC[Ephemeral Rollup RPC]
end

%% User interactions
U1 --> UI
U2 --> UI
DEV --> SDK

%% Integration layer connections
UI --> SDK
SDK --> WALLET
SDK --> RPC
SDK --> ERRPC

%% Platform integrations
SDK --> INT1
SDK --> INT2
SDK --> INTN

%% Ephemeral Rollup delegation
PROV --> ER1
PROV --> ER2
PROV --> ERN

%% State delegation flow
GAME -.->|"Delegate State"| ER1
GAME -.->|"Delegate State"| ER2
GAME -.->|"Delegate State"| ERN

%% Commitment flow
ER1 -.->|"Commit State"| GAME
ER2 -.->|"Commit State"| GAME
ERN -.->|"Commit State"| GAME

%% RPC connections
RPC --> GAME
RPC --> PLAT
RPC --> INTEG
RPC --> ESC
RPC --> VAULT

ERRPC --> ER1
ERRPC --> ER2
ERRPC --> ERN

%% Financial flows
ESC --> VAULT
VAULT --> MINT

%% Program interactions
GAME --> ESC
GAME --> SYS
GAME --> RENT
PLAT --> INTEG

%% Styling
classDef userLayer fill:#e1f5fe
classDef integrationLayer fill:#f3e5f5
classDef platformLayer fill:#e8f5e8
classDef rollupLayer fill:#fff3e0
classDef solanaLayer fill:#fce4ec
classDef externalLayer fill:#f5f5f5

class U1,U2,DEV userLayer
class SDK,WALLET,UI integrationLayer
class INT1,INT2,INTN platformLayer
class ER1,ER2,ERN,PROV rollupLayer
class GAME,PLAT,INTEG,ESC,VAULT,MINT,SYS,RENT solanaLayer
class RPC,ERRPC externalLayer
```
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Mark the diagram code fence as mermaid.

Without a language, many renderers won’t parse it as a diagram.

-```
+```mermaid
 graph TB
@@
-```
+```
🧰 Tools
🪛 markdownlint-cli2 (0.17.2)

50-50: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🤖 Prompt for AI Agents
In WHITEPAPER.md around lines 50 to 167, the fenced diagram block is missing a
language tag so renderers won't treat it as a Mermaid diagram; replace the
opening code fence from ``` to ```mermaid (leave the closing ``` unchanged) so
the block is explicitly marked as a mermaid diagram and will be parsed/rendered
correctly.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants