package tezos-dal-node-lib
Install
Dune Dependency
Authors
Maintainers
Sources
sha256=aa2f5bc99cc4ca2217c52a1af2a2cdfd3b383208cb859ca2e79ca0903396ca1d
sha512=d68bb3eb615e3dcccc845fddfc9901c95b3c6dc8e105e39522ce97637b1308a7fa7aa1d271351d5933febd7476b2819e1694f31198f1f0919681f1f9cc97cb3a
doc/tezos-dal-node-lib.gossipsub/Tezos_dal_node_lib_gossipsub/Gs_interface/index.html
Module Tezos_dal_node_lib_gossipsub.Gs_interface
Source
This module defines the relevant data structures to instantiate the gossipsub worker.
A topic is defined by a public key hash of an attestor and a slot index.
- A slot producer tracks the topic associated to a given slot index for all the public key-hashes;
- The attestor tracks its own public key hash for all the slot indices;
- A slot consumer tracks topics associated to a given slot index and enough public key-hashes so that the number of covered shards is enough to recover the slot data.
type message_id = {
commitment : Tezos_crypto_dal.Cryptobox.Commitment.t;
level : int32;
slot_index : int;
shard_index : int;
pkh : Tezos_crypto.Signature.Public_key_hash.t;
}
A message id uniquely identifies a share whose commitment is included in an L1 block. It is defined by a tuple containing the commitment, the level at which the commitment is successfully included in an L1 block, the corresponding slot index, the shard index, as well as the public key hash pkh
of the delegate expected to attest it.
Note that pkh
is used to be able to directly infer a topic from a message id. It could be retrieved from L1 using the level. But, we decide to provide it directly in this first version.
A message is a portion of an encoded slot's data. It's basically a shard without the corresponding index. The proof that the corresponding shard belong to the commitment (part of the message id) is also part of the message.
From the Gossipsub point of view, a peer is given by a cryptographic node identity P2p_peer.Id.t
. It's up to the caller to associate the P2p_peer.Id.t
to a P2p_point.Id.t
if needed (to e.g. implement peers exchange, which needs addresses and ports instead of cryptographic identities).
Encodings for various types above.
module Worker_config :
Tezos_gossipsub.Gossipsub_intf.WORKER_CONFIGURATION
with type GS.Topic.t = topic
and type GS.Message_id.t = message_id
and type GS.Message.t = message
and type GS.Peer.t = peer
and module GS.Span = Span
and module Monad = Monad
module Worker_instance :
Tezos_gossipsub.Gossipsub_intf.WORKER
with type GS.Topic.t = topic
and type GS.Message_id.t = message_id
and type GS.Message.t = message
and type GS.Peer.t = peer
and module GS.Span = Span
and module Monad = Monad