ย
Block sync problemSPV client์ ๋ธ๋ก ๋๊ธฐํ์ Bloom Filter๋ฅผ ์ฌ์ฉํ๋ ์ด์ .(BIP 37)SPV ProofsCompact SPVNIPoPoW FlyClient
Block sync problem
๋ธ๋ก์ฒด์ธ์ ๋
ธ๋๋ก ์ฐธ์ฌํ๊ธฐ ์ํด ๋ธ๋ก ๋๊ธฐํ์ ์ผ์ด๋๋ ๋ฌธ์
*Block Propagation์ Bandwidth usage problem์ ์ด๋ฏธ ๋ค์์ ํธ๋์ญ์
์ ๋ณด์ ํ๊ณ ์์๋(์ฐธ์ฌ์ค์ธ full node์ธ๊ฒฝ์ฐ) ์์ ๊ฐ์ ํ๋ฏ๋ก, ์ฌ๊ธฐ์ ํด๋น๋์ง ์์.
ย
- ๋ฐ์์ผํ ๋ธ๋ก๋ฐ์ดํฐ์ ์์ด ์ฆ๊ฐ(ํฌ๊ธฐ ๋ฐ ์๊ฐ์ง์ฐ ๋ฌธ์ )
- light node(or SPV node)์ฌ์ฉ.
- ํ์์๋ ๋ฐ์ดํฐ์ ํฌ๊ธฐ๋ฅผ ์์ถ(compession), or ์ญ์ (pruning)
- ๋ธ๋ก๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ๋ณ๊ฒฝํ์ฌ ํฌ๊ธฐ๋ฅผ ์ค์
- ์ ํจ์ฑ ๊ฒ์ฆ(๋ฉ์ธ ์ฒด์ธ์ ํฌํจ๋ ๋ธ๋ก์ธ์ง, ํธ๋์ญ์ ์ด ๋ธ๋ก์ ํฌํจ๋์๋์ง ๋ฑ, ๋นํธ์ฝ์ธ ๋ก์ง์ ์ฌ๊ธฐ)
- 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
- SPV Proofs : merkleblock message ์ ํ์ฑ์ ๋ฏธ๋์๊ธ ์ฐธ๊ณ
*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)
*BlockQuick
ย
BIP 157,158
New light node, block filter
ย
ย