Pourquoi Nous Avons Construit Notre Propre Algorithme de Classement

La curation des réseaux sociaux est l'algorithme le plus important dont personne ne parle. Voici pourquoi Lotusia a refusé d'accepter le statu quo, et ce que n…

·

Pourquoi Nous Avons Construit Notre Propre Algorithme de Classement hero image

Chaque plateforme de réseau social décide ce que vous voyez. L'algorithme optimise pour l'engagement, et l'engagement corrèle le plus fiablement avec l'indignation et la réponse émotionnelle. Le résultat est un fil d'actualité qui reflète ce qui vous fait défiler, pas ce que la communauté valorise.

Lotusia adopte une approche différente. Le contenu est curé par le sentiment pondéré par le burn — vous brûlez du Lotus pour voter, et les burns agrégés déterminent ce qui monte et ce qui descend. La formule de classement on-chain est transparente : burns positifs moins burns négatifs. N'importe qui peut l'auditer. Personne ne la possède.

Mais la transparence seule ne suffit pas. Un acteur fortuné peut submerger le signal organique. Une campagne coordonnée peut détourner le fil d'actualité. Dans un système sans permission où n'importe qui peut créer un nombre illimité de portefeuilles, la plupart des techniques anti-manipulation conventionnelles échouent. Nous avons donc construit une couche de classement du fil entre les données on-chain et ce que vous voyez — cinq algorithmes complémentaires qui préservent la curation honnête tout en rendant la manipulation progressivement plus coûteuse.

La Contrainte Fondamentale

Lotusia opère dans un environnement sans permission. N'importe qui peut créer un portefeuille. Il n'y a pas de vérification d'identité, pas de preuve d'humanité, pas de graphe social de confiance. Cela impose une contrainte non négociable sur l'algorithme de classement :

L'algorithme de classement doit prendre en compte UNIQUEMENT les montants de burn agrégés. Le nombre de portefeuilles ne doit pas affecter directement le classement du contenu.

Cela élimine des familles entières de mécanismes anti-baleines. Les transformations sous-linéaires par votant comme le vote quadratique incitent au fractionnement de portefeuilles — une baleine brûlant 100 000 sats répartis sur 100 portefeuilles obtient dix fois plus d'influence qu'en brûlant depuis un seul portefeuille. Les bonus de diversité de votants récompensent directement la création de Sybil. Les pénalités de concentration par contenu sont trivialement contournées en fractionnant les portefeuilles.

La solution est la retenue. Chaque fonction de classement opère exclusivement sur les totaux de burn agrégés : le total de Lotus brûlé positivement et le total brûlé négativement. Répartir le même total de burn sur n'importe quel nombre de portefeuilles produit le même score. C'est le principe de neutralité Sybil. Le compromis est honnête — l'algorithme ne peut pas distinguer entre mille votants authentiques et une baleine avec mille portefeuilles — mais il ne peut pas non plus être manipulé par la création de portefeuilles. Dans un système ouvert aux Sybil, c'est le bon compromis.

La Base On-Chain

La formule de classement on-chain est délibérément simple :

ranking = satsPositive - satsNegative

Elle est linéaire, transparente et démonstrative de la proposition de valeur fondamentale. Mais elle est aussi dominée par les baleines, fragile en phase d'amorçage, temporellement plate et vulnérable aux agendas. La couche de classement du fil d'actualité corrige ces limitations sans modifier la formule on-chain. Les cinq algorithmes opèrent hors chaîne, sur des données agrégées, et sont Sybil-neutres par construction.

R62 : Amortissement Logarithmique Agrégé

La vulnérabilité la plus évidente du classement linéaire est que les dépenses et l'influence sont parfaitement proportionnelles. Une baleine brûlant 100 000 sats a exactement 100 fois l'influence de quelqu'un brûlant 1 000 sats.

R62 applique un amortissement logarithmique aux burns positifs et négatifs agrégés indépendamment :

feedScore = log₂(1 + B_pos / BASE) - log₂(1 + B_neg / BASE)

B_pos et B_neg sont les burns positifs et négatifs totaux sur un élément de contenu, et BASE est une constante ajustable fixée à 1 000 sats. Le logarithme crée des rendements décroissants sur les dépenses :

Total Burn Score Linéaire Score Amorti Gain Marginal par 1K
1 000 sats 1 000 1,00 1,00
10 000 sats 10 000 3,46 0,27
100 000 sats 100 000 6,66 0,036
1 000 000 sats 1 000 000 10,0 0,0037

Une baleine brûlant 100 000 sats obtient un score de fil de 6,66 — significatif, mais pas 100 fois l'influence d'un burn de 1 000 sats. Pour doubler son influence de 6,66 à 13,32, il faudrait brûler plus de 10 millions de sats. Le logarithme n'empêche pas l'influence des baleines ; il rend chaque unité supplémentaire d'influence exponentiellement plus coûteuse.

Appliquer l'amortissement indépendamment aux burns positifs et négatifs empêche qu'un gros burn positif soit entièrement annulé par un burn négatif proportionnellement plus petit au niveau logarithmique. Le score net reflète le sentiment authentique de la communauté, pas simplement qui a dépensé plus.

C'est la première et la plus fondamentale couche d'amortissement. Tous les algorithmes suivants s'appuient sur ce score compressé.

R63 : Plafonnement par Z-Score Inter-Contenu

Même avec l'amortissement logarithmique, une baleine suffisamment déterminée peut produire un score aberrant qui domine le fil. R63 corrige cela en normalisant les scores par rapport à la distribution de tout le contenu.

L'algorithme calcule la moyenne et l'écart-type de tous les scores de fil, puis convertit chaque score en z-score :

μ = mean(scores)
σ = sqrt(variance(scores))
zScore = (score - μ) / σ
cappedScore = min(zScore, Z_MAX)

Le plafond z-score est fixé par défaut à Z_MAX = 3,0. Cela signifie qu'aucun élément de contenu ne peut obtenir un score supérieur à trois écarts-types au-dessus de la moyenne, quel que soit le montant absolu de burn.

Considérez un fil de 100 éléments avec des scores entre 1,0 et 5,0 (moyenne 3,0, écart-type 1,0). Un élément dominé par une baleine a un score de 15,0. Sans plafonnement, il domine le fil à 5 fois la moyenne. Avec le plafonnement z-score :

zScore = (15,0 - 3,0) / 1,0 = 12,0 → plafonné à 3,0

L'élément de la baleine reste en tête du classement, mais son avantage sur l'élément organique le mieux classé (z-score 2,0) est compressé de 3× à 1,5×. Aucun contenu unique ne peut monopoliser le fil d'actualité.

La normalisation ne s'active que lorsqu'il y a au moins dix éléments de contenu notés, afin de ne pas produire d'artefacts pendant la phase d'amorçage quand le fil est clairsemé.

R64 : Accumulation Temporelle de Conviction

La formule de classement on-chain traite un burn datant de trente jours de la même manière qu'un burn datant de trente secondes. R64 introduit une décroissance exponentielle basée sur l'âge de l'activité de vote, s'inspirant du conviction voting développé par le Commons Stack et déployé par 1Hive Gardens.

Les burns sont regroupés par périodes horaires. Le score amorti net de chaque période (issu de R62) est pondéré par un facteur de décroissance basé sur son âge :

decay = (1/2)^(ageHours / halfLife)
convictionScore = Σ [periodScore_t × decay(age_t)]

La demi-vie par défaut est de 72 heures, correspondant au cycle de vie naturel de la pertinence du contenu sur les réseaux sociaux :

Âge Facteur de Décroissance Contribution
Aujourd'hui 1,00 100 %
Il y a 3 jours 0,50 50 %
Il y a 6 jours 0,25 25 %
Il y a 9 jours 0,125 12,5 %

Cela offre une résistance significative aux attaques éclair. Une baleine déversant 100 000 sats en un seul bloc obtient un boost de score immédiat, mais ce boost décroît de moitié tous les trois jours. Pendant ce temps, les burns organiques ajoutant des montants plus petits chaque heure accumulent de la conviction qui persiste.

Dans un exemple concret : une baleine brûle 100 000 sats à t=0 tandis que les burns organiques ajoutent 1 000 sats par heure. Avec une demi-vie de 72 heures et BASE=1 000 :

Temps Baleine (décroissante) Organique (accumulé) % Baleine
t=0 6,66 0 100 %
t=24h 5,30 3,28 62 %
t=48h 4,22 5,37 44 %
t=72h 3,36 6,72 33 %
t=96h 2,67 7,59 26 %

Le signal organique dépasse la baleine en 48 heures. Au cinquième jour, l'influence de la baleine est réduite à 21 pour cent du total.

L'ancre de décroissance est déterminée par l'appelant. Pour le fil d'actualité curé, l'horodatage du premier vote est utilisé — cela empêche de simples re-burns de ressusciter d'ancien contenu. Pour les fils tendance et récents, l'horodatage du dernier vote est utilisé afin que le contenu ré-émergent avec une activité nouvelle authentique remonte correctement.

R65 : Intégration du Signal Bidirectionnel

RANK supporte les burns positifs et négatifs. La relation entre ces deux signaux agrégés fournit des informations sur la qualité du contenu que la pure magnitude ne peut capturer. R65 extrait trois métriques de ces données bidirectionnelles.

Le Ratio de Sentiment mesure quelle fraction des burns totaux est positive :

sentimentRatio = B_pos / (B_pos + B_neg)

Un ratio de 1,0 signifie unanimement positif. Un ratio de 0,5 signifie également contesté. Un ratio de 0,0 signifie unanimement négatif.

Le Score de Controverse mesure à quel point les burns sont équitablement contestés :

controversyScore = min(B_pos, B_neg) / max(B_pos, B_neg)

Un score proche de 1,0 signifie des burns positifs et négatifs quasi égaux. Un score proche de 0,0 signifie qu'une direction domine. Quand le score de controverse dépasse le seuil configurable de 0,4, le contenu est signalé comme controversé pour le traitement dans l'interface.

L'Engagement Total applique un amortissement logarithmique à la somme de tous les burns :

totalEngagement = log₂(1 + (B_pos + B_neg) / BASE)

Cela sert de départage : parmi les éléments avec des scores primaires similaires, celui qui a attiré plus d'attention totale de la communauté se classe plus haut.

Ces trois métriques créent une compréhension bidimensionnelle du contenu. Un engagement élevé avec un sentiment positif indique un contenu véritablement populaire. Un engagement élevé avec un sentiment contesté indique un contenu controversé qui mérite examen. Un faible engagement avec un sentiment positif indique un contenu de niche mais apprécié. Un faible engagement avec un sentiment négatif indique un contenu que la communauté a jugé indigne d'attention.

Le score de controverse alimente également le fil de tri par controverse, qui utilise une formule composite inspirée de l'approche magnitude-fois-équilibre de Reddit :

controversySortScore = controversyScore × totalEngagement

Cela récompense les publications qui ont attiré un signal coûteux significatif des deux côtés, proportionnellement à l'équilibre de la contestation des burns. Les publications en dessous du seuil minimum d'engagement sont exclues comme triviales.

R66 : Amortissement des Pics de Vélocité de Burn

Le dernier algorithme cible spécifiquement les attaques éclair. Il analyse le taux auquel les burns s'accumulent sur un élément de contenu, pas seulement le total. Une baleine déversant 100 000 sats en un seul bloc produit un pic de vélocité marqué. L'engagement organique produit une vélocité graduelle et soutenue.

R66 calcule la vélocité de burn sur une fenêtre de détection glissante et la compare à la vélocité médiane mobile sur tout le contenu. Quand le ratio de vélocité dépasse un seuil configurable, une fonction d'amortissement sigmoïde entre en jeu :

velocityRatio = currentWindowBurns / rollingMedianBurns
dampening = 1 / (1 + e^(k × (velocityRatio - threshold)))

Les paramètres par défaut sont un seuil de vélocité de 10× la vélocité médiane et une pente sigmoïde de 0,5. Le contenu recevant des burns à un rythme normal n'est pas affecté (amortissement ≈ 1,0). Le contenu recevant des burns à 100× le taux médian reçoit un facteur de pénalité d'environ 0,011 — presque entièrement amorti.

La courbe sigmoïde est essentielle. Elle évite les seuils durs qui pourraient être contournés en restant juste en dessous d'un seuil. Au lieu de cela, elle fournit une transition progressive de l'absence d'amortissement vers un amortissement intense.

C'est Sybil-neutre par conception. La vélocité est calculée à partir des burns agrégés par fenêtre temporelle, pas par portefeuille. Répartir un burn de 100 000 sats sur 100 portefeuilles dans la même fenêtre temporelle produit le même pic de vélocité et le même amortissement.

Le Score Composite

Ces cinq algorithmes se combinent en un score composite unique pour le fil d'actualité. Le processus se déroule en séquence :

  1. R62 calcule le score de base amorti logarithmiquement à partir des burns agrégés
  2. R64 applique la décroissance temporelle basée sur l'âge de l'activité de vote
  3. R66 applique l'amortissement de vélocité si l'accumulation de burns est suspecte
  4. R65 calcule les signaux bidirectionnels pour le tri secondaire et les indicateurs de controverse
  5. R63 applique le plafonnement z-score au niveau de l'affichage du fil

Le résultat :

feedScore = [log₂(1 + B_pos/BASE) - log₂(1 + B_neg/BASE)]
            × decay(ageHours / 72h)
            × velocityDampening(velocityRatio)

Avec le plafonnement z-score appliqué à la distribution finale. Une baleine doit brûler exponentiellement plus pour chaque unité marginale d'influence de classement, maintenir cette dépense dans le temps, rivaliser avec la distribution entière du contenu, et éviter les pics de vélocité. L'économie passe de brûler dix fois plus pour obtenir dix fois l'influence, à quelque chose de plus proche de brûler 100 fois plus pour obtenir trois fois l'influence qui décroît en trois jours.

Pourquoi C'était Nécessaire

Les problèmes que ces algorithmes résolvent sont des modes de défaillance documentés de chaque grande plateforme de contenu.

Les chambres d'écho se forment par la conformité sociale et les cascades informationnelles. Les expériences de conformité d'Asch ont démontré qu'environ 37 pour cent des personnes se conforment à une réponse majoritaire manifestement fausse. Les compteurs de votes visibles créent la même pression sur les réseaux sociaux. Lotusia corrige cela avec Vote-to-Reveal : les compteurs de votes sont cachés à tout utilisateur qui n'a pas encore voté. Vous devez exprimer votre propre vote avant de voir comment les autres ont voté. C'est permanent et par utilisateur, pas une période de masquage temporaire qui expire. La recherche de Muchnik et al. a mesuré un effet de troupeau positif de 25 pour cent à partir d'un seul vote positif visible. Vote-to-Reveal élimine entièrement ce vecteur.

La manipulation coordonnée est le problème de l'attaquant motivé par un agenda. Les opérateurs politiques, les équipes de relations publiques d'entreprise et les groupes idéologiques sont prêts à dépenser de l'argent pour orienter le sentiment — le burn est l'arme, et le ratio de perte de 10:1 qui tue le farming économique leur est indifférent. Les algorithmes de classement du fil rendent cela coûteux, et ils sont complétés par une détection de manipulation coordonnée qui surveille les clusters de vote temporels, les réseaux de similarité comportementale et les anomalies démographiques des votants. Quand une coordination est détectée, la promotion algorithmique dans le fil du contenu affecté est réduite. Les données on-chain restent permanentes et accessibles. Seule l'amplification est affectée.

La domination des baleines est le problème de la phase d'amorçage. Pendant la croissance initiale du réseau, un seul gros burn peut dicter l'ensemble du fil. L'amortissement logarithmique et la décroissance temporelle résolvent cela en compressant les ratios d'influence et en s'assurant que les attaques éclair décroissent tandis que le signal organique soutenu s'accumule.

Le mode de défaillance Steemit est ce qui se passe quand on confond le volume de participation avec le jugement de qualité. Steemit utilisait une seule métrique — le Steem Power — pour l'influence de vote, les récompenses de contenu et le pouvoir de gouvernance. Le résultat fut le trading de votes, la domination des baleines, l'effondrement de la qualité et une baisse de 90 pour cent des utilisateurs actifs. Lotusia sépare les Points d'Engagement de la réputation RANK. Un utilisateur peut être très actif mais de faible qualité, ou sélectivement actif mais de haute qualité. Les deux dimensions sont visibles. Aucune ne se confond avec l'autre.

Le Fondement Philosophique

Ces algorithmes sont des expressions de l'éthique Lotus. Le principe fondateur de Lotus est la réciprocité généralisée — donner du Lotus en gage d'appréciation, faire confiance que la réciprocité suivra, et laisser le token circuler plutôt que s'accumuler. L'original givelotus.org décrivait Lotus comme « inestimable — un gage d'appréciation — ayant une valeur sentimentale ».

Les algorithmes de classement du fil protègent ce flux contre le détournement. Ils garantissent que le jugement collectif de la communauté, exprimé à travers un sentiment pondéré par le burn soutenu dans le temps, reste le signal dominant. Ils n'ont pas besoin d'identifier les attaquants ni de vérifier les identités. Ils rendent simplement l'économie de la manipulation défavorable.

C'est la réponse honnête au problème Sybil : on ne peut pas éliminer l'influence des baleines dans un système sans permission. Un acteur suffisamment fortuné peut toujours dominer. Mais on peut rendre cela progressivement plus coûteux, jusqu'à ce que le rapport coût-bénéfice devienne défavorable. Et même alors, la décroissance temporelle assure que leur influence s'estompe.

Et Ensuite

Les algorithmes de classement du fil sont implémentés et opérationnels dans le service rank-backend-ts. Ils calculent des scores composites pour chaque publication dans le fil unifié, en s'intégrant avec Vote-to-Reveal, l'indicateur de controverse et la détection de manipulation coordonnée.

Des systèmes complémentaires continuent de se développer. Le système de parrainage fournit un onboarding résistant aux Sybil via la confiance sociale plutôt que la preuve de travail. Le système de Points d'Engagement récompense la participation soutenue sur de multiples dimensions — votes, parrainages, commentaires, burns, séries et ancienneté du compte. Le suivi de la concentration des votants suit l'indice de Herfindahl-Hirschman pour détecter quand le pouvoir de vote devient dangereusement consolidé.

La Tortue Lotusienne avance lentement, mais délibérément. Nous avons construit des algorithmes de classement du fil qui rendent la manipulation coûteuse et la curation honnête gratifiante. Non pas parce que nous pouvons éliminer toute forme de manipulation, mais parce que nous pouvons la rendre progressivement non rentable. Les mathématiques font le gros du travail. La communauté fournit le signal. Et le fil reflète ce que les gens valorisent authentiquement, pas ce que quelqu'un peut se permettre de promouvoir.

Explorez les profils classés sur les Profils Sociaux Lotusia. Apprenez-en plus sur les fondateurs de Lotusia.