Author

Topic: Различия в криптографии у разных БЧ (Read 161 times)

legendary
Activity: 2317
Merit: 2318
почему например в эфире адрес это 20 байт, если публичный ключ - 32,
если 20 байт достаточно, то почему и именно 20, а не 16 к примеру?
Не только в Эфире, но и в Биткойне и, вообще, в большинстве криптовалют адрес - это 20 байт, которые являются результатом хеширования публичного ключа. Перед кодированием в формат Base58 или Bech32 к этим 20 байтам добавляются служебные байты, сигнализирующие о типе адреса, и байты контрольной суммы. Есть, правда, особые адреса - P2WSH, которые хранят 32 байта хеша скрипта, они кодируются в формате Bech32 и выглядят длиннее, чем адреса P2WPKH.

Адрес Эфира - это 20 байт в виде шестнадцатеричной строки, в которой контрольная сумма может (но не обязана) кодироваться изменением регистра символов.

А вот на вопрос почему именно 20 байт ответить сложнее. Можно было бы использовать все 32 байта хеша публичного ключа, но эти 32 байта пришлось бы хранить в каждой транзакции. Поэтому, для экономии места в транзакциях Накамото решил использовать для адресов более короткий 20-байтный хеш RIPEMD-160. С тех пор так и повелось: 32 байта - слишком много, 16 байт - слишком мало, а 20 байт - в самый раз.  
copper member
Activity: 1554
Merit: 489
Stop the war!
я заметил что у разных БЧ и вообще БФТ протоколов используется часто свои особенные форматы адресов аккаунтов и форматы подписей
почему они не использовали просто криптографию биткоина?
в чем различия?
почему например в эфире адрес это 20 байт, если публичный ключ - 32,
если 20 байт достаточно, то почему и именно 20, а не 16 к примеру?



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

2. Публичный (приватный) ключ длиннее чем адрес, по той же самой причине, из-за которой двоичное число длиннее десятичного.
Как правило, ключи записывают в шестнадцатиричном виде, а адреса в  base64 или типа того. Хотя, кое-где, например в монеро, не заморачиваются, всё в хексах только кодируют.
legendary
Activity: 2450
Merit: 4415
🔐BitcoinMessage.Tools🔑
я заметил что у разных БЧ и вообще БФТ протоколов используется часто свои особенные форматы адресов аккаунтов и форматы подписей
почему они не использовали просто криптографию биткоина?
в чем различия?
почему например в эфире адрес это 20 байт, если публичный ключ - 32,
если 20 байт достаточно, то почему и именно 20, а не 16 к примеру?
Для чего в адресе n-ое количество байт объяснить не сложно: адреса должны служить уникальными идентификаторами для участников транзакций, а чем меньше в адресе байт, то тем сложнее эту уникальность обеспечить. А вообще, сами адреса являются удобным представлением публичных ключей, для их "генерации" можно использовать любые хэш функции и алгоритмы декодирования. Для чего разные блокчейны используют разные эллиптические кривые тоже объяснить не сложно: криптовалютная индустрия является огромной площадкой для проведения экспериментов, то есть другие блокчейны используют различные технологии в попытке исправить недостатки первой криптовалюты. Если же использовать все то же самое, то исправить что-либо практически невозможно или просто экономически нерентабельно.
copper member
Activity: 33
Merit: 26
DeFi fan
а как такие адреса используются? а то не могу понять зачем это

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

а зачем иехахрическая генерация? для кросс-чейнов?

Да, пишем кроссчейн кошелек с AirGap, и еще для некоторых подобных задач.
newbie
Activity: 29
Merit: 2
а как такие адреса используются? а то не могу понять зачем это

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

а зачем иехахрическая генерация? для кросс-чейнов?
copper member
Activity: 33
Merit: 26
DeFi fan
а как такие адреса используются? а то не могу понять зачем это

Это необходимо для возможности универсального описания инструкций как к иерархической генерации ключей, так и для адресов, которые не используют иерархию.
Пока что внутри нашего протокола, а также у партнеров. Как обкатаем, будем EIP формировать.
newbie
Activity: 29
Merit: 2
Если коротко - потому, что так решили разрабы отображать массив байтов в виде строки.

Mы сейчас стандартизировали для своего проекта универсальный формат декларативной записи адресов: https://github.com/censync/go-mhda. Ибо BIP-44/84 и других недостаточно.


а как такие адреса используются? а то не могу понять зачем это
copper member
Activity: 33
Merit: 26
DeFi fan
Если коротко - потому, что так решили разрабы отображать массив байтов в виде строки.

Mы сейчас стандартизировали для своего проекта универсальный формат декларативной записи адресов: https://github.com/censync/go-mhda. Ибо BIP-44/84 и других недостаточно.

В основном используется криптография на эллиптических кривых, и выбираются наиболее популярные кривые: secp256k1, ed25519, sr25519 (Polkadot), secp256r1 (Sui).
Тут хорошая статья об этом: https://habr.com/ru/articles/335906/

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

newbie
Activity: 29
Merit: 2
я заметил что у разных БЧ и вообще БФТ протоколов используется часто свои особенные форматы адресов аккаунтов и форматы подписей
почему они не использовали просто криптографию биткоина?
в чем различия?
почему например в эфире адрес это 20 байт, если публичный ключ - 32,
если 20 байт достаточно, то почему и именно 20, а не 16 к примеру?


Jump to: