Terminology and Data Flow of Pala
Chia-Hao Lo�camel@thundertoken.tw
Note
Local Epoch
More Definitions
More Definitions (cont.)
More Definitions (cont.)
Freshest Notarized Chain
(0,1)
(1,1)
P3
(1,2)
(1,3)
(1,4)
(2,1)
Freshest Notarized Chain (cont.)
(0,1)
(1,1)
P3
(1,2)
(1,3)
(1,4)
(2,1)
(3,1)
Freshest Notarized Chain (cont.)
(0,1)
(1,1)
V1
(1,2)
(1,3)
(1,4)
(2,1)
(3,1)
Freshest Notarized Chain (cont.)
(0,1)
(1,1)
V1
(1,2)
(1,3)
(1,4)
(2,1)
(3,1)
Freshest Notarized Chain (cont.)
(0,1)
(1,1)
V1
(1,2)
(1,3)
(1,4)
(2,1)
(3,1)
(3,2)
Discussion about Local Epoch
Strong Period of Synchrony Assumption
Strong Period of Synchrony Assumption (Practical Version)
How to Distribute Data?
Finalization
Store Notarizations in Blocks
(0,1)
(1,1)
(1,2)
(1,3)
(1,4)
Store Notarizations in Blocks (cont.)
NOTE: We can finalize (1,2) using notarizations in (5,1). We chose a simpler finalization definition for a cleaner implementation.
(0,1)
(1,1)
(1,2)
(1,3)
(1,4)
(5,1)
(5,2)
Store Notarizations in Blocks (cont.)
(0,1)
(1,1)
(1,2)
(1,3)
(1,4)
(5,1)
(5,2)
(5,3)
(5,4)
(5,5)
(5,6)
Proposer/Voter Reconfiguration
Proposer/Voter Reconfiguration
Proposer/Voter Reconfiguration (cont.)
Proposer/Voter Reconfiguration - Case 1
(5,4)
(5,5)
Proposer/Voter Reconfiguration - Case 1 (cont.)
(5,4)
(5,5)
(5,6)
(5,7)
(5,8)
Proposer/Voter Reconfiguration - Case 1 (cont.)
New Session
(5,3)
(5,4)
(5,5)
(5,6)
(5,7)
(6,1)
Proposer/Voter Reconfiguration - Case 2
(5,4)
(5,5)
(5,6)
Proposer/Voter Reconfiguration - Case 2 (cont.)
(5,4)
(5,5)
(6,1)
(6,2)
(6,3)
(6,4)
(6,5)
Discussion about Timeout Blocks
(5,4)
(6,1)
(7,1)
(8,1)
(9,1)
(9,2)
(9,3)
(9,4)
(9,5)
Finalized Chain Branch during Reconfiguration
New Session
(1,5,3)
(1,5,4)
(1,5,5)
(1,5,6)
(1,5,7)
(2,1,1)
(1,5,8)
Finalized Chain Branch during Reconfiguration (cont.)
Session 2’s view
(1,5,3)
(1,5,4)
(1,5,5)
(1,5,6)
(2,1,1)
(1,6,1)
(1,6,2)
(1,6,3)
(1,6,4)
(1,6,5)
Finalized Chain Branch during Reconfiguration (cont.)
Proofs of Epoch Advance
High-Level Data Flow
Terminology
P1
V1
V2
V3
P2
seq = (0,1)�e=1
seq = (0,1)�e=1
seq = (0,1)�e=1
seq = (0,1)�e=1
seq = (0,1)�e=1
No Partition
P1
V1
V2
V3
P2
seq = (0,1)�e=1
seq = (0,1)�e=1
seq = (0,1)�e=1
seq = (0,1)�e=1
seq = (0,1)�e=1
No Partition (cont.)
P1
V1
V2
V3
P2
seq = (0,1)�e=1
seq = (0,1)�e=1
seq = (0,1)�e=1
seq = (1,1)�e=1
seq = (0,1)�e=1
No Partition (cont.)
P1
V1
V2
V3
P2
seq = (1,1)�e=1
seq = (1,1)�e=1
seq = (1,1)�e=1
seq = (1,1)�e=1
seq = (1,1)�e=1
P1 is offline (Proposer Switch)
P1
V1
V2
V3
P2
seq = (1,1)�e=1
seq = (1,1)�e=1
seq = (1,1)�e=1
seq = (1,1)�e=1
seq = (1,1)�e=1
Voters Request to Advance Epoch
P1
V1
V2
V3
P2
seq = (1,1)�e=1
seq = (1,1)�e=1
seq = (1,1)�e=1
seq = (1,1)�e=1
seq = (1,1)�e=2
Voters Request to Advance Epoch (cont.)
P1
V1
V2
V3
P2
seq = (1,1)�e=2
seq = (1,1)�e=2
seq = (1,1)�e=2
seq = (1,1)�e=1
seq = (1,1)�e=2
Liveness is Back
P1
V1
V2
V3
P2
seq = (1,1)�e=2
seq = (1,1)�e=2
seq = (1,1)�e=2
seq = (1,1)�e=1
seq = (1,1)�e=2
Liveness is Back (cont.)
P1
V1
V2
V3
P2
seq = (2,1)�e=2
seq = (2,1)�e=2
seq = (2,1)�e=2
seq = (1,1)�e=1
seq = (2,1)�e=2
Network Partition
P1
V1
V2
V3
P2
seq = (2,1)�e=2
seq = (2,1)�e=2
seq = (2,1)�e=2
seq = (1,1)�e=1
seq = (2,1)�e=2
Network Partition
P1
V1
V2
V3
P2
seq = (2,1)�e=2
seq = (2,1)�e=2
seq = (2,1)�e=2
seq = (1,1)�e=1
seq = (2,1)�e=2
Network Partition (cont.)
P1
V1
V2
V3
P2
seq = (2,1)�e=2
seq = (2,1)�e=2
seq = (2,1)�e=2
seq = (1,1)�e=1
seq = (2,1)�e=2
Network Partition (cont.)
P1
V1
V2
V3
P2
seq = (2,1)�e=2
seq = (2,1)�e=2
seq = (2,1)�e=2
seq = (1,1)�e=1
seq = (2,1)�e=2
Network Partition (cont.)
P1
V1
V2
V3
P2
seq = (2,1)�e=2
seq = (2,1)�e=2
seq = (2,1)�e=2
seq = (2,1)�e=2
seq = (2,1)�e=2
Network Partition (cont.)
P1
V1
V2
V3
P2
seq = (2,1)�e=2
seq = (2,1)�e=2
seq = (2,1)�e=2
seq = (2,1)�e=2
seq = (2,1)�e=3
Network Partition (cont.)
P1
V1
V2
V3
P2
seq = (2,1)�e=3
seq = (2,1)�e=3
seq = (2,1)�e=2
seq = (2,1)�e=2
seq = (2,1)�e=3
Network Partition (cont.)
P1
V1
V2
V3
P2
seq = (3,1)�e=3
seq = (3,1)�e=3
seq = (2,1)�e=2
seq = (2,1)�e=2
seq = (3,1)�e=3
Network Partition (cont.)
P1
V1
V2
V3
P2
seq = (3,1)�e=3
seq = (3,1)�e=3
seq = (2,1)�e=2
seq = (2,1)�e=2
seq = (3,1)�e=3
Network Partition (cont.)
P1
V1
V2
V3
P2
seq = (3,1)�e=3
seq = (3,1)�e=3
seq = (2,1)�e=2
seq = (3,1)�e=3
seq = (3,1)�e=3
Network Partition (cont.)
P1
V1
V2
V3
P2
seq = (3,1)�e=3
seq = (3,1)�e=3
seq = (3,1)�e=3
seq = (3,1)�e=3
seq = (3,1)�e=3
Network Partition (cont.)
P1
V1
V2
V3
P2
seq = (3,2)�e=3
seq = (3,2)�e=3
seq = (3,1)�e=3
seq = (3,1)�e=3
seq = (3,2)�e=3
Network Partition (cont.)
P1
V1
V2
V3
P2
seq = (3,2)�e=3
seq = (3,2)�e=3
seq = (3,2)�e=3
seq = (3,2)�e=3
seq = (3,2)�e=3
Network Layer and�Strong Period of Synchrony
Network Layer Requirements for Strong Period of Synchrony�(Paper Version)
“Voters inform every proposer of every clock message they have heard“� +�“All proposers relay clock messages among all nodes”
P2
V1
V2
P1
V3
V4
P3
V5
V6
P4
P5
“Voters inform every proposer of every clock message they have heard“� +�“All proposers relay clock messages among all nodes” (cont.)
P2
V1
V2
P1
V3
V4
P3
V5
V6
P4
P5
Discussion: Do We Really Need to Propagate �Clock Messages?
Network Layer Requirements for Strong Period of Synchrony�(Idea of Implementation Version)
Network Layer Requirements for Strong Period of Synchrony�(Implementation Version)
Network Layer Requirements for Strong Period of Synchrony�(Implementation Version) (cont.)
Why Fetching Clock Message during Reconciliation?
P2
V1
V2
P1
V3
V4
P3
V5
V6
Why Fetching Clock Message during Reconciliation? (cont.)
P2
V1
V2
P1
V3
V4
P3
V5
V6
Why Fetching Clock Message during Reconciliation? (cont.)
P2
V1
V2
P1
V3
V4
P3
V5
V6
Why Fetching Clock Message during Reconciliation? (cont.)
P2
V1
V2
P1
V3
V4
P3
V5
V6
e=2
Why Fetching Clock Message during Reconciliation? (cont.)
P2
V1
V2
P1
V3
V4
P3
V5
V6
e=2
e=2
e=2
e=2
e=2
Why Fetching Clock Message during Reconciliation? (cont.)
P2
V1
V2
P1
V3
V4
P3
V5
V6
e=3
e=3
e=3
e=3
e=3
Side Note: Push or Pull Clock Message?
Network Layer Requirements for Strong Period of Synchrony�(Implementation Version)
Side Note: Heartbeat Message Overhead
Side Note: Avoid Bandwidth Bottleneck
Encrypted Connection and�Role Verification
Connection Flow
P1
V1
V2
V3
P2
Role Verification by Challenge-Response
Problem: Unprotected New Types of Data
Solution: Encrypted Connection
NOTE: We won’t be able to verify the public key during the TLS handshake because there is no trusted certificate
NOTE: The challenge will fail if the middle person changes the public key
How Person-in-the-Middle Attack is Prevented
Proposer
Voter
Middleperson
Kv
Kp
Encrypted Connection and Role Verification Flow
Perform reconciliation after the flow above is done
Voter
Proposer
TCP handshake ...
TLS handshake ...
Send Sign(Z) to authenticate �Proposer’s identity
Send Sign(Z) to authenticate �Voter’s identity