Smart Contract Deployment to Arbitrum

We design and develop full-cycle blockchain solutions: from smart contract architecture to launching DeFi protocols, NFT marketplaces and crypto exchanges. Security audits, tokenomics, integration with existing infrastructure.
Showing 1 of 1 servicesAll 1306 services
Smart Contract Deployment to Arbitrum
Simple
from 4 hours to 2 business days
FAQ
Blockchain Development Services
Blockchain Development Stages
Latest works
  • image_website-b2b-advance_0.png
    B2B ADVANCE company website development
    1215
  • image_web-applications_feedme_466_0.webp
    Development of a web application for FEEDME
    1161
  • image_websites_belfingroup_462_0.webp
    Website development for BELFINGROUP
    852
  • image_ecommerce_furnoro_435_0.webp
    Development of an online store for the company FURNORO
    1043
  • image_logo-advance_0.png
    B2B Advance company logo design
    561
  • image_crm_enviok_479_0.webp
    Development of a web application for Enviok
    823

Deploying Smart Contracts to Arbitrum

Arbitrum is an Optimistic Rollup L2 that is EVM-compatible at the bytecode level. The overwhelming majority of Ethereum contracts deploy without changes. But there are nuances that burn in production: differences in gas mechanics, ArbOS specifics, finalization specifics and bridging.

How Arbitrum Differs from Ethereum

Gas model: Arbitrum uses two-component gas. L2 execution gas — analog of Ethereum gas, costs cheap. L1 calldata cost — cost of publishing transaction calldata to Ethereum (for data availability), automatically added to every transaction. tx.gasprice on Arbitrum — not the same as on Ethereum; use ArbGasInfo precompile for accurate calculation.

Block numbers: block.number on Arbitrum returns L1 Ethereum block number (updated ~every 12 seconds), not Arbitrum block. For Arbitrum-native block number — ArbSys(0x64).arbBlockNumber(). Contracts using block.number for timing (vesting, TWAP) may work unexpectedly.

Block timestamp: block.timestamp corresponds to real time, updated with each Arbitrum block (~250ms). This is faster than Ethereum — can affect TWAP oracles.

Precompiles: Arbitrum-specific addresses 0x64 (ArbSys), 0x6b (ArbGasInfo), 0x6c (ArbAggregator). Useful for getting L1 block number, gas pricing info.

Deployment via Hardhat/Foundry

// hardhat.config.ts
networks: {
    arbitrum: {
        url: process.env.ARBITRUM_RPC_URL || 'https://arb1.arbitrum.io/rpc',
        accounts: [process.env.PRIVATE_KEY!],
        chainId: 42161,
    },
    arbitrumSepolia: {
        url: 'https://sepolia-rollup.arbitrum.io/rpc',
        accounts: [process.env.PRIVATE_KEY!],
        chainId: 421614,
    },
}
# Foundry
forge create --rpc-url $ARBITRUM_RPC_URL \
    --private-key $PRIVATE_KEY \
    --etherscan-api-key $ARBISCAN_API_KEY \
    --verify \
    src/MyContract.sol:MyContract \
    --constructor-args arg1 arg2

Verification on Arbiscan: same mechanism as Etherscan, separate API key from arbiscan.io.

Contract Size and Optimizations

24KB limit remains. On Arbitrum gas is cheaper, but calldata still costs money (L1 cost). Calldata optimization is relevant for frequently called functions with large arguments.

Bridges and Tokens

Canonical Arbitrum bridge for ETH and standard ERC-20. For custom tokens — Arbitrum token bridge with registration. If contract manages bridge or works with bridged tokens: account for the fact that WETH on Arbitrum is not the same address as on Ethereum.

Timeline Estimates

Deploying a ready contract + verification: several hours. With compatibility audit, multisig ownership setup via Safe, proxy deployment (UUPS/Transparent) and deployment scripts: 1-2 days.