Адреса Bitcoin. Часть I, теория.
Адреса Bitcoin. Часть II, практика.
Адрес Bitcoin, или просто адрес, является идентификатором, содержащим около 33 алфавитно-цифровых символов, в текущей версии протокола начинается с символа 1 или 3, используя этот идентификатор вы можете совершать операции с Bitcoin. Адреса могут быть получены на безвозмездной основе любым пользователем Bitcoin. Например, с помощью программного обеспечения Bitcoin, нажав кнопку "Получить адрес".
Пример Bitcoin адреса:1BQ9qza7fn9snSCyJQB3ZcN46biBtkt4ee
Как с помощью электронной почты вы можете отправить письмо, зная адрес получателя, также вы можете отправить BTC кому-либо, отправив их на соответствующий адрес Bitcoin. Только в отличие от электронной почты один человек может, и это поощряется, иметь неограниченное число различных адресов Bitcoin. Рекомендуется использовать уникальный адрес для каждой транзакции, если вы хотите добиться большей анонимности платежей. Большая часть программного обеспечения Bitcoin и тематические веб-ресурсы помогут с этим, путем создания нового адреса каждый раз при создании транзакции, или когда вы вручную запросите новый адрес.
При использовании веб-сайтов, которые принимают Bitcoin или держат у себя ваши сбережения в BTC, не удивляйтесь, что сайт будет создавать временные Bitcoin адреса для переводов. Временные адреса могут меняться при каждой новой транзакции, но старые адреса обычно остаются рабочими. При отправке Bitcoin на такие временные адреса, обычно их зачисляют на ваш счет в течение часа или двух (в зависимости от политики сайта).
Адреса вводятся точно и с учетом регистра символов. Как правило, Bitcoin адрес должен быть скопирован и вставлен с использованием буфера обмена компьютера где это возможно. Если приходится набирать адрес Bitcoin вручную, проверьте дополнительно, правильно ли введен адрес. Если он будет введен неправильно, то средства будут отправлены не на нужный счет, т.е. утеряны, или такая транзакция может быть отклонена, если адрес не будет соответствовать правилам. Некоторые из символов внутри адреса Bitcoin используются в качестве контрольной суммы, так что опечатки могут быть автоматически обнаружены и отклонены.
Некоторые Bitcoin адреса могут быть короче 33 символов. Значительная часть существующих адресов Bitcoin содержат только 32 символа - это совершенно нормально. Каждый адрес Bitcoin является чем-то вроде номера счета. Случается, что они начинаются с нуля, и когда нули опускаются, закодированный адрес становится короче.
Технически Bitcoin адрес представляет собой 160-битный хэш от открытого ключа ECDSA ключевой пары. Используя математические методы, вы можете "подписать" данные вашим секретным ключом, и любой, кто знает ваш публичный ключ, может удостовериться, что подпись действительна. Для получения более подробной информации, как работает криптографическая система с открытым ключом можно обратиться к соответствующей статье в Википедии . А если вам требуются глубокие знания о генерации адреса биткоин, то их можно почерпнуть в статье Википедии про спецификацию протокола Bitcoin.
Каждой новой сгенерированной паре ключей ставится в соответствие адрес для приема монет. Bitcoin адреса (открытые ключи) и соответствующие им закрытые ключи хранятся в файле wallet.dat. Этот файл принадлежит только вам и необходимо постоянно делать его резервные копии. Операция отправки BTC на определенный адрес Bitcoin подразумевает, что у получателя есть соответствующий закрытый ключ находящийся в его кошельке. Это означает, что если вы сгенерируете новый адрес и получите на него монеты, а затем восстановите кошелек из более раннего бэкапа, в котором адрес еще не был сгенерирован, то монеты, переданные на этот адрес будут потеряны. Если вы полностью потеряли ваш кошелек, то все монеты будут потеряны и не смогут быть восстановлены.
Bitcoin позволяет сгенерировать столько адресов, сколько вы пожелаете, И каждый из них будет полностью самостоятельными. Не существует главного адреса, поле "Your Bitcoin address" в пользовательском интерфейсе программы Bitcoin не имеет особого значения, это один из адресов, имеющихся в вашем кошельке. Приложение только для вашего удобства будет автоматически менять их время от времени для повышения вашей анонимности в системе. При этом все другие ваши адреса будут оставаться рабочими навсегда. Они перечислены в разделе "your receiving addresses". Каждый адрес занимает всего 500 байт и потому даже большое их число в кошельке, как правило, не является проблемой.
Bitcoin адрес содержит встроенный код проверки, так что совершенно невозможно отправить биткоины на некорректный адрес. Однако, если адрес правильно сформирован, но никто не владеет им (или владелец потерял wallet.dat), любые монеты, отправленные на этот адрес, будут потеряны навсегда.
Адрес может содержать все буквенно-цифровые символы латинского алфавита, кроме 0, O, I (i большое), and l (L маленькое). В настоящее время, все нормальные адреса всегда начинаются с 1 или 3, хотя это может быть изменено в будущих версиях. Адреса тестовой сети обычно начинаются с m или n. Нормальные адреса могут иметь длину в 25-34 символов, а адреса тестовой сети могут быть из 26-34 символов в длину. Большинство же адресов все же состоят из 33 или 34 символов.
Кроме того, можно отправить BTC непосредственно на IP адрес.
Поскольку Bitcoin адреса базируется на случайных числах, возможно, хотя и крайне маловероятно, что для двух людей независимо друг от друга сгенерируются одинаковые адреса. Это называется коллизия. Если это случается, то оба владельца этого адреса могут тратить деньги, отправленные на этот адрес. Но здесь невозможно второму владельцу адреса потратить все деньги первого настоящего владельца (или наоборот). Если бы вы намеренно решили подобрать такой адрес, который вызовет коллизию, то на настоящий момент вам бы пришлось потратить в 2^107 раз больше времени, чтобы сгенерировать такой адрес, чем на создание нового блока. Пока подписи и алгоритмы хеширования остаются криптографически сильными, а вероятно так будет всегда, выгоднее будет генерировать и получать комиссии за переводы, чем искать дублирующиеся адреса.
Как создается bitcoin адрес:
1. Берется открытый ключ (65 байт, 1 байт 0x04, 32 байт соответствуют координате X, 32 байт соответствуют координате Y):
04678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38
c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5f
2. Производится SHA-256 хэширование открытого ключа:
261c1eb21fc4708c6acbe1cfc6d4565652e9e768b620782898936b93000a6c02
3. Выполняется RIPEMD-160 хэширование результата SHA-256:
62e907b15cbf27d5425399ebf6f0fb50ebb88f18
4. Добавляется байт-идентификатор сети перед RIPEMD-160 хэшем (0x00 для основной сети)
0062e907b15cbf27d5425399ebf6f0fb50ebb88f18
5. Выполняется SHA-256 хэширование по расширенному результату от RIPEMD-160:
9b90f16de7f0e580c07735dac15ffe23e2f8f8e103914e509aa91913ffdb9fb6
6. Выполняется SHA-256 хэширование по предыдущему SHA-256 хэшу, результат будет представлять собой контрольную сумму:
c29b7d937e3049e279391e62fdf00c12def7444013ddf6215808d10e9f2d5996
7. Берутся первые 4 байта от полученного хэша:
c29b7d93
8. Эти 4 байта контрольной суммы из пункта 7 добавляются в конец расширенного RIPEMD-160 хэша из пункта 4. Это 25-байтовый двоичный Биткоин адрес.
0062e907b15cbf27d5425399ebf6f0fb50ebb88f18c29b7d93
9. Результат пункта 8 конвертируется в строку base58 . Это наиболее часто используемый формат bitcoin адреса.
1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa