discv4/discv4_constants.hpp¶
Namespaces¶
| Name |
|---|
| discv4 |
Attributes¶
| Name | |
|---|---|
| size_t | kWireHashSize Outer Keccak-256 hash. |
| size_t | kWireSigSize Recoverable ECDSA signature. |
| size_t | kWirePacketTypeSize Single packet-type byte. |
| size_t | kWireRecoveryIdSize Recoverable ECDSA recovery id. |
| size_t | kWireCompactSigSize |
| size_t | kWireHeaderSize |
| size_t | kWirePacketTypeOffset |
| size_t | kNodeIdSize Node identity. |
| size_t | kNodeIdHexSize |
| size_t | kUncompressedPubKeySize 0x04 prefix + 64 bytes |
| size_t | kIPv4Size Network. |
| size_t | kUdpBufferSize |
| uint8_t | kPacketTypePing Packet type identifiers. |
| uint8_t | kPacketTypePong |
| uint8_t | kPacketTypeFindNode |
| uint8_t | kPacketTypeNeighbours |
| uint8_t | kPacketTypeEnrRequest |
| uint8_t | kPacketTypeEnrResponse |
| uint8_t | kProtocolVersion Protocol version advertised in PING packets. |
| uint32_t | kPacketExpirySeconds Default packet expiry window (seconds). |
| auto | kDefaultPingTimeout Default networking timers. |
| auto | kDefaultPeerExpiry |
| auto | kDefaultDialHistoryExpiry |
| size_t | kEnrSeqSize ENR sequence number field size in PONG (optional, 6-byte big-endian uint48). |
Attributes Documentation¶
variable kWireHashSize¶
Outer Keccak-256 hash.
discv4 wire-packet layout constants Layout: hash(32) || signature(65) || packet-type(1) || RLP(payload)
variable kWireSigSize¶
Recoverable ECDSA signature.
variable kWirePacketTypeSize¶
Single packet-type byte.
variable kWireRecoveryIdSize¶
Recoverable ECDSA recovery id.
variable kWireCompactSigSize¶
variable kWireHeaderSize¶
variable kWirePacketTypeOffset¶
variable kNodeIdSize¶
Node identity.
Uncompressed secp256k1 pubkey without 0x04 prefix
variable kNodeIdHexSize¶
variable kUncompressedPubKeySize¶
0x04 prefix + 64 bytes
variable kIPv4Size¶
Network.
variable kUdpBufferSize¶
variable kPacketTypePing¶
Packet type identifiers.
variable kPacketTypePong¶
variable kPacketTypeFindNode¶
variable kPacketTypeNeighbours¶
variable kPacketTypeEnrRequest¶
variable kPacketTypeEnrResponse¶
variable kProtocolVersion¶
Protocol version advertised in PING packets.
variable kPacketExpirySeconds¶
Default packet expiry window (seconds).
variable kDefaultPingTimeout¶
Default networking timers.
variable kDefaultPeerExpiry¶
variable kDefaultDialHistoryExpiry¶
variable kEnrSeqSize¶
ENR sequence number field size in PONG (optional, 6-byte big-endian uint48).
Source code¶
// Copyright 2025 GeniusVentures
// SPDX-License-Identifier: Apache-2.0
#pragma once
#include <chrono>
#include <cstddef>
#include <cstdint>
namespace discv4 {
static constexpr size_t kWireHashSize = 32;
static constexpr size_t kWireSigSize = 65;
static constexpr size_t kWirePacketTypeSize = 1;
static constexpr size_t kWireRecoveryIdSize = 1;
static constexpr size_t kWireCompactSigSize = kWireSigSize - kWireRecoveryIdSize;
static constexpr size_t kWireHeaderSize = kWireHashSize + kWireSigSize + kWirePacketTypeSize;
static constexpr size_t kWirePacketTypeOffset = kWireHashSize + kWireSigSize;
static constexpr size_t kNodeIdSize = 64;
static constexpr size_t kNodeIdHexSize = kNodeIdSize * 2;
static constexpr size_t kUncompressedPubKeySize = kNodeIdSize + kWirePacketTypeSize;
static constexpr size_t kIPv4Size = 4;
static constexpr size_t kUdpBufferSize = 2048;
static constexpr uint8_t kPacketTypePing = 0x01U;
static constexpr uint8_t kPacketTypePong = 0x02U;
static constexpr uint8_t kPacketTypeFindNode = 0x03U;
static constexpr uint8_t kPacketTypeNeighbours = 0x04U;
static constexpr uint8_t kPacketTypeEnrRequest = 0x05U;
static constexpr uint8_t kPacketTypeEnrResponse = 0x06U;
static constexpr uint8_t kProtocolVersion = 0x04U;
static constexpr uint32_t kPacketExpirySeconds = 60U;
inline constexpr auto kDefaultPingTimeout = std::chrono::milliseconds(5000);
inline constexpr auto kDefaultPeerExpiry = std::chrono::seconds(300);
inline constexpr auto kDefaultDialHistoryExpiry = std::chrono::seconds(35);
static constexpr size_t kEnrSeqSize = 6;
} // namespace discv4
Updated on 2026-04-13 at 23:22:46 -0700