encode method

  1. @override
Uint8List encode(
  1. int protocolVersion,
  2. MessageEncoding encoding
)
override

Encode message to bytes

Implementation

@override
Uint8List encode(int protocolVersion, MessageEncoding encoding) {
  final bytes = <int>[];

  // Protocol version (4 bytes, little endian)
  final versionData = ByteData(4);
  versionData.setUint32(0, this.protocolVersion, Endian.little);
  bytes.addAll(versionData.buffer.asUint8List());

  // Number of block locator hashes (VarInt)
  VarInt.write(bytes, blockLocatorHashes.length);

  // Block locator hashes (32 bytes each)
  for (final hash in blockLocatorHashes) {
    bytes.addAll(hash.bytes);
  }

  // Hash stop (32 bytes)
  bytes.addAll(hashStop.bytes);

  return Uint8List.fromList(bytes);
}