Разработка платформы токенизации активов
Клиент с портфелем коммерческой недвижимости в Берлине хотел выпустить 5000 токенов для фракционной продажи. Первая идея — ERC-20 с белым списком — рассыпалась при первой же проверке регулятора: отсутствие on-chain identity, нет механизма forced transfer для заморозки активов, нет модуля корпоративных действий. Пришлось перестраивать всю архитектуру на ERC-3643. За 7 лет мы сделали 15+ таких платформ — для недвижимости, долговых инструментов, товарных запасов. Каждый проект проходил полный цикл: юридическая структура, смарт-контракты, интеграция KYC, запуск вторичного рынка.
Техническая часть — лишь вершина. 60–70% усилий уходит на compliance: KYC/AML, юрисдикционные ограничения, корпоративные действия. Мы используем стек ERC-3643 (T-REX) с identity-слоем ONCHAINID. Это даёт экономию до 30% на gas-операциях с compliance по сравнению с ERC-1400. Стандарт описан в EIP-3643.
Типы активов разные — недвижимость, акции SPV, долговые инструменты, произведения искусства, интеллектуальная собственность — но компоненты платформы универсальны.
Почему ERC-3643 — стандарт для RWA?
Обычный ERC-20 не подходит для регулируемых активов. Нужны специализированные стандарты. ERC-1400 (Security Token Standard) — расширение ERC-20 с transfer restrictions, forced transfers, document management. Разработан под требования securities регуляторов.
// ERC-1400 ключевые интерфейсы
interface IERC1400 is IERC20 {
function canTransferByPartition(
bytes32 partition,
address from,
address to,
uint256 value,
bytes calldata data
) external view returns (byte, bytes32, bytes32);
function transferByPartition(
bytes32 partition,
address to,
uint256 value,
bytes calldata data
) external returns (bytes32);
function operatorTransferByPartition(
bytes32 partition,
address from,
address to,
uint256 value,
bytes calldata data,
bytes calldata operatorData
) external returns (bytes32);
function getDocument(bytes32 name)
external view returns (string memory, bytes32);
}
ERC-3643 (T-REX) — более современный, разработан Tokeny Solutions. Он выгоднее ERC-1400 по газу и модульности: до 30% экономии на операциях с compliance. Включает identity layer (ONCHAINID) и automated compliance checks. Сборка смарт-контрактов в Foundry в 3 раза быстрее, чем в Hardhat — ускорение циклов тестирования и деплоя.
// T-REX compliance check пример
contract TokenCompliance {
IIdentityRegistry public identityRegistry;
ICompliance public compliance;
function _beforeTokenTransfer(
address from,
address to,
uint256 amount
) internal {
if (from != address(0) && to != address(0)) {
require(
identityRegistry.isVerified(to),
"Recipient identity not verified"
);
require(
compliance.canTransfer(from, to, amount),
"Transfer not compliant"
);
}
}
}
ERC-1155 подходит для фракционных активов, когда один актив делится на несколько видов прав (например, здание с разными типами помещений или произведение искусства с разными правами использования).
Как работает on-chain KYC/AML?
Каждый держатель токенов регулируемого актива должен быть верифицирован. On-chain identity — сложнее чем просто mapping адрес → bool. Используем стандарт ONCHAINID (ERC-734/735). Провайдер KYC (Sumsub, Fractal, Identix) проводит верификацию, выдаёт claim с подписью. Claim записывается в ONCHAINID контракт пользователя. При попытке transfer токена — compliance модуль проверяет наличие нужных claims.
// Identity контракт (один на пользователя)
interface IIdentity {
function getClaim(bytes32 claimId)
external view returns (
uint256 topic,
uint256 scheme,
address issuer,
bytes memory signature,
bytes memory data,
string memory uri
);
function addClaim(
uint256 topic,
uint256 scheme,
address issuer,
bytes memory signature,
bytes memory data,
string memory uri
) external returns (bytes32 claimId);
}
// Claim Topics для securities
uint256 constant KYC_CLAIM = 1;
uint256 constant AML_CLAIM = 2;
uint256 constant ACCREDITED_INVESTOR_CLAIM = 3;
uint256 constant COUNTRY_CLAIM = 4;
uint256 constant PROFESSIONAL_INVESTOR_CLAIM = 5;
Регуляторы требуют ограничить продажу в определённых юрисдикциях. Например, нельзя продавать US-резидентам без регистрации в SEC. Реализуем модуль проверки кода страны и лимитов инвесторов. Это позволило клиенту из Берлина запустить продажу в ЕС без ограничений, а для резидентов США — настроить whitelist после регистрации.
Пример ограничения по странам
Контракт проверяет код страны из ONCHAINID и сверяет с маппингом разрешённых юрисдикций. Если страна не разрешена — transfer отклоняется. Дополнительно настраиваются лимиты на количество инвесторов на страну.
Lifecycle токенизированного актива
Issuance (эмиссия)
Перед минтингом токенов:
- Юридическая структура: SPV, траст или другая структура, которая держит реальный актив
- Legal opinion что токены не являются незарегистрированными securities (или регистрация)
- Проспект/offering memorandum (зависит от юрисдикции и объёма)
- Custody arrangement: кто держит документы, кто является transfer agent
function mintSecurityTokens(
address investor,
uint256 amount,
bytes32 partition,
bytes calldata data
) external onlyRole(ISSUER_ROLE) {
require(identityRegistry.isVerified(investor), "Not verified");
require(compliance.canTransfer(address(0), investor, amount), "Not compliant");
_issueByPartition(partition, investor, amount, data);
emit TokensIssued(investor, amount, partition, data);
}
Corporate Actions
Токенизированные акции требуют обработки корпоративных событий: дивиденды, сплиты, обратные сплиты. Мы реализуем модули для распределения дивидендов (через snapshots) и сплитов с автоматическим пересчётом балансов. Пример для дивидендов: контракт получает USDC, фиксирует snapshot держателей, каждый держатель клэймит свою долю.
Вторичный рынок и ликвидность
Вторичное обращение — отдельная проблема. Нельзя просто листинговать на Uniswap: каждый buyer должен пройти KYC, покупка должна проходить compliance проверку. Строим permissioned DEX с встроенным compliance-шлюзом или интегрируемся с регулируемыми платформами (INX, tZERO, STO Global X). Второй вариант даёт готовую ликвидность без построения собственной торговой площадки.
Оракулы и оценка активов
Для займов под залог токенизированных активов нужна on-chain цена. В отличие от криптоактивов — нет ликвидного рынка. Решение: модель верифицированного оценщика. Аккредитованный оценщик подписывает оценку, публикует on-chain. Контракт принимает оценки от N аккредитованных оценщиков, берёт медиану:
contract AssetValuationOracle {
struct Valuation {
uint256 value;
uint256 timestamp;
address appraiser;
bytes signature;
}
mapping(bytes32 => Valuation[]) public valuations;
uint256 public constant MAX_VALUATION_AGE = 90 days;
uint256 public constant MIN_APPRAISERS = 2;
function getAssetValue(bytes32 assetId) external view returns (uint256) {
Valuation[] storage vals = valuations[assetId];
uint256[] memory freshValues = new uint256[](vals.length);
uint256 freshCount = 0;
for (uint i = 0; i < vals.length; i++) {
if (block.timestamp - vals[i].timestamp <= MAX_VALUATION_AGE) {
freshValues[freshCount++] = vals[i].value;
}
}
require(freshCount >= MIN_APPRAISERS, "Insufficient fresh valuations");
return median(freshValues, freshCount);
}
}
Технологический стек
| Компонент | Выбор | Обоснование |
|---|---|---|
| Token standard | ERC-3643 (T-REX) | Широкое принятие в RWA, compliance built-in |
| Identity | ONCHAINID | Стандарт экосистемы T-REX |
| KYC provider | Sumsub / Synaps | API + claim issuance |
| Settlement chain | Polygon PoS / Base | Дёшево, EVM, активная RWA экосистема |
| Payment | USDC / EURC | Circle стабильность, regulatory clarity |
| Document storage | IPFS + Filecoin | Долгосрочное хранение юридических документов |
Свяжитесь с нами для уточнения стека под вашу юрисдикцию.
Что входит в разработку платформы
| Фаза | Содержание | Срок |
|---|---|---|
| Legal & structure | Юридическая структура, compliance requirements | 4–8 нед |
| Core contracts | ERC-3643 + identity + compliance модули | 4–6 нед |
| Corporate actions | Dividends, splits, forced transfer | 2–3 нед |
| KYC integration | Identity registry + KYC provider API | 2–3 нед |
| Secondary market | Order book или DEX с compliance | 3–4 нед |
| Investor portal | Dashboard, claims, documents | 3–4 нед |
| Audit | Контракты | 3–4 нед |
| Issuance pilot | Реальный актив в тестовой среде | 2–3 нед |
Итого: 23–35 недель. Юридический этап — переменная с наибольшим разбросом: зависит от актива, юрисдикции и наличия опытного securities-lawyer в команде клиента.
Оценим ваш проект за 2 рабочих дня. Гарантируем качество аудита и поддержку после запуска. Получите консультацию — начните с обсуждения архитектуры.







