mirror of
https://github.com/fluencelabs/tendermint
synced 2025-05-28 05:31:20 +00:00
50 lines
1.2 KiB
Markdown
50 lines
1.2 KiB
Markdown
|
# Blockchain Reactor
|
||
|
|
||
|
The Blockchain Reactor's high level responsibility is to enable peers who are
|
||
|
far behind the current state of the consensus to quickly catch up by downloading
|
||
|
many blocks in parallel, verifying their commits, and executing them against the
|
||
|
ABCI application.
|
||
|
|
||
|
Tendermint full nodes run the Blockchain Reactor as a service to provide blocks
|
||
|
to new nodes. New nodes run the Blockchain Reactor in "fast_sync" mode,
|
||
|
where they actively make requests for more blocks until they sync up.
|
||
|
Once caught up, "fast_sync" mode is disabled and the node switches to
|
||
|
using the Consensus Reactor. , and turn on the Consensus Reactor.
|
||
|
|
||
|
## Message Types
|
||
|
|
||
|
```go
|
||
|
const (
|
||
|
msgTypeBlockRequest = byte(0x10)
|
||
|
msgTypeBlockResponse = byte(0x11)
|
||
|
msgTypeNoBlockResponse = byte(0x12)
|
||
|
msgTypeStatusResponse = byte(0x20)
|
||
|
msgTypeStatusRequest = byte(0x21)
|
||
|
)
|
||
|
```
|
||
|
|
||
|
```go
|
||
|
type bcBlockRequestMessage struct {
|
||
|
Height int64
|
||
|
}
|
||
|
|
||
|
type bcNoBlockResponseMessage struct {
|
||
|
Height int64
|
||
|
}
|
||
|
|
||
|
type bcBlockResponseMessage struct {
|
||
|
Block Block
|
||
|
}
|
||
|
|
||
|
type bcStatusRequestMessage struct {
|
||
|
Height int64
|
||
|
|
||
|
type bcStatusResponseMessage struct {
|
||
|
Height int64
|
||
|
}
|
||
|
```
|
||
|
|
||
|
## Protocol
|
||
|
|
||
|
TODO
|