我正在尝试编译BitcoinJS库,以便将它包含在浏览器中
<script src="js/bitcoinjs.js"></script>我一整天都在努力,但我做不到。我所做的就是按照指示行事
npm -g install bitcoinjs-lib browserify
browserify bitcoinjs-lib -s bitcoin -o bitcoinjs.js编译是成功的(不会发生错误)。当我试图在我的网页上使用它时
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
}我在Chrome的控制台中被跟踪错误:
意外的记号..。 //因为3分.在oneOf(...types)和元组(...types)中的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代码的这一部分
function tuple(value, strict) {
return types.every((type, i) => typeforce(type, value[i], strict));
}有什么想法吗?库的代码是错的还是我做错了编译?
发布于 2015-11-09 22:20:26
问题是我用了错误的方法。我在Windows操作系统的CMD中使用以下命令编译了bitcoinjs库:
cmd> cd:testdir
cmd> npm install bitcoinjs-lib
cmd> npm -g install browserify
cmd> browserify foobar.js -o bitcoinjs.jsfoobar.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)
}发布于 2018-09-19 13:05:14
为了您的方便,我刚刚用一个已编译的、小型化的分发文件夹对bitcoinjs进行了分叉。
https://github.com/davidapple/bitcoinjs-lib-for-browsers
bower install bitcoinjs-lib-for-browsers#4.0.2 --save
<script src="bower_components/bitcoinjs-lib-for-browsers/dist/bitcoinjs-lib-4.0.2.min.js"></script>
https://stackoverflow.com/questions/33552178
复制相似问题