Logo
Build
  • Explore Buildathon
  • Project Archive
Hack
Hack Coming Soon
  • Explore IRL Hackhouse
  • How to Qualify
  • Past Events

ArbiPic

On-Chain Verifiable Photo Capture System empowered by Arbitrum Orbit L3 and Stylus to beat deepfakes and AI

Videos

Description

ArbiPic ๐Ÿ“ธ

On-Chain Verifiable Photo Capture System using Stylus and Arbitrum Orbit L3

A decentralized application that combats AI-generated fake images by enabling users to capture photos via webcam and cryptographically verify them on-chain. Using Arbitrumโ€™s Stylus (Rust smart contracts) and Orbit L3, each photo is hashed, stored on IPFS, and verified on the blockchain with ZK-style ownership proofs.


๐ŸŒŸ Features

Feature

Description

๐Ÿ“ธ Webcam Capture

Real-time photo capture using react-webcam

๐Ÿ” On-Chain Verification

SHA-256 hash stored immutably on Arbitrum

โšก Stylus Contracts

Rust/WASM for ~10x gas savings vs Solidity

๐ŸŒ IPFS Storage

Decentralized image storage via Pinata

๐Ÿ”— ZK Commitments

keccak256-based ownership proofs

๐ŸŸฃ Orbit L3

Custom L3 chain for ultra-low cost verification

๐Ÿฆ Social Sharing

Tweet verification proofs directly

๐Ÿ” Verification Page

Anyone can verify authenticity by uploading an image

๐Ÿ”„ Network Switching

Seamlessly switch between Sepolia and L3

๐Ÿท๏ธ Watermarked Badges

Download verified images with proof overlay


๐Ÿ—๏ธ Architecture

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                         FRONTEND                                โ”‚
โ”‚  React 18 + TypeScript + Vite + Tailwind + Wagmi v2            โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”‚
โ”‚  โ”‚ PhotoCaptureโ”‚  โ”‚ VerifyPage  โ”‚  โ”‚ NetworkSwitcher        โ”‚  โ”‚
โ”‚  โ”‚ Enhanced    โ”‚  โ”‚             โ”‚  โ”‚ (Sepolia โ†” Orbit L3)   โ”‚  โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                            โ”‚
        โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
        โ–ผ                   โ–ผ                   โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚   IPFS        โ”‚  โ”‚  Arbitrum      โ”‚  โ”‚  Orbit L3          โ”‚
โ”‚   (Pinata)    โ”‚  โ”‚  Sepolia       โ”‚  โ”‚  (Local/Custom)    โ”‚
โ”‚               โ”‚  โ”‚  Chain: 421614 โ”‚  โ”‚  Chain: 333333     โ”‚
โ”‚  Images +     โ”‚  โ”‚                โ”‚  โ”‚                    โ”‚
โ”‚  Metadata     โ”‚  โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”‚  โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”      โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ”‚  โ”‚ Stylus   โ”‚  โ”‚  โ”‚  โ”‚ Stylus   โ”‚      โ”‚
                   โ”‚  โ”‚ Contract โ”‚  โ”‚  โ”‚  โ”‚ Contract โ”‚      โ”‚
                   โ”‚  โ”‚ (Rust)   โ”‚  โ”‚  โ”‚  โ”‚ (Rust)   โ”‚      โ”‚
                   โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ”‚  โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜      โ”‚
                   โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

๐Ÿ“ฆ Multi-Network Deployment

Network

Contract Address

Chain ID

RPC

Arbitrum Sepolia

0xeb246817d2440f82f4b4c04c2c120afefe1e5ec4

421614

https://sepolia-rollup.arbitrum.io/rpc

Orbit L3 (Local)

0x1294b86822ff4976bfe136cb06cf43ec7fcf2574

333333

http://127.0.0.1:3347


๐Ÿš€ Quick Start

Prerequisites

  • Node.js 18+ and npm

  • Rust toolchain: rustup install stable

  • Cargo Stylus CLI: cargo install cargo-stylus --locked

  • Docker (for Orbit L3 local development)

  • MetaMask wallet

  • Testnet ETH: Get from Sepolia Faucet

1. Clone & Install

git clone https://github.com/yourusername/ArbiPic.git
cd ArbiPic

# Install frontend dependenciescd frontend && npm install

# Build Rust contractcd ../contracts && cargo build --release

2. Configure Environment

Create frontend/.env:

VITE_PINATA_JWT=your_pinata_jwt_token
VITE_PINATA_GATEWAY=your-gateway.mypinata.cloud
VITE_APP_URL=http://localhost:5173

3. Run Frontend

cd frontend
npm run dev

Visit http://localhost:5173


๐ŸŸฃ Orbit L3 Deployment

For ultra-low cost verification on your own L3 chain:

Start Local L3

# Clone nitro-testnode
git clone --recurse-submodules https://github.com/OffchainLabs/nitro-testnode.git
cd nitro-testnode

# Start L1 โ†’ L2 โ†’ L3 chainyes | ./test-node.bash --init --l3node --detach

Deploy Contract to L3

cd ArbiPic/contracts

cargo stylus deploy \
    --endpoint http://127.0.0.1:3347 \
    --private-key 0xb6b15c8cb491557369f3c7d2c287b053eb229daa9c22138887752191c9520659

Add L3 to MetaMask

Field

Value

Network Name

ArbiPic L3 (Orbit)

RPC URL

http://127.0.0.1:3347

Chain ID

333333

Currency Symbol

ETH

Pre-funded test account:

  • Address: 0x3f1Eae7D46d88F08fc2F8ed27FCb2AB183EB2d0E

  • Private Key: 0xb6b15c8cb491557369f3c7d2c287b053eb229daa9c22138887752191c9520659

See docs/ORBIT_L3_DEPLOYMENT.md for detailed guide.


๐Ÿ“ Usage Guide

Capture & Verify a Photo

  1. Connect Wallet: Click โ€œConnect Walletโ€ and connect MetaMask

  2. Select Network: Use the network switcher (๐Ÿ”ต Sepolia or ๐ŸŸฃ Orbit L3)

  3. Capture Photo: Click โ€œ๐Ÿ“ธ Capture Photoโ€

  4. Verify On-Chain: Click โ€œ๐Ÿ” Verify On-Chainโ€ to submit

  5. View Results: Get IPFS link, transaction hash, and verification ID

  6. Share: Tweet your verified photo or copy the verification link

Verify Someone Elseโ€™s Photo

  1. Go to /verify page

  2. Upload the image or paste the verification ID

  3. System checks on-chain if the photo was verified

  4. See owner address, timestamp, and ZK proof status

Prove Ownership (ZK Proof)

If you verified a photo, you can prove ownership without revealing the image:

  1. Click โ€œ๐Ÿ” Prove Ownershipโ€

  2. Your locally-stored secret is used to verify against on-chain commitment

  3. Cryptographic proof confirms youโ€™re the original owner


๐Ÿ“Š Gas Benchmarks

Operation

Stylus (Rust)

Solidity

Savings

verifyPhoto

~45,000 gas

~120,000 gas

~63%

getAttestation

~8,000 gas

~25,000 gas

~68%

verifyZkProof

~12,000 gas

~35,000 gas

~66%

See docs/GAS_BENCHMARKS.md for detailed benchmarks.


๐Ÿ› ๏ธ Development

Contract Development

cd contracts
cargo stylus check
cargo build --release --target wasm32-unknown-unknown
cargo stylus deploy --endpoint https://sepolia-rollup.arbitrum.io/rpc --private-key $KEY

Frontend Development

cd frontend
npm run dev       # Start dev server
npm run build     # Build for production
npm run preview   # Preview production build

๐ŸŽฏ What we have Achieved

Category

Implementation

โœ… Stylus

Rust smart contract with keccak256 ZK proofs

โœ… Orbit L3

Custom chain deployment with nitro-testnode

โœ… Gas Efficiency

60-70% savings vs Solidity

โœ… IPFS

Decentralized storage via Pinata

โœ… ZK Proofs

Privacy-preserving ownership verification

โœ… Multi-Chain

Network switcher (Sepolia + L3)

โœ… Social Proof

Twitter sharing integration

โœ… Modern UX

React 18 + Wagmi v2 + Tailwind


๐Ÿ”ฎ Future Roadmap

  • Production Orbit Chain - Deploy on mainnet L3

  • Full ZK Proofs - Implement SNARKs/STARKs for complete privacy

  • Batch Verification - Verify multiple photos in one transaction

  • AI Detection - Integrate deepfake detection algorithms

  • Mobile App - React Native version

  • Cross-Chain Bridge - Verify proofs across L2/L3


Built with โค๏ธ ๐Ÿ†

Fighting AI fakes with blockchain technology

Progress During Hackathon

Built from Scratch solely for this hackathon and for future milestones

Tech Stack

RustOrbit L3StylusReactWeb3EthersTailwindCSSPinataIPFS

Fundraising Status

N/A

Team Leader
AAdil Husain
GitHub Link
github

GitHub

https://github.com/adilhusain01/arbipic
Product Category
Other