Tinab Consensus · le papier
Un réseau de confiance sans chef, 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 : on installe l’application.
A · Le protocole
A.1 Ce que c’est, ce que ce n’est pas
Tinab 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.
On reprend les slices et les quorums du Stellar Consensus Protocol (Mazières, §§3–4) : chacun choisit un petit groupe de juges, un quorum est un ensemble qui contient une slice de chacun de ses membres. On ne reprend pas les étapes « accepter » puis « confirmer » du §5. Un nœud vote authentique ou fabriqué. Le sceau que tu vois dépend de ta slice : assez de tes juges ont voté authentique → ratifié authentique. Sinon, non. On n’affiche pas « bloqué », « scindé » ou « ratifié fake ». Une clé = une voix. Elle peut publier plusieurs slices signées ; n’importe laquelle peut former un quorum — y compris une slice d’un seul nœud (seuil 1). Ça ne multiplie pas les voix. Changer de camp est refusé. Au plus 32 bulletins par affirmation.
On ne vend pas le poids d’une voix. Pas de « plus gros quorum » à acheter.
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.
Tu choisis à l’inscription : soit une copie reste sur le relais (reconnexion
par code), soit elle ne quitte pas l’appareil — alors tu notes la forme
ASCII (64 hex) ou les 24 mots BIP39, c’est le même secret de 32 octets.
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 groupe 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 Android. On télécharge le fichier
tinab.apk, on l’ouvre dans Mes fichiers.
Authentification par numéro et code, comme WhatsApp ou Signal.
Import du carnet (permission contacts). Traitement local des messages.
Navigateur. Cette vitrine, ce papier, et 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. 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 : un quorum de voix authentiques, ou pas. Le décompte du relais n’est qu’un cache pour les bots pressés.
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,
consensus.tinab.com:443 (217.154.15.108).
Fichier brut : /seeds.txt. JSON : /api/v1/seeds.
B.4 Authentification et garde de la clé
Tu donnes un numéro. Un code à six chiffres le vérifie. Tu confirmes. Le numéro est unique. Une autre clé ne peut pas le prendre. Pseudo et description se règlent après.
Deux gardes, choisies à la création. Relais : l’app envoie
aussi la privée ; un code sur le même numéro la rend. Appareil :
le relais ne reçoit que la publique. Pour rouvrir le nœud, tu présentes
les 24 mots ou la clé ASCII. L’app dérive la publique, signe un défi
cercle.recover/1, le relais ouvre la session. Perdre les
mots et l’appareil, c’est perdre le nœud.
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 · Numéro
S’ouvre, demande le numéro, vérifie le code.
-
2 · Clé
Crée ou retrouve la clé locale. L’identité protocole ne bouge pas.
-
3 · Juges
Lit le carnet, envoie les numéros au relais, reçoit les nœuds déjà inscrits. Ce sont tes contacts Tinab.
-
4 · Fil
Demande le journal filtré sur ces identifiants, affiche les objets créés ou répondu par eux.
-
5 · Sceau
Quand tu votes ou tu déposes, elle envoie un message au relais et met à jour son sceau local.
B.6 Navigation
Le fil reste ce que tes contacts ont créé ou répondu. La recherche lit toute l’archive du relais : affirmations, nœuds, clés — pas seulement le carnet.
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.
v-blocking : un ensemble de nœuds qui empêche l’autre camp de conclure (papier §5.3). Ce n’est pas un filtre vidéo.
C.2 Sûreté, telles quelles
Si tes slices n’ont pas d’intersection avec celles des autres, deux îlots peuvent ratifier chacun de leur côté. Ce n’est pas un bug : le papier le dit (figure 6). L’écran humain ne montre que « ratifié authentique » ou non — pas « scindé ».
Un nœud qui a voté ne reprend pas son vote. C’est la promesse du §5.
C.3 Pour les machines
Une machine s’inscrit avec une clé Ed25519, sans numéro, et reçoit
un jeton Bot …. Les lectures et dépôts identifiés
consomment un quota mensuel. Un vote ne se paie jamais.
Recette : /agents
et /AGENTS.md.
Référence : David Mazières, The Stellar Consensus Protocol, 25 février 2016, §§3–5.