php - 为什么 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((非常感谢任何帮助。谢谢!
解决方案
这不是经过测试的代码,只是一个解释。
静态方法直接在类上调用,而不是在实例上调用。
图书馆好像变了。所以创建一个实例并调用它的方法,如:
$factory = new PrivateKeyFactory();
$key = $factory->fromWif($privateKey);
推荐阅读
- javascript - 在地图中调用时导入的函数不存在?
- html - 将两个 p 元素并排放置,宽度为 50%
- c# - 列表
要字符串的项目 - java - 如何让我的角度 Spring 的 UI 更改显示
- javascript - PayPal REST SDK:删除送货地址和付款授权,使其进入待处理状态
- docker - PyCharm 无法在本地 docker-machine 中使用解释器
- twitter-bootstrap - 为什么没有类限制宽度的div
- python - Scrapy:ImportError:没有名为 scrapy_proxies 的模块
- cloud - 寻找与 jira 集成进行外部通信的工具
- javascript - 无法启用表单元素