Перейти к содержимому






* * * * * 1 голосов

Основные понятия Monero

Написано TheFuzzStone, 03 March 2017 · 1047 Просмотров

monero xmr криптовалюта монеро
Основные понятия Monero Существует довольного много специфических терминов в экосистеме Monero.

И чтобы не возникало подобных вопросов --> потом :cray:--> опять вопросов --> и потом :suicide_fool-edit:....
Давайте знакомиться с основными понятиями Monero. :)


Wallet Seed / Mnemonic Phrase

Минимальное количество информации, необходимое для восстановления криптографических ключей (составляющих основу кошелька). По сути это очень-очень большое число которое “невозможно” угадать.

Я бы хотел разделить понятия сида и мнемонической фразы:
  • Seed: 256-битное число (обычно представляется в виде 64-значного 16-ричного числа)
  • Mnemonic Phrase: словесное представление сида с одним дополнительным контрольным словом. Мнемоническая фраза и сид представляют собой одно и то же, однако мнемоническая фраза является более удобочитаемой формой данных для человека.
Конвенции, действующие в настоящее время, содержат кодирование сида с использованием словаря объемом 1626 слов, что на выходе даст Mnemonic Phrase, состоящую из 24 слов. Затем вычисляется хэш CRC32 от этих слов, чтобы добавить последнее, 25-ое слово, которое используется для проверки на ошибки.

Сам по себе Seed, если меньше определенного числа, используется как приватный ключ. Тогда как seed mod l выполняется для получения приватного ключа из сида, где l - очень большое число, специфичное для эллиптической кривой, используемой в Monero.

Private Key / Public Key / Key-pair

Общая формулировка, касающаяся асимметричной криптографии, в которой приватный и публичный ключи образуют пару ключей. Публичный ключ образуется из приватного.
  • Публичный ключ можно распространять, он даёт принимающей стороне возможность зашифровать что-либо или проверить подпись.
  • Приватный ключ даёт владельцу возможность подписывать или расшифровывать что-либо, а значит такие ключи должны держаться в секрете.
View Key

Пара ключей, специфичная для Monero. Публичная часть ключа образовывает вторую половину адреса Monero и используется отправителем для генерации одноразовых скрытых адресов (one-time stealth address), на которые будут отправляться средства.

Владелец использует private view key для сканирования блокчейна, чтобы найти средства отправленные на его адрес. На уровне протокола, отправитель выполняет шифрование с помощью public view key получателя, когда тот в свою очередь пробует расшифровать все выходы в блокчейне, чтобы найти те, которые принадлежат ему.

В целях проверки ключ может быть отправлен аудитору вместе с подписанными образами ключа, чтобы подтвердить баланс кошелька. Распространение view key позволит аудитору увидеть лишь принятые транзакции, но он не сможет увидеть какие-либо траты или точный баланс кошелька.


Spend Key

Публичная часть ключа образовывает первую половину адреса Monero и используется для создания новых транзакций и участия в кольцевых подписях (ring signatures).

Private spend key используется для подписи образа ключа, когда владелец хочет потратить средства, а public spend key используется сетью для проверки подписи, чтобы принять её как действительную.

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


Address / Stealth Address

Минимальный объем информации, сжатый в единую 95-значную base58 строку, которую получатель должен дать отправителю чтобы получить Monero.

В адресе закодированы байт сети, public spend key, public view key и контрольная сумма. Минимум, который требуется отправителю, состоит лишь из двух ключей, однако байт сети и контрольная сумма добавляются для предотвращения ошибок.

Любой адрес Monero является скрытым. Они называются скрытыми, потому что на самом деле Monero не отправляются на сам адрес, и он никогда не появляется в блокчейне. Вместо этого он используется отправителем для создания одноразового публичного ключа (one-time public key), средства из которого может потратить только получатель.


One-time public key

Одноразовый публичный ключ, куда на самом деле отправляются Monero.

Адреса Monero никогда не находятся в блокчейне, вместо них там присутствуют лишь эти одноразовые публичные ключи (one-time public key).

Они отвечают за обфускацию пункта назначения, они выглядят похоже, но только владелец public view key знает что ему принадлежит. Все они генерируются отправителем и используются получателем для поиска его средств.

Из Moneropedia:

Каждая транзакция использует два ключа: public spend-key и public view-key. Принимающей стороной является one-time public key, вычисленный с помощью этих двух ключей.

Когда кошелек сканирует блокчейн в ожидании входящих транзакций, каждая транзакция проверяется на принадлежность владельцу кошелька. Для этого требуется только private view key и public spend key. Такая проверка неизменна, а её результат невозможно сфальсифицировать. Вы не сможете принимать и идентифицировать транзакции без соответствующего private view key.

Для траты средств требуется вычислить one-time private spend key для этого выхода.


View-only wallet

Кошелёк создаётся с использованием private view key и адреса. Это позволяет пользователю проверять блокчейн на предмет входящих транзакций. Практическое использование заключается в увеличении защиты пользователя или для проведения аудита.


Audit Wallet

Это View-only кошелёк, в который были импортированы подписанные образы ключа.

Для каждого выхода нужен один образ ключа, а сам список выходов может быть виден только с помощью view key. С импортированными образами ключей кошелёк покажет текущий баланс. Если ожидается получение средств, аудитор должен попросить владельца кошелька отправить ему подписанный образ ключа для этого нового выхода, чтобы подтвердить имеющийся баланс на счету.


Light Wallet

“Лёгкий” кошелёк который не хранит блокчейн Monero и не выполняет роль полной ноды.

Кошелёк Monero-Wallet-CLI уже является лёгким, но он обычно взаимодействует с локальной нодой на том же компьютере. Также его можно подключить к удаленной ноде, в этом случае он станет “лёгким” кошельком.

Для таких целей существуют публично доступные ноды, некоторые можно найти в сети Tor.

Существует другая модель, которая может быть использована для большего облегчения кошелька, но в ущерб приватности. В этой модели сервер хранит private view key пользователя для продолжения обновления кошелька, пока пользователь не находится в сети.

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

Для траты средств сервер подготавливает транзакцию, отправляет её клиенту, тот подписывает её с помощью private spend key и отправляет обратно серверу, который в итоге протранслирует в сети эту транзакцию.

В принципе, защищенность этой модели эквивалентна использованию горячего кошелька, потому что все процессы криптографии, использующие spend key, производятся на стороне клиента.

Есть рабочая реализация этой модели, но она web-ориентирована (javasrcipt), где клиентская сторона управляется браузером.


Cold Storage

Кошелёк который был сгенерирован полностью в офлайне, который никогда не был на устройстве подключённому к сети. Это может быть файл, хранимый на USB, или же просто мнемоническая фраза, записанная на бумаге.

Именно полная изоляция от сети делает хранилище “холодным”.


Payment ID

Особенность, разработанная для упрощения отправителю доказать получателю факт отправки средств.

Из-за приватных особенностей Monero, получатель не может определить, откуда ему поступили средства. Но если к ним привязан Payment ID, можно узнать отправителя.

Такие идентификаторы должны случайно генерироваться для каждой транзакции для избежания появления связей между транзакциями.

Это работает примерно так:
  • Получатель даёт отправителю свой адрес и уникальный Payment ID.
  • Отправитель отправляет Monero с указанным Payment ID.
  • Получатель видит входящую транзакцию с указанным ID и знает от какого пользователя он получил средства, так как только именно тот отправитель, знал тот Payment ID.
Integrated Address

Похож на Payment ID. Разница заключается в том, что адрес и Payment ID кодируются в одну строку, которая позволяет избежать ошибок и пресекает инциденты, когда отправитель забывает указать Payment ID.

В этом случае приватность Payment ID увеличивается из-за использования секрета, указанного в транзакции. Согласно этой схеме, даже при повторном использовании Payment ID и того же адреса, зашифрованный Payment ID будет отображаться в блокчейне как некое полностью случайное значение.

Это представляется весьма желательным, так как при таком подходе ломаются любые связи между транзакциями, которые возникают при использовании обычных текстовых Payment ID.



Большое спасибо xProphet за помощь с переводом Изображение

  • 8