https://github.com/warengonzaga/is-it-relay
Detect if a wallet address is part of Relay Protocol infrastructure
https://github.com/warengonzaga/is-it-relay
Last synced: 2 months ago
JSON representation
Detect if a wallet address is part of Relay Protocol infrastructure
- Host: GitHub
- URL: https://github.com/warengonzaga/is-it-relay
- Owner: warengonzaga
- License: gpl-3.0
- Created: 2026-01-29T05:35:17.000Z (4 months ago)
- Default Branch: main
- Last Pushed: 2026-02-18T12:33:00.000Z (4 months ago)
- Last Synced: 2026-02-18T16:53:16.422Z (4 months ago)
- Language: TypeScript
- Homepage: http://waren.build/is-it-relay/
- Size: 114 KB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Agents: AGENTS.md
Awesome Lists containing this project
README
# Is It Relay?
A web app to detect if an address is part of [Relay Protocol](https://relay.link) infrastructure. Checks solver addresses, depository contracts, and protocol contracts across all supported chains.
[](https://github.com/warengonzaga/is-it-relay/actions/workflows/deploy.yml)
## Features
- **Address Detection** — Identifies solver addresses, depository contracts, and protocol contracts (multicall, routers, receivers, etc.) 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 `/chains` endpoint.
- **EVM, SVM & BTC** — Supports EVM (`0x...`), Solana (base58), and Bitcoin (Legacy, SegWit, Taproot) addresses.
- **Detection Summary** — Shows match type (solver, depository, contract) with per-chain 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.
## Tech Stack
- [React 19](https://react.dev/) with [TypeScript](https://www.typescriptlang.org/)
- [Vite 7](https://vite.dev/)
- [Tailwind CSS 3](https://tailwindcss.com/)
- [Axios](https://axios-http.com/)
- [Boring Avatars](https://boringavatars.com/)
- [Lucide React](https://lucide.dev/)
- [Relay API](https://api.relay.link)
## Getting Started
### Prerequisites
- [Node.js](https://nodejs.org/) v18+
- [pnpm](https://pnpm.io/)
### Installation
```bash
git clone https://github.com/warengonzaga/is-it-relay.git
cd is-it-relay
pnpm install
```
### Development
```bash
pnpm dev
```
### Build
```bash
pnpm build
```
### Preview
```bash
pnpm preview
```
## How It Works
1. User enters one or multiple EVM, Solana, or Bitcoin addresses (comma, newline, or space-separated).
2. The app fetches all chains from `https://api.relay.link/chains`.
3. For each chain, it checks:
- `solverAddresses[]` — solver addresses
- `protocol.v2.depository` — v2 depository contract address
- `contracts.*` — protocol contracts (multicall3, erc20Router, relayReceiver, etc.)
4. Matching uses case-insensitive comparison for EVM and exact match for SVM/BTC (base58/bech32 is case-sensitive).
5. Results display the match type, matched chains, and explorer links.
6. For batch processing, results are organized by Relay and Non-Relay addresses with summary statistics.
## Project Structure
```
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
```
## License
GPL-3.0 © [Waren Gonzaga](https://github.com/warengonzaga)