我正在使用Node.js访问此hdPrivateKey,但它看起来像
<hdPrivateKey...>
看起来不像普通的JS对象。
并且console.log(地址)看起来像
<Address: 19o9ghmkUrNVf4d57tQJuUBb2gT8sbzKyq, type: pubkeyhash, network: livenet>
console.log(Object.keys(address))
看起来像
[ 'hashBuffer', 'network', 'type' ]
为什么密钥内部地址不同?
var bitcore = require('bitcore');
var HDPrivateKey = bitcore.HDPrivateKey;
var hdPrivateKey = new HDPrivateKey();
console.log(hdPrivateKey)
var retrieved = new HDPrivateKey(hdPrivateKey);
var derived = hdPrivateKey.derive("m/0");
var derivedByNumber = hdPrivateKey.derive(1).derive(2, true);
var derivedByArgument = hdPrivateKey.derive("m/1/2");
var address = derived.privateKey.toAddress();
console.log(Object.keys(address))
console.log(address)
// obtain HDPublicKey
var hdPublicKey = hdPrivateKey.hdPublicKey;
答案 0 :(得分:1)
在Node.js中,console.log
调用对象的函数inspect
。在bitcore-lib中有这种方法:
HDPrivateKey.prototype.inspect = function() {
return '<HDPrivateKey: ' + this.xprivkey + '>';
};
这个方法:
Address.prototype.inspect = function() {
return '<Address: ' + this.toString() + ', type: ' + this.type + ', network: ' + this.network + '>';
};
答案 1 :(得分:1)
您看到的行为是因为该对象具有自己的inspect
属性,该属性是一个函数并返回一个字符串。当console.log
看到它正在记录对象时,它会查找该函数并在可用时使用它。所以在Node上,这会记录<foo>
:
const o = {
inspect() {
return "<foo>";
}
};
console.log(o);
这就是HDPrivateKey
对象所做的一切。
如果要正确检查对象,请使用调试器。或者,使用utils.inspect
并将customInspect
设置为false
。