首页 > 解决方案 > 为什么 Bit-Wasp 使用 PrivateKeyFactory::fromWif PHP 会产生不推荐使用的错误

问题描述

在我的脚本中,这行使用 PHP 的 Bit-Wasp 库的代码给了我以下错误:


已弃用:不应静态调用非静态方法BitWasp\Bitcoin\Key\Factory\PrivateKeyFactory::fromWif()

可能是什么问题?从 Lib 中搜索的示例和许多其他使用 Bit-Wasp 的示例都不起作用。((

        use BitWasp\Bitcoin\Bitcoin;
        .......

        $addrCreator = new AddressCreator();
        $transaction = TransactionFactory::build()
           ->input('some UTXO', 0)
           ->payToAddress(1000, $addrCreator->fromString('some addres'))
           ->payToAddress(1000, $addrCreator->fromString('some addres'))
           ->get();
        $hex = $transaction->getHex();
        $privateKey = 'WIF PRiVATE KEY';

        $tx = TransactionFactory::fromHex($hex);

         $utxos = [];
        foreach ($tx->getInputs() as $idx => $input) {
        $txid = $input->getOutPoint()->getTxId()->getHex();
        $vout = $input->getOutPoint()->getVout();
        $scriptPubKey = $input->getScript()->getBuffer()->getHex();

        $utxo = new Utxo(new OutPoint(Buffer::hex($txid, 32), $vout), new TransactionOutput(0, ScriptFactory::fromHex($scriptPubKey)));
        array_push($utxos, $utxo);
        }

        $priv = $factory->fromWif($privateKey);
        $priv = PrivateKeyFactory::fromWif($privateKey);
        $signer = new Signer($tx, Bitcoin::getEcAdapter());

        foreach ($utxos as $i => $utxo) {
           $signer->sign($i, $priv, $utxo->getOutput());
        }
        $signed = $signer->get();
        echo $signed->getHex() . PHP_EOL;

PS来自Lib的所有其他功能都可以正常工作..只是无法弄清楚如何使用WIF私钥签署原始tx((非常感谢任何帮助。谢谢!

标签: php

解决方案


这不是经过测试的代码,只是一个解释。

静态方法直接在类上调用,而不是在实例上调用。

图书馆好像变了。所以创建一个实例并调用它的方法,如:

$factory = new PrivateKeyFactory();
$key = $factory->fromWif($privateKey);

推荐阅读