Block sync, SPV
๐Ÿ“

Block sync, SPV

tags
Tech
Rererences
Updated Time
Dec 1, 2024 03:50 AM
Published
Nov 6, 2022 02:57 AM
Created Date
Feb 13, 2019
Font
slug
Block sync
AI-generated
Date
author
obsidian-url
tableKey
Description
Social Image
category
BlockchainTech
ํ‚ค์›Œ๋“œ
ย 

Block sync problem

๋ธ”๋ก์ฒด์ธ์— ๋…ธ๋“œ๋กœ ์ฐธ์—ฌํ•˜๊ธฐ ์œ„ํ•ด ๋ธ”๋ก ๋™๊ธฐํ™”์‹œ ์ผ์–ด๋‚˜๋Š” ๋ฌธ์ œ
*Block Propagation์˜ Bandwidth usage problem์€ ์ด๋ฏธ ๋‹ค์ˆ˜์˜ ํŠธ๋žœ์žญ์…˜์„ ๋ณด์œ ํ•˜๊ณ  ์žˆ์„๋•Œ(์ฐธ์—ฌ์ค‘์ธ full node์ธ๊ฒฝ์šฐ) ์ž„์„ ๊ฐ€์ •ํ•˜๋ฏ€๋กœ, ์—ฌ๊ธฐ์—” ํ•ด๋‹น๋˜์ง€ ์•Š์Œ.
ย 
  1. ๋ฐ›์•„์•ผํ•  ๋ธ”๋ก๋ฐ์ดํ„ฐ์˜ ์–‘์ด ์ฆ๊ฐ€(ํฌ๊ธฐ ๋ฐ ์‹œ๊ฐ„์ง€์—ฐ ๋ฌธ์ œ)
    1. light node(or SPV node)์‚ฌ์šฉ.
    2. ํ•„์š”์—†๋Š” ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ๋ฅผ ์••์ถ•(compession), or ์‚ญ์ œ(pruning)
    3. ๋ธ”๋ก๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ๋ณ€๊ฒฝํ•˜์—ฌ ํฌ๊ธฐ๋ฅผ ์ค„์ž„
  1. ์œ ํšจ์„ฑ ๊ฒ€์ฆ(๋ฉ”์ธ ์ฒด์ธ์— ํฌํ•จ๋œ ๋ธ”๋ก์ธ์ง€, ํŠธ๋žœ์žญ์…˜์ด ๋ธ”๋ก์— ํฌํ•จ๋˜์—ˆ๋Š”์ง€ ๋“ฑ, ๋น„ํŠธ์ฝ”์ธ ๋กœ์ง์€ ์—ฌ๊ธฐ)
    1. ๋ธ”๋ก๊ณผ ํŠธ๋žœ์žญ์…˜์˜ ๊ฒ€์ฆ์‹œ์˜ ์‹œ๊ฐ„์ง€์—ฐ์„ ์ค„์ž„ (์‹ค์ œ๋กœ ๊ฒ€์ฆ์„ ํ• ์ง€๋Š” ๋ชจ๋ฅด๊ฒ ์œผ๋‚˜..)
    2. SPV Proofs : HVHH, Compact SPV, NiPoPow, FlyClient, BlockQuick..?
        • skiplist
ย 

SPV client์˜ ๋ธ”๋ก ๋™๊ธฐํ™”์— Bloom Filter๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ .(BIP 37)

  • ๋™๊ธฐํ™”์‹œ์— ์ „์ฒด ํŠธ๋žœ์žญ์…˜์„ ๋‹ค์šด๋ฐ›์„ ํ•„์š”๊ฐ€ ์—†๋‹ค. ์ž์‹ ๊ณผ ๊ด€๋ จ์ด ์—†๋Š” ๋Œ€๋ถ€๋ถ„์˜ ํŠธ๋žœ์žญ์…˜์„ ๋ฒ„๋ฆฌ๊ฒŒ๋จ. ์ด๋Š” ๋™๊ธฐํ™”๋กœ ์ธํ•œ ์‹œ๊ฐ„์ง€์—ฐ๊ณผ ๋ฉ”๋ชจ๋ฆฌ, ๋Œ€์—ญํญ ๋‚ญ๋น„๋กœ ์ด์–ด์ง.
  • Bloom Filter๋Š” ํ™•๋ฅ ๋ก ์ ์ด๋ฉฐ, false positives rate๋Š” client์—์˜ํ•ด ๊ฒฐ์ •๋˜๋Š”๋ฐ, ์ •ํ™•์„ฑ๊ณผ(precision)๊ณผ ๋Œ€์—ญํญ ์‚ฌ์šฉ๋Ÿ‰(bandwidth usage)์‚ฌ์ด trade off๊ฐ€ ์žˆ๋‹ค.
    • ๋†’์€ fprโ†’ ์ •ํ™•์„ฑ์ด ๋–จ์–ด์ ธ client์— ์–ด๋–ค ํŠธ๋žœ์žญ์…˜์ด ์žˆ๋Š”์ง€ peer๊ฐ€ ์ •ํ™•ํžˆ ์•Œ์ˆ˜ ์—†์Œ
      ๋‚ฎ์€ fpr โ†’ peer๊ฐ€ ํŠธ๋žœ์žญ์…˜์„ IP์ฃผ์†Œ์™€ ์ƒ๊ด€์‹œํ‚ฌ์ˆ˜ ์žˆ๊ฒŒ๋จ. privacy๋ฌธ์ œ
  • Bloom Filter๋Š” compactํ•˜๋ฉฐ, membership query๊ฐ€ ๋น ๋ฅด๋‹ค
    • ํ•„ํ„ฐ ๋งค์นญ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์žˆ์–ด, ํ’€๋…ธ๋“œ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ˆ„๋ฝํ• ์ˆ˜ ์—†๊ฒŒ๋˜๊ณ , DoS ๊ณต๊ฒฉ ๊ฐ€๋Šฅ์„ฑ์„ ์ตœ์†Œํ™”ํ•˜๋ฉด์„œ ์„ฑ๋Šฅ์„ ๋งŒ์กฑ์‹œํ‚ฌ์ˆ˜ ์žˆ๋‹ค.
      (SPV๋…ธ๋“œ๋Š” ์ž์‹ ์ด ์›ํ•˜๋Š” ํŠธ๋žœ์žญ์…˜์„ ํŠน์ •ํ•˜์ง€ ์•Š๊ณ , ์ผ์ข…์˜ ํŒจํ„ด๋งŒ์„ ํ’€๋…ธ๋“œ์— ์ œ๊ณตํ•˜์—ฌ ์–ด๋А์ •๋„ DoS๋ฅผ ํšŒํ”ผ๊ฐ€๋Šฅํ•˜๋‹ค. ์ž์‹ ์ด ์›ํ•˜๋Š” ํŠธ๋žœ์žญ์…˜ ์™ธ์— ํŒจํ„ด๊ณผ ์ผ์น˜ํ•˜๋Š” ์—ฌ๋Ÿฌ ํŠธ๋žœ์žญ์…˜์„ ๋ฐ›์„์ˆ˜ ์žˆ๊ธฐ๋•Œ๋ฌธ)
ย 
*SPV(Simpllifid Payment Verification) : SPV client๋Š” ๋ชจ๋“  ๋ธ”๋ก๊ณผ ํŠธ๋žœ์žญ์…˜ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜์ง€ ์•Š๊ณ , header๊ฐ’๋งŒ ์ €์žฅํ•˜์—ฌ ํŠธ๋žœ์žญ์…˜์„ ์ €์žฅํ•˜๋Š” ๋…ธ๋“œ
*SPV Proofs: SPV ๋…ธ๋“œ๋Š” ํŠธ๋žœ์žญ์…˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜์ง€ ์•Š๊ธฐ๋•Œ๋ฌธ์—, ํŠน์ • ํŠธ๋žœ์žญ์…˜์„ ๊ฒ€์ฆํ•˜๊ธฐ์œ„ํ•ด์„œ๋Š” ํ’€๋…ธ๋“œ๋กœ๋ถ€ํ„ฐ ํ•ด๋‹น ํŠธ๋žœ์žญ์…˜์˜ merkle path(or merkel branch)๋ฅผ ๋ฐ›์•„์™€์„œ, ์ž์‹ ์˜ header์— ์žˆ๋Š” merkle root hash(32bytes)์™€ ๋น„๊ตํ•˜์—ฌ ํŠธ๋žœ์žญ์…˜์ด ํŠน์ • ๋ธ”๋ก์— ํฌํ•จ๋˜์–ด ์žˆ๋‹ค๋Š”๊ฒƒ์„ ๊ฒ€์ฆํ•œ๋‹ค. (ํ•ด๋‹น ๋ธ”๋ก์ด ๋ฉ”์ธ ์ฒด์ธ์— ํฌํ•จ๋˜๋Š”์ง€๋Š” ๋ณด์žฅ๋˜์ง€ ์•Š๊ธฐ๋•Œ๋ฌธ์—, 6 confirmation์„ ํ™•์ธํ•œ๋‹ค.) ์ธํ„ฐ์ฒด์ธ(or sidechain)์—์„œ์˜ Two Way Pegging์—์„œ๋„ ์ƒ๋Œ€์ฒด์ธ์˜ Consistency ๊ฒ€์ฆ์„ ์œ„ํ•ด SPV Proofs๋ฅผ ์ด์šฉํ•œ๋‹ค.
ย 

SPV Proofs

*skiplist
ย 
*HVHH(high-value-hash highway)

Compact SPV

Compact SPV์˜ Attack Vector
SPV ๋…ธ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋น„ํŠธ์ฝ”์ธ ์ˆ˜์‹ ์ž์—๊ฒŒ ์ง€๋ถˆ ์ฆ๋ช…์„ ํ•˜๋Š” ๊ฒฝ์šฐ, ๋ฐœ์‹ ์ž๋Š” ํ•ด๋‹น transaction์— ์‚ฌ์šฉ๋œ UTXO๊ฐ€ Full ๋…ธ๋“œ ๋ธ”๋ก์ฒด์ธ ์ƒ์— ์กด์žฌํ•จ์„ ์ฆ๋ช…ํ•ด์•ผ ํ•œ๋‹ค. ๊ณต๊ฒฉ์ž๋Š” compact SPV๋ฅผ ๋งŒ๋“ค์–ด ์ด๋ฅผ ์†์ด๋ ค ์‹œ๋„ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ชจ๋“  ๋ธ”๋ก ํ—ค๋”๋ฅผ ์ด์šฉํ•˜๋Š” ๊ธฐ์กด SPV๋ผ๋ฉด ๊ณต๊ฒฉ์ž๊ฐ€ ๋ชจ๋“  ๋ธ”๋ก์„ ์œ„์กฐํ•ด์•ผ ํ•˜๋ฏ€๋กœ ๊ณต๊ฒฉ์ด ํž˜๋“ค๋‹ค.
Countermeasure.
ย 
ย 

NIPoPoW

FlyClient

MimbleWimble ์—์„œ ์‚ฌ์šฉํ• ๊ฑฐ๋ผ ํ•จ
Grin ๋„์ž… ์˜ˆ์ •(discussion thread, grin forum)
The FlyClient protocol uses Merkle Mountain Ranges, probabilistic sampling, and the Fiat-Shamir heuristic
    • Light client(verifier)๋Š” ๋‘ ํ’€๋…ธ๋“œ(provers)๋กœ๋ถ€ํ„ฐ์˜ ์ฒด์ธ์ค‘ ํ•˜๋‚˜์„ ์„ ํƒํ•ด์•ผํ•œ๋‹ค. ํ’€๋…ธ๋“œ ๋‘˜ ์ค‘ ํ•˜๋‚˜๋Š” honest chain์„ ๊ฐ–๊ณ ์žˆ๋‹ค
    • Block header์—๋Š” ๋ชจ๋“  ์ด์ „ ๋ธ”๋ก ํ—ค๋”์˜ commitment๋ฅผ ๊ฐ€์ง„ MMR์˜ merkle root๋ฅผ ํฌํ•จํ•˜๊ณ ์žˆ์–ด์•ผ ํ•œ๋‹ค.
    • ํ”„๋กœํ† ์ฝœ works : 1.๋‘ ํ’€๋…ธ๋“œ๋Š” latest ๋ธ”๋ก ํ—ค๋”๋ฅผ light node์—๊ฒŒ ๋ณด๋‚ธ๋‹ค. 2. ๋ธ”๋กํ—ค๋”์˜ ์ˆ˜์— ์˜ํ•ด ๋Œ€์ˆ˜์ ์œผ๋กœ ์ œํ•œ๋œ j๋งŒํผ ๋‹ค์Œ์„ ๋ฐ˜๋ณตํ•œ๋‹ค: 3.๊ฐ ํ’€๋…ธ๋“œ์˜ ๋ธ”๋กํ—ค๋”์— k๊ฐœ์˜. ๋žœ๋ค ๋ธ”๋กํ—ค๋”๋ฅผ ์ฟผ๋ฆฌํ•œ๋‹ค. K๋Š” ์ •์งํ•œ ์ฒด์ธ์˜ ๊ณ„์‚ฐ๋Šฅ๋ ฅ(์ปดํ“จํŒ…ํŒŒ์›Œ)์˜ ์ผ๋ถ€๋กœ ๊ฒฐ์ •๋œ๋‹ค. ๋ธ”๋ก์„ ์ƒ˜ํ”Œ๋งํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์Œ์„ ๊ด€์ฐฐ: ์•…์˜์ ์ธ ์ „์ฒด ๋…ธ๋“œ๋Š” ์ œํ•œ๋œ ์ปดํ“จํŒ… ์„ฑ๋Šฅ์œผ๋กœ ์ธํ•ด ๋ธ”๋ก์˜ subset๋งŒ ์ฑ„๊ตดํ• ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ •์งํ•œ ๋…ธ๋“œ์˜ ์ฒด์ธ๊ณผ ์•…์˜์ ์ธ ๋…ธ๋“œ์˜ ์ฒด์ธ์ด ์„œ๋กœ ๋‹ค๋ฅธ ํฌํฌ ํฌ์ธํŠธ๋ฅผ ๊ฐ€์ง„๋‹ค. 4. ํ’€๋…ธ๋“œ๋Š” ๋ชจ๋“  ๋ธ”๋กํ—ค๋”์— ๋Œ€ํ•ด ๊ทธ ๋ธ”๋ก์ด ํŠน์ •์œ„์น˜์˜ ์ฒด์ธ์— ํฌํ•จ๋˜์–ด ์žˆ์Œ์„ ์ฆ๋ช…ํ•˜๋Š” MMR proof๋ฅผ ์ œ๊ณตํ•œ๋‹ค. 5. ๋ผ์ดํŠธ๋…ธ๋“œ๋Š” ๊ทธ ์ฆ๋ช…์ด ๊ฐ ๋ธ”๋ก ํ—ค๋”์— ๋งž๊ฒŒ ์ž‘์šฉํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ณ , ๋งŒ์•ฝ ๋ถ€์ •ํ™•ํ•œ๊ฒฝ์šฐ, ์œ ํšจํ•˜์ง€์•Š์€ ๋ธ”๋กํ—ค๋”๋ฅผ ์ œ๊ณตํ•œ ํ’€๋…ธ๋“œ๋ฅผ reject 6. reject๋˜์ง€์•Š์€ ํ’€๋…ธ๋“œ์˜ ์ฒด์ธ์„.์ •ํ™•ํ•œ๊ฒƒ์œผ๋กœ ํ•œ๋‹ค.
    • 2๋‹จ๊ณ„๋Š” ๋ธ”๋กํ—ค๋”์˜ ํ•ด์‹œ์ธ๋ฐ, fiat shamir ํœด๋ฆฌ์Šคํ‹ฑ์˜ ์˜ˆ์ด๋‹ค. (Interactive proof of knowledge)
    ย 
    BIP 157,158
    New light node, block filter
    ย 
    ย 
    ๊ด€์‹ฌ ์ฃผ์ œ๋ฅผ ์„ ํƒํ•ด์ฃผ์„ธ์š”. ์„ ํƒํ•˜์ง€ ์•Š์œผ๋ฉด ๋ชจ๋“  ๊ธ€์„ ๊ตฌ๋…ํ•ฉ๋‹ˆ๋‹ค.