Canton with DLT domain integration

Hi team,

I am checking the sequence of transaction process in Canton with a DLT domain (Fabric and Besu, as I assume they are identical in this).

Assuming participant node P1 and P2, both connected to a sequencer + a DLT node, and in a transaction, a message is from P1 to P2 through the sequencer. When the message passes through the sequencer, two next steps happen
(1) The sequencer writes the message to the DLT node and wait for an event that the message is committed to the DLT.
(2) The sequencer passes the message to P2.

May I know if (1) and (2) happen simultaneously or (2) happens only when (1) is completed? My guess is the latter, i.e. they happen in sequence. If (1) fails, (2) doesn’t happen and the transaction will fail to commit in the Daml ledger.

Kindly confirm if it is the case. Thanks!

kc

Hi @kctam,

Your understanding is correct. The sequencer passes the message only to P2 ((2)), once the sequencer reads a block from the DLT/blockchain that contains the message ((1)). This applies to both Fabric and Besu

Note that for a transaction to successfully go through Canton, we need to sequence a message (i.e. send a message to the DLT client and then successfully read a block with the message) at least three times. See also the following graphic from the Canton whitepaper:

1 Like

Many thanks @Arne_Gebert !

cheers,
kc