MCPcopy Index your code
hub / github.com/WardAnalytics/WardGraph

github.com/WardAnalytics/WardGraph @main

Chat with this repo
repository ↗ · DeepWiki ↗ · + Follow
455 symbols 894 edges 212 files 18 documented · 4%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Ward Graph

An open-source graph tool for exploring blockchain transactions with a focus on compliance and risk analysis.

About this project

The graph tool is based on an API provided by Ward Analytics. This API calculates the risk score and activity with other entities, allowing for the instant calculation of stats like direct and indirect exposure to entities like Binance or address categories like Mixers or Phishing/Hacking-related addresses.

You can try it out here: https://www.wardanalytics.app

Features

  • Graph visualization of blockchain interactions between addresses
  • Current Blockchains: Ethereum
  • Thorough mapping of addresses to entities (exchanges, mixers, scams, etc.)

Implementation

The project uses the following technologies:

  • Typescript
  • React
  • ReactFlow
  • TailwindCSS
  • Vite

Roadmap

  • New blockchains: Bitcoin, Tron, Polygon, XRP.
  • Improvements to the UI/UX
  • Improvements to the expansion algorithm heuristic

Dataset

  • We will make most of our dataset used in the Graph completely public on Hugging Face & Kaggle in the near future, while updating it regularly. Links will be available here.

General Information

  • Source Code: https://github.com/WardAnalytics/WardGraph
  • Issue Tracker: https://github.com/WardAnalytics/WardGraph/issues
  • Discord:

Project Structure

TODO

How to run this project

1. Yarn

Yarn is recommended to run this project. If you don't have it installed, you can install it with npm install -g yarn.

2. Environment Variables

The .env file should look like this:

VITE_WARD_API_BASE_URL=https://wardanalyticsapi.com
VITE_WARD_API_KEY=[Your Ward Analytics API Key] # If you are interested in contributing, simply shoot us a message and we will promptly provide you with a free API key ;)

For a template, simply go to .env.example and copy it to .env.

3. Install Dependencies

Run yarn install to install all dependencies.

4. Run the project

Run yarn dev to start the development server.


(Optional) Config Firebase Emulators

Run yarn start-emulators to start the firebase emulators.

For more information on firebase emulators visit: https://firebase.google.com/docs/emulator-suite

This project has the following emultors configured

"emulators": {
    "auth": {
      "port": 9099
    },
    "firestore": {
      "port": 8080
    },
    "ui": {
      "enabled": true,
      "port": 4000
    },
    "hosting": {
      "port": 5000
    }
  }

Note: The emulators need a java version installed on local machine.

How to contribute

TODO - Make sure to mention users can request an API key if they want to contribute or try it out and we'll invite them to the private beta for free.

Additional Channels

  • Discord:
  • Website:
  • Email:
  • LinkedIn:
  • Twitter:

Extension points exported contracts — how you extend this code

GraphProps (Interface)
Graph + Landing Page - These are combined into one component for easy * animated transitions between the two.
src/components/graph/Graph.tsx
CustomerPortalOptions (Interface)
Options for the customer portal hook
src/services/stripe/payments.tsx
UnauthenticatedTimeContextProps (Interface)
(no doc)
src/App.tsx
HotKeysType (Interface)
(no doc)
src/types/hotKeys.tsx
RiskLevelColors (Interface)
(no doc)
src/utils/risk_levels.tsx
GraphCardProps (Interface)
(no doc)
src/templates/SavedGraphsTemplate.tsx
Route (Interface)
(no doc)
src/routes/RoutesList.tsx
Output (Interface)
(no doc)
src/api/model/output.ts

Core symbols most depended-on inside this repo

logAnalyticsEvent
called by 45
src/services/firestore/analytics/analytics.ts
useAuthState
called by 18
src/hooks/useAuthState.tsx
formatNumber
called by 8
src/utils/formatNumber.tsx
instance
called by 5
src/api/instance.ts
range
called by 4
src/components/common/pagination/usePagination.tsx
getCategoryRisk
called by 4
src/components/graph/expand_with_ai.tsx
auxIterateCategories
called by 4
src/components/graph/analysis_window/content/overview/Overview.tsx
WithAuth
called by 3
src/components/auth/WithAuth.tsx

Shape

Function 281
Interface 140
Class 16
Enum 10
Method 8

Languages

TypeScript100%

Modules by API surface

src/components/auth/AuthDialog.tsx17 symbols
src/components/graph/Graph.tsx16 symbols
src/services/auth/errors.ts12 symbols
src/components/graph/analysis_window/content/advanced/tabs/ExposureTab/ExposureView.tsx12 symbols
src/api/labels/labels.ts12 symbols
src/components/navbar/Navbar.tsx10 symbols
src/components/graph/tutorial/TutorialDialog.tsx9 symbols
src/components/graph/graph_calculations.tsx9 symbols
src/services/firestore/user/graph_saving/graph_saving.tsx8 symbols
src/services/auth/auth.services.ts8 symbols
src/components/graph/analysis_window/header/Header.tsx8 symbols
src/components/graph/analysis_window/content/overview/Overview.tsx8 symbols

For agents

$ claude mcp add WardGraph \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact