Documentation Index
Fetch the complete documentation index at: https://docs.satelink.network/llms.txt
Use this file to discover all available pages before exploring further.
Settlement Architecture — On-Chain USDT Claims
How Satelink settles node operator earnings on Polygon.Overview
Satelink is a trustless revenue distribution system. Every USDT earned by node operators is verifiable on-chain. Core principle: Revenue exists before rewards are calculated. No emissions. No fake rewards.Revenue Flow
Smart Contracts
ClaimsContract:0x6987921e2453f360e314e4424F6c2789F10a1CC9
- Deployed on Polygon PoS (mainnet, chain ID 137)
- Open-source: GitHub
- Verified on Polygonscan
claim(signature, amount, deadline)— Submit claim with EIP-712 signaturecreateClaim(nodeId, amount, deadline)— Platform creates claimable balancewithdrawFunds(amount)— Admin withdrawal for treasury management
- ReentrancyGuard (OpenZeppelin)
- AccessControl (CLAIM_CREATOR_ROLE, GOVERNOR_ROLE)
- Pausable (emergency stop)
- 48-hour claim expiry
- Signature replay protection via deadline
EIP-712 Signature
Node operators sign claims off-chain using EIP-712 (typed structured data):- You own the node wallet
- You’re claiming the correct amount
- Deadline prevents stale claims
Epoch System
Epoch duration: 60 seconds Every epoch:- All revenue_events are summed
- Split applied: 50% nodes / 30% platform / 20% pool
- Node operator shares calculated proportionally
- Epoch marked as CLOSED
- New epoch opens automatically
- Batching reduces complexity
- Atomic finalization (no partial epochs)
- Clean accounting periods
Treasury Management
Treasury wallet:0x966E1Ae22996545015b1414B35234b10719d7Ad4
Revenue flows:
- Developers deposit USDT → treasury
- TreasurySettlementJob runs every 5 minutes
- Forwards collected revenue to ClaimsContract (50/30/20 split)
- Node operators claim from ClaimsContract balance
- If balance low → Discord alert
Claiming Process
Step 1: Check Claimable Balance
Step 2: Generate Claim Signature
Step 3: Submit On-Chain
Use the signature to callClaimsContract.claim() from your wallet:
Step 4: Verify
Check Polygonscan:https://polygonscan.com/tx/YOUR_TX_HASH
USDT arrives in your wallet within 1 block (~2 seconds).
Proven Example
First claim ever (v1.0 milestone):| Field | Value |
|---|---|
| Amount | $1.296464 USDT |
| TX | 0x814d348d… |
| Date | 2026-05-17 |
| Node | NODE-ap-south-1-a09becbb |
| Wallet | 0x966E1Ae22996545015b1414B35234b10719d7Ad4 |
Security Features
1. No Double Claims
- Signature includes deadline
- Contract tracks claimed amounts per node
- Duplicate claim → TX reverts
2. Expiry Window
- Claims expire 48 hours after generation
- Expired claims → funds re-allocated to next epoch
- Prevents abandoned claims from locking funds
3. Solvency Monitoring
- TreasurySettlementJob runs every 5 minutes
- Checks: ClaimsContract balance ≥ pending claims
- If insufficient → Discord alert + pause new claims
4. Emergency Pause
- GOVERNOR_ROLE can pause all claims
- Used only for critical bugs
- Unpause requires admin action
Transparency
All data is public:| Data | Endpoint |
|---|---|
| Revenue events | /api/admin/economics |
| Settlement queue | /api/admin/settlement |
| Node earnings | /api/nodes/:id/earnings |
| Contract state | Polygonscan |