Я знаю, что аналогичные инструменты существуют для BCH (например, https://cashaddr.bitcoincash.org/ ). Есть ли способ преобразовать собственный биткойн- адрес segwit bech32 в устаревший формат?
Как говорит Anonymous, вы просто не можете.
Я попытаюсь выделить важную часть ответа MCCCS:
В Bitcoin Cash cashaddr ("bitcoincash:...", похожее на bech32, но не совсем) и устаревшие адреса ("1..." и "3...", base58) — это два разных способа представления одного и того же вывод onchain в удобочитаемом виде. Один можно преобразовать в другой, потому что результирующая транзакция будет идентичной, и получатель не может сказать, какой адрес вы использовали.
В Биткойне нативные адреса segwit («bc1...», bech32) и устаревшие адреса («1...» и «3...», base58) — это адреса для отдельных выходов в цепочке . Первые используются для выходов сегментации BIP141, а вторые — нет. Тот факт, что одно может быть технически преобразовано в другое, не имеет значения. Если получатель дал вам нативный segwit-адрес, значит, он ожидает транзакцию, которая платит на такой выход, и он может не распознать транзакцию, которая делает что-то еще. В некоторых случаях он может быть буквально не в состоянии получить доступ к монетам, отправленным в другое место (например, потому что он использует HSM, который может подписывать только определенные транзакции).
Краткий ответ: если вам дан собственный адрес SegWit и вы не можете отправить на него, есть только один способ действий: вместо этого запросите у получателя устаревший адрес.
В биткойнах нет преобразования форматов адресов, и попытка сделать это приведет к потере средств.
Этот ответ посвящен различиям между форматами адресов и причинам несовместимости. Если вы не кодируете свой кошелек, не доверяйте своему кошельку в отношении распознавания разных адресов, сделанных из одного и того же открытого ключа! Не экспериментируйте ни с чем из того, что я сказал, с реальными деньгами!
В Bitcoin Cash адреса CashAddr и 1 — это разные способы кодирования хэша открытого ключа для Pay-2-Public-Key-Hash. Для проведения выходов P2PKH раскрывается публичный ключ, на который подписывается подпись. То, как сериализуется хэш открытого ключа, не влияет на то, как расходуются или создаются выходные данные . Таким образом, эти адреса являются конвертируемыми.
Вот информация Bech32 (P2WPKH), SegWit в P2SH (P2SH-P2WPKH) и 1 адрес хранится:
<20-byte-key-hash>
<20-byte-key-hash>
0 <20-byte-key-hash>
Означает ли это, что P2PKH и P2WPKH — это одно и то же? Нет, отправка денег на P2PKH и Bech32 с одним и тем же открытым ключом приведет к разным транзакциям. И то, как кошелек получателя потратит их с соответствующим приватным ключом, тоже будет другим. Но это один и тот же закрытый ключ, кошелек должен иметь возможность тратить оба! Например, когда кошелек сгенерировал адрес Bech32 , нет ничего, что требовало бы от кошелька сканирования транзакций, расходуемых на этот открытый ключ, как P2PKH или P2SH-P2WPKH . Это будет зависеть от реализации. (Кстати, в P2PKH можно использовать сжатый или несжатый открытый ключ. P2WPKH или P2SH-P2WPKH нельзя использовать с несжатым открытым ключом)
Для P2WPKH и P2SH-P2WPKH, как и в предыдущем случае, из P2WPKH вы можете создать P2SH-P2WPKH и использовать его, если кошелек получателя совместим (я не знаю о Bitcoin Core, но нет никаких причин, чтобы легкий кошелек был совместимы с этим). С другой стороны, если вы видите чей-то P2SH-P2WPKH, вы не сможете получить P2WPKH или P2PKH, пока этот адрес не будет израсходован. Это связано с однократным хешированием, добавлением нуля и повторным хэшированием. При расходовании открытый ключ (и его хеш) становятся доступными.
Резюме: Теоретически это возможно, но никакая реализация не будет совместима.
Кларис
MCCCS
ПростоКевин
Jus12