Async Privacy Request Spec
This spec still uses some legacy "oracle" naming because the active runtime routes and payload shapes have not been fully renamed yet. On Neo N3, the on-chain model is now a shared
kernel:- is the kernel contract
- built-in modules provide common fetch / compute / identity capabilities
- is an optional external adapter, not the canonical callback surface
- legacy and remain as compatibility shims
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 | ||
| kernel | via | |
| opt. | ||
| module | via | |
| via / | ||
| via | unpublished in the shared registry |
Interpretation rules:
- testnet example/demo contracts may differ from the shared optional callback adapter; 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 built-in confidential module execution for both mainnet and testnet.
- The DataFeed CVM remains isolated for continuous shared resource publication.
- network selection is path-based and payload-based, not CVM-based
- route naming is still partly oracle-shaped, but the on-chain contract boundary is now kernel-oriented
Canonical Request Path
- Client reads the Oracle public key.
- Client encrypts a secret locally.
- Contract calls on , or uses the newer kernel registration path when available.
- A kernel request event is emitted on-chain.
- The relayer validates and persists the event, then forwards it to the correct built-in module lane.
- The runtime executes fetch-only, private fetch, public compute, or private compute.
- The relayer calls .
- The kernel stores the canonical inbox item.
- If a callback adapter contract was configured, it receives the forwarded result as an optional integration surface.
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
- kernel-native miniapp integrations may eventually bypass explicit callback adapters and read from the system inbox directly
- is currently in the active supported path
- 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 . The kernel stores that payload in its inbox even when no external callback adapter is used.Result Interpretation
Miniapps and optional callback adapters should interpret the result payload as:
- a UTF-8 JSON object
- versioned by
- with business payload under
- with attestation/signature material under
Verification
Use:
- 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