2. Functions & Permissions

🔧 Smart Contract Functions & Permissions

“At MUY Token, investor actions are protected — and limited — by design.”

The MUY Token smart contract isn't just a token—it’s an automated system of investor rights, DAO power, and compliance logic. Below is a breakdown of the core functions and who is authorized to trigger them.


📘 Key Contract Functions

Function
Triggered By
Description

mintTokens()

Admin (after KYC)

Issues MUY Tokens to verified wallets

lockTokens()

Contract (auto)

Applies 12-month vesting for new tokens

releaseTokens()

Contract (auto)

Unlocks tokens after lockup expires

distributeIncome()

Admin (quarterly)

Distributes 85% of profits to holders

buyBackTokens()

DAO via vote

Executes token repurchase from market

castVote()

DAO Builders

Submits or votes on proposals

upgradeContract()

DAO (via quorum)

Initiates contract upgrade via proxy

pauseContract()

3-of-5 multisig

Emergency stop for safety/bugs


🧠 Admin Permissions

Administrative roles are minimal and transparent.

Role
Power
Notes

Admin

Mint, whitelist wallets, initiate distributions

Only used during onboarding or payouts

DAO Builders

Governance, voting, buyback approvals

Must meet $50K+ threshold

Multisig Wallet

Emergency pause, treasury actions

3-of-5 signer logic

Contract Owner

Cannot access investor funds or overwrite ledger

Only upgrade permissions via DAO

💡 We believe in “least privilege” — everyone has access only to what they must.


🔐 Wallet Whitelisting

All token transfers and voting powers are gated by:

  • ✅ Wallet must pass KYC/AML

  • ✅ Wallet must be whitelisted and registered

  • ✅ No cold storage or centralized exchange wallets allowed

  • ✅ Wallets can be updated via secure DAO process


💼 Real-Life Flow

Here’s a practical example of how the functions work:

  1. Investor signs TSA

  2. KYC is approved via SumSub

  3. Admin calls mintTokens() to whitelist + issue tokens

  4. lockTokens() activates 12-month vesting

  5. Quarterly, distributeIncome() runs via DAO

  6. After 12 months, releaseTokens() allows transfer

  7. DAO can call buyBackTokens() to offer exits

All functions are transparently logged on PolygonScan.


🛠 Example Solidity Snippet

function mintTokens(address investor, uint amount) public onlyAdmin {
  require(whitelist[investor], "Wallet not whitelisted");
  _mint(investor, amount);
  lock[investor] = block.timestamp + 365 days;
}

Last updated