אנו בונים טוקנים עם שירות (utility tokens) שפותרים בעיות אמיתיות בפרוטוקול — לא כאלה שמוכנסים באופן מלאכותי לכלכלת הטוקן רק לצורך גיוס כספים. טוקן שירות שונה פונקציונלית מטוקן ממשל או טוקן אבטחה: הוא נדרש למשהו קונקרטי בתוך המערכת האקולוגית. תשלום עבור גז (ETH), חישוב (FIL ב-Filecoin), גישה לשירות (קרדיטים ל-API), הנחות בעמלות (BNB ב-Binance) — כל אלה דוגמאות לשירות אמיתי. הבעיה עם רוב טוקני ה"שירות": השירות הוא מלאכותי, והטוקן אינו נחוץ לפעולת הפרוטוקול. טוקן שירות אמיתי פותר בעיה שלא ניתן לפתור ללא טוקן: תמריצים מתואמים למשתתפי הרשת, אסקרו ללא אמון (trustless escrow), תנאי גישה הניתנים לתכנות. לצוות שלנו ניסיון של למעלה מ-7 שנים בפיתוח בלוקצ'יין, יותר מ-30 טוקנים שהושקו, ומומחיות תעשייתית עמוקה — המאפשרת לנו לתכנן כלכלה עובדת מההתחלה.
עיצוב מנגנוני שירות
כיצד לבדוק אם טוקן נחוץ?
לפני תכנון הטוקן, אנו מנתחים: האם ניתן להחליפו ב-USDC או ETH? אם החלפה אפשרית — טוקן מקומי אינו נחוץ. אם לא — אנו מזהים שירות ייחודי. סיבות משכנעות להחזיק טוקן משלך: ממשל (זכויות הצבעה), סטייקינג לאבטחה (מאמתים מחזיקים טוקנים, ענישה על רמאות — skin in the game), חלוקת הכנסות מהפרוטוקול (מחזיקי טוקן מקבלים חלק מהעמלות), תמריצים אינפלציוניים לאתחול המערכת האקולוגית. סטייקינג יכול להפחית עמלות בעד 20% עבור מחזיקי הטוקן.
מנגנוני לכידת ערך
טוקן שירות חייב ללכוד חלק מערך הפרוטוקול. דפוסים פופולריים: מתג עמלות (הפרוטוקול לוקח אחוז מהפעולות, חלק הולך למחזיקי הטוקן או ל-buyback/burn), סטייקינג לגישה (ספקים נועלים טוקנים כערובה), תמחור הנקוב בטוקן (השירות עולה N טוקנים). הביקוש לשירות יוצר ביקוש לטוקן.
יישום: שירות סטייקינג
טוקן שירות טיפוסי עם סטייקינג לגישה לשירות: אנו משתמשים בספריית OpenZeppelin עבור חוזים סטנדרטיים.
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.sol";
import "@openzeppelin/contracts/access/AccessControl.sol";
import "@openzeppelin/contracts/utils/ReentrancyGuard.sol";
contract UtilityToken is ERC20, ERC20Permit, AccessControl, ReentrancyGuard {
bytes32 public constant MINTER_ROLE = keccak256("MINTER_ROLE");
bytes32 public constant SERVICE_ROLE = keccak256("SERVICE_ROLE");
uint256 public constant PROVIDER_STAKE_REQUIRED = 10_000 * 10**18; // 10k токенов
struct ProviderStake {
uint256 amount;
uint256 stakedAt;
bool active;
}
mapping(address => ProviderStake) public providerStakes;
mapping(address => uint256) public serviceCredits;
uint256 public constant CREDIT_PRICE = 1 * 10**18;
uint256 public burned;
event ProviderRegistered(address indexed provider, uint256 stake);
event ProviderSlashed(address indexed provider, uint256 amount, string reason);
event CreditsPurchased(address indexed user, uint256 amount);
constructor(address admin, address treasury, uint256 initialSupply)
ERC20("Utility Token", "UTL")
ERC20Permit("Utility Token")
{
_grantRole(DEFAULT_ADMIN_ROLE, admin);
_grantRole(MINTER_ROLE, admin);
_mint(treasury, initialSupply);
}
function stakeAsProvider() external nonReentrant {
require(!providerStakes[msg.sender].active, "Already registered");
require(
balanceOf(msg.sender) >= PROVIDER_STAKE_REQUIRED,
"Insufficient balance"
);
_transfer(msg.sender, address(this), PROVIDER_STAKE_REQUIRED);
providerStakes[msg.sender] = ProviderStake({
amount: PROVIDER_STAKE_REQUIRED,
stakedAt: block.timestamp,
active: true
});
_grantRole(SERVICE_ROLE, msg.sender);
emit ProviderRegistered(msg.sender, PROVIDER_STAKE_REQUIRED);
}
function purchaseCredits(uint256 creditAmount) external nonReentrant {
uint256 tokenCost = creditAmount * CREDIT_PRICE;
require(balanceOf(msg.sender) >= tokenCost, "Insufficient tokens");
uint256 burnAmount = tokenCost * 80 / 100;
uint256 treasuryAmount = tokenCost - burnAmount;
_burn(msg.sender, burnAmount);
burned += burnAmount;
_transfer(msg.sender, treasury, treasuryAmount);
serviceCredits[msg.sender] += creditAmount;
emit CreditsPurchased(msg.sender, creditAmount);
}
function consumeCredits(address user, uint256 amount) external onlyRole(SERVICE_ROLE) {
require(serviceCredits[user] >= amount, "Insufficient credits");
serviceCredits[user] -= amount;
emit CreditsConsumed(user, msg.sender, amount);
}
function slashProvider(
address provider,
uint256 amount,
string calldata reason
) external onlyRole(DEFAULT_ADMIN_ROLE) {
ProviderStake storage stake = providerStakes[provider];
require(stake.active, "Not active provider");
require(amount <= stake.amount, "Exceeds stake");
stake.amount -= amount;
_burn(address(this), amount);
burned += amount;
if (stake.amount < PROVIDER_STAKE_REQUIRED / 2) {
stake.active = false;
_revokeRole(SERVICE_ROLE, provider);
}
emit ProviderSlashed(provider, amount, reason);
}
} מדוע סטייקינג הוא הבסיס לטוקן שירות?
סטייקינג יוצר התחייבויות למשתתפי הרשת. ספקי שירות חייבים להחזיק טוקנים כערובה להתנהגות טובה. במקרה של הפרה — ענישה (slashing). זה נועל את ערך הטוקן בתוך המערכת האקולוגית. בהשוואה ל-buyback: סטייקינג לגישה יעיל פי 3–5 בשמירה על משתמשים.
תקופת צינון לביטול סטייקינג
ספקים לא צריכים להיות מסוגלים למשוך את הסטייק באופן מיידי. תקופת צינון — הגנה מפני התחמקות מענישה:
uint256 public constant UNSTAKE_COOLDOWN = 14 days;
mapping(address => uint256) public unstakeRequestedAt;
function requestUnstake() external {
require(providerStakes[msg.sender].active, "Not active");
unstakeRequestedAt[msg.sender] = block.timestamp;
providerStakes[msg.sender].active = false;
_revokeRole(SERVICE_ROLE, msg.sender);
}
function finalizeUnstake() external nonReentrant {
require(unstakeRequestedAt[msg.sender] > 0, "No unstake request");
require(
block.timestamp >= unstakeRequestedAt[msg.sender] + UNSTAKE_COOLDOWN,
"Cooldown not elapsed"
);
uint256 amount = providerStakes[msg.sender].amount;
providerStakes[msg.sender].amount = 0;
unstakeRequestedAt[msg.sender] = 0;
_transfer(address(this), msg.sender, amount);
} השוואת מנגנוני שמירת ערך
| מנגנון | יעילות | דוגמה |
|---|---|---|
| סטייקינג לגישה | גבוהה | BNB, FIL |
| Buyback ו-burn | בינונית | עמלה → buyback |
| מתג עמלות | גבוהה | פרוטוקולי AMM |
| תמריצים אינפלציוניים | נמוכה (ללא שירות) | DeFi 2.0 |
חלוקת היצע
חלוקה טיפוסית לטוקן שירות פרוטוקול:
| הקצאה | % | תקופת הבשלה (Vesting) |
|---|---|---|
| צוות ויועצים | 15–20% | 4 שנים, תקופת חסימה של שנה |
| משקיעים | 15–25% | 2–3 שנים, תקופת חסימה של 6 חודשים |
| מערכת אקולוגית/מענקים | 20–30% | לינארי 3–5 שנים |
| נזילות/DEX | 5–10% | ב-TGE או לפי הצורך |
| אוצר (Treasury) | 20–30% | הממשל מחליט |
| מכירה ציבורית / IDO | 5–15% | חלקית ב-TGE |
סך ההיצע ב-TGE צריך באופן אידיאלי לא לעלות על 15–20% מההיצע הכולל.
כיצד להימנע מדפוסים אנטי-מועילים בטוקני שירות?
Buyback חסר תועלת — רכישה חוזרת של טוקנים מהאוצר ללא הכנסות אמיתיות אינה יוצרת ערך. תלות מעגלית — טוקן נחוץ לשימוש בפרוטוקול, פרוטוקול נחוץ לקבלת הטוקן — לולאה סגורה. ממשל ללא כוח — טוקן ללא זכות לשנות פרמטרים של הפרוטוקול הוא דקורטיבי. אנו מתכננים מנגנונים, שכל אחד מהם מביא תועלת מדידה. כלכלת טוקן נכונה יכולה להגדיל את רווחיות ספקי השירות ב-30–50%.
כיצד אנו עובדים על פרויקט טוקן שירות
- ניתוח: קביעה אם נחוץ טוקן ERC20 ואיזה שירות הוא יספק.
- עיצוב: פיתוח כלכלת טוקן ומודלים כלכליים.
- יישום: כתיבת חוזים חכמים ב-Solidity באמצעות OpenZeppelin.
- בדיקות: כיסוי בבדיקות יחידה ובדיקות fuzz באמצעות Foundry.
- ביקורת: בדיקת קוד לפרצות (reentrancy, overflow וכו').
- פריסה ואימות ב-Etherscan.
- תמיכה: חודש של תמיכה טכנית לאחר ההשקה.
אם אתם מתכננים השקת טוקן, צרו קשר — נעזור לתכנן את הכלכלה וליישם את החוזים.
מה כלול בפיתוח טוקן שירות
- כלכלת טוקן: ניתוח ו-white paper
- חוזים חכמים: Solidity (ERC20, סטייקינג, burn, permit)
- בדיקות: Foundry (יחידה + fuzzing)
- פריסה ואימות ב-Etherscan
- אינטגרציה עם ארנקים (MetaMask, WalletConnect)
- תיעוד לצוות
- תמיכה טכנית למשך חודש לאחר ההשקה
צרו קשר להערכת פרויקט. קבלו ייעוץ לכלכלת טוקן.







