KYC Withdrawal Layer
Module Type: Identity & Access Category: Fiat Access Enforcement Purpose: Ensures seamless, compliant withdrawals from the TRN platform to a user’s real-world banking account, while maintaining user privacy and respecting jurisdictional controls.
🧩 Overview
The KYC Withdrawal Layer
is a seamless withdrawal and fiat exchange module integrated into the TRN platform. It is the only part of the system that touches real-world fiat infrastructure, and it is configured at initial wallet setup by the user. All TRN earned on-platform (e.g., from views, curation, ad watching) can be withdrawn into local currency via this system—but only after all TRNUsageOracle debts have been settled.
This module does not interfere with real-time platform use. It is strictly enforced when attempting to convert TRN into fiat and only applies to withdrawals.
🔐 Core Behavior
One-Time Setup
During wallet creation, the user links their KYC withdrawal method.
Each user selects their country, preferred exchange pathway, and linked account (e.g. checking account or mobile wallet).
Uses country-specific KYC modules. For example:
🇺🇸 U.S. → driver's license or government ID
🇮🇳 India → Aadhaar + phone number
🇪🇺 EU → eID and bank connection
Automatic Distribution
All earnings (after the Merkle drop, debt reconciliation, and vault splits) are automatically sent to the user's wallet.
When the user requests withdrawal, the KYC layer activates and:
Verifies the user’s KYC setup
Confirms no unsettled debt remains in
TRNUsageOracle
Executes the transfer to the user’s linked account
Debt Blocking
If the user attempts withdrawal while in TRNUsageOracle debt, the request is rejected.
Withdrawals are only possible once the fruit balance and usage ledger are fully reconciled with Merkle-batched earnings.
Country-Level Controls
Jurisdictions may restrict or delay withdrawals via CountryNFT constraints.
These controls are enforced at the policy layer (via
GeoOracle
+CountryRulesetManager
), but KYC Withdrawal Layer respects them.For example: If a user from a restricted country earns TRN, they can still spend it within the ecosystem but cannot withdraw it until compliance is met.
💳 Process Flow
textCopyEdit[User Earns TRN]
↓
[Daily Merkle Drop Applies Fruit Credit]
↓
[User Withdraws TRN via Interface]
↓
[System Checks KYC Setup + Debt-Free Status]
↓
[CountryNFT Rules Checked (GeoOracle)]
↓
[Fiat Transfer Executed via Selected Provider]
✅ Requirements for Withdrawal
Wallet initialized with KYC
KYC Withdrawal Layer
No outstanding TRNUsageOracle debt
DebtSettlementModule
CountryNFT allows withdrawal
GeoOracle + CountryRulesetManager
Account is not frozen
ModerationLog or FlagEscalator
🌐 Jurisdictional Logic
This system respects decentralized regional governance via CountryNFTs
. Each country may:
Approve or reject withdrawal pathways
Enforce holding periods
Enforce earnings thresholds before release
Delay conversion to fiat until review
These settings are transparent and on-chain, but specific enforcement is hidden behind encrypted country-level oracles to prevent censorship circumvention.
📎 Integration Modules
TRNUsageOracle
Verifies balance sufficiency and pending fruit debt
DebtSettlementModule
Ensures no negative balance or unfinalized usage
GeoOracle
Detects user’s country and applies legal restrictions
CountryRulesetManager
Maintains country-specific withdrawal criteria
ModerationLog
Can block withdrawals for flagged/fraudulent users
🔐 Privacy Design
Withdrawal metadata is handled outside the core TRN ledger
No other users or on-chain observers can see:
Withdrawal method
Real name or ID
Transaction history in fiat
Only the DAO and relevant country’s validator or KYC provider has access, under encrypted access agreements
🚫 Common Rejection Reasons
❌ User has unpaid TRNUsageOracle ledger balance
❌ User has not completed wallet KYC setup
❌ User’s country is under restriction (CountryNFT locked)
❌ Withdrawals temporarily paused by moderation
❌ User attempted to bypass withdrawal limits (auto-flagged)
📝 Notes
This module is transparent to the user after setup: they use TRN as usual, and their money goes to their account when requested.
Users are encouraged but not required to withdraw. They can use TRN internally as long as they want.
Last updated