diff --git a/docs.json b/docs.json index 5267890..7e80937 100644 --- a/docs.json +++ b/docs.json @@ -408,11 +408,16 @@ { "group": "Hackathon 2026", "pages": [ - "hackathon/hackathon-landing", - "hackathon/builder-guide", - "hackathon/submission-requirements", { - "group": "VM Tutorials", + "group": "Get Started", + "pages": [ + "hackathon/get-started", + "hackathon/builder-guide", + "hackathon/submission-requirements" + ] + }, + { + "group": "Blueprints", "pages": [ "hackathon/examples/move-game", "hackathon/examples/evm-bank", @@ -420,8 +425,8 @@ ] }, { - "group": "Reference Project", - "pages": ["hackathon/example-project"] + "group": "Reference Implementation", + "pages": ["hackathon/lotteria"] } ] } diff --git a/hackathon/builder-guide.mdx b/hackathon/builder-guide.mdx index ccce06f..78e70e1 100644 --- a/hackathon/builder-guide.mdx +++ b/hackathon/builder-guide.mdx @@ -1,40 +1,30 @@ --- -title: 'Hackathon Builder Guide' +title: 'Builder Guide' icon: map --- -# Transitioning to Your Own Idea +Use this page after [Set Up Your Appchain](/hackathon/get-started). Pick a +direction, prompt your AI agent, deploy, and verify real onchain +behavior. -The Builder Guide is designed for developers who have already completed the -initial environment setup. If you haven't yet launched your first appchain, -please start with the [Step-by-Step Guide](/hackathon/hackathon-landing). - -### Before You Continue - -Quick check before you start building: +Before you start, confirm: - **Tools ready**: `weave`, `initiad`, and `minitiad` are installed and in your - PATH ([Step 5](/hackathon/hackathon-landing#step-5-ai-powered-initia-tool-setup-and-verification)). + PATH ([Step 6](/hackathon/get-started#step-6-ai-powered-initia-tool-setup-and-verification)). - **Infrastructure live**: your rollup and OPinit/Relayer bots are running - ([Step 7](/hackathon/hackathon-landing#step-7-setup-interwoven-bots-terminal)). + ([Step 8](/hackathon/get-started#step-8-setup-interwoven-bots)). - **Gas Station keys imported**: your mnemonic is available in local keyrings - ([Step 8](/hackathon/hackathon-landing#step-8-final-key-setup-terminal)). - - -# Quick Reference: The Essentials + ([Step 9](/hackathon/get-started#step-9-final-key-setup)). -Use these common commands and AI prompts to manage your project during the -hackathon. +## Recommended Order -| Task | Command / AI Prompt | -| :------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| **Resume Appchain** | `weave rollup start -d && weave opinit start executor -d` (Restarts chain and executor. Ensure Docker Desktop is open. If relayer is not running, run `weave relayer start -d`.) | -| **Health Check** | _Using the `initia-appchain-dev` skill, please verify that my appchain, executor bot, and relayer are running and that my Gas Station account has a balance._ | +1. Complete [Set Up Your Appchain](/hackathon/get-started). +2. Choose between building your app from scratch or using a Blueprint for reference. +3. Implement your app with your AI agent. +4. Deploy and verify real onchain interactions. +5. Complete [Submission Requirements](/hackathon/submission-requirements). - -# Part 1: Development Workflow - -Master the Describe -> Build -> Test cycle. This is how you win the hackathon. +# Part 1: Core Workflow ### Funding Your Personal Wallet @@ -46,126 +36,106 @@ Station. 2. Ask your AI agent to fund your wallet: -**Prompt:** - -```terminal wrap +```terminal title="Prompt: Fund your personal wallet" wrap Using the `initia-appchain-dev` skill, please fund my personal wallet with 1 INIT on L1 and 100 of my appchain's native tokens on L2. ``` -### The Core Loop +### Describe -> Build -> Test -1. **Describe the Goal**: Tell the AI _what_ you want to achieve and _why_. -2. **Build & Test (Unit)**: Let the AI write the code AND the unit tests. +1. **Describe the Goal**: Tell the AI what you want to achieve and why. +2. **Build & Test**: Let the AI write the code and unit tests. - **Prompt:** - - ```terminal wrap + ```terminal title="Prompt: Create and test the contract" wrap Using the `initia-appchain-dev` skill, please create a new contract project in a directory named , implement the core logic for , and create/run unit tests that verify both success and failure paths. ``` 3. **Deploy**: Instruct the AI to deploy your contract/module to your appchain. - **Prompt:** - - ```terminal wrap + ```terminal title="Prompt: Deploy to your appchain" wrap Using the `initia-appchain-dev` skill, please build and deploy my contract/module from the directory to my appchain using my Gas Station account. If this VM requires instantiate after deploy, run that too, then return the deployed address. ``` 4. **On-Chain Verification**: Ask the AI to verify your live deployment with interactions and state queries. - **Prompt:** - - ```terminal wrap + ```terminal title="Prompt: Smoke test live deployment" wrap Using the `initia-appchain-dev` skill, I want to smoke test my live on my appchain. Please execute 2-3 realistic user actions, then query state after each step and confirm the observed results match expected behavior. ``` - **Submission Receipt:** To qualify for the hackathon prizes, you must provide - the Contract Address of your primary logic and a Transaction Hash of a user - interacting with it. Save these as soon as you have a working version! + **Save these early:** As you build, save your deployed contract address and a + real L2 interaction transaction hash. You will need this information when + completing `.initia/submission.json`. # Part 2: Choose Your Blueprint -To qualify for the hackathon prizes, your project must implement at least one -Initia Native Feature (defined as Pillar 3 in the submission -requirements). These Blueprints provide the foundation for meeting that -requirement. +To qualify for the hackathon prizes, your project must implement at least one +supported Native Feature. These Blueprints provide implementation patterns you +can adapt, or use as references while building your own concept. - **The Custom Implementation:** To win, don't just deploy these examples as-is. - Judges look for your `Custom Implementation`: the unique code and functionality you - added on top of these base patterns to solve a specific problem. + **Originality matters:** Whether you build from scratch or adapt an example, + judges will look for clear custom logic, UX, and product differentiation. - **Pillar 3: Invisible UX.** A high-frequency application where the - blockchain handles logic silently in the background. Users never see a - wallet popup after the initial session start. + A high-frequency application where the blockchain handles logic silently in + the background. Users approve a session once, then continue interacting + without repeated wallet popups. - **Native Feature:** [`Auto-signing`](/interwovenkit/features/autosign/introduction) - **Best for:** Gaming, Social tipping, High-frequency trading. - **Pillar 3: Liquidity & Connectivity.** An application that allows users - to move assets between the broader Initia L1 and your appchain without - leaving your interface. + An application that allows users to move assets between the broader Initia + L1 and your appchain without leaving your interface. - **Native Feature:** [`Interwoven Bridging`](/interwovenkit/features/transfers/deposit-withdraw) - **Best for:** DeFi Lending, Cross-chain storefronts, Multi-chain games. - **Pillar 3: Human Identity.** An application that prioritizes - human-readable identities, replacing complex hex addresses with personal - usernames. + An application that prioritizes human-readable identities, replacing + complex hex addresses with personal usernames. - **Native Feature:** [`Initia Usernames`](/developers/developer-guides/integrating-initia-apps/usernames) - **Best for:** Consumer Social, Peer-to-peer payments, DAO governance. -# Part 3: Making It Demo-Ready +# Part 3: Prepare Your Submission Use this checklist to mirror the official -[Submission & Eligibility Criteria](/hackathon/submission-requirements). +[Submission Requirements](/hackathon/submission-requirements). - **Rollup Chain ID**: Include your appchain Chain ID. -- **Submission JSON**: Create `.initia/submission.json` and complete all required fields exactly as defined in [Submission & Eligibility Criteria](/hackathon/submission-requirements). -- **Supporting Evidence**: Ensure your JSON includes valid paths to your core logic file and power-up frontend file, plus a real L2 interaction transaction. +- **Submission JSON**: Create `.initia/submission.json` and complete all required fields exactly as defined in [Submission Requirements](/hackathon/submission-requirements). +- **Supporting Evidence**: Ensure your JSON includes valid paths to your core logic file and native feature frontend file, plus a real L2 interaction transaction. - **Demo Video URL**: Include a 1-3 minute walkthrough video (Loom/YouTube, publicly accessible via URL). - **README Summary**: Add a short project overview and implementation details section for judges. # Part 4: Debugging & Troubleshooting -Speed is everything in a hackathon, and debugging is where most time is lost. -Use these professional workflows to unblock yourself, even when following the -standard examples. - ### Debugging Workflow -Whether you are building from scratch or running a blueprint example, errors are +Whether you are building from scratch or adapting an example, errors are inevitable. 1. **Open the Browser Console**: Press `F12` or `Cmd+Option+J` to see the exact error logs. -2. **Context is King**: Ensure your AI agent (Cursor, Gemini) is open in - your project root. This allows it to reference your `package.json`, your - `interwovenkit` initialization, and your specific chain configuration. +2. **Provide Project Context**: Ensure your AI agent is open in your project root. + This allows it to reference your `package.json`, your `interwovenkit` + initialization, and your specific chain configuration. 3. Ask your AI agent to fix the issue directly, then paste the exact console error below the question. - **Prompt:** - - ```terminal wrap + ```terminal title="Prompt: Fix the error in my codebase" wrap Please find and fix this error directly in my codebase, then tell me what changed. [PASTE_CONSOLE_ERROR] ``` -### Deep Dives & Official References - -If your AI agent is stuck or you need to see the source of truth: +### Official References - **Official Docs**: Visit [docs.initia.xyz](https://docs.initia.xyz/) for architectural details and API references. @@ -177,5 +147,5 @@ If your AI agent is stuck or you need to see the source of truth: > **Mandatory:** Review the -> [Submission & Eligibility Criteria](/hackathon/submission-requirements) +> [Submission Requirements](/hackathon/submission-requirements) > to ensure you are eligible for prizes. diff --git a/hackathon/examples/evm-bank.mdx b/hackathon/examples/evm-bank.mdx index d6fa482..ab30cc0 100644 --- a/hackathon/examples/evm-bank.mdx +++ b/hackathon/examples/evm-bank.mdx @@ -1,5 +1,5 @@ --- -title: 'EVM Tutorial: MiniBank - Liquidity & Connectivity' +title: 'MiniBank - EVM' icon: bridge --- @@ -28,16 +28,14 @@ my-initia-project/ **Prerequisite:** Ensure you have an EVM-compatible appchain running locally. If you haven't launched one yet, complete the - [Step-by-Step Guide](../hackathon-landing) first. + [Set Up Your Appchain](../get-started) first. ### Readiness Check Before you start, verify that your local infrastructure is healthy. -**Prompt:** - -```terminal wrap +```terminal title="Prompt: Check local infrastructure health" wrap Using the `initia-appchain-dev` skill, please verify that my appchain, executor bot, and relayer are running and that my Gas Station account has a balance. ``` @@ -47,9 +45,7 @@ Instruct your AI agent to create the Solidity contract using the `initia-appchain-dev` skill. Your AI agent will generate the contract and automatically run unit tests to ensure the logic is sound. -**Example Prompt:** - -```terminal wrap +```terminal title="Prompt: Create and test the MiniBank contract" wrap Using the `initia-appchain-dev` skill, please create a Solidity smart contract project for our MiniBank in a new directory named `minibank`. The contract should: - Allow users to deposit native tokens. - Allow users to withdraw their own deposited tokens. @@ -175,9 +171,7 @@ forge test Now that the logic is verified, build and publish the contract to your live appchain using the Gas Station account. -**Prompt:** - -```terminal wrap +```terminal title="Prompt: Deploy the MiniBank contract" wrap Using the `initia-appchain-dev` skill, please build, publish, and instantiate the MiniBank Solidity contract located in the `minibank` directory to my appchain using my Gas Station account, then return the deployed contract address. ``` @@ -229,9 +223,7 @@ Before moving to frontend integration, smoke test the deployed contract directly on chain from the CLI. This isolates contract-level issues before UI work. -**Example Prompt:** - -```terminal wrap +```terminal title="Prompt: Smoke test the MiniBank contract" wrap Using the `initia-appchain-dev` skill, I want to smoke test our live MiniBank contract. Using my Gas Station account on my appchain, please: 1. Deposit 1 token. 2. Check my balance. @@ -293,13 +285,13 @@ Let's create a simple UI to interact with our bank. **1. Scaffold the Frontend:** -```terminal wrap +```terminal title="Prompt: Scaffold the MiniBank frontend" wrap Using the `initia-appchain-dev` skill, please scaffold a new Vite + React application named `minibank-frontend` in my current directory using the `scaffold-frontend` script. Create a component named Bank.jsx with Deposit and Withdraw buttons and an input field for the amount. ``` **2. Connect to Appchain:** -```terminal wrap +```terminal title="Prompt: Connect the frontend to the MiniBank contract" wrap Using the `initia-appchain-dev` skill, modify the Bank.jsx component in the `minibank-frontend` directory to connect to our MiniBank contract on my appchain. Use the `@initia/interwovenkit-react` package for wallet connection and transaction signing. ``` @@ -857,7 +849,7 @@ Using the `initia-appchain-dev` skill, please fund my wallet address - **Pro Tip:** This allows users to access L1 liquidity and bridge assets into your - appchain while keeping the landing page focused. - If you want a complete end-state after the manual steps above, use the @@ -1295,7 +1281,7 @@ This reference assumes: - the Vite dev server is restarted after any `.env` change. -### Power-Up Verification +### Native Feature Verification 1. Connect your wallet in `minibank-frontend`. 2. Click `Bridge Funds`. diff --git a/hackathon/examples/move-game.mdx b/hackathon/examples/move-game.mdx index 6342bdf..45d674f 100644 --- a/hackathon/examples/move-game.mdx +++ b/hackathon/examples/move-game.mdx @@ -1,5 +1,5 @@ --- -title: 'Move Tutorial: BlockForge Game - Invisible UX' +title: 'BlockForge Game - Move' icon: wand-magic-sparkles --- @@ -29,16 +29,14 @@ my-initia-project/ **Prerequisite:** Ensure you have a Move-compatible appchain running locally. If you haven't launched one yet, complete the - [Step-by-Step Guide](../hackathon-landing) first. + [Set Up Your Appchain](../get-started) first. ### Readiness Check Before you start, verify that your local infrastructure is healthy. -**Prompt:** - -```terminal wrap +```terminal title="Prompt: Check local infrastructure health" wrap Using the `initia-appchain-dev` skill, please verify that my appchain, executor bot, and relayer are running and that my Gas Station account has a balance. ``` @@ -48,9 +46,7 @@ Instead of writing the code yourself, instruct your AI agent to do it for you using the `initia-appchain-dev` skill. Your AI agent will generate the contract and automatically run unit tests to ensure the logic is sound. -**Example Prompt:** - -```terminal wrap +```terminal title="Prompt: Create and test the BlockForge module" wrap Using the `initia-appchain-dev` skill, please create a Move module project for our BlockForge game in a new directory named `blockforge`. Name the module `items` in the `blockforge` package. The game has the following rules: - Players can mint basic items called shards. - Players can craft relics by burning 2 shards. @@ -215,9 +211,7 @@ If the build succeeds and the tests pass, BlockForge is ready to deploy. Now that the logic is verified, build and publish the contract to your live appchain using the Gas Station account. -**Prompt:** - -```terminal wrap +```terminal title="Prompt: Deploy the BlockForge module" wrap Using the `initia-appchain-dev` skill, please build and publish the blockforge Move module located in the `blockforge` directory to my appchain using my Gas Station account, then return the deployed module address. ``` @@ -273,9 +267,7 @@ minitiad move deploy --build \ Before frontend work, smoke test the deployed module directly on chain. This keeps contract/module debugging separate from UI integration. -**Example Prompt:** - -```terminal wrap +```terminal title="Prompt: Smoke test the BlockForge module" wrap Using the `initia-appchain-dev` skill, I want to smoke test our live BlockForge game. Using my Gas Station account on my appchain, please: 1. Mint 3 shards. 2. Check my inventory. @@ -324,14 +316,14 @@ skill. **1. Scaffold the Frontend:** -```terminal wrap +```terminal title="Prompt: Scaffold the BlockForge frontend" wrap Using the `initia-appchain-dev` skill, please scaffold a new Vite + React application named `blockforge-frontend` in my current directory using the `scaffold-frontend` script. Then, create a component named Game.jsx with Mint Shard and Craft Relic buttons and add it to the main App.jsx file. ``` **2. Connect to Appchain:** -```terminal wrap -Using the `initia-appchain-dev` skill, modify the Game.jsx component in the `blockforge-frontend` directory to connect to our blockforge contract on my appchain. Use the `@initia/interwovenkit-react` package for wallet connection and transaction signing. +```terminal title="Prompt: Connect the frontend to the BlockForge module" wrap +Using the `initia-appchain-dev` skill, modify the Game.jsx component in the `blockforge-frontend` directory to connect to our BlockForge module on my appchain. Use the `@initia/interwovenkit-react` package for wallet connection and transaction signing. The Mint Shard button should call the mint_shard function, and the Craft Relic button should call the craft_relic function. Also, please display the player's current inventory of shards and relics. ``` @@ -629,7 +621,7 @@ Using the `initia-appchain-dev` skill, please fund my wallet address -### Power-Up Verification +### Native Feature Verification 1. Connect your wallet in `blockforge-frontend`. 2. Enable Auto-sign and approve the one-time Auto-sign setup. diff --git a/hackathon/examples/wasm-social.mdx b/hackathon/examples/wasm-social.mdx index 8431248..4d66f5a 100644 --- a/hackathon/examples/wasm-social.mdx +++ b/hackathon/examples/wasm-social.mdx @@ -1,5 +1,5 @@ --- -title: 'Wasm Tutorial: MemoBoard - Human Identity' +title: 'MemoBoard - Wasm' icon: user-group --- @@ -28,16 +28,14 @@ my-initia-project/ **Prerequisite:** Ensure you have a Wasm-compatible appchain running locally. If you haven't launched one yet, complete the - [Step-by-Step Guide](../hackathon-landing) first. + [Set Up Your Appchain](../get-started) first. ### Readiness Check Before you start, verify that your local infrastructure is healthy. -**Prompt:** - -```terminal wrap +```terminal title="Prompt: Check local infrastructure health" wrap Using the `initia-appchain-dev` skill, please verify that my appchain, executor bot, and relayer are running and that my Gas Station account has a balance. ``` @@ -47,9 +45,7 @@ Instruct your AI agent to create the Rust (Wasm) contract using the `initia-appchain-dev` skill. Your AI agent will generate the contract and automatically run unit tests to ensure the logic is sound. -**Example Prompt:** - -```terminal wrap +```terminal title="Prompt: Create and test the MemoBoard contract" wrap Using the `initia-appchain-dev` skill, please create a Rust smart contract project for our MemoBoard in a new directory named `memoboard`. The contract should: - Allow users to post a message (string). - Store a list of all messages with the sender's address. @@ -204,9 +200,7 @@ mod tests { Now that the logic is verified, build and publish the contract to your appchain using the Gas Station account. -**Prompt:** - -```terminal wrap +```terminal title="Prompt: Deploy the MemoBoard contract" wrap Using the `initia-appchain-dev` skill, please build, publish, and instantiate the MemoBoard Rust contract located in the `memoboard` directory to my appchain using my Gas Station account, then return the deployed contract address. ``` @@ -280,9 +274,7 @@ minitiad q tx --output json | jq -r '.events[] | select(.type=="i Before frontend integration, smoke test your deployed contract directly on chain. -**Example Prompt:** - -```terminal wrap +```terminal title="Prompt: Smoke test the MemoBoard contract" wrap Using the `initia-appchain-dev` skill, I want to smoke test our live MemoBoard contract. Using my Gas Station account on my appchain, please: 1. Post a message: "Hello from Initia!" 2. Query the board to see all messages. @@ -314,13 +306,13 @@ Let's create a UI to display and post messages. **1. Scaffold the Frontend:** -```terminal wrap +```terminal title="Prompt: Scaffold the MemoBoard frontend" wrap Using the `initia-appchain-dev` skill, please scaffold a new Vite + React application named `memoboard-frontend` in my current directory using the `scaffold-frontend` script. Create a component named Board.jsx that displays a list of messages and a text input to post a new one. ``` **2. Connect to Appchain:** -```terminal wrap +```terminal title="Prompt: Connect the frontend to the MemoBoard contract" wrap Using the `initia-appchain-dev` skill, modify the Board.jsx component in the `memoboard-frontend` directory to connect to our MemoBoard contract on my appchain. Use the `@initia/interwovenkit-react` package for wallet connection and transaction signing. ``` @@ -778,7 +770,7 @@ Using the `initia-appchain-dev` skill, please fund my wallet address -### Power-Up Verification +### Native Feature Verification 1. Connect your wallet in `memoboard-frontend`. 2. Confirm the header button shows your `.init` username (not only a truncated address). diff --git a/hackathon/hackathon-landing.mdx b/hackathon/get-started.mdx similarity index 87% rename from hackathon/hackathon-landing.mdx rename to hackathon/get-started.mdx index 79bbe76..bb106b8 100644 --- a/hackathon/hackathon-landing.mdx +++ b/hackathon/get-started.mdx @@ -1,5 +1,5 @@ --- -title: 'Your First Appchain: A Step-by-Step Guide' +title: 'Set Up Your Appchain' icon: play --- @@ -24,7 +24,7 @@ cd my-initia-project ``` -## Step 2: Install Your AI Skill [Terminal] +## Step 2: Install Your AI Skill Your AI agent needs the `Initia Appchain Dev` skill to help you manage your appchain, write smart contracts, and build your frontend. @@ -35,19 +35,37 @@ your appchain, write smart contracts, and build your frontend. npx skills add initia-labs/agent-skills ``` +## Step 3: Choose an AI Agent -## Recommended Setup +These guides assume you are using a code-aware AI agent that can access your +project directory, read files, run commands, and help you edit code. Any +equivalent tool is fine. -To get the most out of this guide, we recommend having two terminal tabs or a -split-screen setup: +### Terminal Agents (CLI) -1. **AI agent**: For high-level tasks, contract generation, and - troubleshooting. -2. **Standard Terminal**: For interactive CLI commands (like `weave init`) and - long-running builds. +- [OpenAI Codex](https://help.openai.com/en/articles/11096431-openai-codex-ci-getting-started) +- [Claude Code](https://code.claude.com/docs/en/setup) +- [Gemini CLI](https://geminicli.com/docs/get-started/installation/) +### AI-Powered IDEs -## Step 3: Choose Your Track & VM [Planning] +- [Cursor](https://cursor.com/download) +- [VS Code](https://code.visualstudio.com/download) + +Keep your AI agent open in your project root so it can use your local context +when you paste the prompts in this guide. + + + + **Recommended setup:** Use two terminal tabs or a split-screen layout: + 1. **AI agent**: For high-level tasks, contract generation, and + troubleshooting. + 2. **Standard terminal**: For interactive CLI commands like `weave init` and + long-running builds. + + + +## Step 4: Choose Your Track & VM Before installing tools, decide what you want to build. This choice determines which `Virtual Machine (VM)` your AI agent will set up for you. @@ -59,7 +77,7 @@ which `Virtual Machine (VM)` your AI agent will set up for you. | `Agents / Tooling` | `Wasm` (Rust) | Best for performance-critical logic and Rust ecosystem integration. | -## Step 4: Prerequisites Checklist +## Step 5: Prerequisites Checklist To ensure a smooth setup, verify you have the following system tools installed: @@ -71,32 +89,28 @@ To ensure a smooth setup, verify you have the following system tools installed: - **Wasm**: **[Rust & Cargo](https://rustup.rs/)** are required for contract development. -## Step 5: AI-Powered Initia Tool Setup and Verification +## Step 6: AI-Powered Initia Tool Setup and Verification Now, ask your AI agent to handle the Initia-specific tools. It will install the core CLIs (`weave`, `initiad`, `jq`), build your chosen VM binary (`minitiad`), and then verify everything is accessible in your `PATH`. -Replace `` with your selected track from Step 3 (`Move`, `EVM`, or `Wasm`). - -**Prompt:** +Replace `` with your selected track from Step 4 (`Move`, `EVM`, or `Wasm`). -```terminal wrap +```terminal title="Prompt: Set up my environment" wrap Using the `initia-appchain-dev` skill, please set up my environment for the track. ``` -### Verify Installation & PATH [AI Agent] +### Verify Installation & PATH After setup completes, your AI agent can verify the tools are accessible from anywhere on your system. -**Prompt:** - -```terminal wrap +```terminal title="Prompt: Verify tool installation" wrap Using the `initia-appchain-dev` skill, please verify that `initiad`, `weave`, and `minitiad` are properly installed and accessible in my PATH. ``` -## Step 6: Initial Setup with `weave init` [Terminal] +## Step 7: Initial Setup with `weave init` Your AI agent is your partner in this hackathon, but the `weave` CLI requires an interactive setup flow to prepare your environment and launch your appchain. @@ -104,7 +118,8 @@ You can run it whenever you need to initialize or reconfigure your setup. If you already ran `weave init` and want to create a new appchain, run the - following commands first: + following commands first. This clears your existing local Initia, Minitia, + OPinit, and relayer setup: ```bash wrap rm -rf ~/.weave ~/.initia ~/.minitia ~/.opinit docker rm -f weave-relayer || true @@ -163,7 +178,7 @@ Here's a guide on how to navigate the interactive setup: Select `Launch a new rollup`. - **Switching VMs?** Reinstall the correct `minitiad` binary first (Step 5). If you have existing rollup data, type `confirm` when prompted to clean it and proceed. + **Switching VMs?** Reinstall the correct `minitiad` binary first (Step 6). If you have existing rollup data, type `confirm` when prompted to clean it and proceed. ### Select L1 Network @@ -342,7 +357,7 @@ Your appchain will now launch and start producing blocks! -## Step 7: Setup Interwoven Bots [Terminal] +## Step 8: Setup Interwoven Bots To enable the Optimistic bridge and cross-chain communication (IBC) between Initia L1 and your appchain, you need to start the `OPinit Executor` and the @@ -492,19 +507,19 @@ Follow the interactive guide: **Persistence After Restart:** - If you shut down your computer, the `Relayer` will stay active (it's managed by Docker), but you will need to manually restart your Rollup full node and Executor bot using these commands: + After restarting your computer, the relayer remains managed by Docker. As + long as Docker Desktop is open, it should still be running. You still need to + restart your rollup full node and executor: ```bash wrap - # Restart the rollup full node weave rollup start -d - # Restart the OPinit executor bot weave opinit start executor -d ``` -## Step 8: Final Key Setup [Terminal] +## Step 9: Final Key Setup **Why:** The `Gas Station` account acts as your `Universal Developer Key`. Importing it allows you to sign transactions manually via the CLI, and it @@ -543,24 +558,22 @@ minitiad keys list --keyring-backend test -## Step 9: Verifying Your Appchain [AI Agent] +## Step 10: Verifying Your Appchain After completing the infrastructure setup, verify that everything is healthy. -**Prompt:** - -```terminal wrap +```terminal title="Prompt: Verify my appchain is healthy" wrap Using the `initia-appchain-dev` skill, please verify that my appchain, executor bot, and relayer are running and that my Gas Station account has a balance. ``` -## Step 10: Next Steps: Master the Workflow +## Step 11: Next Steps: Master the Workflow Congratulations! You have successfully launched your first appchain. Before diving into a specific blueprint, we recommend mastering the development workflow. -The **Builder Guide** will teach you the **Describe -> Build -> Test** loop using +Builder Guide will teach you the Describe -> Build -> Test loop using your AI co-pilot, which is essential for building a winning hackathon entry. [Go to the Builder Guide ->](/hackathon/builder-guide) diff --git a/hackathon/example-project.mdx b/hackathon/lotteria.mdx similarity index 98% rename from hackathon/example-project.mdx rename to hackathon/lotteria.mdx index fa8b180..480e372 100644 --- a/hackathon/example-project.mdx +++ b/hackathon/lotteria.mdx @@ -1,5 +1,5 @@ --- -title: 'Case Study: Lottery Appchain - Move' +title: 'Lotteria' icon: ticket --- @@ -17,7 +17,7 @@ use the reference implementation as a working example to compare against. # Prerequisites Before you begin, make sure you have completed the -[Your First Appchain](/hackathon/hackathon-landing) setup, including: +[Set Up Your Appchain](/hackathon/get-started) setup, including: - A running appchain via `weave init` - `initiad` and `minitiad` installed and in your PATH. This should already be installed when you set up your appchain @@ -516,8 +516,8 @@ transactions. ### Bridging Assets via IBC -Once the IBC Relayer is running (see the -[hackathon landing guide](/hackathon/hackathon-landing), you can bridge INIT +Once the IBC Relayer is running (see +[Set Up Your Appchain](/hackathon/get-started)), you can bridge INIT tokens from the L1 testnet to your appchain. This is how users fund their accounts on your rollup. diff --git a/hackathon/submission-requirements.mdx b/hackathon/submission-requirements.mdx index 80da340..55e6f44 100644 --- a/hackathon/submission-requirements.mdx +++ b/hackathon/submission-requirements.mdx @@ -1,29 +1,39 @@ --- -title: 'Submission & Eligibility Criteria' +title: 'Submission Requirements' icon: check-to-slot --- Welcome to the Initia hackathon! Our goal is to empower builders to push the boundaries of what's possible with Interwoven Rollups. To ensure your project is eligible for judging and showcases the best of the Initia ecosystem, please -adhere to the following technical pillars. +meet the following project requirements. -# 1. Eligibility Pillars +## What to Submit + +To submit, include: + +- `.initia/submission.json` as the source of truth for automated checks +- `README.md` with a short project overview, implementation notes, and run instructions +- your primary deployed address in the submission JSON +- `demo_video_url` in your submission JSON + +# 1. Project Requirements To qualify for the prize pool, projects must demonstrate meaningful integration with the Initia stack. -### Pillar 1: Dedicated Rollup Architecture +### Requirement 1: Dedicated Rollup Architecture This hackathon is dedicated to the power of appchains. Your project should be deployed as its own appchain. -- **Requirement:** Provide your rollup's Chain ID and a link to a transaction or - contract deployment on your rollup. +- **Requirement:** Your submission must include your rollup metadata in + `.initia/submission.json`, including `rollup_chain_id`, your primary + deployed address, and a verifiable `l2_interaction_tx`. - **Getting Started:** Use the `weave` CLI to launch and manage your environment. -### Pillar 2: Optimized Frontend Experience +### Requirement 2: Optimized Frontend Experience We encourage builders to use the flagship tooling designed for the Interwoven ecosystem. This ensures your application is fully integrated with the Initia @@ -35,11 +45,11 @@ stack and provides a seamless experience for users. Auto-signing (session-based invisible UX) and Interwoven Bridge flows for moving liquidity between L1 and your appchain. -### Pillar 3: Showcasing Initia Native Features +### Requirement 3: Required Native Feature -High-value projects go beyond Hello World by leveraging Initia's native -features. Your submission should implement at least one of the following -Interwoven Power-Ups: +High-value projects go beyond Hello World by implementing at least one +supported Native Feature. In `.initia/submission.json`, this maps directly to +the required `native_feature` field. 1. **Auto-signing (Invisible UX):** Create a frictionless experience where players or users can interact with the blockchain seamlessly without @@ -50,41 +60,21 @@ Interwoven Power-Ups: 3. **Initia Usernames (Human Identity):** Integrate human-readable `.init` names to replace complex addresses and improve user onboarding. -# 2. Technical Resource Hub - -Access the official tools and documentation to build your project: - -### Official Repositories - -- [Initia L1](https://github.com/initia-labs/initia): Core Layer 1 source - code. -- [Weave CLI](https://github.com/initia-labs/weave): Essential for launching - appchains. -- [InterwovenKit](https://github.com/initia-labs/interwovenkit): The - standard React SDK for Initia frontends. -- [Initia.js](https://github.com/initia-labs/initia.js): The primary - JavaScript library for blockchain interactions. - -### APIs & Endpoints - -- **Local Rollup Indexer:** `http://localhost:8080` (Use this to query - transactions and assets on your appchain). -- **L1 Indexer:** [View Swagger](https://indexer.initia.xyz/swagger/index.html) - (Use this as a reference for querying global data like L1 assets and staking). -- **L1 Testnet RPC:** `https://rpc.testnet.initia.xyz` -- **L1 Testnet REST:** `https://rest.testnet.initia.xyz` -- **Faucets:** [faucet.testnet.initia.xyz](https://faucet.testnet.initia.xyz) + +Judges will score originality and execution. Projects that only reproduce an +example without meaningful customization are unlikely to score as well as +projects with clear custom logic, UX, or product differentiation. + -# 3. Submission Package +# 2. Required Submission Files To support reliable automated verification, every submission repository must include this file: - **Required path:** `.initia/submission.json` -This JSON file is the source of truth for eligibility checks. Also include a -human-readable summary in your `README.md`, but the grader should parse -`.initia/submission.json`. +This JSON file is the source of truth for automated eligibility checks. Also +include a human-readable summary in your `README.md`. ### Required `.initia/submission.json` Template @@ -94,10 +84,11 @@ human-readable summary in your `README.md`, but the grader should parse "repo_url": "https://github.com//", "commit_sha": "0123456789abcdef0123456789abcdef01234567", "rollup_chain_id": "my-game-1", + "deployed_address": "0x...", "vm": "move", - "power_up": "auto-signing", + "native_feature": "auto-signing", "core_logic_path": "blockforge/sources/items.move", - "power_up_frontend_path": "blockforge-frontend/src/Game.jsx", + "native_feature_frontend_path": "blockforge-frontend/src/Game.jsx", "l2_interaction_tx": "0x...", "demo_video_url": "https://youtu.be/..." } @@ -109,12 +100,14 @@ human-readable summary in your `README.md`, but the grader should parse - `repo_url`: Required. Reachable public GitHub repository URL. - `commit_sha`: Required. 40-character hex Git commit SHA. - `rollup_chain_id`: Required. Non-empty string. +- `deployed_address`: Required. Primary deployed address for your application + logic. Use your contract address, or your module address for Move projects. - `vm`: Required. One of `move`, `evm`, `wasm`. -- `power_up`: Required. One of `auto-signing`, `interwoven-bridge`, +- `native_feature`: Required. One of `auto-signing`, `interwoven-bridge`, `initia-usernames`. - `core_logic_path`: Required. Repo-relative file path that exists at `commit_sha`. -- `power_up_frontend_path`: Required. Repo-relative file path that exists at +- `native_feature_frontend_path`: Required. Repo-relative file path that exists at `commit_sha`. - `l2_interaction_tx`: Required. Non-empty transaction hash or explorer URL. - `demo_video_url`: Required for every submission. Provide a 1-3 minute walkthrough video (Loom/YouTube, publicly accessible via URL). @@ -138,7 +131,7 @@ what problem does it solve?] - **The Custom Implementation**: Briefly describe the unique logic you added. What original functionality did you design and implement? -- **The Power-Up**: Which Interwoven feature did you use, and exactly how does +- **The Native Feature**: Which Interwoven feature did you use, and exactly how does it improve the user experience? - **The Value Add**: What meaningful value does this application create for crypto users, and how does it specifically strengthen the Initia ecosystem? @@ -148,3 +141,28 @@ what problem does it solve?] [Provide 3-4 clear steps for a judge to run your frontend and connect it to a local environment if necessary.] ``` + +# 3. Technical Resources + +Access the official tools and documentation to build your project: + +### Official Repositories + +- [Initia L1](https://github.com/initia-labs/initia): Core Layer 1 source + code. +- [Weave CLI](https://github.com/initia-labs/weave): Essential for launching + appchains. +- [InterwovenKit](https://github.com/initia-labs/interwovenkit): The + standard React SDK for Initia frontends. +- [Initia.js](https://github.com/initia-labs/initia.js): The primary + JavaScript library for blockchain interactions. + +### APIs & Endpoints + +- **Local Rollup Indexer:** `http://localhost:8080` (Use this to query + transactions and assets on your appchain). +- **L1 Indexer:** [View Swagger](https://indexer.initia.xyz/swagger/index.html) + (Use this as a reference for querying global data like L1 assets and staking). +- **L1 Testnet RPC:** `https://rpc.testnet.initia.xyz` +- **L1 Testnet REST:** `https://rest.testnet.initia.xyz` +- **Faucets:** [faucet.testnet.initia.xyz](https://faucet.testnet.initia.xyz)