Как безопасно генерировать уникальные адреса приема биткойнов на стороне клиента в JavaScript?Javascript

Форум по Javascript
Ответить
Anonymous
 Как безопасно генерировать уникальные адреса приема биткойнов на стороне клиента в JavaScript?

Сообщение Anonymous »

Я пытаюсь сгенерировать уникальный адрес получения, соответствующий конкретному моему биткойн-кошельку, каждый раз, когда посетитель загружает статическую HTML-страницу.
По соображениям безопасности сервер не имеет поддержки динамических сценариев на стороне сервера (как и Bitcoin Core) и, следовательно, не может «выдавать» их из базы данных с помощью предварительно сгенерированных сценариев или запрашивать у Bitcoin Core один «живой по запросу».
Библиотека JavaScript «bitcoinjs-lib», кажется, единственная реальная выбор.
Очевидно, что я не могу разместить закрытый ключ кошелька (созданного и управляемого Bitcoin Core) на сервере, не говоря уже о JavaScript, который каждый может прочитать напрямую. Поэтому оно должно быть «детерминированным» или каким бы то ни было правильным термином. Умная штука, позволяющая создавать неограниченное количество адресов получения исключительно на основе некоторого «открытого ключа», который совершенно безопасно хранить в публичном доступе.
Я смутно понимаю, что могу один раз попросить Bitcoin Core сгенерировать «какой-то открытый ключ» для моего кошелька, а затем скопировать эту строку в качестве параметра на веб-страницу с помощью bitcoinjs-lib, и тогда он каждый раз будет определять новый уникальный адрес. Но я не уверен, как это делается, и не могу понять, несмотря на долгие поиски и вопросы.
Похоже, что мне нужен «Расширенный открытый ключ (xpub)». Это правильно? И это правильный способ получить это из Bitcoin Core, выполнив вызов API getdescriptorinfo, а затем повторно выразив правильную часть "

Код: Выделить всё

wpkh([d34db33f/84h/0h/0h]0279be667ef9dcbbac55a06295Ce870b07029Bfcdb2dce28d959f2815b16f81798)
" возвращаемая строка (неясно, какая часть), как "вроде как" задокументировано на https://bitcoincore.org/en/doc/30.0.0/r ... iptorinfo/ ?
Но если да, то я прочитал это страшное предупреждение на https://github.com/bitcoinjs/bitcoinjs-lib :

Не делитесь расширенными открытыми ключами BIP32 ("xpubs"). Это обуза, и достаточно одного неправильно расположенного закрытого ключа (или неправильной реализации!), и вы рискуете потерять средства.

Что они подразумевают под этим? Не делитесь открытым ключом. Разве не в этом вся точка открытого ключа? предназначался для публикации в публичном, потому что это не закрытый ключ? Что они имеют в виду под «требуется только 1 неуместный закрытый ключ (или ошибочная реализация!)»?
Возможно, они конкретно говорят о какой-то «старой версии» этих «xpub»? Является ли BIP32 устаревшей/плохой вещью, которая с тех пор была заменена? безопасно использовать?
Мне не удалось найти четкие инструкции о том, как именно можно выводить с помощью JavaScript уникальный адрес получения для каждой загрузки страницы, когда bitcoinjs-lib каким-то образом передается только эта строка «xpub». Я даже не уверен на 100%, что это возможно, потому что это всегда просто подразумевается или намекается на это.
Я нашел этот интересный ответ на аналогичный вопрос: Как получить биткойн-адрес из открытого ключа с помощью bitcoinjs
Однако этот фрагмент кода просто создан «каким-то чуваком» и на самом деле не объясняет, что он делает, что представляет собой эта строка или как они получили ее из Bitcoin Core. Учитывая, что поставлено на карту, я бы не хотел слепо доверять этому и «делать предположения», которые в прошлом часто возвращались, чтобы укусить меня, когда я предполагал, что я сделал это правильно, только чтобы позже осознать это. что произошло какое-то фундаментальное недопонимание.

Подробнее здесь: https://stackoverflow.com/questions/798 ... -javascrip
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»