Search projects, hackathons, sponsors and tech

    ← All projects

    Walrus

    Walrus: AI-Powered Onchain Actions, Simplified

    About

    The problem it solves The Problem Walrus Solves: Interacting with blockchain technology and managing onchain assets today presents a significant barrier for many users. The process often involves navigating complex interfaces, understanding technical jargon like gas fees and transaction signing, and directly handling cryptographic keys. This complexity can be intimidating for newcomers and cumbersome even for experienced Web3 users, hindering broader adoption and seamless user experiences. Performing even simple actions like checking a balance or transferring tokens can feel like a chore, far removed from the intuitive digital interactions users expect. Walrus tackles this problem head-on by abstracting away the complexities of onchain interactions through a natural, AI-powered conversational interface. Instead of grappling with intricate UIs and technical steps, users can simply "talk" to Walrus in plain language to: Manage their smart wallet on Base. Check balances across different tokens. Initiate token transfers. Query onchain data. And potentially much more as new tools are added. Walrus, powered by Coinbase's AgentKit, acts as an intelligent intermediary, translating user intent into the necessary onchain actions. This dramatically lowers the entry barrier for individuals new to Web3 and provides a more efficient, user-friendly experience for seasoned crypto users. Essentially, Walrus makes interacting with the blockchain as easy as chatting with a knowledgeable assistant, making Web3 more accessible, intuitive, and human-centric.

    How it's made

    Challenges we ran into Challenges I Ran Into: Working on Windows, trying to deploy on Vercel. Developing Walrus involved navigating several technical hurdles, primarily centered around modern web development complexities and the intricacies of integrating a seamless streaming experience: Frontend Dependency Hell & Build Tooling: Challenge: Setting up the Next.js frontend with React, Wagmi, and RainbowKit was initially plagued by a cascade of npm peer dependency conflicts. Aligning versions for React (especially with libraries having different compatibility ranges like use-sync-external-store), Wagmi, and RainbowKit required careful trial and error and version pinning in package.json. Resolution: We systematically updated package.json, ran npm install multiple times, and specifically pinned versions like react@18.2.0, wagmi@^0.6.x, and next@13.4.4 to achieve a stable dependency tree. We also encountered issues where the next CLI wasn't recognized, and Next.js's SWC binary (@next/swc-win32-x64-msvc) failed to download, necessitating explicit versioning for the SWC package as well. Implementing Real-Time Streaming (Backend & Frontend): Challenge: The initial backend chat endpoint was a simple blocking request-response. To provide a true real-time conversational feel, we needed to implement streaming. On the frontend, the initial attempt using EventSource with a GET request was incompatible with our need to send a POST request containing the user's prompt to the streaming endpoint. Resolution: Backend: We refactored the FastAPI backend to include a /chat/stream endpoint that utilizes StreamingResponse to send Server-Sent Events (SSE) as the agent generates them. Frontend: We transitioned the frontend from EventSource to using the fetch API with a POST request. The response body (ReadableStream) is then processed chunk by chunk to update the UI in real-time, providing a much smoother and more interactive user experience. Port Conflicts & Environment Setup: Challenge: During development, we frequently encountered EADDRINUSE (address already in use) errors as other local development services were occupying default ports (like 3000 or 8000). Additionally, configuring the Python environment for the backend with Poetry sometimes failed if the correct Python interpreter wasn't found. Resolution: We explicitly configured the Walrus frontend to run on port 3001 and the backend on port 8001. Backend CORS settings were updated accordingly. For Python environment issues, we ensured Poetry was configured with the correct Python path or used direct py -m uvicorn commands. UI/UX for Asynchronous Operations: Challenge: Simply displaying agent messages wasn't enough. The UI needed to provide feedback during potentially long-running onchain operations or while waiting for the agent's streamed response. Resolution: We enhanced the frontend to include visual loading indicators while the agent is processing and clear error message displays if API calls fail or issues arise, making the application more user-friendly and transparent about its state. Overcoming these challenges involved iterative development, careful dependency management, and a focus on creating a robust and responsive user experience, ultimately leading to the polished Walrus application ready for the hackathon.