Elydora Operation Record (EOR)
The EOR is the unit of accountability in the Elydora protocol: a signed, immutable record of one agent action.
Structure
An EOR contains all the metadata needed to identify, verify, and chain-link an operation. Every field is included in the signature computation.
| Field | Type | Required | Description |
|---|---|---|---|
| op_version | string | Yes | Protocol version. Currently "1.0". |
| operation_id | string | Yes | Client-generated UUIDv7. Must be globally unique. |
| org_id | string | Yes | Organization identifier that the agent belongs to. |
| agent_id | string | Yes | Identifier of the agent performing the operation. |
| issued_at | number | Yes | Unix timestamp in milliseconds when the agent created the operation. |
| ttl_ms | number | Yes | Maximum time (ms) between issued_at and server receipt. Prevents delayed replay. |
| nonce | string | Yes | Random value for replay protection. Must be unique per agent. |
| operation_type | string | Yes | Domain-specific type string (e.g. loan.approve, trade.execute). |
| subject | object | Yes | JSON object describing the entity or resource the operation acts upon. |
| action | object | Yes | JSON object describing the action performed. |
| payload | object | string | null | Yes | Operation-specific data: a JSON object, a string, or null. |
| payload_hash | string | Yes | Base64url SHA-256 of the canonical (RFC 8785) payload. |
| prev_chain_hash | string | Yes | Chain hash of this agent's previous operation. The first operation uses the genesis constant, 32 zero bytes in base64url. |
| agent_pubkey_kid | string | Yes | Key ID (kid) of the agent's Ed25519 signing key. |
| signature | string | Yes | Ed25519 signature over the canonical EOR (excluding the signature field itself). |
Canonical Form
The signature covers the JSON Canonicalization Scheme (RFC 8785) serialization of every field except signature.
Example EOR
json
{
"op_version": "1.0",
"operation_id": "0195f2c6-8f4e-7a1b-9c3d-2e4f6a8b0c1d",
"org_id": "org_acme",
"agent_id": "agent_underwriter",
"issued_at": 1772287200000,
"ttl_ms": 30000,
"nonce": "qL3xV9pZ2mK8wR4t",
"operation_type": "loan.approve",
"subject": { "id": "borrower:BRW-2026-0042", "type": "borrower" },
"action": { "name": "approve", "type": "decision" },
"payload": {
"loanId": "LN-2026-001",
"amount": 50000,
"currency": "USD"
},
"payload_hash": "<base64url SHA-256 of the canonical payload>",
"prev_chain_hash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
"agent_pubkey_kid": "agent_underwriter-key-1",
"signature": "<base64url Ed25519 signature>"
}Security Properties
- Authenticity — The Ed25519 signature proves the EOR was created by the holder of the agent's private key.
- Integrity — Any modification to any field invalidates the signature.
- Non-repudiation — The agent cannot deny creating the operation, as only they possess the private key.
- Ordering — The prev_chain_hash field creates a verifiable ordering of operations per agent.
- Freshness — TTL and nonce prevent replay attacks and stale submissions.