
Every social media platform decides what you see. The algorithm optimizes for engagement, and engagement correlates most reliably with outrage and emotional response. The result is a feed that reflects what keeps you scrolling, not what the community values.
Lotusia takes a different approach. Content is curated through burn-weighted sentiment — you burn Lotus to vote, and aggregate burns determine what rises and what falls. The on-chain ranking formula is transparent: positive burns minus negative burns. Anyone can audit it. No one owns it.
But transparency alone is not enough. A wealthy actor can overwhelm organic signal. A coordinated campaign can hijack the feed. In a permissionless system where anyone can create unlimited wallets, most conventional anti-manipulation techniques fail. So we built a feed ranking layer between the on-chain data and what you see — five complementary algorithms that preserve honest curation while making manipulation progressively more expensive.
The Foundational Constraint
Lotusia operates in a permissionless environment. Anyone can create a wallet. There is no identity verification, no proof of humanity, no trusted social graph. This imposes a non-negotiable constraint on the ranking algorithm:
The ranking algorithm must factor ONLY aggregate burn amounts. The number of wallets must not directly affect content ranking.
This eliminates entire families of anti-whale mechanisms. Per-voter sub-linear transforms like quadratic voting incentivize wallet splitting — a whale burning 100,000 sats across 100 wallets gets ten times more influence than burning from one wallet. Voter diversity bonuses directly reward Sybil creation. Per-content concentration penalties are trivially evaded by splitting wallets.
The solution is restraint. Every ranking function operates exclusively on aggregate burn totals: the total Lotus burned positive and the total burned negative. Splitting the same total burn across any number of wallets produces the same score. This is the Sybil neutrality principle. The tradeoff is honest — the algorithm cannot distinguish between a thousand genuine voters and one whale with a thousand wallets — but it also cannot be gamed by wallet creation. In a Sybil-open system, this is the right tradeoff.
The On-Chain Baseline
The on-chain ranking formula is deliberately simple:
ranking = satsPositive - satsNegative
It is linear, transparent, and demonstrative of the core value proposition. But it is also whale-dominated, bootstrap-fragile, temporally flat, and agenda-vulnerable. The feed ranking layer addresses these limitations without modifying the on-chain formula. All five algorithms operate off-chain, on aggregate data, and are Sybil-neutral by construction.
R62: Aggregate Logarithmic Dampening
The most obvious vulnerability of linear ranking is that spending and influence are perfectly proportional. A whale burning 100,000 sats has exactly 100 times the influence of someone burning 1,000 sats.
R62 applies logarithmic dampening to aggregate positive and negative burns independently:
feedScore = log₂(1 + B_pos / BASE) - log₂(1 + B_neg / BASE)
Where B_pos and B_neg are the total positive and negative burns on a content item, and BASE is a tunable constant set to 1,000 sats. The logarithm creates diminishing returns on spending:
| 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 |
A whale burning 100,000 sats gets a feed score of 6.66 — meaningful, but not 100 times the influence of a 1,000 sat burn. To double their influence from 6.66 to 13.32, they would need to burn over 10 million sats. The logarithm does not prevent whale influence; it makes each additional unit of influence exponentially more expensive.
Applying the dampening independently to positive and negative burns prevents a large positive burn from being fully cancelled by a proportionally smaller negative burn at the log level. The net score reflects genuine community sentiment, not just who spent more.
This is the first and most fundamental layer of dampening. All subsequent algorithms build on this compressed score.
R63: Cross-Content Z-Score Capping
Even with logarithmic dampening, a sufficiently determined whale can produce an outlier score that dominates the feed. R63 addresses this by normalizing scores relative to the distribution of all content.
The algorithm computes the mean and standard deviation of all feed scores, then converts each score to a z-score:
μ = mean(scores)
σ = sqrt(variance(scores))
zScore = (score - μ) / σ
cappedScore = min(zScore, Z_MAX)
The z-score cap defaults to Z_MAX = 3.0. This means no content item can score more than three standard deviations above the mean, regardless of absolute burn amount.
Consider a feed of 100 items with scores between 1.0 and 5.0 (mean 3.0, standard deviation 1.0). One whale-dominated item scores 15.0. Without capping, it dominates the feed at 5 times the mean. With z-score capping:
zScore = (15.0 - 3.0) / 1.0 = 12.0 → capped at 3.0
The whale item still ranks highest, but its advantage over the top organic item (z-score 2.0) is compressed from 3× to 1.5×. No single piece of content can monopolize the feed.
The normalization only activates when there are at least ten scored content items, ensuring it does not produce artifacts during the bootstrap phase when the feed is sparse.
R64: Temporal Conviction Accumulation
The on-chain ranking formula treats a burn from thirty days ago identically to a burn from thirty seconds ago. R64 introduces exponential decay based on the age of voting activity, drawing from conviction voting developed by the Commons Stack and deployed by 1Hive Gardens.
Burns are grouped into hourly periods. Each period's net dampened score (from R62) is weighted by a decay factor based on its age:
decay = (1/2)^(ageHours / halfLife)
convictionScore = Σ [periodScore_t × decay(age_t)]
The default half-life is 72 hours, matching the natural lifecycle of social media content relevance:
| 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% |
This provides meaningful flash attack resistance. A whale dumping 100,000 sats in a single block gets an immediate score boost, but that boost decays by half every three days. Meanwhile, organic burns adding smaller amounts each hour accumulate conviction that persists.
In a worked example: a whale burns 100,000 sats at t=0 while organic burns add 1,000 sats per hour. With a 72-hour half-life and 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% |
Organic signal overtakes the whale within 48 hours. By day five, the whale's influence is reduced to 21 percent of the total.
The decay anchor is caller-determined. For the curated feed, the first vote timestamp is used — this prevents trivial re-burns from resurrecting old content. For trending and recent feeds, the last vote timestamp is used so that re-emerging content with genuine new activity surfaces correctly.
R65: Bidirectional Signal Integration
RANK supports both positive and negative burns. The relationship between these two aggregate signals provides information about content quality that pure magnitude cannot capture. R65 extracts three metrics from this bidirectional data.
Sentiment Ratio measures what fraction of total burns are positive:
sentimentRatio = B_pos / (B_pos + B_neg)
A ratio of 1.0 means unanimously positive. A ratio of 0.5 means evenly contested. A ratio of 0.0 means unanimously negative.
Controversy Score measures how evenly contested the burns are:
controversyScore = min(B_pos, B_neg) / max(B_pos, B_neg)
A score near 1.0 means nearly equal positive and negative burns. A score near 0.0 means one direction dominates. When the controversy score exceeds the configurable threshold of 0.4, the content is flagged as controversial for UI treatment.
Total Engagement applies logarithmic dampening to the sum of all burns:
totalEngagement = log₂(1 + (B_pos + B_neg) / BASE)
This serves as a tiebreaker: among items with similar primary scores, the one that attracted more total community attention ranks higher.
These three metrics create a two-dimensional understanding of content. High engagement with positive sentiment indicates genuinely popular content. High engagement with contested sentiment indicates controversial content worth examining. Low engagement with positive sentiment indicates niche but appreciated content. Low engagement with negative sentiment indicates content the community has judged unworthy of attention.
The controversy score also powers the controversial sort feed, which uses a composite formula inspired by Reddit's magnitude-times-balance approach:
controversySortScore = controversyScore × totalEngagement
This rewards posts that have attracted significant costly signal on both sides, proportional to how evenly contested the burns are. Posts below the minimum engagement threshold are excluded as trivial.
R66: Burn Velocity Spike Dampening
The final algorithm targets flash attacks specifically. It analyzes the rate at which burns accumulate on a content item, not just the total. A whale dumping 100,000 sats in a single block produces a sharp velocity spike. Organic engagement produces a gradual, sustained velocity.
R66 computes the burn velocity over a sliding detection window and compares it to the rolling median velocity across all content. When the velocity ratio exceeds a configurable threshold, a sigmoid dampening function kicks in:
velocityRatio = currentWindowBurns / rollingMedianBurns
dampening = 1 / (1 + e^(k × (velocityRatio - threshold)))
The default parameters are a velocity threshold of 10× the median velocity and a sigmoid steepness of 0.5. Content receiving burns at normal rates is unaffected (dampening ≈ 1.0). Content receiving burns at 100× the median rate gets a penalty factor of approximately 0.011 — nearly fully dampened.
The sigmoid curve is critical. It avoids hard cutoffs that could be gamed by staying just below a threshold. Instead, it provides a smooth transition from no dampening to heavy dampening.
This is Sybil-neutral by design. Velocity is computed from aggregate burns per time window, not per wallet. Splitting a 100,000 sat burn across 100 wallets in the same time window produces the same velocity spike and the same dampening.
The Composite Score
These five algorithms combine into a single composite feed score. The process flows in sequence:
- R62 computes the base logarithmically dampened score from aggregate burns
- R64 applies temporal decay based on the age of voting activity
- R66 applies velocity dampening if burn accumulation is suspiciously fast
- R65 computes bidirectional signals for secondary sorting and controversy flags
- R63 applies z-score capping at the feed display level
The result:
feedScore = [log₂(1 + B_pos/BASE) - log₂(1 + B_neg/BASE)]
× decay(ageHours / 72h)
× velocityDampening(velocityRatio)
With z-score capping applied to the final distribution. A whale must burn exponentially more for each marginal unit of ranking influence, sustain that spending over time, compete against the entire distribution of content, and avoid velocity spikes. The economics shift from burning ten times more to get ten times the influence, to something closer to burning 100 times more to get three times the influence that decays in three days.
Why This Was Necessary
The problems these algorithms solve are documented failure modes of every major content platform.
Echo chambers form through social conformity and information cascades. The Asch conformity experiments demonstrated that roughly 37 percent of people conform to an obviously wrong majority answer. Visible vote tallies create the same pressure on social media. Lotusia addresses this through Vote-to-Reveal: vote tallies are hidden from any user who has not yet voted. You must cast your own vote before seeing how others voted. This is permanent and per-user, not a time-based blind period that expires. Research from Muchnik et al. measured a 25 percent positive herding effect from a single visible upvote. Vote-to-Reveal eliminates this vector entirely.
Coordinated manipulation is the agenda-driven attacker problem. Political operatives, corporate PR teams, and ideological groups are willing to spend money to steer sentiment — the burn is the weapon, and the 10:1 loss ratio that kills economic farming is irrelevant to them. The feed ranking algorithms make this expensive, and they are complemented by coordinated manipulation detection that monitors for temporal voting clusters, behavioral similarity networks, and voter demographic anomalies. When coordination is detected, affected content's algorithmic feed promotion is reduced. The on-chain data remains permanent and accessible. Only the amplification is affected.
Whale dominance is the bootstrap-phase problem. During early network growth, a single large burn can dictate the entire feed. The logarithmic dampening and temporal decay address this by compressing influence ratios and ensuring that flash attacks decay while sustained organic signal accumulates.
The Steemit failure mode is what happens when you conflate participation volume with quality judgment. Steemit used a single metric — Steem Power — for voting influence, content rewards, and governance power. The result was vote trading, whale dominance, quality collapse, and a 90 percent drop in active users. Lotusia separates Engagement Points from RANK reputation. A user can be highly active but low quality, or selectively active but high quality. Both dimensions are visible. Neither conflates with the other.
The Philosophical Foundation
These algorithms are expressions of the Lotus ethos. The founding principle of Lotus is generalized reciprocity — give Lotus as a token of appreciation, trust that reciprocity will follow, and let the token flow rather than accumulate. The original givelotus.org described Lotus as "priceless — a token of appreciation — having sentimental value."
The feed ranking algorithms protect that flow from being hijacked. They ensure that the community's collective judgment, expressed through sustained burn-weighted sentiment, remains the dominant signal. They do not need to identify attackers or verify identities. They simply make the economics of manipulation unfavorable.
This is the honest answer to the Sybil problem: you cannot eliminate whale influence in a permissionless system. A sufficiently wealthy actor can always dominate. But you can make it progressively more expensive, until the cost-benefit ratio becomes unfavorable. And even then, temporal decay ensures their influence fades.
What Comes Next
The feed ranking algorithms are implemented and operational in the rank-backend-ts service. They compute composite scores for every post in the unified feed, integrating with Vote-to-Reveal, the controversial flag, and coordinated manipulation detection.
Complementary systems continue to develop. The referral system provides Sybil-resistant onboarding through social trust rather than proof-of-work. The Engagement Points system rewards sustained participation across multiple dimensions — votes, referrals, comments, burns, streaks, and account age. Voter concentration monitoring tracks the Herfindahl-Hirschman Index to detect when voting power becomes dangerously consolidated.
The Lotusian Turtle moves slowly, but deliberately. We built feed ranking algorithms that make manipulation expensive and honest curation rewarding. Not because we can eliminate every form of manipulation, but because we can make it progressively not worth the cost. The mathematics do the heavy lifting. The community provides the signal. And the feed reflects what people genuinely value, not what someone can afford to promote.
Explore ranked profiles on Lotusia Social Profiles. Learn more about who built Lotusia.