Ethereum Core Researcher์ธ Jon Choi์ Ethereum Casper 101์ ์ ์์ ํ๋ฝ์ ๋ฐ์ ์ ๋ฌธ ๋ฒ์ญํ์์ต๋๋ค.
Jon Choi์ ๋ํ ์ ๋ณด๋ ๋ค์์ ๋งํฌ๋ฅผ ์ฐธ์กฐํด์ฃผ์ธ์!
์ ์ฒด ๊ธ ๋ชฉ๋ก:
์ด๋๋ฆฌ์ ์บ์คํผ ์ฒซ๊ฑธ์ (1) by Jon Choi
์ด๋๋ฆฌ์ ์บ์คํผ ์ฒซ๊ฑธ์ (2) by Jon Choi
์ด๋๋ฆฌ์ ์บ์คํผ ์ฒซ๊ฑธ์ (์ฉ์ด์ ๋ฆฌ) by Jon Choi (ํ์ฌ ๋ณด๊ณ ๊ณ์ ๊ธ)
"์ด๋๋ฆฌ์ ์บ์คํผ ์ฒซ๊ฑธ์"์์ ๋ฌด์ฒ ๋ง์ ๊ฐ๋ ๋ค์ ๋ค๋ฃจ์๋๋ฐ์, ์์ผ๋ก๋ ์๋ง์ ํฌ๋กฌ ํญ์ ๋์๊ฐ๋ฉด์ ์๋ฃ๋ค์ ์ฐพ์๋ณด์๋ค ๋ณด๋ฉด ์์ฃผ ๋ณด๋ ์ฉ์ด๋ค์ด ์์๊ฑฐ์์. ์ฌ๊ธฐ์๋ ๊ฐ์ฅ ํ์ํ๊ณ ์์ฃผ ๋ฑ์ฅํ๋ ๊ฐ๋ ๋ค์ ๊ฐ๋จํ ์ ๋ฆฌํด๋์์ต๋๋ค. ๋์์ด ๋์์ผ๋ฉด ์ข๊ฒ ๋ค์!
Proof of Stake (PoS) - ๋คํธ์ํฌ์ ๊ฒ์ฆ์ธ์ด ์์นํ ๊ธ์ก์ ๊ธฐ๋ฐํ๋ ํผ๋ธ๋ฆญ ๋ธ๋ก์ฒด์ธ์ ํฉ์ ์๊ณ ๋ฆฌ์ฆ.
์บ์คํผ - ์ด๋๋ฆฌ์์ PoS ์ฐ๊ตฌ ํ๋ก์ ํธ ์ด๋ฆ.
์๊ฒฐ์ฑ(finality) - ์์คํ ์์ ์ด๋ค ์์ ์ด ์๋ฃ๋๋ฉด, ๊ทธ ์์ ์ ๋ฒ๋ณต๋ ์ ์์(Vitalik์ ํฉ์ ์๊ฒฐ์ฑ์ ๋ํ ๋ ผ์). ๋ฐฐ๊ฒฝ: PoW๋ ํ๋ฅ ์ ์ด๊ณ ์์์ (๋ช ์์ ์ด์ง ์์)์ธ ์๊ฒฐ์ฑ์ ๊ฐ์ง. ์บ์คํผ๋ ์๊ฒฐ์ฑ์ ๋ช ์์ ์ผ๋ก ๊ฐ์ ํ๋ ๋งค์ปค๋์ฆ์ ์ค๊ณํ๊ณ ์ ํจ.
ํฌํฌ ์ ํ ๊ท์น(fork choice rule) - ํฌํฌ ์ ํ ๊ท์น์ด๋, ์ฌ๋ฌ ๋ธ๋ก๋ค๊ณผ ๋ฉ์์ง๋ค์ ์ ๋ ฅ์ผ๋ก ๋ฐ์์ ์ด๋ค ์ฒด์ธ์ด "์ฌ๋ฐ๋ฅธ"์ฒด์ธ์ธ์ง ํด๋ผ์ด์ธํธ์๊ฒ ์ถ๋ ฅ๋๋ ํจ์๋ก, ํด๋ผ์ด์ธํธ๋ ์ถ๋ ฅ์ ์ ๋ฌ๋ฐ์์ ํ๊ฐ๋ฅผ ํจ. PoW์์ ์ฃผ๋ก ์ฌ์ฉ๋๋ "๊ฐ์ฅ ๊ธด ์ฒด์ธ์ด ์ฌ๋ฐ๋ฅธ ์ฒด์ธ์ด๋ค"๊ฐ ๋ํ์ ์ธ ํฌํฌ ์ ํ ๊ท์น ์ค ํ๋.
์ญ๊ฐ ์กฐ๊ฑด(slashing conditions) - ๋คํธ์ํฌ์ ๊ท์น์ ์ด๊ธด ๊ฒ์ฆ์ธ์ ์ง๋ถ์ ์ญ๊ฐํจ์ผ๋ก์จ ์ฒ๋ฒํ๋ ๊ท์น.
์ ์ ์์กฐ ๊ณต๊ฒฉ(sybil attack) - P2P ๋คํธ์ํฌ์์ ์ ์์ ์์กฐํจ์ผ๋ก์จ ํํ ์์คํ ์ ๋ฌดํจํ์ํค๋ ๊ณต๊ฒฉ.
์ ์ ์์กฐ ๊ณต๊ฒฉ์ ๋ง๊ธฐ ์ํ 3 E(3 E's of Sybil resistance) - 1. ์ง์ ๋น์ฉ(entry cost) 2. ๊ฑฐ์ฃผ ๋น์ฉ(existence cost) 3. ํํด์ ๋ํ ํ๋ํฐ(exit penalty) (Dominic Williams๊ฐ ๋ง๋ ์ฉ์ด).
Nothing-at-stake ๋ฌธ์ - PoS ์์คํ ์์ ํฌํฌ๊ฐ ๋ฐ์ํ์ ๊ฒฝ์ฐ, ๊ฒ์ฆ์ธ์ ํฌํฌ ๋ ์ฒด์ธ ๋ชจ๋๋ฅผ ๊ฒ์ฆํด๋ฒ๋ฆฌ๋ฉด ์ํด๋ณด๋ ๊ฒ ์๋ฌด๊ฒ๋ ์๋ค๋ ๋ฌธ์ ๊ฐ ์กด์ฌํจ. PoS์ ๋ฌธ์ ์ ์ผ๋ก ๊ฐ์ฅ ์ ์๋ ค์ง ๋ฌธ์ ์ด์, ํด๊ฒฐ ๊ฐ๋ฅํ ๋ฌธ์ ๋ก ์ฌ๊ฒจ์ง๊ณ ์์. ์๋ฅผ ๋ค๋ฉด ์ญ๊ฐ(Slasher) ๋ฑ.
๋๋ฌผ ๊ณต๊ฒฉ(bribe attack) - ๊ณต๊ฒฉ์๊ฐ ํ๋กํ ์ฝ์ ๋ณด์์ ์ ํดํ๊ธฐ ์ํด ๋๋ฌผ์ ์ฌ์ฉํ์ฌ ๊ฒ์ฆ์ธ์ ๊ฒ์์ด๋ก ํ๋ ์์ํฌ์ ๋ด์ ๊ท ํ์ ๋ณํ์ํค๋ ๊ฒ. (๋ณด๋ค ์์ธํ ๋ด์ฉ์ ์บ์คํผ์ ์ญ์ฌ ํํธ 2๋ฅผ ์ฐธ์กฐ)
์ฅ๊ฑฐ๋ฆฌ ๊ณต๊ฒฉ(long range attack) - 51% ๊ณต๊ฒฉ๊ณผ ๊ฐ์ ๋งค์ปค๋์ฆ(๋ ๊ธด ์ฒด์ธ์ ๋ง๋ค์ด์ ๊ณต๊ฒฉ์๊ฐ ์ํ๋๋๋ก ์ฅ๋ถ๋ฅผ ์์ ํ๋ ๊ฒ)์ด์ง๋ง, ์ฌ์ฏ ๋ธ๋ก ์ ๋ถํฐ ์์ํ๋๊ฒ ์๋๋ผ ํจ์ฌ ์ด์ (6๋ง๋ธ๋ก ์ ์ด๋ผ๊ฑฐ๋)๋ถํฐ ์กฐ์ํ๋ ๊ฒ.
__DAG - "Directed Acyclic Graph(๋น์ํ ๋ฐฉํฅ ๊ทธ๋ํ)". ์ํํ์ง ์๋ ์ ํํ ๋ฐฉํฅ์ฑ์ ๊ฐ๋ ๊ทธ๋ํ. (ETH Stack Exchange)
GHOST - "Greedy Heaviest Observed Subtree". ๋ณด์๊ณผ ํ์ค์ํ ์ธก๋ฉด์ ํํํ๋ ๋์ ๋น ๋ฅธ ๊ฒ์ฆ ์๊ฐ์ ์ฐ์ ๋ชฉํ๋ก ํ๋ ์ฒด์ธ ์ ํ ๊ท์น. (์๋ณธ ๋ ผ๋ฌธ, ETH GHOST)
๋๊ธฐ์ฑ(synchronicity) - ๋ฉ์์ง์ ์๊ฐ๊ณผ ๊ด๋ จ๋ ๊ฐ์ (๋๊ธฐ, ๋น๋๊ธฐ, ๋ถ๋ถ๋๊ธฐ)
์์กด์ฑ(liveness) - "๊ฐ์ฉ์ฑ(availability)". ํ๋กํ ์ฝ์ ๋ฐ๋ฅด๋ ๋ ธ๋๋ค์ด ์ธ์ ๊ฐ๋(eventually) ๊ฐ์ ๊ฒฐ์ ํจ. ๋คํธ์ํฌ์ ์ํ๊ฐ ๊ฐ์ ๊ฒฐ์ ํ ์ ์๋ ์ํฉ๊ณผ ๋ฐ๋์ ๊ฒฝ์ฐ (์: ํ ๋๋ฏผํธ์์ ํฌํ๊ฐ 2/3 ์ด์ ๋ชจ์ด์ง ์์ ๊ฒฝ์ฐ).
์์ ์ฑ(safety) - "์ ํ์ฑ(correctness)". ํ๋กํ ์ฝ์ ๋ฐ๋ฅด๋ ๋ ธ๋๋ค์ด ๋์ผํ ๊ฐ์ ๋์ถํจ. ์ง๊ด์ ์ผ๋ก ์ค๋ช ํ๋ฉด, ์๋ก ์ถฉ๋ํ๋ ๋ด์ฉ์ ๋ด์ ๋ ๊ฐ์ ๋ธ๋ก์ด ์ฒด์ธ์ ํฌํจ๋ ์ ์๋์ง ์ฌ๋ถ์ ๊ด๋ จ๋ ๋ถ๋ถ.
FLP ๋ถ๊ฐ๋ฅ ์ ๋ฆฌ - ๋น๋๊ธฐ ์ํ(asynchronous)์ด๋ฉด์ ์์ (safe)ํ ์ํ๋ก ์ด์(live)๋๋ ๋คํธ์ํฌ๋ ์กด์ฌํ ์ ์๋ค (์ฆ๋ช ๋ ๋ฐ ์์).
์ฑ ์์ ๋ฌผ์ ์ ์๋ ์ฅ์ (accountable faults) - ํน์ ๊ฒ์ฆ์ธ ๋๋ ๊ฒ์ฆ์ธ ์ง๋จ์๊ฒ ์ฑ ์์ ๋ฌผ์ ์ ์๋ ์ฅ์ .
๋น์ํฐ์ ์ฅ์ / ๋น์ํฐ์ ํ์(Byzantine faults / Byzantine behavior) - ์๋ก ๋ค๋ฅธ ๊ด์ฐฐ์์๊ฒ ์๋ก ๋ค๋ฅธ ์ฆ์์ ๋ณด์ด๋ ์ฅ์ ๋ฅผ ์ง์นญ. ํ๋กํ ์ฝ์ ๋ฐ๋ฅด์ง ์๋ ํ์.
๋น์ํฐ์ ์คํจ(Byzantine failure) - ํฉ์๊ฐ ํ์ํ ์์คํ ์์ ๋น์ํฐ์ ์ฅ์ ๋ก ์ธํด ์์คํ ์๋น์ค์ ๋ฐ์ํ ์์ค.
๋น์ํฐ์ ์ฅ์ ํ์ฉ (Byzantine fault tolerance, BFT) - ์์คํ ์ด ๋น์ํฐ์ ์ฅ์ ๋ฅผ ๊ฒฌ๋ ์ ์๋ ๋ฅ๋ ฅ. ๋น๋๊ธฐ ๋คํธ์ํฌ์์๋ 1/3์ ๋น์ํฐ์ ํ์์ ํ๊ณ๋ก ์ค์ ํ๊ณ , ๋๊ธฐ ๋คํธ์ํฌ์์๋ 1/2๋ก ์ค์ . (์๋ก์ด ์บ์คํผ์ ํ ๋๋ฏผํธ๋ฅผ ๋น๋กฏํ Paxos, PBFT๋ฅผ ํฌํจํ๋ BFT ํฉ์ ์๊ณ ๋ฆฌ์ฆ).
๋์นด๋ชจํ ํฉ์(Nakamoto consensus) - PoW์ ๊ธฐ๋ฐํ ๋นํธ์ฝ์ธ๊ฐ์ ๋ฐฉ์์ ํฉ์ ์์ฑ ๋ฐฉ์. BFT์ ๊ธฐ๋ฐํ PoS์ ๋๋นํ์ฌ ์ฒด์ธ ๋ฐฉ์์ PoS๋ฅผ ๋์นด๋ชจํ ์คํ์ผ(Nakamoto-style) ํฉ์๋ผ๊ณ ๋ถ๋ฅด๊ธฐ๋ ํจ.
ํ ๋๋ฏผํธ(Tendermint) - ์ผ๊ด์ฑ์ ์ค์ ์ ๋๋ PoS ๊ตฌํ ๋ฐฉ์. ์ ์๋ฅผ ํ์ ํ์์๊ฐ 1/3 ์ดํ์ผ ๋๋ ํฌํฌ๊ฐ ๋ฐ์ํ์ง ์์ง๋ง, ๊ฒ์ฆ์ธ ํฌํ์์ 2/3 ์ด์์ ํฌํ๊ฐ ์งํ๋์ง ์์ผ๋ฉด ์ฒด์ธ์ด ์ ์งํ๋ ๋จ์ ์ด ์์.
๊ฒ์ฆ์ธ(validator) - ๋ธ๋ก์ฒด์ธ์ ์ฒดํฌํฌ์ธํธ/๋ธ๋ก์ ๊ฒ์ฆํจ์ผ๋ก์จ ๋ณด์์ ์ป๋ ์ฃผ์ฒด. PoW์ ์ฑ๊ตด์ = PoS์ ๊ฒ์ฆ์ธ.
๊ฒ์ฆ์ธ ์ง๋จ(validator set) - ํน์ ์์ ์ ์ด๋ค ์ฒด์ธ์ ๊ฒ์ฆ์ธ์ ์ง๋จ.
์ฒดํฌํฌ์ธํธ(checkpoint) - FFG์์, PoW์ฒด์ธ(์: ethash์ ๊ธฐ๋ฐํ ์ด๋๋ฆฌ์) ์์ PoS ๊ฒ์ฆ ๋งค์ปค๋์ฆ์ด ๋ง๋ถ์ฌ์ ธ ์์ ๋, ์ผ์ ํ ๊ฐ๊ฒฉ(50๋ธ๋ก)์ ๋ ๋ธ๋ก.
์ํญ(epoch) - ๊ฒ์ฆ์ธ์ด ๋ธ๋ก์ ์๊ฒฐ์ฑ์ ๋ํ ํฌํ๋ฅผ ์งํํ๋ ๊ฐ๊ฒฉ(FFG์์๋ 50๋ธ๋ก). PoW ์ฑ๊ตด์๋ ๋ธ๋ก์ ์ฑ๊ตดํ๊ณ PoS ๊ฒ์ฆ์ธ์ ๋งค ์ํญ๋ง๋ค ์ฒดํฌํฌ์ธํธ๋ฅผ ๊ฒ์ฆ.
๋ณ๋ํ๋ ๊ฒ์ฆ์ธ ์ง๋จ - ์๊ฐ์ด ํ๋ฆ์ ๋ฐ๋ผ ๋ธ๋ก์ฒด์ธ์ ๊ฒ์ฆ์ธ ์ง๋จ์ด ๋ณํํ ์ ์๋ค๋ ๊ฐ๋ . BFT์คํ์ผ์ ํฉ์ ์๊ณ ๋ฆฌ์ฆ์์ ์ด ๋ถ๋ถ์ ํด๊ฒฐํ๋ ๊ฒ์ด ๋งค์ฐ ์ค์ํ ๋ฐ์ ์ด์์. ํ ๋๋ฏผํธ๊ฐ ์ฒ์์ผ๋ก ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ ์ํ์์. ์บ์คํผ ์ญ์ ์ด ๋ถ๋ถ์ ๋ํ ์ฐ๊ตฌ๊ฐ ํ๋ฐํ ์งํ๋๋ ์ค.
์ผ๋ฒ๋ฌด๋ฆผ(equivocation) - ๊ฒ์ฆ์ธ์ด ์๋ก ์ถฉ๋ํ๋ ๋ ๋ฉ์์ง๋ฅผ ๋ณด๋ด๋ ํ์ (๋ณด๋ค ์ ํํ ์ ์๋ ์ด ๋ฐํ์๋ฃ์ 28๋ฒ ์ฌ๋ผ์ด๋๋ฅผ ์ฐธ์กฐ)
๋ฉํด(dunkles) - ์ง๋ฐฐ์ ์ธ ๋ธ๋ก("์ฌ๋ฐ๋ฅธ" ์ฒด์ธ์ ์์ฑ๋ ๋ธ๋ก)์ ์ง๋ฐฐ์ ์ด์ง ์์ ๋ธ๋ก("์ฌ๋ฐ๋ฅด์ง ์์" ์ฒด์ธ์ ์์ฑ๋ ๋ธ๋ก)์ ๋ฐ์ดํฐ๋ฅผ ํฌํจ์ํค๋ ๋งค์ปค๋์ฆ. ์ด ๋งค์ปค๋์ฆ์ ํตํด ๋ณด๋ค ๋์ ์ธ์ผํฐ๋ธ ๋งค์ปค๋์ฆ์ ๋ง๋ค ์ ์์์ผ๋ฉฐ, Nothing-at-stake ๋ฌธ์ ๋ฅผ ์ํ์ํค๋๋ฐ์ ํฐ ๋์์ด ๋์์ (๋งํฌ)
์ ์ ๋งค์ปค๋์ฆ(proposal mechanism) - ์ง๋จ์ ์ํ ๊ฒ์ฆ์ธ์ด ๋ธ๋ก์ ํ๋น์ฑ ์ฆ๋ช ๋๋ ์๊ฒฐ ํ์๊ณ ๊ฑด์ํ๊ธฐ ์ํ ๋งค์ปค๋์ฆ.
ํ๋น์ฑ ์ฆ๋ช (justification) - FFG๋ฅผ ์๋ก ๋ค๋ฉด, ๊ฒ์ฆ์ธ์ 2/3 ์ด์์ด ์๋ก์ด ์ฒดํฌํฌ์ธํธ์ ๋ํด ์ฒดํฌํฌ์ธํธ์ ๊ธฐ๋ก์ด ์ ํํ๋ค๊ณ ๋์ํ๋ ๊ฒ. ์ด๋ ์ฒดํฌํฌ์ธํธ๋ฅผ ์๊ฒฐํ๊ธฐ ์ํ ์ค๊ฐ๋จ๊ณ์.
์๊ฒฐ(finalization) - FFG๋ฅผ ์๋ก ๋ค๋ฉด, ๊ฒ์ฆ์ธ์ 2/3 ์ด์์ด ํ๋น์ฑ์ด ์ฆ๋ช ๋ ์ฒดํฌํฌ์ธํธ์ ๋ํด ์ฒดํฌํฌ์ธํธ์ ๊ธฐ๋ก์ด ์ ํํ๋ค๊ณ ๋์ํ๋ ๊ฒ. ์ด ๋จ๊ณ๊น์ง ๋ง์น๋ฉด ์ฒดํฌํฌ์ธํธ์ ์๊ฒฐ์ฑ์ด ๋ถ์ฌ๋จ.
์ํ ์ ํ ์์คํ (state transition system) - ํน์ ์ํ(์: ๊ฑฐ๋ ๋ด์ญ ๋ชฉ๋ก ๋๋ ๊ณ์ข ๋ชฉ๋ก ๋ฑ)์ ๊ทธ ์ํ์ ์๊ฐ์ ๋ฐ๋ฅธ ๋ณํ(์ ํ)๋ฅผ ์ ์งํ๋ ์์คํ . ๋นํธ์ฝ์ธ, ์ด๋๋ฆฌ์, ๊ทธ ์ธ ํผ๋ธ๋ฆญ ๋ธ๋ก์ฒด์ธ๋ค์ ์ํ ์ ํ ์์คํ ์ผ๋ก ๋ณผ ์ ์์.
ํ๋กํ ์ฝ ํจ์ฉ ํจ์(protocol utility function) - "...ํ๋กํ ์ฝ์ด ์ผ๋ง๋ ์ ๋์ํ๋์ง๋ฅผ ํ์ธํ ์ ์๋ ๊ณต์์ผ๋ก, ์ด์์ ์ผ๋ก๋ ๋ธ๋ก์ฒด์ธ ๋ด์์ ๊ณ์ฐํ ์ ์์ด์ผ ํจ. PoW์ฒด์ธ์ ๊ฒฝ์ฐ, ์์ฑ๋ ๋ชจ๋ ๋ธ๋ก ์ค ๋ฉ์ธ ์ฒด์ธ์ ํฌํจ๋ ๋ธ๋ก์ ๋น์จ๋ก ๋ณผ ์ ์์. ์บ์คํผ์์๋ ํ๋กํ ์ฝ ํจ์ฉ์ด 0์ธ ๊ฒฝ์ฐ ๊ฐ์ฅ ์๋ฒฝํ๊ฒ ๋์ํ๊ณ ์๋ ๊ฒ์ผ๋ก ๋ด. ์ด๋ ๋ชจ๋ ์ํญ์ด ์๊ฒฐ๋๊ณ ์๋ฌด๋ฐ ์์ ์ฑ๊ณผ ๊ด๋ จ๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ง ์์ ์ํฉ์ผ๋ก, ์๊ฒฐ๋์ง ์์ ์ํญ์ด ๋ฐ์ํ๋ฉด ์ฝ๊ฐ์ ํ๋ํฐ๋ฅผ ๋ฐ๊ณ , ์์ ์ฑ๊ณผ ๊ด๋ จ๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด ๋งค์ฐ ํฐ ํ๋ํฐ๋ฅผ ๋ฐ๋๋ค. ํ๋กํ ์ฝ ํจ์ฉ ํจ์๋ฅผ ์ ๋๋ก ์ ๋ฆฝํ ์ ์๋ค๋ฉด, ์ ์์ ํ์์ ๋ํ ํ๋ํฐ๋ฅผ ํด๋น ํ์๋ก ์ธํด ํ๋กํ ์ฝ ํจ์ฉ์ด ์์ค๋ ์ ๋์ ๋น์ทํ๊ฒ ์ค์ ํ ์ ์์ ๊ฒ์ด๋ค." (ํผํด์ ์ผ๊ฐํ์์)
(์ญ์ ์ถ๊ฐ) ํ์์ ๊ฒ์ฆ(formal verification) - ์ด๋ค ํ๋์จ์ด๋ ์ํํธ์จ์ด ์์คํ ์ด ์๋๋๋๋ก ๋์ํ๋์ง ์ฌ๋ถ๋ฅผ ํ์ ์๋ฒ(formal method) ๋๋ ์์์ ํตํด ๊ฒ์ฆํ๋ ๊ฒ.