Bitcoin full node and query server

May 4, 2021

View in context in the libbitcoin Slack #general mirror.

evoskuil21:15
These are the lines that attach protocols:
void session_outbound::attach_protocols(channel::ptr channel)
{
    const auto version = channel->negotiated_version();

    if (version >= version::level::bip31)
        attach<protocol_ping_60001>(channel)->start();
    else
        attach<protocol_ping_31402>(channel)->start();

    if (version >= version::level::bip61)
        attach<protocol_reject_70002>(channel)->start();

    if (version >= version::level::headers)
        attach<protocol_header_in>(channel, chain_)->start();

    attach<protocol_block_in>(channel, chain_)->start();
    attach<protocol_transaction_in>(channel, chain_)->start();
    attach<protocol_transaction_out>(channel, chain_)->start();
    attach<protocol_address_31402>(channel)->start();

    using serve = system::message::version::service;
    const auto services = settings_.services;

    if ((services & serve::node_compact_filters) == serve::node_compact_filters)
        attach<protocol_compact_filter_out>(channel, chain_)->start();
}