mirror of
https://github.com/luxfi/api.git
synced 2026-09-24 00:24:53 +00:00
3dca6e6a744f7c42620b15a8f3e9599e2b42b575
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]>
Languages
Go
79.5%
Cap'n Proto
12.8%
ZAP
7.7%