Сколько различных форматов может принимать публичный адрес?
Я создаю автономный индекс для отчета о цепочке блоков. Я планирую индексировать каждую транзакцию на основе адреса, отображаемого в TX.
Все ли адреса Base58? Я считаю, что я также читал о компактном адресе и типе адреса, который использовался в начале блок-цепи, прежде чем Сатоши знал об /сжатии адреса с использованием Base58.
2 ответа
Я считаю, что более ранним форматом, который вы имеете в виду, является Hash160, который формируется путем использования sha256
открытого ключа взяв ripemd160
результата:
Hash160 = ripemd160(sha256(pubkey))
литий>
Кроме того, то, что мы обычно называем адресом Биткойна, формируется путем первого конкатенации Hash160 с четырьмя байтами контрольной суммы (чтобы было крайне маловероятно, что вы можете ввести неверный адрес в биткойн-клиент случайно). Затем добавляется сетевой идентификатор (0x00 для основной сети), а строка закодирована base58 :
address = base58(0x00 + Hash160 + checksum)
литий>
Как вы можете видеть, эти два формата могут быть легко преобразованы из одного в другое. Кроме того, открытый ключ может быть закодирован либо сжатым, либо несжатым. Это приводит к двум различным адресам. Однако, поскольку вы можете получить открытый ключ ни из Hash160, ни из адреса base58, невозможно преобразовать адрес несжатого открытого ключа в адрес, соответствующий сжатому открытому ключу, и наоборот.
Не все транзакции могут быть декодированы в адрес.
Например, эта транзакция может быть заявлена путем помещения блока генезиса в выходной файл скрипт. Это не стандартный тип адреса, и он никогда не будет.