Cercle

Réseau de confiance · pas de leader · l’app est l’entrée

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

  1. S’ouvre, demande le numéro, vérifie le code.
  2. Crée ou retrouve la clé locale. Le protocole id ne bouge pas.
  3. 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.
  4. Demande le journal filtré sur ces identifiants.
  5. Affiche les objets créés ou répondu par eux.
  6. 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.

Le sceau se calcule ici, dans le navigateur, avec le vote fédéré du papier §5 (quorum, puis ensemble v-bloquant, puis confirmation). Un nœud ne reprend pas sa voix.

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.