Разработка 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 investors + Reg S для остальных.
Reg A+ — мини-IPO. До $75M, публичное размещение, упрощённая регистрация SEC. Открывает доступ к неаккредитованным инвесторам, но требует аудированной отчётности.
ЕС: MiCA и Prospectus Regulation
MiCA (Markets in Crypto-Assets Regulation) — вступил в силу полностью в 2024. Security tokens под MiCA классифицируются как Asset-Referenced Tokens или подпадают под существующее securities legislation (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 structure (ERC-735)
struct Claim {
uint256 topic; // тип утверждения (KYC = 1, ACCREDITED = 2...)
uint256 scheme; // схема подписи
address issuer; // кто выдал
bytes signature; // подпись issuer
bytes data; // данные (хеш документа)
string uri; // ссылка на оффчейн документ
}
KYC/AML интеграция
STO требует обязательного KYC каждого инвестора. Типичный flow:
- Инвестор проходит KYC через провайдера (Sumsub, Veriff, Fractal)
- Провайдер деплоит ONCHAINID для инвестора (или использует существующий)
- Провайдер как Trusted Issuer добавляет claim
KYC_APPROVEDв ONCHAINID - Эмитент проверяет наличие claim в Identity Registry — инвестор допущен к токену
- При каждом трансфере контракт проверяет оба адреса
AML screening — непрерывный процесс. Chainalysis/Elliptic интегрируются для мониторинга транзакций. При высоком risk score — wallet может быть заморожен через 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 — все holder-адреса из Identity Registry
// balances — через stандартный balanceOf
// totalSupply — полный supply
}
Вторичный реестр (off-chain база) синхронизируется через события Transfer, Frozen, Unfrozen. Это нужно для регуляторной отчётности: кто держит, сколько, с какого момента.
Lifecycle событий токена
| Событие | On-chain действие | Off-chain действие |
|---|---|---|
| Первичное размещение | mint → верифицированным адресам |
Form D filing, эскроу |
| Вторичный трансфер | transfer + compliance check |
AML мониторинг, CAP table update |
| Дивиденды/купон | distributeReturns в stablecoin |
Налоговая отчётность |
| Принудительный трансфер | forcedTransfer (суд/регулятор) |
Судебный документ on-IPFS |
| Восстановление | recoveryAddress |
Affidavit от инвестора |
| Burn/redemption | burn |
Выплата выкупной цены |
Комплаенс-контракт: кастомная логика
Отдельный 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 — это токен с реальным правовым статусом и доступом к институциональным инвесторам.







