Strava Segment Attestations

Strava Segment Attestations

-

Contexte du projet

Et si vos performances sportives pouvaient devenir des preuves cryptographiques permanentes ? Les achievements Strava restent aujourd’hui enfermés dans l’application, sans moyen de les prouver de manière vérifiable ailleurs.

Strava Segment Attestations crée un pont entre le monde du sport et le Web3, permettant aux athlètes de transformer leurs segments Strava complétés en attestations onchain permanentes sur la blockchain Linea.

Proposition de valeur

Pour les athlètes

Permanence : contrairement aux screenshots, les attestations sont immuables

Vérification : n’importe qui peut vérifier l’authenticité de vos performances

Portabilité : vos achievements suivent votre wallet, pas une application

Propriété : vous possédez vos credentials sportifs

Composabilité : utilisables dans n’importe quelle application Web3

Pour l’écosystème Web3

  • Proof of Physical Activity : une nouvelle primitive pour prouver l’engagement humain

  • Résistance Sybil : compléter des segments requiert un effort physique réel

  • Credentials réels : des achievements authentiques pour le gaming et les DAOs

Fonctionnement

Flux utilisateur

  1. Connexion Strava : OAuth 2.0 avec permissions activity:read

  2. Parcours des activités : affichage des activités récentes avec leurs segments

  3. Sélection du segment : choix du segment à attester

  4. Connexion wallet : liaison avec une adresse Ethereum

  5. Création d’attestation : signature backend + transaction onchain

Vérification backend

Le backend :

  1. Récupère l’activité via l’API Strava

  2. Vérifie que le segment fait partie de l’activité

  3. Signe les données via EIP-712

  4. Retourne la signature au frontend

Attestation onchain

La signature permet au smart contract de créer une attestation vérifiée :

// Schema: (uint256 segmentId, uint64 completionDate)
struct SegmentPayload {
    uint256 segmentId;    // ID unique Strava
    uint64 completionDate; // Timestamp de complétion
}

Architecture technique

Monorepo

Le projet utilise une architecture monorepo pnpm :

strava-segments-to-attestations/
├── packages/
│   ├── contracts/     # Smart contracts Solidity
│   ├── frontend/      # React/Vite application
│   ├── functions/     # Netlify serverless functions
│   └── shared/        # Types partagés

Smart Contract : StravaPortal

Le Portal Verax personnalisé implémente plusieurs sécurités :

  1. Vérifier que le sujet est une adresse valide

  2. Vérifier que l’appelant est le sujet

  3. Vérifier la fee

  4. Vérifier la signature backend

Signature EIP-712

Le domaine EIP-712 lie la signature au contrat et au network :

const domain = {
  name: "VerifyStrava",
  version: "1",
  chainId: 59144,
  verifyingContract: "0xe1301b12..."
};

const types = {
  Segment: [
    { name: "segmentId", type: "uint256" },
    { name: "subject", type: "address" }
  ]
};

Sécurité

Vérification des segments

Seuls les segments réellement complétés peuvent être attestés :

  • Le backend vérifie via l’API Strava officielle

  • La signature ne peut être créée que par le backend autorisé

  • Le contrat vérifie que l’appelant correspond au sujet

Protection contre le replay

  • Domain separator inclut chainId et adresse du contrat

  • Chaque signature est liée à une adresse spécifique

  • Fee minimale décourage les abus

Rate limiting

  • Limitation par IP sur les endpoints OAuth et signature

  • Tokens d’accès de courte durée

  • Refresh automatique des tokens expirés

Contrats déployés

Linea Mainnet: 0xe1301b12c2dbe0be67187432fb2519801439f552

Linea Sepolia: 0xc04228f66b1aa75a2a8f6887730f55b54281e9d9

Schéma : 0xc1708360b3df59e91dfd33f901c659c0350461e6a30392d1e3218d4847e6b20d

Cas d’usage futurs

Qualification événementielle

Les organisateurs d’événements peuvent exiger des attestations de segments spécifiques comme prérequis d’inscription.

DAOs Fitness

Gouvernance basée sur les performances sportives vérifiées.

Gamification Web3

Badges, récompenses et accès basés sur des achievements réels.

Insurance/Wellness

Preuves d’activité pour programmes de bien-être.

Stack technique

Smart Contracts

  • Solidity

  • Hardhat

  • OpenZeppelin

  • Verax Contracts

Frontend

  • React

  • Vite

  • wagmi / viem

  • TanStack Query

  • React Router

Backend

  • Netlify Functions

  • Node.js

  • TypeScript

  • Strava API

Ressources

Note
Strava Segment Attestations est le premier projet à permettre l’attestation onchain de performances sportives Strava, ouvrant la voie à une nouvelle catégorie de credentials "Proof of Physical Activity".