איך פועלת פלטפורמת IEO?
כל פלטפורמת IEO מתמודדת עם שלושה אתגרים קריטיים: חלוקה הוגנת של הקצאות, הגנה מפני מניפולציות ועמידה ברגולציה. האופן שבו אתה פותר这些问题 קובע את אמון המשקיעים ואת הצלחת הפרויקט. אנו מפתחים פלטפורמות IEO—פתרונות מלאים ל-Initial Exchange Offering שלא רק מוכרים טוקנים אלא מבטיחים אימות פרויקט, חלוקה הוגנת של הקצאות ואינטגרציה עם הבורסה. Binance Launchpad ו-KuCoin Spotlight הן דוגמאות למערכות כאלה. פלטפורמה מותאמת אישית נותנת לך שליטה מלאה על עמלות, תנאי מכירה ונזילות. אנו מלווים אותך מהקונספט ועד ההשקה, כולל ביקורת חוזה חכם. אנחנו בשוק כבר למעלה מ-5 שנים והעברנו יותר מ-15 פרויקטים של launchpad, כך שאנחנו מכירים את כל המלכודות.
רכיבי הפלטפורמה
| רכיב | אחריות |
|---|---|
| רישום פרויקטים | אימות ואחסון נתוני פרויקט |
| מנוע הקצאות | חלוקת מנות בין משתתפים |
| שער KYC/AML | אינטגרציה עם ספק אימות |
| חוזה מכירת טוקנים | ביצוע מכירה על-גבי הבלוקצ'יין |
| חוזה סטייקינג | סטייקינג של טוקני פלטפורמה למערכת דרגות |
| חוזה חלוקה | Vesting ותביעת טוקנים |
| לוח ניהול | ניהול פרויקטים ופרמטרי מכירה |
איך עובדת חלוקת ההקצאות
ישנן שתי גישות עיקריות.
הקצאה מובטחת
כל משתתף מקבל הקצאה מובטחת ביחס לדרגה שלו. זו שיטה פשוטה וצפויה, אבל חלק מהטוקנים עלולים להישאר לא נמכרים.
contract GuaranteedSale {
mapping(address => uint256) public maxAllocation;
mapping(address => uint256) public purchased;
function buy(uint256 amount) external payable {
require(saleActive(), "Sale not active");
require(purchased[msg.sender] + amount <= maxAllocation[msg.sender], "Exceeds allocation");
uint256 cost = amount * price;
require(msg.value >= cost, "Insufficient ETH");
purchased[msg.sender] += amount;
totalSold += amount;
if (msg.value > cost) payable(msg.sender).transfer(msg.value - cost);
}
} הגרלה עם רישום יתר
גישה הוגנת יותר כאשר הביקוש גבוה. משתתפים נרשמים, ולאחר מכן מתבצעת בחירה אקראית של זוכים ביחס לדרגה שלהם. בפועל, הגרלה באמצעות Chainlink VRF מייצרת פי 3 פחות תלונות על חוסר הוגנות בהשוואה להקצאה מובטחת במצב של רישום יתר. זה מאושר על ידי נתונים מ-launchpads מרכזיים—Polkastarter ו-TrustPad עברו להגרלה מסיבה זו.
למה Chainlink VRF הוא חובה
כדי להבטיח הגרלה הוגנת על-גבי הבלוקצ'יין, נדרש אקראיות ניתנת לאימות. contract GuaranteedSale { mapping(address => uint256) public maxAllocation; mapping(address => uint256) public purchased; function buy(uint256 amount) external payable { require(saleActive(), "Sale not active"); require(purchased[msg.sender] + amount <= maxAllocation[msg.sender], "Exceeds allocation"); uint256 cost = amount * price; require(msg.value >= cost, "Insufficient ETH"); purchased[msg.sender] += amount; totalSold += amount; if (msg.value > cost) payable(msg.sender).transfer(msg.value - cost); } } או blockhash יכולים להיות מנופלים על ידי מאמתים, ולכן אנו משתמשים ב-Chainlink VRF—תקן האבטחה לפלטפורמות launchpad.
contract LotteryAllocation is VRFConsumerBaseV2Plus {
mapping(uint256 => address[]) public tierParticipants;
mapping(address => bool) public isWinner;
uint256 public randomSeed;
function register() external {
require(registrationActive(), "Registration closed");
StakeInfo memory info = staking.stakes(msg.sender);
require(info.tier > 0, "No tier");
tierParticipants[info.tier].push(msg.sender);
}
function requestRandomness() external onlyOwner {
uint256 requestId = s_vrfCoordinator.requestRandomWords(
VRFV2PlusClient.RandomWordsRequest({
keyHash: keyHash,
subId: subscriptionId,
requestConfirmations: 3,
callbackGasLimit: 500000,
numWords: 1,
extraArgs: VRFV2PlusClient._argsToBytes(
VRFV2PlusClient.ExtraArgsV1({nativePayment: false})
)
})
);
}
function fulfillRandomWords(uint256, uint256[] calldata randomWords) internal override {
randomSeed = randomWords[0];
_selectWinners();
}
function _selectWinners() internal {
uint256 seed = randomSeed;
for (uint8 tier = 5; tier >= 1; tier--) {
uint256 winnersForTier = tierWinners[tier];
address[] storage participants = tierParticipants[tier];
uint256 shuffleLen = participants.length;
for (uint256 i = 0; i < winnersForTier && i < shuffleLen; i++) {
uint256 j = i + (uint256(keccak256(abi.encodePacked(seed, tier, i))) % (shuffleLen - i));
(participants[i], participants[j]) = (participants[j], participants[i]);
isWinner[participants[i]] = true;
seed = uint256(keccak256(abi.encodePacked(seed, i)));
}
}
}
} איך להקים מערכת דרגות
רוב הפלטפורמות המצליחות (Polkastarter, TrustPad) משתמשות במודל: ככל שמשתמש מחזיק יותר טוקני פלטפורמה בסטייקינג, כך עדיפות ההקצאה שלו גבוהה יותר. דרגות טיפוסיות: 100 טוקנים—ברונזה, 1000—כסף, 5000—זהב. כל דרגה נותנת מכפיל הקצאה: x1, x3, x10. מערכת כזו מגדילה את מעורבות המשתמשים פי 2 בהשוואה להקצאות קבועות.
contract TierStaking {
struct Tier {
uint256 minStake;
uint256 multiplier;
uint256 poolWeight;
}
Tier[] public tiers;
struct StakeInfo {
uint256 amount;
uint256 stakedAt;
uint256 lockEnd;
uint8 tier;
}
mapping(address => StakeInfo) public stakes;
function stake(uint256 amount, uint256 lockDuration) external {
require(lockDuration >= MIN_LOCK, "Lock too short");
token.safeTransferFrom(msg.sender, address(this), amount);
uint8 tier = calculateTier(amount);
stakes[msg.sender] = StakeInfo({
amount: amount,
stakedAt: block.timestamp,
lockEnd: block.timestamp + lockDuration,
tier: tier
});
emit Staked(msg.sender, amount, tier);
}
function calculateTier(uint256 amount) public view returns (uint8) {
for (uint8 i = uint8(tiers.length - 1); i >= 0; i--) {
if (amount >= tiers[i].minStake) return i;
}
return 0;
}
} אינטגרציית KYC/AML
פלטפורמת IEO חייבת לעמוד בדרישות רגולטוריות. אנו משתמשים בספקי SaaS: Fractal ID, Synaps או Sumsub. לאחר האימות, הכתובת מתווספת לרשימה לבנה על-גבי הבלוקצ'יין. גישה חלופית היא טוקני Soulbound (EIP-5484), שבהם סטטוס KYC מיוצג כ-NFT שאינו ניתן להעברה. צור קשר כדי לבחור את פתרון ה-KYC האופטימלי.
נאמנות וחלוקת כספים
תמורת המכירה לא צריכה להגיע ישירות לפרויקט—הגנה סטנדרטית לקונה. אנו משתמשים בנאמנות עם אבני דרך:
contract IEOEscrow {
struct Milestone {
string description;
uint256 releasePercent;
uint256 releaseTime;
bool approved;
uint256 approvalVotes;
uint256 rejectionVotes;
}
Milestone[] public milestones;
uint256 public totalRaised;
address public project;
function voteMilestone(uint256 milestoneId, bool approve) external {
require(projectToken.balanceOf(msg.sender) > 0, "Must hold tokens");
}
function releaseFunds(uint256 milestoneId) external {
Milestone storage ms = milestones[milestoneId];
require(ms.approved, "Not approved");
require(block.timestamp >= ms.releaseTime, "Too early");
uint256 amount = (totalRaised * ms.releasePercent) / 100;
payable(project).transfer(amount);
}
} רישום ונזילות לאחר מכירה
חלק מהכספים שגויסו מתווסף אוטומטית ל-DEX כדי לספק נזילות ראשונית. טוקני LP ננעלים לאחר מכן ל-180 יום.
function finalizeAndAddLiquidity() external onlyOwner {
require(saleFinished(), "Sale not finished");
uint256 liquidityETH = (totalRaised * liquidityPercent) / 100;
uint256 liquidityTokens = calculateLiquidityTokens(liquidityETH);
token.approve(address(uniswapRouter), liquidityTokens);
uniswapRouter.addLiquidityETH{value: liquidityETH}(
address(token),
liquidityTokens,
0,
0,
address(this),
block.timestamp + 3600
);
lpLockEnd = block.timestamp + 180 days;
} טעויות נפוצות בפיתוח Launchpad
- שימוש ב-
block.timestampפשוט להגרלה—זה מאפשר למאמתים לתמרן את התוצאה. במקום זאת, השתמש באקראיות הוגנת הניתנת לאימות (Chainlink VRF): הגרלה עם VRF יעילה פי 3 במניעת מחלוקות. - הגדרת vesting שגויה—אם ניתן למשוך טוקני פרויקט באופן מיידי, זה מגדיל את הסיכון ל-dumping. הגדר vesting עם חלוקה ליניארית על פני 6–12 חודשים.
- אין נאמנות—כספי משקיעים הולכים ישירות לפרויקט, ואם התנאים לא מתקיימים, לא ניתן להחזירם. נאמנות עם אבני דרך היא חובה.
- בדיקות אופטימיזציית גז לא מספקות—חוזים לא אופטימליים יכולים לעלות למשתמשים בעמלות נוספות (במכירה גדולה, עמלות יכולות לעלות על $50,000). בצע בדיקות ואופטימיזציה יסודיות.
מה כלול
- ביקורת דרישות ומפרט טכני
- פיתוח חוזים חכמים לסטייקינג, מכירה ונאמנות
- Backend API ולוח ניהול
- אינטגרציית KYC/AML
- Frontend למשתמשים
- ביקורת אבטחה של חוזים על ידי צדדים שלישיים (עלות החל מ-$30k)
- בדיקות והשקה
ציר זמן פיתוח
| רכיב | ציר זמן |
|---|---|
| חוזים חכמים (סטייקינג, מכירה, נאמנות, חלוקה) | 6–8 שבועות |
| Backend API + לוח ניהול | 4–6 שבועות |
| אינטגרציית KYC | 1–2 שבועות |
| Frontend (ממשק משתמש) | 4–6 שבועות |
| ביקורת חוזה חכם | 3–4 שבועות |
| בדיקות + QA | 2–3 שבועות |
המחזור המלא מהמפרט ועד ההשקה אורך 4–5 חודשים. תקציב הביקורת תלוי במורכבות ובצוות הנבחר. צור קשר להערכת הפרויקט שלך. קבל ייעוץ על הארכיטקטורה.







