javascript - bitcoinjs-lib 的前缀无效
问题描述
我有这个代码:
var bitcoin = require('bitcoinjs-lib')
var testnet=bitcoin.networks.testnet;
var bitcoin = require('bitcoinjs-lib')
var privateKey = 'cV1hT8dqY6T3UnFjKk883N3nr895JeBVFjMMqi6VbPgDZyfVfzAF'
var keyPair = bitcoin.ECPair.fromWIF(privateKey, testnet);
const RawTransaction = new bitcoin.Psbt(testnet)
RawTransaction.addInput({hash:'9412f5e46f63a65ae140d36cbe6fe137e7f6b047759a8487a73abd5f25727bff', index:0})
RawTransaction.addOutput({address:'tb1q8selj8yz0yh79esajd77x3r6ea5q0vf8svjev4', value:0.00001})
RawTransaction.sign(0, keyPair)
var Transaction = RawTransaction.build().toHex();
console.log(Transaction)
我有这个错误:
Error: tb1q8selj8yz0yh79esajd77x3r6ea5q0vf8svjev4 has an invalid prefix
我不明白发生了什么。目标地址是由电子钱包生成的,似乎是正确的。我正在使用测试网。
解决方案
这是检查地址的代码:
if (decodeBech32.prefix !== network.bech32)
throw new Error(address + ' has an invalid prefix');
默认情况下,该库使用主网网络,由于 testnet 地址前缀,检查失败。
尝试这个:
const RawTransaction = new bitcoin.Psbt({ network: testnet })
推荐阅读
- python - Python:结构和数组与 ctypes 中的类似功能
- julia - Julia 中可变结构的构造函数中的字典
- javascript - React.js 从函数返回样式属性并在 render() 函数中使用它
- sql - VB.Net 将字符串解析为日期
- c++ - 可以将函数应用于 std::optional 的值,取回一个可选值吗?
- visual-studio - 启用/禁用警告,Visual Studio 命令提示符
- forms - 谷歌表单脚本在工作日和周末的特定时间打开表单
- sql - 是否可以使用 ROWID 或其他方法从 Oracle SQL 表中删除三重或四重?
- c++ - 奇怪的数字转换 C++
- javascript - NestJs 在 npm start 上加载环境变量