All Projects → ruigomeseu → bitcoin-address-validation

ruigomeseu / bitcoin-address-validation

Licence: MIT license
Validate Bitcoin addresses - P2WSH, P2WPKH, P2PKH, P2SH and P2TR

Programming Languages

typescript
32286 projects
javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to bitcoin-address-validation

BitcoinSneakPeek
Chrome extension to instantly see the balance of any Bitcoin address.
Stars: ✭ 17 (-81.91%)
Mutual labels:  bitcoin-address
bitcoin-transactions
Javascript implementation of the Bitcoin protocol for any Bitcoin based coins, on server and inside browsers, discover and move/manage your coins by yourself: Bitcoin transactions made simple for standard or multisig wallets, segwit and bech32 are supported, create and send by your own your Bitcoin, Bitcoin Cash, Zcash, Litecoin, DOGE, Dash, etc…
Stars: ✭ 97 (+3.19%)
Mutual labels:  bitcoin-address
btc-address-generator
Bitcoin address generator (bech32, segwit, paper wallets, BIP39 seed, etc.)
Stars: ✭ 80 (-14.89%)
Mutual labels:  bitcoin-address
bitcoin-private-key-fixer
This tool fixes a mistyped character in a Bitcoin Private Key, restores up to 5 missing character or up to 9 at the end.
Stars: ✭ 16 (-82.98%)
Mutual labels:  bitcoin-address

bitcoin-address-validation

Build Status npm version npm Twitter Follow

Validate Bitcoin addresses - P2WSH, P2WPKH, P2PKH, P2SH and P2TR.

validate('bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4');
==> true

getAddressInfo('bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4');
==> { 
  bech32: true,
  network: 'mainnet',
  address: 'bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4',
  type: 'p2wpkh'
}

Installation

Add bitcoin-address-validation to your Javascript project dependencies using Yarn:

yarn add bitcoin-address-validation

Or NPM:

npm install bitcoin-address-validation --save

Usage

Importing

Import using ES6:

import { validate, getAddressInfo } from 'bitcoin-address-validation';

Or AMD:

const { validate, getAddressInfo } = require('bitcoin-address-validation');

Validating addresses

validate(address) returns true for valid Bitcoin addresses or false for invalid Bitcoin addresses.

validate('17VZNX1SN5NtKa8UQFxwQbFeFc3iqRYhem')
==> true

validate('invalid')
==> false

Network validation

validate(address, network) allows you to validate whether an address is valid and belongs to network.

validate('36bJ4iqZbNevh9b9kzaMEkXb28Gpqrv2bd', 'mainnet')
==> true

validate('36bJ4iqZbNevh9b9kzaMEkXb28Gpqrv2bd', 'testnet')
==> false

validate('2N4RsPe5F2fKssy2HBf2fH2d7sHdaUjKk1c', 'testnet')
==> true

Address information

getAddressInfo(address) parses the input address and returns information about its type and network.

If the input address is invalid, an exception will be thrown.

getAddressInfo('17VZNX1SN5NtKa8UQFxwQbFeFc3iqRYhem')
==> {
  address: '17VZNX1SN5NtKa8UQFxwQbFeFc3iqRYhem',
  type: 'p2pkh',
  network: 'mainnet',
  bech32: false
}

Networks

This library supports the following Bitcoin networks: mainnet, testnet and regtest.

Note: When dealing with non-bech32 addresses, all regtest addresses will be recognized as testnet addresses.

TypeScript support

If you're using TypeScript, the following types are provided with this library:

enum Network {
  mainnet = "mainnet",
  testnet = "testnet",
  regtest = "regtest",
}

enum AddressType {
  p2pkh = 'p2pkh',
  p2sh = 'p2sh',
  p2wpkh = 'p2wpkh',
  p2wsh = 'p2wsh',
  p2tr = 'p2tr',
}

type AddressInfo = {
  bech32: boolean;
  network: Network;
  address: string;
  type: AddressType;
}

TypeScript usage

import { validate, getAddressInfo, Network, AddressInfo } from 'bitcoin-address-validation';

validate('36nGbqV7XCNf2xepCLAtRBaqzTcSjF4sv9', Network.mainnet);
==> true

const addressInfo: AddressInfo = getAddressInfo('2Mz8rxD6FgfbhpWf9Mde9gy6w8ZKE8cnesp');
addressInfo.network;

==> 'testnet'

Author

Rui Gomes
https://ruigomes.me

License

The MIT License (MIT). Please see LICENSE file for more information.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].