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
-
Connexion Strava : OAuth 2.0 avec permissions
activity:read -
Parcours des activités : affichage des activités récentes avec leurs segments
-
Sélection du segment : choix du segment à attester
-
Connexion wallet : liaison avec une adresse Ethereum
-
Création d’attestation : signature backend + transaction onchain
Vérification backend
Le backend :
-
Récupère l’activité via l’API Strava
-
Vérifie que le segment fait partie de l’activité
-
Signe les données via EIP-712
-
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 :
-
Vérifier que le sujet est une adresse valide
-
Vérifier que l’appelant est le sujet
-
Vérifier la fee
-
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". |


