Cercle · brouillon public · HTML, pas PDF
Un réseau de confiance sans leader, pour dire d’un objet s’il est authentique ou fabriqué
Deux couches, volontairement séparées : le protocole (comment on s’accorde) et le client (comment un humain y entre). Le site n’inscrit personne.
A · Le protocole
A.1 Ce que c’est, ce que ce n’est pas
Cercle atteste des objets : une phrase, une photo, un document, une vidéo. On vote authentique ou fabriqué / IA. Ce n’est pas un détecteur automatique. Ce n’est pas une chaîne de blocs. Le nom du domaine, on le sort rarement : this is not another blockchain.
Le modèle de vote est celui du Stellar Consensus Protocol, seulement les paragraphes 3 à 5 de Mazières (février 2016) : quorums fédérés, vote, acceptation, confirmation. Pas de nomination, pas de protocole de ballot, pas de leader.
On ne vend pas le poids d’une voix. On peut vendre plus tard un relais, des SMS, une API d’organisation. Pas un « plus gros quorum ».
A.2 Deux identités, pas une
App. Le numéro de téléphone, unique, normalisé E.164. C’est comme Signal : tu prouves le numéro, tu es cette personne dans l’annuaire de l’application. Le carnet du téléphone devient ta liste de contacts.
Protocole. Une paire Ed25519. Le nœud est
la clé publique (papier §3.1). Les messages sont signés par la clé privée,
qui ne quitte pas l’appareil. L’empreinte courte k_ plus
douze hexadécimaux n’est qu’un surnom d’affichage. Le numéro n’entre
jamais dans un quorum.
Profil. Un pseudo et une description. Ce ne sont pas des identifiants. Deux personnes peuvent s’appeler Léa.
A.3 La slice typique fait quatre nœuds
Un quorum slice par défaut, c’est toi plus trois autres — quatre nœuds, seuil 3. Comme le premier cercle de la démo (Le Sceau, Forensic, Nord, Chambre). Ce n’est pas « les trois quarts de tout ton carnet » : si tu as trente contacts, on n’exige pas vingt-trois voix.
Les contacts et les bots d’exemple remplissent ces trois places. Tu peux en retirer d’un geste, ou en ajouter en naviguant (comme un abonnement). Les suivis explicites restent même au-delà de quatre ; le seuil reste 3 dès que la slice a au moins quatre membres.
Le fil montre ce que ces gens ont créé, ou à quoi ils ont répondu. Un compte tout neuf, sans contacts inscrits, a un fil vide. C’est voulu, comme une messagerie.
Exclure quelqu’un du carnet reste possible — un numéro dans le téléphone n’est pas forcément quelqu’un dont tu acceptes le jugement. Cette liste est volontairement un peu à l’écart. Ce n’est pas l’écran d’accueil.
Hors carnet. Tu peux parcourir le réseau et ajouter
un nœud par son pseudo ou sa clé publique
(l’identifiant k_…). Un labo, une rédaction, un bot :
ils n’ont pas besoin d’être dans tes contacts téléphoniques.
B · Le client
B.1 Qui parle par où
Humains. Application native (APK, puis magasin). Authentification par numéro et code, comme WhatsApp ou Signal. Import du carnet (permission contacts). Traitement local des messages.
Navigateur. Vitrine (cette page) et, plus tard, un miroir jumelé par QR depuis l’app déjà ouverte. Pas de formulaire d’inscription sur le site. Le miroir ne lit pas le carnet : le téléphone lui envoie la session.
Bots et organisations. Le relais HTTP et, plus tard, le protocole lui-même. Une clé, pas forcément un numéro. Un bot n’apparaît dans un fil humain que si un contact a créé ou répondu à son objet.
B.2 Le relais est une archive, pas un juge
Le serveur enregistre tous les messages : nœuds, objets, votes, slices. L’app interroge ce qui la concerne — d’abord les auteurs de son carnet et leurs réponses — et recalcule le sceau chez elle (vote, acceptation par quorum ou ensemble v-bloquant, confirmation). Le décompte du relais n’est qu’un cache pour les bots pressés. La source de vérité est le journal plus le papier §5.
Un objet média n’est pas une URL qu’on peut éditer. C’est un SHA-256 ou un CID IPFS. Un lien Google Docs est refusé.
B.3 Les seeds, comme Bitcoin
Pour trouver le réseau, un client commence par une courte liste
d’adresses de relais qui connaissent les nœuds.
Ce n’est pas la liste de tous les téléphones. C’est la liste des
archives. Au début il n’y en a qu’une : la nôtre,
tinab.com:443 (217.154.15.108).
Fichier brut : /seeds.txt. JSON : /api/v1/seeds.
B.4 Authentification
Tu donnes un numéro. Un code à six chiffres arrive par SMS (tant que le SMS n’est pas branché, le relais de démo peut encore montrer le code — ce n’est pas le régime visé). Tu confirmes. Le numéro est unique. Une autre clé ne peut pas le prendre. Pseudo et description se règlent après.
Le navigateur ne refait pas ce chemin. Il montre un jeton / QR. L’app le confirme. C’est un miroir, pas un deuxième compte.
B.5 Ce que fait l’app, concrètement
- S’ouvre, demande le numéro, vérifie le code.
- Crée ou retrouve la clé locale. Le protocole id ne bouge pas.
- Lit le carnet, envoie les numéros (plus tard : une intersection plus discrète) au relais, reçoit les nœuds déjà inscrits. Ce sont tes contacts Cercle.
- Demande le journal filtré sur ces identifiants.
- Affiche les objets créés ou répondu par eux.
- Quand tu votes ou tu déposes, elle envoie un message au relais et met à jour son sceau local.
B.6 Navigation
On clique une affirmation pour voir l’état et qui a voté quoi.
On clique un nœud pour voir ses bulletins. Un vote ouvre le
message signé cercle.vote/1 : nœud = clé publique,
objet = SHA-256 de l’affirmation ou du fichier, q = 𝐐(𝑣)
(papier §5.1), signature Ed25519. Le pseudo, la description et l’id
interne du claim sont un hint hors signature — indicatif,
pas du protocole. Ajouter quelqu’un à sa slice se fait comme un
abonnement.
C · Cas d’école et limites
C.1 Cinq cas d’école
Les mêmes situations que sur le premier fil de démonstration. Les noms sont ceux du réseau d’exemple : la rédaction Le Sceau, l’Atelier Forensic, le Collectif Nord, la Chambre d’archives, Iris Benali, Clara Voss, Malik Renard, Léa Horton, Noura K., Paul M., et les deux îlots Est / Ouest. Tu peux rejouer un cas, vider les voix, ou voter à la place d’un nœud — sans t’inscrire. Rien n’est envoyé au relais.
C.2 Sûreté, telles quelles
Si tes slices n’ont pas d’intersection avec celles des autres,
le réseau peut se scinder. Ce n’est pas un bug du logiciel : le
papier le dit (figure 6). L’outil le signale. Il ne prétend pas
réparer un Q cassé.
Un nœud qui a voté ne reprend pas son vote. C’est la promesse du §5.
C.3 Ce qui n’est pas encore là
- L’APK signée sur le Play Store (le socle est dans
android/). - L’envoi SMS réel (le flux est là, le fournisseur manque).
- Le QR de miroir dessiné ; le jeton de jumelage existe déjà.
- La signature Ed25519 est en place ; le relais vérifie, le hint n’est pas signé.
- D’autres relais que le nôtre.
C.4 Pour les bots
Catalogue : /api/v1/.
Santé : /api/v1/health.
Journal : GET /api/v1/events?since=&authors=.
Annuaire par numéros : POST /api/v1/directory
(remplit la slice : tout le carnet, sauf exclusions).
Recherche : GET /api/v1/search?q= (pseudo ou clé).
Confiance hors carnet / exclusion : POST /api/v1/slice/include,
/slice/exclude.
Inscription machine : POST /api/v1/register (clé +, pour un humain, numéro).
Pas de cookie web. Un bearer.
Référence : David Mazières, The Stellar Consensus Protocol,
25 février 2016, §§3–5. Code : dépôt Tinab, module scp et
cercle.client.