DRD List Remove — Group 16, Code 145

Removes entries from the caller’s white/black list, in batches of one or more 5-byte listed-user identifiers. Removal works for both entry types — the type byte is not needed to remove.

Quick reference

Command Group16 (DRD)
Command Code145 (0x91)
Server functioncmd_drd_list_remove in cmd_drd.c
Request bodychallenge(16) + owner DN(1) SN(4) AN(16) + N × entry(5) + terminator(2). Minimum 44 bytes (N = 1).
AuthenticationOwner AN — only the list owner can modify it
Success responseStatus 250, no payload
SemanticsIdempotent: removing an entry that is not on the list is not an error

Request body

Identical to list_set except each entry is 5 bytes — the listed user’s denomination and serial number with no type byte. Diagram shows a single-entry request (44 bytes).

Challenge random (12 bytes, part 1 of 2) 0 7 Challenge random (part 2) 8 11 Challenge CRC32 (BE) 12 15 DN 16 Owner Serial Number (BE) 17 20 AN (part 1 of 3) 21 23 Owner Authenticity Number (part 2 of 3) 24 31 AN (part 3 of 3) 32 36 LDN 37 Listed SN... 38 39 Listed SN (cont.) 40 41 3E 3E (term) 42 43
Request body layout, N entries

+-------------------+------------------------------+------------------------+------------+
| challenge/CRC     | owner identity + auth        | N x 5-byte entries     | terminator |
| 16 bytes          | DN(1) SN(4) AN(16)           | LDN(1) LSN(4)          | 2 bytes    |
+-------------------+------------------------------+------------------------+------------+
| body[0..15]       | body[16..36]                 | body[37..37+5N-1]      | 3E 3E      |
+-------------------+------------------------------+------------------------+------------+
total = 39 + 5N bytes

Response

Status-only. 250 means the batch was processed; entries that existed were removed and entries that did not exist were skipped silently. This makes retries across all 25 RAIDAs safe.

Status codes

DecimalHexSymbolMeaning
2500xFASTATUS_SUCCESSBatch processed.
160x10ERROR_INVALID_PACKET_LENGTHBody under 44 bytes.
390x27ERROR_COINS_NOT_DIVEntry region is not a multiple of 5 bytes.
400x28ERROR_INVALID_SN_OR_DENOMINATIONOwner denomination/serial is not a coin this RAIDA holds.
2000xC8ERROR_INVALID_ANOwner AN mismatch. Nothing removed.
2520xFCERROR_INTERNALDatabase failure.

Common mistakes

Including the type byte

Remove entries are 5 bytes, not 6. Appending the type byte shifts every following entry and usually triggers ERROR_COINS_NOT_DIV.

Treating a missing entry as failure

Unlike single-entry commands, batch remove does not report which entries actually existed. Read back with list_get if you need to verify the final list state.