Создать биткойн-адрес в переполнении стека

Я хотел бы сгенерировать биткойн-адрес (открытый / закрытый ключ) в PHP. Я много искал, но не могу найти ни одного рабочего решения.

Это например:
https://github.com/mikegogulski/bitcoin-php

addr_from_mpk($mpk, $i)

Вот например я не понимаю параметров. Пример:

$mpk = '675b7041a347223984750fe3ab229df0c9f960e7ec98226b7182a2cb1990e39901feecf5a670f1d788ab29f626e20de424f049d216fc6f4c6ec42506763fa28e';

for ($i = 0; $i < 10; $i++) {
print addr_from_mpk($mpk, $i) . "\n";
}

Что здесь происходит? Является ли $ mpk закрытым ключом? Если я изменяю один символ в $ mpk, я получаю ошибку.

Кто-нибудь может мне помочь? Есть ли рабочий способ генерировать биткойн-адрес в PHP?

Большое спасибо!

1

Решение

Адрес биткойна и открытый / закрытый ключ не совпадают. Адрес в основном представляет собой открытый ключ. В вашем коде $ mpk является основным открытым ключом. Вы отдаете MPK алгоритму, и он возвращает вам адрес. Вы можете увидеть, как это работает в этой схеме https://en.bitcoin.it/w/images/en/9/9b/PubKeyToAddr.png

Я не вижу методов для создания пары ключей в репо, которую вы предоставили, поэтому вам, вероятно, придется использовать что-то еще. Вы должны создать пару ключей, используя другой инструмент. Я нашел немного кода PHP https://github.com/RobKohr/PHP-Bitcoin-Address-Creator и похоже, что он создал пару ключей в правильном направлении

openssl  ecparam -genkey -name secp256k1 | tee data.pem &>/dev/null
openssl ec -text -noout -in data.pem | head -5 | tail -3 | fmt -120 | sed 's/[: ]//g'
2

Другие решения

Большая часть PHP для библиотек биткойнов опирается на очень устаревшую библиотеку эллиптических кривых.

Я бы предложил использовать один из них, один из которых основан на Майке Гогульском. В PHP не было много биткойнов, кроме этого 🙁
Это bitwasp/bitcoin-lib-php

<?php
require_once "vendor/autoload.php";

use BitWasp\BitcoinLib\BitcoinLib;
$keySet = BitcoinLib::get_new_key_set();
echo $keySet['pubAddr'];

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

Тогда есть bitwasp/bitcoin-php — новее, быстрее, ООП, даже поставляется с расширением, чтобы ускорить его. Но я не отмечаю версию композитора, пока пыль не уляжется 🙂

<?php
require_once "vendor/autoload.php";

use BitWasp\Bitcoin\PrivateKeyFactory;

$private = PrivateKeyFactory::create();
echo $private->getAddress()->getAddress();

Тем не менее, вы делаете не нужен MPK, чтобы сделать биткойн-адрес. MPK предназначен для детерминированного кошелька и является сериализованной точкой [x, y]. Таким образом, вы получите ошибку, если пройдете точку, которая не находится на кривой.

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

1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector