A web app to detect if an address is part of Relay Protocol infrastructure or a Relay deposit-address request. Checks solver addresses, depository contracts, protocol contracts, and matching deposit-address records across all supported chains.
- Address Detection — Identifies solver addresses, depository contracts, protocol contracts (multicall, routers, receivers, etc.), and Relay deposit-address requests from the Relay Protocol API.
- Batch Processing — Check multiple addresses at once by pasting comma, newline, or space-separated lists.
- Multi-chain Support — Scans across all chains returned by the
/chainsendpoint. - EVM, SVM & BTC — Supports EVM (
0x...), Solana (base58), and Bitcoin (Legacy, SegWit, Taproot) addresses. - Detection Summary — Shows match type (solver, depository, contract, deposit address) with per-chain and per-request breakdown.
- Collapsible Chain Lists — Matches grouped by type with expandable details.
- Block Explorer Links — Direct links to view the address on each chain's explorer.
- Shareable URLs — Results are linkable via
?address=query parameter. - Privacy Toggle — Address visibility toggle with truncated display by default.
- Pixel Avatars — Unique pixel-based avatars generated per address.
git clone https://github.com/warengonzaga/is-it-relay.git
cd is-it-relay
pnpm installOptional: set VITE_RELAY_API_KEY in your environment for higher Relay API rate limits when checking deposit-address requests.
Warning
VITE_* variables are embedded into the client bundle at build time and are publicly exposed in deployed builds. Do not treat VITE_RELAY_API_KEY as a secret or use a privileged server-only credential here.
For local development, you can place it in a .env file:
VITE_RELAY_API_KEY=your-relay-api-keypnpm devpnpm buildpnpm preview- User enters one or multiple EVM, Solana, or Bitcoin addresses (comma, newline, or space-separated).
- The app fetches all chains from
https://api.relay.link/chains. - It also queries
https://api.relay.link/requests/v2?depositAddress=<address>&includeChildRequests=trueto detect Relay deposit-address requests. - For each chain, it checks:
solverAddresses[]— solver addressesprotocol.v2.depository— v2 depository contract addresscontracts.*— protocol contracts (multicall3, erc20Router, relayReceiver, etc.)
- Matching uses case-insensitive comparison for EVM and exact match for SVM/BTC (base58/bech32 is case-sensitive).
- Results display the match type, matched chains, deposit-request metadata, and explorer links.
- For batch processing, results are organized by detected and non-detected addresses with summary statistics.
src/
├── components/
│ ├── ui/ # Reusable UI primitives (Button, Card, Input, Textarea)
│ ├── AddressInput.tsx # Address input form with validation
│ ├── DetectionResult.tsx # Result display with chain details
│ ├── BatchDetectionResult.tsx # Batch results display with summary
│ ├── Footer.tsx # Footer with repo links
│ └── IsItRelayLogo.tsx # Custom logo component
├── services/
│ └── relayApi.ts # API client and detection logic
├── types/
│ └── relay.ts # TypeScript interfaces
├── lib/
│ └── utils.ts # Utility functions
├── App.tsx # Main app component
├── main.tsx # Entry point
└── index.css # Global styles and theme
GPL-3.0 © Waren Gonzaga