Розробка системи листинга токенів
Система листинга токенів — це процес та інфраструктура для додавання нових торговельних активів на біржу. Включає форму заявки, перевірки due diligence, технічні інтеграції (новий канал депозиту/виведення), конфігурацію торговельних пар та нарешті публічний анонс. Кожен етап вимагає як технічної, так і операційної роботи.
Процес листинга
Етапи від заявки до торгів
1. Submission (1-2 дні)
└── Команда проекту заповнює форму листинга
└── Завантажує документацію
2. Initial Review (3-7 днів)
└── Перевірка комплектності документів
└── Базовий AML скринінг контрактів/гаманців
3. Due Diligence (7-21 день)
└── Технічний аудит контракту
└── Верифікація команди
└── Правова/compliance перевірка
└── Аналіз ринку
4. Commercial Terms (2-5 днів)
└── Плата за листинг (або нема)
└── Зобов'язання щодо market making
└── Умови lock-up токенів команди
5. Technical Integration (3-10 днів)
└── Налаштування депозиту/виведення
└── Конфігурація торговельної пари
└── Тестування в staging
6. Soft Launch (1-2 дні)
└── Відкриття депозитів
└── Pre-market ціноутворення (опціонально)
7. Trading Start
└── Відкриття торгів
└── Публічний анонс
Перевірки Due Diligence
Аналіз Smart Contract
class SmartContractAnalyzer:
async def analyze(self, contract_address: str, blockchain: str) -> ContractReport:
checks = {}
# 1. Перевірка верифікації джерела
checks['source_verified'] = await self.is_source_verified(contract_address, blockchain)
# 2. Виявлення honeypot — чи можна продати токен?
checks['honeypot'] = await self.check_honeypot(contract_address, blockchain)
# 3. Права власності скасовані?
checks['owner_address'] = await self.get_owner(contract_address, blockchain)
checks['ownership_renounced'] = checks['owner_address'] in [
'0x0000000000000000000000000000000000000000',
'0x000000000000000000000000000000000000dead'
]
# 4. Перевірка блокування ліквідності
checks['liquidity_locked'] = await self.check_liquidity_lock(contract_address)
# 5. Небезпечні функції (mint, blacklist, pause)
checks['has_mint'] = await self.check_function_exists(contract_address, 'mint')
checks['has_blacklist'] = await self.check_function_exists(contract_address, 'blacklist')
checks['has_pause'] = await self.check_function_exists(contract_address, 'pause')
# 6. Результати зовнішніх аудитів
checks['audit_reports'] = await self.find_audit_reports(contract_address)
# Загальна оцінка
risk_score = self.calculate_risk_score(checks)
return ContractReport(
address=contract_address,
checks=checks,
risk_score=risk_score,
recommendation='approve' if risk_score < 30 else 'reject' if risk_score > 70 else 'review'
)
Аналіз розподілу токенів
Концентрація у небагатьох гаманцях — ознака можливого rug pull:
async def analyze_token_distribution(self, contract: str, blockchain: str) -> dict:
top_holders = await self.get_top_holders(contract, blockchain, limit=100)
total_supply = await self.get_total_supply(contract, blockchain)
# Виключаємо відомі адреси (біржи, DEX пули, burn адреси)
filtered_holders = [
h for h in top_holders
if h.address not in self.known_exchange_addresses
]
top_10_percent = sum(h.balance for h in filtered_holders[:10]) / total_supply * 100
top_20_percent = sum(h.balance for h in filtered_holders[:20]) / total_supply * 100
return {
"top_10_holders_percent": top_10_percent,
"top_20_holders_percent": top_20_percent,
"risk": "HIGH" if top_10_percent > 50 else "MEDIUM" if top_10_percent > 30 else "LOW",
"holders_count": await self.get_holders_count(contract, blockchain)
}
Технічна інтеграція
Blockchain node / API інтеграція
Для кожного нового блокчейну потрібна інтеграція з нодою або API провайдером:
| Блокчейн | Node / API | Виявлення депозиту | Виведення |
|---|---|---|---|
| Ethereum | geth/infura | ERC-20 Transfer events | web3.eth.sendSignedTransaction |
| Solana | solana-validator / Quicknode | SPL token transfers | solana-web3.js |
| BSC | geth-bsc | BEP-20 Transfer events | web3 (BSC fork) |
| Tron | tron-node / TronGrid | TRC-20 Transfer events | tronweb |
Адміністративна панель листинга
Інтерфейс для біржи включає:
- Список заявок зі статусами та прогресом
- Checklist due diligence (кожний пункт з ответственним та статусом)
- Управління торговельними парами: включити/вимкнути, встановити fee tier
- Pre-launch конфігурація: min/max ордер, price band на перші години
- Планувальник анонсу: дата/час публікації, текст для всіх каналів
Price band на перші години торгів критичний: без обмежень можливі екстремальні маніпуляції при низькій ліквідності на старті. Стандарт: ±50% від відкриття в перші 5 хвилин, потім розширюється.
Добре організований процес листинга — це репутація біржі. Листинг низькокваліфікованих проектів призводить до rug pull → постраждалі користувачі → регуляторна увага.







