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

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

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

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

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

2 ответа

Биткойн wiki говорит об этом: Как создать биткоин-адрес 0-наличие закрытого ключа ECDSA 18E14A7B6A307F426A94F8114701E7C8E774E7F9A47E2C2035DB29A206321725 1-Возьмите соответствующий открытый ключ, сгенерированный с его помощью.

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

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

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

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

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

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

Похожие вопросы:

Вместо того, чтобы Apple предложила In-App purchase, я представил себе новую систему для заработка и экономии денег. Чтобы продать премиальный сервис в моем приложении, клиент должен заплатить.

Я хотел бы создать простое приложение, которое будет использовать биткойн. Как установить биткоин-кошелек на сервер ubuntu? Я попробовал команду sudo apt-get install bitcoind Но я получаю следующее.

Я пытаюсь следовать инструкциям, необходимым для превращения 65-байтового открытого ключа в биткойн-адрес с помощью php. Инструкции достаточно ясны. Может ли кто-нибудь помочь мне с практичностью.

Биткойн wiki говорит об этом: Как создать биткоин-адрес 0-наличие закрытого ключа ECDSA 18E14A7B6A307F426A94F8114701E7C8E774E7F9A47E2C2035DB29A206321725 1-Возьмите соответствующий открытый ключ.

Я сгенерировал xpub с помощью bip32.org и получил случайный адрес с помощью xpub var hdNode = bitcoinjs.HDNode.fromBase58(derivedPubKey); hdNode.derive(index).pubKey.getAddress().toString(); частный.

Привет я использую https://github.com/Bitcoin-ABC/bitcoin-abc и пытаюсь ВСН адрес форма открытого ключа по алгоритму ECDSA. У меня есть этот сжатый открытый ключ: publickKey =.

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

Источник

Генерация биткоин адреса php

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!

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.

Issue of the coin amount

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.

Читайте также:  как узнать какая прошивка oneplus

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

Источник

Русские Блоги

Открытый ключ расширения PHP для генерации адреса кошелька Биткойн

Есть много платежных систем, таких как Bitpay, которые делают всю тяжелую работу за вас. Недостатком является то, что им нужно использовать ваш закрытый ключ. Однако вы можете использовать расширенный открытый ключ (XPUB) из иерархически детерминированного (HD) кошелька для реализации собственного простого решения.

Весь процесс вBIP32Объяснил в. Я предлагаю вам сначала прочитать его, чтобы получить общее представление об источнике адреса.

В этом уроке мы будем использовать Electrum , OS X Sierra , Apache 2.4 , PHP 7.1 и Bit-Wasp/bitcoin-php 。

Когда дело касается биткойн-кошельков, можно использовать любой HD-кошелек (например, мицелий). Процесс установки должен быть одинаковым в любой UNIX-подобной системе, особенно в Linux.

Библиотека PHP и ее зависимости требуют PHP5.6 +. Откройте терминал и проверьте текущую версию:

В моей среде вывод:

Если версия меньше 5.6, вы должны сначала обновить PHP.

Установите Composer глобально

Перед установкой библиотеки bitcoin-php мы должны убедиться, что установлен composer.

Откройте терминал и введите:

Если его содержание выглядит так: Composer version 1.3.0 2016-12-24 00:47:03 Вы можете смело пропустить этот шаг.

В противном случае установите:

Установить биткойн PHP библиотеку

Перейдите в корневой каталог документов вашего веб-сервера (каталог, в котором хранится ваш сайт) и создайте папку bitcoin/hdkeys 。

В моем примере корень документа

устанавливать Bit-Wasp/bitcoin-php Библиотека:

Он будет загружать библиотеки и зависимости. Этот процесс может занять несколько минут.

Если ошибок нет, переходите к следующему шагу.

Генерация адресов кошелька из xpub, ypux и zpub

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

Загрузите его в каталог:

Во-первых, нам нужно получить расширенный открытый ключ.

Откройте Electrum, нажмите «Кошелек», затем нажмите «Основной открытый ключ» и скопируйте строку.

Legacy address(p2pkh)

Откройте ваш любимый текстовый редактор, создайте файл с именем generate.php, затем скопируйте и вставьте следующий код:

Откройте браузер и введите http//localhost/hdkeys/generate.php (Или ваш собственный путь).

Вывод должен совпадать с первым адресом в вашем кошельке Electrum.

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

Это покажет первый адрес кошелька. Чтобы увеличить индекс адреса, отредактируйте последнюю цифру.

Родной адрес SegWit (p2wpkh)

Для принятия bc1. Для первоначального адреса SegWit (p2wkh) в начале используйте следующий код:

Не родной адрес SegWit (p2sh-p2wpkh)

Большинство кошельков SegWit в настоящее время используют хэш-адрес pay-to-свидетеля-открытого ключа, включенный в p2sh.

Мультиподписанный адрес (p2sh)

В следующем примере я создал мульти-подписной кошелек 2-в-2 в Electrum.

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

Если вы изо всех сил пытаетесь создать кошелек, пожалуйста, обратитесь кЭлектронная документация。

Вернитесь в текстовый редактор и создайте файл с именем generate_multisig.php Новый файл, затем скопируйте и вставьте следующее:

Как использовать код

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

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

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

Это предотвращает создание слишком большого количества адресов.

Читайте также:  как узнать обращался ли человек в больницу

Однако, если вы генерируете большое количество адресов, вам нужно увеличить кошелек gap limit 。

Перейдите в консоль Electrum, выполните следующую команду и перезапустите кошелек:

Когда вы перейдете на вкладку адреса, вы должны увидеть больше кошельков (выделены красным).

Поделитесь некоторыми интерактивными онлайн-учебниками по программированию, связанных с Ethereum, EOS, биткойнами и другими блокчейнами:

Источник

Генерация биткоин адреса php

This piece of software is provided without warranty of any kind, use it at your own risk.

php5-gmp needs to be installed.

If you want to launch the test file you need to be under a unix system with libbitcoin intalled on it.

Installation

Best way is to use composer

Alternatively add following snippet in you composer.json

Instanciation

Set a private key

examples of private keys :

Generate a random private key

The nonce is optional, typically the nonce is a chunck of random data you get from the user. This can be mouse coordinates. Using a nonce adds randomness, which means the generated private key is stronger.

Get the private key

Returns the private key.

Get the Wif

returns the private key under the Wallet Import Format

Get the Public Key

Returns the compressed public key. The compressed PubKey starts with 0x02 if it’s y coordinate is even and 0x03 if it’s odd, the next 32 bytes corresponds to the x coordinates.

Get the Uncompressed Public Key

Returns the uncompressed PubKey. The uncompressed PubKey starts with 0x04, the next 32 bytes are the x coordinates, the last 32 bytes are the y coordinates.

Get the coordinates of the Public Key

Returns an array containing the x and y coordinates of the public key

Example : Array ( [x] => a69243f3c4c047aba38d7ac3660317629c957ab1f89ea42343aee186538a34f8 [y] => b6d862f39819060378542a3bb43ff76b5d7bb23fc012f09c3cd2724bebe0b0bd )

Get the Address

Returns the compressed Bitcoin Address.

Get the uncompressed Address

Returns the uncompressed Bitcoin Address.

Validate an address

Returns true if the address is valid and false if it isn’t

Validate a Wif key

Returns true if the WIF key is valid and false if it isn’t

Sign a message

Returns a satoshi client standard signed message.

verify a message

Returns true if the signature is matching the address and false if it isn’t.

sign a sha256 hash

Returns a DER encoded hexadecimal signature.

verify a signature

Returns true if the signature is matching the public key and false if it isn’t.

This is free and unencumbered software released into the public domain.

Anyone is free to copy, modify, publish, use, compile, sell, or distribute this software, either in source code form or as a compiled binary, for any purpose, commercial or non-commercial, and by any means.

In jurisdictions that recognize copyright laws, the author or authors of this software dedicate any and all copyright interest in the software to the public domain. We make this dedication for the benefit of the public at large and to the detriment of our heirs and successors. We intend this dedication to be an overt act of relinquishment in perpetuity of all present and future rights to this software under copyright law.

THE SOFTWARE IS PROVIDED «AS IS», WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

For more information, please refer to http://unlicense.org/

About

PHP library to generate BTC addresses and signatures from private keys.

Источник

Пишем собственный платежный шлюз Bitcoin

По разным причинам существующие платежные шлюзы (такие как Bitpay) вас могут не устраивать. В этой статье мы рассмотрим создание собственного Bitcoin шлюза с нуля.

Предполагается что читатель знаком с устройством сети биткоин. Если нет, то рекомендую эти статьи: “Как на самом деле работает протокол Биткоин” и “Биткойн: введение для разработчиков”

Условно, нашу предполагаемую систему я бы разделил на 4 части:

Работа с адресами

В общем, с этим может справится любая криптографическая библиотека поддерживающая эллиптическую криптографию.

Получение информации из биткоин сети

Лично я рекомендую подключить несколько решений с фейловером.

Создание и подпись транзакций

В зависимости от того, какую основную библиотеку мы выбрали, эта библиотека умеет или не умеет создавать и подписывать транзакции.
Можно написать самому.
Смотрите раздел “Работа с адресами”.

Читайте также:  к чему снятся люди в масках животных

Трансляция транзакций

Результатом создания и подписи транзакций являются двоичные данные (hex), готовые к пушу в сеть. Пока сеть не увидит транзакцию, считайте, нет никакой транзакции. Когда сеть увидела транзакцию, она считается неподтвержденной. Транзакцию достаточно передать одному узлу биткоин, после чего за считаные секунды транзакцию увидит большая часть Биткоин сети.
Транслировать транзакции умеют некоторые клиентские либы из раздела “Работа с адресами” (через какието свои захардкодженые ендпоинты), или любой полный узел. Транслировать транзакцию можно даже руками, зайдя на специальную страничку Биткоин API провайдера и вбив транзакцию в специальную форму. Канонично, подтвержденной транзакцией является транзакция, включенная в 6 и больше последовательных блоков (или в 1-3. Неканонично, но быстрее). Транзакции с нулевой (или недостаточной) комиссией могут оставаться неподтвержденными долгое время (до месяца, в моей практике). Такие транзакции желательно периодически ретранслировать.

Общие принципы работы платежного шлюза

Вариант 1

Предположим, у нас есть уникальный счет (invoice, order), представленый к оплате клиенту, и платить клиент будет в биткоинах.
Начнем с того, что надо сконвертировать валюту оригинального счета (USD например) в BTC. Задача это тривиальная и рассматривать мы ее не будем.
Далее. Стандартом де факто является генерация нового уникального адреса биткоин под каждый заказ (он же счет, он же invoice, он же ордер). Ожидается, что средства на этот счет переведет только наш клиент, только 1 раз, и только строго указанную сумму (можно больше, никто не обидится, но никак не меньше). Т.о. при поступлении средств на указанный биткоин адрес в нужном количестве, заказ считается оплаченным.

Вкратце, цепочка такая:

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

Если вы имеете возможность “отобрать” предоставленный товар или услугу у клиента в случае выявленного факта отмены транзакции, я рекомендую засчитывать неподтвержденный баланс. Это будет означать почти мгновенный процесс оплаты для клиента (в противовес часа ожидания, например). А если какие то транзакции выявятся откаченными в итоге, запросить клиента о повторном платеже, угрожая отобрать услугу/товар.

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

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

Для остальных случаев можно ввести некий порог, выше которого обязательно ожидать подтвержденного баланса (например 0.25 BTC). Для максимальной надежности сделать его нулевым.

После закрытия ордера вы можете оставить биткоины на этом адресе до востребования, или для удобства перевести на единый “агрегационный” кошелек мерчанта. Будьте осторожны, в последнем случае вы можете скомпрометировать такой коммерческий показатель как “оборот”, т.к. транзакцию оплаты может отследить каждый платящий клиент.
Для переводов вам понадобится создавать, подписывать и транслировать транзакции, используя приватные ключи от адресов.

Пару слов о времени жизни ордера.
Если ваш товар или услуга жестко привязаны к эквиваленту в фиатной валюте (например USD), то типичный срок жизни ордера составляет 7-15 минут из-за волатильности курса.

Вариант 2

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

Несколько слов о безопасности

В случае взлома злоумышленника будет интересовать только одно — приватные ключи от сгенерированых вами адресов, ведь они позволяют перевести средства с этих адресов куда угодно.
Я рекомендую хранить их изолировано от основной системы в некоем безопасном хранилище. В конечном итоге они вам понадобятся только когда вы сами захотите воспользоваться вырученными биткоинами (потратить, сконвертировать в нал etc).

Что дальше?

При необходимости вырученые биткоины можно автоматически заводить на биржу и по API биржи продавать. Для этого нам понадобится создавать, подписывать и транслировать транзакции, используя приватные ключи от адресов.

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

Источник

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