Class VersionMessage
- All Implemented Interfaces:
Message
A VersionMessage holds information exchanged during connection setup with another peer. Most of the fields are not particularly interesting. The subVer field, since BIP 14, acts as a User-Agent string would. You can and should append to or change the subVer for your own software so other implementations can identify it, and you can look at the subVer field received from other nodes to see what they are running.
After creating yourself a VersionMessage, you can pass it to PeerGroup.setVersionMessage(VersionMessage)
to ensure it will be used for each new connection.
Instances of this class are not safe for use by multiple threads.
-
Field Summary
Modifier and TypeFieldDescriptionlong
How many blocks are in the chain, according to the other side.static final String
The version of this library release, as a string.int
The version number of the protocol spoken.static final String
The value that is prepended to the subVer field of this application.Flags defining what optional services are supported.static final int
Deprecated.static final int
Deprecated.static final int
Deprecated.static final int
Deprecated.static final int
Deprecated.The network address of the receiving node as perceived by the transmitting nodeThe services supported by the receiving node as perceived by the transmitting node.boolean
Whether or not to relay tx invs before a filter is received.User-Agent as defined in BIP 14.What the other side believes the current time to be. -
Constructor Summary
ConstructorDescriptionVersionMessage
(NetworkParameters params, int bestHeight) Construct own version message from givenNetworkParameters
and our best height of the chain. -
Method Summary
Modifier and TypeMethodDescriptionvoid
appendToSubVer
(String name, String version, String comments) Appends the given user-agent information to the subVer field.void
Serializes this message to the provided stream.int
Gets the client version.boolean
int
hashCode()
boolean
static VersionMessage
read
(ByteBuffer payload) Deserialize this message from a given payload.services()
Get the service bitfield that represents the node services being provided.toString()
static String
toStringServices
(long services) Deprecated.useServices.of(long)
andServices.toString()
Methods inherited from class org.bitcoinj.core.BaseMessage
messageSize, serialize
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.bitcoinj.core.Message
bitcoinSerialize, getMessageSize, unsafeBitcoinSerialize
-
Field Details
-
BITCOINJ_VERSION
The version of this library release, as a string.- See Also:
-
LIBRARY_SUBVER
The value that is prepended to the subVer field of this application.- See Also:
-
NODE_NETWORK
Deprecated.- See Also:
-
NODE_BLOOM
Deprecated.- See Also:
-
NODE_WITNESS
Deprecated.- See Also:
-
NODE_NETWORK_LIMITED
Deprecated.- See Also:
-
NODE_BITCOIN_CASH
Deprecated.- See Also:
-
clientVersion
public int clientVersionThe version number of the protocol spoken. -
localServices
Flags defining what optional services are supported. -
time
What the other side believes the current time to be. -
receivingServices
The services supported by the receiving node as perceived by the transmitting node. -
receivingAddr
The network address of the receiving node as perceived by the transmitting node -
subVer
User-Agent as defined in BIP 14. Bitcoin Core sets it to something like "/Satoshi:0.9.1/". -
bestHeight
public long bestHeightHow many blocks are in the chain, according to the other side. -
relayTxesBeforeFilter
public boolean relayTxesBeforeFilterWhether or not to relay tx invs before a filter is received. See BIP 37.
-
-
Constructor Details
-
VersionMessage
Construct own version message from givenNetworkParameters
and our best height of the chain.- Parameters:
params
- network parameters to construct own version message frombestHeight
- our best height to announce
-
-
Method Details
-
read
public static VersionMessage read(ByteBuffer payload) throws BufferUnderflowException, ProtocolException Deserialize this message from a given payload.- Parameters:
payload
- payload to deserialize from- Returns:
- read message
- Throws:
BufferUnderflowException
- if the read message extends beyond the remaining bytes of the payloadProtocolException
-
clientVersion
public int clientVersion()Gets the client version.- Returns:
- client version
-
services
Get the service bitfield that represents the node services being provided.- Returns:
- service bitfield
-
bitcoinSerializeToStream
Description copied from class:BaseMessage
Serializes this message to the provided stream. If you just want the raw bytes use bitcoinSerialize().- Specified by:
bitcoinSerializeToStream
in classBaseMessage
- Throws:
IOException
-
equals
-
hashCode
public int hashCode() -
toString
-
duplicate
-
appendToSubVer
Appends the given user-agent information to the subVer field. The subVer is composed of a series of name:version pairs separated by slashes in the form of a path. For example a typical subVer field for bitcoinj users might look like "/bitcoinj:0.13/MultiBit:1.2/" where libraries come further to the left.
There can be as many components as you feel a need for, and the version string can be anything, but it is recommended to use A.B.C where A = major, B = minor and C = revision for software releases, and dates for auto-generated source repository snapshots. A valid subVer begins and ends with a slash, therefore name and version are not allowed to contain such characters.
Anything put in the "comments" field will appear in brackets and may be used for platform info, or anything else. For example, calling
appendToSubVer("MultiBit", "1.0", "Windows")
will result in a subVer being set of "/bitcoinj:1.0/MultiBit:1.0(Windows)/". Therefore the / ( and ) characters are reserved in all these components. If you don't want to add a comment (recommended), pass null.See BIP 14 for more information.
- Parameters:
comments
- Optional (can be null) platform or other node specific information.- Throws:
IllegalArgumentException
- if name, version or comments contains invalid characters.
-
isPingPongSupported
-
toStringServices
Deprecated.useServices.of(long)
andServices.toString()
-
Services.NODE_BITCOIN_CASH