Arbitrum dApp Development
Opinionated guide for building dApps on Arbitrum using Stylus (Rust) and/or Solidity. Covers local devnode setup, contract development, testing, deployment, and React frontend integration with viem. Use when starting a new Arbitrum project, writing S
Install in one line
CLI$ mfkvault install arbitrum-dapp-developmentRequires the MFKVault CLI. Prefer MCP?
Free to install — no account needed
Copy the command below and paste into your agent.
Instant access • No coding needed • No account needed
What you get in 5 minutes
- Full skill code ready to install
- Works with 4 AI agents
- Lifetime updates included
Description
--- name: arbitrum-dapp-skill description: Opinionated guide for building dApps on Arbitrum using Stylus (Rust) and/or Solidity. Covers local devnode setup, contract development, testing, deployment, and React frontend integration with viem. Use when starting a new Arbitrum project, writing Stylus or Solidity contracts, deploying to Arbitrum, or building a frontend that interacts with Arbitrum contracts. --- # Arbitrum dApp Development ## Stack | Layer | Tool | Notes | |-------|------|-------| | Smart contracts (Rust) | `stylus-sdk` v0.10+ | Compiled to WASM, runs on Stylus VM | | Smart contracts (Solidity) | Solidity 0.8.x + Foundry | Standard EVM path on Arbitrum | | Local node | `nitro-devnode` | Docker-based local Arbitrum chain | | Contract CLI | `cargo-stylus` | Check, deploy, export-abi for Stylus | | Contract toolchain | Foundry (`forge`, `cast`, `anvil`) | Build, test, deploy, interact for Solidity | | Frontend | React / Next.js + viem + wagmi | viem for all chain interaction | | Package manager | pnpm | Workspace-friendly, fast | ## Decision Flow When starting a new contract: 1. **Need max performance / lower gas?** → Stylus Rust. See `references/stylus-rust-contracts.md`. 2. **Need broad tooling compatibility / rapid prototyping?** → Solidity. See `references/solidity-contracts.md`. 3. **Hybrid?** → Use both. Stylus and Solidity contracts are fully interoperable on Arbitrum. ## Project Scaffolding ### Monorepo layout (recommended) ``` my-arbitrum-dapp/ ├── apps/ │ ├── frontend/ # React / Next.js app │ ├── contracts-stylus/ # Rust Stylus contracts │ ├── contracts-solidity/ # Foundry Solidity contracts │ └── nitro-devnode/ # Local dev chain (git submodule) ├── pnpm-workspace.yaml └── package.json ``` ### Bootstrap steps ```bash # 1. Create workspace mkdir my-arbitrum-dapp && cd my-arbitrum-dapp pnpm init printf "packages:\n - 'apps/*'\n" > pnpm-workspace.yaml # 2. Local devnode git clone https://github.com/OffchainLabs/nitro-devnode.git apps/nitro-devnode cd apps/nitro-devnode && ./run-dev-node.sh && cd ../.. # 3a. Stylus contract cargo stylus new apps/contracts-stylus # 3b. Solidity contract cd apps && forge init contracts-solidity && cd .. # 4. Frontend pnpm create next-app apps/frontend --typescript cd apps/frontend pnpm add viem wagmi @tanstack/react-query ``` ## Core Workflow ### Stylus Rust ```bash # Validate cargo stylus check --endpoint http://localhost:8547 # Deploy (uses the nitro-devnode pre-funded deployer account) cargo stylus deploy \ --endpoint http://localhost:8547 \ --private-key $PRIVATE_KEY # Export ABI for frontend consumption cargo stylus export-abi ``` ### Solidity (Foundry) ```bash # Build forge build # Test forge test # Deploy locally (uses the nitro-devnode pre-funded deployer account) forge script script/Deploy.s.sol --rpc-url http://localhost:8547 --broadcast \ --private-key $PRIVATE_KEY ``` > **Note:** The nitro-devnode ships with a pre-funded deployer account. See `references/local-devnode.md` for the default private key and address. For testnet/mainnet, use your own key via environment variables — never hardcode secrets. ### Frontend (viem + wagmi) ```typescript import { createPublicClient, http } from "viem"; import { arbitrumSepolia } from "viem/chains"; const client = createPublicClient({ chain: arbitrumSepolia, transport: http(), }); // Read from contract const result = await client.readContract({ address: "0x...", abi: contractAbi, functionName: "myFunction", }); ``` See `references/frontend-integration.md` for full patterns with wagmi hooks, wallet connection, and write transactions. ## Principles - **Always use viem** for chain interaction. - **Test locally first** against nitro-devnode before deploying to testnet. - **Export ABIs** from both Stylus (`cargo stylus export-abi`) and Solidity (`forge inspect`) and keep them in a shared location the frontend can import. - **Use environment variables** for RPC URLs, contract addresses, and private keys. Never hardcode secrets. - **Stylus contracts are EVM-compatible** — they share the same address space, storage model, and ABI encoding as Solidity contracts. Cross-contract calls work seamlessly. ## References Load these as needed for deeper guidance: - `references/stylus-rust-contracts.md` — Stylus SDK patterns, storage, macros, entrypoints - `references/solidity-contracts.md` — Solidity on Arbitrum specifics and Foundry workflow - `references/frontend-integration.md` — React + viem + wagmi patterns - `references/local-devnode.md` — Nitro devnode setup, accounts, and debugging - `references/deployment.md` — Deploying to testnet and mainnet - `references/testing.md` — Testing strategies for both Stylus and Solidity
Security Status
Unvetted
Not yet security scanned
Related AI Tools
More Save Money tools you might like
Family History Research Planning Skill
FreeProvides assistance with planning family history and genealogy research projects.
Naming Skill
FreeName products, SaaS, brands, open source projects, bots, and apps. Use when the user needs to name something, find a brand name, or pick a product name. Metaphor-driven process that produces memorable, meaningful names and avoids AI slop.
Profit Margin Calculator
$7.99Find hidden profit leaks — see exactly where your money goes
guard-scanner
Free"Security scanner and runtime guard for OpenClaw skills, MCP servers, and AI agent workflows. Detects prompt injection, identity hijacking, memory poisoning, A2A contagion, secret leaks, supply-chain abuse, and dangerous tool calls with 364 static th
bbc-skill — Bilibili Comment Collector
FreeFetch Bilibili (哔哩哔哩) video comments for UP主 self-analysis. Use when the user asks to collect, download, export, or analyze comments on a Bilibili video (BV号 / URL / UID). Produces JSONL + summary.json suitable for further Claude Code analysis (senti
Life OS · Personal Decision Engine
Free"A personal decision engine with 16 independent AI agents, checks and balances, and swappable cultural themes. Covers relationships, finance, learning, execution, risk control, health, and infrastructure. Use when facing complex personal decisions (c