Client and backend. This class is shared: the same code is compiled into your app and into your server, so everything on this page works in both.

public final class BitcoinAddress

  1. Object
  2. BitcoinAddress

A Bitcoin address of any standard type, tied to its network.

TypeStarts with (mainnet)Built from
P2PKH1p2pkh
P2SH3p2sh, p2shP2wpkh (BIP-49)
P2WPKHbc1qp2wpkh (BIP-84)
P2WSHbc1qp2wsh
P2TRbc1pp2tr (BIP-86)

parse reads any of them, refusing an address of another network and a Bech32 address with the wrong checksum variant; getScriptPubKey is what a transaction pays to.

Fields

public static final int P2PKH = 0Pay to public key hash.
public static final int P2SH = 1Pay to script hash.
public static final int P2WPKH = 2Native SegWit v0 key hash.
public static final int P2WSH = 3Native SegWit v0 script hash.
public static final int P2TR = 4Taproot, SegWit v1.
public static final int WITNESS_UNKNOWN = 5A SegWit version this library knows no spending rules for (v2 to v16).

Methods

public static BitcoinAddress p2pkh(byte[] publicKey, BitcoinNetwork network)A legacy address of a public key (compressed or not; the form changes the address).
public static BitcoinAddress p2wpkh(byte[] compressedPublicKey, BitcoinNetwork network)A native SegWit address of a compressed public key.
public static BitcoinAddress p2shP2wpkh(byte[] compressedPublicKey, BitcoinNetwork network)The BIP-49 nested SegWit address: P2WPKH wrapped in P2SH.
public static BitcoinAddress p2sh(Script redeemScript, BitcoinNetwork network)The P2SH address of a redeem script.
public static BitcoinAddress p2wsh(Script witnessScript, BitcoinNetwork network)The P2WSH address of a witness script.
public static BitcoinAddress p2tr(byte[] internalKey, BitcoinNetwork network)The Taproot address of an x-only internal key with no script tree, as BIP-86 wallets derive it; a 33-byte compressed key is accepted and reduced to its x coordinate.
public static BitcoinAddress p2tr(byte[] internalKey, byte[] merkleRoot, BitcoinNetwork network)The Taproot address of an internal key committing to a script tree’s Merkle root.
public static BitcoinAddress fromScript(Script script, BitcoinNetwork network)The address that a standard output script pays to.
public static BitcoinAddress parse(String address, BitcoinNetwork network)Parses an address of the given network.
public static boolean isValid(String address, BitcoinNetwork network)Tells whether parse accepts the address for the network.
public int getType()The address type, P2PKH to WITNESS_UNKNOWN.
public BitcoinNetwork getNetwork()The network.
public Script getScriptPubKey()The output script that pays this address.
public String toString()The address text.
public boolean equals(Object o)Indicates whether some other object is “equal to” this one.
public int hashCode()Returns a hash code value for the object.

Inherited methods

Field details

P2PKH

public static final int P2PKH = 0
Pay to public key hash.

P2SH

public static final int P2SH = 1
Pay to script hash.

P2WPKH

public static final int P2WPKH = 2
Native SegWit v0 key hash.

P2WSH

public static final int P2WSH = 3
Native SegWit v0 script hash.

P2TR

public static final int P2TR = 4
Taproot, SegWit v1.

WITNESS_UNKNOWN

public static final int WITNESS_UNKNOWN = 5
A SegWit version this library knows no spending rules for (v2 to v16).

Method details

p2pkh

public static BitcoinAddress p2pkh(byte[] publicKey, BitcoinNetwork network)
A legacy address of a public key (compressed or not; the form changes the address).

p2wpkh

public static BitcoinAddress p2wpkh(byte[] compressedPublicKey, BitcoinNetwork network)
A native SegWit address of a compressed public key.

p2shP2wpkh

public static BitcoinAddress p2shP2wpkh(byte[] compressedPublicKey, BitcoinNetwork network)
The BIP-49 nested SegWit address: P2WPKH wrapped in P2SH.

p2sh

public static BitcoinAddress p2sh(Script redeemScript, BitcoinNetwork network)
The P2SH address of a redeem script.

p2wsh

public static BitcoinAddress p2wsh(Script witnessScript, BitcoinNetwork network)
The P2WSH address of a witness script.

p2tr

public static BitcoinAddress p2tr(byte[] internalKey, BitcoinNetwork network)
The Taproot address of an x-only internal key with no script tree, as BIP-86 wallets derive it; a 33-byte compressed key is accepted and reduced to its x coordinate.

p2tr

public static BitcoinAddress p2tr(byte[] internalKey, byte[] merkleRoot, BitcoinNetwork network)
The Taproot address of an internal key committing to a script tree’s Merkle root.

fromScript

public static BitcoinAddress fromScript(Script script, BitcoinNetwork network)
The address that a standard output script pays to.

Throws

IllegalArgumentException
for a script with no address form (bare multisig, OP_RETURN)

parse

public static BitcoinAddress parse(String address, BitcoinNetwork network)
Parses an address of the given network.

Throws

IllegalArgumentException
for a malformed address, a bad checksum or an address of another network

isValid

public static boolean isValid(String address, BitcoinNetwork network)
Tells whether parse accepts the address for the network.

getType

public int getType()
The address type, P2PKH to WITNESS_UNKNOWN.

getNetwork

public BitcoinNetwork getNetwork()
The network.

getScriptPubKey

public Script getScriptPubKey()
The output script that pays this address.

toString

public String toString()
The address text. Bech32 addresses are lowercase.

equals

public boolean equals(Object o)
Indicates whether some other object is “equal to” this one. The equals method implements an equivalence relation: It is reflexive: for any reference value x, x.equals(x) should return true. It is symmetric: for any reference values x and y, x.equals(y) should return true if and only if y.equals(x) returns true. It is transitive: for any reference values x, y, and z, if x.equals(y) returns true and y.equals(z) returns true, then x.equals(z) should return true. It is consistent: for any reference values x and y, multiple invocations of x.equals(y) consistently return true or consistently return false, provided no information used in equals comparisons on the object is modified. For any non-null reference value x, x.equals(null) should return false. The equals method for class Object implements the most discriminating possible equivalence relation on objects; that is, for any reference values x and y, this method returns true if and only if x and y refer to the same object (x==y has the value true).

hashCode

public int hashCode()
Returns a hash code value for the object. This method is supported for the benefit of hashtables such as those provided by java.util.Hashtable. The general contract of hashCode is: Whenever it is invoked on the same object more than once during an execution of a Java application, the hashCode method must consistently return the same integer, provided no information used in equals comparisons on the object is modified. This integer need not remain consistent from one execution of an application to another execution of the same application. If two objects are equal according to the equals(Object) method, then calling the hashCode method on each of the two objects must produce the same integer result. It is not required that if two objects are unequal according to the equals(java.lang.Object) method, then calling the hashCode method on each of the two objects must produce distinct integer results. However, the programmer should be aware that producing distinct integer results for unequal objects may improve the performance of hashtables. As much as is reasonably practical, the hashCode method defined by class Object does return distinct integers for distinct objects. (This is typically implemented by converting the internal address of the object into an integer, but this implementation technique is not required by the JavaTM programming language.)