New bitcoin address successfully generated

Генерируем 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 👈

Источник

New bitcoin address successfully generated

Hash SHA-256 «CoinAddressGeneratorV3.1.0.jar» = 5f5fa204b1d5505c3056a6432f39ad2628aff47ffcbc73494e566757bce08e60

The Coin-AddressGenerator creates a private key in Bitcoin Wallet Import Format WIF, as well as the associated coin address and public key. A paper wallet with QR code can be created and printed out.

This is a Java application, so you need to install Java!

Start the program

The «Coin_Address_Generator.jar» file is located in the «release» folder. You can start this under Windows if Java is installed simply by double-clicking. On Linux, type in the console: java -jar CoinAddressGeneratorV3.1.0.jar

The project was created with eclipse. You can either import it back into eclipse or use the java source files. All necessary source files are in the src folder. To import to eclipse go to File / Open Projects from File System, select the ZIP archive, finish! All required libraries are already included in the project (in the lib folder). So you can start the project directly.

There is a large list of coins to choose from that can be imported. However, some coins may not work properly because the coin parameter list is quickly out of date and cannot be kept up to date. It is the responsibility of each user to check that the keys created are correct! Use of this software is at your own risk!

There are three ways to create the private key:

Entry as text: Any text can be entered. This text then becomes the private key with a hash, Public key and the Bitcoin address generated.

Читайте также:  Оценка криптовалюты для суда

cube sign:
There can be 100 dice characters in Base6 (also characters between 1 and 6). This includes: 1=1, 2=2, 3=3, 4=4, 5=5, 6=0.

The private key can also be entered directly in all common formats: Hexa, Base58, Base58 compressed and Base64. Checksum check is implemented.

  • The format of the generated keys and addresses can be set under «Settings»
  • the public key is given in hexa
  • The coin address can be output in WIF-uncompressed, WIF-compressed, P2SH and Bech32
  • The QR code of the private key and the coin address is displayed

Issue of the coin amount

  • If the internet connection is active, the coin amount belonging to the key is displayed
  • The amount is queried on a suitable website
  • If no internet connection is available, nothing is displayed.

For safety, the program reads the QR code back in as an image, scanned and checked. This prevents an incorrect QR code from being displayed.

Save and open the wallet

An encrypted wallet with any number of keys can be saved. A strong password must be entered for this. To increase security, encryption is carried out in succession using AES and Twofish. In addition, the encryption contains a certain brute force protection, which extends the runtime with the help of a scrypt hash.

Create a paper wallet.

The surface of the program can be printed out or saved as an image.

If you find bugs, ideas for improvements, or just have questions, I am happy about every mail: Maxwell-KSP@gmx.de

If you like the Coin Address Generator, I would be very happy to receive a donation:

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS «AS IS» AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

About

Generate Bitcoin private key and Bitcoin address

Источник

Адреса Bitcoin. Часть II, практика

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

Описанные действия производились под Windows 7 64bit. Первым делом качаем кошелек Bitcoin, лучше всего в .zip версии. Распаковываем, я это сделал в корень диска C :\

Создаем в этой папке папку key, где будем хранить ключи. Настройка ACL на папки на совести пользователя, рекомендую про них не забывать, если это боевой кошелек. В данном случае это был экспериментальный, и настройки прав доступа я не трогал. Создаем файл run.cmd с следующим содержанием:

Запускаем run.cmd, и пока скачиваются блоки, изучим вопрос создания адресов.

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

Читайте также:  Втб мои инвестиции видеообзор

Vanitygen принимает в качестве входных данных шаблон или список шаблонов, после чего он подбирает варианты адресов и закрытых ключей к ним. Подбор Vanitygen основан на вероятностном поиске, на который требуется некоторое время. Время зависит от сложности заданного шаблона, скорости вашего компьютера и вашей удачливости. Vanitygen использует ресурсы вашего процессора. А его собрат – oclvanitygen – использует OpenCL-совместимые GPU. Они оба могут быть cобраны из исходников, или скачаны в виде бинарных пакетов, в том числе для Windows.

Скачиваем архив Vanitygen, распаковываем. Я для примера распаковал в корень диска C:

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

Подробную расшифровку ключей и FAQ по Vanitygen можно найти ниже, пока разберем только этот пример:
oclvanitygen.exe — Используем версию генератора для OpenCL устройств
-p 0 -d 1 — Указание устройства, на котором производится расчет: платформа 0 устройство 1
-o result.txt — Сохранить результаты работы в файл result.txt
1BTCSEC — начало искомого адреса.

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

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

Отлично, у нас есть адрес и приватный ключ! Чтобы было интереснее продолжать, я отправил 0,01 BTC на этот адрес. Теперь задача импортировать этот адрес с ключом в кошелек и убедиться в его работоспособности.

Предположим, что клиент все блоки докачал, а кошелек зашифрован, пароль «yourpassphrase». Открываем клиент, в верхнем меню нажимаем «Help», в нем «Debug window» и переходим на вкладку «Console». В нижнюю строку вводим:

Эта команда разблокирует кошелек на указанное количество секунд, в данном примере — на 2 минуты.

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

Если все прошло успешно, и все блоки скачаны, то на вкладке транзакций отобразится наша транзакция поступления 0,01 BTC, на которую, кстати, увеличится и итоговый баланс кошелька.

Для окончательной проверки, что мы можем управлять средствами на этом адресе, отправим эти же 0,01 BTC на другой адрес, для примера я отправил их на адрес для добровольных пожертвований на развитие BTCsec.com — 1BQ9qza7fn9snSCyJQB3ZcN46biBtkt4ee

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

FAQ по Vanitygen:

Какие типы шаблонов адреса можно давать vanitygen для соответствующего подбора?

Vanitygen может делать подборку для простых префиксов и регулярных выражений. Префиксом является строчка, с которой начинается адрес. Когда подбирается адрес с установленным префиксом, Vanitygen проверяет, что такой префикс в принципе возможен и выдаст оценку сложности такого подбора. По умолчанию, префикс чувствителен к регистру, однако можно использовать ключик –i для поиска без учета регистра. Регулярные выражения представляют собой фильтрующие шаблоны. Они очень мощны и могут использоваться для подбора соответствующих префиксов, суффиксов, ключей различной длины и подбора последовательностей символов, и т.д. Чтобы использовать регулярные выражения, укажите ключ –r. К сожалению, подбор по регулярным выражениям очень медленный и сложность сильно влияет на скорость поиска ключей. Поэтому регулярные выражения следует использовать только если это действительно требуется. Регулярные выражения не будут эффективно отрабатывать с oclvanitygen, так как на настоящий момент oclvanitygen не может работать с регулярными выражениями на GPU.

Читайте также:  Инвестиций кредиты для малого бизнеса

Как я могу указать список шаблонов?

Vanitygen может искать по списку шаблонов из командной строки или взятых из файла, используя ключ –f. Файл источник должен быть сформирован так, чтобы каждый шаблон шел с новой строки. Найдя соответствие заданному шаблону, vanitygen остановит поиск других соответствий данному шаблону. Для поиска нескольких соответствий используйте ключ –k.

Могу ли я использовать Vanitygen для поиска чьего-то еще закрытого ключа зная его bitcoin адрес?

Конечно! Фактически, Vanitygen – это приложение для подбора ключей. Однако, чтобы найти полностью соответствующий bitcoin адрес, даже используя все компьютертные мощности на планете, вам понадобится неприемлемо большое количество времени.

Как я могу собрать vanitygen из исходников?

Все это указано в файле INSTALL в дистрибутиве исходника.

Какую скорость поиска ключей я могу ожидать от устройства X?

Некоторые приблизительные оценки:

Dual-core desktop CPUs, 32-bit mode: 100-250 тыс. ключей/сек.
Dual-core desktop CPUs, 64-bit mode: 150-450 тыс. ключей/сек
Quad-core desktop CPUs, 32-bit mode: 200-400 тыс. ключей/сек
Quad-core desktop CPUs, 64-bit mode: 300-750 тыс. ключей/сек
NVIDIA GT200 GPUs: до 6.5 млн. ключей/сек
AMD Radeon 58XX, 68XX GPUs: до 23.5 млн. ключей/сек.
AMD Radeon 69XX GPUs: до 19.5 млн. ключей/сек.

vanitygen выполняет множество крупных целочисленных арифметических операций, и запуск утилиты на 64 битной системе дает существенное увеличение в скорости поиска ключей, приблизительно 50% увеличения по сравнению с 32-х битной. Для 64-х битной версии Windows, при условии, что используется не GPU, не забудьте использовать vanitygen64.exe.

Radeon 58XX превосходит Radeon 69XX. Oclvanitygen использует умножение целых чисел, а Radeon 58XX производит умножение параллельно с другими оперциями. За одинаковое время Radeon 5830 превзойдет Radeon 6970.

В пользовательских сборках производительность CPU будет меньше ожидаемой, если OpenSSL библиотеки старой версии ( Как защитить адрес, генерируемый данной программой? Может ли кто-то разгадать мой закрытый ключ и украсть мои BTC?

Vanitygen использует OpenSSL для генерации случайных чисел. Это такой же RNG (генератор случайных чисел), как и используемый в bitcoin и большинстве серверов, использующих HTTPS. Они рассматриваются как хорошо изученные. В Linux RNG берутся из /dev/urandom. Отгадывание приватного ключа для адреса подобранного vanitygen не проще, чем отгадывание приватного ключа, сгенерированного самим приложением bitcoin. Vanitygen использует генератор случайных чисел для создания закрытого ключа и адресов, сравнивая полученные адреса с исходным шаблоном. Он обновляет закрытый ключ после 10,000,000 неудачных попыток подбора (100M для oclvanitygen), или пока не найдется соответствие

Какие опции можно задавать ключами Vanitygen?

Можно ли совместно искать адреса?

Да, можно. Для этого существует vanitypool.

Какая вероятность нахождения нужного адреса?

— количество вариантов bitcoin адресов;
— количество не подходящих нам bitcoin адресов;
— вероятность не найти подходящий нам адрес;
— вероятность не найти подходящий нам адрес за х попыток;
— вероятность, что за х попыток требуемый адрес будет найден;
V — скорость поиска (ключей в секунду)
T – время поиска.

Возьмем вероятность нахождения 50% и посчитаем время, которое потребуется для этого.

Скорость генерации возьмем к примеру 2*10 7 ключей/с . Что равно примерно 6,3*10 14 ключей в год.

= 1,6*10 33 лет.

Источник

Оцените статью