Ключевые образы в Monero: механизм предотвращения двойной траты
Проблема двойного расходования конфиденциальных монет
Каждая криптовалюта должна решать проблему двойного расходования: гарантировать, что одну и ту же монету нельзя потратить дважды. В прозрачных блокчейнах, таких как Биткойн, это просто. Каждый ввод транзакции ссылается на конкретный неизрасходованный вывод транзакции, и вся сеть может проверить, что этот вывод не был использован ранее. Реестр – это открытая книга. Любой может проследить цепочку владения от одной транзакции к другой и подтвердить, что балансы законны.
Monero сталкивается с принципиально более сложной версией этой проблемы. Поскольку Monero скрывает отправителя, получателя и сумму каждой транзакции, сеть не может просто проверить, был ли потрачен конкретный выход. Кольцевые подписи скрывают, какой вывод на самом деле используется, смешивая его с ложными адресами, а скрытые адреса гарантируют, что выходные данные не могут быть связаны с их получателями. Если блокчейн не может определить, какой конкретный результат тратится, как он может помешать кому-то потратить один и тот же результат дважды?
Ответ кроется в одном из самых элегантных криптографических механизмов Monero: ключевых образах. Ключевые изображения обеспечивают математическую гарантию того, что каждый выход может быть потрачен только один раз, без раскрытия того, какой выход тратится. Они являются мостом между абсолютной конфиденциальностью Monero и целостностью, необходимой для функционирования денежной системы.
Что такое ключевой образ?
Ключевое изображение — это уникальный криптографический маркер, который генерируется и публикуется каждый раз, когда в транзакции тратится вывод Monero. Технически изображение ключа — это точка на эллиптической кривой, детерминированно полученной из одноразового закрытого ключа, связанного с конкретным выходом. Критические свойства ключевого изображения следующие:
- Уникальность- Каждый выход создает ровно одно ключевое изображение. Два разных вывода всегда будут выдавать разные ключевые изображения, а один и тот же вывод всегда будет выдавать одно и то же ключевое изображение, независимо от того, когда и сколько раз выполняется вычисление.
- Односторонний вывод- Образ ключа вычисляется на основе закрытого ключа, но закрытый ключ не может быть восстановлен из образа ключа. Это похоже на то, как работает хэш-функция: легко вычисляется в одном направлении, но вычислительно невозможно повернуть вспять.
- несвязность- Изображение ключа не показывает, какому выводу кольцевой подписи оно соответствует. Наблюдатель, который видит ключевое изображение, опубликованное в блокчейне, не может определить, какой из членов кольца является реальным потраченным выходом.
Как генерируются ключевые изображения
Чтобы понять, как создаются ключевые образы, полезно кратко рассмотреть, как работают выходные данные Monero. Когда кто-то отправляет вам Monero, транзакция создает одноразовый скрытый адрес специально для этого платежа. Этот скрытый адрес получается из ваших открытых ключей и случайного значения, выбранного отправителем. Только вы, как получатель, можете вычислить соответствующий одноразовый закрытый ключ для этого скрытого адреса, используя свой личный ключ траты. ring signatures
Когда позже вы решите потратить этот выход, ваш кошелек вычислит ключевое изображение по формуле:КИ = х * Хп(П), где x — ваш одноразовый закрытый ключ для вывода, Hp — функция хэш-точки, которая сопоставляет открытый ключ P с точкой на эллиптической кривой, а P — одноразовый открытый ключ вывода. Результатом является точка кривой, которая уникальна для этого конкретного вывода и этого конкретного закрытого ключа.
Это вычисление является детерминированным. Независимо от того, сколько раз вы вычисляете ключевой образ для данного результата, вы всегда получите один и тот же результат. И никакой другой вывод не будет создавать такой же образ ключа, поскольку каждый вывод имеет уникальную одноразовую пару ключей. Именно этот детерминизм делает возможным обнаружение двойных расходов.
Как ключевые изображения предотвращают двойные расходы
Каждая транзакция Monero, использующая выходные данные, должна включать соответствующий образ ключа. Когда майнеры получают новую транзакцию, они сверяют изображение ключа с базой данных всех изображений ключей, которые появлялись в предыдущих транзакциях. Если изображение ключа никогда раньше не встречалось, транзакция потенциально действительна и может быть включена в блок. Если образ ключа уже существует в базе данных, транзакция пытается потратить выходные данные, которые уже были использованы, и она отклоняется как попытка двойного расходования.
Этот механизм удивительно прост по своей логике. Сети не обязательно знать, какой выход был потрачен. Не нужно прослеживать цепочку владения. Для этого не нужно расшифровывать какие-либо суммы или идентифицировать каких-либо участников. Все, что ему нужно сделать, это поддерживать набор наблюдаемых образов ключей и отклонять любую транзакцию, которая пытается добавить дубликат. База данных ключевых изображений монотонно растет по мере расширения блокчейна, и каждая действительная трата добавляет ровно одну новую запись.
Почему ключевые изображения не ставят под угрозу конфиденциальность
Естественное беспокойство вызывает то, не приведет ли публикация ключевых изображений к утечке конфиденциальности. Если каждый потраченный выход имеет уникальное ключевое изображение, может ли злоумышленник использовать ключевые изображения, чтобы связать выходные данные с их владельцами или отследить структуру расходов? Ответ — нет, из-за математических свойств конструкции ключевого изображения.
Образ ключа получается из одноразового закрытого ключа, который в свою очередь получается из комбинации случайного значения отправителя и закрытых ключей получателя. Не зная секретного расходного ключа получателя, вычислительно невозможно определить, какому выводу соответствует данное изображение ключа. Кольцевая подпись доказывает, что отправитель знает закрытый ключ одного из членов кольца, а изображение ключа доказывает, что этот конкретный выход не был потрачен ранее, но ни одна часть информации не показывает, какой из членов кольца является настоящим.
Кроме того, изображения ключей из разных транзакций не могут быть сопоставлены, чтобы определить, принадлежат ли они одному кошельку. Каждый выход имеет уникальную одноразовую пару ключей, поэтому образы ключей, созданные различными выходами одного кошелька, кажутся совершенно не связанными друг с другом.
База данных ключевых изображений
Майнеры и полные узлы Monero поддерживают полную базу данных каждого ключевого изображения, которое когда-либо появлялось в действительной транзакции в блокчейне. Эта база данных является важнейшим компонентом консенсуса. При проверке нового блока узлы проверяют изображения ключей каждой транзакции по этой базе данных, чтобы убедиться в отсутствии дубликатов.
База данных образов ключей растет с каждой транзакцией и никогда не уменьшается. В отличие от набора UTXO Биткойна, который может как увеличиваться, так и уменьшаться по мере создания и потребления выходных данных, набор ключевых изображений Monero предназначен только для добавления. Это необходимый компромисс для конфиденциальности: поскольку потраченные выходные данные не могут быть публично идентифицированы и удалены из набора потенциальных участников кольца, база данных ключевых изображений должна сохраняться неопределенно долго, чтобы предотвратить исторические попытки двойного расходования.
По состоянию на 2026 год база данных образов ключей содержит миллионы записей, но каждая запись имеет размер всего 32 байта, что позволяет управлять общими требованиями к объему памяти даже на скромном оборудовании. Поиск выполняется с использованием эффективных структур данных, которые позволяют обнаруживать дубликаты практически за постоянное время.
Сравнение с моделью UTXO Биткойна
Биткойн использует принципиально иной подход к предотвращению двойных расходов. В Биткойне каждая входная транзакция должна ссылаться на конкретный неизрасходованный выход транзакции посредством ее хеша транзакции и выходного индекса. Набор UTXO — это полный список всех выходов, которые были созданы, но еще не потрачены. Когда транзакция тратит UTXO, эта запись удаляется из набора, и добавляются новые выходы, созданные транзакцией.
Эта модель прозрачна и эффективна. Узлы могут быстро проверить, что указанный UTXO существует и не был потрачен. Однако он не обеспечивает нулевую конфиденциальность. Любой, кто изучает блокчейн, может увидеть, какие именно выходные данные используются, отследить поток средств с одного адреса на другой и построить полный граф транзакций всей сети.
Ключевой имиджевый подход Monero обеспечивает ту же гарантию защиты от двойных расходов без этой прозрачности. Вместо указания на конкретный UTXO транзакция Monero создает кольцо вероятных выходов и доказывает, что отправитель владеет одним из них. Ключевое изображение служит уникальным маркером потраченных средств, который будет подразумеваться при удалении UTXO в Биткойне, но должен быть явным в конструкции Monero, сохраняющей конфиденциальность.
Компромиссы между двумя подходами
- Хранилище— Набор UTXO Биткойна может сокращаться по мере расходования выходов. База данных образов ключей Monero только растет. Однако размер ключевых изображений на одну запись невелик, что смягчает эту проблему.
- Скорость проверки— Поиск биткойнов UTXO выполняется немного быстрее, поскольку набор меньше, а записи со временем удаляются. Ключевые проверки изображений Monero остаются эффективными, но работают с постоянно растущим набором данных.
- Конфиденциальность- Подход Monero обеспечивает значительно более высокий уровень конфиденциальности за счет дополнительного хранилища и вычислительных затрат.
- Проверяемость- Прозрачный набор UTXO Биткойна позволяет любому проверить общий объем поставок. Monero полагается на дополнительные криптографические доказательства (обязательства Педерсена и доказательства диапазона), чтобы гарантировать целостность поставок без раскрытия отдельных сумм.
Ключевые образы в контексте кольцевых подписей
Ключевые изображения работают совместно с кольцевыми подписями, обеспечивая конфиденциальность отправителя Monero. Кольцевая подпись доказывает, что подписавшая сторона обладает закрытым ключом для одного из нескольких открытых ключей в наборе, но не раскрывает, какой именно. Изображение ключа прикреплено к этой кольцевой подписи и связано с фактически затраченным выходом посредством криптографической конструкции.
Кольцевая подпись гарантирует, что наблюдатели не смогут определить, какая продукция тратится. Ключевой образ гарантирует, что каждый выход можно потратить только один раз. Вместе они обеспечивают комплексное решение: конфиденциальность отправителя и целостность сети. Без ключевых изображений одни только кольцевые подписи позволили бы неограниченные двойные расходы, поскольку никто не мог бы сказать, какие результаты уже были потреблены.
Будущие разработки: FCMP++ и не только
Сообщество Monero активно разрабатывает доказательство членства в полной цепочке (FCMP++), которое значительно расширит набор анонимности с текущего кольца из 16 участников до всего набора выходов в блокчейне. В соответствии с FCMP++ ключевые изображения будут продолжать выполнять свою важнейшую роль в качестве маркеров предотвращения двойных расходов, но гарантии конфиденциальности, которые они обеспечивают, будут еще сильнее, поскольку не будет небольшого круга кандидатов для анализа.
Ключевые изображения представляют собой одно из самых важных нововведений Monero: доказательство того, что что-то произошло (выход был потрачен), без раскрытия того, что конкретно произошло (какой вывод это был). Эта, казалось бы, парадоксальная способность позволяет Monero функционировать как частная и заслуживающая доверия денежная система. Для тех, кто хочет совершать частные транзакции с Monero,MoneroSwapperпредлагает обмены без KYC, которые дополняют конфиденциальность в цепочке, которую помогают гарантировать ключевые изображения.
🌍 Читать на