Thesettlementlayerforthemachineeconomy.

Developers

Run, control and verify nodes from a shell

Core protocol and verification CLIs

Eight C and Rust binaries for node operators and integrators, with offline receipt and proof verification.

Start a node with layerxd in one of five modes, then read state and submit activities with layerxctl over a Unix socket. Check a trust root, a receipt or an inclusion bundle with layerx-verify, which names the verification stage that failed instead of returning one opaque error. You verify against the signed genesis manifest offline, without trusting the node that produced the proof. Expect a rough invocation surface: only layerxctl accepts --help, and no binary defines --version.

What it does

cmd/ holds the low-level operator and integrator binaries for the LayerX agent domain, written in C and Rust with no Go and no command-line framework. layerxd runs a node in one of five mutually exclusive modes, layerxctl reads state from and submits activities to a running node over a Unix socket, and layerx-verify checks a trust root, a receipt or an inclusion bundle. The remaining binaries cover data-availability log export and verification, genesis building, sequencer key handover, the guarantor duty loop and module-registry generation.

Key capabilities

  • layerxd serves a node as --check-config, --serve, --replica, --authority-replica or --relay-archive.
  • layerxctl read-state and layerxctl submit talk to a node over a Unix socket and print one JSON line.
  • layerx-verify checks a trust root, a receipt or an inclusion bundle against the signed genesis manifest.
  • layerx-archive-codec exports and verifies data-availability log batches, and checks a genesis manifest and snapshot.
  • layerx-genesis-build writes the genesis manifest, snapshot and registration request from a request and a signer key.
  • layerx-handover issues and verifies sequencer key handovers; layerx-module-registry prints the canonical module table.

Who it's for

Node operators and integrators who run, provision or audit a LayerX node from a shell or a script.

Why it matters

A receipt or inclusion proof can be checked offline against the signed genesis manifest, without trusting the node that produced it. Failures are separated by exit code, 2 for a bad invocation and 1 for a refusal, and a refusal prints the verification stage that failed, so a bad input points at the step to fix rather than a generic error.

Differentiators

layerx-verify names the failing verification stage instead of returning one opaque error, takes the signed genesis manifest as its trust root, and accepts - in place of a file path to read one input from standard input per invocation.

Outcomes

  • Verify a receipt or inclusion bundle offline against the signed genesis manifest
  • Read node state and submit activities over a Unix socket, one JSON line
  • Read the exit code to tell a bad invocation from a refusal

Technical notes

  • The C binaries link -lcrypto -lsqlite3 -pthread -ldl -lm; layerxctl needs Rust 1.91.1 and denies unsafe_code.
  • The invocation surfaces are rough. No binary defines --version, only layerxctl accepts --help, the others print a usage line on a malformed invocation, and layerx-genesis prints no usage text at all. Its built binary is also named layerx-genesis-build.
  • layerx-handover --issue takes 13 required positional arguments in a fixed order. layerx-guarantor takes no flags and is configured entirely by required environment variables, shelling out to Python (eth-account, eth-abi, cryptography).
  • layerxd --relay-archive does not run C: it execlps python3 on /opt/layerx/relay_archive/runtime.py, overridable with LAYERX_RELAY_ARCHIVE_RUNTIME.
  • Custody proof ships as a separate Go binary, layerx-custody-proof, built from daemon/, rather than as a subcommand.
  • Every binary has a Make target. test-layerxd, test-layerxctl, test-verify-cli and test-module-registry cover four of them; layerx-handover and layerx-archive-codec have no dedicated test target.
layerxd --check-config sequencer.conf
layerxd --serve sequencer.conf

layerxctl read-state --socket /run/layerx/node/layerxd.lni.sock \
  --network-id "$NETWORK_ID" --protocol-version 3 --actor "did:layerx:$PUBLIC_KEY"

layerx-verify trust-root --trust-root genesis/genesis.manifest
layerx-verify receipt --trust-root genesis/genesis.manifest --receipt receipt.bin

More in Developers

Build on Paxeer.

Give your agent a wallet, set its policy, and settle your first call on LayerX.