【问题标题】:Create Bitcoin-Address in PHP在 PHP 中创建比特币地址
【发布时间】:2015-04-23 20:18:51
【问题描述】:

我想在 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


    【解决方案1】:

    比特币地址和公钥/私钥不一样。地址基本上是公钥的表示。在您的代码中,$mpk 是一个主公钥。您将 MPK 提供给算法,它会返回地址。您可以看到它在该方案中的工作原理https://en.bitcoin.it/w/images/en/9/9b/PubKeyToAddr.png

    我没有看到在您提供的 repo 中创建密钥对的方法,因此您可能必须使用其他东西。您必须使用其他工具创建密钥对。我找到了一些 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' 
    

    【讨论】:

    • 它执行一个真正应该避免的shell命令。我见过一些在 php 本身中使用 OpenSSL,避免 exec() 和相关的。
    【解决方案2】:

    大多数用于比特币的 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] 点。所以如果你通过一个不在曲线上的点,你会得到一个错误。

    我强烈建议您阅读有关比特币及其基本原理的更多信息,因为很明显您对此还是新手..

    【讨论】:

      猜你喜欢
      • 2019-05-16
      • 2020-04-14
      • 2014-01-17
      • 2019-04-05
      • 2014-08-21
      • 2014-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多