Class BitcoinAddress

java.lang.Object
com.codename1.crypto.bitcoin.BitcoinAddress

public final class BitcoinAddress extends Object

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

Type Starts with (mainnet) Built from
P2PKH 1 p2pkh(byte[], BitcoinNetwork)
P2SH 3 p2sh(Script, BitcoinNetwork), p2shP2wpkh(byte[], BitcoinNetwork) (BIP-49)
P2WPKH bc1q p2wpkh(byte[], BitcoinNetwork) (BIP-84)
P2WSH bc1q p2wsh(Script, BitcoinNetwork)
P2TR bc1p p2tr(byte[], BitcoinNetwork) (BIP-86)

parse(String, BitcoinNetwork) 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.

  • Field Details

    • P2PKH

      public static final int P2PKH
      Pay to public key hash.
      See Also:
    • P2SH

      public static final int P2SH
      Pay to script hash.
      See Also:
    • P2WPKH

      public static final int P2WPKH
      Native SegWit v0 key hash.
      See Also:
    • P2WSH

      public static final int P2WSH
      Native SegWit v0 script hash.
      See Also:
    • P2TR

      public static final int P2TR
      Taproot, SegWit v1.
      See Also:
    • WITNESS_UNKNOWN

      public static final int WITNESS_UNKNOWN
      A SegWit version this library knows no spending rules for (v2 to v16).
      See Also:
  • 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(String, BitcoinNetwork) 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.
      Overrides:
      toString in class Object
    • equals

      public boolean equals(Object o)
      Description copied from class: Object
      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).
      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Description copied from class: Object
      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.)
      Overrides:
      hashCode in class Object