# propeller-heads/eth-price-poc-sdk architecture

> Architecture diagram of the GitHub repository propeller-heads/eth-price-poc-sdk, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-30). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/propeller-heads/eth-price-poc-sdk
- Repository: https://github.com/propeller-heads/eth-price-poc-sdk

## Overview

This retired SDK exposes two related but distinct workflows: users fetch hosted ETH market-depth data through an HTTP client, while optional local generation queries a user-run Fynd and emits block snapshots. The graph retains documented client capabilities and the measured-quote stages, but the client excerpt omits several method bodies and the snapshot assembly is only partially shown, so uncertain internal links are left out. README documents the hosted API/static fallback and local Fynd context; implementation links below rely on shown calls.

Main entry points: [`eth_price_poc/generate/core.py`](https://github.com/propeller-heads/eth-price-poc-sdk/blob/main/eth_price_poc/generate/core.py) (Snapshot collector), [`eth_price_poc/generate/run_local.py`](https://github.com/propeller-heads/eth-price-poc-sdk/blob/main/eth_price_poc/generate/run_local.py) (Local runner), [`eth_price_poc/client.py`](https://github.com/propeller-heads/eth-price-poc-sdk/blob/main/eth_price_poc/client.py) (HTTP client), [`eth_price_poc/__init__.py`](https://github.com/propeller-heads/eth-price-poc-sdk/blob/main/eth_price_poc/__init__.py) (Package exports)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_hosted["Hosted data client"]
  node_exports["Package exports<br/>[__init__.py]"]
  node_client["HTTP client<br/>[client.py]"]
  node_snapshot_queries["Snapshot queries<br/>[client.py]"]
  node_history_queries["History queries<br/>[client.py]"]
  node_status_coverage["Status and coverage<br/>[client.py]"]
  node_curves["Curve retrieval<br/>[client.py]"]
  node_route_details["Route details<br/>[client.py]"]
  node_exports_quotes["Quote export<br/>[client.py]"]
end

subgraph group_generation["Local snapshot generation"]
  node_local_runner["Local runner<br/>[run_local.py]"]
  node_pair_config["Pair configuration<br/>[config.py]"]
  node_snapshot_collector["Snapshot collector<br/>[core.py]"]
  node_snapshot_output["Snapshot output<br/>[run_local.py]"]
end

subgraph group_measurement["Quote measurement"]
  node_fynd_health["Fynd health check<br/>[core.py]"]
  node_fynd_quote["Fynd quoting<br/>[core.py]"]
  node_depth_sweep["Depth sweep<br/>[core.py]"]
  node_price_analysis["Price analysis<br/>[core.py]"]
  node_measurement_helpers["Measurement helpers<br/>[util.py]"]
end

node_consumer(("SDK user"))
node_market_site["marketprice.xyz"]
node_live_api["Live API"]
node_static_data["Static snapshots"]
node_rpc_head["Ethereum RPC"]
node_fynd["Local Fynd"]

node_consumer -->|"imports"| node_exports
node_exports -->|"exports"| node_client
node_consumer -->|"uses"| node_client
node_client -->|"requests data"| node_live_api
node_client -->|"fallback reads"| node_static_data
node_live_api -->|"served by"| node_market_site
node_static_data -->|"served by"| node_market_site
node_consumer -->|"reads latest"| node_snapshot_queries
node_consumer -->|"reads history"| node_history_queries
node_consumer -->|"checks status"| node_status_coverage
node_consumer -->|"reads curves"| node_curves
node_consumer -->|"requests detail"| node_route_details
node_consumer -->|"exports quote"| node_exports_quotes
node_consumer -->|"runs generator"| node_local_runner
node_local_runner -->|"configures"| node_pair_config
node_local_runner -->|"calls collector"| node_snapshot_collector
node_snapshot_collector -->|"reads block"| node_rpc_head
node_snapshot_collector -->|"checks health"| node_fynd_health
node_fynd_health -->|"HTTP health"| node_fynd
node_snapshot_collector -->|"runs sweep"| node_depth_sweep
node_depth_sweep -->|"requests quotes"| node_fynd_quote
node_fynd_quote -->|"HTTP quote"| node_fynd
node_snapshot_collector -->|"derives prices"| node_price_analysis
node_snapshot_collector -.->|"uses helpers"| node_measurement_helpers
node_local_runner -->|"prints snapshot"| node_snapshot_output

click node_exports "https://github.com/propeller-heads/eth-price-poc-sdk/blob/main/eth_price_poc/__init__.py"
click node_client "https://github.com/propeller-heads/eth-price-poc-sdk/blob/main/eth_price_poc/client.py"
click node_snapshot_queries "https://github.com/propeller-heads/eth-price-poc-sdk/blob/main/eth_price_poc/client.py"
click node_history_queries "https://github.com/propeller-heads/eth-price-poc-sdk/blob/main/eth_price_poc/client.py"
click node_status_coverage "https://github.com/propeller-heads/eth-price-poc-sdk/blob/main/eth_price_poc/client.py"
click node_curves "https://github.com/propeller-heads/eth-price-poc-sdk/blob/main/eth_price_poc/client.py"
click node_route_details "https://github.com/propeller-heads/eth-price-poc-sdk/blob/main/eth_price_poc/client.py"
click node_exports_quotes "https://github.com/propeller-heads/eth-price-poc-sdk/blob/main/eth_price_poc/client.py"
click node_local_runner "https://github.com/propeller-heads/eth-price-poc-sdk/blob/main/eth_price_poc/generate/run_local.py"
click node_pair_config "https://github.com/propeller-heads/eth-price-poc-sdk/blob/main/eth_price_poc/generate/config.py"
click node_snapshot_collector "https://github.com/propeller-heads/eth-price-poc-sdk/blob/main/eth_price_poc/generate/core.py"
click node_fynd_health "https://github.com/propeller-heads/eth-price-poc-sdk/blob/main/eth_price_poc/generate/core.py"
click node_fynd_quote "https://github.com/propeller-heads/eth-price-poc-sdk/blob/main/eth_price_poc/generate/core.py"
click node_depth_sweep "https://github.com/propeller-heads/eth-price-poc-sdk/blob/main/eth_price_poc/generate/core.py"
click node_price_analysis "https://github.com/propeller-heads/eth-price-poc-sdk/blob/main/eth_price_poc/generate/core.py"
click node_measurement_helpers "https://github.com/propeller-heads/eth-price-poc-sdk/blob/main/eth_price_poc/generate/util.py"
click node_snapshot_output "https://github.com/propeller-heads/eth-price-poc-sdk/blob/main/eth_price_poc/generate/run_local.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_exports,node_client,node_snapshot_queries,node_history_queries,node_status_coverage,node_curves,node_route_details,node_exports_quotes,node_consumer toneBlue
class node_local_runner,node_pair_config,node_snapshot_collector,node_snapshot_output toneAmber
class node_fynd_health,node_fynd_quote,node_depth_sweep,node_price_analysis,node_measurement_helpers,node_live_api toneMint
class node_market_site,node_static_data,node_rpc_head,node_fynd toneIndigo
```

## Components

### Hosted data client

- [Package exports](https://github.com/propeller-heads/eth-price-poc-sdk/blob/main/eth_price_poc/__init__.py): `eth_price_poc/__init__.py`
- [HTTP client](https://github.com/propeller-heads/eth-price-poc-sdk/blob/main/eth_price_poc/client.py): `eth_price_poc/client.py`
- [Snapshot queries](https://github.com/propeller-heads/eth-price-poc-sdk/blob/main/eth_price_poc/client.py): `eth_price_poc/client.py`
- [History queries](https://github.com/propeller-heads/eth-price-poc-sdk/blob/main/eth_price_poc/client.py): `eth_price_poc/client.py`
- [Status and coverage](https://github.com/propeller-heads/eth-price-poc-sdk/blob/main/eth_price_poc/client.py): `eth_price_poc/client.py`
- [Curve retrieval](https://github.com/propeller-heads/eth-price-poc-sdk/blob/main/eth_price_poc/client.py): `eth_price_poc/client.py`
- [Route details](https://github.com/propeller-heads/eth-price-poc-sdk/blob/main/eth_price_poc/client.py): `eth_price_poc/client.py`
- [Quote export](https://github.com/propeller-heads/eth-price-poc-sdk/blob/main/eth_price_poc/client.py): `eth_price_poc/client.py`

### Local snapshot generation

- [Local runner](https://github.com/propeller-heads/eth-price-poc-sdk/blob/main/eth_price_poc/generate/run_local.py): `eth_price_poc/generate/run_local.py`
- [Pair configuration](https://github.com/propeller-heads/eth-price-poc-sdk/blob/main/eth_price_poc/generate/config.py): `eth_price_poc/generate/config.py`
- [Snapshot collector](https://github.com/propeller-heads/eth-price-poc-sdk/blob/main/eth_price_poc/generate/core.py): `eth_price_poc/generate/core.py`
- [Snapshot output](https://github.com/propeller-heads/eth-price-poc-sdk/blob/main/eth_price_poc/generate/run_local.py): `eth_price_poc/generate/run_local.py`

### Quote measurement

- [Fynd health check](https://github.com/propeller-heads/eth-price-poc-sdk/blob/main/eth_price_poc/generate/core.py): `eth_price_poc/generate/core.py`
- [Fynd quoting](https://github.com/propeller-heads/eth-price-poc-sdk/blob/main/eth_price_poc/generate/core.py): `eth_price_poc/generate/core.py`
- [Depth sweep](https://github.com/propeller-heads/eth-price-poc-sdk/blob/main/eth_price_poc/generate/core.py): `eth_price_poc/generate/core.py`
- [Price analysis](https://github.com/propeller-heads/eth-price-poc-sdk/blob/main/eth_price_poc/generate/core.py): `eth_price_poc/generate/core.py`
- [Measurement helpers](https://github.com/propeller-heads/eth-price-poc-sdk/blob/main/eth_price_poc/generate/util.py): `eth_price_poc/generate/util.py`

### Other components

- **SDK user**
- **marketprice.xyz**
- **Live API**
- **Static snapshots**
- **Ethereum RPC**
- **Local Fynd**

## Connections

- SDK user → Package exports: imports (evidence: `eth_price_poc/__init__.py`)
- Package exports → HTTP client: exports (evidence: `eth_price_poc/__init__.py`)
- SDK user → HTTP client: uses (evidence: `README.md`)
- HTTP client → Live API: requests data (evidence: `eth_price_poc/client.py`)
- HTTP client → Static snapshots: fallback reads (evidence: `eth_price_poc/client.py`)
- Live API → marketprice.xyz: served by (evidence: `README.md`)
- Static snapshots → marketprice.xyz: served by (evidence: `README.md`)
- SDK user → Snapshot queries: reads latest (evidence: `README.md`)
- SDK user → History queries: reads history (evidence: `README.md`)
- SDK user → Status and coverage: checks status (evidence: `README.md`)
- SDK user → Curve retrieval: reads curves (evidence: `README.md`)
- SDK user → Route details: requests detail (evidence: `README.md`)
- SDK user → Quote export: exports quote (evidence: `README.md`)
- SDK user → Local runner: runs generator (evidence: `eth_price_poc/generate/run_local.py`)
- Local runner → Pair configuration: configures (evidence: `eth_price_poc/generate/run_local.py`)
- Local runner → Snapshot collector: calls collector (evidence: `eth_price_poc/generate/run_local.py`)
- Snapshot collector → Ethereum RPC: reads block (evidence: `eth_price_poc/generate/core.py`)
- Snapshot collector → Fynd health check: checks health (evidence: `eth_price_poc/generate/core.py`)
- Fynd health check → Local Fynd: HTTP health (evidence: `eth_price_poc/generate/core.py`)
- Snapshot collector → Depth sweep: runs sweep (evidence: `eth_price_poc/generate/core.py`)
- Depth sweep → Fynd quoting: requests quotes (evidence: `eth_price_poc/generate/core.py`)
- Fynd quoting → Local Fynd: HTTP quote (evidence: `eth_price_poc/generate/core.py`)
- Snapshot collector → Price analysis: derives prices (evidence: `eth_price_poc/generate/core.py`)
- Snapshot collector → Measurement helpers: uses helpers (evidence: `eth_price_poc/generate/__init__.py`)
- Local runner → Snapshot output: prints snapshot (evidence: `eth_price_poc/generate/run_local.py`)
