@tatumio/utxo-wallet-provider
v1.0.4
Published
UTXO provider with local wallet operations
Downloads
500
Readme
🌍 UTXO Wallet Provider
UTXO Wallet Provider integrates seamlessly with Tatum SDK to provide extended wallet capabilities for UTXO-based blockchains.
📖 Description
The UTXO Wallet Provider provides an array of tools for:
- Generating mnemonics for seed phrases.
- Creating extended public keys (xpubs) from mnemonics.
- Deriving private keys and addresses from mnemonics and xpubs.
- Signing and broadcasting transactions to the UTXO-based networks.
It is built upon popular packages like bitcoinjs-lib
, bitcore-lib
, bip39
, and bip32
, ensuring a robust and secure foundation.
🚀 Quick Start
Installation
Firstly, ensure that the
@tatumio/utxo-wallet-provider
package is set as a dependency within your project. Next, import the UTXO Wallet Provider extension:import { UtxoWalletProvider } from '@tatumio/utxo-wallet-provider';
Initialization
Create an instance of Tatum SDK passing
UtxoWalletProvider
as one of wallet providers.const tatumSdk = await TatumSDK.init<Bitcoin>({ network: Network.BITCOIN, configureWalletProviders: [ UtxoWalletProvider, ] })
⚙️ Configuration
You can configure the UtxoWalletProvider
as below to have all the checks skipped. This is useful for development and testing purposes.
const tatumSdk = await TatumSDK.init<Bitcoin>({
network: Network.BITCOIN,
configureWalletProviders: [
{type: UtxoWalletProvider, config: {skipAllChecks: true}},
]
})
🛠️ How to Use
Generate Mnemonic
const mnemonic = tatumSdk.walletProvider.use(UtxoWalletProvider).generateMnemonic()
Generate xpub with or without Mnemonic
const xpubDetails = await tatumSdk.walletProvider.use(UtxoWalletProvider).generateXpub(mnemonic)
Generate Private Key from Mnemonic
const privateKey = await tatumSdk.walletProvider.use(UtxoWalletProvider).generatePrivateKeyFromMnemonic(mnemonic, 0)
Generate Address from Mnemonic or xpub
const addressFromMnemonic = await tatumSdk.walletProvider.use(UtxoWalletProvider).generateAddressFromMnemonic(mnemonic, 0) const addressFromXpub = await tatumSdk.walletProvider.use(UtxoWalletProvider).generateAddressFromXpub(xpubDetails.xpub, 0)
Sign and Broadcast a Transaction
Define your payload according to the
UtxoTxPayload
type using address as the source of payments:const payloadUtxo = { fromAddress: [{ address: 'YOUR_WALLET_ADDRESS', privateKey: 'YOUR_PRIVATE_KEY'}], to: [{ address: 'TARGET_WALLET_ADDRESS', value: 0.0001 }], // BTC_AMOUNT fee: '0.00001', // BTC_AMOUNT changeAddress: 'CHANGE_WALLET_ADDRESS', } const txHash = await tatumSdk.walletProvider.use(UtxoWalletProvider).signAndBroadcast(payloadUtxo)
or using UTXOs as the source of payments:
const payloadUtxo = { fromUTXO: [ { txHash: '9bfddffd79a7af830a4070173b1f93547ee4eae9cdb542b153e2daaea1885f3d', index: 1, privateKey: 'YOUR_PRIVATE_KEY', }, ], to: [{ address: 'TARGET_WALLET_ADDRESS', value: 0.0001 }], // BTC_AMOUNT fee: '0.00001', // BTC_AMOUNT changeAddress: 'CHANGE_WALLET_ADDRESS', } const txHash = await tatumSdk.walletProvider.use(UtxoWalletProvider).signAndBroadcast(payloadUtxo)
Remember to always ensure the safety of mnemonics, private keys, and other sensitive data. Never expose them in client-side code or public repositories.
🔗🔗 Supported Networks
Network.BITCOIN,
Network.DOGECOIN,
Network.LITECOIN,
Network.BITCOIN_TESTNET,
Network.DOGECOIN_TESTNET,
Network.LITECOIN_TESTNET