Формат криптовалютных адресов: Пишем правильно

Формат криптовалютных адресов: Пишем правильно

В 99% случаев, в реальной жизни вы не будете вводить адрес вручную. Однако знать, как устроен адрес, полезно, и иногда это может спасти вас от потери средств.

Количество криптовалют на сегодняшний день превышает все разумные и даже неразумные пределы. И большая часть из них являются мертворожденными треш-коинами. Мы же рассмотрим несколько самых популярных и распространенных представителей индустрии. И начну я, что логично, с bitcoin, как основателя и прародителя жанра. 

При создании bitcoin создатели уделили немалое внимание формату адресов, чтобы исключить ситуацию "ой, не туда!". Мы ведь помним, что транзакция в blockchain является не только безотзывной, но и анонимной? 

Как следствие - маленькая ошибка при вводе адреса может просто отправить средства "на деревню дедушке, Константину Федоровичу". Причем произойдет это так, что вероятнее всего эти средства никто больше не увидит. 

Чтобы описанные выше аттракционы невиданной щедрости были невозможны, адрес организован весьма хитро. Для записи адреса используется система base58. Которая, в свою очередь, является видоизмененной системой base64. 

Base64 родился во времена аналоговых модемов, электронной почты UUCP и других древних компьютерных технологий. Проблема, которую решала base64 заключалась в следующем: большинство каналов связи было ориентировано на передачу текстовой информации. И при попадании в такие каналы связи бинарных данных, им становилось грустно.

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

Так вот, чтобы передавать эти самые бинарные данные, но не "поломать интернет" хитрые программисты придумали запись base64 - систему записи только печатными символами и цифрами. 64 в этом контексте - это 64 используемых символа, A-Z, a-z, 0-9. Конечно объем данных заметно набирал в весе, но зато старые системы его спокойно глотали, думая что это текст. Были конечно и другие вариации, такие как UU-encode, но в целом схема была подобная.

Нас же интересует base64, а точнее - его вариация base58. 

Вопрос - куда делось 6 символов, и какие именно символы? из base58 исключены все символы, которые могут быть визуально сходными и создать путаницу при ручном вводе. Исключены 0 (ноль), O (заглавная латинская o), I (заглавная латинская i), l (маленькая латинская L). Так же в base64 использовались "+"(плюс) и "/" (дробная черта) - они так же были исключены. Таким образом в адресах bitcoin вы никогда не встретите указанные символы. Вот полный список символов, которые могут применяться вадресах:


123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz

Но это еще не все. 

Для записи адресов bitcoin (и его наследников litecoin, dash) используется вариант base58check - данные не просто кодируются в текстовую форму, но и дополнительно получают защиту от искажения. Точнее не то чтобы защиту, но при неправильном вводе даже одного символа программное обеспечение сразу определит, что с адресом что то не так и не даст возможности отправить средства в неизвестном направлении. 

Ну и, наконец, адрес содержит так называемый NetID - дополнительную информацию, что это за адрес, и для чего он предназначен. Визуально это выражается в том, что часть bitcoin адресов начинается с символа 1 (так называемые P2PKH-адреса) а часть с "3" (так называемые P2SH-адреса). Есть еще адреса начинающиеся с "2", "m/k" - но вы их увидите только если вы разработчик и пользуетесь тестовыми сетями. 

Теперь несколько слов о Ethereum и их записи адреса.

 Разработчики эфира решили делать все по своему, не заморачиваться, а просто использовать в качестве адреса HEX-последовательность. HEX-это запись в шеснадцатиричном виде, то есть цифры от 0 до 9 и латинские буквы A, B, C, D, E, F. начинается такая запись с префикса "0x". При этом регистр не имеет никакого значения и адреса:


0xc2d7cf95645d33006175b78989035c7c9061d3f9 
0xC2D7CF95645D33006175B78989035C7c9061d3F9

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

Такая запись появилась в стандарте EIP55 (Ethereum Improvement Protocol), когда разработчики внезапно вспомнили о том, что неплохо бы иметь способ проверки корректности переданных данных, но менять длинну адреса, добавляя в него контрольную сумму, было уже поздно. Таким нехитрым способов в адрес вшивается контрольная сумма, которая позволяет определить - был ли адрес искажен при передаче или нет. 


Так адрес 0xfb6916095ca1df60bb79ce92ce3ea74c37c5d359 с проверкой контрольной суммы будет выглядеть так: 0xfB6916095ca1df60bB79Ce92cE3Ea74c37c5d359 

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



Читайте также

45592018-08-26

Сколько можно заработать на трейдинге начинающему инвестору. Часть шестнадцатая. Трейдинг (продолжение)

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

Трейдинг, Обучение
32462021-07-25

Как создать свой блокчейн с нуля при помощи Go? Часть 2

Цель этого гайда - разобрать технологические составляющие блокчейна на практике. Для этого рассмотрим кейс разработки собственного блокчейна с нуля.

Обучение, Blockchain

Последние статьи из раздела Обучение

Свежее видео на канале

Выбор редакции

644662020-10-30

Топ 10 крипто кошельков в 2020 году

По мере роста популярности криптовалют растет и спрос на качественные и безопасные криптовалютные кошельки.

Кошельки
567702017-12-10

Bitcoin: пирамида или нет?

С января 2009 года, когда был сгенерирован первый генезиз-блок bitcoin-сети, прошло уже девять лет, но до сих пор всякого рода "эксперты" ломают копья в спорах: являются ли криптовалюты финансовой пирамидой или нет. Быстрый рост доходности bitcoin и прибыли тех, кто раньше стал участником этой системы, пугает схожестью с пирамидами 90-х.

Bitcoin
535412018-04-28

on-chain и off-chain управление: за и против

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

Blockchain
417512021-05-08

Какие альткоины принесут своим держателям доход в 2021 году?

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

Альткоины
380622018-05-12

Эволюция человека и денег

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

Это интересно
171532024-02-03

Сканер блоков (Blockchain explorer) своими руками: Зачем он нужен?

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

Обучение, Bitcoin, Ethereum, Технологии