Skip to content

Instantly share code, notes, and snippets.

@coreyphillips
Last active May 30, 2019 18:52
Show Gist options
  • Save coreyphillips/723a718f3630f965a83007a81afe5926 to your computer and use it in GitHub Desktop.
Save coreyphillips/723a718f3630f965a83007a81afe5926 to your computer and use it in GitHub Desktop.
How To Add bitcoinjs-lib Version 4.0.3 To A React Native Project

Newer version available. Please see 5.0.5

How To Add bitcoinjs-lib Version 4.0.3 To A React Native Project

Add/Link the following dependencies:

  • yarn add [email protected] react-native-randombytes buffer-reverse buffer@5
  • yarn add --dev rn-nodeify
  • react-native link react-native-randombytes
  • Add the following postinstall to your script in package.json: "postinstall": "rn-nodeify --install buffer,stream,assert,events,crypto,vm --hack && cd node_modules/bs58 && yarn add [email protected] && cd ../../"

Install any remaining dependencies and run postinstall.

NOTE: (If you receive an error about "shim.js" not existing just run yarn install again):

  • yarn install

  • Add the following to shim.js:

if (typeof Buffer.prototype.reverse === 'undefined') {
  var bufferReverse = require('buffer-reverse');

  Buffer.prototype.reverse = function () {
    return bufferReverse(this);
  };
}
  • Uncomment require('crypto') at the bottom of "shim.js". Or add require('crypto') to the bottom of "shim.js" if it doesn't exist.

Resolve Item In ecpair.js

  • Open ecpair.js in .../bitcoinjs-lib/src/ecpair.js and replace const randomBytes = require('randombytes') with the following: import { randomBytes } from 'react-native-randombytes'

To test if everything is working as expected place the following in render:

import "./shim";
const bitcoin = require("bitcoinjs-lib");
const keyPair = bitcoin.ECPair.makeRandom();
const { address } = bitcoin.payments.p2pkh({ pubkey: keyPair.publicKey });
console.log(address);
@shixiaoquan
Copy link

nice

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment