Розробка security-токена (STO)
Security token — це токен, який є цінною бумагою за законодавством застосовної юрисдикції. Не за економічною суттю («наш токен дає право на прибуток»), а саме за юридичною класифікацією. Це змінює все: емісія, обращення, зберігання — все регулюється securities law. Ігнорувати це означає працювати з регуляторним ризиком, який рано чи пізно матеріалізується.
Тест Хауи (Howey Test, США) класифікує як security: вкладення грошей, у спільне підприємство, з очікуванням прибутку, від зусиль інших. Більшість токенів, які позиціонуються як «utility», насправді проходять цей тест. Регулятор це знає.
Регуляторні режими
США: Regulation D, S, A+
Reg D 506(b) — найбільш використовуваний. Продаж тільки аккредитованим інвесторам (net worth > $1M або річний дохід > $200K), без general solicitation, до 35 неаккредитованих. Не потрібна реєстрація SEC, тільки Form D filing. Lock-up період: 12 місяців до перепродажу (Rule 144).
Reg D 506(c) — дозволяє general solicitation, але тільки аккредитованих інвесторів, емітент повинен верифікувати статус (через certified letter від CPA/attorney або фінансові документи).
Reg S — продаж за межами США. Поширена комбінація: Reg D для US інвесторів + Reg S для решти.
Reg A+ — міні-IPO. До $75M, публічне розміщення, спрощена реєстрація SEC. Відкриває доступ до неаккредитованих інвесторів, але вимагає аудованої звітності.
ЄС: MiCA та Prospectus Regulation
MiCA (Markets in Crypto-Assets Regulation) — повністю введена в силу 2024. Security токени під MiCA класифікуються як Asset-Referenced Tokens або підпадають під існуюче securities законодавство (MiFID II). Вимоги: проспект емісії (або виключення при < €8M), ліцензований емітент або агент.
Liechtenstein Blockchain Act (TVTG) — найбільш прогресивне законодавство в Європі. Пряме юридичне визнання токенів як інструментів. Ряд STO проектів реєструються через Liechtenstein SP (Service Provider).
Альтернативні юрисдикції
Cayman Islands + BVI — SPV структури для non-US, non-EU емісій. Менше обмежень, менше доступу до інституціональних інвесторів з регульованих юрисдикцій.
Abu Dhabi (ADGM) / Dubai (VARA) — активно розвивають regulatory sandbox для STO. Реальні ліцензії, але менший ринок.
Технічний стандарт: ERC-3643 (T-REX)
ERC-3643 (Token for Regulated EXchanges) — де-факто стандарт для STO в Європі. Розроблений Tokeny (спонсорований EY та іншими). Open source, широко аудирований.
Архітектура T-REX складається з п'яти on-chain компонентів:
1. Identity Registry — реєстр верифікованих інвесторів:
Wallet Address → ONCHAINID Contract Address
2. Identity Registry Storage — відокремлене сховище для upgradability
3. Claim Topics Registry — які claims потрібні (KYC_APPROVED = 1, INVESTOR_ACCREDITED = 2, JURISDICTION_ALLOWED = 3...)
4. Trusted Issuers Registry — хто може видавати claims (KYC провайдер, брокер, сам емітент)
5. ERC-3643 Token — сам токен, перевіряє Identity Registry при кожному transfer
// Упрощена логіка transfer в ERC-3643
function transfer(address _to, uint256 _amount) public override returns (bool) {
require(
_tokenIdentityRegistry.isVerified(_to),
"Transfer to unverified identity"
);
require(
!_frozenTokens[msg.sender] && !_frozenTokens[_to],
"Wallet frozen"
);
// Compliance перевірка (лімити, юрисдикції, etc.)
require(
_tokenCompliance.canTransfer(msg.sender, _to, _amount),
"Compliance check failed"
);
return super.transfer(_to, _amount);
}
ONCHAINID (ERC-734/735)
Кожен верифікований інвестор має ONCHAINID — смарт-контракт, який:
- Зберігає ключі (управління, виконання, claim)
- Зберігає claims — підписані утвердження від trusted issuers
- Дозволяє верифікувати identity без розкриття особистих даних
// Claim структура (ERC-735)
struct Claim {
uint256 topic; // тип утвердження (KYC = 1, ACCREDITED = 2...)
uint256 scheme; // схема підпису
address issuer; // хто видав
bytes signature; // підпис issuer
bytes data; // дані (хеш документа)
string uri; // посилання на off-chain документ
}
KYC/AML інтеграція
STO потребує обов'язкового KYC кожного інвестора. Типовий flow:
- Інвестор проходить KYC через провайдера (Sumsub, Veriff, Fractal)
- Провайдер деплоює ONCHAINID для інвестора (або використовує існуючий)
- Провайдер як Trusted Issuer додає claim
KYC_APPROVEDв ONCHAINID - Емітент перевіряє наявність claim у Identity Registry — інвестор допущений до токена
- При кожному transfer контракт перевіряє обидві адреси
AML screening — безперервний процес. Chainalysis/Elliptic інтегруються для моніторингу транзакцій. При високому risk score — гаманець може бути заморожений через freezeAddress().
Cap table management
On-chain cap table — один з аргументів для STO vs. традиційних цінних паперів:
// ERC-3643 надає точні дані для cap table
function getCapTable() external view returns (
address[] memory shareholders,
uint256[] memory balances,
uint256 totalSupply
) {
// shareholders — усі адреси холдерів з Identity Registry
// balances — через стандартний balanceOf
// totalSupply — повний supply
}
Вторинний реєстр (off-chain база) синхронізується через события Transfer, Frozen, Unfrozen. Це потрібно для регуляторної звітності: хто держить, скільки, з якого моменту.
Lifecycle события токена
| Событие | On-chain дія | Off-chain дія |
|---|---|---|
| Первинне розміщення | mint → верифікованим адресам |
Form D filing, escrow |
| Вторинний transfer | transfer + compliance check |
AML мониторинг, CAP table update |
| Дивіденди/купон | distributeReturns in stablecoin |
Податкова звітність |
| Примусовий transfer | forcedTransfer (суд/регулятор) |
Судовий документ on-IPFS |
| Восстановлення | recoveryAddress |
Affidavit від інвестора |
| Burn/redemption | burn |
Виплата выкупної ціни |
Compliance-контракт: кастомна логіка
Окремий Compliance контракт містить бізнес-правила, не пов'язані з identity:
contract STOCompliance {
uint256 public maxInvestors = 2000; // Reg D ліміт
uint256 public maxBalancePerHolder; // anti-concentration
mapping(string => bool) public allowedCountries; // ISO 3166-1
function canTransfer(address from, address to, uint256 amount)
external view returns (bool)
{
// 1. Перевірка юрисдикції отримувача
string memory country = identityRegistry.getCountry(to);
if (!allowedCountries[country]) return false;
// 2. Максимальне кількість холдерів
if (token.balanceOf(to) == 0 && token.holderCount() >= maxInvestors)
return false;
// 3. Ліміт концентрації
if (token.balanceOf(to) + amount > maxBalancePerHolder) return false;
return true;
}
}
Вторинний ринок
Для Reg D токенів вторинний ринок відкривається через 12 місяців (Rule 144). Платформи: tZERO, INX, MERJ Exchange — ATS (Alternative Trading Systems) з ліцензіями для security token trading.
On-chain вторичний ринок: permissioned orderbook або AMM. Uniswap v4 hooks дозволяють додати KYC check в beforeSwap:
function beforeSwap(address sender, PoolKey calldata key, IPoolManager.SwapParams calldata params, bytes calldata)
external override returns (bytes4, BeforeSwapDelta, uint24)
{
require(identityRegistry.isVerified(sender), "KYC required for trading");
return (this.beforeSwap.selector, toBeforeSwapDelta(0, 0), 0);
}
Розробка STO — це місяці юридичної та технічної роботи одночасно. Технічний стек без правової структури не працює. Але правильно побудований STO — це токен з реальним правовим статусом та доступом до інституціональних інвесторів.







