zeekayandHanzo Dev 3dca6e6a74 zap: carry a validator-state server address to plugins
A plugin-hosted VM rebuilds its Runtime from the initialize request, and an
interface over live node-owned state cannot be copied through a struct literal.
SharedMemory already had this problem and was solved by binding a ZAP server
node-side and naming its address here. Validator state has the identical shape
and was simply never plumbed, so every plugin VM saw a nil handle.

For most VMs that is invisible. For M-Chain it is fatal: its entire job is a
threshold ceremony among the validator set, so with no way to learn who the
validators are it reports "no validator committee available" and can never
generate a custody key, on any network, at any configuration.

Appended after the existing trailing fields, never inserted, so both skew
directions read the capability as ABSENT rather than as present-with-garbage. A
plugin that believed it had validator state but dialed nothing would form a
committee of nobody, and a quorum of nobody signs anything. The mutation that
inserts the field instead of appending it fails the skew test.

Co-authored-by: Hanzo Dev <[email protected]>
2026-08-20 18:18:31 -07:00
2026-01-16 11:52:14 -08:00
2026-01-16 11:52:14 -08:00
2026-02-14 05:26:18 -08:00
2026-07-26 10:01:48 -07:00
2026-01-16 11:52:14 -08:00
S
Description
No description provided
BSD-3-Clause
383 KiB
Languages
Go 79.5%
Cap'n Proto 12.8%
ZAP 7.7%