我想在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中生成比特币地址?
非常感谢!
答案 0 :(得分:2)
比特币地址和公钥/私钥不一样。地址基本上是公钥的表示。在您的代码中,$ 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'
答案 1 :(得分:1)
比特币库的大多数PHP依赖于非常过时的椭圆曲线库。
我建议使用我的一个,其中一个基于Mike Gogulski。除此之外,PHP中还没有发生过很多比特币开发:-(
这是bitwasp/bitcoin-lib-php
<?php
require_once "vendor/autoload.php";
use BitWasp\BitcoinLib\BitcoinLib;
$keySet = BitcoinLib::get_new_key_set();
echo $keySet['pubAddr'];
这个lib足够稳定,但需要一些快捷方式,真的希望你知道你在做什么。
然后有bitwasp/bitcoin-php
- 更新,更快,OOP,甚至还有一个扩展来加速它。但是,直到尘埃落定,我才会标记作曲家的版本:)
<?php
require_once "vendor/autoload.php";
use BitWasp\Bitcoin\PrivateKeyFactory;
$private = PrivateKeyFactory::create();
echo $private->getAddress()->getAddress();
那就是说,你不需要一个mpk来制作比特币地址。 MPK用于确定性钱包,并且是序列化的[x,y]点。因此,如果您传递的曲线不在曲线上,则会出现错误。
我强烈建议您阅读有关比特币和基本原则的更多信息,因为很明显您仍然是新手。