Образ приватного ключа служит для обнаружения попыток двойной траты.
В случае с Monero средства всегда отправляются на одноразовый публичный ключ P
.
Соответствующий одноразовый приватный ключ x
специфичен для не потраченного выхода.
Так как выход может быть потрачен лишь единожды (в целом), соответствующий приватный ключ точно также может быть использован только один раз.
Таким образом, образ специфического приватного ключа I
, который присутствует в блокчейне, означает, что выход уже был потрачен, и последующие попытки потратить его не допускаются.
Такая схема необходима, поскольку Monero использует кольцевые подписи, которые позволяют узнать, кто точно подписал транзакцию. Вот почему простая проверка на предмет двойной траты, используемая, например, Bitcoin, в данном случае не сработает.
I = x*Hp(P)
Где:
I
- является образом приватного ключа (или «образом ключа» для краткости);x
- является одноразовым приватным ключом, используемым для разблокировки не потраченного выхода;P
- является одноразовым публичным ключом не потраченного выхода;Hp()
- является хеш-функцией, принимающей точку на эллиптической кривой в качестве аргумента.P
мы вычисляем следующим образом:
P = xG
где G
является базовой точкой на кривой edwards25519.
Заменяем P
на xG
и получаем:
I = x*Hp(xG)
Образ ключа I
является одноразовой функцией приватного ключа x
.