encode method
Encode message to bytes
Implementation
@override
Uint8List encode(int protocolVersion, MessageEncoding encoding) {
final bytes = <int>[];
// Protocol version (4 bytes)
bytes.addAll(_encodeUint32(this.protocolVersion));
// Services (8 bytes)
bytes.addAll(_encodeUint64(services));
// Timestamp (8 bytes)
bytes.addAll(_encodeUint64(timestamp));
// Receiver address (26 bytes - no timestamp)
bytes.addAll(addrReceiver.serialize(includeTimestamp: false));
// Sender address (26 bytes - no timestamp)
bytes.addAll(addrSender.serialize(includeTimestamp: false));
// Nonce (8 bytes)
bytes.addAll(_encodeUint64(nonce));
// User agent (variable length string)
final userAgentBytes = utf8.encode(userAgent);
VarInt.write(bytes, userAgentBytes.length);
bytes.addAll(userAgentBytes);
// Start height (4 bytes)
bytes.addAll(_encodeUint32(startHeight));
// Relay flag (1 byte) - only for protocol version >= 70001
if (this.protocolVersion >= 70001) {
bytes.add(relay ? 1 : 0);
}
return Uint8List.fromList(bytes);
}