Graphene-Using IBLTs & BloomFilter

Graphene-Using IBLTs & BloomFilter

IBLTs(Invertible Bloom Lookup Tables)
๐Ÿ”œ
Transaction Ordering Rule
Graphene ์ตœ์  ๋งค๊ฐœ๋ณ€์ˆ˜ ๊ตฌํ•˜๊ธฐ
Bloom Filter + IBLT ์—ฐ์‚ฐ ํ•ด๋ณด๊ธฐ
Assumptions
  • Alice ๋ธ”๋ก์„ ๊ฐ–๊ณ ์žˆ๊ณ , Bob์€ ๋ธ”๋ก์„ ๋ฐ›์•„์•ผํ•˜๋Š” ์ƒํ™ฉ.(๋งˆ์ด๋„ˆ๋ผ๋ฆฌ ํ˜น์€ ๋งˆ์ด๋‹ํ’€ ๋‚ด์—์„œ Peer์—๊ฒŒ ์ „์†ก)
  • Alice์˜ ๋ธ”๋ก์— ์ด๋ฏธ Bob์˜ pool์— ์žˆ๋Š” ์ค‘๋ณต๋˜๋Š” ํŠธ๋žœ์žญ์…˜์ด ๋งŽ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๊ณ , Bob์—๊ฒŒ ์—†๋Š” AssumptionsํŠธ๋žœ์žญ์…˜๋งŒ์„ ๋ฐ›๊ธฐ ์œ„ํ•จ. ํ˜น์€ ๋ˆ„๋ฝ๋œ ํŠธ๋žœ์žญ์…˜์„ ๋ฐ›๊ธฐ ์œ„ํ•จ.
  • ๋ฐ์ดํ„ฐ ์ „์†ก์— ์ตœ์†Œ ๋Œ€์—ญํญ ์‚ฌ์šฉ์„ ๋ชฉํ‘œ๋กœํ•จ.
ย 

(Graphene์ „์—) IBLT๋งŒ์„ ์ด์šฉํ•œ ๋ฐฉ๋ฒ•

notion image
  1. Alic๊ฐ€ ๋ธ”๋ก์„ ๊ฐ–๊ณ ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์•Œ๋ฆฌ๋ฉด
  1. Bob์€ getdata๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ธ๋‹ค.
  1. Alice๋Š” ๋ชจ๋“  ํŠธ๋žœ์žญ์…˜id๋กœ IBLT๋ฅผ ์ƒ์„ฑํ•ด ๋ธ”๋ก header์™€ ํ•จ๊ป˜ ์ „์†กํ•œ๋‹ค.
  1. Bob์€ ์ž์‹ ์˜ pool์— ์žˆ๋˜ ํŠธ๋žœ์žญ์…˜์œผ๋กœ IBLT๋ฅผ ์ƒ์„ฑํ•˜์—ฌ, ๋ฐ›์€ IBLT์™€ ํ•จ๊ป˜ ๋””์ฝ”๋”ฉ์„ ์ˆ˜ํ–‰(subtraction ์—ฐ์‚ฐ)ํ•œ๋‹ค. (๋‘ IBLT์˜ ์ฐจ์ด๋Š” 15%์ด์ƒ์ผ ์ˆ˜ ์—†๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด IBLT๋ฅผ ๋” ํฌ๊ฒŒ ๋งŒ๋“ค์–ด์•ผํ•œ๋‹ค.)
notion image
๊ฒฐ๊ณผ :
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 (์ง์ ‘ํ•ด๋ด์•ผ ๋ฌด์Šจ ๋œป์ธ์ง€ ์•ˆ๋‹ค..์ฐธ๊ณ )
  1. Bloom Filter๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ธ”๋ก๊ณผ pool๊ฐ„์˜ ๋Œ€์นญ์ฐจ๋ฅผ ์ค„์ž„. (IBLT์—์„œ ๋””์ฝ”๋“œํ•˜๊ธฐ ์ „์— ๋Œ€์นญ์ฐจ๋ฅผ ์ค„์ธ๋‹ค.)
  1. 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๋ฅผ ์ •ํ™•ํžˆ ์•Œ ์ˆ˜ ์žˆ๋‹ค.
ย 
ย 
notion image
notion image
ย 
notion image
ย 

๊ฒฐ๊ณผ :

๊ธฐ์กด๋ณด๋‹ค ๋ธ”๋ก ์‚ฌ์ด์ฆˆ๋ฅผ 1/10๋ฐฐ ์ค„์ž„
  • one IP packet์— ๋“ค์–ด๋งž์Œ
  • pool ํฌ๊ธฐ ์ฆ๊ฐ€์‹œ์—๋„ block size๊ฐ€ ํฌ๊ฒŒ ์ฆ๊ฐ€ํ•˜์ง€ ์•Š์Œ.
  • storage์™€ CPU๋ฅผ ์ ๊ฒŒ ์‚ฌ์šฉ
  • uncle(orphan) ๋ธ”๋ก์„ ์ค„์ด๊ณ , ๋” ๋น ๋ฅธ ๋ธ”๋กํƒ€์ž„์„ ๊ฐ–๊ฒŒ๋จ
  • ๋ธ”๋ก ๋ฆด๋ ˆ์ด์— ์ ์€ ๋Œ€์—ญํญ์„ ์‚ฌ์šฉํ•˜๊ฒŒ๋˜์–ด ๋” ๋งŽ์€ ๋…ธ๋“œ๊ฐ€ ์ฐธ์—ฌ๊ฐ€๋Šฅ
Decode failure ํ™•๋ฅ ์ด 1/1000
โ†’ ๋งค์šฐ ์ž‘์€ ํ™•๋ฅ ์ด์ง€๋งŒ IBLT์˜ ๋””์ฝ”๋“œ๊ฐ€ ์‹คํŒจํ•˜๋Š”๊ฒฝ์šฐ sender๋Š” IBLT๋ฅผ ๋‹ค์‹œ ๋ณด๋‚ด์•ผํ•จ. (๋น„์šฉ์€ ๊ทธ๋ฆฌ ํฌ์ง€์•Š๋‹ค)
ย 

Graphene ver.1


notion image
(Created: 2018-07-26์œผ๋กœ, ๋‚˜์ค‘์— ์“ฐ์—ฌ์ง„ ์ŠคํŽ™์ด๋ผ Paper[1]๋‚˜ ๋ฐœํ‘œ์ž๋ฃŒ[2]์™€ ๋‹ค๋ฅด๊ฑฐ๋‚˜ ์‹ค์ œ์™€ ๋” ์ •ํ™•ํ•  ์ˆ˜ ์žˆ์Œ. ์•„๋ž˜๋Š” flow๋งŒ ์ ์–ด๋†“์€๊ฒƒ์ด๊ณ , ๋‹ค๋ฅธ์ž์„ธํ•œ ๋‚ด์šฉ์€ [5]์—์„œ ํ™•์ธ)
  1. receiver์˜ mempool๊ณผ orphan pool (m)์— ์žˆ๋Š” tx์˜ ์ˆ˜์™€ ํ•จ๊ป˜ get_grblk๋ฉ”์„ธ์ง€๋ฅผ ๋ณด๋ƒ„
  1. 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์ด ์•„๋‹๊ฒฝ์šฐ ํ•„์š”)
      ย 
  1. receiver๋Š” m๊ณผ ๋ฐ›์€ tx list(T)๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์•Œ๊ณ ์žˆ๋Š” ๋ชจ๋“  tx ID์˜ ์ง‘ํ•ฉ M๋ฅผ ์ƒ์„ฑ?
    1. โ†’ m๋งŒ ํ•„ํ„ฐ๋ง ํ•ด๋„ ๋˜๋Š”๊ฒƒ ๊ฐ™๋‹ค.
  1. Bloom filter๋ฅผ ์‚ฌ์šฉํ•ด ์ง‘ํ•ฉ M๋ฅผ ํ•„ํ„ฐ๋งํ•˜์—ฌ M'์„ ์ƒ์„ฑ
  1. M'์„ ๊ธฐ๋ฐ˜์œผ๋กœ IBLT I' ์ƒ์„ฑ
  1. 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์„ ์š”์ฒญํ•จ.
  1. IBLT์˜ ๋””์ฝ”๋”ฉ์— ์„ฑ๊ณตํ•˜๊ณ , ์ฒดํฌ์„ฌ ์—๋Ÿฌ๊ฐ€ ์ผ์–ด๋‚˜์ง€ ์•Š๋Š”๋‹ค๋ฉด, receiver๋Š” ์ •๋ ฌ๋˜์ง€์•Š์€ tx id ์ง‘ํ•ฉ์„ ๊ฐ–๊ฒŒ๋˜๋ฏ€๋กœ, ๊ทธ๊ฑธํ† ๋Œ€๋กœ get_grblktx์š”์ฒญํ•˜์—ฌ grblktx๋ฅผ ๋ฐ›์Œ.
  1. ๋ฐ›์€ 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

  1. (Paper) Graphene: A New Protocol for Block Propagation Using Set Reconciliation
  1. Scaling Bitcoin Workshop : Stanford 2017 - Graphene set reconciliation8. Transcript
  1. (Scaling Bitcoin 2017 ๋ฐœํ‘œ์ž๋ฃŒ) Graphene: A New Protocol for Block Propagation Using Set Reconciliation
  1. Graphene ์†Œ๊ฐœ ์‚ฌ์ดํŠธ
  1. Graphene Ver1
  1. (Paper - Graphene Ver2์„ ์œ„ํ•œ ํ™•์žฅ๋ฒ„์ „) Graphene: A Probabilistic Data Structure for Efficient PRopagation of Large Blocks
  1. Bitcoin Unlimited์—์„œ ์ œ์•ˆ๋œ Graphene Ver2 ๊ธ€
  1. Graphene v2 Interim Report(2019.4.18)
  1. https://people.cs.umass.edu/~gbiss/graphene.sigcomm.pdf

ย 
๊ด€์‹ฌ ์ฃผ์ œ๋ฅผ ์„ ํƒํ•ด์ฃผ์„ธ์š”. ์„ ํƒํ•˜์ง€ ์•Š์œผ๋ฉด ๋ชจ๋“  ๊ธ€์„ ๊ตฌ๋…ํ•ฉ๋‹ˆ๋‹ค.