2014-08-28 84 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();