Assumptions
- Alice ๋ธ๋ก์ ๊ฐ๊ณ ์๊ณ , Bob์ ๋ธ๋ก์ ๋ฐ์์ผํ๋ ์ํฉ.(๋ง์ด๋๋ผ๋ฆฌ ํน์ ๋ง์ด๋ํ ๋ด์์ Peer์๊ฒ ์ ์ก)
- Alice์ ๋ธ๋ก์ ์ด๋ฏธ Bob์ pool์ ์๋ ์ค๋ณต๋๋ ํธ๋์ญ์ ์ด ๋ง๋ค๊ณ ๊ฐ์ ํ๊ณ , Bob์๊ฒ ์๋ Assumptionsํธ๋์ญ์ ๋ง์ ๋ฐ๊ธฐ ์ํจ. ํน์ ๋๋ฝ๋ ํธ๋์ญ์ ์ ๋ฐ๊ธฐ ์ํจ.
- ๋ฐ์ดํฐ ์ ์ก์ ์ต์ ๋์ญํญ ์ฌ์ฉ์ ๋ชฉํ๋กํจ.
ย
(Graphene์ ์) IBLT๋ง์ ์ด์ฉํ ๋ฐฉ๋ฒ
- Alic๊ฐ ๋ธ๋ก์ ๊ฐ๊ณ ์๋ค๋ ์ฌ์ค์ ์๋ฆฌ๋ฉด
- Bob์ getdata๋ฉ์์ง๋ฅผ ๋ณด๋ธ๋ค.
- Alice๋ ๋ชจ๋ ํธ๋์ญ์ id๋ก IBLT๋ฅผ ์์ฑํด ๋ธ๋ก header์ ํจ๊ป ์ ์กํ๋ค.
- Bob์ ์์ ์ pool์ ์๋ ํธ๋์ญ์ ์ผ๋ก IBLT๋ฅผ ์์ฑํ์ฌ, ๋ฐ์ IBLT์ ํจ๊ป ๋์ฝ๋ฉ์ ์ํ(subtraction ์ฐ์ฐ)ํ๋ค. (๋ IBLT์ ์ฐจ์ด๋ 15%์ด์์ผ ์ ์๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด IBLT๋ฅผ ๋ ํฌ๊ฒ ๋ง๋ค์ด์ผํ๋ค.)
๊ฒฐ๊ณผ :
IBLT์ ํฌ๊ธฐ๋ ๋ ์งํฉ์ ํฌ๊ธฐ์ ๊ด๊ณ์๊ณ , subtractionํ ๋์ฝ๋ฉ ํ ์ ์๋ค๊ณ ์์๋๋ ์ฐจ์ด, ์ฆ ๋์นญ์ฐจ๊ฐ ํด์๋ก ํฌ๊ธฐ๊ฐ ์ฆ๊ฐํ๋ฏ๋ก,
pool์ด ์์๋(๋์นญ์ฐจ๊ฐ ๋น๊ต์ ์์๋, ํ๋์ , ๋
ธ๋์ )๋ ํจ๊ณผ๊ฐ ์ข์ง๋ง pool์ ํฌ๊ธฐ๊ฐ ์ปค์ง๋ฉด(๋์นญ์ฐจ๊ฐ ํฌ๋ฉด, ์ด๋ก์ ์ ) Compact Blocks(๋นจ๊ฐ ์ ) ๋ณด๋ค๋ ์ ์กํ ๋ฐ์ดํฐ์ ์์ด ๋งค์ฐ ๋ง์์ง๋ค.
ย
Graphene - IBLT์ Bloom Filter ์ฌ์ฉ
(*๊ฐ์ ์ด๋ฆ์ ๋ ๋ผ๋ฆฌ๋จธ๊ฐ ๋ง๋ ๋ธ๋ก์ฒด์ธ ์์ง๊ณผ ๋ค๋ฆ์ ์ฃผ์)
- ๋ธ๋ก ํค๋์ ๋ก์ปฌ๋ ธ๋์ Pool์ ์ ์ฉํ IBLT์ ๋ธ๋ฃธํํฐ๋ฅผ ํจ๊ป ์ ์ก
- PoW, PoS, DAG์ ์ฌ์ฉ๊ฐ๋ฅ.
- Bitcoin Cash์ ํ๋ ธ๋์ธ Bitcoin unlimited ์์ ์ฌ์ฉ์ค์ด๋ฉฐ ver.2๋ฅผ ๊ฐ๋ฐ์ค(์๋์ ์ต๊ทผ ๋ฆฌํฌํธ์ ver2๋ฅผ ์ํ ํ์ฅpaper[6] ์ฐธ๊ณ )
ย
๊ธฐ์ต!(BloomFilter์ IBLT ํ์ด์ง๋ฅผ ์ฐธ๊ณ )
- FPR(False Positive Rate)์ ๋ธ๋ฃธํํฐ์ ํฌ๊ธฐ๊ฐ ํฌ๊ณ , ๊ฒ์ํ ์์์ ์๊ฐ ์์์๋ก ๋ฎ์์ง๋ค.
- IBLT์ ํฌ๊ธฐ๋ ๋ ์งํฉ์ ํฌ๊ธฐ์๋ ๊ด๋ จ์๊ณ ๋ ์งํฉ๊ฐ์ ์ฐจ์ด(๋์นญ์ฐจ)๊ฐ ์ปค์ง์๋ก ํฌ๋ค.(subtractionํ ๋์ฝ๋ฉํ ์์๋ค๊ณ ์์๋๋ ์ฐจ์ด๊ฐ ํด์๋ก ํฌ๋ค)
Problem
์ด์ ์ ๋ฐฉ๋ฒ๋ค์ ์ด์ฉํ ๊ฒฐ๊ณผ์ ๋ฐ๋ฅด๋ฉด,
- ๋ธ๋ก๊ณผ pool๊ฐ์ symmetric difference(๋์นญ์ฐจ)๊ฐ ํฌ๋ฉด ๋ธ๋ฃธํํฐ ๋น์ฉ์ด ๋์์ง๋ค.(=ํฌ๊ธฐ๊ฐ ์ปค์ง๋ค)
- ๋ธ๋ก๊ณผ pool๊ฐ์ ๋์นญ์ฐจ๊ฐ ํฌ๋ฉด IBLT์ ๋น์ฉ์ด ๋์์ง๋ค.(=ํฌ๊ธฐ๊ฐ ์ปค์ง๋ค)
Solution (์ง์ ํด๋ด์ผ ๋ฌด์จ ๋ป์ธ์ง ์๋ค..์ฐธ๊ณ )
- Bloom Filter๋ฅผ ์ฌ์ฉํ์ฌ ๋ธ๋ก๊ณผ pool๊ฐ์ ๋์นญ์ฐจ๋ฅผ ์ค์. (IBLT์์ ๋์ฝ๋ํ๊ธฐ ์ ์ ๋์นญ์ฐจ๋ฅผ ์ค์ธ๋ค.)
- IBLT๋ฅผ ์ด์ฉํ์ฌ Bloom Filter์ error๋ฅผ recover.
- IBLT๋ก recoverํ๊ธฐ ๋๋ฌธ์ ๋ธ๋ฃธํํฐ ์ฌ์ฉ์ ํฐ FPR(false positive rate)๋ฅผ ์ฌ์ฉํด๋ ๋จ(์ฆ, ๋ธ๋ฃธํํฐ ํฌ๊ธฐ๊ฐ ์ปค๋ ๋จ)
- ๋ธ๋ฃธํํฐ์ FPR = 1/m ์ผ๋ก ์ค์ ์, m๊ฐ์ ํธ๋์ญ์ ์ ํ์ธํ ๋๋ FPR = 1/m x m = 1 ์ด๋ฏ๋ก ๋ธ๋ก๋น 1๊ฐ์ false positive๋ฅผ ์์
โ IBLT๊ฐ ํ๊ฐ์ ๋์นญ์ฐจ๋ฅผ ๊ฐ๋๋ก ํ๋ค. (IBLT์ ํฌ๊ธฐ๊ฐ ์์ ๊ฒ)
- ๋ IBLT์ ์ฐจ๋ก๋ถํฐ false positive์ธ ํธ๋์ญ์ ID๋ฅผ ์ ํํ ์ ์ ์๋ค.
ย
ย
ย
ย
๊ฒฐ๊ณผ :
๊ธฐ์กด๋ณด๋ค ๋ธ๋ก ์ฌ์ด์ฆ๋ฅผ 1/10๋ฐฐ ์ค์
- one IP packet์ ๋ค์ด๋ง์
- pool ํฌ๊ธฐ ์ฆ๊ฐ์์๋ block size๊ฐ ํฌ๊ฒ ์ฆ๊ฐํ์ง ์์.
- storage์ CPU๋ฅผ ์ ๊ฒ ์ฌ์ฉ
- uncle(orphan) ๋ธ๋ก์ ์ค์ด๊ณ , ๋ ๋น ๋ฅธ ๋ธ๋กํ์์ ๊ฐ๊ฒ๋จ
- ๋ธ๋ก ๋ฆด๋ ์ด์ ์ ์ ๋์ญํญ์ ์ฌ์ฉํ๊ฒ๋์ด ๋ ๋ง์ ๋ ธ๋๊ฐ ์ฐธ์ฌ๊ฐ๋ฅ
Decode failure ํ๋ฅ ์ด 1/1000
โ ๋งค์ฐ ์์ ํ๋ฅ ์ด์ง๋ง IBLT์ ๋์ฝ๋๊ฐ ์คํจํ๋๊ฒฝ์ฐ sender๋ IBLT๋ฅผ ๋ค์ ๋ณด๋ด์ผํจ. (๋น์ฉ์ ๊ทธ๋ฆฌ ํฌ์ง์๋ค)
ย
Graphene ver.1
(Created: 2018-07-26์ผ๋ก, ๋์ค์ ์ฐ์ฌ์ง ์คํ์ด๋ผ Paper[1]๋ ๋ฐํ์๋ฃ[2]์ ๋ค๋ฅด๊ฑฐ๋ ์ค์ ์ ๋ ์ ํํ ์ ์์. ์๋๋ flow๋ง ์ ์ด๋์๊ฒ์ด๊ณ , ๋ค๋ฅธ์์ธํ ๋ด์ฉ์ [5]์์ ํ์ธ)
- receiver์ mempool๊ณผ orphan pool (m)์ ์๋ tx์ ์์ ํจ๊ป get_grblk๋ฉ์ธ์ง๋ฅผ ๋ณด๋
- sender๊ฐ ๋ธ๋ก ํค๋์, B, I, T, R๋ฅผ grblk ๋ฉ์ธ์ง์ ํจ๊ป ์ ์ก
- B : ๋ธ๋ก์ ๋ชจ๋ tx ID๋ฅผ ์ด์ฉํด ์์ฑํ Bloom filter
- I : ๋ธ๋ก์ ๋ชจ๋ tx ID์ cheap hash๋ก ์์ฑํ IBLT
- T : coinbase ๋ฑ block์ ํฌํจ๋ tx Id ๋ฆฌ์คํธ
- R : tx ID๋ก ์ ๋ ฌ๋ tx list (๋ธ๋ก์ฒด์ธ ํ๋กคํ ์ฝ์ด canonical transaction ordering์ด ์๋๊ฒฝ์ฐ ํ์)
ย
- receiver๋ m๊ณผ ๋ฐ์ tx list(T)๋ฅผ ๋ฐํ์ผ๋ก ์๊ณ ์๋ ๋ชจ๋ tx ID์ ์งํฉ M๋ฅผ ์์ฑ?
โ m๋ง ํํฐ๋ง ํด๋ ๋๋๊ฒ ๊ฐ๋ค.
- Bloom filter๋ฅผ ์ฌ์ฉํด ์งํฉ M๋ฅผ ํํฐ๋งํ์ฌ M'์ ์์ฑ
- M'์ ๊ธฐ๋ฐ์ผ๋ก IBLT I' ์์ฑ
- IBLT(I)์ I'์ substraction(I - I') ์ ์งํํ์ฌ ๋ ์งํฉ์ symmetric differnce(๋์นญ ์ฐจ์ด)์ tx ID๋ฅผ ๋์ฝ๋ฉํจ
- (substraction์ ์ฑ๊ณต ์ฌ๋ถ์๋ฐ๋ผ) ๋ธ๋ก์ ์์ง๋ง M์์ ๋๋ฝ๋ ID์งํฉ(B)๋ ์๋ชป ํต๊ณผํ false positive ID๋ฅผ ์์ ์์
- ๋๊ฐ์ง ์คํจ์ ๊ฒฝ์ฐ๊ฐ ์๋๋ฐ, ๋ณต๊ตฌ๋ฅผ ์ํด fall-back๋ฐฉ์์ด ํ์ํจ.(version 2์์ ๊ฐ๋ฐ)
- ๋์ฝ๋ฉ์ ์คํจํ๋ ๊ฒฝ์ฐ: Bob์ Alice์๊ฒ ๋ ํฐ ํฌ๊ธฐ์ IBLT๋ฅผ ๋ค์ ์์ฒญํด์ผํ๋ค.(Bob์ด ๋ง์ ํธ๋์ญ์ ์ ๊ฐ๊ณ ์์ง ์์๊ฒ)
- ๋์ฝ๋ฉ์๋ ์ฑ๊ณตํ์์ผ๋, checksum ์๋ฌ๊ฐ ๋ฐ์ํ๋๊ฒฝ์ฐ: ์๋ชป๋ txID๋ก get_gblktx์ ์์ฒญํ์ฌ ๋ชจ๋ ํธ๋์ญ์ ์ ๋ฐ์ง ๋ชปํ๋ฉด checksum์๋ฌ๋ผ ํ๋จํ๊ณ fail-over block์ ์์ฒญํจ.
- IBLT์ ๋์ฝ๋ฉ์ ์ฑ๊ณตํ๊ณ , ์ฒดํฌ์ฌ ์๋ฌ๊ฐ ์ผ์ด๋์ง ์๋๋ค๋ฉด, receiver๋ ์ ๋ ฌ๋์ง์์ tx id ์งํฉ์ ๊ฐ๊ฒ๋๋ฏ๋ก, ๊ทธ๊ฑธํ ๋๋ก get_grblktx์์ฒญํ์ฌ grblktx๋ฅผ ๋ฐ์.
- ๋ฐ์ tx๋ฅผ ๋จธํดํธ๋ฆฌ์ ๋ฐฐ์นํ๋ฉฐ ๋ธ๋กํค๋ ๋ฃจํธ์ ์ ํจ์ฑ์ ๊ฒ์ฆ. tx์ ์์๋ (ํ๋กํ ์ฝ์์ ์ ํด์ง์ง ์์๋ค๋ฉด) R(canonical ordering)์ ์ํด ๊ฒฐ์ ๋จ.
*cheap hash: first 8 bytes of the hash interpreted as an unsigned little endian 64 bit integer
(์ถฉ๋ ํ๋ฅ ์ด ๊ฑฐ์ ์์ผ๋ฏ๋ก ๋์ญํญ์ ์ค์ด๊ธฐ์ํด ์ผ๋ถ๋ง ์ฌ์ฉ)
ย
Graphene ver.2 (์์ ์ค)
paper2[6]์ graphene extended
M' = x+y (x: true positives, y: false positives, M' : pool์ ํธ๋์ญ์
์ sender์ ๋ธ๋ฃธํํฐ์ ์ ์ฉํ ๊ฒฐ๊ณผ)
x์ y๋ ์์ง ๊ตฌ๋ถ ๋ถ๊ฐ๋ฅํ๋ค.
receiver๊ฐ M'์ ๊ธฐ๋ฐ์ผ๋ก ๋ธ๋ฃธํํฐ R์ ์์ฑ(f=b/n-x*, ์ฌ๊ธฐ์ x*<x ์ผ๋, n-x*๋ ๋ธ๋ก์๋ง ์๊ณ pool์๋ ์๋ ํธ๋์ญ์
์(true negative), b๋ bloom filter์ IBLT ํฌ๊ธฐ๋ฅผ ์๊ฒํ ๋์ ๊ฐ, ํ๋ฅ ์ ์ธ false positives ๊ฐ์)
receiver ๊ฐ R๊ณผ b๋ฅผ sender์๊ฒ ๋ณด๋
sender๊ฐ R์์๋ ํธ๋์ญ์
์ receiver์๊ฒ ๋ชจ๋ ๋ณด๋
sender๋ b+y* ํญ๋ชฉ์ ๋ณต๊ตฌํ๊ธฐ์ํด ๋ธ๋ก์ ๋ชจ๋ ํธ๋์ญ์
์ ๋ํ IBLTs J๋ฅผ ์์ฑํด ๋ณด๋ธ๋ค.
b: R์ ์๋ ๊ฒ์ผ๋ก ์๋ชป ํ์๋ ํธ๋์ญ์
์ ๋ฐ S์ ์๋ ๊ฒ์ผ๋ก ์๋ชป ํ์๋ ํธ๋์ญ์
์๋ฅผ ์ค๋ช
ํฉ๋๋ค.
receiver๋ Z์ ์๋ tx ID๋ฅผ ๊ธฐ๋ฐ์ผ๋ก IBLTJ'๋ฅผ ์์ฑํ๊ณ , J์ J'๋ฅผ ์ฐจ์ฐ์ฐํ์ฌ ๋์ฝ๋ฉํ๋ค.
ย
๊ฒฐ๊ณผ : ์งํฉ Z๋ฅผ ์กฐ์ ํ๊ณ Merkle ๋ฃจํธ์ ์ ํจ์ฑ์ ๊ฒ์ฌํ๊ณ ํ๋กํ ์ฝ์ด ์ข
๋ฃ๋จ.
ย
References
- Graphene v2 Interim Report(2019.4.18)
ย