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

Проектируем и деплоим TRC-20 токены на Tron Вы разработали прототип DeFi-протокола на Ethereum, но транзакционные издержки съедают бюджет? Или нужно сделать массовую раздачу токенов пользователям из Азии? В обоих случаях стоит присмотреться к Tron — блокчейну, где живёт крупнейший пул USDT, а ком

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

Часто задаваемые вопросы

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

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

Проектируем и деплоим 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 токена уже сегодня — обсудим детали на консультации.