🔒 SECURITY AUDIT

TASTE Token

Smart Contract Security Audit Report

February 26, 2026 — Internal Security Review v1.1

🛡️

Overall Risk: LOW

No critical or high-severity vulnerabilities found

0
Critical
0
High
1
Medium
2
Low

📋 Contract Details

Contract TasteContract (Withdrawal)
Network TON Mainnet
Language Tact v1.6.0
Standard TEP-74 (Jetton)

🏗️ Architecture

MiniApp (User) │ Withdrawal Request ▼ Backend Service ├─ Ed25519 Signing ├─ Rate Limiting └─ Amount Validation │ Signed Transaction ▼ TasteContract (On-Chain) ├─ Signature Verify ├─ Nonce Protection └─ Pause Check │ Token Transfer ▼ TASTE Jetton Wallet └─ TEP-74 Compliant

🔍 Detailed Findings

Signature Verification (Ed25519) ✅ Passed

All withdrawals require a valid Ed25519 signature. The signed hash includes sender address, amount, and nonce — preventing signature theft, amount manipulation, and replay attacks.

Replay Attack Protection ✅ Passed

Nonce-based protection using on-chain map<Int, Bool>. Each nonce is permanently stored after use. Duplicate transactions are rejected with "Nonce already used" error.

Access Control ✅ Passed

All 6 administrative functions are protected by owner-only access checks: SetJettonWallet, SetPublicKey, TransferOwnership, SetPaused, Claim, WithdrawTON.

Emergency Pause Mechanism ✅ Passed

Contract can be paused/unpaused by the owner in case of emergencies. User withdrawals are blocked during pause, while admin functions remain accessible.

Minimum Withdrawal ✅ Passed

Enforces minimum 1 TASTE withdrawal to prevent dust attacks and gas drain.

TEP-74 Jetton Compliance ✅ Passed

Token transfers follow the TEP-74 standard format with proper destination, responseDestination, and forwardTonAmount fields.

Single-Step Ownership Transfer 🟡 Medium

Ownership transfer is single-step (no confirmation required). Risk of accidental transfer to wrong address. Mitigated: Owner key is secured. 2-step transfer recommended for future versions.

Nonce Map Growth 🔵 Low

Used nonces are stored indefinitely, causing gradual storage growth. At current scale, this has negligible impact. Gas costs are paid by the withdrawing user.

No On-Chain Max Withdrawal 🔵 Low

Maximum withdrawal limit (10 TASTE) is enforced at the backend level, not on-chain. Mitigated: Backend signature is mandatory — users cannot bypass the limit.

📊 Security Checklist

🛡️ Backend Security

Rate Limiting 1-minute cooldown per wallet
Min Withdrawal 1 TASTE
Max Withdrawal 10 TASTE per transaction
Signing Algorithm Ed25519
Nonce Format Timestamp + Counter + Random