2015-11-05 142 views
1

我試圖編譯BitcoinJS庫,包括在瀏覽器BitcoinJS與如何編譯瀏覽器

<script src="js/bitcoinjs.js"></script> 

我想了一整天,但我不能。 我要做的就是按照指示

npm -g install bitcoinjs-lib browserify 
browserify bitcoinjs-lib -s bitcoin -o bitcoinjs.js 

編譯成功(錯誤不會發生)。 在Chrome的控制檯當我嘗試在我的網頁

function NewRandomWallet() { 

    var keyPair = bitcoin.ECPair.makeRandom() 

    // Print your private key (in WIF format) 
    console.log(keyPair.toWIF()) 
    // => Kxr9tQED9H44gCmp6HAdmemAzU3n84H3dGkuWTKvE23JgHMW8gct 

    // Print your public key address 
    console.log(keyPair.getAddress()) 
    // => 14bZ7YWde4KdRb5YN7GYkToz3EHVCvRxkF 

} 

使用它我得到跟着錯誤:

意外令牌......

//因爲3點.. 。在onecoin(...類型)和元組(...類型)在bitcoinjs.js文件

如果我刪除這些點,我得到一個密鑰和地址,我的代碼正在工作。 爲什麼會出現這些問題?

接下來的問題是,當我嘗試創建一個交易:

var tx = new bitcoin.TransactionBuilder() 

// Add the input (who is paying) of the form [previous transaction hash, index of the output to use] 
tx.addInput("aa94ab02c182214f090e99a0d57021caffd0f195a81c24602b1028b130b63e31", 0) 

// Add the output (who to pay to) of the form [payee's address, amount in satoshis] 
tx.addOutput("1Gokm82v6DmtwKEB8AiVhm82hyFSsEvBDK", 15000) 

// Initialize a private key using WIF 
var keyPair = bitcoin.ECPair.fromWIF("L1uyy5qTuGrVXrmrsvHWHgVzW9kKdrp27wBC7Vs6nZDTF2BRUVwy") 

// Sign the first input with the new key 
tx.sign(0, keyPair) 

// Print transaction serialized as hex 
console.log(tx.build().toHex()) 
// => 0100000001313eb630b128102b60241ca895f1d0ffca21 ... 

我得到一個新的錯誤

types.every是不是一個函數

它指向這個部分代碼位於bitcoinjs.js

有什麼建議嗎?是庫的代碼錯了還是我編譯錯了?

回答

0

問題是我使用了瀏覽器錯誤的方式。 我編了bitcoinjs庫使用此命令在Windows操作系統的CMD:

cmd> cd:testdir 
cmd> npm install bitcoinjs-lib 
cmd> npm -g install browserify 
cmd> browserify foobar.js -o bitcoinjs.js 

foobar.js包含:

Bitcoin = require('bitcoinjs-lib'); 

使用後獲得精縮版:

cmd> uglifyjs bitcoinjs.js -c -m -r 'Array,BigInteger,Boolean,Buffer,ECPair,Function,Number,Point,Script' -o bitcoinjs.min.js 

如果你只想得到縮小版,使用:

cmd> browserify -r bitcoinjs-lib -s Bitcoin | uglifyjs > bitcoinjs.min.js 

現在,如果你想生成一個錢包,你可以做到這一點是:

function NewRandomWallet() { 
    var keyPair = Bitcoin.ECPair.makeRandom(); 
    // Print your private key (in WIF format) 
    $('#private_key').val(keyPair.toWIF()); 
    // => Kxr9tQED9H44gCmp6HAdmemAzU3n84H3dGkuWTKvE23JgHMW8gct 
    // Print your public key address 
    $('#address').val(keyPair.getAddress()); 
    // => 14bZ7YWde4KdRb5YN7GYkToz3EHVCvRxkF   
} 

你可以添加一個功能縮小之前生成的字符串錢包庫:

ECPair.makeFromString = function (aStr) { 
var hash = Bitcoin.crypto.sha256(aStr) 
var d = BigInteger.fromBuffer(hash) 
return new ECPair(d) 
}