Как работает Monero?
Общая картина: публичный журнал, в котором ничего нельзя прочитать — но всё можно проверить
Monero — это электронные деньги, как Bitcoin: общий журнал (блокчейн), который ведут тысячи компьютеров, и никакого банка в центре. Разница в том, что в журнале Monero не видно, кто отправил, кто получил и сколько. И при этом каждый участник сети всё равно может проверить, что никто не напечатал деньги из воздуха и не потратил одну монету дважды.
Проблема: блокчейн — это стеклянный кошелёк
Блокчейн Bitcoin — публичная таблица. Любой человек может открыть обозреватель блоков и увидеть: с адреса bc1q…a7 ушло 0.3 BTC на адрес bc1q…f2. Имён там нет, но стоит один раз связать адрес с человеком (заплатили на бирже, отправили другу, засветили адрес для донатов) — и видна вся его история: сколько у него денег, кому он платит, кто платит ему.
Monero делает так, чтобы из журнала нельзя было вычитать ни одну из трёх вещей. Для каждой используется своя техника.
1. Кто получил? — одноразовые адреса
У вас есть один публичный адрес (длинная строка, начинающаяся с 4). Но в блокчейн он никогда не попадает. Отправитель берёт ваш адрес, добавляет к нему случайное число и вычисляет из этого совершенно новый одноразовый адрес. Деньги уходят на него.
Посторонний видит в блокчейне миллионы одноразовых адресов и не может понять, какие из них принадлежат одному человеку. А ваш кошелёк с помощью секретного ключа просмотра перебирает все новые транзакции и узнаёт «свои».
Представьте почтовый ящик, у которого для каждого письма появляется новая щель с новым номером. Только вы знаете, что все эти щели ведут в ваш ящик.
2. Сколько? — спрятанные суммы
Вместо суммы в блокчейн записывается обязательство (commitment) — число, которое «запирает» сумму внутри. По обязательству нельзя узнать сумму, но у обязательств есть волшебное свойство: их можно складывать. Сеть складывает обязательства на входе и на выходе и проверяет, что баланс сходится — не зная ни одной суммы.
Остаётся одна лазейка: что, если кто-то запишет отрицательную сумму? «−100 + 101 = 1» тоже сходится, а деньги напечатаны из воздуха. Поэтому к каждому выходу прилагается доказательство диапазона (Bulletproofs+): короткое доказательство, что спрятанное число неотрицательно и не огромно.
3. Кто отправил? — кольца (а скоро — весь блокчейн)
Когда вы тратите монету, вы должны доказать, что она ваша. В Bitcoin это делается подписью, которая прямо указывает на тратимый выход. В Monero сегодня используется кольцевая подпись: вы берёте свой выход и ещё 15 чужих случайных выходов из блокчейна (приманки), и подписываете так, что проверяющий убеждается: «подписал владелец одного из этих 16», но не знает, какого именно.
Как тогда не дать потратить одну монету дважды? Каждый выход, когда его тратят, оставляет уникальный «отпечаток» — key image. Сеть хранит все отпечатки и отклоняет транзакцию, если отпечаток уже встречался. По отпечатку нельзя понять, какой из 16 выходов был потрачен, но потратить его второй раз невозможно.
Кольцо из 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и проверять все правила сам.
Что читать дальше
- Зачем вообще нужна приватность? — про взаимозаменяемость денег.
- RingCT и FCMP++ простыми словами — если вы пришли именно за этим.
- Кривая Ed25519 — начало технического раздела.