如何从节点js中的public键获取btc地址
How get btc address from public key in node js
我为我的英语道歉!
如何将 BTC 签名脚本中的十六进制 public 密钥解码为节点 js 中的字符串地址?
例如,我有以下十六进制 public 键:
03745AAAF364030720B2D14DE50A3310EEF521C91E36353DCA20813713535C005A
解码后我应该得到相应的比特币地址
1GNXpcYzasmmXvM4rNgkvZ5SzXgL4L9Ch6
在https://bitcoin.stackexchange.com/questions/71867/decoding-scriptsig中是关于解码btc交易的ScriptSig的问题,有以下片段:
...
21: OP_DATA_0x21: compressed pub key (33 Bytes)
03745AAAF3640307:20B2D14DE50A3310:EEF521C91E36353D:CA20813713535C00:5A
This is MultiSig's compressed Public Key (X9.63 form)
corresponding bitcoin address is: 1GNXpcYzasmmXvM4rNgkvZ5SzXgL4L9Ch6
...
根据这个问题 btc public 密钥以 ANSI X9.63 格式编码。
nodejs有办法解码ANSI X9.63格式吗?
非常感谢!
我找到了答案。因为它可以使用 bitcoinjs-lib 和支付模块:
var bitcoin = require('bitcoinjs-lib');
const pubKey = "03745AAAF364030720B2D14DE50A3310EEF521C91E36353DCA20813713535C005A";
const { address } = bitcoin.payments.p2pkh({ pubkey: new Buffer(pubKey, 'hex') });
console.log(address); //1GNXpcYzasmmXvM4rNgkvZ5SzXgL4L9Ch6
您的计算机上必须已下载 node 和 npm。
npm 安装 bitcoinjs-lib
从您的节点终端下载 bitcoinjs 库。
var bitcoin = require("bitcoinjs-lib")
需要 bitcoinjs-lib。
var keyPair = bitcoin.ECPair.makeRandom(); or var keyPair = "03745AAAF364030720B2D14DE50A3310EEF521C91E36353DCA20813713535C005A"
为密钥对创建变量。
console.log(keyPair.getAddress());
通过将地址记录到控制台来测试地址。应返回有效的比特币地址。
var address = keyPair.getAddress();
将比特币地址结果保存到一个变量。
console.log(keyPair.toWif());
通过登录控制台测试私钥。应返回有效的比特币私钥。
var pkey = keyPair.toWIF();
将比特币私钥结果保存到变量中。
比特币使用“椭圆曲线数字签名算法”,因此我使用https://www.npmjs.com/package/elliptic
import EC from "elliptic";
// use a prime number to generate the curve. that p i 256 bits.
// ec works better with hashed values. we always hash the data.
const ec = new EC.ec("secp256k1");
创建 public 密钥
const keyPair = ec.genKeyPair();
// ec returns x,y points of elliptic curve. so we convert it to hex.
const publicKey = keyPair.getPublic().encode("hex");
我为我的英语道歉!
如何将 BTC 签名脚本中的十六进制 public 密钥解码为节点 js 中的字符串地址?
例如,我有以下十六进制 public 键:
03745AAAF364030720B2D14DE50A3310EEF521C91E36353DCA20813713535C005A
解码后我应该得到相应的比特币地址
1GNXpcYzasmmXvM4rNgkvZ5SzXgL4L9Ch6
在https://bitcoin.stackexchange.com/questions/71867/decoding-scriptsig中是关于解码btc交易的ScriptSig的问题,有以下片段:
...
21: OP_DATA_0x21: compressed pub key (33 Bytes)
03745AAAF3640307:20B2D14DE50A3310:EEF521C91E36353D:CA20813713535C00:5A
This is MultiSig's compressed Public Key (X9.63 form)
corresponding bitcoin address is: 1GNXpcYzasmmXvM4rNgkvZ5SzXgL4L9Ch6
...
根据这个问题 btc public 密钥以 ANSI X9.63 格式编码。
nodejs有办法解码ANSI X9.63格式吗?
非常感谢!
我找到了答案。因为它可以使用 bitcoinjs-lib 和支付模块:
var bitcoin = require('bitcoinjs-lib');
const pubKey = "03745AAAF364030720B2D14DE50A3310EEF521C91E36353DCA20813713535C005A";
const { address } = bitcoin.payments.p2pkh({ pubkey: new Buffer(pubKey, 'hex') });
console.log(address); //1GNXpcYzasmmXvM4rNgkvZ5SzXgL4L9Ch6
您的计算机上必须已下载 node 和 npm。
npm 安装 bitcoinjs-lib
从您的节点终端下载 bitcoinjs 库。
var bitcoin = require("bitcoinjs-lib")
需要 bitcoinjs-lib。
var keyPair = bitcoin.ECPair.makeRandom(); or var keyPair = "03745AAAF364030720B2D14DE50A3310EEF521C91E36353DCA20813713535C005A"
为密钥对创建变量。
console.log(keyPair.getAddress());
通过将地址记录到控制台来测试地址。应返回有效的比特币地址。
var address = keyPair.getAddress();
将比特币地址结果保存到一个变量。
console.log(keyPair.toWif());
通过登录控制台测试私钥。应返回有效的比特币私钥。
var pkey = keyPair.toWIF();
将比特币私钥结果保存到变量中。
比特币使用“椭圆曲线数字签名算法”,因此我使用https://www.npmjs.com/package/elliptic
import EC from "elliptic";
// use a prime number to generate the curve. that p i 256 bits.
// ec works better with hashed values. we always hash the data.
const ec = new EC.ec("secp256k1");
创建 public 密钥
const keyPair = ec.genKeyPair();
// ec returns x,y points of elliptic curve. so we convert it to hex.
const publicKey = keyPair.getPublic().encode("hex");