Add comprehensive spec audit results and pyMC_core issue reports
- CHANGELOG.md: Full audit findings organized by severity - PYMC_CORE_ISSUES.md: 7 evidence-based bug reports for pyMC_core (wrong constants, broken path_len decoding, wrong TRACE hash, wrong SNR calculation) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Add comprehensive spec audit results and pyMC_core issue reports - CHANGELOG.md: Full audit findings organized by severity - PYMC_CORE_ISSUES.md: 7 evidence-based bug reports for pyMC_core (wrong constants, broken path_len decoding, wrong TRACE hash, wrong SNR calculation) - Remove ERRATA.md: contents already covered by audit findings Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
79 files changed
+8923
No files matched your search
@@ -0,0 +1,165 @@
|
||||
{
|
||||
"$schema": "../../schema/test-vector.schema.json",
|
||||
"name": "Header - Combined Field Encoding",
|
||||
"spec_ref": "spec/02-header.md",
|
||||
"protocol_version": 0,
|
||||
"description": "Combinatorial tests of header byte encoding, exercising various combinations of version, payload type, and route type to verify correct bit packing.",
|
||||
"vectors": [
|
||||
{
|
||||
"id": "hdr-000",
|
||||
"description": "All-zero header: version=0, request=0, transport_flood=0",
|
||||
"type": "encode_decode",
|
||||
"structured": {
|
||||
"header": {
|
||||
"version": 0,
|
||||
"payload_type": "request",
|
||||
"route_type": "transport_flood"
|
||||
},
|
||||
"transport_codes": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"path": {
|
||||
"hash_size": 1,
|
||||
"hash_count": 0,
|
||||
"hashes": []
|
||||
},
|
||||
"payload": {
|
||||
"dest_hash": "00",
|
||||
"src_hash": "00",
|
||||
"cipher_mac": "0000",
|
||||
"ciphertext": "00000000000000000000000000000000"
|
||||
}
|
||||
},
|
||||
"binary": "00 0000 0000 00 0000 0000 00000000000000000000000000000000",
|
||||
"notes": "Header: (0<<6)|(0<<2)|0 = 0x00."
|
||||
},
|
||||
{
|
||||
"id": "hdr-001",
|
||||
"description": "Version=0, ADVERT, DIRECT route",
|
||||
"type": "encode_decode",
|
||||
"structured": {
|
||||
"header": {
|
||||
"version": 0,
|
||||
"payload_type": "advert",
|
||||
"route_type": "direct"
|
||||
},
|
||||
"path": {
|
||||
"hash_size": 1,
|
||||
"hash_count": 2,
|
||||
"hashes": [
|
||||
"AA",
|
||||
"BB"
|
||||
]
|
||||
},
|
||||
"payload": {
|
||||
"data": "FF"
|
||||
}
|
||||
},
|
||||
"binary": "12 02 AABB FF",
|
||||
"notes": "Header: (0<<6)|(4<<2)|2 = 0x12. path_len=0x02 (hash_size=1, count=2). Path: AA BB."
|
||||
},
|
||||
{
|
||||
"id": "hdr-002",
|
||||
"description": "Version=1, CONTROL, FLOOD route",
|
||||
"type": "encode_decode",
|
||||
"structured": {
|
||||
"header": {
|
||||
"version": 1,
|
||||
"payload_type": "control",
|
||||
"route_type": "flood"
|
||||
},
|
||||
"path": {
|
||||
"hash_size": 1,
|
||||
"hash_count": 0,
|
||||
"hashes": []
|
||||
},
|
||||
"payload": {
|
||||
"data": "FF"
|
||||
}
|
||||
},
|
||||
"binary": "6D 00 FF",
|
||||
"notes": "Header: (1<<6)|(11<<2)|1 = 0x40+0x2C+0x01 = 0x6D."
|
||||
},
|
||||
{
|
||||
"id": "hdr-003",
|
||||
"description": "Version=0, RAW_CUSTOM, TRANSPORT_DIRECT with non-trivial transport codes",
|
||||
"type": "encode_decode",
|
||||
"structured": {
|
||||
"header": {
|
||||
"version": 0,
|
||||
"payload_type": "raw_custom",
|
||||
"route_type": "transport_direct"
|
||||
},
|
||||
"transport_codes": [
|
||||
256,
|
||||
512
|
||||
],
|
||||
"path": {
|
||||
"hash_size": 1,
|
||||
"hash_count": 1,
|
||||
"hashes": [
|
||||
"AA"
|
||||
]
|
||||
},
|
||||
"payload": {
|
||||
"data": "CAFEBABE"
|
||||
}
|
||||
},
|
||||
"binary": "3F 0001 0002 01 AA CAFEBABE",
|
||||
"notes": "Header: (0<<6)|(15<<2)|3 = 0x3F. Transport codes: 256=0x0100 LE=0001, 512=0x0200 LE=0002."
|
||||
},
|
||||
{
|
||||
"id": "hdr-004",
|
||||
"description": "Version=0, TRACE, FLOOD with path",
|
||||
"type": "encode_decode",
|
||||
"structured": {
|
||||
"header": {
|
||||
"version": 0,
|
||||
"payload_type": "trace",
|
||||
"route_type": "flood"
|
||||
},
|
||||
"path": {
|
||||
"hash_size": 1,
|
||||
"hash_count": 3,
|
||||
"hashes": [
|
||||
"AA",
|
||||
"BB",
|
||||
"CC"
|
||||
]
|
||||
},
|
||||
"payload": {
|
||||
"data": "0102030405060708 09"
|
||||
}
|
||||
},
|
||||
"binary": "25 03 AABBCC 010203040506070809",
|
||||
"notes": "Header: (0<<6)|(9<<2)|1 = 0x25. path_len=0x03 (1-byte hashes, 3 hops)."
|
||||
},
|
||||
{
|
||||
"id": "hdr-005",
|
||||
"description": "Maximum header value that isn't 0xFF sentinel: version=2, RAW_CUSTOM, TRANSPORT_DIRECT",
|
||||
"type": "encode_decode",
|
||||
"structured": {
|
||||
"header": {
|
||||
"version": 2,
|
||||
"payload_type": "raw_custom",
|
||||
"route_type": "transport_direct"
|
||||
},
|
||||
"transport_codes": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"path": {
|
||||
"hash_size": 1,
|
||||
"hash_count": 0,
|
||||
"hashes": []
|
||||
},
|
||||
"payload": {
|
||||
"data": "AA"
|
||||
}
|
||||
},
|
||||
"binary": "BF 0000 0000 00 AA",
|
||||
"notes": "Header: (2<<6)|(15<<2)|3 = 0x80+0x3C+0x03 = 0xBF."
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,308 @@
|
||||
{
|
||||
"$schema": "../../schema/test-vector.schema.json",
|
||||
"name": "Header - Payload Types",
|
||||
"spec_ref": "spec/02-header.md",
|
||||
"protocol_version": 0,
|
||||
"description": "Tests encoding of all defined payload types in the header byte. Uses FLOOD routing and minimal payloads to isolate header encoding.",
|
||||
"vectors": [
|
||||
{
|
||||
"id": "pt-000",
|
||||
"description": "Payload type REQUEST (0x00) - header byte encodes type in bits 2-5",
|
||||
"type": "encode_decode",
|
||||
"structured": {
|
||||
"header": {
|
||||
"version": 0,
|
||||
"payload_type": "request",
|
||||
"route_type": "flood"
|
||||
},
|
||||
"path": {
|
||||
"hash_size": 1,
|
||||
"hash_count": 0,
|
||||
"hashes": []
|
||||
},
|
||||
"payload": {
|
||||
"dest_hash": "AB",
|
||||
"src_hash": "CD",
|
||||
"cipher_mac": "1122",
|
||||
"ciphertext": "DEADBEEFCAFEBABE0102030405060708"
|
||||
}
|
||||
},
|
||||
"binary": "01 00 ABCD 1122 DEADBEEFCAFEBABE0102030405060708",
|
||||
"notes": "Header: (0<<6)|(0<<2)|1 = 0x01. Payload: dest_hash(1) + src_hash(1) + MAC(2) + 16 bytes ciphertext."
|
||||
},
|
||||
{
|
||||
"id": "pt-001",
|
||||
"description": "Payload type RESPONSE (0x01)",
|
||||
"type": "encode_decode",
|
||||
"structured": {
|
||||
"header": {
|
||||
"version": 0,
|
||||
"payload_type": "response",
|
||||
"route_type": "flood"
|
||||
},
|
||||
"path": {
|
||||
"hash_size": 1,
|
||||
"hash_count": 0,
|
||||
"hashes": []
|
||||
},
|
||||
"payload": {
|
||||
"dest_hash": "AB",
|
||||
"src_hash": "CD",
|
||||
"cipher_mac": "1122",
|
||||
"ciphertext": "DEADBEEFCAFEBABE0102030405060708"
|
||||
}
|
||||
},
|
||||
"binary": "05 00 ABCD 1122 DEADBEEFCAFEBABE0102030405060708",
|
||||
"notes": "Header: (0<<6)|(1<<2)|1 = 0x05."
|
||||
},
|
||||
{
|
||||
"id": "pt-002",
|
||||
"description": "Payload type TXT_MSG (0x02)",
|
||||
"type": "encode_decode",
|
||||
"structured": {
|
||||
"header": {
|
||||
"version": 0,
|
||||
"payload_type": "txt_msg",
|
||||
"route_type": "flood"
|
||||
},
|
||||
"path": {
|
||||
"hash_size": 1,
|
||||
"hash_count": 0,
|
||||
"hashes": []
|
||||
},
|
||||
"payload": {
|
||||
"dest_hash": "AB",
|
||||
"src_hash": "CD",
|
||||
"cipher_mac": "1122",
|
||||
"ciphertext": "DEADBEEFCAFEBABE0102030405060708"
|
||||
}
|
||||
},
|
||||
"binary": "09 00 ABCD 1122 DEADBEEFCAFEBABE0102030405060708",
|
||||
"notes": "Header: (0<<6)|(2<<2)|1 = 0x09."
|
||||
},
|
||||
{
|
||||
"id": "pt-003",
|
||||
"description": "Payload type ACK (0x03)",
|
||||
"type": "encode_decode",
|
||||
"structured": {
|
||||
"header": {
|
||||
"version": 0,
|
||||
"payload_type": "ack",
|
||||
"route_type": "flood"
|
||||
},
|
||||
"path": {
|
||||
"hash_size": 1,
|
||||
"hash_count": 0,
|
||||
"hashes": []
|
||||
},
|
||||
"payload": {
|
||||
"ack_crc": "DEADBEEF"
|
||||
}
|
||||
},
|
||||
"binary": "0D 00 EFBEADDE",
|
||||
"notes": "Header: (0<<6)|(3<<2)|1 = 0x0D. CRC 0xDEADBEEF as LE = EFBEADDE."
|
||||
},
|
||||
{
|
||||
"id": "pt-004",
|
||||
"description": "Payload type ADVERT (0x04) - minimal advert with 1 byte payload",
|
||||
"type": "encode_decode",
|
||||
"structured": {
|
||||
"header": {
|
||||
"version": 0,
|
||||
"payload_type": "advert",
|
||||
"route_type": "flood"
|
||||
},
|
||||
"path": {
|
||||
"hash_size": 1,
|
||||
"hash_count": 0,
|
||||
"hashes": []
|
||||
},
|
||||
"payload": {
|
||||
"data": "FF"
|
||||
}
|
||||
},
|
||||
"binary": "11 00 FF",
|
||||
"notes": "Header: (0<<6)|(4<<2)|1 = 0x11. Using raw payload to test header encoding in isolation."
|
||||
},
|
||||
{
|
||||
"id": "pt-005",
|
||||
"description": "Payload type GRP_TXT (0x05)",
|
||||
"type": "encode_decode",
|
||||
"structured": {
|
||||
"header": {
|
||||
"version": 0,
|
||||
"payload_type": "grp_txt",
|
||||
"route_type": "flood"
|
||||
},
|
||||
"path": {
|
||||
"hash_size": 1,
|
||||
"hash_count": 0,
|
||||
"hashes": []
|
||||
},
|
||||
"payload": {
|
||||
"channel_hash": "AB",
|
||||
"cipher_mac": "1122",
|
||||
"ciphertext": "DEADBEEFCAFEBABE0102030405060708"
|
||||
}
|
||||
},
|
||||
"binary": "15 00 AB 1122 DEADBEEFCAFEBABE0102030405060708",
|
||||
"notes": "Header: (0<<6)|(5<<2)|1 = 0x15."
|
||||
},
|
||||
{
|
||||
"id": "pt-006",
|
||||
"description": "Payload type GRP_DATA (0x06)",
|
||||
"type": "encode_decode",
|
||||
"structured": {
|
||||
"header": {
|
||||
"version": 0,
|
||||
"payload_type": "grp_data",
|
||||
"route_type": "flood"
|
||||
},
|
||||
"path": {
|
||||
"hash_size": 1,
|
||||
"hash_count": 0,
|
||||
"hashes": []
|
||||
},
|
||||
"payload": {
|
||||
"channel_hash": "AB",
|
||||
"cipher_mac": "1122",
|
||||
"ciphertext": "DEADBEEFCAFEBABE0102030405060708"
|
||||
}
|
||||
},
|
||||
"binary": "19 00 AB 1122 DEADBEEFCAFEBABE0102030405060708",
|
||||
"notes": "Header: (0<<6)|(6<<2)|1 = 0x19."
|
||||
},
|
||||
{
|
||||
"id": "pt-007",
|
||||
"description": "Payload type ANON_REQ (0x07)",
|
||||
"type": "encode_decode",
|
||||
"structured": {
|
||||
"header": {
|
||||
"version": 0,
|
||||
"payload_type": "anon_req",
|
||||
"route_type": "flood"
|
||||
},
|
||||
"path": {
|
||||
"hash_size": 1,
|
||||
"hash_count": 0,
|
||||
"hashes": []
|
||||
},
|
||||
"payload": {
|
||||
"data": "FF"
|
||||
}
|
||||
},
|
||||
"binary": "1D 00 FF",
|
||||
"notes": "Header: (0<<6)|(7<<2)|1 = 0x1D. Minimal payload to test header."
|
||||
},
|
||||
{
|
||||
"id": "pt-008",
|
||||
"description": "Payload type PATH (0x08)",
|
||||
"type": "encode_decode",
|
||||
"structured": {
|
||||
"header": {
|
||||
"version": 0,
|
||||
"payload_type": "path",
|
||||
"route_type": "flood"
|
||||
},
|
||||
"path": {
|
||||
"hash_size": 1,
|
||||
"hash_count": 0,
|
||||
"hashes": []
|
||||
},
|
||||
"payload": {
|
||||
"data": "FF"
|
||||
}
|
||||
},
|
||||
"binary": "21 00 FF",
|
||||
"notes": "Header: (0<<6)|(8<<2)|1 = 0x21."
|
||||
},
|
||||
{
|
||||
"id": "pt-009",
|
||||
"description": "Payload type TRACE (0x09)",
|
||||
"type": "encode_decode",
|
||||
"structured": {
|
||||
"header": {
|
||||
"version": 0,
|
||||
"payload_type": "trace",
|
||||
"route_type": "flood"
|
||||
},
|
||||
"path": {
|
||||
"hash_size": 1,
|
||||
"hash_count": 0,
|
||||
"hashes": []
|
||||
},
|
||||
"payload": {
|
||||
"data": "FF"
|
||||
}
|
||||
},
|
||||
"binary": "25 00 FF",
|
||||
"notes": "Header: (0<<6)|(9<<2)|1 = 0x25."
|
||||
},
|
||||
{
|
||||
"id": "pt-010",
|
||||
"description": "Payload type MULTIPART (0x0A)",
|
||||
"type": "encode_decode",
|
||||
"structured": {
|
||||
"header": {
|
||||
"version": 0,
|
||||
"payload_type": "multipart",
|
||||
"route_type": "flood"
|
||||
},
|
||||
"path": {
|
||||
"hash_size": 1,
|
||||
"hash_count": 0,
|
||||
"hashes": []
|
||||
},
|
||||
"payload": {
|
||||
"data": "FF"
|
||||
}
|
||||
},
|
||||
"binary": "29 00 FF",
|
||||
"notes": "Header: (0<<6)|(10<<2)|1 = 0x29."
|
||||
},
|
||||
{
|
||||
"id": "pt-011",
|
||||
"description": "Payload type CONTROL (0x0B)",
|
||||
"type": "encode_decode",
|
||||
"structured": {
|
||||
"header": {
|
||||
"version": 0,
|
||||
"payload_type": "control",
|
||||
"route_type": "flood"
|
||||
},
|
||||
"path": {
|
||||
"hash_size": 1,
|
||||
"hash_count": 0,
|
||||
"hashes": []
|
||||
},
|
||||
"payload": {
|
||||
"data": "FF"
|
||||
}
|
||||
},
|
||||
"binary": "2D 00 FF",
|
||||
"notes": "Header: (0<<6)|(11<<2)|1 = 0x2D."
|
||||
},
|
||||
{
|
||||
"id": "pt-012",
|
||||
"description": "Payload type RAW_CUSTOM (0x0F)",
|
||||
"type": "encode_decode",
|
||||
"structured": {
|
||||
"header": {
|
||||
"version": 0,
|
||||
"payload_type": "raw_custom",
|
||||
"route_type": "flood"
|
||||
},
|
||||
"path": {
|
||||
"hash_size": 1,
|
||||
"hash_count": 0,
|
||||
"hashes": []
|
||||
},
|
||||
"payload": {
|
||||
"data": "CAFEBABE"
|
||||
}
|
||||
},
|
||||
"binary": "3D 00 CAFEBABE",
|
||||
"notes": "Header: (0<<6)|(15<<2)|1 = 0x3D."
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,131 @@
|
||||
{
|
||||
"$schema": "../../schema/test-vector.schema.json",
|
||||
"name": "Header - Route Types",
|
||||
"spec_ref": "spec/02-header.md",
|
||||
"protocol_version": 0,
|
||||
"description": "Tests encoding and decoding of all 4 route types in the header byte, using ACK (payload_type=3) as a simple payload.",
|
||||
"vectors": [
|
||||
{
|
||||
"id": "rt-000",
|
||||
"description": "Route type TRANSPORT_FLOOD (0x00) with ACK payload",
|
||||
"type": "encode_decode",
|
||||
"structured": {
|
||||
"header": {
|
||||
"version": 0,
|
||||
"payload_type": "ack",
|
||||
"route_type": "transport_flood"
|
||||
},
|
||||
"transport_codes": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"path": {
|
||||
"hash_size": 1,
|
||||
"hash_count": 0,
|
||||
"hashes": []
|
||||
},
|
||||
"payload": {
|
||||
"ack_crc": "01020304"
|
||||
}
|
||||
},
|
||||
"binary": "0C 0000 0000 00 04030201",
|
||||
"notes": "Header: version=0, payload_type=3 (ACK), route_type=0 (TRANSPORT_FLOOD). 0x0C = (0<<6)|(3<<2)|0. Transport codes both zero. path_len=0x00 (hash_size=1, count=0). ACK CRC 0x01020304 as LE = 04030201."
|
||||
},
|
||||
{
|
||||
"id": "rt-001",
|
||||
"description": "Route type FLOOD (0x01) with ACK payload",
|
||||
"type": "encode_decode",
|
||||
"structured": {
|
||||
"header": {
|
||||
"version": 0,
|
||||
"payload_type": "ack",
|
||||
"route_type": "flood"
|
||||
},
|
||||
"path": {
|
||||
"hash_size": 1,
|
||||
"hash_count": 0,
|
||||
"hashes": []
|
||||
},
|
||||
"payload": {
|
||||
"ack_crc": "01020304"
|
||||
}
|
||||
},
|
||||
"binary": "0D 00 04030201",
|
||||
"notes": "Header: 0x0D = (0<<6)|(3<<2)|1. No transport codes. path_len=0x00. ACK CRC as LE."
|
||||
},
|
||||
{
|
||||
"id": "rt-002",
|
||||
"description": "Route type DIRECT (0x02) with ACK payload",
|
||||
"type": "encode_decode",
|
||||
"structured": {
|
||||
"header": {
|
||||
"version": 0,
|
||||
"payload_type": "ack",
|
||||
"route_type": "direct"
|
||||
},
|
||||
"path": {
|
||||
"hash_size": 1,
|
||||
"hash_count": 0,
|
||||
"hashes": []
|
||||
},
|
||||
"payload": {
|
||||
"ack_crc": "01020304"
|
||||
}
|
||||
},
|
||||
"binary": "0E 00 04030201",
|
||||
"notes": "Header: 0x0E = (0<<6)|(3<<2)|2. No transport codes."
|
||||
},
|
||||
{
|
||||
"id": "rt-003",
|
||||
"description": "Route type TRANSPORT_DIRECT (0x03) with ACK payload",
|
||||
"type": "encode_decode",
|
||||
"structured": {
|
||||
"header": {
|
||||
"version": 0,
|
||||
"payload_type": "ack",
|
||||
"route_type": "transport_direct"
|
||||
},
|
||||
"transport_codes": [
|
||||
4660,
|
||||
22136
|
||||
],
|
||||
"path": {
|
||||
"hash_size": 1,
|
||||
"hash_count": 0,
|
||||
"hashes": []
|
||||
},
|
||||
"payload": {
|
||||
"ack_crc": "01020304"
|
||||
}
|
||||
},
|
||||
"binary": "0F 3412 7856 00 04030201",
|
||||
"notes": "Header: 0x0F = (0<<6)|(3<<2)|3. Transport codes: 4660=0x1234 as LE=3412, 22136=0x5678 as LE=7856."
|
||||
},
|
||||
{
|
||||
"id": "rt-004",
|
||||
"description": "TRANSPORT_FLOOD with non-zero transport codes",
|
||||
"type": "encode_decode",
|
||||
"structured": {
|
||||
"header": {
|
||||
"version": 0,
|
||||
"payload_type": "ack",
|
||||
"route_type": "transport_flood"
|
||||
},
|
||||
"transport_codes": [
|
||||
65535,
|
||||
1
|
||||
],
|
||||
"path": {
|
||||
"hash_size": 1,
|
||||
"hash_count": 0,
|
||||
"hashes": []
|
||||
},
|
||||
"payload": {
|
||||
"ack_crc": "FFFFFFFF"
|
||||
}
|
||||
},
|
||||
"binary": "0C FFFF 0100 00 FFFFFFFF",
|
||||
"notes": "Transport code 1: 0xFFFF as LE = FFFF. Transport code 2: 1 as LE = 0100. CRC 0xFFFFFFFF as LE."
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,97 @@
|
||||
{
|
||||
"$schema": "../../schema/test-vector.schema.json",
|
||||
"name": "Header - Protocol Versions",
|
||||
"spec_ref": "spec/02-header.md",
|
||||
"protocol_version": 0,
|
||||
"description": "Tests encoding of all 4 protocol version values in header bits 6-7. Uses ACK (type=3) with FLOOD routing as a simple baseline.",
|
||||
"vectors": [
|
||||
{
|
||||
"id": "ver-000",
|
||||
"description": "Version 0 (V1, current) - bits 6-7 = 00",
|
||||
"type": "encode_decode",
|
||||
"structured": {
|
||||
"header": {
|
||||
"version": 0,
|
||||
"payload_type": "ack",
|
||||
"route_type": "flood"
|
||||
},
|
||||
"path": {
|
||||
"hash_size": 1,
|
||||
"hash_count": 0,
|
||||
"hashes": []
|
||||
},
|
||||
"payload": {
|
||||
"ack_crc": "00000001"
|
||||
}
|
||||
},
|
||||
"binary": "0D 00 01000000",
|
||||
"notes": "Header: (0<<6)|(3<<2)|1 = 0x0D. Version 0 = V1."
|
||||
},
|
||||
{
|
||||
"id": "ver-001",
|
||||
"description": "Version 1 (V2, reserved) - bits 6-7 = 01",
|
||||
"type": "encode_decode",
|
||||
"structured": {
|
||||
"header": {
|
||||
"version": 1,
|
||||
"payload_type": "ack",
|
||||
"route_type": "flood"
|
||||
},
|
||||
"path": {
|
||||
"hash_size": 1,
|
||||
"hash_count": 0,
|
||||
"hashes": []
|
||||
},
|
||||
"payload": {
|
||||
"ack_crc": "00000001"
|
||||
}
|
||||
},
|
||||
"binary": "4D 00 01000000",
|
||||
"notes": "Header: (1<<6)|(3<<2)|1 = 0x4D. Version 1 = V2 (reserved)."
|
||||
},
|
||||
{
|
||||
"id": "ver-002",
|
||||
"description": "Version 2 (V3, reserved) - bits 6-7 = 10",
|
||||
"type": "encode_decode",
|
||||
"structured": {
|
||||
"header": {
|
||||
"version": 2,
|
||||
"payload_type": "ack",
|
||||
"route_type": "flood"
|
||||
},
|
||||
"path": {
|
||||
"hash_size": 1,
|
||||
"hash_count": 0,
|
||||
"hashes": []
|
||||
},
|
||||
"payload": {
|
||||
"ack_crc": "00000001"
|
||||
}
|
||||
},
|
||||
"binary": "8D 00 01000000",
|
||||
"notes": "Header: (2<<6)|(3<<2)|1 = 0x8D. Version 2 = V3 (reserved)."
|
||||
},
|
||||
{
|
||||
"id": "ver-003",
|
||||
"description": "Version 3 (V4, reserved) - bits 6-7 = 11",
|
||||
"type": "encode_decode",
|
||||
"structured": {
|
||||
"header": {
|
||||
"version": 3,
|
||||
"payload_type": "ack",
|
||||
"route_type": "flood"
|
||||
},
|
||||
"path": {
|
||||
"hash_size": 1,
|
||||
"hash_count": 0,
|
||||
"hashes": []
|
||||
},
|
||||
"payload": {
|
||||
"ack_crc": "00000001"
|
||||
}
|
||||
},
|
||||
"binary": "CD 00 01000000",
|
||||
"notes": "Header: (3<<6)|(3<<2)|1 = 0xCD. Version 3 = V4 (reserved)."
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in new issue
Block a user