What lives here
node/ is the operator process and cli/ is the command entry. The CLI binary is nuvex, with the commands node, request, registry, staking and network. network reads NUVEX_API_URL and refuses to invent status if it is unset.
nuvex-oracle-nodeHealth only
- /healthok
- /metricsexposed
- VRF keynot loaded
- fulfilmentsnot submitted
The node image is built from the protocol repository with docker build -f node/Dockerfile -t nuvex-oracle-node:local . Configuration comes from an environment file copied out of env/.
cp env/.env.local.example .env.localA first contribution
- Add a metric or a health field that an operator actually needs to see, and a test that asserts its shape.
- Harden configuration parsing so a missing variable fails loudly instead of defaulting.
- Check that no log line can print key bytes, seed phrases or a payload a user marked confidential.
- Improve the message a CLI command prints when it is waiting on a later milestone.
Checks that must pass
Every pull request to the protocol repository has to pass one command:
make checkThat runs formatting, Clippy, cargo build-sbf for the three programs and the test callback consumer, the Rust tests and the JavaScript SDK tests. Program tests load target/deploy/*.so, so the Solana CLI and the platform tools have to be installed.
- Config debug output redacts RPC URLs and key paths. A change that unredacts them will be rejected.
- The node does not open a key file yet. NUVEX_NODE_KEY_PATH is a path, and the process receives a path or a handle, never a printed key.
- Do not commit a .env file. The example files contain empty secrets.
Decisions that are closed
- The node process does not submit transactions in this milestone. Adding a submitter is a milestone, not a patch.
- ADR 0003: fulfilment is first-come among eligible nodes. There is no assignment service to write.
- Key management keeps node identity, operator authority, treasury and security-fund authorities, and the upgrade multisig on separate keys.
- Pause is a flag on ProtocolConfig and is not implemented yet.
On this page