首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为浏览器编译BitcoinJS

如何为浏览器编译BitcoinJS
EN

Stack Overflow用户
提问于 2015-11-05 18:31:47
回答 2查看 1.4K关注 0票数 1

我正在尝试编译BitcoinJS库,以便将它包含在浏览器中

代码语言:javascript
复制
<script src="js/bitcoinjs.js"></script>

我一整天都在努力,但我做不到。我所做的就是按照指示行事

代码语言:javascript
复制
npm -g install bitcoinjs-lib browserify
browserify bitcoinjs-lib -s bitcoin -o bitcoinjs.js

编译是成功的(不会发生错误)。当我试图在我的网页上使用它时

代码语言:javascript
复制
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文件中

如果我删除这些点,我得到一个密钥和地址,我的代码是工作的。为什么会出现这些问题?

下一个问题是当我试图创建一个事务时:

代码语言:javascript
复制
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代码的这一部分

代码语言:javascript
复制
    function tuple(value, strict) {
      return types.every((type, i) => typeforce(type, value[i], strict));
    }

有什么想法吗?库的代码是错的还是我做错了编译?

EN

回答 2

Stack Overflow用户

发布于 2015-11-09 22:20:26

问题是我用了错误的方法。我在Windows操作系统的CMD中使用以下命令编译了bitcoinjs库:

代码语言:javascript
复制
cmd> cd:testdir
cmd> npm install bitcoinjs-lib
cmd> npm -g install browserify
cmd> browserify foobar.js -o bitcoinjs.js

foobar.js包含:

代码语言:javascript
复制
Bitcoin = require('bitcoinjs-lib');

若要在使用后获得小型化版本:

代码语言:javascript
复制
cmd> uglifyjs bitcoinjs.js -c -m -r 'Array,BigInteger,Boolean,Buffer,ECPair,Function,Number,Point,Script' -o bitcoinjs.min.js

如果只想获得小型化版本,请使用:

代码语言:javascript
复制
cmd> browserify -r bitcoinjs-lib -s Bitcoin | uglifyjs > bitcoinjs.min.js

现在,如果您想要生成一个钱包,您可以这样做:

代码语言:javascript
复制
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        
}

在缩小库之前,可以添加一个函数从字符串生成钱包:

代码语言:javascript
复制
ECPair.makeFromString = function (aStr) {
var hash = Bitcoin.crypto.sha256(aStr)
var d = BigInteger.fromBuffer(hash)
return new ECPair(d)
}
票数 1
EN

Stack Overflow用户

发布于 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>

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33552178

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档