2

Bitcoin-qt Debug window

As shown in the picture,

Is "NodeId" the ordered number (among all the existing bitcoin-core nodes) of the node that I am connected to?

How does "Version" differ from the "User Agent" version (on the picture, Version is displayed as 70015 and User Agent is displayed as "/Satoshi:0.18.0/)"?

And lastly, what does the "Service" mean (in this case displayed as "NETWORK & BLOOM & WITN...")?

2

Is "NodeId" the ordered number (among all the existing bitcoin-core nodes) of the node that I am connected to?

It's just the number of the connection you made. It's not a global identifier of the node you're connected to. Every new connection you make (incoming or outgoing) is assigned a sequentially increasing number.

How does "Version" differ from the "User Agent" version (on the picture, Version is displayed as 70015 and User Agent is displayed as "/Satoshi:0.18.0/)"?

Version is the protocol version. User agent identifies the software implementing it.

And lastly, what does the "Service" mean (in this case displayed as "NETWORK & BLOOM & WITN...")?

The Bitcoin P2P protocol has a number of optional features that node can offer to their peers:

  • NETWORK means availability of all blocks since genesis
  • NETWORK_LIMITED means availability of the last 288 blocks
  • BLOOM means BIP37 bloom filters
  • WITNESS means support for Segwit witnesses in blocks and transactions
  • COMPACT_FILTERS means support for the BIP158 basic filter type
2

Is "NodeId" the ordered number (among all the existing bitcoin-core nodes) of the node that I am connected to?

No, there is no such an ordered number. NodeId is a number assigned by Bitcoin Core to a node for use internally.

How does "Version" differ from the "User Agent" version (on the picture, Version is displayed as 70015 and User Agent is displayed as "/Satoshi:0.18.0/)"?

Version refers to the protocol version number. It is used to indicate some of the capabilities of the node, such as what messages it supports. For example, the version number 70014 is used to indicate that a node supports the BIP 152 compact blocks protocol and thus the relevant compact blocks messages can be sent to this node. If the number was 70013, those messages would be ignored.

Of course every version number means that everything from previous version numbers are also being supported, so things that are considered to be optional will not be included in it. You can read more about the protocol version number on bitcoin.org.

The User Agent is just a human readable string used to identify what software and version is being run. It isn't used for any protocol stuff, nor is it verifiable. It is merely shown to end users and can be helpful in identifying network upgrade progress.

And lastly, what does the "Service" mean (in this case displayed as "NETWORK & BLOOM & WITN...")?

Services are various optional features and services that a node offers. These are set in a bitfield and sent along with the protocol version, user agent, and other information during the node connection handshake. These indicate optional features, and each bit is given a short name to easily identify what it does.

NETWORK means that the node is a full node and will be able to send and receive the blockchain history. Pruned nodes and SPV clients will not have the NETWORK service bit set.

BLOOM means that the node supports the BIP 37 bloom filter protocol. This means that SPV clients that require that can connect to such nodes and be able to send and receive the bloom filter messages with that node.

WITNESS means that the node supports the segwit network serialization. It is used to indicate that the node will be able to understand the segwit transaction format so it should not receive stripped segwit transactions (a modified version of a segwit transaction that old nodes will be able to understand).

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.