как генерируется биткоин адрес

Адрес

Понравилась статья? Поделись:

Bitcoin-адрес (Биткоин адрес) – идентификатор (номер счета), начинающийся с 1 или 3 и содержащий 26—35 буквенно-цифровых латинских символа (кроме 0, O, I). Адрес так же может быть представлен в виде QR-кода, является анонимным и не содержит информации о владельце. Его можно получить на безвозмездной основе, используя, например, программное обеспечение системы Bitcoin. В сети получили популярность специальные онлайн генераторы по созданию адресов для кошельков биткоин, где адрес создается рандомно.

Пример биткоин адреса:

Содержание

Для чего нужен биткоин адрес [ править ]

Посредством адреса можно совершать операции перевода/получения биткоинов (криптовалюты, ВТС) наподобие работы с письмами электронной почты. Один человек может создавать неограниченное количество адресов, повышая уровень анонимности своих платежей. При совершении очередной операции с ВТС чаще всего создается новый адрес (средства зачисляются/списываются в течение 1-2 часов). Одновременно генерируется пара закрытых ключей, обеспечивающая доступ к идентификатору и возможность выполнения операций с валютой. Они хранятся в файле wallet.dat на компьютере пользователя.

Условия ввода [ править ]

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

Генерация Биткоин-адреса [ править ]

Адрес создается путем генерации случайных чисел и выполнения специальных математических операций. При этом не требуется подключения к Интернету и регистрации в сети Bitcoin, в которой он начинает отслеживаться. За 1 минуту возможна генерация тысяч адресов (в том числе персонализированных) и ключей к ним, например, при использовании утилиты Vanitygen.

Транзакции [ править ]

Запись о переводе ВТС с одного адреса на другой формирует транзакцию. Она содержит хеш предыдущей транзакции, подписанный отправителем, и адреса получателей биткоинов. Вся информация отправляется в сеть Bitcoin и после проверки подписей транзакция принимается к обработке.

Потеря биткоинов [ править ]

Потеря биткоинов возможна в следующих случаях:

Источник

Генерируем Bitcoin-адрес на Python

Тема криптовалют снова начинает будоражить интернет. Супер, что вам не надо идти в отделение банка с паспортом и выстаивать очередь, чтобы открыть счет. Сгенерировать кошелек Bitcoin — дело нескольких строк кода на Python.

Нам понадобятся библиотеки base58 и ecdsa. base58 – это кодирование бинарных данных 58-ю печатными символами (цифрами и латинскими буквами, кроме 0, O, I, l, которые похожи друг на друга). ecdsa – библиотека криптографии на эллиптических кривых.

Импортируем то, что нужно:

Нам нужен приватный ключ, из него мы вычислим публичный ключ, а из него – адрес кошелька Bitcoin. (Обратная процедура не возможна без полного перебора до конца времен). Приватный ключ – это 32 байта данных, которые мы получим из криптографически-надежного источника случайных чисел. Вообще можно придумать свой приватный ключ самостоятельно, если так хочется. Для генерации случайного приватного ключа мы воспользуемся библиотекой ecdsa:

Вычислим этой же библиотекой публичный ключ и добавим спереди байт 0x4 (это признак «несжатого» публичного ключа; есть и другие форматы).

Теперь нужно из публичного ключа сделать привычный число-буквенный адрес Bitcoin. Взглянем на схему:

Для получения адреса из публичного ключа вычисляем сначала RIPEMD160(SHA256(public-key)):

Дополняем его префиксом 0x0 (главная сеть Bitcoin):

Вычисляем контрольную сумму (нужна, чтобы наши денюжки не пропадали, если мы ошибемся в каком-то символе адреса). Контрольная сумма это первые 4 байта от SHA256(SHA256(r)):

Получаем адрес кошелька, закодировав в base58 сложенные r и checksum:

Генерация приватного ключа из своего источника случайностей, например, os.urandom:

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

Полный пример кода генерации кошельков.

Читайте также:  как узнать какое масло в гуре

Проверить ключи и адрес можно здесь. (Нажимаем Skip, дальше Enter my own…)

Подробнее по теме можно почитать здесь.

Специально для канала @pyway. Подписывайтесь на мой канал в Телеграм @pyway 👈

Источник

Зачем вам нужен уникальный Биткоин-адрес и как его создать

Не обязательно быть тщеславным, чтобы создать свой уникальный Биткоин-адрес. Речь здесь идёт не об обычной комбинации цифр и букв, а уникальном обозначении, которое сделает кошелёк узнаваемым. Такие адреса в особенности могут быть эффективными для сбора пожертвований или продвижения собственной краудфандинговой кампании.

Особый Биткоин-адрес. Инструкция

Любители криптовалют с опытом уже наверняка замечали кошельки, комбинация знаков в которых не похожа на обычное совпадение. Это очень напоминает уникальные номерные знаки на автомобилях. К примеру, в «чёрном списке» правительства США находится несколько иранских BTC-кошельков с весьма красноречивыми названиями.

Подобным подходом воспользовались родители новорождённой Изабеллы Боулз. Они дали объявление в газету The Times с уникальным Биткоин-адресом ребёнка, на который каждый может отправить деньги в качестве пожертвования на оплату колледжа. Первые символы кошелька для донатов складываются в комбинацию «1ZAB5Xe», которая являет собой зашифрованное имя ребёнка.

Как создать уникальный Биткоин-адрес

Для подобного можно воспользоваться сервисом Vanitygen. Он генерирует уникальные комбинации знаков относительно желаний пользователя. Впервые Vanitygen представили на форуме Bitcointalk ещё в 2011 году, так что инициативе создания «крутых имён» в криптоиндустрии почти столько же лет, сколько и самому Биткоину.

Примечательно, что для генерации кошелька может понадобиться много мощностей. Чем длиннее желаемая комбинация, тем дольше программа будет «перебирать» адреса для финального результата. К примеру, генерация кошелька с комбинацией «1Bitcoin» в начале займёт примерно неделю на среднем ПК. А вот создание адреса с «1BitcoinEat» произойдёт только через 3500 лет.

В таком случае проще всего воспользоваться услугами сторонних сервисов вроде Vanity Pool. За создание кошелька берут скромную плату в виде 0,01 BTC за 1-6 знаков. Учтите, что с ростом длинны комбинации плата за генерацию растёт в несколько раз.

Источник

Как создать адрес биткоин-кошелька с помощью закрытого ключа

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

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

60cf347dbc59d31c1358c8e5cf5e45b822ab85b79cb32a9f3d98184779a9efc2
В этой статье мы будем использовать этот закрытый ключ для получения как открытого ключа, так и адреса для биткоин-кошелька.

Наша задача – применить серию преобразований к закрытому ключу, чтобы получить открытый ключ, а затем и адрес кошелька. Большинство этих преобразований называются хэш-функциями. Эти хэш-функции являются односторонними преобразованиями, которые нельзя отменить. Мы не будем вдаваться в механизм самих функций — по этому вопросу есть много замечательных статей. Вместо этого мы рассмотрим, как использование этих функций в правильном порядке может помочь вам сгенерировать адрес биткоин-кошелька, который вы впоследствии сможете использовать.

Криптография с использованием эллиптической кривой

Первое, что нам нужно сделать, это применить алгоритм цифровой подписи ECDSA или Elliptic Curve к нашему закрытому ключу. Эллиптической кривой является кривая, определенная уравнением y² = x³ + ax + b с выбранной a и b. Существует целое семейство таких кривых, которые широко известны и широко используются. Для биткоина используется кривая secp256k1/. Если вы хотите узнать больше о криптографии на основе эллиптических кривых, почитайте эту статью.

Применяя ECDSA к закрытому ключу, мы получаем 64-байтовое целое число. Оно состоит из двух 32-байтовых целых чисел, которые представляют соединенные вместе точки X и Y эллиптической кривой.

Для нашего примера мы получили:

Читайте также:  Аритмия сердца лечение у мужчин чем опасна

На языке Python это будет выглядеть так:

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

В Python есть как минимум два класса, которые могут хранить закрытый и открытый ключи: “str” и “bytes”. Первый – это строка, а второй – массив байтов. Криптографические методы в Python работают с классом “bytes”, принимая его в качестве входных данных и возвращая как результат.

Теперь, есть маленькая загвоздка: строка, скажем, 4f3c не равна массиву байтов 4f3c, она равна массиву байтов с двумя элементами, O 031e7bcc70c72770dbb72fea022e8a6d07f814d2ebe4de9ae3f7af75bf706902a7

Этот ключ содержит ту же информацию, но он почти в два раза короче, чем несжатый ключ. Клево!

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

Шифрование открытого ключа

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

Здесь нам нужно применить SHA-256 к открытому ключу, а затем применить RIPEMD-160 к результату. Порядок очень важен.

SHA-256 и RIPEMD-160 являются двумя хэш-функциями, и опять же, мы не будем вдаваться в детали того, как они работают.

Важно то, что теперь у нас есть 160-битное целое число, которое будет использоваться для дальнейших модификаций. Назовем это зашифрованным открытым ключом. Для нашего примера, зашифрованный открытый ключ – это 453233600a96384bb8d73d400984117ac84d7e8b

Зашифрованный открытый ключ = RIPEMD-160 (SHA-256 (Открытый ключ))

Вот как мы шифруем открытый ключ в Python:

Добавление сетевого байта

Контрольная сумма

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


С = SHA-256 (SHA-256 (зашифрованный открытый ключ основной сети))
Контрольная сумма = первые 4 байта С

Для расчета контрольной суммы адреса используется следующий код:

Получение адреса

Наконец, чтобы получить адрес, мы просто объединяем ключ основной сети и контрольную сумму. В нашем случае это выглядит так: 00453233600a96384bb8d73d400984117ac84d7e8b512f43c4

Вот и все! Это адрес кошелька для закрытого ключа, приведенного в начале статьи.

Но вы можете заметить, что что-то не так. Вы, вероятно, уже встречали биткоин-адреса, и они не выглядели так. Ну, причина в том, что они кодируются с помощью Base58 (вариант кодирования цифрового кода в виде буквенно-цифрового текста на основе латинского алфавита. Алфавит кодирования содержит 58 символов). Это немного странно.

Вот алгоритм для преобразования шестнадцатеричного адреса в адрес Base58:

Шестнадцатеричный адрес = зашифрованный открытый ключ основной сети + адрес контрольной суммы = Base58 (Шестнадцатеричный адрес)

Вывод

Процесс генерации ключей кошелька можно разделить на четыре этапа:

В зависимости от формы открытого ключа (полный или сжатый), мы получаем разные адреса, но оба совершенно допустимы.

Вот полный алгоритм для несжатого открытого ключа:

Эллиптический открытый ключ = ECDSA (закрытый ключ)
Открытый ключ = 0х04 + эллиптический открытый ключ
Зашифрованный открытый ключ = RIPEMD-160 (SHA-256 (открытый ключ))
Зашифрованный открытый ключ основной сети = 0х00 + Зашифрованный открытый ключ
С = SHA-256 (SHA-256 (Зашифрованный открытый ключ основной сети))
Контрольная сумма = первые 4 байта С
Шестнадцатеричный адрес = Зашифрованный открытый ключ основной сети + Контрольная сумма
Адрес = Base58 (Шестнадцатеричный адрес)

Если вы хотите «поиграть» с кодом, я опубликовал его на GitHub.

Читайте также:  как узнать когда платить за интернет теле2

Я делаю обзор о криптовалютах на Medium. Первая часть – подробное описание блокчейна.

Источник

Как сделать именной Bitcoin-адрес?

Биткоин адрес, является идентификатором, содержащим 33 алфавитно-цифровых символов, в текущей версии протокола начинается с символа 1 или 3, используя этот идентификатор вы можете совершать операции с Bitcoin.
Как с помощью электронной почты вы можете отправить письмо, зная адрес получателя, также вы можете отправить BTC кому-либо, отправив их на соответствующий адрес Bitcoin.

Пример Bitcoin-адреса: 1BAL8xV4wgDvt94DeKTWx4Uxqkg6sjjKLc

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

Все адреса пользователя генерируются по особому алгоритму из открытого ключа вашего кошелька, поэтому средства отправленные на любой из созданных адресов, будут отображаться на вашем балансе. Кроме того биткоин адрес содержит встроенный код проверки, так что совершенно невозможно отправить биткоины на некорректный адрес. Однако, если адрес правильно сформирован, но никто не владеет им (или владелец потерял файл кошелька wallet.dat), любые монеты, отправленные на этот адрес, будут потеряны навсегда.

Примечательно, что биткоин адрес не может содержать такие символы как 0 (ноль), O (большое o), I (большая i), l (маленькая L), сделано это во избежание ошибок при написании адреса вручную.

Например в кошельке Blockchain.info после каждой успешной вводной транзакции, пользователю выдаётся новый адрес, старые при этом не видны в приложении, но продолжают работать.

Именной адрес

Во вступлении мы рассмотрели по каким правилам генерируется Bitcoin адреса, теперь перейдем к практике. В этой части мы научимся практическим приемам генерации адресов и закрытых ключей к ним с помощью утилиты Vanitygen и интеграции их в существующий кошелек.

Vanitygen – утилита, работающая через командную строку, которая способна генерировать биткоин адреса. Если вам надоели рандомные криптоадреса, которые генерируются биткоин клиентами, вы можете использовать Vanitygen для создания персонализированных адресов. Адрес может ассоциироваться с вами или с вашей компанией.
Кроме того, Vanitygen может использоваться для генерации случайных адресов в оффлайн-режиме.

Разберём процесс получения адреса на примере Windows 10

Для создания адреса вам понадобиться скачать программу из официальной темы разработчика ( Скачать ) и распаковать скачанный архив.

Для удобства мы распаковали содержимое архива в корень диска C:

Далее заходим в папку и создаём в ней файл с именем gen.cmd и следующим содержанием:

Расшифровка ключей в данной команде:

Также не забываем, что в искомом адресе должны отсутствовать следующие символы: 0 (ноль), O (большое o), I (большая i), l (маленькая L).

Теперь нам нужно открыть командную строку (cmd.exe) и войти через неё в папку с программой. Открыть файл напрямую не получится.

Для перехода вводим cd и путь к папке vanitygen, в нашем случае это c:\vanitygen

Теперь, вводим gen.cmd и запускаем поиск нужного адреса, начало которого прописано в этом файле.

Учтите, чем больше символов вы укажите, тем дольше будет осуществляться поиск

Например, адрес 1WHATMINE программа бы искала(по её подсчётам) 6 лет.

Генерация простых адресов (до 6 символов) обычно занимает пару минут.

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

Теперь мы можем добавить наш адрес в любой Bitcoin-клиент используя полученный приватный ключ (Privkey).

Рассмотрим добавление адреса на Blockchain.info: Настройки – Адреса – Импортировать адреса.

В окно вставляете свой приватный ключ и всё

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

Источник

Советы мастера