Expand description
Full-response RPC aggregation and server emission (U29–U32).
Reference: original uBFT 504eba0835e02af6d384afec6c6c7073530fc11f, rpc/client.hpp:151–176,377–403 and rpc/server.hpp:152–174. The original counts messages without retaining sender identity, stores them in an unchecked five-element array, throws on X,Y,Y, and suppresses ID3. Here each bounded live request retains one immutable vote per configured authenticated sender. Equal lengths and every declared payload byte must match; bytes beyond length are ignored on input and zeroed on output.
TRUST BOUNDARY: Reply.sender must be stamped by an authenticated transport
adapter, never copied from an untrusted packet field. ServerIn.executed
must come from identity-preserving application execution, not admission or
proposal acceptance. Neither composition is supplied by this module.
Configuration is accepted once. Reset retires this instance permanently;
creating a fresh state requires an externally established session/drain
fence. Request IDs start at configured first_request (including zero),
are allocated consecutively, and never wrap. Retirement is in request
order even if later requests finish first. This is bounded storage, not a
fixed-size wire protocol: P is configurable and lengths may exceed 64 bytes.
Allocation must precede its first reply by at least one edge: a same-edge
reply for a newly allocated ID is discarded against the registered live set.
The server adapter does not establish exactly-once execution; request IDs
arrive from the trusted identity-preserving execution boundary.
Structs§
- Collector
In - Collector inputs.
- Collector
Out - Collector outputs.
- Collector
State - Collector registers; W is 1..=8 and N is odd, 1..=15.
- Config
- Frozen client/session and external server-ID map (N odd, 1..=15).
- Entry
- Per-request bounded collector entry.
- Open
- Allocation of one outstanding request, before replies can count.
- Reply
- A response with the namespace and authenticated transport source attached.
- Server
In - Execution-to-transport reply adapter configuration.
- Server
Out - Server adapter outputs.
- Server
State - Server adapter registers.
- Vote
- One distinct server’s first accepted reply.
Functions§
- collect
- One-cycle collector transition; no latency model or cryptographic oracle.
- empty_
entry - Empty collector entry.
- empty_
reply - Empty response, usable inside RHDL kernels.
- serve
- Every configured replica, including external ID3, emits executed replies.