docs/poa/flows.md
When the node is configured with a POA key, produce blocks and notify network.
sequenceDiagram
participant POA as PoA Service
participant BP as Block Producer
participant R as Relayer
participant TX as Transaction Pool
participant BI as Block Importer
participant E as Executor
participant D as Database
participant P2P as P2P
POA->>BP: produce block
BP->>TX: select_txs
TX-->>BP:
BP->>R: get_da_height
R-->>BP:
BP->>E: produce and obtain final headers
E-->>BP:
BP-->>POA: Malleated block
POA->>R: get_poa_key
R-->>POA:
POA->>POA: sign block
POA->>BI: commit_sealed_block
note right of BI: verify block height & da height
note right of BI: store block state
BI->>+D: insert_consensus_data
D-->>BI:
BI->>+TX: drop_committed_txs
TX-->>-BI:
BI->>P2P: broadcast_new_signed_block_header
When a node is behind peers, download the block data and catch up.
sequenceDiagram
participant S as Synchronizer
participant P2P as P2P
participant POA as PoA Service
participant BI as Block Importer
participant R as Relayer
participant E as Executor
participant D as Database
participant TX as Transaction Pool
S->>+P2P: get_peer_heights
P2P-->>-S:
alt is not behind peers
S-->>S: sleep
end
S->>+P2P: get_missing_blocks
P2P-->>-S:
S->>+POA: verify block signatures
POA->>+R: await_synced + get_da_height
R-->>-POA:
POA-->>-S:
S->>+BI: commit
BI->>+R: check_da_height
R-->>-BI:
BI->>+E: validate_and_store
E->>+D: save diff
D-->>-E:
E-->>-BI:
BI->>+D: insert_consensus_data
D-->>BI:
BI->>+TX: drop_committed_txs
TX-->>-BI:
BI-->>-S:
When a full-node is synced to the network, the synchronizer module can switch to using gossip to capture newly finalized blocks.
sequenceDiagram
participant S as Synchronizer
participant POA as PoA Service
participant P2P as P2P
participant BI as Block Importer
participant R as Relayer
participant E as Executor
participant D as Database
participant TX as Transaction Pool
S->>P2P: subscribe to signed & finalized block header broadcasts
P2P-->>S: new block event
opt new block height != current height + 1
note right of S: drop gossiped block
end
S->>+POA: verify signed block header
POA->>+R: await new block da height
R-->>-POA:
note right of POA: verify signature against current authority key
POA->>-S:
S->>+BI: commit sealed block
BI->>+R: check_da_height for message inclusion
R-->>-BI:
BI->>+E: validate_and_store
E->>+D: save diff
D-->>-E:
E-->>-BI:
BI->>+D: insert_consensus_data
D-->>BI:
BI->>+TX: drop_committed_txs
TX-->>-BI:
BI-->>-S: