Module Mavryk_raw_protocol_001_PtAtLas.Services_registration

Functions for RPC service registration, using Updater.rpc_context and RPC_service.t from the Protocol Environment.

This module is a frontend to a mutable service directory. The various register functions update the directory as a side-effect.

The get_rpc_services function returns the resulting RPC_context. It is parameterized by Updater.rpc_context which acts as the service prefix (in practice meaning this type will be passed to each handler). Hence, Protocol RPC services provide a read-only view of the Ledger state.

rpc_init rpc_context mode allows to instantiate an rpc_context using the Alpha_context representation from a raw context representation (the one the shell knows).

If mode = `Head_level, the Alpha_context uses the same level as the head of the chain (given by rpc_context.block_header).

If mode= `Successor_level, the Alpha_context uses the successor level of the head.

This function aims to be used by RPCs, in particular by RPCs which simulate an operation to determine the fees/gas of an operation. Using the `Head_level can be dangerous if some storage paths depend on the level. Using the successor level allows to ensure that the simulation is done on a fresh level.