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);
Hey @Vanclief,
Sorry for the late response here. I ran into this same issue as I was trying to bump the bitcoinjs-lib version to 4.0.3. I did some digging and it looks like this is an issue with the
base-x
package. Runningnpm ls base-x
in the intended repo should produce something similar to the following:Based on this Github issue, bringing the base-x version down to
3.0.4
resolves the issue. And there's discussion on why this is so here.Unfortunately, there's no easy one-off fix I can think of at the moment, but it appears that this issue may be easier to resolve once the following change is published to npm.
I'll provide additional updates here as they come.