Адреса в Monero

Тема в разделе "Мануалы", создана пользователем Mr. Pickles, 9 дек 2019.

  1. Mr. Pickles

    Команда форума Модератор Редактор

    Регистрация:
    11 сен 2017
    Сообщения:
    721
    Симпатии:
    222
    Публичный адрес Monero — это та информация, которую вы публикуете, чтобы вам заплатили.

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

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

    В Monero существует несколько типов публичных адресов:
    • стандартный адрес — основной тип адреса, также называемый «сырым» адресом;
    • подадрес — то, что вы будете использовать по умолчанию;
    • интегрированный адрес — необходим биржам, предпринимателям и прочим коммерсантам, принимающим Monero в полностью автоматизированном режиме.
    Стандартный адрес

    Исторически «сырой» адрес был единственной опцией. Поэтому он наиболее распространён и является самым поддерживаемым типом адреса.

    Его сила в простоте. Тем не менее сегодня пользователи предпочитают принимать средства на подадреса, а не на стандартный адрес.

    Технически «сырой» адрес также служит основой для создания подадресов и интегрированных адресов.

    Сырой адрес полезен по следующим причинам:
    • на него приходит вознаграждение за вычисление блока, если вы занимаетесь соло-майнингом, так как другие адреса в этом случае не поддерживаются;
    • на него принимаются средства от отправителей, совершающих групповые платежи (таких, как майнинг-пулы); в этом случае отправитель платит множеству сторон, используя одну транзакцию, и такая транзакция содержит множество выходов, и подадреса в этом случае не работают;
    • на него принимаются средства от отправителей, использующих «унаследованные» кошельки (то есть они также не могут использовать подадреса для отправки).
    «Сырой» адрес Monero состоит из двух публичных ключей:
    • публичного ключа траты;
    • публичного ключа просмотра.
    Также он включает в себя контрольную сумму и «сетевой байт», который, по сути, указывает тип сети и тип адреса.

    Структура данных
    ИндексРазмер в байтахОписание
    01Указывает тип сети и тип адреса; 18 — основной блокчейн, 53 — тестовая сеть
    132Публичный ключ траты
    3332Публичный ключ просмотра
    654Контрольная сумма (хеш Keccak-f[1600] предыдущих 65 байтов, урезанная до первых 4 байт)
    Всего размер адреса составляет 69 байт. Затем байты шифруются (src) в соответствии со специфическим для Monero форматом Base58, и в результате получается строка из 95 символов. Пример стандартного адреса:
    Код:
    4AdUndXHHZ6cfufTMvppY6JwXNouMBzSkbLYfpAV5Usx3skxNgYeYTRj5UzqtReoS44qo9mtmXCqY45DJ852K5Jv2684Rge
    См. исходный код.

    Как генерируется

    Стандартный адрес выводится на основе корневого приватного ключа.

    Подадрес

    Подадрес — это то, что вы используете по умолчанию для получения Monero.

    Узнайте, за что вам заплатили.

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

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

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

    Следует отметить, что это не поможет, если у вас есть свой аккаунт у такой службы. Тогда ваши платежи уже связываются в базе данных службы, независимо от Monero.

    Групповое перечисление средств на счета

    Примечание: пропустите эту часть, если вы новичок в Monero. Счета не так важны, и в настоящее время не поддерживаются GUI.

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

    Вы можете пожелать организовать ваши средства в такие счета, как «наличные», «работа», «трейдинг», «майнинг», «пожертвования» и т. д.

    Так как счета являются просто группами подадресов, у самих них нет адреса.

    Счета детерминировано выводятся на основе корневого приватного ключа вместе с подадресами.

    Счета подобны подсчетам вашего классического банковского счёта. Тем не менее тут есть одно важное отличие. В случае с Monero средства на самом деле находятся не на счетах и не по публичным адресам. Концептуально публичные адреса являются шлюзом или механизмом маршрутизации. Средства находятся в непотраченных выходах транзакций. Таким образом, в одной транзакции, в принципе, могут накапливаться и тратиться выходы с множества адресов (и при расширении — с множества счетов). CLI или GUI-кошелёк может напрямую не поддерживать создание таких транзакций из соображений простоты.

    Если говорить коротко, то рассматривайте счета в качестве мягкой группировки ваших средств.

    А почему просто не использовать множество кошельков?

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

    Кроме того, довольно удобно управлять своими подадресами, пользуясь одним интерфейсом пользователя.

    Свойство на уровне кошелька

    Подадреса и счета являются свойством уровня кошелька, позволяющим строить и интерпретировать транзакции. Они не влияют на консенсус.

    Структура данных

    Подадрес имеет выделенный «сетевой байт»:

    ИндексРазмер в байтахОписание
    01Указывает тип сети и тип адреса; 42 — основная сеть, 36 — отладочная сеть, 63 — тестовая сеть
    В ином случае структура данных будет той же, что и у стандартного адреса.

    Как генерируется

    Концептуально у каждого подадреса есть:
    • индекс счёта (также известен как «основной» индекс);
    • индекс подадреса в самом счёте (также известен как «младший» индекс).
    Индексы имеют нулевую основу. По умолчанию кошельки используют индекс счёта с нулевым значением.

    Индексы включаются в структуру данных подадресов не напрямую. Вместо этого они используются в качестве входа при генерировании ключей подадресов.

    Приватный ключ просмотра

    Приватный ключ просмотра m для подадреса выводится следующим образом:
    Код:
    m = Hs("SubAddr" || a || account_index || subaddress_index_within_account)
    Где:
    • Hs является хеш-функцией Keccak-256, интерпретированной как целое число и модуль 1 (максимальная скалярная величина edwards25519);

    • || является операцией конкатенации множества байтов;

    • SubAddr является фиксированной строкой с 0 на конце (всего 8 байт);

    • a является приватным ключом просмотра стандартного адреса (неподписанным 32-байтовым целым числом с обратным порядком байтов);

    • account_index является индексом счёта (неподписанным 32-байтовым целым числом с обратным порядком байтов);

    • subaddress_index_within_account является индексом подадреса внутри счёта (неподписанным 32-байтовым целым числом с обратным порядком байтов).
    Выведение «подключей просмотра» из основного ключа просмотра позволяет создавать кошелёк, предназначенный только для просмотра, который отслеживает весь кошелёк, включая подадреса.

    Публичный ключ траты

    Публичный ключ траты D для подадреса выводится следующим образом:
    Код:
    D = B + m*G
    Где:
    • B является публичным ключом траты для стандартного адреса;

    • m является приватным ключом просмотра для подадреса;

    • G является «базовой точкой» - это просто специфическое для edwards25519 константное значение.
    Публичный ключ просмотра

    Публичный ключ просмотра C для подадреса выводится следующим образом:
    Код:
    C = a*D
    Где:
    • a является приватным ключом просмотра стандартного адреса;

    • D является публичным ключом траты для подадреса.
    Особый случай с (0, 0)

    Подадрес #0 счёта #0 является стандартным адресом. Так как стандартный адрес генерируется по другим правилам, он реализуется просто посредством оператора «если».

    Построение адресной строки

    Процедура та же, что и в случае со стандартным адресом.

    Внимание!
    • Не рекомендуется переводить весь баланс с подадреса на стандартный адрес в рамках одной транзакции. В результате такого действия подадреса связываются в блокчейне. Тем не менее это угрожает анонимности только в случае с определённым отправителем, и ситуация едва ли будет хуже, как если бы подадреса не использовались вовсе. Если вам необходимо объединить средства и сохранить максимальную анонимность, то это следует делать отдельными транзакциями (по одной на подадрес).

    • Ярлыки, используемые для удобства, не сохраняются при повторном создании на основе мнемонической фразы.
    Интегрированный адрес

    Интегрированные адреса идеальны с точки зрения автоматизированного приёма Monero, например, онлайн магазинами и биржами.

    Интегрированный адрес Monero использует идентификатор (ID) платежа. Это позволяет узнать, за что вам заплатили.

    Пожалуйста, отметьте, что это в большей степени технические ID платежей Monero, и их не следует путать с коммерческими идентификаторами, такими как номер заказа или номер счёта.

    При проведении транзакции на интегрированный адрес ID платежа не раскрывается публично. ID платежа в транзакции зашифрован при помощи общего секрета (одноразового случайного ключа, известного только отправителю и получателю). Только получатель сможет сопоставить транзакцию с ID платежа.

    Интегрированные адреса Monero используются вместо устаревших полных 32-байтовых ID платежа, которые включались в дополнительное поле транзакции (где они не шифровались).

    Структура данных (src)

    ИндексРазмер в байтахОписание
    01Указывает тип сети и тип адреса; 19 — основной блокчейн, 54 — тестовая сеть
    132Публичный ключ траты
    3332Публичный ключ просмотра
    658Компактный ID платежа, представляющий собой 8 случайно сгенерированных получателем байт. Следует отметить, что он не требует шифрования в самом адресе, но он скрывается в транзакции, которая проводится на интегрированный адрес, что не позволяет внешним наблюдателям связать платёж с адресом.
    734Контрольная сумма (хеш Keccak-f[1600] предыдущих 65 байтов, урезанный до первых 4 байт)
    Всего 77 байт. Затем байты шифруются (src) в соответствии со специфическим для Monero форматом Base58, и в результате получается строка из 106 символов. Пример интегрированного адреса:
    Код:
    4LL9oSLmtpccfufTMvppY6JwXNouMBzSkbLYfpAV5Usx3skxNgYeYTRj5UzqtReoS44qo9mtmXCqY45DJ852K5Jv2bYXZKKQePHES9khPK
    Сравнение интегрированных и подадресов

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

    Физические лица предпочитают для приёма платежей использовать подадреса. При определённых условиях это повышает уровень анонимности.

    Коммерческие организации, принимающие платежи автоматически, скорее, будут пользоваться интегрированными адресами. Рациональным обоснованием может служить следующее:
    • Сценарии, при которых подадреса помогают повысить уровень анонимности, не применимы к коммерческим организациям, поскольку такие организации со временем становятся одним и тем же лицом, а следовательно, тут подадреса не обеспечивают никаких преимуществ.

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

    • Чтобы сгенерировать интегрированный адрес не требуется общего счётчика. Это позволяет отдельным службам независимо генерировать интегрированные адреса, не синхронизируясь с общей последовательностью. И наоборот, подадреса генерируются последовательно, и поэтому последовательность (счётчик или индекс) является связующей точкой между кошельком и всеми службами, которым необходимо сгенерировать адрес. Возвращаясь к интегрированным адресам, следует отметить, что размер встроенных ID платежей составляет 64 бита. Это означает достаточное количество места, чтобы любой мог надёжно сгенерировать их случайным образом, и при этом будет гарантирована уникальность адреса.

    • В очень редких случаях попытка отслеживания очень большого количества подадресов может стать проблемой. Подробную информацию можно найти в этом треде на reddit.
    Внимание!

    Существуют некоторые сложности:
    • платёж на множество интегрированных адресов не может быть проведён одной транзакцией;

    • физические лица предпочитают использовать подадреса, тем не менее если вы используете интегрированные адреса, вы должны позволить Monero сгенерировать такие интегрированные адреса для вас (а не делать самостоятельно, используя свои ID платежей).
    Источник: Monero Address

    Перевод:
    Mr. Pickles (@v1docq47)
    Редактирование:
    Agent LvM (@LvMi4)
    Коррекция:
    Kukima (@Kukima)
     
    #1 Mr. Pickles, 9 дек 2019
    Последнее редактирование: 28 дек 2019
  • О нас

    Наш сайт является одним из уникальных мест, где русскоязычное сообщество Monero может свободно общаться на темы, связанные с этой криптовалютой. Мы стараемся публиковать полезные мануалы и статьи (как собственные, так и переводы с английского) о криптовалюте Monero. Если вы хорошо владеете английским (или можете писать собственные статьи/мануалы) и хотите помочь в переводах и общем развитии Monero для русскоязычной аудитории - свяжитесь с одним из администраторов.