Last Updated: 2026-01-22
Original Location: common/src/main/java/com/ridestr/common/nostr/events/deprecation.md
This document describes event kinds that have been deprecated in the rideshare protocol.
The following event kinds were deprecated and consolidated into two new parameterized replaceable events:
- Kind 30180: Driver Ride State - consolidates driver status and PIN submission
- Kind 30181: Rider Ride State - consolidates rider verification and location reveals
Reason: Merged into Kind 30180 (Driver Ride State)
The PIN submission was previously a separate regular event. Now it's embedded as an action in the driver's ride state history. This reduces the number of events per ride and improves relay efficiency through parameterized replaceable semantics.
Previous file: PinSubmissionEvent.kt
Reason: Merged into Kind 30181 (Rider Ride State)
PIN verification results are now embedded as actions in the rider's ride state history. The verification state machine (attempt counts, verification status) is preserved in the history array.
Previous file: PickupVerificationEvent.kt
Reason: Merged into Kind 30180 (Driver Ride State)
Driver status updates (en_route_pickup, arrived, in_progress, completed, cancelled) are now tracked as actions in the driver's ride state. The parameterized replaceable semantics ensure relays only keep the latest state.
Previous file: DriverStatusEvent.kt
Reason: Merged into Kind 30181 (Rider Ride State)
Location reveals (pickup and destination) are now embedded as actions in the rider's ride state history. The NIP-44 encryption of location data is preserved.
Previous file: PreciseLocationRevealEvent.kt
Reason: Never implemented; replaced by Kind 30173
Ephemeral driver availability was considered but never implemented. Kind 30173 (parameterized replaceable) was chosen instead for better reliability.
-
Relay Efficiency: Parameterized replaceable events (Kind 30xxx) with d-tags allow relays to keep only the latest state per ride, reducing storage and bandwidth.
-
Atomic State: Instead of multiple separate events that could become inconsistent, all ride actions are embedded in a single event with a complete history.
-
Notification Simplicity: Applications can detect new actions by comparing history array lengths, triggering appropriate notifications for each new action.
-
Backward Compatibility: Not required as the app was never publicly released.
The handshake events (Kinds 3173, 3174, 3175) remain separate regular events because:
- Notification Reliability: Each event triggers immediate notification delivery
- Different Lifecycle: Handshake events are one-time per ride, while ride state events update continuously
- Event References: The confirmation event ID becomes the d-tag for state events
| Kind | Name | Type | Phase |
|---|---|---|---|
| 30173 | Driver Availability | Param Replaceable | Discovery |
| 3173 | Ride Offer | Regular | Handshake |
| 3174 | Ride Acceptance | Regular | Handshake |
| 3175 | Ride Confirmation | Regular | Handshake |
| 30180 | Driver Ride State | Param Replaceable | Ride |
| 30181 | Rider Ride State | Param Replaceable | Ride |
| 3178 | Rideshare Chat | Regular | Ride |
| 3179 | Ride Cancellation | Regular | Any |
| 30174 | Ride History Backup | Param Replaceable | Post |
| 30177 | Unified Profile | Param Replaceable | Profile |
Total: 10 active event kinds (8 ride + 2 profile sync)
Note: Kind 30175 (vehicles) and Kind 30176 (saved locations) were consolidated into Kind 30177 (unified profile) in January 2026.
If old events from deprecated kinds exist on relays, they will be ignored by the current implementation. Use the Account Safety screen to clean up old events.
DriverStatusEvent.ktPinSubmissionEvent.ktPickupVerificationEvent.ktPreciseLocationRevealEvent.kt
DriverRideStateEvent.kt(Kind 30180)RiderRideStateEvent.kt(Kind 30181)
- NOSTR_EVENTS.md - Current event definitions
- STATE_MACHINES.md - State transitions using new events