Native Governance
Two-chamber token-weighted governance via Telegram — on-chain truth, off-chain voting.
What is IFR Native Governance?
IFR governance happens where the community already lives: Telegram. Instead of building a separate voting dApp, the governance system is integrated directly into Telegram groups and channels.
The system uses a hybrid on-chain/off-chain model. Voting is free and happens off-chain (via Telegram reactions and polls), while results are permanently anchored on-chain for transparency and tamper-proofing.
- No gas costs for voting: IFR is a deflationary token — every transfer burns tokens. Off-chain voting avoids unnecessary burns.
- IFR Lock = voting power: 1 IFR locked in the IFRLock contract = 1 vote. No minimum threshold for voting.
- Two chambers: The Council (team governance) + The Forum (community innovation).
- On-chain truth: Every vote result is finalized on-chain with a Merkle root for cryptographic verification.
Why Telegram? No extra app to install. No wallet connection friction for voting. The community is already there. Higher participation = better governance.
Architecture
Three-layer design: Presentation (Telegram), Logic (Bot Backend), Truth (Blockchain).
Chamber 1 — The Council
Team governance for strategic decisions, treasury allocation, and partnerships. Only the dev team and multisig signers can create proposals. The community can discuss and vote, but proposal rights are restricted.
/council_proposalwith title, description, duration
RatVoting.sol.Verifiable votes: Every voter can cryptographically prove their vote was correctly included in the Merkle Tree using the public verifyVote() function on RatVoting.sol.
Chamber 2 — The Forum
Community innovation chamber. Anyone with IFR locked can submit proposals. A 10 IFR spam protection fee is required — refunded on successful consensus, burned if rejected. This reinforces IFR’s deflationary design.
/propose in the Community Forum (t.me/IFR_token). 10 IFR deposited to IFRSpamProtection.sol./sign [id] yes.Deflationary mechanic: The 10 IFR spam fee reinforces IFR’s deflationary design. Bad proposals burn IFR permanently. Good proposals earn it back. Every rejected proposal reduces total supply.
How Voting Works
Voting is designed to be free, simple, and verifiable. No gas costs, no wallet popups, no dApp switching.
Step-by-Step
/connect in @IFR_Forum. The bot opens a Mini-App where you sign a free message with MetaMask. This links your Telegram account to your Ethereum address (one-time only).Cost Overview
| Action | Gas Cost | How |
|---|---|---|
| Connect wallet | Free | One-time MetaMask signature |
| Vote on proposal | Free | Telegram reaction or poll |
| Submit proposal | 10 IFR | /propose command |
| Final on-chain TX | Bot pays | Automatic after voting ends |
Bot Architecture
A single Node.js bot serves both chambers with strict role separation. Only the Executor component holds private keys.
| Component | Function |
|---|---|
| Wallet-Mapper | Encrypted database mapping TelegramUserID to EthereumAddress (one-time free signature) |
| IFR-Reader | Reads IFR Lock Contract via Infura/Alchemy, caches lock balances |
| Reaction-Tracker | Tracks every reaction with timestamp and lock weight of the voter |
| Poll-Manager | Creates native Telegram polls for Council votes, aggregates weighted results |
| Cron: Ranking | Runs daily, calculates top proposals by weighted score (upvotes minus downvotes) |
| Cron: Consensus | Monitors whether a proposal has stayed 10 consecutive days in Top 3 |
| Cron: Finalizer | Submits collected votes on-chain after the signature phase ends |
| Executor | Sole component with private key / multisig access for on-chain transactions |
Smart Contracts
Three new contracts will be deployed for the governance system.
RatVoting.sol Phase 4
Stores Council vote results using a snapshot model. One on-chain transaction per proposal.
finalizeProposal(proposalId, forWeight, againstWeight, merkleRoot)— bot-only, stores the finalized vote resultverifyVote(proposalId, voter, vote, weight, proof)— public view function for Merkle proof verification
ForumVoting.sol Phase 4
Manages binding community votes using an EIP-712 signed-vote model.
submitVotes(proposalId, votes[], signatures[])— iterates over all votes, verifies each signature via ecrecover, checks IFR Lock balance, stores final result on-chain
IFRSpamProtection.sol Phase 4
Manages the 10 IFR proposal fee. Requires approve() from the user before submission.
- Successful consensus → 10 IFR refunded to proposer (incentive for quality proposals)
- Downvoted > 50% → 10 IFR burned permanently (deflationary)
User Journey
How a new user named Max discovers IFR governance:
/connect → Mini-App opens → MetaMask signature (free)./propose “Treasury should fund 10k IFR for community event” → 10 IFR deposited → idea posted./sign 42 yes”FAQ
Why Telegram and not a dedicated voting dApp?
The community lives in Telegram. No extra app to install means higher participation. Governance should meet users where they already are, not force them to a new platform.
Do I need ETH to vote?
No. Voting is completely free. Only submitting new proposals costs 10 IFR (spam protection). The bot pays all on-chain transaction fees for finalization.
What determines my voting power?
Your IFR Lock balance at the time of voting. 1 IFR locked = 1 vote. There is no minimum threshold for voting — only for proposing (you need IFR locked to submit a proposal).
When will this launch?
Phase 4 of the IFR roadmap. Follow @IFRtoken on X for updates.
Can I verify my vote was counted?
Yes. After finalization, every voter can verify their vote via the Merkle proof on RatVoting.sol. The verifyVote() function is a public view function — anyone can call it at any time, for free.
Join the Governance
Get involved in IFR governance today:
📢 Announcements — t.me/IFRtoken
🏛 Council — t.me/IFR_token/21 (team proposals, read-only)
🗳 Vote — t.me/IFR_token/23 (cast your vote)
💬 Community — t.me/IFR_token (discussion & proposals)