2014-08-28 73 views
1

我想从extendedprivatekey生成WIF,但我得到无效的WIF。node.js BitCore中的分层键的钱包导入格式(WIF)

应该如何WIF看:https://bitcoin.org/en/developer-guide#wallet-import-format-wif

我已经按照上面链接指令,并得到这个代码:

var crypto = require('crypto'); 
    var bitcore = require('bitcore'); 
    var HierarchicalKey = bitcore.HierarchicalKey; 
    var Address = bitcore.Address; 
    var networks = bitcore.networks; 
    var coinUtil = bitcore.util; 

    var knownBytes = coinUtil.sha256('testing'); 
    var hkey = HierarchicalKey.seed(knownBytes,'testnet'); 

    var key = new Buffer(hkey.derive('m/0\'/0/0').extendedPrivateKey); 
    var hash = new Buffer ([0xef].concat(key).concat([1])); 

    var hashses = doubleSHA256(hash); 
    var checksum = hashses.slice(0, 4); 
    var data = Buffer.concat([hash, checksum]); 
    var ress = bitcore.base58.encode(data); 
    console.log(ress); 

    function sha256(data) { 
    return new Buffer(crypto.createHash('sha256').update(data).digest('binary'), 'binary'); 
    }; 
    function doubleSHA256(data) { 
    return sha256(sha256(data)); 
    }; 

我怀疑是在某个地方转换错误。

编辑:我自己想通了。稍后将发布解决方案。

回答

1

我找到了答案,这个埋在WalletKey.js代码:

var bitcore = require('bitcore'); 
var HierarchicalKey = bitcore.HierarchicalKey; 
var Address = bitcore.Address; 
var networks = bitcore.networks; 
var coinUtil = bitcore.util; 

var knownBytes = coinUtil.sha256('testing'); 
var hkey = HierarchicalKey.seed(knownBytes,'testnet'); 

var derived = hkey.derive('m/0\'/0/0'); 
var priv = new bitcore.PrivateKey(networks.testnet.privKeyVersion, derived.eckey.private, derived.eckey.compressed); 
var wif = priv.toString();