How minted blocks get propagated into the cardano network


I am trying to setup a stake pool, and I would really appreciate if anyone can explain how blocks are propagated throughout the cardano network.

I’ve heard that blocks are propagated in a “pull” manner. Correct me please if I have a wrong understanding.

If it is indeed using a pull-based propagation. This leads me to believe that my block producing node creates a block, and my relay nodes pull the latest block from the BP node.

Does this mean that other relay nodes must specify my relay node addresses in their topology file for my minted blocks to be pulled into their relay nodes?

Or, is it sufficient for my relay nodes to include other people’s relay nodes in my topology configuration?

Thanks for reading guys.

The BP will propagate the block so it needs to have connectivity with the public network via relays:

  • the BP should be connected only to your relays (security reason)
  • the relays should be connected to your BP and also to the other nodes (public network)

Yes, that is the case and at the same time the reason for use of the topologyupdater script.

1 Like

Hi @Triton-pool ,

Thanks for the kind reply.

I heard all cardano node-to-node communications are pull-based protocols.
Transaction propagation seems to be similar to block propagation.

Would you know how Daedalus propagates a client’s signed transaction to propagate through the network?
Even though Daedalus runs a full node locally, there seem to be no way for other public relay nodes to connect to my local node and pull in my signed transaction since my local node is behind a private subnet.

Does Daedalus submit a web API request or somesort to another public relay node similar to Yoroi?

I do not know anything about the Daedalus I am affraid.

@ahjumma Were you able to figure this out? I am also trying to understand if all cardano full-nodes maintain a list of updates nodes that they will be pulling transactions from. This would mean if all the nodes in the ecosystem do not have my node in their list, or my node comes later in their priority, transactions in my node can starve.
Alternatively, each node can instead push their transactions as they get in their mempools to other nodes, but that doesn’t sound optimal.

I would really like to understand this too.

The protocol that nodes (including Daedalus) use to update their mempools may be separate to the half-duplex pull mechanism for blocks???

Is the “gossip” protocol used to update mempools too?

In this blog article: Optimizing Cardano - IOHK Blog
Part way through the article Tim Harrison said:

“The mempool allows for a fair adoption of new transactions that enter it randomly based on the producing node that is chosen by the lottery algorithm.”

I don’t know what that means for an ordinary node when only the block producers with stake and keys are involved in the block production “lottery algorithm”. Is there another “lottery algorithm” for communicating mempool data?

In this older blog from April 2021: Boosting network decentralization with P2P - IOHK Blog
There is this quote about P2P:

“The IOHK networking team is in the final stages of quality testing the P2P governor integration with the node. After this, the team will extend the network stack with more protocols – gossip, in particular, which will provide seamless data exchange between peers and help construct a decentralized communication map.”