(190613) ์ต๊ทผ FlyClient ์ ์ฉ์ค. ์๋ ์ฒซ๋ฒ์งธ ํ์ด์ง์ค FlyClient ์ฐธ๊ณ .
MimbleWimble์ ์ํ Pre-knowledgeย
๋คํธ์ํฌ ๋ฐ data structure ์ค์ฌ์ผ๋ก ๋ณด์์(cut-through, pruning, dandelion)
MimbleWimble ํน์งCut-through and PruningCut-throughPruningDandelion : ๋นํธ์ฝ์ธ์ ์ํ ๋คํธ์ํฌ ๋ผ์ฐํ
์ ์Problem(๋จ์ gossip ํ๋กํ ์ฝ ์ฌ์ฉ์)Solution
MimbleWimble ํน์ง
- ๋นํธ์ฝ์ธ ์ต๋ช ์ฑ, ํ์ฅ์ฑ์ ์ํ ํ๋กํ ์ฝ
- ๊ตฌํ์ฒด : Grin, Beam
- ๋จ์์ง๋ถ์ ์ ํฉํ ๊ตฌ์กฐ
- ํ๋ผ์ด๋ฒ์ : ์ฃผ์์ ๊ฑฐ ๋ฐ ๊ฑฐ๋ ๊ธ์ก, ์์ก ๋น๊ณต๊ฐ
- ๋ํ ํน์ฑ : ์ ์ถ๋ ฅ๊ฐ์ ๋ชฐ๋ผ๋ ์์ก ์ ์ ํ์ธ ๊ฐ๋ฅ
- ECC(ํ์๊ณก์ ์ํธ)๋ง ์ฌ์ฉ
โ ์ค๋์๊ฐ ์ฐ๊ตฌ๋์ด์จ ๊ฐ๋ ฅํ ์ํธ๊ธฐ์ , ๋น๊ต์ ์์ ํจ (์ด์ฐ๋ก๊ทธ๋ฌธ์ , ํด์ํจ์)
- ํด์ํจ์๋ฅผ cryptographic commitments์ ์ถ๋ ฅ ์์ฑ์ ์ฌ์ฉ
- PoW์๋ Cuckoo Cycle(Grin)๊ณผ Equihash(Beam)์ฌ์ฉ
- private key ๋ณด์ ์๋ง commitments ์ถ๋ ฅ ๊ฐ๋ฅ
- ํธ๋์ญ์ ์๋ฅผ ๊ณต๊ฐํ์ง ์๊ณ ์์ก์ด ์ํธ commitmentsํํ๋ก ์ ์ฅ
- ์ํธ commitment ๋ฐ ๋ฒ์์ฆ๋ช ๋ง ์จ์ฒด์ธ์ ์ ์ฅ
- Coin join์ด ์๋์ผ๋ก ๋์ด ๋น๋ํ ํ์์ ๋ณํฉ๋ ํธ๋์ญ์ ์ ์ฌ์ฉ
- ํธ๋์ญ์ ๋ณํฉ (Cut-through) : ์ค๊ฐ์ถ๋ ฅ์ ์์ ํ ์ ๊ฑฐํ๊ณ , ์ค๊ฐ์ ํธ๋์ญ์ ๊ธฐ๋ก์ ํธ๋์ญ์ ์ปค๋(transaction kernel)์ ์ ์ฅํ์ฌ ๋ฐ์ดํฐ ํ์ธ ๊ฐ๋ฅ
- ํธ๋์ญ์ ์ปค๋
- ํธ๋์ญ์ ์ ๋ ฅ์ ์ค์ ์์ ๊ถ ์ฆ๋ช
- ์ํ๊ท์ง์ ์ฌ์ฉํด ํธ๋์ญ์ ๋ฐ ์ ์ฒด ์ฒด์ธ์ ์ ํจ์ฑ ๊ฒ์ฌ
โ ์ด๋ค ์
๋ ฅ์ด ์ด๋ค ํธ๋์ญ์
์ ์์๋์ง ์์ ์๋ค.(์ต๋ช
์ฑ)
โ ๊ณ ๋์ ๋์ญํญ ์ค๋ฒํค๋ ์ ๊ฑฐ
โ ์๋ก์ด ๋
ธ๋๊ฐ ๋น ๋ฅธ ๋๊ธฐํ๊ฐ๋ฅ
๋ฒ์์ฆ๋ช (range proof)
- ์ซ์๋ฅผ ๋ฐํ์ง ์๊ณ ๊ทธ ์ซ์๊ฐ ์ฃผ์ด์ง ๋ฒ์ ์์ ์๋์ง ์ฆ๋ช (์์๊ฐ ๋ฌธ์ ํด๊ฒฐ)
- ๊ธฐ๋ฐ๊ฑฐ๋ ์ถ๋ ฅ ์ค ๊ฐ์ฅํฐ ๋ถ๋ถ์ ๋ด๋น
- ํํ๊ณต๊ธ์ด ์ฌ๊ฐํ ์ธํ๋ ์ด์ ์ ๊ฒช์ง์๋๋กํจ(์์๊ฐ์ ๋ชจ๋ ํธ๋์ญ์ ๋ง๋ค ์๋ก์ด ๋์ ๋ง๋ค์ ์๋ค)
- Scriptless scripts
- ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ํ๊ธฐ์ํด ์ ๋ ธ๋๊ฐ ๋คํธ์ํฌ์ ์ฐธ์ฌํ๋๋ก ๊ถ์ฅ
ย
Cut-through and Pruning
Cut-through
cut-through ๋๊ธฐ ์ ์ ๋ธ๋ก์ ์
๋ ฅ๊ณผ ์ถ๋ ฅ๋ง ๋ํ๋ธ ํธ๋์ญ์
์ ํฌํจ
x : ์ด์ ๋ธ๋ก์ ์ถ๋ ฅ๊ฐ, I : ์
๋ ฅ, O: ์ถ๋ ฅ
3๊ฐ์ ํธ๋์ญ์
์ด ํฌํจ๋์ด์๋ค. input์ด output์ ์ฐธ์กฐํ๋ค.
- ์ถ๋ ฅ๊ฐ์ด ์ด์ ๋ธ๋ก์ ํฌํจ - I1(x1)
- ํฌํจ๋ ์ ๋ ฅ๊ฐ์ ๋ฐ๋ก ์ฌ์ฉํ๋ ์ถ๋ ฅ๊ฐ๋ ์์ - I3(02)
- ๋ชจ๋ ํธ๋์ญ์ ์ ์ ์ถ๋ ฅ๊ฐ์ ํฉ์ 0์ด์ฌ์ผํจ
cut-through ๋ ๋ธ๋ก
- ํธ๋์ญ์ ๊ตฌ์กฐ๊ฐ ์ ๊ฑฐ๋๊ณ , ์ ์ถ๋ ฅ๊ฐ๋ง ๋จ์
- ์ ์ถ๋ ฅ๊ฐ์ ์์๋ ์ค์ํ์ง ์์
- ๋ชจ๋ ์ถ๋ ฅ๊ฐ์์ ์ ๋ ฅ์ ๋บ๊ฐ์ ํฉ์ ์ฌ์ ํ 0์ผ๋ก ๋ณด์ฅ
ย
์คํ
์ดํธ๋ ์ฑ๊ตด์ ์ํด์ ๋ง๋ค์ด์ง ์ฝ์ธ์ ์ด๋, ๋ชจ๋ UTXO, ๊ฐ ํธ๋์ญ์
์ ํธ๋์ญ์
kernel์ผ๋ก ์์ฝ๋ ์ ์์
ย
Pruning
- ์ด์ ๋ธ๋ก์ ์ถ๋ ฅ์ด ์๋น๋๋ฉด, ํด๋น ๋ธ๋ก์์ ์ถ๋ ฅ์ด ์ ๊ฑฐ๋จ
- Merkle Mountain Range(MMR)์์๋ leaves๋ฅผ ์ ๊ฑฐํจ
ย
100,000๊ฐ์ UTXO์ 1,000๋ง ๊ฐ์ ํธ๋์ญ์
์ ๊ฐ์ ํ ๋ ,
์์ฅ์ ์ฝ 130GB
- 128GB์ tx data
- 1GB์ tx ์ฆ๋ช ๋ฐ์ดํฐ
- 250MB์ block header
ย
์ฌ๊ธฐ์ cut -through์ pruning์ด ์ ์ฉ๋๋ฉด,
ย
์์ฅ์ ์ฝ 1.8GB
- 1GB์ tx ์ฆ๋ช ๋ฐ์ดํฐ
- 520MB์ UTXO
- 250MB์ block header
ย
ย
Dandelion : ๋นํธ์ฝ์ธ์ ์ํ ๋คํธ์ํฌ ๋ผ์ฐํ ์ ์
MW์ ๋ณ๊ฐ์ด๋ Grin๊ณผ Beam์์ ์ฌ์ฉํจ
ย
Problem(๋จ์ gossip ํ๋กํ ์ฝ ์ฌ์ฉ์)
- cut- throught ์ ์ transaction์ด ์ ํ๋์ด mempool์ ์ ์ฅ๋จ.
- ํธ๋์ญ์ ์ถ์ ์ด ๊ฐ๋ฅํ์ฌ ๊ณต๊ฒฉ์ ๋ ธ๋๊ฐ ํธ๋์ญ์ ๊ทธ๋ํ๋ฅผ ์์ฑํ๊ณ ๋ณด๋ธ์ฌ๋์ IP๋ฅผ ๋ฐ๊ฒฌํ ์ ์๋ค.(deanonymization)
Existing Solutions
- CoinShuffle
- ValueShuffle
๋ฑ์ด ์์ง๋ง ์๋ฒฝํ์ง ์๋ค.(๊ด๋ จ์๋ ์ฌ์ฉ์๋ฅผ ์ฐพ์์ผํจ)
ย
Solution
New
Dandelion lite19/11/19 follow upA. dandelion ++ : ํธ๋์ญ์
๊ทธ๋ํ ์์ฑ์ ๋์ฑ ์ด๋ ต๊ฒ ๋ง๋ฌ(๋๋
ํ)
๋ ๋จ๊ณ์ ํธ๋์ญ์
์ ํ ํ๋ก์ธ์ค
- stem phase
- ํ๋์ ๋ ธ๋์ ๋๋ค์ผ๋ก broadcast, ๋ random์ผ๋ก ๋ค๋ฅธ ๋ ธ๋์๋ณด๋
- ๋ชจ๋ ํธ๋์ญ์ ์ stem๋จ๊ณ์์ ์์ํ๊ณ , ๊ฐ ๋ ธ๋๋ ์ฌ์ ์ ์๋ ํ๋ฅ ๋ก stem์ ๊ณ์ํ ์ง fluff๋ก ์ ํํ ์ง ๋ ๋ฆฝ์ ์ผ๋ก ๊ฒฐ์ ํ๋ค.
2. fluff phase: ์ ์ฒด ๋คํธ์ํฌ์ broadcast(๋ค์ gossip์ผ๋ก ๋์๊ฐ)
ย
๋ง์ฝ stem๋จ๊ณ์์ ํธ๋์ญ์
์ด ์คํ๋ผ์ธ๋ ๋
ธ๋๋ก ์ ๋ฌ๋๋ฉด, ์ผ์ ์๊ฐํ fluff๋จ๊ณ์ ๋๋ฌํ์ง ์์์, ๋ ๋์ ๋คํธ์ํฌ๋ก ์๋์ผ๋ก ๋ธ๋ก๋์บ์คํ
๋จ.
โ ๊ณต๊ฒฉ์ ๋
ธ๋๊ฐ stem๋จ๊ณ์์ ํธ๋์ญ์
์ฒซ ๋ฆด๋ ์ด๋ฅผ ์์ ํ ํ๋ฅ ์ ๋ฎ์ถ์ด IPํ์ง๋ฅผ ์ด๋ ต๊ฒ ๋ง๋ ๋ค.
ย
B. MW์์๋ stem๋จ๊ณ์์ ํธ๋์ญ์
์ ์ฆ์ ๋จ์ผํผ์ด์ ์ ๋ฌํ๋๋์ , ๋ค๋ฅธ ํธ๋์ญ์
๊ณผ ๋ณํฉํ๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆด์ ์๋ค.
- ๊ณต์ ํ ๋ ธ๋๋ ์ ์ฌํ ์์๋ฃ/ํฌ๊ธฐ ๋น์จ๋ก๋ง ๋ณํฉํด์ผํ๋ค.
โ ์์๋ฃ/ํฌ๊ธฐ ๋น์จ๊ณผ ์๊ด์์ด ํ์ฐ์ด ๋๋ค๋ฉด ์ฌ์ฉ์๊ฐ ์์๋ฃ๋ฅผ ์ธ์ํ ํ์์ฑ์ ๋๋ผ์ง ๋ชปํ๊ฒ ๋จ.
- ๋ ธ๋๋ ์์๋ฃ๋ฅผ ๋์ฉํ ์ ์๋ค.(์์๋ฃ์์ด ์์ ์ ํธ๋์ญ์ ์ ๋ค๋ฅธ ํธ๋์ญ์ ์ ๋ณํฉ)
โ ์ด๋ฅผ ๋ฐฉ์งํ ๋ฐฉ๋ฒ์ ์์ผ๋ ์ฌ์ฉ์๊ฐ ์ด๋ฌํ ๋
ธ๋๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๊ธ์งํ ์ ์์.
- ๊ณต๊ฒฉ์๋ ธ๋๋ stem๋จ๊ณ์ ํธ๋์ญ์ ์ ๊ธฐ๋กํ๋ค๊ฐ fluff ๋จ๊ณ์์ ๋ธ๋ก๋์บ์คํธ๋ ๋ ์ฐจ์ด๋ฅผ ๋ณผ์ ์๋ค.
โ ์ ์ถ์ ๋ณด์ ์์ ์ต์ํํ๋ ค๋ฉด ์ ์ฐจ ์์ ํธ๋์ญ์
์ ์ถ๊ฐํ๋ ๋์ ๋น๊ต ๊ฐ๋ฅํ ํฌ๊ธฐ์ ํธ๋์ญ์
๋ง ๋ณํฉํด์ผํจ.
- DoS ๊ณต๊ฒฉ์ ๋ง๊ธฐ์ํด ๋ ธ๋๋ ์ถฉ๋์ด ์์ด์ผํ๋ค.
- ๋ชจ๋ ๋ณํฉ์ค์ธ ํธ๋์ญ์ ์ ์ ํจํด์ผํ๋ฉฐ ๊ธฐ์กด์ ์ ๋ ฅ์ ์ฐธ์กฐํจ.
- ์ด์ค ์ง์ถ ๋ฑ์ด ์์ด์ผํจ.
ย
C. Beam์ ๋ ๋์๊ฐ, ๋ณํฉํ ์ถ๋ ฅ์ด ์ถฉ๋ถํ์ง ์์ ์ํฉ์์ ๋
ธ๋๊ฐ dummy ๋๋ decoy UTXO๋ฅผ ์ถ๊ฐํ ์ ์๋ค.
- dummy : 0๊ฐ์ ์ธ์ฝ๋ฉํ์ง๋ง ๋ค๋ฅธ๊ฒ๊ณผ ๋น์ทํ๊ฒ ๋ณด์ด๋ UTXO
- ์ถ๊ฐ๋ dummy์ ๋ํด (๋ธ๋กnum ๊ธฐ์ค์ผ๋ก)๋๋คํ์ด๋จธ๋ฅผ ์ค์ ํ๊ณ ๊ทธํ ์์์ ํธ๋์ญ์ ์์ ๊ฐ์ UTXO๋ฅผ ์ ๋ ฅ์ผ๋ก ์ถ๊ฐํ๋ค.
- ์ด๋ฐ์์ผ๋ก real activity์ ์์ฌ์๊ณ ๊ตฌ๋ณ๋ถ๊ฐ๋ฅํ background activity๋ฅผ ์์ฑํ๋ค.
- ์ด๋ฐ ๋ฐฉ๋ฒ์ ๋จ์ ์, dummy UTXO๋ฅผ ์์ฑํจ์ผ๋ก์จ, ๋ธ๋ก๊ณต๊ฐ, ๋คํธ์ํฌ ํธ๋ํฝ, ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ์ํ ์์์ ๋ญ๋นํ๋๊ฒ.
- ๊ทธ๋ฌ๋ ์ฅ๊ธฐ์ ์ผ๋ก ํ์ฅ์ฑ์ ์ํฅ์ ๋ฏธ์น์ง ์์ ๊ฒ์ด๋ฉฐ, ์ปค๋์ด ์์ฑ๋์ง ์๊ธฐ๋๋ฌธ์ ๋๋ฏธ UTXO๋ ๊ฒฐ๊ตญ ์๋น๋๋ค.
ย
์ค์ ๋ก๋ ์ด๋ฐ A,B,C ๋ฐฉ๋ฒ์ด ํจ๊ป ์ฌ์ฉ๋์ด์ผํ๋ค.
ย
์ผ๋ง๋ ํจ๊ณผ ์์๊ฒ์ธ๊ฐ?
์ ํํ ์์น๋ ์์ง ์์ผ๋, ์ต๋ช
์ฑ์ ๊ธ์ ์ ์ํฅ์ ๋ฏธ์น๋ค.
์๋ฅผ๋ค์ด, 2๊ฐ์ ํธ๋์ญ์
์ด ํ๋๋ก ๋ณํฉ์ ์ด๋ฏธ ์
์ถ๋ ฅ๊ด๊ณ์ ๋ํด ์ด๋ฏธ 1/2์ ๋ถํ์ค์ฑ์ ์ฐฝ์ถํ๋ค.
๋ฐ๋ผ์ ๊ณต๊ฒฉ์๊ฐ 10ํ์ผ๋ก ์ฌ์ฉ์๋ฅผ ๋๋ฌ๋ด๋ฉด, ๊ทธ ์ฌ์ฉ์ ๊ด๊ณ์ ๋ํ ํ๋ฅ ์ ์ฝ 10^-3 ์ด๋ค.
๋ณํฉ์ด ์งํ์ค์ธ ํธ๋์ญ์
์๋ ์๋ณธ ์ฌ๋ถ๊ฐ ํ์๋์ง ์์ผ๋ฏ๋ก, ๋๋
ํ ๊ธฐ์ค์ ์
๋ ฅ๊ณผ ์ถ๋ ฅ์ ์๋ก ์ด์ด์ง๋ ๊ฐ์์ ์ธ ํธ๋์ญ์
๋งค๊ฐ๋ณ์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํด์ผํ๋ค.
TPS๋ ๊ธฐ์กด ํ๋ก์ ํธ์ ๋น๊ตํด ํฌ๊ฒ ์ฆ๊ฐํ์ง ์๋๋ค.
ย
ย
ย