MoneroSwapper MoneroSwapper
Обучение

RingCT в глубину: как Monero скрывает суммы транзакций в блокчейне

MoneroSwapper Team · · · 1 min read · 84 views

Зачем вообще скрывать суммы транзакций

Биткоин и большинство публичных блокчейнов устроены прозрачно: любой человек может открыть обозреватель и увидеть, сколько именно монет и куда отправлено. Для многих это считалось достоинством — «прозрачность как основа доверия». Однако по мере того как криптовалюты вышли за пределы узкого круга энтузиастов, стала очевидна обратная сторона: полная прозрачность финансовой истории — это беспрецедентная угроза частной жизни.

В классическом банкинге ваши выписки доступны только вам, банку и по запросу — налоговой или правоохранительным органам. В прозрачном блокчейне выписка доступна всему миру и навсегда. Достаточно один раз засветить адрес рядом с вашим именем — в посте на форуме, в донате, в сервисе обмена, не прошедшем KYC, — и любой желающий сможет отследить все ваши входящие и исходящие платежи задним числом. Для предпринимателя это раскрытие выручки конкурентам. Для фрилансера — обнародование гонораров перед каждым новым клиентом. Для обычного человека — возможность соседу узнать, сколько вы зарабатываете и на что тратите.

Monero был создан именно для того, чтобы электронная наличность вела себя как настоящая наличность: факт передачи ценности — это частное дело двух сторон, а не публичное шоу. Ключевой технологией, которая делает это возможным на уровне сумм, является RingCT — Ring Confidential Transactions. В этой статье мы подробно разберём, как она устроена, какую математику использует и почему её сложно обойти даже очень ресурсному противнику.

Три столпа приватности Monero

Приватность в Monero обеспечивается тремя независимыми механизмами, каждый из которых закрывает свой вектор утечки информации:

  • Кольцевые подписи (Ring Signatures) — скрывают отправителя, подмешивая к реальному входу ещё несколько «обманок» (decoys) из истории блокчейна. Наблюдатель не может достоверно сказать, какой из входов настоящий.
  • Скрытые адреса (Stealth Addresses) — каждый платёж отправляется на одноразовый адрес, вычисляемый из публичного адреса получателя. Два разных платежа одному человеку выглядят как платежи совершенно разным людям.
  • RingCT (Ring Confidential Transactions) — скрывает суммы транзакций с помощью гомоморфных криптографических обязательств, при этом позволяя сети убедиться, что никаких «монет из воздуха» не создано.

Наша тема — последний пункт. Именно RingCT закрывает, возможно, самый очевидный канал деанонимизации: даже если вы не знаете, кто именно отправил монеты, знание точной суммы резко сужает круг подозреваемых. Редкие, нестандартные номиналы — практически отпечаток пальца.

История: почему RingCT появился только в 2017 году

До января 2017 года Monero уже использовал кольцевые подписи и скрытые адреса, но суммы в транзакциях оставались открытыми. Это создавало неприятную проблему: отправитель был вынужден разбивать платёж на несколько «стандартных» номиналов (0.1, 1, 10 XMR и т. д.), чтобы хоть как-то смешиваться с другими. Такой подход назывался pre-RingCT и был далёк от идеала.

В сентябре 2015 года разработчик под псевдонимом Shen Noether опубликовал статью «Ring Confidential Transactions», в которой объединил идеи Confidential Transactions Грегори Максвелла (изначально предложенные для Bitcoin) с кольцевыми подписями CryptoNote. Результат оказался революционным: стало возможно одновременно скрывать и отправителя, и сумму, не теряя при этом свойства проверяемости эмиссии.

Активация RingCT в мейннете произошла на блоке 1220516 (январь 2017), а с сентября 2017 года его применение стало обязательным для всех новых транзакций. С тех пор ни одна транзакция в Monero не раскрывает свою сумму в блокчейне.

Обязательства Педерсена: математическая основа сокрытия сумм

Центральная идея RingCT — это обязательство Педерсена (Pedersen commitment). Это криптографический примитив, позволяющий «зафиксировать» число так, что:

  • никто, кроме вас, не сможет узнать его значение;
  • вы не сможете впоследствии заявить, что зафиксировали другое число;
  • можно складывать обязательства между собой, получая обязательство к сумме исходных чисел (гомоморфное свойство).

Формально обязательство к сумме a с фактором сокрытия r записывается как C = rG + aH, где G и H — это две точки на эллиптической кривой ed25519, причём связь между ними никому неизвестна (их называют nothing-up-my-sleeve точками). Фактор r — это большое случайное число, которое знает только отправитель.

Ключевое свойство: если сложить два обязательства, получится C1 + C2 = (r1+r2)G + (a1+a2)H, то есть обязательство к сумме значений с суммой факторов сокрытия. Это позволяет проверяющим убедиться, что сумма входов равна сумме выходов, не узнавая при этом ни одну конкретную величину.

Баланс транзакции без раскрытия чисел

В обычном блокчейне каждый узел проверяет, что сумма входов транзакции равна сумме выходов плюс комиссия. В Monero всё происходит так же, но с обязательствами вместо чисел. Проверка сводится к вычислению:

Σ C_входов − Σ C_выходов − C_комиссии = 0 · H + (Σr_in − Σr_out)G

Если суммы действительно сходятся, коэффициент при H обращается в ноль, и результат оказывается «чистой» точкой на G. Отправитель доказывает это, публикуя подпись по ключу, равному (Σr_in − Σr_out). Никаких конкретных сумм сеть не видит, но математическая уверенность в сохранении баланса полная.

Проблема отрицательных сумм и диапазонные доказательства

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

Чтобы этого не допустить, каждый выход сопровождается диапазонным доказательством (range proof) — криптографическим доказательством того, что скрытая сумма лежит в интервале от 0 до 2⁶⁴ − 1, то есть неотрицательна и не превышает предельного значения.

Первая реализация RingCT использовала Borromean range proofs, которые были надёжны, но громоздки — каждое доказательство занимало несколько килобайт, раздувая размер транзакции и увеличивая комиссии. В октябре 2018 года (hard fork 0.13) Monero перешёл на Bulletproofs, предложенные Бюнцем, Бутцем, Максвеллом, Пёльстра и Бунем. Это сократило размер диапазонного доказательства примерно в 10 раз и уронило комиссии на 80%.

В 2022 году был выполнен ещё один шаг — Bulletproofs+, ещё более компактный и быстрый в проверке вариант. Именно он используется в сети сегодня.

Как устроены Bulletproofs+ в двух словах

Bulletproofs+ — это не интерактивное доказательство с нулевым разглашением (non-interactive zero-knowledge proof), построенное на алгоритме inner-product argument. Оно доказывает, что набор скрытых значений лежит в заданном диапазоне, без раскрытия самих значений. Размер доказательства растёт логарифмически от числа битов в диапазоне, что и даёт компактность: для 64-битного значения доказательство занимает всего около 576 байт.

Проверка выполняется сетью за миллисекунды на обычном ноутбуке — важное свойство, учитывая, что валидаторы Monero это полноценные узлы, работающие на домашнем железе.

Как это работает на практике: жизненный цикл одного платежа

Посмотрим, что происходит, когда вы отправляете, например, 3.7 XMR за услугу:

  1. Кошелёк выбирает нужные выходы из вашего UTXO-пула. Допустим, это один выход на 5 XMR.
  2. К реальному входу подмешиваются 15 обманок из блокчейна — образуется кольцо из 16 элементов. Наблюдатель не знает, какой из них настоящий.
  3. Формируется два новых выхода: 3.7 XMR на скрытый адрес получателя и 1.3 XMR сдачи обратно на ваш собственный скрытый адрес.
  4. Для обоих выходов создаются обязательства Педерсена с новыми случайными факторами сокрытия.
  5. Строится диапазонное доказательство Bulletproofs+, подтверждающее, что обе суммы лежат в корректном диапазоне.
  6. Создаётся кольцевая подпись MLSAG/CLSAG, доказывающая право тратить один из 16 входов.
  7. Транзакция отправляется в сеть, проверяется узлами и включается в блок.

В блокчейне остаётся: кольцо входов, два выхода с обязательствами, диапазонное доказательство, подпись и зашифрованный «rct-blob» с данными, необходимыми получателю, чтобы расшифровать сумму своим приватным ключом просмотра.

Размер и производительность

RingCT-транзакция с двумя выходами и размером кольца 16 занимает в блокчейне Monero около 1,5 КБ. Для сравнения: обычная биткоин-транзакция — порядка 250 байт, но при этом она полностью прозрачна. RingCT платит «размером» за приватность, и в 2018–2022 годах этот размер был существенно оптимизирован.

Проверка одной транзакции на современном CPU занимает менее 10 мс. Это обеспечивает пропускную способность сети, достаточную для большинства сценариев, и позволяет узлам работать на недорогом оборудовании — в том числе в условиях ограничений на доступ к интернету в некоторых странах.

Что увидит аналитик блокчейна

Давайте разберём, что конкретно может и чего не может установить внешний наблюдатель, глядя на RingCT-транзакцию:

  • Что видно: факт транзакции, время включения в блок, количество входов и выходов, размер кольца, хеши обязательств, диапазонное доказательство, комиссия.
  • Что не видно: сумма каждого входа, сумма каждого выхода, общая сумма транзакции, реальные отправитель и получатель (прячутся кольцом и скрытым адресом соответственно), связь между несколькими транзакциями одного пользователя.

Это кардинальное отличие от Bitcoin, где каждая транзакция поддаётся анализу графа, кластеризации адресов и оценке финансовых потоков.

Регуляторный контекст в России и СНГ

Для российских пользователей технические подробности RingCT особенно актуальны в свете текущего регулирования. Федеральный закон №259-ФЗ «О цифровых финансовых активах» и последующие разъяснения Банка России и Росфинмониторинга рассматривают криптовалюты как имущество, обязывая граждан декларировать доходы от операций с ними в ФНС. При этом прозрачные блокчейны типа Bitcoin де-факто превращаются в открытую бухгалтерскую книгу, доступную любому, кто получит хотя бы один ваш адрес.

Monero и конкретно RingCT позволяют соблюдать законодательство (вы по-прежнему обязаны декларировать доходы — приватность не освобождает от налогов), но при этом не оставлять каждый шаг своей финансовой жизни на всеобщее обозрение. Вы сами решаете, кому и какие отчёты предоставлять, а не отдаёте эту информацию миру «по умолчанию» через публичный блокчейн.

Распространённые мифы о RingCT

Миф 1: «Раз суммы скрыты, можно напечатать монет из воздуха»

Нет. Диапазонные доказательства Bulletproofs+ математически гарантируют неотрицательность всех выходов, а гомоморфная проверка баланса — что сумма входов равна сумме выходов. Эмиссия в Monero абсолютно так же проверяема, как в Bitcoin, просто проверка работает с обязательствами, а не с открытыми числами.

Миф 2: «RingCT можно взломать квантовым компьютером»

Текущая реализация RingCT основана на классической криптографии на эллиптических кривых и действительно уязвима к гипотетическому крупному квантовому компьютеру — как и практически вся современная асимметричная криптография, включая Bitcoin, TLS и банковские системы. Команда Monero отслеживает развитие постквантовых схем и планирует переход к квантоустойчивым алгоритмам в будущих обновлениях протокола.

Миф 3: «Приватность Monero делает его инструментом исключительно для нелегальной деятельности»

Приватность — базовое человеческое право. Подавляющее большинство пользователей Monero — это обычные люди, которым просто не нравится, когда каждая их финансовая операция транслируется на весь мир. Журналисты, правозащитники, предприниматели, семьи в странах с нестабильной валютой, да и просто частные лица — у всех есть легитимные причины желать финансовой приватности.

Почему обменивать XMR лучше без KYC

RingCT делает блокчейн Monero непроницаемым, но если вы купили XMR на бирже, прошедшей KYC, аналитики связывают ваш паспорт с моментом покупки. Даже после того как XMR попадает в анонимную сеть, факт владения и средний размер позиции остаются задокументированы в базе биржи — а значит, доступны по запросу практически любой госструктуры и могут быть украдены при утечке.

MoneroSwapper устраняет эту проблему на входе: мы предоставляем моментальные обмены BTC, ETH, USDT, LTC и десятков других активов на XMR без регистрации и без верификации личности. Вы получаете Monero прямо в свой кошелёк, не оставляя следов в клиентской базе централизованной биржи. Именно такой сценарий полностью раскрывает потенциал RingCT: приватность обеспечивается как на уровне протокола, так и на уровне точки входа.

Попробуйте прямо сейчас — откройте MoneroSwapper и совершите свой первый анонимный обмен за 3-5 минут.

Заключение

RingCT — одна из самых элегантных криптографических конструкций в мире блокчейна. Она позволяет сети оставаться полностью проверяемой и при этом не раскрывать абсолютно никакой информации о суммах транзакций. Сочетание обязательств Педерсена, диапазонных доказательств Bulletproofs+ и проверки баланса на гомоморфном уровне закрывает едва ли не главный канал утечки приватности, характерный для прозрачных блокчейнов.

Понимание того, как именно работает RingCT, помогает оценить реальный уровень приватности Monero: это не «обещание разработчиков», а строго доказуемое свойство, которое проверяется каждой транзакцией на каждом узле сети. Для тех, кто ценит финансовую автономию и не готов делиться своими расходами со всем миром, Monero остаётся золотым стандартом — а RingCT это сердце его приватности.

Поделиться статьей

Похожие статьи

Готовы к обмену?

Анонимный Обмен Monero

Без KYC • Без регистрации • Мгновенный обмен

Обменять сейчас