arbitrum

Implements Arbitrum Nitro L2 development including deployment, bridging, and cross-chain messaging.

1|1|Updated May 21, 2026
One-click install
npx skills add https://github.com/naruto11eth/cryptoskills --skill arbitrum-naruto11eth
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: arbitrum
Source: https://github.com/naruto11eth/cryptoskills/tree/main/skills/arbitrum
Command: npx skills add https://github.com/naruto11eth/cryptoskills --skill arbitrum-naruto11eth

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires viem, @arbitrum/orbit-sdk, @arbitrum/sdk.

What problem does it solve? AI models carry stale assumptions about Arbitrum — wrong block.number semantics, incorrect gas estimation, missing --legacy flags, and hallucinated contract addresses — causing failed deployments, lost cross-chain messages, and broken bridging code. ## Core Features & Use Cases - Deployment & Verification: Foundry and Hardhat deployment patterns with the required --legacy flag, plus Arbiscan and Sourcify verification commands. - Cross-Chain Messaging: Complete L1→L2 retryable ticket flows and L2→L1 Outbox execution, including address aliasing, ticket redemption, and failure recovery. - Bridging & Gas: ETH and ERC20 bridging via the Gateway Router, plus accurate two-component gas estimation using NodeInterface and ArbGasInfo precompiles. - Use Case: Deploy a contract to Arbitrum One, bridge USDC from Ethereum, and send a cross-chain message — with verified contract addresses, correct gas buffers, and retryable ticket monitoring built in. ## Quick Start Ask the agent to deploy a contract to Arbitrum Sepolia using Foundry and estimate its gas cost including the L1 data posting component.

Frequently Asked Questions about arbitrum

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I deploy a contract to Arbitrum with Foundry?

Use forge create or forge script with the --legacy flag, since Arbitrum's sequencer does not accept EIP-1559 type-2 transactions from forge. Without --legacy, deployment fails with a cryptic RPC error.

How do I send a message from Ethereum L1 to Arbitrum L2?

Call createRetryableTicket on the L1 Inbox contract with ETH covering l2CallValue, maxSubmissionCost, and gasLimit times maxFeePerGas. The sequencer auto-executes on L2 within about 10 minutes; failed tickets can be manually redeemed within 7 days.

Why does block.number return the wrong value on Arbitrum?

On Arbitrum, block.number returns the L1 Ethereum block number, not the L2 block number. Use the ArbSys precompile at 0x64 and call arbBlockNumber() to get the actual L2 block number.

How long do Arbitrum withdrawals to Ethereum take?

Native bridge withdrawals take approximately 7 days due to the optimistic rollup challenge period. After calling ArbSys.withdrawEth or sendTxToL1, you must wait for the challenge period and then execute the message on L1 via the Outbox contract.

Why is my Arbitrum gas estimate too low?

Standard eth_estimateGas may not fully account for the L1 data posting cost component. Use NodeInterface.gasEstimateComponents() at address 0xC8 for an accurate L1 plus L2 breakdown, and add a 20-30% buffer for L1 base fee fluctuations.

Why is msg.sender different in L1 to L2 contract calls?

When an L1 contract sends a retryable ticket, msg.sender on L2 is aliased by adding the offset 0x1111000000000000000000000000000000001111 to prevent address collision attacks. Reverse the alias by subtracting the offset to recover the original L1 sender.