Have ideas to improve npm?Join in the discussion! »

    bitcoin-address-validation
    TypeScript icon, indicating that this package has built-in type declarations

    2.0.1 • Public • Published

    bitcoin-address-validation

    Build Status npm version David npm Twitter Follow

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

    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('17VZNX1SN5NtKa8UQFxwQbFeFc3iqRYhem')
    ==> false

    Network validation

    validate(address, network) allows you to validate whether an address is valid and belongs to the input 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",
    }
    
    type AddressInfo = {
      bech32: boolean;
      network: Network;
      address: string;
      type: AddressType;
    }

    Author

    Rui Gomes
    https://ruigomes.me

    License

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

    Install

    npm i bitcoin-address-validation

    DownloadsWeekly Downloads

    4,976

    Version

    2.0.1

    License

    MIT

    Unpacked Size

    128 kB

    Total Files

    7

    Last publish

    Collaborators

    • avatar