I recently have studied the Stellar Consensus Protocol (SCP) based on the internet draft here: https://datatracker.ietf.org/doc/draft-mazieres-dinrg-scp/.
I have several questions as follows.
In the last paragraph of Section 3.6, a node leaves the PREPARE phase and proceeds to the COMMIT phase when there is some ballot "b" for which the node confirms "prepare(b)" and accepts "commit b". However, SCPPrepare message does not (conceptually) convey "accept commit b", while it is conveyed in SCPCommit message, as far as I understand. Is this correct? It seems a bit odd because the PREPARE phase ends with the aid of SCPCommit message.
Regarding the conceptually iterated federated voting over the nomination, ballot, and externalize phases. Please check the following (where x = value and b = ballot), and let me know if I have any misunderstandings.
input "x"
--------------------------- the NOMINATION phase starts
vote "x"
accept "x"
confirm "x"
--------------------------- the PREPARE phase starts
vote "prepare(b)"
accept "prepare(b)"
confirm "prepare(b)"
vote "commit(b)"
accept "commit(b)"
--------------------------- the COMMIT phase starts
confirm "commit(b)"
--------------------------- the EXTERNALIZE phase starts
output "b.value"
- I cannot fully understand why we need to keep track of the preparedPrime (i.e.,
p'
) in the SCPPrepare message. Could you briefly describe an example which motivates the use ofp'
?
Thanks very much for your time and help!