Description
The RPCChainVM allows AvalancheGo to run a VM over gRPC rather than being registered within the AvalancheGo binary.
There are a few features or expectations that the RPCChainVM does not maintain that should either be fixed or explicitly documented for VM developers.
Discrepancies
Snow Ctx Lock
The snow context lock is held by the consensus engine while processing any message except for explicitly async App-specific messages. However, this lock is not transmitted over gRPC.
You can see the *snow.Context
type created and passed in to the VM server is not populated, which provides a fresh default value for the lock that is unrelated to the lock held by the consensus engine:
avalanchego/vms/rpcchainvm/vm_server.go
Line 265 in 8172d8b
Snow Log
The log passed in to the VM is always configured at the info level:
avalanchego/vms/rpcchainvm/vm_server.go
Line 190 in 8172d8b
Ideally, this would inherit the log level from AvalancheGo by default. Alternatively, we should make it explicit that it's disconnected from AvalancheGo and the VM must configure the log level itself.
Activity