package tezos-protocol-005-PsBabyM1
Tezos Protocol Implementation - Random number generation
This is not expected to be a good cryptographic random number generator. In particular this is supposed to be used in situations where the seed is a globaly known information.
The only expected property is: It should be difficult to find a seed such that the generated sequence is a given one.
Random Generation
val initialize_new :
seed ->
Tezos_protocol_environment_005_PsBabyM1.MBytes.t list ->
t
initialize_new state ident
returns a new generator
val take :
sequence ->
Tezos_protocol_environment_005_PsBabyM1.MBytes.t * sequence
Generates the next random value in the sequence
Generates the next random value as a bounded int32
Predefined seeds
val empty : seed
val initial_seeds : int -> seed list
intial_seeds n
generates the first n
seeds for which there are no nonces. The first seed is a constant value. The kth seed is the hash of seed (k-1) concatenated with a constant.
Entropy
val make_nonce :
Tezos_protocol_environment_005_PsBabyM1.MBytes.t ->
nonce Tezos_protocol_environment_005_PsBabyM1.Error_monad.tzresult
Use a byte sequence as a nonce
val hash : nonce -> Nonce_hash.t
Compute the has of a nonce
val check_hash : nonce -> Nonce_hash.t -> bool
check_hash nonce hash
is true if the nonce correspond to the hash
val nonce_hash_key_part : Nonce_hash.t -> string list -> string list
For using nonce hashes as keys in the hierarchical database
Predefined nonce
val initial_nonce_0 : nonce
val initial_nonce_hash_0 : Nonce_hash.t
Serializers
val nonce_encoding :
nonce Tezos_protocol_environment_005_PsBabyM1.Data_encoding.t
val seed_encoding :
seed Tezos_protocol_environment_005_PsBabyM1.Data_encoding.t