In the Ripple network, the participant can choose its list of validators. This list is called the Unique Node List. When a transaction reaches these validators, they take the previously confirmed or the validated ledger version as the starting point. Then they apply new transactions in the canonical order and share their results.
Here's an example of a confirmed block. Validators would use this as a starting point:
|
Confirmed Block No |
5 |
| Transaction 1 |
Alice Sent Bob $5 |
| Transaction 2 |
Bob sent Peter $20 |
| State |
Alice has $20, Bob has $30 |
Here comes a new set of transactions to be validated:
|
Alice Sent Bob $5 |
24 Sep 2018 09:12:17 |
|
Bob sent Peter $20 |
24 Sep 2018 10:12:17 |
If these transactions are applied according to in the order of their timestamp, the resulting state would be as follows:
| State |
Alice has $15, Bob has $15 |
The validators should arrive at the preceding conclusion. If they don't agree, then they would modify their proposal to match the validators they trust. This would continue in multiple rounds until they reach consensus. If 80% of the validators reach an agreement, then the transactions are confirmed and permanently added to the ledger. Otherwise, the ledger would stop making progress.