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
- Object
- BitcoinAddress
A Bitcoin address of any standard type, tied to its network.
| Type | Starts with (mainnet) | Built from |
|---|---|---|
P2PKH | 1 | p2pkh |
P2SH | 3 | p2sh, p2shP2wpkh (BIP-49) |
P2WPKH | bc1q | p2wpkh (BIP-84) |
P2WSH | bc1q | p2wsh |
P2TR | bc1p | p2tr (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 = 0 | Pay to public key hash. |
public static final int P2SH = 1 | Pay to script hash. |
public static final int P2WPKH = 2 | Native SegWit v0 key hash. |
public static final int P2WSH = 3 | Native SegWit v0 script hash. |
public static final int P2TR = 4 | Taproot, SegWit v1. |
public static final int WITNESS_UNKNOWN = 5 | A SegWit version this library knows no spending rules for (v2 to v16). |
Methods
Inherited methods
Field details
P2PKH
public static final int P2PKH = 0Pay to public key hash.
P2SH
public static final int P2SH = 1Pay to script hash.
P2WPKH
public static final int P2WPKH = 2Native SegWit v0 key hash.
P2WSH
public static final int P2WSH = 3Native SegWit v0 script hash.
P2TR
public static final int P2TR = 4Taproot, SegWit v1.
WITNESS_UNKNOWN
public static final int WITNESS_UNKNOWN = 5A 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.)