Elydora Docs

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.

FieldTypeRequiredDescription
op_versionstringYesProtocol version. Currently "1.0".
operation_idstringYesClient-generated UUIDv7. Must be globally unique.
org_idstringYesOrganization identifier that the agent belongs to.
agent_idstringYesIdentifier of the agent performing the operation.
issued_atnumberYesUnix timestamp in milliseconds when the agent created the operation.
ttl_msnumberYesMaximum time (ms) between issued_at and server receipt. Prevents delayed replay.
noncestringYesRandom value for replay protection. Must be unique per agent.
operation_typestringYesDomain-specific type string (e.g. loan.approve, trade.execute).
subjectobjectYesJSON object describing the entity or resource the operation acts upon.
actionobjectYesJSON object describing the action performed.
payloadobject | string | nullYesOperation-specific data: a JSON object, a string, or null.
payload_hashstringYesBase64url SHA-256 of the canonical (RFC 8785) payload.
prev_chain_hashstringYesChain hash of this agent's previous operation. The first operation uses the genesis constant, 32 zero bytes in base64url.
agent_pubkey_kidstringYesKey ID (kid) of the agent's Ed25519 signing key.
signaturestringYesEd25519 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