Both sides carry the resolved party — the owner address plus the ledger account id it belongs to — rather than a bare wallet string, so no reader can see one without the other. See ResolvedEscrowParty.
Why a CANCELLED or RETURNED escrow ended; null otherwise.
Service-level projection of an escrow transfer row. Always carries the customer's external id (string) — never the internal numeric FK.
The DB column
legacyTransactionIdis non-null only for rows backfilled fromcfx-movemoney'sescrow_transfer_transactiontable.Party identifiers are exposed as
senderId/recipientId(the API vocabulary). The underlying DB columns are stillsender_external_id/recipient_external_id; the mapper below is the single translation point.