package tezos-protocol-alpha
Install
Dune Dependency
Authors
Maintainers
Sources
sha256=55ea1fb8bb3273a7fc270ca8f650d45c56449665619482aad9bc12f3ea736b7e
sha512=fec850fc2d17d7490bbabd5147d62aad13b3aaed8774270f8a38ab419670ed03e0fd30cf8642a97984eca5c2446726fe590ad99c015f7ec50919dc7652f25053
doc/tezos_raw_protocol_alpha/Tezos_raw_protocol_alpha/Script_cache/index.html
Module Tezos_raw_protocol_alpha.Script_cache
Source
This module manages the cache for smart contracts.
This cache must be consistent with the on-disk representation of the smart contracts. In particular, update
must be called each time a contract storage is updated.
Each cached script has a unique identifier in the cache.
The cache holds the unparsed and the internal representation of the contract.
val find :
Alpha_context.context ->
Contract_hash.t ->
(Alpha_context.context * identifier * cached_contract option)
Tezos_protocol_environment_alpha.Error_monad.tzresult
Tezos_protocol_environment_alpha.Lwt.t
find ctxt contract
returns (ctxt', identifier, script)
where:
ctxt'
isctxt
with less gas;identifier
is the identifier identifying thecontract
in the cache;script = None
if there is no such contract inctxt
;script = Some (unparsed_script, ir_script)
whereunparsed_script
is the contract code and storage;script_ir
is a typed internal representation of the contract, i.e., the abstract syntax tree of its code as well as its storage.
This function consumes gas depending on the cache. If the contract is not in the cache, then the function also consumes the gas of Contract.get_script
and Script_ir_translator.parse_script
.
val update :
Alpha_context.context ->
identifier ->
cached_contract ->
int ->
Alpha_context.context Tezos_protocol_environment_alpha.Error_monad.tzresult
update ctxt identifier unparsed_script ir_script size
refreshes the cached contract identified by identifier
with a new unparsed_script
, a new ir_script
, and a new size.
val entries :
Alpha_context.context ->
(Contract_hash.t * int) list
Tezos_protocol_environment_alpha.Error_monad.tzresult
entries ctxt
returns the contracts in the cache as well as their respective size. The list is sorted by date of last modification: the least recently updated entry comes first.
contract_rank ctxt contract
returns the number of contracts older than contract
in the cache of ctxt
. This function returns None
if contract
does not exist in the cache of ctxt
.
size ctxt
is an overapproximation of the cache size in memory (in bytes).
size_limit ctxt
is the maximal size of the cache (in bytes).
val insert :
Alpha_context.context ->
Contract_hash.t ->
cached_contract ->
int ->
Alpha_context.context Tezos_protocol_environment_alpha.Error_monad.tzresult
insert
is a variant of update
which identifies the contract to update by its address (of type Contract_hash.t
) instead of its cache identifier.