Add Slidev pitch presentation

This commit is contained in:
Breno Brito
2026-02-27 00:54:29 -03:00
committed by LORDBABUINO
parent c198b35f92
commit 48de6af723
6 changed files with 5986 additions and 1 deletions
+2 -1
View File
@@ -35,7 +35,8 @@ Detects UTXOs that were created by, or whose history involves, transactions wher
```
stealth/
├── frontend/ # User interface
── backend/ # Descriptor parsing, chain data fetching, and analysis engine
── backend/ # Descriptor parsing, chain data fetching, and analysis engine
└── slides/ # Slidev pitch presentation
```
## Privacy notice
+19
View File
@@ -0,0 +1,19 @@
# Stealth Pitch Slides
Slidev presentation for the Stealth hackathon pitch.
## Run
```bash
pnpm install
pnpm run dev
```
Opens at http://localhost:3030/
## Export
```bash
pnpm run build # Static SPA to dist/
pnpm run export # PDF export
```
+14
View File
@@ -0,0 +1,14 @@
{
"name": "stealth-pitch",
"private": true,
"type": "module",
"scripts": {
"dev": "pnpm exec slidev slides.md --open",
"build": "pnpm exec slidev build slides.md",
"export": "pnpm exec slidev export slides.md"
},
"dependencies": {
"@slidev/cli": "^52.0.0",
"@slidev/theme-default": "^0.25.0"
}
}
+5692
View File
File diff suppressed because it is too large Load Diff
+175
View File
@@ -0,0 +1,175 @@
---
theme: default
title: Stealth — Bitcoin Wallet Privacy Analyzer
titleTemplate: '%s | Stealth'
class: stealth-theme
fonts:
sans: Inter
mono: JetBrains Mono
lineNumbers: false
drawings:
persist: false
transition: slide
mdc: true
---
# STEAL<span class="accent">TH</span>
### Bitcoin Wallet Privacy Analyzer
A privacy audit tool that surfaces vulnerabilities at the UTXO level.
---
# The Problem
<div class="grid grid-cols-2 gap-8">
<div>
**Bitcoin privacy is fragile**
- Chain analysis firms track wallets
- Common heuristics link addresses
- Users rarely know their exposure
- One bad UTXO can taint the rest
</div>
<div>
**Today's tools**
- Complex, require expertise
- No UTXO-level visibility
- Hard to understand risk before spending
</div>
</div>
---
# What Stealth Does
<div class="grid grid-cols-2 gap-6">
<div>
**Input**
- Paste wallet descriptor
- Supports `wpkh`, `pkh`, `sh(wpkh)`, `tr`, multisig
**Output**
- Every UTXO listed
- Privacy flaws per UTXO
- Severity badges (high / medium / low)
</div>
<div>
```bash
# One click
wpkh([xpub...]/0/*) → Analyze
```
→ Full report with actionable insights
</div>
</div>
---
# Vulnerabilities Detected
| Vulnerability | What it means |
|---------------|---------------|
| **Address Reuse** | Same address received >1 payment — links tx history, exposes balance |
| **Dust Spend** | UTXO from dust attack — when spent, links previously unconnected addresses |
| **UTXO Consolidation** | Multiple inputs merged — strong signal all belong to same wallet |
| **CIOH** | Common Input Ownership Heuristic — chain analysis firms use this to cluster addresses |
---
# How It Works
<div class="grid grid-cols-3 gap-4">
<div class="card p-4">
**1. Parse**
- Extract addresses from descriptor
- Support all common formats
</div>
<div class="card p-4">
**2. Fetch**
- On-chain history per address
- Uses Bitcoin node / API
</div>
<div class="card p-4">
**3. Analyze**
- Apply privacy heuristics
- Flag each UTXO with findings
</div>
</div>
---
# Architecture
```
stealth/
├── frontend/ # React + Vite — input, loading, report
└── backend/ # Java/Quarkus — descriptor parsing, chain data, analysis
```
- **Read-only** — no keys, no storage, no transmission of descriptors
- **Self-hostable** — point at your own node for max privacy
---
# Demo Flow
1. **Input screen** — paste descriptor, click Analyze
2. **Loading** — fetches and analyzes
3. **Report** — summary bar (total / vulnerable / clean) + UTXO cards
4. Each card: address, amount, badges, expandable details
---
# Why It Matters
- **Users** — understand exposure before consolidating or spending
- **Wallets** — integrate as pre-spend check
- **Researchers** — study privacy heuristics at scale
- **Privacy-first** — no cloud, no logs, no tracking
---
# Thank You
**STEAL<span class="accent">TH</span>**
Bitcoin Wallet Privacy Analyzer
---
# Appendix — Supported Descriptors
- `wpkh(...)` — native SegWit
- `pkh(...)` — legacy
- `sh(wpkh(...))` — nested SegWit
- `tr(...)` — Taproot
- Multisig variants
All analysis uses publicly available on-chain data.
+84
View File
@@ -0,0 +1,84 @@
/* Stealth theme overrides — matches frontend App.css */
:root {
--slidev-theme-primary: #00d4aa;
--slidev-theme-accent: #00d4aa;
--stealth-bg: #080c14;
--stealth-surface: #0f1623;
--stealth-surface-2: #162030;
--stealth-border: #1e2d45;
--stealth-accent: #00d4aa;
--stealth-danger: #ff4d6d;
--stealth-warning: #f4a261;
--stealth-safe: #2ec4b6;
--stealth-text: #e8edf5;
--stealth-text-muted: #6b7a99;
}
.slidev-layout {
background-color: var(--stealth-bg) !important;
color: var(--stealth-text) !important;
font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif !important;
}
.slidev-layout h1,
.slidev-layout h2,
.slidev-layout h3 {
color: var(--stealth-text) !important;
font-weight: 700;
letter-spacing: -0.02em;
}
.slidev-layout h1 {
font-size: 2.5rem !important;
}
.slidev-layout h1 .accent {
color: var(--stealth-accent) !important;
}
.slidev-layout p,
.slidev-layout li {
color: var(--stealth-text-muted) !important;
}
.slidev-layout a {
color: var(--stealth-accent) !important;
}
.slidev-layout code {
font-family: 'JetBrains Mono', 'Fira Code', monospace !important;
background: var(--stealth-surface) !important;
color: var(--stealth-accent) !important;
border: 1px solid var(--stealth-border) !important;
border-radius: 6px !important;
}
.slidev-layout .badge-danger {
background: rgba(255, 77, 109, 0.15);
color: var(--stealth-danger);
border: 1px solid rgba(255, 77, 109, 0.3);
}
.slidev-layout .badge-warning {
background: rgba(244, 162, 97, 0.15);
color: var(--stealth-warning);
border: 1px solid rgba(244, 162, 97, 0.3);
}
.slidev-layout .badge-safe {
background: rgba(46, 196, 182, 0.15);
color: var(--stealth-safe);
border: 1px solid rgba(46, 196, 182, 0.3);
}
.slidev-layout .card {
background: var(--stealth-surface) !important;
border: 1px solid var(--stealth-border) !important;
border-radius: 12px !important;
}
.slidev-layout .btn-primary {
background: var(--stealth-accent) !important;
color: #080c14 !important;
font-weight: 700 !important;
}