Newer version available. Please see 4.0.3
How To Add bitcoinjs-lib Version 4.0.2 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 addrequire('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);
@Vanclief, I've updated the postinstall script in the instructions above to:
After updating the postinstall script simply run
yarn install
again.This will ensure the
base-x
version is always set to3.0.4
to avoid the breaking changes in3.0.5
. This is not ideal, but until the change mentioned above is implemented or thebase-x
package becomes stable through some other means this solution should get you up and running. If it continues to give you any issues just let me know, I'll be happy to help.