BurnRegistry
The BurnRegistry
is the canonical tracking module for all burn-related activity across the TRN platform. It records negative feedback from users (burns), flags from AI moderation tools, and links all burn data to both engagement metrics and moderation escalation.
Its core function is to track and register all TRN burn events that occur when users downvote content, disapprove of posts, or when a post is flagged in moderation workflows.
🎯 Purpose
Maintain a single source of truth for all TRN burn events.
Ensure accurate accounting for Merkle-based airdrop eligibility, moderation weightings, and post performance metrics.
Route burn-related TRN to the DAO Vault.
Integrate seamlessly with BoostingModule,
FlagEscalator
, andTRNUsageOracle
.
🔑 Core Responsibilities
Track TRN Burns
When users burn a post (signal disapproval), 1 TRN is debited from the user’s available fruit balance.
That TRN is routed directly to the DAO Vault.
The post’s total burn count is incremented and stored on-chain.
Post-Level Burn Metadata
Each post tracks its cumulative burn count and burn participants.
Burn data is referenced by:
FlagEscalator
for escalation logic.LottoModule
for eligibility.Merkle tree batching to reflect post health and earnings deduction.
Prevent Double Burns
Users can only burn a given post once.
Burned posts are permanently removed from the user’s feed.
Retrns do not override a burn; users cannot see or retrn burned posts.
Boosted Post Integration
If a boosted post is burned:
Its campaign ends immediately.
Remaining unspent TRN is returned to the booster via the
TRNUsageOracle
.The post is suppressed and flagged via
FlagEscalator
.Burned boosted posts do not earn TRN, even for retrns.
Ledger Consistency
The
BurnRegistry
is directly tied to theTRNUsageOracle
to ensure Merkle consistency.Burned TRN is removed from the user’s credit, never from debt.
No burn can proceed if it would take a user into a negative balance.
Burns are real-time and reconciled in daily Merkle trees.
📘 Smart Contract Structure (Simplified)
struct BurnRecord {
uint256 totalBurns;
mapping(address => bool) hasBurned;
}
mapping(bytes32 => BurnRecord) public postBurns;
function burnPost(bytes32 postHash) external {
require(!postBurns[postHash].hasBurned[msg.sender], "Already burned");
TRNUsageOracle.chargeBurn(msg.sender, 1 ether);
postBurns[postHash].hasBurned[msg.sender] = true;
postBurns[postHash].totalBurns += 1;
FlagEscalator.incrementBurnCount(postHash);
ModerationLog.logBurn(postHash, msg.sender);
}
📊 DAO Vault Integration
All TRN spent via burns is routed to the DAO Vault.
DAO allocations are computed daily by the
DailyVaultSplitter
.Burn activity is a core revenue stream for the DAO and indirectly for InvestorNFTs.
🚫 Effects of a Burn
Visibility
Burned post is removed from viewer's feed permanently
Boost Status
If boosted, campaign ends immediately, funds returned
Earnings
Post stops earning from that viewer immediately
Escalation
Burn is counted toward FlagEscalator
thresholds
Curation
Burned posts are excluded from retrns
Post Deletion
Post is not deleted from IPFS, only suppressed and tracked
🧩 Related Modules
TRNUsageOracle
Debits the TRN in real-time for the burn, ensures Merkle sync
ModerationLog
Stores burn actions for audit and transparency
BoostingModule
Cancels boost if post is burned, reverts unused spend to booster
FlagEscalator
Uses burn count as signal for escalation
LottoModule
Uses burn ratios to determine post eligibility or exclusion
✅ Final Notes
Burn actions are irreversible.
No burn refunds or reversal.
Users are encouraged to burn responsibly, as each action represents a hard-coded TRN transfer to the DAO.
Posts with high burn ratios are disqualified from rewards or boosting.
Users cannot game the system by repeated burns due to post-level tracking and permanent exclusion from feeds.
Last updated