Search projects, hackathons, sponsors and tech

    ← All projects

    ChronosProtocol

    Messenging app for peer-to-peer contract sharing

    About

    The problem it solves Chronos Protocol solves the trust problem in peer-to-peer agreements by combining secure wallet-to-wallet messaging with immutable smart contracts. Users can create binding agreements directly from chat conversations, with automatic execution when conditions are met. It eliminates: i. Middlemen and fees in contract creation ii. The need to trust counterparties iii. Technical barriers to blockchain use iv. Security concerns with sensitive agreements The platform allows anyone to create self-executing agreements with deadlines and value transfers using just their crypto wallet, bringing legally-binding smart contracts to everyday users without coding knowledge.

    How it's made

    Challenges we ran into Building Chronos Protocol presented several significant technical challenges: **Smart Contract Event Handling** The most complex issue was with our server-side contract event handling. We encountered a syntax error in our async arrow function for finding AgreementCreated events that broke the entire API. The function was missing proper curly braces, causing cascading failures across the application. We solved this by implementing a more robust event detection pattern with proper error handling and fallback mechanisms. **MetaMask Chain ID Formatting** Another critical bug occurred when users tried connecting to Base Sepolia. MetaMask rejected our chain ID with `Unrecognized chain ID "0x14a34"` errors. We discovered MetaMask expects zero-padded hexadecimal values. We implemented a `formatChainIdHex` utility that properly formats chain IDs (converting 84532 to "0x014a34" instead of "0x14a34"). **XMTP Integration Challenges** Integrating wallet-to-wallet messaging required careful state management to avoid component re-rendering issues. We implemented custom hooks with useReducer for more predictable state transitions when handling message delivery confirmations. The most valuable lesson was implementing comprehensive error boundaries and fallback mechanisms throughout the application, ensuring our dApp remains functional even when individual services fail.