0

I'm working on some lite client of bitcoin, and at the moment I'm trying to make a seed resolution by services supported by the nodes expose over a DNS seed.

I found this post on bitcointalk, but I think that not all the flag features are documented. In particular, I'm interested to know that is the flag feature of the BIP 158 service, but I also want to know where I can see all these flags on bitcoin core. It looks like they are no longer hardcoded in the code, or better not longer in clear hardcoded in the code.

Thanks.

1 Answer 1

3

The format is simply xN.[seedname], where N is the required service flags, ORed together, encoded in hex.

From Bitcoin Core's src/protocol.h:

 NODE_NONE = 0, // NODE_NETWORK means that the node is capable of serving the complete block chain. It is currently // set by all Bitcoin Core non pruned nodes, and is unset by SPV clients or other light clients. NODE_NETWORK = (1 << 0), // NODE_BLOOM means the node is capable and willing to handle bloom-filtered connections. // Bitcoin Core nodes used to support this by default, without advertising this bit, // but no longer do as of protocol version 70011 (= NO_BLOOM_VERSION) NODE_BLOOM = (1 << 2), // NODE_WITNESS indicates that a node can be asked for blocks and transactions including // witness data. NODE_WITNESS = (1 << 3), // NODE_COMPACT_FILTERS means the node will service basic block filter requests. // See BIP157 and BIP158 for details on how this is implemented. NODE_COMPACT_FILTERS = (1 << 6), // NODE_NETWORK_LIMITED means the same as NODE_NETWORK with the limitation of only // serving the last 288 (2 day) blocks // See BIP159 for details on how this is implemented. NODE_NETWORK_LIMITED = (1 << 10), 

So as a hypothetical example, say you want NODE_WITNESS, NODE_COMPACT_FILTERS, and NODE_NETWORK_LIMITED, you'd need N = (1 << 3) + (1 << 6) + (1 << 10) = 1096, which is 448 in hexadecimal. Thus, you'd query x448.[seedname].

Note that not all combinations are supported, and which ones are may depend on the seed. My Bitcoin seeder software by default supports the following combinations currently:

NODE_NETWORK NODE_NETWORK | NODE_BLOOM NODE_NETWORK | NODE_WITNESS NODE_NETWORK | NODE_WITNESS | NODE_COMPACT_FILTERS NODE_NETWORK | NODE_WITNESS | NODE_BLOOM NODE_NETWORK_LIMITED NODE_NETWORK_LIMITED | NODE_BLOOM NODE_NETWORK_LIMITED | NODE_WITNESS NODE_NETWORK_LIMITED | NODE_WITNESS | NODE_COMPACT_FILTERS NODE_NETWORK_LIMITED | NODE_WITNESS | NODE_BLOOM 
0

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.