Abrams Event Address / AEA-STATE/1 version 1.0
A precise address in space and time.
Abrams Research Systems developed AEA, a simple software record format that captures a vehicle's position, motion, orientation, and time as one consistent snapshot. When a drone, missile, or spacecraft loses GPS or radio contact from jamming, spoofing, or distance, the last recorded state is often hard to use because different systems track clocks and coordinate frames differently. AEA packages those existing measurements into a single record with a built-in corruption check so the data stays consistent and usable. The software is written and host-verified at TRL 3, and is designed to plug into existing flight software through a standard C interface. We believe that, once properly tested, AEA could help with faster recovery after loss of comms, more accurate course correction, lower processing load during recalibration, and reduced fuel spent on re-acquisition across drones, missiles, and deep-space missions.
Status: working reference software that builds and passes its published tests (TRL 3). Hardware and flight testing have not been done yet.
The idea
Give the moment its context.
The block-time view pictures events by their place and time. AEA turns that idea into an explicit record: position, time, velocity and attitude, together with the body, reference frame and time scale needed to interpret them.
Our reference test record is a real place and moment — Cambridge, 28 June 2009 (Hawking’s “time-traveller reception”) — chosen so anyone can recompute it. It is a mathematical test record derived from WGS 84 inputs and tagged ITRF2020 for testing, not an official IERS station coordinate.
Read the Cambridge test vector ↗Record layout
136 bytes. Every field explicit.
A fixed 136-byte record layout defined in aea.h, carrying position, time, motion and attitude with the reference frame and clock declared in every record.
View record fields and technical notes
| Offset | Bytes | Field | Meaning |
|---|---|---|---|
| 0 | 4 | version | Record format identifier |
| 4 | 4 | body_naif | Body ID; 399 = Earth, 499 = Mars, 0 = none |
| 8 | 8 | time_sec | Signed seconds since 1970-01-01 on the declared scale |
| 16 | 4 | time_nsec | Nanoseconds, 0 to 999,999,999 |
| 20 | 2 | frame | ITRF2020, GCRS, BCRS or BODY |
| 22 | 2 | time_scale | TAI, TT, TCB or TDB |
| 24 | 24 | pos_m[3] | Position in metres in the declared frame |
| 48 | 24 | vel_mps[3] | Velocity in metres per second in the declared frame |
| 72 | 32 | quat_xyzw[4] | Attitude quaternion, x / y / z / w |
| 104 | 32 | hash[32] | SHA-256 over the canonical first 104 bytes |
From aea.h: “Naturally 8-byte aligned. Total struct size is exactly 136 bytes.” The header states: “Field order keeps every 8-byte field naturally aligned on an 8-byte boundary.”
The digest uses canonical Little-Endian encoding. Negative zero is canonicalized to positive zero before hashing. The library checks finite floating-point values; it does not enforce a unit-length attitude quaternion (producers should normalize quaternions before sealing per ICD §2.1). The identity quaternion can mean either null/unmeasured attitude or alignment with the frame axes.
Reference frames
Name the map.
- ITRF2020 Earth-fixed Cartesian metres.
- GCRS Geocentric Celestial Reference System.
- BCRS Barycentric Celestial Reference System.
- BODY Body-fixed Cartesian, centered on the declared NAIF body.
NAIF examples: Earth 399, Mars 499, Moon 301. Body 0 means none, not a barycenter.
Time scales
Name the clock.
Civil UTC is deliberately excluded because leap seconds make it non-monotonic; records use TAI, TT, TCB or TDB, with POSIX/UTC conversion defined in ICD §6.3.
Time is stored as signed seconds since 1970-01-01 on the declared scale, plus nanoseconds. Conversion and coordinate transformations remain the caller’s responsibility.
Read ICD §6.3 ↗Reference C interface
Three functions.
#include "aea.h"
int32_t aea_seal(AeaRecord *record);
int32_t aea_verify(const AeaRecord *record);
uint32_t aea_version(void);aea_seal validates the fields and writes the digest. aea_verify validates the fields and compares the recomputed digest. It returns 0 on a match, 1 on mismatch, or a negative validation error. aea_version takes no arguments.
Technical version details
- Visitor-facing name
- AEA-STATE/1 version 1.0
- Wire version field
- 1
- ABI constant
0x00010000- Reference library used for these checks
- v1.0.4 · commit 287392912020d2a8ec33d81fe426ba17ce350a5f
Digest & scope
Check the bytes. Understand the boundary.
The unkeyed SHA-256 digest is a check for accidental corruption of the record's first 104 bytes (bytes 0–103). In the exhaustive single-bit test it detected 1,082 of 1,088 flips; the 6 exceptions are documented ±0.0 sign flips. It does not protect against deliberate changes, because anyone can recompute it.
AEA does not navigate, dead-reckon, detect or bound drift, authenticate senders, reject spoofed packets, provide electronic warfare or anti-spoofing capabilities, save propellant, or detect SEUs.
AEA-AUTH/1 is a planned future profile for keyed signing. It is not built and is not part of the current library.
Hardware timing, stack depth and other on-target measurements: not yet measured.
Technical evaluation
Inspect the record. Reproduce the evidence.
An evaluator integration kit is available on request.