משגר מותג לבן פרמטרי ל-IDO/ICO

השקת פלטפורמת IDO/ICO נתקלת לא פעם בפתרונות תבניתיים חסרי גמישות שמאטים את קנה המידה. אנחנו בונים launchpads מותג לבן פרמטריים שמתאימים למודל העסקי שלך ללא צורך בשכתוב קוד. הצוות שלנו מספק את הפרויקט במפתח מלא — מארכיטקטורת חוזים חכמים ועד השקה ותמיכה שוטפת — ומעניק בסיס אמין לצמיחת הפלטפורמה שלך.

שירותי פיתוח בלוקצ'יין

שאלות נפוצות

העבודות האחרונות

  • פיתוח אתר חברה B2B ADVANCE
    פיתוח אתר חברה B2B ADVANCE
    1481
  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1336
  • פיתוח אתר עבור BELFINGROUP
    פיתוח אתר עבור BELFINGROUP
    1034
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1293
  • עיצוב לוגו לחברת B2B Advance
    עיצוב לוגו לחברת B2B Advance
    738
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1032

ארכיטקטורה טכנית של Launchpad במותג לבן

Launchpad במותג לבן אינו עותק של Polkastarter עם לוגו חדש. הצלחת הפלטפורמה תלויה בנזילות ובקהילה, לא בהעתקת קוד. אנו מפתחים פתרונות פרמטריים המאפשרים בידול באמצעות זרם העסקאות. המורכבות הטכנית טמונה בגמישות: החוזים תומכים במודלי בריכה שונים, מערכות דרגות ורב-רשתות ללא צורך בשכתוב קוד. פרויקטים רבים נתקלים בבעיות מדרגיות: הוספת סוג בריכה חדש דורשת פריסת חוזה נפרד, העברת נתונים ובדיקת אבטחה חוזרת. מפעל הבריכות שלנו פותר זאת באמצעות חוזה פרמטרי יחיד, ומפחית את זמן הפיתוח ב-50%.

במהלך הרקורד שלנו יישמנו יותר מ-10 Launchpad במותג לבן עבור פרויקטים מהאיחוד האירופי ומאסיה. הארכיטקטורה המודולרית מאפשרת השקת פלטפורמה תוך 6 שבועות, עם הוספת תכונות באופן אינקרמנטלי. החיסכון הממוצע בהשוואה לפיתוח פנימי הוא 40-60%. יתרה מכך, 95% מהלקוחות מציינים הפחתה של פי 2 בעלויות התמיכה הודות לפרמטריזציה.

לפי תיעוד OpenZeppelin, פרמטריזציה של חוזים מפחיתה את הסיכונים לשגיאות פריסה.

בעיות שאנו פותרים

פרמטריזציה במקום עותקים. העתקת קוד מ-Polkastarter או DAO Maker מובילה לבעיות אבטחה ומדרגיות. כל סוג בריכה חדש דורש פריסת גרסת חוזה חדשה והעברת נתונים. מפעל הבריכות שלנו יוצר סוגי בריכות שונים עם פרמטרים שונים באמצעות חוזה יחיד. זה מפחית את עלויות התמיכה ב-50% ומפשט את הבדיקה פי 2. הגישה הפרמטרית מהירה פי 2 מהעתקה בעת השקת מודלים חדשים.

מערכת דרגות עם הגרלה. עבור דרגות נמוכות, אי אפשר להבטיח הקצאה לכולם. אנו משתמשים ב-Chainlink VRF לאקראיות ניתנת לאימות — מה שמונע מניפולציות. ערבוב Fisher-Yates מבטיח בחירת זוכים הוגנת. גישה זו מבטיחה שגם דרגה 1 עם החזקה מינימלית יש לה סיכוי לקבל הקצאה, מה שמגביר את המעורבות ב-30%.

רב-רשתות ללא כפילות קוד. אנו פורסים את אותו קוד בסיס על Ethereum, BNB Chain, Polygon, Arbitrum ו-Avalanche. הפרונטאנד מחליף רשת באמצעות wagmi, והבקאנד מאגד נתונים באמצעות multicall. זה מפחית את זמן הפריסה פי 3 בהשוואה לפתרונות מפוצלים.

כיצד לפתח Launchpad במותג לבן במפתח פתוח

השלב הראשון הוא בדיקת דרישות: אילו רשתות, אילו סוגי בריכות (Fixed Price, Dutch Auction, Overflow), האם יש צורך בטוקן פלטפורמה, כיצד תעבוד KYC. על בסיס זה אנו מתכננים את מערכת החוזים.

// Фабрика пулов — центральный контракт платформы
contract LaunchpadFactory is AccessControl, Pausable {
    bytes32 public constant OPERATOR_ROLE = keccak256("OPERATOR_ROLE");

    // реестр всех пулов, созданных через эту фабрику
    address[] public allPools;
    mapping(address => bool) public isValidPool;
    mapping(address => address[]) public projectPools; // project → их пулы

    // параметры платформы
    address public feeRecipient;
    uint256 public platformFee; // basis points (200 = 2% от raise)

    // whitelist approved sale token
    mapping(address => bool) public approvedTokens;

    event PoolCreated(
        address indexed pool,
        address indexed saleToken,
        address indexed creator,
        PoolType poolType
    );

    enum PoolType { FIXED_PRICE, DUTCH_AUCTION, OVERFLOW }

    function createPool(
        PoolType poolType,
        bytes calldata poolParams
    ) external onlyRole(OPERATOR_ROLE) whenNotPaused returns (address pool) {
        if (poolType == PoolType.FIXED_PRICE) {
            FixedPricePool.Config memory config = abi.decode(poolParams, (FixedPricePool.Config));
            require(approvedTokens[address(config.saleToken)], "Token not approved");
            pool = address(new FixedPricePool(config, feeRecipient, platformFee));
        } else if (poolType == PoolType.DUTCH_AUCTION) {
            pool = address(new DutchAuctionPool(abi.decode(poolParams, (DutchAuctionPool.Config)), feeRecipient, platformFee));
        } else {
            pool = address(new OverflowPool(abi.decode(poolParams, (OverflowPool.Config)), feeRecipient, platformFee));
        }

        allPools.push(pool);
        isValidPool[pool] = true;
        emit PoolCreated(pool, address(0), msg.sender, poolType);
        return pool;
    }
}

מדוע פרמטריזציה של חוזים חשובה

ללא פרמטריזציה, כל שינוי בסוג בריכה או במערכת דרגות דורש פריסת גרסת חוזה חדשה והעברת נתונים. עם מפעל פרמטרי, המנהל מגדיר פרמטרי בריכה דרך פאנל ניהול ללא שינויי קוד. זה מפחית את עלויות הגז לפריסה ומפשט את בדיקת האבטחה. לפי הנתונים שלנו, פרמטריזציה מפחיתה את מספר נקודות התורפה הפוטנציאליות ב-60%.

מערכת דרגות עם טוקן פלטפורמה

החזקת טוקן פלטפורמה היא מנגנון השימור העיקרי של משתמשים. אנו מיישמים מערכת דרגות גמישה עם מקדמי משקל והגרלה לדרגות נמוכות.

contract LaunchpadStaking is ReentrancyGuard, Ownable {
    IERC20 public immutable platformToken;

    struct TierConfig {
        string name; // "Bronze", "Silver", "Gold", "Diamond"
        uint256 minStake; // минимальный stake в platform token
        uint256 weight; // вес при распределении аллокаций (basis points)
        bool guaranteed; // гарантированная аллокация или lottery
        uint256 multiplier; // множитель аллокации (10000 = 1x)
    }

    TierConfig[] public tiers;

    struct StakeInfo {
        uint256 amount;
        uint256 stakedAt;
        uint256 lockUntil; // lock период перед IDO snapshots
    }

    mapping(address => StakeInfo) public stakes;

    uint256 public snapshotBlock; // блок для snapshot перед IDO
    mapping(uint256 => mapping(address => uint256)) public snapshotStakes; // snapshot tier для конкретного IDO

    function takeSnapshot(uint256 poolId) external onlyOwner {
        // фиксируем балансы на момент snapshot
        // дальнейшие изменения не влияют на аллокацию в этом IDO
        snapshotBlock = block.number;
        emit SnapshotTaken(poolId, block.number);
    }

    function getUserTierAtSnapshot(address user, uint256 poolId) external view returns (uint256) {
        uint256 stakedAmount = snapshotStakes[poolId][user];
        for (uint256 i = tiers.length; i > 0; i--) {
            if (stakedAmount >= tiers[i-1].minStake) return i - 1;
        }
        return type(uint256).max;
    }
}

עבור דרגות 1/2 (החזקה נמוכה), אנו משתמשים בהגרלה באמצעות Chainlink VRF. זה מבטיח אקראיות ניתנת לאימות ללא סיכון למניפולציות.

contract AllocationLottery {
    // Chainlink VRF для верифицируемой случайности
    VRFCoordinatorV2Interface public coordinator;
    bytes32 public keyHash;
    uint64 public subscriptionId;

    mapping(uint256 => address[]) public lotteryParticipants; // poolId → participants
    mapping(uint256 => uint256) public requestToPool;

    function requestLotteryResult(uint256 poolId) external onlyOwner returns (uint256 requestId) {
        requestId = coordinator.requestRandomWords(
            keyHash,
            subscriptionId,
            3, // confirmations
            100000, // gas limit для callback
            1 // numWords
        );
        requestToPool[requestId] = poolId;
    }

    function fulfillRandomWords(uint256 requestId, uint256[] memory randomWords) internal override {
        uint256 poolId = requestToPool[requestId];
        address[] storage participants = lotteryParticipants[poolId];
        uint256 winners = winnersCount[poolId];
        uint256 rand = randomWords[0];

        // Fisher-Yates shuffle для честного выбора победителей
        for (uint256 i = 0; i < winners && i < participants.length; i++) {
            uint256 j = i + (rand % (participants.length - i));
            (participants[i], participants[j]) = (participants[j], participants[i]);
            rand = uint256(keccak256(abi.encode(rand, i)));
        }

        // первые `winners` адресов в массиве — победители
        emit LotteryCompleted(poolId, winners);
    }
}

תמיכה רב-רשתית

Launchpad במותג לבן מודרני פועל על פני מספר רשתות. אנו פורסים את אותו קוד בסיס על Ethereum, BNB Chain, Polygon, Arbitrum ו-Avalanche. הפרונטאנד מחליף רשת באמצעות wagmi, והבקאנד מאגד נתונים באמצעות multicall.

// wagmi config для multi-chain
import { createConfig, http } from "wagmi";
import { mainnet, polygon, bsc, arbitrum, avalanche } from "wagmi/chains";

export const config = createConfig({
  chains: [mainnet, polygon, bsc, arbitrum, avalanche],
  transports: {
    [mainnet.id]: http(process.env.ETH_RPC),
    [polygon.id]: http(process.env.POLYGON_RPC),
    [bsc.id]: http(process.env.BSC_RPC),
    [arbitrum.id]: http(process.env.ARB_RPC),
    [avalanche.id]: http(process.env.AVAX_RPC),
  },
});

שילוב KYC/AML

רוב תחומי השיפוט דורשים KYC. אנו משלבים את Sumsub או Synaps: הפרונטאנד שואל סטטוס דרך API, והמנהל יכול לרשום אישור על השרשרת.

// API endpoint для получения KYC status
app.get("/api/kyc/status/:address", async (req, res) => {
  const { address } = req.params;
  const kycRecord = await db.kyc.findOne({ walletAddress: address.toLowerCase() });
  if (!kycRecord || kycRecord.status !== "approved") {
    return res.json({ approved: false, reason: kycRecord?.rejectionReason });
  }
  res.json({ approved: true, tier: kycRecord.accreditationLevel });
});

פאנל ניהול וניטור

מפעילים זקוקים לכלי ניהול. אנו מספקים פאנל ניהול עם סעיפים:

סעיף פונקציות
ניהול בריכות יצירה/עריכה/סגירת בריכות
KYC לפרויקטים אימות פרויקטים המבקשים IDO
רשימת לבן העלאה וניהול רשימות לבן
הקצאה התאמות הקצאה ידניות
הגדרת דרגות הגדרת דרגות והחזקה מינימלית
אנליטיקה גיוסים לפי בריכה, משתמשים פעילים, המרות
ניהול עמלות הגדרת עמלות פלטפורמה

השוואת סוגי בריכות

סוג מנגנון סיכונים מקרה שימוש
Fixed Price מחיר קבוע, תור נמוך, כולם מקבלים הקצאה IDO פשוטים
Dutch Auction המחיר יורד עם הזמן בינוני, משתתפים ממתינים למחיר טוב יותר גילוי מחיר
Overflow חלוקה פרופורציונלית נמוך, חלוקה הוגנת פרויקטים פופולריים

תהליך עבודה ומה כלול

  1. אנליטיקה — פגישה עם מהנדסים, דיון במטרות ודרישות.
  2. עיצוב — ארכיטקטורת חוזים חכמים וסכמת אינטראקציה.
  3. פיתוח — חוזים ב-Solidity 0.8.x, Foundry לבדיקות ובדיקת אבטחה.
  4. אינטגרציה — פרונטאנד, פאנל ניהול, KYC ורב-רשתות.
  5. בדיקות — בדיקות יחידה, בדיקות אינטגרציה ובדיקת אבטחה (Slither, Mythril).
  6. פריסה — חוזים נפרסים לרשתות שנבחרו, פרונטאנד מתארח.
  7. תמיכה — ניטור, תיקוני באגים ועדכונים.

שים לב שהעבודה כוללת:

  • קוד מקור של חוזים חכמים (Solidity)
  • תיעוד פריסה וניהול
  • גישה למאגר עם פרונטאנד ובקאנד
  • הדרכת צוות מפעילים (2 מפגשים)
  • תמיכה טכנית למשך 3 חודשים
פרטי בדיקת אבטחה

החוזים עוברים בדיקת אבטחה באמצעות Slither, Mythril ואימות פורמלי. אנו גם מבצעים fuzzing עם Echidna. תוצאות אופייניות: 0 נקודות תורפה קריטיות, 2-3 בעיות בינוניות שנסגרות לפני הפריסה.

צור קשר להערכת פרויקט — נכין הצעה תוך יומיים. בקש ייעוץ על ארכיטקטורת ה-ICO launchpad שלך היום.