sequenceDiagram
autonumber
participant S as Synchronizer
participant BP as BlockProcess
participant C as ChainService
box crate:ckb_sync
participant S
participant BP
end
box crate:ckb_chain
participant C
end
Note left of S: synchronizer received
Block(122) from remote peer
Note over S: try_process SyncMessageUnionReader::SendBlock
S->>+BP: BlockProcess::execute(Block(122))
BP->>+C: process_block(Block(122))
Note over BP: waiting ChainService to return
the result of process_block(Block(123))
Note over C: insert_block(Block(122))
C->>-BP: return result of process_block(Block(122))
BP->>-S: return result of BlockProcess::execute(Block(122))
alt block is Valid
Note over S: going on
else block is Invalid
Note over S: punish the malicious peer
end
Note left of S: synchronizer received
Block(123) from remote peer
Note over S: try_process SyncMessageUnionReader::SendBlock
S->>+BP: BlockProcess::execute(Block(123))
BP->>+C: process_block(Block(123))
Note over BP: waiting ChainService to return
the result of process_block(Block(123))
Note over C: insert_block(Block(123))
C->>-BP: return result of process_block(Block(123))
BP->>-S: return result of BlockProcess::execute(Block(123))
alt block is Valid
Note over S: going on
else block is Invalid
Note over S: punish the malicious peer
end