Perché Abbiamo Costruito il Nostro Algoritmo di Ranking

La curation dei social media è l'algoritmo più importante di cui nessuno parla. Ecco perché Lotusia ha rifiutato di accettare lo status quo, e cosa abbiamo cos…

·

Perché Abbiamo Costruito il Nostro Algoritmo di Ranking hero image

Ogni piattaforma di social media decide cosa vedete. L'algoritmo ottimizza per l'engagement, e l'engagement correla più affidabilmente con l'indignazione e la risposta emotiva. Il risultato è un feed che riflette ciò che vi tiene a scorrere, non ciò che la comunità valorizza.

Lotusia adotta un approccio diverso. I contenuti vengono curati tramite sentiment ponderato dal burn — bruciate Lotus per votare, e i burn aggregati determinano cosa sale e cosa scende. La formula di ranking on-chain è trasparente: burn positivi meno burn negativi. Chiunque può verificarla. Nessuno la possiede.

Ma la trasparenza da sola non è sufficiente. Un attore facoltoso può sopraffare il segnale organico. Una campagna coordinata può dirottare il feed. In un sistema permissionless dove chiunque può creare wallet illimitati, la maggior parte delle tecniche anti-manipolazione convenzionali fallisce. Perciò abbiamo costruito un livello di ranking del feed tra i dati on-chain e ciò che vedete — cinque algoritmi complementari che preservano una curation onesta rendendo la manipolazione progressivamente più costosa.

Il Vincolo Fondamentale

Lotusia opera in un ambiente permissionless. Chiunque può creare un wallet. Non c'è verifica dell'identità, nessuna prova di umanità, nessun grafo sociale di fiducia. Questo impone un vincolo non negoziabile all'algoritmo di ranking:

L'algoritmo di ranking deve considerare SOLO gli importi di burn aggregati. Il numero di wallet non deve influenzare direttamente il ranking dei contenuti.

Questo elimina intere famiglie di meccanismi anti-whale. Le trasformazioni sub-lineari per votante come il voto quadratico incentivano la suddivisione dei wallet — una whale che brucia 100.000 sat su 100 wallet ottiene dieci volte più influenza rispetto a bruciare da un solo wallet. I bonus per diversità dei votanti premiano direttamente la creazione di Sybil. Le penalità per concentrazione per contenuto sono banalmente aggirabili suddividendo i wallet.

La soluzione è la moderazione. Ogni funzione di ranking opera esclusivamente sui totali aggregati di burn: il totale di Lotus bruciato in positivo e il totale bruciato in negativo. Suddividere lo stesso totale di burn su qualsiasi numero di wallet produce lo stesso punteggio. Questo è il principio di neutralità Sybil. Il compromesso è onesto — l'algoritmo non può distinguere tra mille votanti genuini e una whale con mille wallet — ma non può nemmeno essere manipolato tramite la creazione di wallet. In un sistema aperto alle Sybil, questo è il compromesso giusto.

La Base On-Chain

La formula di ranking on-chain è deliberatamente semplice:

ranking = satsPositive - satsNegative

È lineare, trasparente e dimostrativa della proposta di valore fondamentale. Ma è anche dominata dalle whale, fragile nella fase di bootstrap, temporalmente piatta e vulnerabile alle agende. Il livello di ranking del feed affronta queste limitazioni senza modificare la formula on-chain. Tutti e cinque gli algoritmi operano off-chain, su dati aggregati, e sono Sybil-neutrali per costruzione.

R62: Smorzamento Logaritmico Aggregato

La vulnerabilità più ovvia del ranking lineare è che spesa e influenza sono perfettamente proporzionali. Una whale che brucia 100.000 sat ha esattamente 100 volte l'influenza di qualcuno che brucia 1.000 sat.

R62 applica uno smorzamento logaritmico ai burn positivi e negativi aggregati indipendentemente:

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

Dove B_pos e B_neg sono i burn positivi e negativi totali su un contenuto, e BASE è una costante regolabile impostata a 1.000 sat. Il logaritmo crea rendimenti decrescenti sulla spesa:

Total Burn Linear Score Dampened Score Marginal Gain per 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

Una whale che brucia 100.000 sat ottiene un punteggio del feed di 6,66 — significativo, ma non 100 volte l'influenza di un burn da 1.000 sat. Per raddoppiare la propria influenza da 6,66 a 13,32, dovrebbe bruciare oltre 10 milioni di sat. Il logaritmo non impedisce l'influenza delle whale; rende ogni unità aggiuntiva di influenza esponenzialmente più costosa.

Applicare lo smorzamento indipendentemente ai burn positivi e negativi impedisce che un grande burn positivo venga completamente annullato da un burn negativo proporzionalmente più piccolo a livello logaritmico. Il punteggio netto riflette il sentiment genuino della comunità, non solo chi ha speso di più.

Questo è il primo e più fondamentale livello di smorzamento. Tutti gli algoritmi successivi si basano su questo punteggio compresso.

R63: Capping Z-Score Cross-Contenuto

Anche con lo smorzamento logaritmico, una whale sufficientemente determinata può produrre un punteggio anomalo che domina il feed. R63 affronta questo problema normalizzando i punteggi rispetto alla distribuzione di tutti i contenuti.

L'algoritmo calcola la media e la deviazione standard di tutti i punteggi del feed, poi converte ogni punteggio in un z-score:

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

Il cap dello z-score è impostato di default a Z_MAX = 3.0. Questo significa che nessun contenuto può ottenere un punteggio superiore a tre deviazioni standard sopra la media, indipendentemente dall'importo assoluto di burn.

Considerate un feed di 100 elementi con punteggi tra 1,0 e 5,0 (media 3,0, deviazione standard 1,0). Un elemento dominato da una whale ha punteggio 15,0. Senza capping, domina il feed con 5 volte la media. Con il capping dello z-score:

zScore = (15.0 - 3.0) / 1.0 = 12.0 → capped at 3.0

L'elemento della whale si classifica comunque primo, ma il suo vantaggio sull'elemento organico migliore (z-score 2,0) è compresso da 3× a 1,5×. Nessun singolo contenuto può monopolizzare il feed.

La normalizzazione si attiva solo quando ci sono almeno dieci contenuti con punteggio, assicurando di non produrre artefatti durante la fase di bootstrap quando il feed è scarso.

R64: Accumulo Temporale della Convinzione

La formula di ranking on-chain tratta un burn di trenta giorni fa in modo identico a un burn di trenta secondi fa. R64 introduce un decadimento esponenziale basato sull'età dell'attività di voto, ispirandosi al conviction voting sviluppato dal Commons Stack e deployato da 1Hive Gardens.

I burn vengono raggruppati in periodi orari. Il punteggio netto smorzato di ogni periodo (da R62) viene ponderato con un fattore di decadimento basato sulla sua età:

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

L'emivita predefinita è di 72 ore, corrispondente al ciclo naturale di rilevanza dei contenuti sui social media:

Age Decay Factor Contribution
Today 1.00 100%
3 days ago 0.50 50%
6 days ago 0.25 25%
9 days ago 0.125 12.5%

Questo fornisce una resistenza significativa agli attacchi flash. Una whale che scarica 100.000 sat in un singolo blocco ottiene un aumento immediato del punteggio, ma quell'aumento decade della metà ogni tre giorni. Nel frattempo, burn organici che aggiungono importi più piccoli ogni ora accumulano convinzione che persiste.

In un esempio pratico: una whale brucia 100.000 sat a t=0 mentre burn organici aggiungono 1.000 sat all'ora. Con un'emivita di 72 ore e BASE=1.000:

Time Whale (decayed) Organic (accumulated) Whale %
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%

Il segnale organico supera la whale entro 48 ore. Entro il quinto giorno, l'influenza della whale è ridotta al 21 percento del totale.

L'ancora del decadimento è determinata dal chiamante. Per il feed curato, si usa il timestamp del primo voto — questo impedisce che semplici ri-burn resuscitino vecchi contenuti. Per i feed di tendenza e recenti, si usa il timestamp dell'ultimo voto affinché i contenuti che riacquistano attività genuina emergano correttamente.

R65: Integrazione del Segnale Bidirezionale

RANK supporta sia burn positivi che negativi. La relazione tra questi due segnali aggregati fornisce informazioni sulla qualità del contenuto che la sola magnitudine non può catturare. R65 estrae tre metriche da questi dati bidirezionali.

Rapporto di Sentiment misura quale frazione dei burn totali è positiva:

sentimentRatio = B_pos / (B_pos + B_neg)

Un rapporto di 1,0 significa unanimemente positivo. Un rapporto di 0,5 significa equamente conteso. Un rapporto di 0,0 significa unanimemente negativo.

Punteggio di Controversia misura quanto equamente contesi sono i burn:

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

Un punteggio vicino a 1,0 significa burn positivi e negativi quasi uguali. Un punteggio vicino a 0,0 significa che una direzione domina. Quando il punteggio di controversia supera la soglia configurabile di 0,4, il contenuto viene segnalato come controverso per il trattamento nell'interfaccia.

Engagement Totale applica lo smorzamento logaritmico alla somma di tutti i burn:

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

Questo serve come criterio di spareggio: tra elementi con punteggi primari simili, quello che ha attratto più attenzione complessiva dalla comunità si classifica più in alto.

Queste tre metriche creano una comprensione bidimensionale del contenuto. Alto engagement con sentiment positivo indica contenuto genuinamente popolare. Alto engagement con sentiment conteso indica contenuto controverso degno di esame. Basso engagement con sentiment positivo indica contenuto di nicchia ma apprezzato. Basso engagement con sentiment negativo indica contenuto che la comunità ha giudicato non degno di attenzione.

Il punteggio di controversia alimenta anche il feed ordinato per controversia, che usa una formula composita ispirata all'approccio magnitudine-per-equilibrio di Reddit:

controversySortScore = controversyScore × totalEngagement

Questo premia i post che hanno attratto segnali costosi significativi da entrambi i lati, in proporzione a quanto equamente contesi sono i burn. I post sotto la soglia minima di engagement vengono esclusi in quanto banali.

R66: Smorzamento dei Picchi di Velocità di Burn

L'ultimo algoritmo prende di mira specificamente gli attacchi flash. Analizza la velocità con cui i burn si accumulano su un contenuto, non solo il totale. Una whale che scarica 100.000 sat in un singolo blocco produce un brusco picco di velocità. L'engagement organico produce una velocità graduale e sostenuta.

R66 calcola la velocità di burn su una finestra di rilevamento scorrevole e la confronta con la velocità mediana mobile su tutti i contenuti. Quando il rapporto di velocità supera una soglia configurabile, entra in azione una funzione di smorzamento sigmoide:

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

I parametri predefiniti sono una soglia di velocità di 10× la velocità mediana e una ripidità sigmoide di 0,5. I contenuti che ricevono burn a velocità normali non sono influenzati (smorzamento ≈ 1,0). I contenuti che ricevono burn a 100× la velocità mediana ricevono un fattore di penalità di circa 0,011 — quasi completamente smorzati.

La curva sigmoide è cruciale. Evita soglie rigide che potrebbero essere aggirate restando appena sotto il limite. Invece, fornisce una transizione fluida da nessuno smorzamento a smorzamento pesante.

Questo è Sybil-neutrale per design. La velocità è calcolata dai burn aggregati per finestra temporale, non per wallet. Suddividere un burn di 100.000 sat su 100 wallet nella stessa finestra temporale produce lo stesso picco di velocità e lo stesso smorzamento.

Il Punteggio Composito

Questi cinque algoritmi si combinano in un singolo punteggio composito del feed. Il processo procede in sequenza:

  1. R62 calcola il punteggio base con smorzamento logaritmico dai burn aggregati
  2. R64 applica il decadimento temporale basato sull'età dell'attività di voto
  3. R66 applica lo smorzamento di velocità se l'accumulo di burn è sospettosamente rapido
  4. R65 calcola i segnali bidirezionali per l'ordinamento secondario e i flag di controversia
  5. R63 applica il capping dello z-score a livello di visualizzazione del feed

Il risultato:

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

Con il capping dello z-score applicato alla distribuzione finale. Una whale deve bruciare esponenzialmente di più per ogni unità marginale di influenza nel ranking, sostenere quella spesa nel tempo, competere contro l'intera distribuzione dei contenuti ed evitare picchi di velocità. L'economia si sposta dal bruciare dieci volte di più per ottenere dieci volte l'influenza, a qualcosa più vicino al bruciare 100 volte di più per ottenere tre volte l'influenza che decade in tre giorni.

Perché Questo Era Necessario

I problemi che questi algoritmi risolvono sono modalità di fallimento documentate di ogni grande piattaforma di contenuti.

Le camere dell'eco si formano attraverso il conformismo sociale e le cascate informative. Gli esperimenti di conformità di Asch hanno dimostrato che circa il 37 percento delle persone si conforma a una risposta palesemente sbagliata della maggioranza. I conteggi dei voti visibili creano la stessa pressione sui social media. Lotusia affronta questo problema tramite Vote-to-Reveal: i conteggi dei voti sono nascosti a qualsiasi utente che non abbia ancora votato. Dovete esprimere il vostro voto prima di vedere come hanno votato gli altri. Questo è permanente e per utente, non un periodo di oscuramento a tempo che scade. La ricerca di Muchnik et al. ha misurato un effetto di trascinamento positivo del 25 percento da un singolo upvote visibile. Vote-to-Reveal elimina completamente questo vettore.

La manipolazione coordinata è il problema dell'attaccante con un'agenda. Operativi politici, team di PR aziendali e gruppi ideologici sono disposti a spendere denaro per orientare il sentiment — il burn è l'arma, e il rapporto di perdita 10:1 che uccide il farming economico è irrilevante per loro. Gli algoritmi di ranking del feed rendono questo costoso, e sono complementati dal rilevamento della manipolazione coordinata che monitora cluster di voto temporali, reti di similarità comportamentale e anomalie demografiche dei votanti. Quando viene rilevata una coordinazione, la promozione algoritmica dei contenuti interessati nel feed viene ridotta. I dati on-chain rimangono permanenti e accessibili. Solo l'amplificazione è interessata.

Il dominio delle whale è il problema della fase di bootstrap. Durante la crescita iniziale della rete, un singolo grande burn può dettare l'intero feed. Lo smorzamento logaritmico e il decadimento temporale affrontano questo problema comprimendo i rapporti di influenza e assicurando che gli attacchi flash decadano mentre il segnale organico sostenuto si accumula.

La modalità di fallimento di Steemit è ciò che accade quando si confonde il volume di partecipazione con il giudizio di qualità. Steemit usava una singola metrica — lo Steem Power — per l'influenza di voto, le ricompense dei contenuti e il potere di governance. Il risultato è stato lo scambio di voti, il dominio delle whale, il crollo della qualità e un calo del 90 percento degli utenti attivi. Lotusia separa gli Engagement Points dalla reputazione RANK. Un utente può essere molto attivo ma di bassa qualità, o selettivamente attivo ma di alta qualità. Entrambe le dimensioni sono visibili. Nessuna delle due si confonde con l'altra.

Il Fondamento Filosofico

Questi algoritmi sono espressioni dell'ethos Lotus. Il principio fondante di Lotus è la reciprocità generalizzata — donate Lotus come segno di apprezzamento, confidate che la reciprocità seguirà, e lasciate scorrere il token anziché accumularlo. Il sito originale givelotus.org descriveva Lotus come "inestimabile — un segno di apprezzamento — dal valore sentimentale."

Gli algoritmi di ranking del feed proteggono quel flusso dall'essere dirottato. Assicurano che il giudizio collettivo della comunità, espresso attraverso un sentiment ponderato dal burn e sostenuto nel tempo, rimanga il segnale dominante. Non hanno bisogno di identificare gli attaccanti o verificare le identità. Semplicemente rendono l'economia della manipolazione sfavorevole.

Questa è la risposta onesta al problema Sybil: non si può eliminare l'influenza delle whale in un sistema permissionless. Un attore sufficientemente facoltoso può sempre dominare. Ma si può rendere progressivamente più costoso, fino a quando il rapporto costo-beneficio diventa sfavorevole. E anche allora, il decadimento temporale assicura che la loro influenza svanisca.

Cosa Viene Dopo

Gli algoritmi di ranking del feed sono implementati e operativi nel servizio rank-backend-ts. Calcolano punteggi compositi per ogni post nel feed unificato, integrandosi con Vote-to-Reveal, il flag di controversia e il rilevamento della manipolazione coordinata.

Sistemi complementari continuano a svilupparsi. Il sistema di referral fornisce un onboarding resistente alle Sybil attraverso la fiducia sociale anziché il proof-of-work. Il sistema di Engagement Points premia la partecipazione sostenuta attraverso molteplici dimensioni — voti, referral, commenti, burn, streak e anzianità dell'account. Il monitoraggio della concentrazione dei votanti traccia l'Indice Herfindahl-Hirschman per rilevare quando il potere di voto diventa pericolosamente concentrato.

La Tartaruga Lotusiana si muove lentamente, ma deliberatamente. Abbiamo costruito algoritmi di ranking del feed che rendono la manipolazione costosa e la curation onesta gratificante. Non perché possiamo eliminare ogni forma di manipolazione, ma perché possiamo renderla progressivamente non conveniente. La matematica fa il lavoro pesante. La comunità fornisce il segnale. E il feed riflette ciò che le persone valorizzano genuinamente, non ciò che qualcuno può permettersi di promuovere.

Esplorate i profili classificati su Lotusia Social Profiles. Scoprite di più su chi ha costruito Lotusia.