Package org.bitcoinj.base
Class SegwitAddress
- java.lang.Object
-
- org.bitcoinj.base.SegwitAddress
-
public class SegwitAddress extends java.lang.Object implements Address
Implementation of native segwit addresses. They are composed of two parts:
- A human-readable part (HRP) which is a string the specifies the network. See
SegwitAddress.SegwitHrp
. - A data part, containing the witness version (encoded as an OP_N operator) and program (encoded by re-arranging bits into groups of 5).
See BIP350 and BIP173 for details.
However, you don't need to care about the internals. Use
fromBech32(String, Network)
,fromHash(org.bitcoinj.base.Network, byte[])
orECKey.toAddress(ScriptType, Network)
to construct a native segwit address. - A human-readable part (HRP) which is a string the specifies the network. See
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
SegwitAddress.SegwitHrp
Human-readable part (HRP) of Segwit addresses for standard Bitcoin networks.
-
Field Summary
Fields Modifier and Type Field Description protected Network
network
static int
WITNESS_PROGRAM_LENGTH_PKH
static int
WITNESS_PROGRAM_LENGTH_SH
static int
WITNESS_PROGRAM_LENGTH_TR
static int
WITNESS_PROGRAM_MAX_LENGTH
static int
WITNESS_PROGRAM_MIN_LENGTH
protected byte[]
witnessProgram
protected short
witnessVersion
-
Fields inherited from interface org.bitcoinj.base.Address
PARTIAL_ADDRESS_COMPARATOR
-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description int
compareTo(Address o)
Comparison field order for addresses is:Network.id()
Legacy vs.boolean
equals(java.lang.Object o)
static SegwitAddress
fromBech32(java.lang.String bech32, Network network)
Construct aSegwitAddress
from its textual form.static SegwitAddress
fromBech32(NetworkParameters params, java.lang.String bech32)
static SegwitAddress
fromHash(Network network, byte[] hash)
Construct aSegwitAddress
that represents the given hash, which is either a pubkey hash or a script hash.static SegwitAddress
fromHash(NetworkParameters params, byte[] hash)
Deprecated.static SegwitAddress
fromKey(NetworkParameters params, ECKey key)
Deprecated.static SegwitAddress
fromProgram(Network network, int witnessVersion, byte[] witnessProgram)
Construct aSegwitAddress
that represents the given program, which is either a pubkey, a pubkey hash or a script hash – depending on the script version.static SegwitAddress
fromProgram(NetworkParameters params, int witnessVersion, byte[] witnessProgram)
Deprecated.byte[]
getHash()
Get either the public key hash or script hash that is encoded in the address.ScriptType
getOutputScriptType()
Get the type of output script that will be used for sending to the address.byte[]
getWitnessProgram()
Returns the witness program in decoded form.int
getWitnessVersion()
Returns the witness version in decoded form.int
hashCode()
Network
network()
Get the network this address works on.java.lang.String
toBech32()
Returns the textual form of the address.java.lang.String
toString()
-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.bitcoinj.base.Address
getParameters
-
-
-
-
Field Detail
-
WITNESS_PROGRAM_LENGTH_PKH
public static final int WITNESS_PROGRAM_LENGTH_PKH
- See Also:
- Constant Field Values
-
WITNESS_PROGRAM_LENGTH_SH
public static final int WITNESS_PROGRAM_LENGTH_SH
- See Also:
- Constant Field Values
-
WITNESS_PROGRAM_LENGTH_TR
public static final int WITNESS_PROGRAM_LENGTH_TR
- See Also:
- Constant Field Values
-
WITNESS_PROGRAM_MIN_LENGTH
public static final int WITNESS_PROGRAM_MIN_LENGTH
- See Also:
- Constant Field Values
-
WITNESS_PROGRAM_MAX_LENGTH
public static final int WITNESS_PROGRAM_MAX_LENGTH
- See Also:
- Constant Field Values
-
network
protected final Network network
-
witnessVersion
protected final short witnessVersion
-
witnessProgram
protected final byte[] witnessProgram
-
-
Method Detail
-
getWitnessVersion
public int getWitnessVersion()
Returns the witness version in decoded form. Only versions 0 and 1 are in use right now.- Returns:
- witness version, between 0 and 16
-
getWitnessProgram
public byte[] getWitnessProgram()
Returns the witness program in decoded form.- Returns:
- witness program
-
getHash
public byte[] getHash()
Description copied from interface:Address
Get either the public key hash or script hash that is encoded in the address.
-
getOutputScriptType
public ScriptType getOutputScriptType()
Get the type of output script that will be used for sending to the address. This is eitherScriptType.P2WPKH
orScriptType.P2WSH
.- Specified by:
getOutputScriptType
in interfaceAddress
- Returns:
- type of output script
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
fromBech32
@Deprecated public static SegwitAddress fromBech32(@Nullable NetworkParameters params, java.lang.String bech32) throws AddressFormatException
Deprecated.Construct aSegwitAddress
from its textual form.- Parameters:
params
- expected network this address is valid for, or null if the network should be derived from the bech32bech32
- bech32-encoded textual form of the address- Returns:
- constructed address
- Throws:
AddressFormatException
- if something about the given bech32 address isn't right
-
fromBech32
public static SegwitAddress fromBech32(java.lang.String bech32, @Nonnull Network network) throws AddressFormatException
Construct aSegwitAddress
from its textual form.- Parameters:
bech32
- bech32-encoded textual form of the addressnetwork
- expected network this address is valid for- Returns:
- constructed address
- Throws:
AddressFormatException
- if something about the given bech32 address isn't right
-
fromHash
@Deprecated public static SegwitAddress fromHash(NetworkParameters params, byte[] hash)
Deprecated.Construct aSegwitAddress
that represents the given hash, which is either a pubkey hash or a script hash. The resulting address will be either a P2WPKH or a P2WSH type of address.- Parameters:
params
- network this address is valid forhash
- 20-byte pubkey hash or 32-byte script hash- Returns:
- constructed address
-
fromHash
public static SegwitAddress fromHash(Network network, byte[] hash)
Construct aSegwitAddress
that represents the given hash, which is either a pubkey hash or a script hash. The resulting address will be either a P2WPKH or a P2WSH type of address.- Parameters:
network
- network this address is valid forhash
- 20-byte pubkey hash or 32-byte script hash- Returns:
- constructed address
-
fromProgram
@Deprecated public static SegwitAddress fromProgram(NetworkParameters params, int witnessVersion, byte[] witnessProgram)
Deprecated.Construct aSegwitAddress
that represents the given program, which is either a pubkey, a pubkey hash or a script hash – depending on the script version. The resulting address will be either a P2WPKH, a P2WSH or a P2TR type of address.- Parameters:
params
- network this address is valid forwitnessVersion
- version number between 0 and 16witnessProgram
- version dependent witness program- Returns:
- constructed address
-
fromProgram
public static SegwitAddress fromProgram(Network network, int witnessVersion, byte[] witnessProgram)
Construct aSegwitAddress
that represents the given program, which is either a pubkey, a pubkey hash or a script hash – depending on the script version. The resulting address will be either a P2WPKH, a P2WSH or a P2TR type of address.- Parameters:
network
- network this address is valid forwitnessVersion
- version number between 0 and 16witnessProgram
- version dependent witness program- Returns:
- constructed address
-
fromKey
@Deprecated public static SegwitAddress fromKey(NetworkParameters params, ECKey key)
Deprecated.Construct aSegwitAddress
that represents the public part of the givenECKey
. Note that an address is derived from a hash of the public key and is not the public key itself.- Parameters:
params
- network this address is valid forkey
- only the public part is used- Returns:
- constructed address
-
network
public Network network()
Get the network this address works on. Use ofBitcoinNetwork
is preferred to use ofNetworkParameters
when you need to know what network an address is for.
-
hashCode
public int hashCode()
- Overrides:
hashCode
in classjava.lang.Object
-
equals
public boolean equals(java.lang.Object o)
- Overrides:
equals
in classjava.lang.Object
-
toBech32
public java.lang.String toBech32()
Returns the textual form of the address.- Returns:
- textual form encoded in bech32
-
compareTo
public int compareTo(Address o)
Comparison field order for addresses is:Network.id()
- Legacy vs. Segwit
- (Legacy only) Version byte
- remaining
bytes
Implementations use
Address.PARTIAL_ADDRESS_COMPARATOR
for tests 1 and 2.
-
-