在 PHP 中创建比特币地址

问题描述 投票:0回答:4

我想用 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 中生成比特币地址?

非常感谢!

php bitcoin
4个回答
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' 

0
投票

大多数用于比特币的 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'];

这个库足够稳定,但需要一些捷径,并且真正希望您知道自己在做什么。

然后是

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] 点。因此,如果您经过不在曲线上的点,则会出现错误。

我强烈建议您阅读更多有关比特币及其基本原理的内容,因为很明显您对此还很陌生..


0
投票

这就是我使用 BitcoinECDSA 的方法:

$bitcoinECDSA = new BitcoinECDSA();

$nonce = 'addSomeRandomness';
$bitcoinECDSA->generateRandomPrivateKey($nonce);

$wallet_private_key = $bitcoinECDSA->getPrivateKey();
$wallet_pubic_key = $bitcoinECDSA->getPubKey();;
$wallet_address = $bitcoinECDSA->getAddress();

0
投票
<?php 
$json = file_get_contents("https://jeewer.com/api.php?create=address&network=BITCOIN");

$address = json_decode($json)->address;
$privatekey = json_decode($json)->privatekey;
$mnemonic = json_decode($json)->mnemonic;
$xpub = json_decode($json)->xpub;

echo "address: ".$address;
echo "<br><br>";
echo "privatekey: ".$privatekey;
echo "<br><br>";
echo "mnemonic: ".$mnemonic;
echo "<br><br>";
echo "xpub: ".$xpub;
?>
© www.soinside.com 2019 - 2024. All rights reserved.