Validate legacy, segwit, native segwit (bech32), and taproot Bitcoin addresses.
PHP | Package Version |
---|---|
7.x | v1.0 |
8.x | v2.0+ |
Please note that taproot addresses are supported from v2.1 of this package.
Install the package via composer:
composer require kielabokkie/bitcoin-address-validator
First you instantiate the validator class:
$addressValidator = new \Kielabokkie\Bitcoin\AddressValidator;
Validate any kind of address (legacy, segwit, native segwit and taproot):
$addressValidator->isValid('1AGNa15ZQXAZUgFiqJ2i7Z2DPU2J6hW62i');
Legacy (P2PKH) address:
$addressValidator->isPayToPublicKeyHash('1AGNa15ZQXAZUgFiqJ2i7Z2DPU2J6hW62i');
Segwit (P2SH) address:
$addressValidator->isPayToScriptHash('3ALJH9Y951VCGcVZYAdpA3KchoP9McEj1G');
Native segwit (bech32) address:
$addressValidator->isBech32('bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4');
Taproot (P2TR) address:
$addressValidator->isPayToTaproot('bc1pveaamy78cq5hvl74zmfw52fxyjun3lh7lgt44j03ygx02zyk8lesgk06f6');
By default, the validator only passes mainnet addresses as valid. If you would like to validate both mainnet and testnet addresses you can use method chaining:
// Both valid
$addressValidator->includeTestnet()->isBech32('bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4');
$addressValidator->includeTestnet()->isBech32('tb1qw508d6qejxtdg4y5r3zarvary0c5xw7kxpjzsx');
If you want to validate only testnet addresses you can do that as follows:
// Invalid
$addressValidator->onlyTestnet()->isBech32('bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4');
// Valid
$addressValidator->onlyTestnet()->isBech32('tb1qw508d6qejxtdg4y5r3zarvary0c5xw7kxpjzsx');
This package is tested against the test data of the official bitcoin/bitcoin repo. If you come across an address that is not validated correctly please open an issue for it.
Run the tests with:
composer test
This package is based on the following packages and uses a lot of their code:
All credit goes to the original authors.
Did this package made you lots of money, save you some time or just sparked joy?
A donation would be much appreciated: 32vtWJSomccxQ6y1tgSwSHXN5PChpdYy27