Skip to content

consensus-study/HotStuff-study

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

2 Commits
ย 
ย 

Repository files navigation

๋ณธ ๊ธ€์€ 2019๋…„ PODC์— ๋ฐœํ‘œ๋œ "HotStuff: BFT Consensus with Linearity and Responsiveness" ๋…ผ๋ฌธ์„ ์‹ฌ์ธต ๋ถ„์„ํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. PBFT๋ฅผ ์ด๋ฏธ ์•Œ๊ณ  ์žˆ๋‹ค๋Š” ์ „์ œ ํ•˜์— ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.


๋“ค์–ด๊ฐ€๋ฉฐ

๋ถ„์‚ฐ ์‹œ์Šคํ…œ์„ ๊ณต๋ถ€ํ•˜๋‹ค ๋ณด๋ฉด ๋ฐ˜๋“œ์‹œ ๋งˆ์ฃผ์น˜๋Š” ๊ฒƒ์ด ๋น„์ž”ํ‹ด ์žฅ์•  ํ—ˆ์šฉ(BFT) ํ•ฉ์˜ ํ”„๋กœํ† ์ฝœ์ด๋‹ค. 1999๋…„ Castro์™€ Liskov๊ฐ€ ๋ฐœํ‘œํ•œ PBFT๋Š” 20๋…„์ด ๋„˜๋Š” ์‹œ๊ฐ„ ๋™์•ˆ BFT ํ•ฉ์˜์˜ ํ‘œ์ค€์œผ๋กœ ์ž๋ฆฌ์žก์•˜๋‹ค. ์‹ค์šฉ์ ์ด์—ˆ๊ณ , ์ฆ๋ช…์ด ํƒ„ํƒ„ํ–ˆ์œผ๋ฉฐ, ์‹ค์ œ๋กœ ๋™์ž‘ํ–ˆ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ๋ธ”๋ก์ฒด์ธ ์‹œ๋Œ€๊ฐ€ ์˜ค๋ฉด์„œ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒผ๋‹ค. PBFT๋Š” ๋…ธ๋“œ ์ˆ˜๊ฐ€ ๋Š˜์–ด๋‚ ์ˆ˜๋ก ํ†ต์‹ ๋Ÿ‰์ด ์ œ๊ณฑ์œผ๋กœ ์ฆ๊ฐ€ํ•œ๋‹ค. ๋…ธ๋“œ๊ฐ€ 100๊ฐœ๋งŒ ๋˜์–ด๋„ ํ•œ ๋ฒˆ์˜ ํ•ฉ์˜์— ์ˆ˜๋งŒ ๊ฐœ์˜ ๋ฉ”์‹œ์ง€๊ฐ€ ์˜ค๊ฐ„๋‹ค. ๋” ํฐ ๋ฌธ์ œ๋Š” ๋ฆฌ๋”๊ฐ€ ์žฅ์• ๋ฅผ ์ผ์œผํ‚ฌ ๋•Œ๋‹ค. View-Change ๊ณผ์ •์—์„œ ํ†ต์‹ ๋Ÿ‰์ด ํญ๋ฐœ์ ์œผ๋กœ ์ฆ๊ฐ€ํ•˜์—ฌ, ์ตœ์•…์˜ ๊ฒฝ์šฐ O(n^3)์— ๋‹ฌํ•œ๋‹ค.

HotStuff๋Š” ์ด ๋ฌธ์ œ๋ฅผ ์ •๋ฉด์œผ๋กœ ํ•ด๊ฒฐํ•œ๋‹ค. ์ €์ž๋“ค์€ ๋…ผ๋ฌธ์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ฃผ์žฅํ•œ๋‹ค:

"HotStuff๋Š” ๋ถ€๋ถ„ ๋™๊ธฐ ๋ชจ๋ธ์—์„œ ์„ ํ˜• ํ†ต์‹  ๋ณต์žก๋„์™€ ๋‚™๊ด€์  ์‘๋‹ต์„ฑ์„ ๋™์‹œ์— ๋‹ฌ์„ฑํ•˜๋Š” ์ตœ์ดˆ์˜ BFT ํ”„๋กœํ† ์ฝœ์ด๋‹ค."

๊ณผ์—ฐ ์–ด๋–ป๊ฒŒ ์ด๊ฒƒ์ด ๊ฐ€๋Šฅํ•œ์ง€, ๋…ผ๋ฌธ์„ ํ•˜๋‚˜ํ•˜๋‚˜ ๋œฏ์–ด๋ณด์ž.


1. ๋ฌธ์ œ ์ •์˜: PBFT๋Š” ์™œ ๋А๋ฆฐ๊ฐ€

1.1 PBFT์˜ ํ†ต์‹  ๊ตฌ์กฐ

PBFT์˜ ์ •์ƒ ๋™์ž‘์„ ๋– ์˜ฌ๋ ค๋ณด์ž. ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์ด ๋“ค์–ด์˜ค๋ฉด:

  1. Primary๊ฐ€ PRE-PREPARE๋ฅผ ๋ชจ๋“  Replica์—๊ฒŒ ์ „์†ก (n-1๊ฐœ)
  2. ๋ชจ๋“  ๋…ธ๋“œ๊ฐ€ PREPARE๋ฅผ ๋ชจ๋“  ๋‹ค๋ฅธ ๋…ธ๋“œ์—๊ฒŒ ์ „์†ก (n(n-1)๊ฐœ)
  3. ๋ชจ๋“  ๋…ธ๋“œ๊ฐ€ COMMIT์„ ๋ชจ๋“  ๋‹ค๋ฅธ ๋…ธ๋“œ์—๊ฒŒ ์ „์†ก (n(n-1)๊ฐœ)

์—ฌ๊ธฐ์„œ 2๋ฒˆ๊ณผ 3๋ฒˆ์ด ๋ฌธ์ œ๋‹ค. All-to-All ํ†ต์‹ ์ด ๋‘ ๋ฒˆ ๋ฐœ์ƒํ•œ๋‹ค. ๋…ธ๋“œ๊ฐ€ 4๊ฐœ์ผ ๋•Œ๋Š” 12+12=24๊ฐœ๋กœ ๊ฐ๋‹นํ•  ๋งŒํ•˜์ง€๋งŒ, 100๊ฐœ๊ฐ€ ๋˜๋ฉด 9,900+9,900=19,800๊ฐœ์˜ ๋ฉ”์‹œ์ง€๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

1.2 View-Change์˜ ์žฌ์•™

์ •์ƒ ๋™์ž‘๋„ ๋ฌธ์ œ์ง€๋งŒ, ์ง„์งœ ์žฌ์•™์€ View-Change์—์„œ ์ผ์–ด๋‚œ๋‹ค. PBFT์—์„œ ๋ฆฌ๋”๊ฐ€ ์žฅ์• ๋ฅผ ์ผ์œผํ‚ค๋ฉด:

  1. ๊ฐ Replica๊ฐ€ ์ž์‹ ์˜ ์ƒํƒœ๋ฅผ ๋‹ด์€ VIEW-CHANGE ๋ฉ”์‹œ์ง€๋ฅผ ์ƒˆ Primary์—๊ฒŒ ์ „์†ก
  2. ์ƒˆ Primary๊ฐ€ ์ˆ˜์ง‘ํ•œ VIEW-CHANGE๋“ค์„ ๋ชจ์•„ NEW-VIEW๋ฅผ ๋ชจ๋“  ๋…ธ๋“œ์—๊ฒŒ ์ „์†ก

๋ฌธ์ œ๋Š” VIEW-CHANGE ๋ฉ”์‹œ์ง€์˜ ํฌ๊ธฐ๋‹ค. ์ด ๋ฉ”์‹œ์ง€์—๋Š” ํ•ด๋‹น Replica๊ฐ€ prepared ์ƒํƒœ์ธ ๋ชจ๋“  ์š”์ฒญ์— ๋Œ€ํ•œ ์ฆ๋ช…์ด ํฌํ•จ๋˜์–ด์•ผ ํ•œ๋‹ค. ๊ฐ ์ฆ๋ช…์€ 2f+1๊ฐœ์˜ ์„œ๋ช…์„ ํฌํ•จํ•˜๋ฏ€๋กœ O(n) ํฌ๊ธฐ๋‹ค. ์ด๋Ÿฐ ๋ฉ”์‹œ์ง€๋ฅผ n๊ฐœ ๋ชจ์•„์„œ ๋‹ค์‹œ n๊ฐœ ๋…ธ๋“œ์—๊ฒŒ ๋ณด๋‚ด๋ฉด? O(n^2) ํ†ต์‹ ๋Ÿ‰์ด๋‹ค.

์—ฐ์†์œผ๋กœ f๊ฐœ์˜ ๋ฆฌ๋”๊ฐ€ ์žฅ์• ๋ฅผ ์ผ์œผํ‚ค๋ฉด O(n^3)๊นŒ์ง€ ์น˜์†Ÿ๋Š”๋‹ค. ๋…ธ๋“œ 100๊ฐœ, ์—ฐ์† ์žฅ์•  33๋ฒˆ์ด๋ฉด ์•ฝ 1์–ต ๊ฐœ์˜ ๋ฉ”์‹œ์ง€๋‹ค. ํ˜„์‹ค์ ์œผ๋กœ ์‹œ์Šคํ…œ์ด ๋ฉˆ์ถ˜๋‹ค.

1.3 ์™œ ์ด๋ ‡๊ฒŒ ์„ค๊ณ„๋˜์—ˆ๋‚˜

PBFT๊ฐ€ ์ด๋ ‡๊ฒŒ ์„ค๊ณ„๋œ ๋ฐ๋Š” ์ด์œ ๊ฐ€ ์žˆ๋‹ค. ์ƒˆ Primary๊ฐ€ "์•ˆ์ „ํ•œ ๊ฐ’"์„ ์ œ์•ˆํ•˜๋ ค๋ฉด, ์ด์ „ view์—์„œ ๋ฌด์—‡์ด committed ๋˜๋Š” prepared ๋˜์—ˆ๋Š”์ง€ ์•Œ์•„์•ผ ํ•œ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด 2f+1๊ฐœ ๋…ธ๋“œ์˜ ์ƒํƒœ๋ฅผ ๋ชจ๋‘ ํ™•์ธํ•ด์•ผ ํ•˜๊ณ , ๋‹ค๋ฅธ ๋…ธ๋“œ๋“ค๋„ ์ด๋ฅผ ๊ฒ€์ฆํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค. ๊ทธ๋ž˜์„œ ์ „์ฒด ์ƒํƒœ๋ฅผ ๋‹ด์€ ํฐ ๋ฉ”์‹œ์ง€๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” ๊ฒƒ์ด๋‹ค.

HotStuff์˜ ํ•ต์‹ฌ ํ†ต์ฐฐ์€ ์—ฌ๊ธฐ์„œ ์ถœ๋ฐœํ•œ๋‹ค: ์ƒํƒœ ์ „์ฒด๋ฅผ ๋ณด๋‚ด์ง€ ์•Š๊ณ ๋„ ์•ˆ์ „์„ฑ์„ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์„๊นŒ?


2. HotStuff์˜ ํ•ต์‹ฌ ์•„์ด๋””์–ด

2.1 Quorum Certificate (QC)

HotStuff์˜ ์ฒซ ๋ฒˆ์งธ ํ˜์‹ ์€ QC(Quorum Certificate)๋‹ค. PBFT์—์„œ "2f+1๊ฐœ์˜ ๋™์˜"๋ฅผ ์ฆ๋ช…ํ•˜๋ ค๋ฉด 2f+1๊ฐœ์˜ ๊ฐœ๋ณ„ ์„œ๋ช…์„ ๋ชจ๋‘ ํฌํ•จํ•ด์•ผ ํ–ˆ๋‹ค. ๋ฉ”์‹œ์ง€ ํฌ๊ธฐ๊ฐ€ O(n)์ด ๋  ์ˆ˜๋ฐ–์— ์—†๋‹ค.

HotStuff๋Š” Threshold Signature๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. 2f+1๊ฐœ์˜ ๋ถ€๋ถ„ ์„œ๋ช…(partial signature)์„ ํ•˜๋‚˜์˜ ์ง‘๊ณ„ ์„œ๋ช…์œผ๋กœ ํ•ฉ์น  ์ˆ˜ ์žˆ๋‹ค. ๊ฒฐ๊ณผ๋ฌผ์ธ QC์˜ ํฌ๊ธฐ๋Š” O(1)์ด๋‹ค. ์„œ๋ช…์ด 100๊ฐœ๋“  1000๊ฐœ๋“ , ์ตœ์ข… QC ํฌ๊ธฐ๋Š” ๋™์ผํ•˜๋‹ค.

์ด๊ฒƒ๋งŒ์œผ๋กœ๋„ ํฐ ๋ณ€ํ™”๋‹ค. View-Change ์‹œ ๊ฐ ๋…ธ๋“œ๊ฐ€ ๋ณด๋‚ด๋Š” ๋ฉ”์‹œ์ง€์— ์ž์‹ ์˜ ์ตœ๊ณ  QC๋งŒ ํฌํ•จํ•˜๋ฉด ๋œ๋‹ค. ๋ฉ”์‹œ์ง€ ํฌ๊ธฐ๊ฐ€ O(n)์—์„œ O(1)๋กœ ์ค„์–ด๋“ ๋‹ค.

2.2 Star Topology

๋‘ ๋ฒˆ์งธ ํ˜์‹ ์€ ํ†ต์‹  ํŒจํ„ด์˜ ๋ณ€๊ฒฝ์ด๋‹ค. PBFT๋Š” All-to-All ํ†ต์‹ ์„ ์‚ฌ์šฉํ•œ๋‹ค. ๋ชจ๋“  ๋…ธ๋“œ๊ฐ€ PREPARE์™€ COMMIT์„ ์„œ๋กœ์—๊ฒŒ ๋ณด๋‚ธ๋‹ค. ์ด๊ฒƒ์ด O(n^2)์˜ ๊ทผ๋ณธ ์›์ธ์ด๋‹ค.

HotStuff๋Š” Star Topology๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ๋ชจ๋“  ํ†ต์‹ ์ด ๋ฆฌ๋”๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ์ด๋ฃจ์–ด์ง„๋‹ค:

  • ๋ฆฌ๋” -> ๋ชจ๋“  Replica: ์ œ์•ˆ ์ „์†ก (n-1๊ฐœ)
  • ๋ชจ๋“  Replica -> ๋ฆฌ๋”: ํˆฌํ‘œ ์ „์†ก (n-1๊ฐœ)

Replica ๊ฐ„์˜ ์ง์ ‘ ํ†ต์‹ ์ด ์—†๋‹ค. ํ•œ ๋ผ์šด๋“œ์— 2(n-1)๊ฐœ์˜ ๋ฉ”์‹œ์ง€๋งŒ ํ•„์š”ํ•˜๋‹ค. O(n^2)๊ฐ€ O(n)์ด ๋˜์—ˆ๋‹ค.

2.3 Three-Chain Commit Rule

๊ทธ๋Ÿฐ๋ฐ ์—ฌ๊ธฐ์„œ ์˜๋ฌธ์ด ์ƒ๊ธด๋‹ค. PBFT์—์„œ All-to-All ํ†ต์‹ ์„ ํ•œ ์ด์œ ๊ฐ€ ์žˆ๋‹ค. ๋ชจ๋“  ๋…ธ๋“œ๊ฐ€ "2f+1๊ฐœ๊ฐ€ ๋™์˜ํ–ˆ๋‹ค"๋Š” ์‚ฌ์‹ค์„ ์ง์ ‘ ํ™•์ธํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. Star Topology์—์„œ๋Š” ๋ฆฌ๋”๋งŒ ์ด ์ •๋ณด๋ฅผ ์•ˆ๋‹ค. ๋‹ค๋ฅธ ๋…ธ๋“œ๋“ค์€ ์–ด๋–ป๊ฒŒ ํ™•์ธํ•˜๋Š”๊ฐ€?

HotStuff์˜ ๋‹ต์€ "์ถ”๊ฐ€ phase"๋‹ค. PBFT๊ฐ€ 2 phase(PREPARE, COMMIT)์ธ ๋ฐ˜๋ฉด, HotStuff๋Š” 3 phase(PREPARE, PRE-COMMIT, COMMIT)๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

๊ฐ phase์—์„œ ๋ฆฌ๋”๋Š” ์ด์ „ phase์˜ QC๋ฅผ ๋ชจ๋“  ๋…ธ๋“œ์—๊ฒŒ ์ „ํŒŒํ•œ๋‹ค. ๋…ธ๋“œ๋“ค์€ QC๋ฅผ ๋ณด๊ณ  "์•„, 2f+1๊ฐœ๊ฐ€ ๋™์˜ํ–ˆ๊ตฌ๋‚˜"๋ฅผ ํ™•์ธํ•œ๋‹ค. All-to-All ๋Œ€์‹  ๋ฆฌ๋”๊ฐ€ ์ •๋ณด๋ฅผ ์ค‘๊ณ„ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

์„ธ ๋ฒˆ์˜ ์—ฐ์†๋œ QC๊ฐ€ ํ˜•์„ฑ๋˜๋ฉด(์ด๊ฒƒ์ด Three-Chain์ด๋‹ค) ๋ธ”๋ก์ด commit๋œ๋‹ค:

B1 <-- B2 <-- B3
|      |      |
QC1   QC2    QC3

QC3๊ฐ€ ํ˜•์„ฑ๋˜๋ฉด B1์ด commit๋œ๋‹ค.

์™œ ์„ธ ๋ฒˆ์ธ๊ฐ€? ๊ฐ QC์˜ ์—ญํ• ์„ ๋ณด์ž:

  • QC1 (PREPARE): "2f+1์ด B1์„ ๋ณด์•˜๋‹ค"
  • QC2 (PRE-COMMIT): "2f+1์ด QC1์„ ๋ณด์•˜๋‹ค" -> ์ด ์‹œ์ ์— Lock
  • QC3 (COMMIT): "2f+1์ด QC2๋ฅผ ๋ณด์•˜๋‹ค" -> ์ด ์‹œ์ ์— Commit

Lock์ด ์ค‘์š”ํ•˜๋‹ค. QC2๋ฅผ ๋ณธ ๋…ธ๋“œ๋Š” B1์— "์ž ๊ธด๋‹ค". ์ดํ›„ B1๊ณผ ์ถฉ๋Œํ•˜๋Š” ๋ธ”๋ก์—๋Š” ํˆฌํ‘œํ•˜์ง€ ์•Š๋Š”๋‹ค. 2f+1๊ฐœ ๋…ธ๋“œ๊ฐ€ ์ž ๊ธฐ๋ฉด, ์ถฉ๋Œ ๋ธ”๋ก์ด QC๋ฅผ ์–ป์„ ์ˆ˜ ์—†๋‹ค. ์•ˆ์ „์„ฑ์ด ๋ณด์žฅ๋œ๋‹ค.


3. ํ”„๋กœํ† ์ฝœ ์ƒ์„ธ ๋ถ„์„

3.1 ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ

HotStuff๋Š” ๋ธ”๋ก์ฒด์ธ ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ๊ฐ ๋ธ”๋ก์€ ๋‹ค์Œ์„ ํฌํ•จํ•œ๋‹ค:

Block = {
    parent:  ์ด์ „ ๋ธ”๋ก์˜ ํ•ด์‹œ,
    payload: ํŠธ๋žœ์žญ์…˜ ๋ฐ์ดํ„ฐ,
    height:  ์ฒด์ธ์—์„œ์˜ ๋†’์ด,
    justify: ๋ถ€๋ชจ ๋ธ”๋ก์˜ QC
}

justify ํ•„๋“œ๊ฐ€ ํ•ต์‹ฌ์ด๋‹ค. ๋ธ”๋ก์„ ์ œ์•ˆํ•  ๋•Œ ๋ถ€๋ชจ ๋ธ”๋ก์˜ QC๋ฅผ ํฌํ•จ์‹œํ‚จ๋‹ค. ์ด๊ฒƒ์ด "์ด ๋ธ”๋ก์ด ์œ ํšจํ•œ ์ฒด์ธ ์œ„์— ์žˆ๋‹ค"๋Š” ์ฆ๊ฑฐ๋‹ค.

3.2 ํˆฌํ‘œ ๊ทœ์น™: safeNode

Replica๊ฐ€ ๋ธ”๋ก์— ํˆฌํ‘œํ• ์ง€ ๊ฒฐ์ •ํ•˜๋Š” ๊ทœ์น™์ด๋‹ค. ๋…ผ๋ฌธ์—์„œ๋Š” safeNode๋ผ ๋ถ€๋ฅธ๋‹ค:

safeNode(block, qc) = 
    (qc.view > lockedQC.view) OR (block extends lockedQC.block)

๋‘ ์กฐ๊ฑด ์ค‘ ํ•˜๋‚˜๋งŒ ๋งŒ์กฑํ•˜๋ฉด ํˆฌํ‘œํ•œ๋‹ค:

  1. ์ œ์•ˆ์— ํฌํ•จ๋œ QC์˜ view๊ฐ€ ๋‚ด๊ฐ€ ์ž ๊ธด QC๋ณด๋‹ค ๋†’๋‹ค
  2. ์ œ์•ˆ๋œ ๋ธ”๋ก์ด ๋‚ด๊ฐ€ ์ž ๊ธด ๋ธ”๋ก์„ ํ™•์žฅํ•œ๋‹ค

์ฒซ ๋ฒˆ์งธ ์กฐ๊ฑด์€ "๋” ์ตœ์‹  ์ •๋ณด๊ฐ€ ์žˆ์œผ๋ฉด ๊ทธ๊ฒƒ์„ ๋”ฐ๋ฅธ๋‹ค"๋Š” ์˜๋ฏธ๋‹ค. ๋‘ ๋ฒˆ์งธ ์กฐ๊ฑด์€ "๊ฐ™์€ ์ฒด์ธ์„ ๋”ฐ๋ผ๊ฐ€๋Š” ๊ฒƒ์€ ์•ˆ์ „ํ•˜๋‹ค"๋Š” ์˜๋ฏธ๋‹ค.

์ด ๊ทœ์น™์ด ์•ˆ์ „์„ฑ๊ณผ ํ™œ์„ฑ์„ฑ์„ ๋™์‹œ์— ๋ณด์žฅํ•œ๋‹ค. ์ž ๊ธด ๊ฐ’๊ณผ ์ถฉ๋Œํ•˜๋Š” ๋ธ”๋ก์—๋Š” ํˆฌํ‘œํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์•ˆ์ „ํ•˜๊ณ , ๋” ๋†’์€ view์˜ QC๊ฐ€ ์˜ค๋ฉด ์ž ๊ธˆ์„ ํ•ด์ œํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์‹œ์Šคํ…œ์ด ๋ฉˆ์ถ”์ง€ ์•Š๋Š”๋‹ค.

3.3 Basic HotStuff ํ”„๋กœํ† ์ฝœ

ํ•œ view์—์„œ์˜ ๋™์ž‘์„ ๋‹จ๊ณ„๋ณ„๋กœ ๋ณด์ž:

Phase 1: PREPARE

  • ๋ฆฌ๋”๊ฐ€ ์ƒˆ ๋ธ”๋ก์„ ์ œ์•ˆํ•œ๋‹ค. ๋ธ”๋ก์—๋Š” ์ž์‹ ์ด ์•„๋Š” ์ตœ๊ณ  QC๊ฐ€ ํฌํ•จ๋œ๋‹ค.
  • Replica๋“ค์€ safeNode ๊ฒ€์‚ฌ๋ฅผ ํ†ต๊ณผํ•˜๋ฉด ํˆฌํ‘œ(๋ถ€๋ถ„ ์„œ๋ช…)๋ฅผ ๋ฆฌ๋”์—๊ฒŒ ๋ณด๋‚ธ๋‹ค.
  • ๋ฆฌ๋”๊ฐ€ 2f+1๊ฐœ์˜ ํˆฌํ‘œ๋ฅผ ๋ชจ์œผ๋ฉด prepareQC๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

Phase 2: PRE-COMMIT

  • ๋ฆฌ๋”๊ฐ€ prepareQC๋ฅผ ๋ชจ๋“  ๋…ธ๋“œ์—๊ฒŒ ์ „์†กํ•œ๋‹ค.
  • Replica๋“ค์€ prepareQC๋ฅผ ๋ฐ›์œผ๋ฉด ํ•ด๋‹น ๋ธ”๋ก์— Lockํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํˆฌํ‘œ๋ฅผ ๋ณด๋‚ธ๋‹ค.
  • ๋ฆฌ๋”๊ฐ€ 2f+1๊ฐœ์˜ ํˆฌํ‘œ๋ฅผ ๋ชจ์œผ๋ฉด precommitQC๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

Phase 3: COMMIT

  • ๋ฆฌ๋”๊ฐ€ precommitQC๋ฅผ ๋ชจ๋“  ๋…ธ๋“œ์—๊ฒŒ ์ „์†กํ•œ๋‹ค.
  • Replica๋“ค์€ ํˆฌํ‘œ๋ฅผ ๋ณด๋‚ธ๋‹ค.
  • ๋ฆฌ๋”๊ฐ€ 2f+1๊ฐœ์˜ ํˆฌํ‘œ๋ฅผ ๋ชจ์œผ๋ฉด commitQC๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

Phase 4: DECIDE

  • ๋ฆฌ๋”๊ฐ€ commitQC๋ฅผ ๋ชจ๋“  ๋…ธ๋“œ์—๊ฒŒ ์ „์†กํ•œ๋‹ค.
  • ๋ชจ๋“  ๋…ธ๋“œ๊ฐ€ ํ•ด๋‹น ๋ธ”๋ก์„ commitํ•˜๊ณ  ์‹คํ–‰ํ•œ๋‹ค.

3.4 View-Change

๋ฆฌ๋”๊ฐ€ ์žฅ์• ๋ฅผ ์ผ์œผํ‚ค๋ฉด ์–ด๋–ป๊ฒŒ ๋˜๋Š”๊ฐ€? HotStuff์˜ View-Change๋Š” ๋†€๋ž๋„๋ก ๋‹จ์ˆœํ•˜๋‹ค:

  1. ํƒ€์ž„์•„์›ƒ์ด ๋ฐœ์ƒํ•˜๋ฉด ๊ฐ ๋…ธ๋“œ๊ฐ€ ์ž์‹ ์˜ highQC(๊ฐ€์žฅ ๋†’์€ QC)๋ฅผ ์ƒˆ ๋ฆฌ๋”์—๊ฒŒ ์ „์†กํ•œ๋‹ค.
  2. ์ƒˆ ๋ฆฌ๋”๋Š” 2f+1๊ฐœ์˜ ๋ฉ”์‹œ์ง€๋ฅผ ์ˆ˜์ง‘ํ•˜๊ณ , ๊ทธ ์ค‘ ๊ฐ€์žฅ ๋†’์€ QC๋ฅผ ์„ ํƒํ•œ๋‹ค.
  3. ์ƒˆ ๋ฆฌ๋”๋Š” ์ด QC๋ฅผ ํ™•์žฅํ•˜๋Š” ์ƒˆ ๋ธ”๋ก์„ ์ œ์•ˆํ•œ๋‹ค.

๋์ด๋‹ค. PBFT์ฒ˜๋Ÿผ ๋ณต์žกํ•œ ์ƒํƒœ ๋™๊ธฐํ™”๊ฐ€ ์—†๋‹ค. QC ์ž์ฒด๊ฐ€ "2f+1์ด ๋™์˜ํ–ˆ๋‹ค"๋Š” ์™„์ „ํ•œ ์ฆ๊ฑฐ์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๊ฐ€์žฅ ๋†’์€ QC๋ฅผ ์„ ํƒํ•˜๋ฉด, ๊ทธ๊ฒƒ์ด ๊ฐ€์žฅ ์ตœ์‹ ์˜ "ํ•ฉ์˜๋œ ์ƒํƒœ"๋‹ค.

๋ฉ”์‹œ์ง€ ๋ณต์žก๋„๋Š” O(n)์ด๋‹ค. ๊ฐ ๋…ธ๋“œ๊ฐ€ O(1) ํฌ๊ธฐ์˜ QC๋ฅผ ์ƒˆ ๋ฆฌ๋”์—๊ฒŒ ๋ณด๋‚ด๊ณ (n-1๊ฐœ), ์ƒˆ ๋ฆฌ๋”๊ฐ€ ์ œ์•ˆ์„ broadcastํ•œ๋‹ค(n-1๊ฐœ). ์ด 2(n-1)๊ฐœ์˜ O(1) ๋ฉ”์‹œ์ง€.


4. ์•ˆ์ „์„ฑ๊ณผ ํ™œ์„ฑ์„ฑ

4.1 ์•ˆ์ „์„ฑ ์ฆ๋ช… ๊ฐœ์š”

๋…ผ๋ฌธ์˜ ํ•ต์‹ฌ ์ •๋ฆฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค:

Theorem (Safety): ๋‘ ์ •์งํ•œ ๋…ธ๋“œ๊ฐ€ ๊ฐ™์€ ๋†’์ด์—์„œ ์„œ๋กœ ๋‹ค๋ฅธ ๋ธ”๋ก์„ commitํ•˜๋Š” ์ผ์€ ์—†๋‹ค.

์ฆ๋ช…์˜ ํ•ต์‹ฌ์€ Lock ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด๋‹ค. ๋ธ”๋ก B๊ฐ€ commit๋˜๋ ค๋ฉด B์— ๋Œ€ํ•œ precommitQC๊ฐ€ ํ˜•์„ฑ๋˜์–ด์•ผ ํ•œ๋‹ค. ์ด ์‹œ์ ์— 2f+1๊ฐœ ๋…ธ๋“œ๊ฐ€ B์— Lock๋œ๋‹ค.

์ด์ œ B์™€ ์ถฉ๋Œํ•˜๋Š” B'๊ฐ€ commit๋˜๋ ค๋ฉด, B'์— ๋Œ€ํ•œ prepareQC๊ฐ€ ๋จผ์ € ํ˜•์„ฑ๋˜์–ด์•ผ ํ•œ๋‹ค. ํ•˜์ง€๋งŒ Lock๋œ ๋…ธ๋“œ๋“ค์€ B'์— ํˆฌํ‘œํ•˜์ง€ ์•Š๋Š”๋‹ค(safeNode ๊ทœ์น™). Lock๋œ ๋…ธ๋“œ๊ฐ€ 2f+1๊ฐœ์ด๊ณ , ์ƒˆ QC๋„ 2f+1๊ฐœ ํˆฌํ‘œ๊ฐ€ ํ•„์š”ํ•˜๋ฏ€๋กœ, ๊ต์ง‘ํ•ฉ์— ์ตœ์†Œ 1๊ฐœ์˜ ์ •์งํ•œ ๋…ธ๋“œ๊ฐ€ ์žˆ๋‹ค. ์ด ๋…ธ๋“œ๊ฐ€ B'์— ํˆฌํ‘œํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ B'๋Š” QC๋ฅผ ์–ป์„ ์ˆ˜ ์—†๋‹ค.

4.2 ํ™œ์„ฑ์„ฑ ์ฆ๋ช… ๊ฐœ์š”

Theorem (Liveness): GST ์ดํ›„ ์ •์งํ•œ ๋ฆฌ๋”๊ฐ€ ์žˆ์œผ๋ฉด, ์œ ํ•œ ์‹œ๊ฐ„ ๋‚ด์— ์ƒˆ๋กœ์šด ๋ธ”๋ก์ด commit๋œ๋‹ค.

์ฆ๋ช…์˜ ํ•ต์‹ฌ์€ "๊ฐ€์žฅ ๋†’์€ QC๋ฅผ ๊ฐ€์ง„ ๋ฆฌ๋”๋Š” ํ•ญ์ƒ ์ง„์ „์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค"๋Š” ๊ฒƒ์ด๋‹ค.

์ •์งํ•œ ๋ฆฌ๋” L์ด view v๋ฅผ ์‹œ์ž‘ํ•œ๋‹ค๊ณ  ํ•˜์ž. L์€ 2f+1๊ฐœ ๋…ธ๋“œ๋กœ๋ถ€ํ„ฐ highQC๋ฅผ ์ˆ˜์ง‘ํ•œ๋‹ค. ์ด ์ค‘ ๊ฐ€์žฅ ๋†’์€ ๊ฒƒ์„ ์„ ํƒํ•˜์—ฌ ๊ทธ๊ฒƒ์„ ํ™•์žฅํ•˜๋Š” ๋ธ”๋ก์„ ์ œ์•ˆํ•œ๋‹ค.

ํ•ต์‹ฌ ๊ด€์ฐฐ: ์ด QC๋Š” ์–ด๋–ค ์ •์งํ•œ ๋…ธ๋“œ์˜ lockedQC๋ณด๋‹ค ๋†’๊ฑฐ๋‚˜ ๊ฐ™๋‹ค. ๋”ฐ๋ผ์„œ ๋ชจ๋“  ์ •์งํ•œ ๋…ธ๋“œ๊ฐ€ safeNode ๊ฒ€์‚ฌ๋ฅผ ํ†ต๊ณผํ•˜๊ณ  ํˆฌํ‘œํ•  ์ˆ˜ ์žˆ๋‹ค.

GST ์ดํ›„์ด๋ฏ€๋กœ ๋ฉ”์‹œ์ง€๊ฐ€ ์ œ๋•Œ ๋„์ฐฉํ•œ๋‹ค. 2f+1๊ฐœ ํˆฌํ‘œ๊ฐ€ ๋ชจ์ด๊ณ  QC๊ฐ€ ํ˜•์„ฑ๋œ๋‹ค. ์„ธ ๋ฒˆ ์—ฐ์† ์„ฑ๊ณตํ•˜๋ฉด commit์ด๋‹ค.

4.3 Liveness Attack๊ณผ 3-Phase์˜ ํ•„์š”์„ฑ

๋…ผ๋ฌธ์—์„œ ํฅ๋ฏธ๋กœ์šด ๋ถ€๋ถ„์€ "์™œ 2-phase๋กœ๋Š” ์•ˆ ๋˜๋Š”๊ฐ€"์— ๋Œ€ํ•œ ์„ค๋ช…์ด๋‹ค.

2-phase๋ฅผ ์‹œ๋„ํ•ด๋ณด์ž. PREPARE์—์„œ QC๋ฅผ ์–ป์œผ๋ฉด ๋ฐ”๋กœ commitํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž.

์‹œ๋‚˜๋ฆฌ์˜ค:

  1. View v์—์„œ ๋ฆฌ๋”๊ฐ€ ๋ธ”๋ก B๋ฅผ ์ œ์•ˆํ•œ๋‹ค.
  2. ์ผ๋ถ€ ๋…ธ๋“œ๋งŒ prepareQC๋ฅผ ๋ฐ›๊ณ  B์— Lockํ•œ๋‹ค. ๋ฆฌ๋”๊ฐ€ crash.
  3. View v+1์—์„œ ์ƒˆ ๋ฆฌ๋”๊ฐ€ ๋‹ค๋ฅธ ๋ธ”๋ก B'๋ฅผ ์ œ์•ˆํ•œ๋‹ค.

๋ฌธ์ œ: B์— Lock๋œ ๋…ธ๋“œ๋Š” ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•˜๋Š”๊ฐ€?

  • B๊ฐ€ commit๋˜์—ˆ์„ ์ˆ˜๋„ ์žˆ๋‹ค(๋‹ค๋ฅธ ๋…ธ๋“œ๋“ค์ด commitQC๊นŒ์ง€ ๋ฐ›์•˜์„ ์ˆ˜๋„)
  • B๊ฐ€ commit๋˜์ง€ ์•Š์•˜์„ ์ˆ˜๋„ ์žˆ๋‹ค(๋ฆฌ๋”๊ฐ€ prepareQC ์ „ํŒŒ ์ค‘ crash)

Lock๋œ ๋…ธ๋“œ๋Š” ์ด๋ฅผ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์—†๋‹ค. B'์— ํˆฌํ‘œํ•˜๋ฉด safety ์œ„๋ฐ˜ ๊ฐ€๋Šฅ์„ฑ, ํˆฌํ‘œํ•˜์ง€ ์•Š์œผ๋ฉด liveness ์œ„๋ฐ˜ ๊ฐ€๋Šฅ์„ฑ. ์ด๊ฒƒ์ด "Livelessness Attack"์ด๋‹ค.

3-phase๋Š” ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•œ๋‹ค. PRE-COMMIT phase์—์„œ prepareQC๊ฐ€ ์ „ํŒŒ๋˜๊ณ , ์ด๊ฒƒ์„ ๋ณธ ๋…ธ๋“œ๋งŒ Lockํ•œ๋‹ค. COMMIT phase์—์„œ precommitQC๊ฐ€ ์ „ํŒŒ๋˜์–ด์•ผ commit์ด๋‹ค.

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด:

  • precommitQC๊ฐ€ ํ˜•์„ฑ๋˜๋ฉด: 2f+1์ด Lock๋˜์—ˆ์Œ์ด ๋ณด์žฅ. ์ƒˆ ๋ฆฌ๋”๊ฐ€ ์ด๋“ค ์ค‘ ํ•œ ๋ช…์ด๋ผ๋„ ๋งŒ๋‚˜๋ฉด ์ด ์‚ฌ์‹ค์„ ์•Œ ์ˆ˜ ์žˆ์Œ.
  • precommitQC๊ฐ€ ํ˜•์„ฑ๋˜์ง€ ์•Š์œผ๋ฉด: ์•„๋ฌด๋„ Lock๋˜์ง€ ์•Š์Œ. ์ƒˆ ๋ฆฌ๋”๊ฐ€ ๋‹ค๋ฅธ ๋ธ”๋ก์„ ์ œ์•ˆํ•ด๋„ ์•ˆ์ „.

Lock๊ณผ non-Lock ์ƒํƒœ๊ฐ€ ๋ช…ํ™•ํžˆ ๊ตฌ๋ถ„๋œ๋‹ค. ์ด๊ฒƒ์ด 3-phase๊ฐ€ ํ•„์š”ํ•œ ์ด์œ ๋‹ค.


5. Chained HotStuff: ํŒŒ์ดํ”„๋ผ์ด๋‹

5.1 ๊ธฐ๋ณธ ์•„์ด๋””์–ด

Basic HotStuff๋Š” ํ•œ ๋ธ”๋ก์„ commitํ•˜๋Š” ๋ฐ 4๋ฒˆ์˜ round-trip์ด ํ•„์š”ํ•˜๋‹ค. ๋…ผ๋ฌธ์€ ์ด๋ฅผ ๊ฐœ์„ ํ•˜๋Š” Chained HotStuff๋ฅผ ์ œ์•ˆํ•œ๋‹ค.

ํ•ต์‹ฌ ๊ด€์ฐฐ: ๊ฐ phase์—์„œ ํ•˜๋Š” ์ผ์ด ์‚ฌ์‹ค์ƒ ๊ฐ™๋‹ค. ๋ฆฌ๋”๊ฐ€ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด๊ณ , Replica๊ฐ€ ํˆฌํ‘œํ•˜๊ณ , QC๊ฐ€ ํ˜•์„ฑ๋œ๋‹ค. ๋‹ค๋ฅธ ๊ฒƒ์€ QC์˜ "์˜๋ฏธ"๋ฟ์ด๋‹ค.

Chained HotStuff๋Š” ์ด๋ฅผ ํŒŒ์ดํ”„๋ผ์ด๋‹ํ•œ๋‹ค. ๊ฐ view์—์„œ:

  • ์ƒˆ ๋ธ”๋ก์„ ์ œ์•ˆํ•œ๋‹ค (PREPARE)
  • ์ด์ „ ๋ธ”๋ก์ด PRE-COMMIT๋œ๋‹ค (prepareQC ํ˜•์„ฑ)
  • ๊ทธ ์ด์ „ ๋ธ”๋ก์ด COMMIT๋œ๋‹ค (precommitQC ํ˜•์„ฑ)
  • ๊ทธ ์ด์ „ ๋ธ”๋ก์ด DECIDE๋œ๋‹ค (commitQC ํ˜•์„ฑ)
View 1: B1 ์ œ์•ˆ
View 2: B2 ์ œ์•ˆ, B1 pre-commit
View 3: B3 ์ œ์•ˆ, B2 pre-commit, B1 commit
View 4: B4 ์ œ์•ˆ, B3 pre-commit, B2 commit, B1 decide

5.2 Three-Chain Commit Rule

Chained HotStuff์˜ commit ๊ทœ์น™์€ ๊ฐ„๋‹จํ•˜๋‹ค:

Three-Chain: ๋ธ”๋ก B๊ฐ€ commit๋˜๋ ค๋ฉด, B๋ฅผ ํ™•์žฅํ•˜๋Š” ์—ฐ์† ์„ธ ๋ธ”๋ก(B, B', B'')์ด ์žˆ๊ณ  ๊ฐ๊ฐ QC๋ฅผ ๊ฐ€์ ธ์•ผ ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด ์„ธ ๋ธ”๋ก์ด ์—ฐ์†๋œ view์—์„œ ์ƒ์„ฑ๋˜์–ด์•ผ ํ•œ๋‹ค.

B (view v) <-- B' (view v+1) <-- B'' (view v+2)
|              |                 |
QC            QC'               QC''

QC''๊ฐ€ ํ˜•์„ฑ๋˜๋ฉด B๊ฐ€ commit๋œ๋‹ค.

์—ฐ์† view ์กฐ๊ฑด์ด ์ค‘์š”ํ•˜๋‹ค. ์ค‘๊ฐ„์— view๊ฐ€ ๊ฑด๋„ˆ๋›ฐ์–ด์ง€๋ฉด Three-Chain์ด ๊นจ์ง„๋‹ค. ์ด๋Š” ๋ฆฌ๋” ์žฅ์• ๊ฐ€ ์žˆ์—ˆ๋‹ค๋Š” ์˜๋ฏธ์ด๊ณ , Lock ์ƒํƒœ๊ฐ€ ๋ถˆํ™•์‹คํ•  ์ˆ˜ ์žˆ๋‹ค.

5.3 ์„ฑ๋Šฅ ํ–ฅ์ƒ

Basic HotStuff: ๋ธ”๋ก๋‹น 7 message delay (3 phase + decide) Chained HotStuff: ๋ธ”๋ก๋‹น 2 message delay (steady state)

์ฒ˜๋ฆฌ๋Ÿ‰์ด ์•ฝ 3.5๋ฐฐ ํ–ฅ์ƒ๋œ๋‹ค. ์ฒซ ๋ธ”๋ก์€ ์—ฌ์ „ํžˆ 7 delay๊ฐ€ ํ•„์š”ํ•˜์ง€๋งŒ, ์ดํ›„ ๋ธ”๋ก๋“ค์€ ํŒŒ์ดํ”„๋ผ์ธ์„ ํƒ€๊ณ  2 delay๋งˆ๋‹ค commit๋œ๋‹ค.


6. PBFT์™€์˜ ๋น„๊ต

6.1 ํ†ต์‹  ๋ณต์žก๋„

ํ•ญ๋ชฉ PBFT HotStuff
Normal-case O(n^2) O(n)
View-change O(n^2) ~ O(n^3) O(n)
f consecutive failures O(n^3) O(n^2)

100๊ฐœ ๋…ธ๋“œ์—์„œ:

  • PBFT normal-case: ~20,000 ๋ฉ”์‹œ์ง€
  • HotStuff normal-case: ~700 ๋ฉ”์‹œ์ง€

์ฐจ์ด๊ฐ€ 30๋ฐฐ์— ๋‹ฌํ•œ๋‹ค. ๋…ธ๋“œ๊ฐ€ ๋งŽ์•„์งˆ์ˆ˜๋ก ๊ฒฉ์ฐจ๋Š” ๋” ๋ฒŒ์–ด์ง„๋‹ค.

6.2 ์ง€์—ฐ ์‹œ๊ฐ„

ํ•ญ๋ชฉ PBFT HotStuff (Basic) HotStuff (Chained)
Single commit 5 delay 7 delay 7 delay (first)
Steady-state 5 delay 7 delay 2 delay

๋‹จ์ผ ํ•ฉ์˜๋งŒ ๋ณด๋ฉด PBFT๊ฐ€ ๋” ๋น ๋ฅด๋‹ค. ํ•˜์ง€๋งŒ Chained HotStuff์˜ ํŒŒ์ดํ”„๋ผ์ด๋‹์„ ์ ์šฉํ•˜๋ฉด ์ฒ˜๋ฆฌ๋Ÿ‰์€ HotStuff๊ฐ€ ์•ž์„ ๋‹ค.

6.3 ์„ค๊ณ„ ์ฒ ํ•™์˜ ์ฐจ์ด

PBFT๋Š” "๋ชจ๋“  ๋…ธ๋“œ๊ฐ€ ๋ชจ๋“  ๊ฒƒ์„ ์•ˆ๋‹ค"๋Š” ์ฒ ํ•™์ด๋‹ค. ๊ฐ ๋…ธ๋“œ๊ฐ€ ๋…๋ฆฝ์ ์œผ๋กœ ํ•ฉ์˜ ์ƒํƒœ๋ฅผ ํŒ๋‹จํ•  ์ˆ˜ ์žˆ๋‹ค. ๋Œ€์‹  ํ†ต์‹ ๋Ÿ‰์ด ๋งŽ๋‹ค.

HotStuff๋Š” "๋ฆฌ๋”๊ฐ€ ์ค‘์žฌํ•œ๋‹ค"๋Š” ์ฒ ํ•™์ด๋‹ค. ์ •๋ณด๊ฐ€ ๋ฆฌ๋”๋ฅผ ํ†ตํ•ด ํ๋ฅธ๋‹ค. ํ†ต์‹ ๋Ÿ‰์€ ์ ์ง€๋งŒ, ๋ฆฌ๋” ์˜์กด๋„๊ฐ€ ๋†’๋‹ค.

๋‘ ์ ‘๊ทผ ๋ชจ๋‘ ์žฅ๋‹จ์ ์ด ์žˆ๋‹ค. ์†Œ๊ทœ๋ชจ ๋„คํŠธ์›Œํฌ์—์„œ๋Š” PBFT์˜ ๋‹จ์ˆœํ•จ์ด ์œ ๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค. ๋Œ€๊ทœ๋ชจ ๋„คํŠธ์›Œํฌ, ํŠนํžˆ ๋ธ”๋ก์ฒด์ธ์ฒ˜๋Ÿผ ๋…ธ๋“œ๊ฐ€ ๋งŽ๊ณ  ๋ฆฌ๋” ๊ต์ฒด๊ฐ€ ๋นˆ๋ฒˆํ•œ ํ™˜๊ฒฝ์—์„œ๋Š” HotStuff๊ฐ€ ์œ ๋ฆฌํ•˜๋‹ค.


7. ์‹ค์ œ ์ ์šฉ๊ณผ ์˜ํ–ฅ

7.1 Libra/Diem

HotStuff์˜ ๊ฐ€์žฅ ์œ ๋ช…ํ•œ ์ ์šฉ ์‚ฌ๋ก€๋Š” Facebook(ํ˜„ Meta)์˜ Libra ํ”„๋กœ์ ํŠธ๋‹ค. 2019๋…„ ๋ฐœํ‘œ๋œ Libra ๋ฐฑ์„œ๋Š” HotStuff๋ฅผ ํ•ฉ์˜ ํ”„๋กœํ† ์ฝœ๋กœ ์ฑ„ํƒํ–ˆ๋‹ค.

LibraBFT๋Š” HotStuff๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ช‡ ๊ฐ€์ง€ ์‹ค์šฉ์  ๊ฐœ์„ ์„ ์ถ”๊ฐ€ํ–ˆ๋‹ค:

  • ๋” ์ •๊ตํ•œ Pacemaker (๋ฆฌ๋” ์„ ์ถœ ๋ฐ ํƒ€์ž„์•„์›ƒ ๊ด€๋ฆฌ)
  • ๋ฉ”๋ชจ๋ฆฌํ’€ ํ†ตํ•ฉ
  • ์ƒํƒœ ๋™๊ธฐํ™” ํ”„๋กœํ† ์ฝœ

ํ”„๋กœ์ ํŠธ๋Š” ๊ทœ์ œ ๋ฌธ์ œ๋กœ Diem์œผ๋กœ ์ด๋ฆ„์ด ๋ฐ”๋€Œ๊ณ  ๊ฒฐ๊ตญ ์ค‘๋‹จ๋˜์—ˆ์ง€๋งŒ, HotStuff๊ฐ€ ์‚ฐ์—…๊ณ„์—์„œ ๊ฒ€์ฆ๋ฐ›์€ ๊ณ„๊ธฐ๊ฐ€ ๋˜์—ˆ๋‹ค.

7.2 ํ›„์† ์—ฐ๊ตฌ

HotStuff ์ดํ›„ ์ˆ˜๋งŽ์€ ๋ณ€ํ˜•์ด ๋“ฑ์žฅํ–ˆ๋‹ค:

  • Fast-HotStuff: Optimistic path์—์„œ latency ๊ฐœ์„ 
  • Jolteon/Ditto: ๋น„๋™๊ธฐ fallback ์ถ”๊ฐ€
  • HotStuff-2: 3-phase๋ฅผ 2-phase๋กœ ์ค„์ž„ (2023๋…„)

ํŠนํžˆ HotStuff-2๋Š” ์ฃผ๋ชฉํ•  ๋งŒํ•˜๋‹ค. ๊ฐ™์€ ์ €์ž(Malkhi)๊ฐ€ ์ฐธ์—ฌํ•˜์—ฌ "์ด์ „ view์˜ QC๊ฐ€ ์žˆ์œผ๋ฉด ์ถ”๊ฐ€ phase๊ฐ€ ํ•„์š” ์—†๋‹ค"๋Š” ํ†ต์ฐฐ์„ ์ œ์‹œํ–ˆ๋‹ค. ๊ฒฐ๊ตญ 2-phase๋กœ๋„ ์„ ํ˜• ํ†ต์‹ ๊ณผ ์‘๋‹ต์„ฑ์„ ๋™์‹œ์— ๋‹ฌ์„ฑํ•  ์ˆ˜ ์žˆ์Œ์ด ๋ฐํ˜€์กŒ๋‹ค.

7.3 ๋ธ”๋ก์ฒด์ธ์— ๋ฏธ์นœ ์˜ํ–ฅ

HotStuff๋Š” BFT ๊ธฐ๋ฐ˜ ๋ธ”๋ก์ฒด์ธ์˜ ์„ค๊ณ„ ํŒจํ„ด์„ ๋ฐ”๊พธ์—ˆ๋‹ค. ์ด์ „์—๋Š” PBFT ๋ณ€ํ˜•์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜, Tendermint์ฒ˜๋Ÿผ ์‘๋‹ต์„ฑ์„ ํฌ๊ธฐํ•ด์•ผ ํ–ˆ๋‹ค. HotStuff๋Š” ๋‘˜ ๋‹ค ๊ฐ€๋Šฅํ•จ์„ ๋ณด์—ฌ์ฃผ์—ˆ๋‹ค.

ํ˜„์žฌ ๋งŽ์€ ๋ธ”๋ก์ฒด์ธ ํ”„๋กœ์ ํŠธ๊ฐ€ HotStuff ๋˜๋Š” ๊ทธ ๋ณ€ํ˜•์„ ์‚ฌ์šฉํ•œ๋‹ค:

  • Flow
  • Cypherium
  • Thunder
  • ๋‹ค์ˆ˜์˜ ํ”„๋ผ์ด๋น— ๋ธ”๋ก์ฒด์ธ

8. ๋น„ํŒ์  ๊ฒ€ํ† 

8.1 ์žฅ์ 

  1. ํ™•์žฅ์„ฑ: O(n) ํ†ต์‹ ์€ ๋Œ€๊ทœ๋ชจ ๋„คํŠธ์›Œํฌ์— ํ•„์ˆ˜์ ์ด๋‹ค.
  2. ๋‹จ์ˆœ์„ฑ: ํ”„๋กœํ† ์ฝœ ๋กœ์ง์ด ๋ช…ํ™•ํ•˜๋‹ค. ํˆฌํ‘œ ๊ทœ์น™(safeNode)์ด ํ•˜๋‚˜๋ฟ์ด๋‹ค.
  3. ๋ชจ๋“ˆ์„ฑ: Pacemaker๊ฐ€ ๋ถ„๋ฆฌ๋˜์–ด ์žˆ์–ด ๋‹ค์–‘ํ•œ ๋ฆฌ๋” ์„ ์ถœ ๋ฐฉ์‹์„ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  4. ํŒŒ์ดํ”„๋ผ์ด๋‹: Chained ๋ฒ„์ „์œผ๋กœ ์ฒ˜๋ฆฌ๋Ÿ‰์„ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค.

8.2 ํ•œ๊ณ„

  1. ์ถ”๊ฐ€ Phase: PBFT๋ณด๋‹ค ํ•œ phase๊ฐ€ ๋” ํ•„์š”ํ•˜๋‹ค. ๋‹จ์ผ ํ•ฉ์˜ ์ง€์—ฐ์ด ์ฆ๊ฐ€ํ•œ๋‹ค.
  2. ๋ฆฌ๋” ์˜์กด์„ฑ: Star topology๋กœ ์ธํ•ด ๋ฆฌ๋” ๋ถ€ํ•˜๊ฐ€ ํฌ๋‹ค. ๋ฆฌ๋”๊ฐ€ ๋ณ‘๋ชฉ์ด ๋  ์ˆ˜ ์žˆ๋‹ค.
  3. Threshold Signature ์˜์กด: ์‹ค์ œ ๊ตฌํ˜„์—์„œ threshold signature์˜ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์žˆ๋‹ค.
  4. Pacemaker ๋ณต์žก์„ฑ: ๋…ผ๋ฌธ์—์„œ Pacemaker๋ฅผ "๋ถ„๋ฆฌ"ํ–ˆ๋‹ค๊ณ  ํ•˜์ง€๋งŒ, ์‹ค์ œ๋กœ๋Š” Pacemaker ์„ค๊ณ„๊ฐ€ ๋ณต์žกํ•˜๊ณ  ์ค‘์š”ํ•˜๋‹ค.

8.3 ์—ด๋ฆฐ ๋ฌธ์ œ

๋…ผ๋ฌธ ๋ฐœํ‘œ ์ดํ›„์—๋„ ์—ฌ๋Ÿฌ ๋ฌธ์ œ๊ฐ€ ์—ฐ๊ตฌ๋˜๊ณ  ์žˆ๋‹ค:

  • ์ตœ์ ์˜ Pacemaker ์„ค๊ณ„
  • ๋น„๋™๊ธฐ ํ™˜๊ฒฝ์—์„œ์˜ ์„ฑ๋Šฅ
  • Threshold signature ์—†์ด ์„ ํ˜• ํ†ต์‹  ๋‹ฌ์„ฑ
  • 2-phase๋กœ์˜ ์ถ”๊ฐ€ ์ตœ์ ํ™” (HotStuff-2๊ฐ€ ์ผ๋ถ€ ํ•ด๊ฒฐ)

๋งˆ์น˜๋ฉฐ

HotStuff๋Š” BFT ํ•ฉ์˜ ์—ฐ๊ตฌ์—์„œ ํ•˜๋‚˜์˜ ์ „ํ™˜์ ์ด๋‹ค. 20๋…„๊ฐ„ ํ‘œ์ค€์ด์—ˆ๋˜ PBFT์˜ ํ•œ๊ณ„๋ฅผ ๊ทน๋ณตํ•˜๊ณ , ์„ ํ˜• ํ†ต์‹ ๊ณผ ์‘๋‹ต์„ฑ์„ ๋™์‹œ์— ๋‹ฌ์„ฑํ–ˆ๋‹ค.

๋…ผ๋ฌธ์„ ์ฝ์œผ๋ฉด์„œ ๊ฐ€์žฅ ์ธ์ƒ์ ์ธ ๊ฒƒ์€ ํ•ต์‹ฌ ์•„์ด๋””์–ด์˜ ๋‹จ์ˆœํ•จ์ด๋‹ค. QC๋ฅผ ํ†ตํ•ด ์ฆ๋ช… ํฌ๊ธฐ๋ฅผ ์ƒ์ˆ˜๋กœ ๋งŒ๋“ค๊ณ , Star topology๋กœ ํ†ต์‹ ์„ ์„ ํ˜•์œผ๋กœ ๋งŒ๋“ค๊ณ , ์ถ”๊ฐ€ phase๋กœ ์ •๋ณด ๋น„๋Œ€์นญ์„ ํ•ด๊ฒฐํ•œ๋‹ค. ๊ฐ๊ฐ์€ ์–ด๋ ต์ง€ ์•Š์€ ์•„์ด๋””์–ด์ง€๋งŒ, ์ด๋ฅผ ์กฐํ•ฉํ•˜์—ฌ ์˜ค๋ž˜๋œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•œ ๊ฒƒ์ด ๋…ผ๋ฌธ์˜ ๊ฐ€์น˜๋‹ค.

๋ฌผ๋ก  HotStuff๊ฐ€ ์™„๋ฒฝํ•œ ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. ์ถ”๊ฐ€ phase๋กœ ์ธํ•œ ์ง€์—ฐ, ๋ฆฌ๋” ์˜์กด์„ฑ, Pacemaker์˜ ๋ณต์žก์„ฑ ๋“ฑ ์—ฌ์ „ํžˆ ๊ฐœ์„ ์˜ ์—ฌ์ง€๊ฐ€ ์žˆ๋‹ค. ํ›„์† ์—ฐ๊ตฌ๋“ค์ด ์ด๋ฅผ ํ•˜๋‚˜์”ฉ ํ•ด๊ฒฐํ•ด๊ฐ€๊ณ  ์žˆ๋‹ค.

๋ถ„์‚ฐ ํ•ฉ์˜๋ฅผ ๊ณต๋ถ€ํ•˜๋Š” ์‚ฌ๋žŒ์ด๋ผ๋ฉด HotStuff๋Š” ๋ฐ˜๋“œ์‹œ ์ฝ์–ด์•ผ ํ•  ๋…ผ๋ฌธ์ด๋‹ค. PBFT๋ฅผ ์•Œ๊ณ  ์žˆ๋‹ค๋ฉด ๋ช‡ ์‹œ๊ฐ„์ด๋ฉด ํ•ต์‹ฌ์„ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ธ”๋ก์ฒด์ธ ์‹œ๋Œ€์˜ BFT ํ•ฉ์˜๊ฐ€ ์–ด๋””๋กœ ๊ฐ€๊ณ  ์žˆ๋Š”์ง€ ์ดํ•ดํ•˜๋Š” ์ข‹์€ ์ถœ๋ฐœ์ ์ด ๋  ๊ฒƒ์ด๋‹ค.


์ฐธ๊ณ  ์ž๋ฃŒ

  • Yin, M., Malkhi, D., Reiter, M. K., Gueta, G. G., & Abraham, I. (2019). HotStuff: BFT Consensus with Linearity and Responsiveness. PODC 2019.
  • Castro, M., & Liskov, B. (1999). Practical Byzantine Fault Tolerance. OSDI 1999.
  • Malkhi, D., & Nayak, K. (2023). HotStuff-2: Optimal Two-Phase Responsive BFT.
  • libhotstuff GitHub: https://github.com/hot-stuff/libhotstuff

About

this is HotStuff Study Repositry

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors