November 4

Arcium

Когда в Solana появились confidential transfers в Token-2022, стало возможным прятать балансы и суммы. Но пользоваться этим сложно: доступен только EOA-кошелёк, нет DeFi и UX'а нет для обычного юзера(кошельки не поддерживают, баги есть, нахрен надо?).

Про это уже писалось в отдельной статье: https://teletype.in/@valpaq/confidential_balances

Arcium — вторая половина истории: Solana остаётся быстрым L1, рядом вешается зашифрованный «процессор», который считает над зашифрованными данными и отдает результат обратно обычным программам.

Что такое Arcium

  • Solana отвечает за:
    • очередь задач (ончейн-мемпул вычислений),
    • оплату, стейкинг, слэшинг,
    • вызовы из программ и обратно.
  • Arcium - это сеть Arx нод:
    • получают зашифрованные входы,
    • внутри MPC-кластера считают функцию (добавляют рандом и подобное),
    • шлют результат обратно в Солану (через Arcium Program или ваш callback-сервер).
  • MXE (Multi-Party Execution Environment) - контейнер под конкретное приложение:
    • ваша Solana-программа,
    • набор «конфиденциальных инструкций»,
    • метаданные, какой MPC-кластер использовать и т.п.
  • Arcis - слой над Anchor для написания конфиденциальных инструкций.
    • arcium CLI - обертка над Anchor,
    • TS-клиент, который шифрует данные на устройстве и отправляет в MXE.

В программе на Solana появляется вызов условной [confidential]-функции. Она не считает сама: собирает описание вычисления и кидает его в Arcium Program. Тот кладёт задачу в ончейн-мемпул, выбирает свободный MPC-кластер и через callback возвращает результат.

Cerberus и Manticore: два режима MPC

У Arcium два MPC-протокола: Cerberus и Manticore.

Cerberus - permissionless

  • Модель безопасности.
    Dishonest majority / N-1 honest - достаточно, чтобы хотя бы одна нода в кластере была честной.
  • Без trusted dealer’а.
    Нет единого генератора секретов, в которого надо верить; все распределяется протоколом.
  • MAC-проверки.
    Каждая часть секрета обвешана MAC’ами; как только кто-то начинает подсовывать левое значение, вычисление останавливается, ноду можно выкинуть из кластера.
  • Арифметика в шифртекстах.
    Сложение/умножение над зашифрованными данными делается без дешифровки.

Кейсы: приватные ордера, предикшн-маркеты, конфиденциальные балансы.

Manticore - permissioned

  • Модель.
    Honest-but-curious / honest majority - участники следуют протоколу, но могут пытаться вытащить лишнюю инфу из своих шеров.
  • Trusted dealer. Есть отдельный участник, который готовит криптографические материалы (preprocessing, секреты и т.п.). Это ускоряет протокол, но требует доверия к сетапу.
  • Заточен под ML. Исходный ресерч по Manticore - как раз про эффективный MPC для вещественной и булевой арифметики (ML/AI, аналитика, матрицы и прочая беда).

Как это выглядит для разработчика

Жизненный цикл вычислений

  1. Definition.
    В Arcis описываешь computation: какие аргументы, какая функция, какой кластер.
  2. Commissioning.
    Solana-программа дёргает этот definition с конкретными аргументами и окном по времени.
  3. Mempool.
    Задача падает в ончейн-мемпул Arcium Program.
  4. Execution.
    Кластер Arx-нод забирает задачу, крутит Cerberus/Manticore, на выходе - зашифрованный результат.
  5. Callback.
    Результат заворачивается в callback-транзу (или в ваш HTTP-callback, если не влезает) и прилетает обратно в программу на Солане.

Весь MPC живёт в сети Arx-нод. Солана видит только описание вычисления, факт исполнения и кусок данных. Дальше уже сами решаете, что с этим делать.

DSL/Arcis

Arcis — язык под схемы, которые крутятся на Arcium. Рамки жёсткие:

  • в Cerberus/Manticore вы не залезете - протоколы спрятаны под капот.
  • топологию кластера вы не настроите, только выберете, куда слать (и то летом ни о какой Manticore речи не было).
  • с отдельными нодами не пообщаетесь, всё идёт через Arcium Program / клиент.
  • Все детерминированно заранее, никаких циклов от размера массива и т.д.

Это не «соберу свой MPC», а «описал функцию - Arcium посчитал и отдал результат, взамен сказал ему спасибо(заплатил монету)».

Технические ограничения

  • Размер выхода. Результат одной конфиденциальной инструкции должен влезать в одну Solana-транзу (callback). Если нет - нужно поднимать свой HTTP-callback-сервер, принимать весь остаток там и самому уже управлять результатом.
  • Асинхронность.
    Вычисление живет отдельно от Solana-транзакции по времени. Есть valid_after / valid_before окна; если не успели - задача протухла.
  • Сетевой слой от вас независим.
    Вы не управляете тем, какой конкретно узел считает вашу задачу; это переключаемые кластеры, какой именно узел считает - не контролируете.
  • Mainnet. Еще нет, этой весной обещали в q4/2025, возможно q1/2026.


Arcium SPL

Ранее мы уже смотрели на Token-2022 SPL CT:

  • twisted ElGamal поверх публичного ключа
  • range/validity/equality ZK-пруфы
  • разделение pending/available
  • опциональный аудитор, AES-баланс

Arcium Confidential SPL Token (C-SPL) - надстройка над этим всем. Задуман как единый слой поверх разных стандартов токенов.

  1. Программная работа с конфиденциальными аккаунтами.
    Token-2022 CT разрешает владеть конфиденциальным балансом только EOA-кошелькам, что убивает DeFi - программы не могут работать с зашифрованными балансами.
    C-SPL добавляет адаптер, который через Arcium позволяет программам владеть и двигать эти балансы внутри MPC, не открывая их.
  2. Аккаунты за других людей.
    В CT получатель должен заранее завести конфиденциальный аккаунт для каждого минта. В C-SPL есть Confidential ATA-програм, которая через Arcium создает временный защищенный аккаунт на получателя, а он потом его «забирает» и подшивает свои ключи. UX похож на обычный SPL~.
  3. Канонические конфиденциальные обертки.
    Через token-wrap можно сделать единый C-SPL-mint для любого обычного SPL-токена и дать исходному минту роль аудитора.
  4. Отдельный Encrypted SPL Token.
    Для программных (не EOA) use-case’ов они делают отдельный, более легкий стандарт, заточенный под Cerberus и прямое вычисление над ciphertext’ами в MPC.

Umbra: приватный слой поверх Arcium

У Umbra вся архитектура делится на три крупных блока:

  • Umbra Addresses - «stealth-адреса» на Solana;
  • Anonymity Layer (shielded pool) - слой, который рвёт линк депозит ↔ вывод;
  • Encrypted Balances - хранение балансов как ciphertext’ов в PDA + MPC-обновления.

Umbra Addresses

Umbra Address - это обычный Ed25519-ключ, ничем не отличимый от стандартного адреса Solana. Важен не формат, а процесс генерации:

  • берётся подпись статического сообщения основным кошельком;
  • эта подпись идёт в PRF, из неё детерминированно вываливается последовательность сидов;
  • по каждому сиду генерится отдельный Ed25519-keypair - это и есть Umbra-адрес (как в SPL-CT, только шире).

Свойства: легко восстановить, сложно привязать к автору и друг к другу.

На уровне протокола Umbra отделяет «публичные» балансы на этих адресах от приватных, живущих внутри shielded pool.

Anonymity Layer: shielded-пул с ZK-claim’ами и релейерами

  • Shielded Pool.
    Контракт, который держит кучу токенов разных пользователей; приватность одной транзы зависит от размера множества депозитов.
  • Deposit.
    Ты кладёшь токены в пул, а данные (сумма, целевой Umbra-адрес и т.п.) зашиваются в commitment / «записку», которая попадает в общий список.
  • Claim.
    Получатель доказывает через ZK-пруф, что он владеет одной из этих записок, не раскрывая какой именно. Контракт проверяет proof, смотрит, не был ли nullifier уже потрачен, и выдаёт токены Umbra-адресу получателя.
  • Relayer Network.
    Чтобы не светить, кто платит газ и с какого адреса идёт claim, используется сеть релейеров: они платят комиссию и получают компенсацию из выводимой суммы.

Encrypted Balances: PDAs + X25519 + Rescue + MPC

Umbra хранит приватные балансы как ciphertext в PDA на Solana, а все обновления делает через Arcium.

Две пары ключей на кошелёк:

  • Ed25519 - обычный spending key, подписывает транзы;
  • X25519 - encryption key, по нему считается ECDH с MPC-сетью, от него зависят PDA.

Структура on-chain:

  • PDA-аккаунт пользователя;
  • PDA под каждый токен: внутри (ciphertext, nonce), где
    • ciphertext - зашифрованный баланс через Rescue cipher;
    • nonce - уникальная «соль» на каждое обновление.

Дешифровка:

  • кошелёк дёргает PDA, вытаскивает (ciphertext, nonce);
  • делает ECDH(X25519_user, PK_MPC) → shared secret;
  • из секрета + nonce инициализирует Rescue и расшифровывает баланс - всё локально на девайсе.

Обновление баланса:

  • кошелёк шлёт в MPC-кластер инструкцию +10 USDC в зашифрованном виде;
  • MPC-ноды подтягивают текущий ciphertext из PDA, делают гомоморфное обновление над шифртекстом, генерят новый ciphertext + nonce, пишут обратно.
  • При этом никто из нод не видит ни старого, ни нового баланса, ни дельту.

Stealf

Stealf - нео-банк на стейблкоинах, у которого два уровня кошелька: публичный и приватный.

Публичный:

  • KYC;
  • карта;
  • SEPA;
  • полностью прозрачный трейс - всё как в обычном банке.

Приватный:

  • Arcium-движок;
  • полностью шифрованные балансы;
  • анонимные P2P-переводы без KYC.

Технически:

  • двойная архитектура кошелька: один слой под «официальный» флоу, второй - под крипто-приватность;
  • Arcium + PDAs: приватный кошелёк использует PDA как прокси-адреса, реальные суммы хранятся в зашифрованном виде и обновляются через MPC;
  • relayers: чтобы не светить реальные адреса/суммы, транзы подписывают и отправляют релейеры, а сумма на цепочке показывается минимальной, реальная зашита в данных транзы, уходит в MPC и там уже добавляется к балансу.

Melee: viral prediction markets

Melee - «viral prediction markets» на Solana: смесь Pump.fun и Polymarket.

  • Любой крейтор может завести рынок про что угодно: выборы, мемы, монеты, поп-культуру;
  • Нет отдельной касты «админов, которые решают, какие рынки можно»;
  • Прайсинг поверх бондинг-кривой: ранние заходы награждаются сильнее - классическая «зашёл первым, оказался прав - забрал львиную долю».

Флоу:

  • Создание рынка.
    On-chain маркет создаётся permissionless, параметры и ставки видны всем.
  • Разрешение исхода.
    Вместо одного централизованного оракула или DAO, который руками резолвит рынок, собирается кворум валидаторов/участников. Они голосуют зашифрованно через Arcium, голоса не видны до конца периода, нет эффекта «подстроиться под большинство».
  • MPC-резолв.
    Arcium считает итоги и проверяет, кто голосовал против факта; неправильно проголосовавших можно слэшить. Результат (какой исход победил) возвращается на Solana, и уже там идёт обычный расчёт по рынку.

Другие направления поверх Arcium

Кроме Umbra / Stealf / Melee там уже намечается зоопарк:

  • Encrypted DeFi / даркпулы.
    Orca и co смотрят в сторону рынков, где объёмы, цены и контрагенты уходят в MPC, а на цепи остаётся только сетлмент и минимум метаданных.
  • Платежи и кастоди.
    Squads, Sphere, Iron и подобные - конфиденциальные мультисиги/трезори, лимиты и балансы которых не торчат в эксплорере, плюс MPC-key-менеджмент.
  • AI / аналитика.
    Nosana, CrunchDAO и прочие AI-ребята - совместный тренинг/инференс по шифрованным данным, когда каждый боится показывать датасет соседу.

В Colosseum сейчас реально каждый второй питч - «мы делаем X, но поверх Arcium».

Ограничения

Латентность.

Помимо самой Solana добавляются:

  • очередь в мемпуле Arcium;
  • несколько раундов MPC;
  • callback-транза назад.

Для кошелька/разового перевода ок. Для чего-то, что должно реагировать быстро, задержка уже заметна. На летнем тестнете между «отправил» и «получил результат» у меня было примерно 7 блоков. Их dark pool demo при этом не работал с балансами и ценой - просто кидал и мэтчил ордера с бидами/асками (и не было очереди из других протоколов).

Размер результата.

Выход одной encrypted-инструкции должен помещаться в одну транзу. Всё, что выше - поднимаешь HTTP-callback, принимаешь хвост там, проверяешь хеш на цепи и сам раскладываешь по стейту.

Кластеры и доверие.

Cerberus на бумаге живёт в модели N-1 honest. На практике всё упрётся в то, кто именно крутит Arx-ноды и как у них устроен стейкинг/слэшинг.
Manticore честно говорит «есть trusted dealer» - это история для permissioned-сетапов, а не для любого контракта на Solana.

Стадия сети.

Mainnet Alpha только выкатывают, часть нод под командой и «индустриальными» валидаторами, "множество"(тоже encrypted, я их не видел) проектов в закрытых когортах еще с весны. Янник при общении рассказывает многое (вплоть до почти атомарных флоу в одну транзу (и encrypted everything)), но пока это планы.