Skip to main content
Internal protocols connect the task execution components. Public request and result fields live in the service API and results reference.

Protocol boundaries

EVM reads through the runtime

The function supplies its chain and block context through the public EVM object. python/blockx_runtime/noderpc_bridge.py routes node requests to the host bridge. Worker IO dispatches the corresponding backend operation and returns the response to the suspended computation. A BlockX Call identifier tracks function execution. The chain, block, contract, and query arguments belong to the backend request; preserve them when changing routing or cache behavior.

Wire and domain models

  • Protobuf messages define service inputs and outputs.
  • Worker adapters convert those messages to internal task types in internal/worker/adapters/wire.go.
  • Call Builder and Writer Plugin configuration remains JSON with plugin-owned fields.
  • Task failure details and RPC status are separate channels; use results and errors for the caller-visible contract.

Changing a protocol

Update both producers and consumers when changing fields or message handling. Keep shared definitions in api/, and run the relevant codec, adapter, and process tests. Source paths and test entry points are listed on the owning component pages. Design references in the BlockX repository: docs/specs/code-style.md, docs/specs/worker.md, and docs/specs/sync-invoker.md.