Запускаем TRC-20 токен на Tron: от контракта до листинга

Проектируем и разрабатываем блокчейн-решения полного цикла: от архитектуры смарт-контрактов до запуска DeFi-протоколов, NFT-маркетплейсов и криптобирж. Аудит безопасности, токеномика, интеграция с существующей инфраструктурой.
Показано 1 из 1Все 1305 услуг
Запускаем TRC-20 токен на Tron: от контракта до листинга
Простой
~2-3 дня
Часто задаваемые вопросы

Направления блокчейн-разработки

Этапы блокчейн-разработки

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1374
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1256
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    965
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1208
  • image_logo-advance_0.webp
    Разработка логотипа компании B2B Advance
    667
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    954

Проектируем и деплоим TRC-20 токены на Tron

Вы разработали прототип DeFi-протокола на Ethereum, но транзакционные издержки съедают бюджет? Или нужно сделать массовую раздачу токенов пользователям из Азии? В обоих случаях стоит присмотреться к Tron — блокчейну, где живёт крупнейший пул USDT, а комиссии в десятки раз ниже эфириумных. Мы специализируемся на разработке смарт-контрактов для Tron и выпустили более 50 TRC-20 токенов — от DeFi до NFT. TRC-20 — стандарт токенов на Tron, намеренно скопированный с ERC-20 (см. Протокол Tron). Если вы знакомы с Solidity и OpenZeppelin, разработка TRC-20 занимает дни, не недели.

Когда Tron выгоднее Ethereum?

Tron предлагает в 10 раз более низкие комиссии по сравнению с Ethereum, что критично для высокочастотных транзакций или массовых выплат. Кроме того, аудитория в Азии активно использует Tron-кошельки (TronLink). Выбор Tron оправдан, когда ваш проект ориентирован на розничных пользователей с низким бюджетом на газ. Например, игра с тысячами ежедневных транзакций: на Ethereum вы заплатите $1-5 за каждую, на Tron — $0.01-0.05. Экономия более 90% на комиссиях — это не маркетинг, а расчёт.

В чём отличия TRC-20 от ERC-20?

Tron использует Solidity-совместимый компилятор — большинство ERC-20 кода переносится без изменений. Но есть принципиальные различия:

Energy и Bandwidth вместо Gas — в Tron два ресурса:

  • Bandwidth — для обычных переводов TRX. Каждый аккаунт получает ~600 bandwidth бесплатно в день.
  • Energy — для выполнения смарт-контрактов. Можно заморозить TRX чтобы получить Energy, или платить TRX напрямую.

Типичная транзакция TRC-20 transfer стоит ~10–30 energy. Деплой контракта — несколько тысяч. При дефиците Energy транзакция всё равно выполнится, но пользователь платит TRX по рыночному курсу Energy.

TRC-20 vs TRC-10 — TRC-10 это native token без смарт-контракта (как TRX, только custom). TRC-20 — смарт-контракт с ERC-20 интерфейсом. Для большинства use cases нужен TRC-20.

Адреса — Tron адреса начинаются с T (Base58Check encoding), не hex как Ethereum. В коде смарт-контракта адреса те же 20 байт, просто представление разное.

Сравнение TRC-20 и ERC-20

Характеристика TRC-20 (Tron) ERC-20 (Ethereum)
Ресурсы Energy/Bandwidth Gas
Стоимость транзакции ~$0.01-0.05 (Energy) ~$1-5+ (Gas)
Скорость блоков ~3 секунды ~12 секунд
Поддержка кошельков TronLink, TronWallet MetaMask, WalletConnect

Сравнение стоимости деплоя и перевода

Операция Tron Ethereum
Деплой контракта ~$5-10 ~$100-500
Простой перевод ~$0.01-0.05 ~$1-5
Вызов смарт-контракта ~$0.01 ~$2-10

Как мы разрабатываем токены

Наш процесс включает:

  1. Анализ требований — определение функционала (mint/burn, pausable, snapshot).
  2. Написание контракта — используем Solidity 0.8.x с OpenZeppelin или пишем с нуля.
  3. Тестирование на Shasta testnet — покрываем основные сценарии transfer, approve, и edge cases.
  4. Деплой и верификация — публикуем код на Tronscan, верифицируем контракт.
  5. Интеграция — подключаем TronWeb к вашему frontend/backend.
  6. Документация — предоставляем описание методов и адреса.

Техническая реализация: пример контракта и деплой

Пример контракта

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.6;

// На Tron используется tronide.io или TronBox
// Импорты OpenZeppelin работают через TronBox

contract MyTRC20 {
    string public name;
    string public symbol;
    uint8 public decimals = 6;  // 6 decimals — норма для Tron (как USDT TRC-20)
    uint256 public totalSupply;
    
    mapping(address => uint256) public balanceOf;
    mapping(address => mapping(address => uint256)) public allowance;
    
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
    
    constructor(
        string memory _name,
        string memory _symbol,
        uint256 _initialSupply
    ) {
        name = _name;
        symbol = _symbol;
        totalSupply = _initialSupply * 10 ** decimals;
        balanceOf[msg.sender] = totalSupply;
        emit Transfer(address(0), msg.sender, totalSupply);
    }
    
    function transfer(address to, uint256 value) external returns (bool) {
        require(balanceOf[msg.sender] >= value, "Insufficient balance");
        balanceOf[msg.sender] -= value;
        balanceOf[to] += value;
        emit Transfer(msg.sender, to, value);
        return true;
    }
    
    function approve(address spender, uint256 value) external returns (bool) {
        allowance[msg.sender][spender] = value;
        emit Approval(msg.sender, spender, value);
        return true;
    }
    
    function transferFrom(address from, address to, uint256 value) external returns (bool) {
        require(balanceOf[from] >= value, "Insufficient balance");
        require(allowance[from][msg.sender] >= value, "Insufficient allowance");
        balanceOf[from] -= value;
        balanceOf[to] += value;
        allowance[from][msg.sender] -= value;
        emit Transfer(from, to, value);
        return true;
    }
}

Деплой через TronBox

// migrations/2_deploy_token.js
const MyTRC20 = artifacts.require("MyTRC20");

module.exports = function(deployer, network, accounts) {
    deployer.deploy(
        MyTRC20,
        "My Token",
        "MTK",
        1000000  // 1 млн токенов
    );
};
# tronbox-config.js — конфигурация сети
module.exports = {
    networks: {
        shasta: {  // тестнет
            privateKey: process.env.PRIVATE_KEY,
            userFeePercentage: 100,
            feeLimit: 1000000000,  // 1000 TRX max fee
            fullHost: "https://api.shasta.trongrid.io",
            network_id: "2"
        },
        mainnet: {
            privateKey: process.env.PRIVATE_KEY_MAINNET,
            userFeePercentage: 100,
            feeLimit: 1000000000,
            fullHost: "https://api.trongrid.io",
            network_id: "1"
        }
    }
};

# Деплой
tronbox migrate --network shasta

Как защитить контракт от атак?

Используйте статический анализатор Slither и фаззинг тестирование (Echidna). Мы включаем аудит кода в каждую поставку. После аудита вы получаете отчёт о найденных уязвимостях и их исправлении. Типичные проблемы: reentrancy, переполнение uint, неправильный расчёт decimals. Мы гарантируем отсутствие критических уязвимостей перед релизом.

Чек-лист перед деплоем
  • Проверить decimals: обычно 6 или 18.
  • Убедиться, что totalSupply не превышает лимит.
  • Протестировать approve + transferFrom на тестнете.
  • Проверить, что owner имеет право mint (если применимо).
  • Заморозить достаточно TRX для покрытия Energy.

Интеграция с TronWeb и листинг на JustSwap

import TronWeb from "tronweb";

const tronWeb = new TronWeb({
    fullHost: "https://api.trongrid.io",
    headers: { "TRON-PRO-API-KEY": process.env.TRONGRID_API_KEY },
    privateKey: process.env.PRIVATE_KEY  // только на бэкенде
});

// Получить баланс
const contract = await tronWeb.contract().at("TContractAddress...");
const balance = await contract.balanceOf("TUserAddress...").call();
console.log("Balance:", tronWeb.fromSun(balance));  // конвертация decimals

// Transfer
const tx = await contract.transfer(
    "TRecipientAddress...",
    tronWeb.toSun(100)  // 100 токенов с учётом decimals
).send({
    feeLimit: 100_000_000,  // 100 TRX fee limit
    callValue: 0,
    shouldPollResponse: true
});

Для листинга на JustSwap (DEX на Tron, аналог Uniswap v2):

// Добавление ликвидности
const routerAddress = "TXF8e7cL5..."; // JustSwap Router
const router = await tronWeb.contract(JUSTSWAP_ROUTER_ABI).at(routerAddress);

// Сначала approve токена для router
await tokenContract.approve(routerAddress, ethers.MaxUint256).send();

// Добавить ликвидность TOKEN/TRX
await router.addLiquidityTRX(
    tokenContractAddress,
    tokenAmount,    // количество токенов
    tokenAmountMin, // slippage tolerance
    trxAmountMin,
    Math.floor(Date.now() / 1000) + 600  // deadline
).send({ callValue: trxAmount });  // TRX отправляется как callValue

Верификация контракта после деплоя обязательна — через Tronscan (аналог Etherscan для Tron). Без верификации пользователи не видят исходный код и не доверяют токену.

Сроки и стоимость

Срок разработки стандартного TRC-20 токена: 3–7 рабочих дней включая тестирование на Shasta testnet и деплой с верификацией. Для сложных контрактов (с дополнительными механиками) сроки увеличиваются до 10–14 дней. Стоимость рассчитывается индивидуально — зависит от сложности контракта и необходимости аудита.

Закажите разработку TRC-20 токена уже сегодня — обсудим детали на консультации.

Разработка токенов: ERC-20, токеномика, вестинг

«ERC-20 — это просто» — фраза, после которой начинаются проблемы. Базовый transfer написать несложно. Но токен, у которого через шесть месяцев не происходит инфляционный коллапс, governance работает как задумано, а вестинг нельзя обойти через хитрую схему с делегированием — это уже проектирование.

ERC-20: что под капотом

Стандарт ERC-20 — девять функций. Сложность начинается с расширений:

ERC-20Permit (EIP-2612) — gasless approve через подпись. Пользователь подписывает permit(owner, spender, value, deadline, v, r, s) off-chain, spender вызывает permit() + transferFrom() в одной транзакции. Это убирает отдельный approve step. Но: подпись можно перехватить и использовать — нужен deadline и проверка nonce.

ERC-20Votes (EIP-5805) — snapshot балансов для governance. Checkpoint-система хранит историю балансов по номеру блока. getPastVotes(address, blockNumber) — баланс на момент создания proposal, а не текущий. Это предотвращает flash loan governance attack: нельзя занять токены и проголосовать ими в одной транзакции.

Rebasing токены (stETH, Ampleforth) — balanceOf меняется автоматически через изменение internal shares ratio. Высокая сложность интеграции: большинство DeFi протоколов не работают корректно с rebasing без wrapping в non-rebasing версию.

Fee-on-transfer токены — при каждом transfer снимается процент. Ломают AMM расчёты: пул получает меньше, чем ожидал. Uniswap v2/v3 не поддерживают fee-on-transfer нативно — нужны специальные pair/router.

Tokenomics: где математика превращается в экономику

Токеномика — это не таблица в Excel с суммой 100%. Это модель инцентивов, которая либо работает в долгосрочной перспективе, либо создаёт давление продаж которое убьёт проект.

Emission schedule и инфляция

Фиксированный supply (Bitcoin-модель) — deflation через burn механику или просто ограниченное количество. Подходит для store-of-value или utility токенов с ограниченным спросом на новые токены.

Инфляционная модель (Ethereum post-Merge, Curve) — новые токены выпускаются для стимулирования участников. Нужен баланс: emission должен быть ниже или равен value capture протоколом. Если протокол зарабатывает $100k/месяц, а эмиссия в рыночной стоимости $500k/месяц — постоянное давление продаж неизбежно.

Halving schedules (Bitcoin-style) — уменьшение emission со временем. Создаёт предсказуемость, но требует что утилити токена росла чтобы компенсировать падающие rewards для stakers/validators.

Supply distribution

Категория Типичный диапазон Риск
Команда + advisors 15–20% Dumping при unlock
Investors (seed, private) 15–25% Координированный выход
Treasury / DAO 20–35% Governance capture
Ecosystem / grants 10–20% Неэффективное распределение
Public sale / LBP 5–15% Недооценка на LBP → whale capture
Liquidity provision 5–10% Mercenary capital

Нет универсальной формулы. Есть принцип: никакой одной сущности не должно принадлежать >33% voting power при запуске. Иначе governance — фикция.

Vesting контракты: детали имеют значение

Linear vesting с cliff — стандарт для команды и инвесторов. cliff — период после TGE, в течение которого ничего не доступно. После cliff: линейный unlock до duration.

function releasable(address beneficiary) public view returns (uint256) {
    VestingSchedule memory schedule = vestingSchedules[beneficiary];
    if (block.timestamp < schedule.cliff) return 0;

    uint256 elapsed = block.timestamp - schedule.cliff;
    uint256 vestingDuration = schedule.duration - (schedule.cliff - schedule.start);
    uint256 vested = schedule.totalAmount * elapsed / vestingDuration;

    return vested - schedule.released;
}

Типичные ошибки при реализации:

Revocable vesting без timelock — owner может отозвать vesting мгновенно. Если owner key скомпрометирован или команда недобросовестна — все unvested токены могут быть отозваны. Решение: revocation через multisig + governance vote.

Cliff не блокирует governance права — если используется ERC-20Votes, recipient может делегировать voting power с первого дня, даже если токены ещё не unlocked. Нужно явно разделить voting power и claim logic.

Отсутствие emergency pause — если обнаружена уязвимость в vesting контракте, нужна возможность приостановить claim. Pausable + timelock на unpause.

Liquidity Bootstrapping

Запуск ликвидности — критический момент. Три основных подхода:

Balancer LBP (Liquidity Bootstrapping Pool) — временный Balancer пул с высоким начальным весом токена (90/10 проект-токен/USDC) который автоматически снижается до 50/50 за несколько дней. Создаёт нисходящее ценовое давление, препятствуя ботам скупить всё по одной цене. После LBP ликвидность переносится в постоянный пул.

Fjord Foundry — специализированная платформа для LBP и fair launches. Меньше операционного overhead чем прямая интеграция с Balancer.

Uniswap v3 с ограниченным range — добавить ликвидность в узкий диапазон вокруг начальной цены. Высокая capital efficiency, но требует активного управления range.

TWAMM (Time-Weighted AMM) — механика для постепенной продажи/покупки больших объёмов без slippage. Paradigm предложил, реализован в FraxSwap.

Governance токены и voting механики

OpenZeppelin Governor — стандартная реализация on-chain governance. Модульная архитектура: GovernorVotes для counting, GovernorTimelockControl для timelock execution, GovernorSettings для изменяемых параметров.

Quorum — минимальный процент supply для валидности голосования. Слишком высокий quorum = apathy failure (не набирается голосов). Слишком низкий = whale capture. Compound установил quorum 400k COMP (4% supply) — на практике достигается редко без координации крупных holders.

Flash loan governance attack — атакующий занимает токены через flash loan, делегирует их себе, создаёт proposal или голосует, возвращает токены. ERC-20Votes с snapshot по номеру блока полностью блокирует это: нужно иметь токены на момент создания snapshot, который берётся в момент создания proposal.

Delegation — пользователи с малыми балансами часто не голосуют. Liquid delegation (как в Optimism) позволяет делегировать voting power конкретным addresses (delegates) без передачи ownership токенов.

Стек для токен-разработки

Контракты: Solidity 0.8.x, OpenZeppelin Contracts 5.x (ERC20, ERC20Permit, ERC20Votes, Governor, TimelockController, TokenVesting)

Аудит токеномики: Python модели с симуляцией emission/demand, cadCAD для complex systems modeling

Деплой и управление: Foundry scripts, Gnosis Safe для treasury, OpenZeppelin Defender для автоматизации

Аналитика: Dune Analytics для on-chain метрик, Token Terminal для protocol revenue

Процесс

Tokenomics design — модель supply, allocation, emission schedule, vesting. Стресс-тестирование сценариев (bear market, whale exit, governance capture attempt).

Контракт разработка — ERC-20 + extensions, vesting, governance. Foundry fuzz тесты на vesting calculations, governance thresholds.

Аудит — особое внимание на governance attack vectors, vesting bypass, permit replay attacks.

LBP / launch — выбор механики, настройка параметров, мониторинг первых 24 часов.

Post-launch — мониторинг supply distribution через Dune, governance participation metrics, treasury management.

Сроки

  • ERC-20 с permit и basic governance: 2–3 недели
  • Vesting контракт с revocation и cliff: 2–4 недели
  • Полный governance (Governor + Timelock + Token): 4–7 недель
  • Токен + LBP + governance + vesting: 8–14 недель