Блог им. Ilia_Zavialov

Завьялов Илья (Point Pay) про BIP47.

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


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

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

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

Как уже говорилось во введении, прозрачность и распределенность сети Биткоин означает, что любой пользователь, при условии наличия у него доступа к Биткоин-узлу, может наблюдать за транзакциями платежной системы. В результате он может видеть балансы различных адресов. Сатоши Накамото упомянул о возможности генерировать новые пары ключей, а значит, и новые адреса, для каждого нового платежа, поступающего в кошелек. Цель заключается в том, чтобы иметь дополнительный барьер на случай выявления связи между личностью пользователя и одной из его пар ключей.

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

Стремление к приватности — это не излишняя забота или фантазия максималиста-биткоинера. Это конкретный параметр, напрямую влияющий на вашу личную безопасность и сохранность ваших средств. Чтобы вам было понятнее, приведем вполне конкретный пример:

  • Боб покупает биткоин по системе DCA (Dollars Cost Average), то есть приобретает небольшое количество биткоинов через регулярные промежутки времени, чтобы сгладить цену входа. Боб систематически отправляет приобретенные средства на один и тот же адрес получения. Каждую неделю он покупает 0.01 биткоина и отправляет их на тот же адрес. Через два года Боб накопил на этом адресе целый биткоин.
  • Булочная за углом принимает оплату в биткоинах. Довольный Боб идет покупать свою булочку за сатоши. Для оплаты он использует заблокированные средства со своего адреса. Теперь его пекарь знает, что он владеет биткоинами. Такая крупная сумма может вызвать зависть у окружающих, а Боб потенциально может подвергнуться физическому нападению.

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

Именно по этой причине большинство биткоин-кошельков автоматически генерируют новый адрес приема при нажатии на кнопку “Получить”. Поэтому для обычного пользователя необходимость использовать пустые адреса не является большим недостатком. С другой стороны, для онлайн-бизнеса, биржи или кампании по сбору пожертвований это ограничение может быстро стать невыполнимым.

Существует множество решений для таких организаций. Каждое из них имеет свои достоинства и недостатки, но на сегодняшний день, как мы увидим далее, BIP47 действительно отличается от других.

Принципы работы BIP47 и PayNym

Цель BIP47 — предложить простой способ получения большого количества платежей, не прибегая к повторному использованию адресов. Его работа основана на использовании многоразового платежного кода.

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

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

Для осуществления платежа оба пользователя должны иметь биткоин-кошелек с реализацией BIP47, например PayNym в Samourai Wallet или Sparrow Wallet. Объединение платежных кодов двух пользователей позволит установить между ними секретный канал. Чтобы правильно установить этот канал, отправитель должен будет провести транзакцию уведомления (подробнее об этом я расскажу позже).

Объединение платежных кодов двух пользователей порождает общие секреты, позволяющие генерировать большое количество уникальных адресов получения биткоина (ровно 2^32). Таким образом, в реальности платеж с помощью BIP47 отправляется не на платежный код, а на вполне классические адреса, которые сами являются производными от платежных кодов участников.

Таким образом, платежный код выступает в роли виртуального идентификатора, полученного из сида кошелька. В структуре путей деривации HD-кошелька платежный код находится на глубине 3, на уровне account.
Завьялов Илья (Point Pay) про BIP47.
Что касается PayNym Bots, этих роботов, которых можно увидеть в Twitter, то они являются просто визуальным отображением вашего платежного кода, созданного Samourai Wallet. Они создаются с помощью хеш-функции, что делает их уникальными.

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

Для пользователя процесс осуществления платежа по BIP47 с помощью реализации PayNym предельно прост. Допустим, Алиса хочет отправлять платежи Бобу:

  1. Боб публикует свой QR-код или непосредственно многоразовый платежный код. Их можно разместить на своем сайте, в различных социальных сетях или отправить Алисе с помощью другого средства связи.
  2. Алиса открывает кошелек Samourai или Sparrow и сканирует или вставляет платежный код Боба.
  3. Алиса соединяет свой PayNym с PayNym Боба (“Follow”). Эта операция выполняется вне блокчейна и совершенно бесплатна.
  4. Алиса подключает свой PayNym к PayNym Боба (“Connect”). Эта операция выполняется в блокчейне. Алиса должна заплатить комиссию майнерам, а также фиксированную плату в размере 15000 сатоши за услугу в кошельке Samourai. Плата за услугу взимается также и в Sparrow. Этот этап называется транзакцией уведомления.
  5. После подтверждения транзакции уведомления Алиса может создать транзакцию BIP47 на адрес Боба. Ее кошелек автоматически сгенерирует новый пустой адрес получения, приватный ключ для которого есть только у Боба.

Проведение операции уведомления, т.е. подключение PayNym, является обязательным предварительным шагом для осуществления платежей BIP47. С другой стороны, после его выполнения отправитель сможет совершить множество платежей получателю (ровно 2^32), без необходимости повторного проведения транзакции уведомления.

Как вы уже заметили, существуют две различные операции, позволяющие связать два PayNym: follow и connect. Операция подключения (“connect”) соответствует транзакции уведомления BIP47, которая представляет собой биткоин-транзакцию с определенной информацией, передаваемой в выходе OP_RETURN. Таким образом, с ее помощью устанавливается зашифрованная связь между двумя пользователями для создания общих секретов, необходимых для генерации новых пустых адресов приема.

С другой стороны, операция соединения (“follow” или “link”) позволяет установить связь по протоколу Soroban — это шифрованный протокол связи на базе Tor, специально разработанный командой Samourai Wallet.

Подведем итоги:

  • Соединение двух PayNym (“follow”) совершенно бесплатно. Это позволяет установить зашифрованную связь вне блокчейна, в частности, для использования инструментов совместных транзакций Samourai (Stowaway или StonewallX2). Эта операция специфична для PayNym. Она не описана в BIP47.
  • Подключение PayNym является платным. Для этого необходимо выполнить транзакцию уведомления, чтобы инициировать подключение. Ее стоимость складывается из комиссии кошелька, комиссии майнерам и 546 сатоши, отправленных на адрес уведомления получателя, чтобы сообщить ему об открытии канала. Эта операция связана с BIP47. После этого отправитель может произвести множество BIP47-платежей получателю.

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


теги блога Завьялов Илья Николаевич

....все тэги



UPDONW
Новый дизайн