首页 文章

在PHP中创建比特币地址

提问于
浏览
1

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

非常感谢你!

2 回答

  • 2

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

    我没有看到在你提供的repo中创建keypair的方法,所以你可能不得不使用其他东西 . 您必须使用其他工具创建密钥对 . 我发现了一些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

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

    这个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]点 . 因此,如果您传递的曲线不在曲线上,则会出现错误 .

    我强烈建议你阅读更多有关比特币和基本原则的内容,因为很明显你还是新手 .

相关问题