bdk-rn
v0.30.0
Published
A React Native library for the Bitcon Development Kit (https://bitcoindevkit.org/)
Downloads
324
Readme
bdk-rn
A React Native version of the Bitcoin Development Kit (https://bitcoindevkit.org/)
bdk
aims to be the core building block for Bitcoin Applications of any kind.
Installation
Using npm:
npm i --save bdk-rn
Using yarn:
yarn add bdk-rn
[IOS Only] Install pods:
npx pod-install
or
cd ios && pod install
Examples
Create a Wallet & sync the balance of a descriptor
import { DescriptorSecretKey, Mnemonic, Blockchain, Wallet, DatabaseConfig, Descriptor } from 'bdk-rn';
import { WordCount, Network, KeychainKind } from 'bdk-rn/lib/lib/enums';
// ....
const mnemonic = await new Mnemonic().create(WordCount.WORDS12);
const descriptorSecretKey = await new DescriptorSecretKey().create(Network.Testnet, mnemonic);
const externalDescriptor = await new Descriptor().newBip84(descriptorSecretKey, KeychainKind.External, Network.Testnet);
const internalDescriptor = await new Descriptor().newBip84(descriptorSecretKey, KeychainKind.Internal, Network.Testnet);
const config: BlockchainElectrumConfig = {
url: 'ssl://electrum.blockstream.info:60002',
sock5: null,
retry: 5,
timeout: 5,
stopGap: 500,
validateDomain: false,
};
const blockchain = await new Blockchain().create(config);
const dbConfig = await new DatabaseConfig().memory();
const wallet = await new Wallet().create(externalDescriptor, internalDescriptor, Network.Testnet, dbConfig);
await wallet.sync(blockchain);
Create a public
wallet descriptor
import { DescriptorSecretKey, Mnemonic, Descriptor } from 'bdk-rn';
import { WordCount, Network, KeychainKind } from 'bdk-rn/lib/lib/enums';
// ....
const mnemonic = await new Mnemonic().create(WordCount.WORDS12);
const descriptorSecretKey = await new DescriptorSecretKey().create(Network.Testnet, mnemonic);
const descriptorPublicKey = await descriptorSecretKey.asPublic();
const fingerprint = 'd1d04177';
const externalPublicDescriptor = await new Descriptor().newBip84Public(
descriptorPublicKey,
fingerprint,
KeychainKind.External,
Network.Testnet
);
Store wallet data persistently
import RNFS from 'react-native-fs'
import { DatabaseConfig, ... } from 'bdk-rn';
// create sqlite database config with rn document directory path
const dbConfig = await new DatabaseConfig().sqlite(`${RNFS.DocumentDirectoryPath}/bdk-wallet`)
References:
- Setting up a local Esplora instance for testing: https://bitcoin.stackexchange.com/questions/116937/how-do-i-setup-an-esplora-instance-for-local-testing/116938#116938
Note: Caution this is an Alpha at this stage Please consider reviewing, experimenting and contributing ⚡️
Thanks for taking a look!