Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

✍🏿 Capitalize headers for clarity #4460

Merged
merged 1 commit into from
Sep 13, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions src/herder/readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,23 +7,23 @@ of the [SCPDriver class](../scp/SCPDriver.h), and so is most easily understood a
reading that class and understanding where and how a subclass would make the abstract
SCP protocol concrete.

# key implementation details
# Key Implementation Details

The Herder considers a ledger number to be a "slot" in the SCP
protocol, and transaction set hashes (along with close-time and base-fee) to be
the sort of "value" that it is attempting to agree on for each "slot".

Herder acts as the glue between SCP and LedgerManager.

## LedgerManager interaction
## `LedgerManager` Interaction
Herder serializes "slot externalize" events as much as possible so that
LedgerManager only sees strictly monotonic ledger closing events (and deal with
any potential gaps using catchup).

## SCP interaction
Herder has two main modes of operation.
## SCP Interaction
Herder has two main modes of operation:

### "Tracking" state
### "Tracking" State
Herder knows which slot got externalized last and only processes SCP messages
for the next slot.

Expand All @@ -36,11 +36,11 @@ Messages for the current slot may have been delayed by the network while
Herder places a timeout to make progress on the expected next slot, if it
reaches this timeout, it changes its state to "Not tracking".

#### Picking the initial position
#### Picking Initial Position
When a ledger is closed and LedgerManager is in sync, herder is responsible
for picking a starting position to send a PREPARING message.

### "Not Tracking" state
### "Not Tracking" State
Herder does not know which slot got externalized last, its goal is to go back
to the tracking state.
In order to do this, it starts processing all SCP messages starting with the
Expand Down
Loading