Основы

Как работает Monero?

Общая картина: публичный журнал, в котором ничего нельзя прочитать — но всё можно проверить

Коротко

Monero — это электронные деньги, как Bitcoin: общий журнал (блокчейн), который ведут тысячи компьютеров, и никакого банка в центре. Разница в том, что в журнале Monero не видно, кто отправил, кто получил и сколько. И при этом каждый участник сети всё равно может проверить, что никто не напечатал деньги из воздуха и не потратил одну монету дважды.

Проблема: блокчейн — это стеклянный кошелёк

Блокчейн Bitcoin — публичная таблица. Любой человек может открыть обозреватель блоков и увидеть: с адреса bc1q…a7 ушло 0.3 BTC на адрес bc1q…f2. Имён там нет, но стоит один раз связать адрес с человеком (заплатили на бирже, отправили другу, засветили адрес для донатов) — и видна вся его история: сколько у него денег, кому он платит, кто платит ему.

Bitcoin: всё видно адрес Алисы 1.0 BTC адрес Боба 0.3 BTC сдача Алисе 0.7 BTC Monero: видно только «что-то произошло» 1 из 16 выходов сумма: ??? одноразовый адрес сумма: ??? одноразовый адрес сумма: ??? …но сеть всё равно проверяет: входы = выходы + комиссия
Одна и та же оплата в двух сетях.

Monero делает так, чтобы из журнала нельзя было вычитать ни одну из трёх вещей. Для каждой используется своя техника.

1. Кто получил? — одноразовые адреса

У вас есть один публичный адрес (длинная строка, начинающаяся с 4). Но в блокчейн он никогда не попадает. Отправитель берёт ваш адрес, добавляет к нему случайное число и вычисляет из этого совершенно новый одноразовый адрес. Деньги уходят на него.

Посторонний видит в блокчейне миллионы одноразовых адресов и не может понять, какие из них принадлежат одному человеку. А ваш кошелёк с помощью секретного ключа просмотра перебирает все новые транзакции и узнаёт «свои».

Аналогия

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

2. Сколько? — спрятанные суммы

Вместо суммы в блокчейн записывается обязательство (commitment) — число, которое «запирает» сумму внутри. По обязательству нельзя узнать сумму, но у обязательств есть волшебное свойство: их можно складывать. Сеть складывает обязательства на входе и на выходе и проверяет, что баланс сходится — не зная ни одной суммы.

Остаётся одна лазейка: что, если кто-то запишет отрицательную сумму? «−100 + 101 = 1» тоже сходится, а деньги напечатаны из воздуха. Поэтому к каждому выходу прилагается доказательство диапазона (Bulletproofs+): короткое доказательство, что спрятанное число неотрицательно и не огромно.

3. Кто отправил? — кольца (а скоро — весь блокчейн)

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

Как тогда не дать потратить одну монету дважды? Каждый выход, когда его тратят, оставляет уникальный «отпечаток» — key image. Сеть хранит все отпечатки и отклоняет транзакцию, если отпечаток уже встречался. По отпечатку нельзя понять, какой из 16 выходов был потрачен, но потратить его второй раз невозможно.

кольцо 16 выходов Проверяющий видит: ✓ подпись верна ✓ один из 16 потрачен ✓ key image ещё не встречался ✗ какой именно — неизвестно
Сегодня (RingCT): настоящий вход спрятан среди 15 приманок.

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

Всё вместе: RingCT

Связка «кольцевые подписи + спрятанные суммы + одноразовые адреса» называется RingCT (Ring Confidential Transactions). Она обязательна для всех транзакций Monero с 2017 года. Приватность в Monero не опция, которую можно забыть включить: все транзакции выглядят одинаково, и поэтому ваша прячется в толпе всех остальных.

А всё остальное — как у Bitcoin

Под капотом приватности Monero — обычная криптовалюта:

  • Блокчейн — цепочка блоков, новый блок примерно каждые 2 минуты.
  • Майнинг — Proof-of-Work на алгоритме RandomX, который специально сделан удобным для обычных процессоров.
  • Эмиссия — основная эмиссия закончилась в 2022 году, теперь каждый блок навсегда приносит 0.6 XMR (tail emission).
  • Узлы — любой может запустить monerod и проверять все правила сам.

Что читать дальше