Что такое BITCOIN_SEED_NONCE в исходном коде биткойнов?

Я изучаю блокчейн и сейчас смотрю, как работают DNS Seed Nodes. Я понимаю, что краулер захватывает узлы с помощью волшебных сообщений, но я не могу понять, откуда взялось одно значение из исходного кода Биткойна и как оно используется.

#define BITCOIN_SEED_NONCE 0x0539a019ca550825ULL Источник программы: https://github.com/team-exor/generic-seeder/blob/f6c33d59b9a56a677364fbcdb9b2e30c51fc4a89/bitcoin.cpp#L9

Не могли бы вы помочь мне разобраться в этом, указать правильное место в источнике биткойнов и сообщить мне, как именно используется это шестнадцатеричное число?


person Madiator2011    schedule 10.04.2021    source источник


Ответы (1)


Он используется generic-seeder в своей функции Push >, что соответствует сообщению о версии, используемому в рукопожатиях между новыми одноранговыми узлами биткойнов.

Из биткойн-вики:

nonce uint64_t: случайный одноразовый номер узла, генерируемый случайным образом при каждой отправке пакета версии. Этот одноразовый номер используется для обнаружения подключений к себе.

Подпрограмма PeerManagerVimersion & isp; эквивалентная процедура в источнике биткойнов:

void PeerManagerImpl::PushNodeVersion(CNode& pnode, int64_t nTime)
{
<...>
    uint64_t nonce = pnode.GetLocalNonce();
<...>
    m_connman.PushMessage(&pnode, CNetMsgMaker(INIT_PROTO_VERSION).Make(NetMsgType::VERSION, PROTOCOL_VERSION, (uint64_t)nLocalNodeServices, nTime, addrYou, addrMe,
            nonce, strSubVersion, nNodeStartingHeight, tx_relay));
<...>
}
person soccer193    schedule 10.04.2021