3.0.0 • Published 8 months ago

bitcoin-address-validation v3.0.0

Weekly downloads
3,595
License
MIT
Repository
github
Last release
8 months ago

bitcoin-address-validation

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.

@everything-registry/sub-chunk-1239ctm_widgetsymbiosis-js-sdkwrapper-testing-bitcoin-and-stacksstacks-testing-helpersswap-widget-ctm@rsksmart/rif-wallet-bitcoin@trustless-computer/dapp-core@trustology/trustvault-nodejs-sdk@tokenized/protocol-js@tomo-inc/tomo-social-react@tomo-inc/tomo-web-sdk@wagerr-wdk/cryptoassets@unstoppabledomains/ui-components@yaswap/cryptoassets@yac-swap/cryptoassets@zalastax/nolb-bitc@zapper-fi/studioaddress-emoji-checksumaddress-generator0xppl-solana-portfolio@gobob/sats-wagmi@gobob/bob-sdk@adawg/ordit-sdk@affidaty/js-utility@east-bitcoin-lib/sdk@coffer-network/address-verify-sdk@coin-voyage/crypto@consensys/bitcoin-snap@joundy/ordit-sdktsoposki-ptokens-utilsunchained-bitcoinundercoin@bitpandacustody/trustvault-nodejs-sdk@blockspaces/types@buildwithsygma/core@caravan/bitcoinzero-sdkzeroflash-protocol@hashprotocol/cryptoassets@liquality/cryptoassets@nestor0405/xverse-core@sats-connect/core@pontis/core-sdk@sonarwatch/utils-address@sonarwatch/utils-portfoliorubic-sdkrubic-sdk-testnimi-cardnosft-corenosft-core-ajsnosft-core-testpontis-bridge-sdkreddexsdkptokens-utilschainflamecb-generalctm-widget_v2beignet@swingby-protocol/sdk@sonarwatch/portfolio-core@avingoyal01/portfolio-core@fantasyclub/fc-validation@cryptorubic/web3@fluidtokens/ordit-sdk@nimi.io/card@ashishbarvaliya-redsoft/orange-core@asigna/btc-connect@asigna/btc-core-sdk@maze2/sezame-sdk@omnity/btc-wallet-kit@omnity/widget@octano/persona@metamask-previews/assets-controllers@metamask/keyring-api@metamask/keyring-utils@metamask/assets-controllers@metamask-previews/keyring-utils@metamask-previews/keyring-api@ordzaar/ordit-sdk@glittr-sdk/sdk@keplr-wallet/stores-bitcoin@keplr-wallet/background@keplr-wallet/hooks-bitcoin@kitzen/wallet-core-essentials@oyl/sdk@koyweforest/koywe-ramp-sdk@kresuslabs/wallet
3.0.0

8 months ago

2.2.3

2 years ago

2.2.2

2 years ago

2.2.1

4 years ago

2.2.0

4 years ago

2.1.1

4 years ago

2.1.0

4 years ago

2.0.1

5 years ago

2.0.0

5 years ago

1.0.2

6 years ago

1.0.1

6 years ago

1.0.0

6 years ago

0.2.9

6 years ago

0.2.8

6 years ago

0.2.7

7 years ago

0.2.6

7 years ago

0.2.5

7 years ago

0.2.4

7 years ago

0.2.3

7 years ago

0.2.2

7 years ago

0.2.1

7 years ago

0.2.0

7 years ago

0.1.3

7 years ago

0.1.2

7 years ago

0.1.1

7 years ago

0.1.0

7 years ago