Async Privacy Oracle Spec
Canonical Network Registry
The canonical deployment registry lives in:
Current Neo N3 anchors:
| Item | Mainnet | Testnet |
|---|---|---|
| Oracle runtime API | ||
| Oracle attestation explorer | ||
| Datafeed attestation explorer | ||
| via | ||
| via | ||
| via | ||
| deployment-specific | ||
| via | unpublished in the shared registry |
Interpretation rules:
- testnet example/demo contracts may differ from the canonical callback consumer; always trust instead of older examples
- blank / unpublished registry fields mean there is no shared stable publication yet, not that a temporary internal deployment never existed
- is the canonical AA product/runtime label even if a raw deployed manifest string carries a historical or deployment-specific suffix
- is the canonical AA mainnet domain, while is an additional alias to the same clean AA address
- AA verifier plugin addresses are deployment-specific and should not be inferred from the core AA contract hash
Architecture note:
- Cloudflare control-plane ingress, queues, and workflows stay outside the TEE.
- Supabase remains the durable source of truth for accepted jobs and recovery.
- The Oracle CVM handles request/response execution for both mainnet and testnet.
- The DataFeed CVM remains isolated for continuous feed publication.
- network selection is path-based and payload-based, not CVM-based
Canonical Request Path
- Client reads the Oracle public key.
- Client encrypts a secret locally.
- Contract calls on .
- is emitted on-chain.
- The relayer validates and persists the event, then forwards it to the Oracle runtime.
- The Oracle runtime executes fetch-only, private fetch, public compute, or private compute.
- The relayer calls .
- Callback executes in the consumer contract.
NeoDID identity flows now also fit this same path when the request type is one of:
Oracle Payload
For
, a typical on-chain payload is:
For large Web3Auth JWT payloads, use the short-reference form instead of embedding the full ciphertext directly in the Oracle payload:
Rules
- is the canonical encrypted auth-secret field for private fetches
- if decrypts to a JSON object, the worker treats it as a confidential payload patch and merges it before execution
- / are dedicated aliases for encrypted JSON patches that can carry secret headers, provider params, compute input, function names, or scripts
- / are short references to ciphertext previously stored in
- when a ref field is present, the worker loads the ciphertext from Supabase first, then decrypts the same X25519 envelope inside the TEE
- and are interchangeable aliases
- lets the worker fetch the script body from a Neo N3 contract getter so the on-chain request only carries a small reference
- and are on-chain request arguments, not JSON payload fields
- is currently in the active supported path
- Neo X request fields remain in older examples and in-repo reference code, but they are not the active production route
- confidential payload transport uses
- binds the signed ticket to , , , , and
Built-in Compute API
Use
with one of:
or
Confidential compute can be submitted by encrypting the full compute payload patch with the Oracle public key:
Built-in Providers
Requests may optionally specify a built-in provider via
and .Built-ins:
- — direct market-data source with API key auth
- — direct Binance spot ticker endpoint without aggregation
- — direct Coinbase spot price endpoint without aggregation
If
is omitted, callers may still use their own plus encrypted secret payloads.Worker Verification Envelope
The worker response may include a stable
object:
On-Chain Fulfillment Payload
The relayer normalizes successful worker output into a chain-ready result envelope before calling
:
This normalized JSON is UTF-8 encoded and passed as the
bytes of .Callback Consumer Interpretation
Consumers should interpret the callback payload as:
- a UTF-8 JSON object
- versioned by
- with business payload under
- with attestation/signature material under
Verification
Use:
- for a prefilled example
- for server-side verification
- for the browser verifier UI
Runtime Limits
The active worker runtime now enforces:
- request body limit at the HTTP ingress
- script source size limit
- registered-script fetch size limit
- oracle programmable input size limit
- compute input size limit
- script / wasm result size limits
- upstream Oracle / provider response size limits