๐Ÿ“ ๋ธ”๋ก์ฒด์ธ ๊ฐ„๋‹จ ์ •๋ฆฌ

๋ง๊ณ ยท2022๋…„ 5์›” 10์ผ
0

๋ธ”๋ก์ฒด์ธ์ด๋ž€?

๋ธ”๋ก์ฒด์ธ์€ ๊ฐ„๋žตํžˆ '๋ถ„์‚ฐ์›์žฅ'(ๅˆ†ๆ•ฃๅ…ƒๅธณ, distributed ledger) ๊ธฐ์ˆ ์ด๋ผ๊ณ  ํ•œ๋‹ค.
๋‹ค์ˆ˜์˜ ์˜จ๋ผ์ธ ๊ฑฐ๋ž˜ ๊ธฐ๋ก์„ ๋ฌถ์–ด ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ ๋ธ”๋ก(block)์„ ๊ตฌ์„ฑํ•˜๊ณ , ํ•ด์‹œ(hash) ๊ฐ’์„ ์ด์šฉํ•˜์—ฌ ์ด์ „ ๋ธ”๋ก๊ณผ ์ดํ›„ ๋ธ”๋ก์„ ๋งˆ์น˜ ์ฒด์ธ(chain)์ฒ˜๋Ÿผ ์—ฐ๊ฒฐํ•œ ๋’ค, ์ด ์ •๋ณด์˜ ์ „๋ถ€ ๋˜๋Š” ์ผ๋ถ€๋ฅผ ํ”ผํˆฌํ”ผ(P2P) ๋ฐฉ์‹์œผ๋กœ ์ „ ์„ธ๊ณ„ ์—ฌ๋Ÿฌ ์ปดํ“จํ„ฐ์— ๋ณต์‚ฌํ•˜์—ฌ ๋ถ„์‚ฐ ์ €์žฅยท๊ด€๋ฆฌํ•˜๋Š” ๊ธฐ์ˆ ์ด๋‹ค.



๋ธ”๋ก์ฒด์ธ ๊ตฌ์กฐ

๋ธ”๋ก์ฒด์ธ์€ ํŠธ๋žœ์žญ์…˜์„ ๋‹ด์€ ๋ธ”๋ก๋“ค์„ ๋ธ”๋ก ํ•ด์‹œ๋กœ ์—ฐ๊ฒฐํ•œ ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค.

1. ๋ธ”๋ก

๋ธ”๋ก์€ ๋ธ”๋ก ํ•ด์‹œ, header, body, ๊ฑฐ๋ž˜ ์นด์šดํŠธ๋กœ ๊ตฌ์„ฑ


1.1. ๋ธ”๋ก ํ•ด์‹œ

๋ธ”๋ก ํ•ด์‹œ๋Š” ๋ธ”๋ก์˜ header ์ •๋ณด์ธ ๋ฒ„์ „, ์ด์ „ ๋ธ”๋ก ํ•ด์‹œ, ๋จธํด๋ฃจํŠธ, ํƒ€์ž„, bits/target, Nonce ๋ฅผ ๋ชจ๋‘ ๋”ํ•œ ํ•ฉ์„ SHA-256 ์œผ๋กœ ๋ณ€ํ™˜ํ•œ ๊ฒฐ๊ณผ ๊ฐ’. header ์ •๋ณด๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด ๋ธ”๋ก ํ•ด์‹œ ๋˜ํ•œ ๋ณ€๊ฒฝ


1.2. Header

A.	๋ฒ„์ „ 
	ํ•ด๋‹น ๋ธ”๋ก์˜ ๋ฒ„์ „ ์ •๋ณด

B.	์ด์ „ ๋ธ”๋ก ํ•ด์‹œ
	์ฒด์ธ์œผ๋กœ ์—ฐ๊ฒฐํ•œ ์ด์ „ ๋ธ”๋ก์˜ ๋ธ”๋ก ํ•ด์‹œ
    
C.	๋จธํด๋ฃจํŠธ
	Body์— ์ €์žฅ๋œ ํŠธ๋žœ์žญ์…˜๋“ค์˜ ํ•ด์‹œํŠธ๋ฆฌ์˜ ๋ฃจํŠธํ•ด์‹œ

D.	ํƒ€์ž„
	ํ•ด๋‹น ๋ธ”๋ก ์ƒ์„ฑ์‹œ๊ฐ„, 1970๋…„ 1์›” 1์ผ ์ž์ •๋ถ€ํ„ฐ ๊ฒฝ๊ณผํ•œ ์‹œ๊ฐ„์„ ์ดˆ๋‹จ์œ„๋กœ ๊ณ„์‚ฐ

E.	Bits/target
	๋‚œ์ด๋„ ํ•ด์‹œ ๋ชฉํ‘œ๊ฐ’, ๋…ผ์Šค๋ฅผ ์กฐ์ •ํ•ด ๋‚œ์ด๋„ ํ•ด์‹œ ๋ชฉํ‘œ๊ฐ’๋ณด๋‹ค ๋‚ฎ์€ ํ•ด์‹œ ๊ฐ’ ๋‚˜์˜ค๋ฉด ๋ธ”๋ก์„ ์ƒ์„ฑ. ์ด๋ฅผ ์ฑ„๊ตด์ด๋ผํ•จ

F.	Nonce
	๋‚œ์ด๋„ ๋ชฉํ‘œ ๊ฐ’๋ณด๋‹ค ๋‚ฎ์€ ํ•ด์‹œ ๊ฐ’์„ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด ์กฐ์ •ํ•˜๋Š” ๋ณ€์ˆ˜

1.3. Body

๊ฑฐ๋ž˜๋‚ด์—ญ์„ ํŠธ๋žœ์žญ์…˜์œผ๋กœ ์ €์žฅ. ํŠธ๋žœ์žญ์…˜์€ ๊ฑฐ๋ž˜๋‚ด์—ญ์˜ ๊ธฐ๋ณธ๋‹จ์œ„๋กœ ํ•˜๋‚˜์˜ ํŠธ๋žœ์žญ์…˜ ๋‹น ํ•˜๋‚˜์˜ ๊ฑฐ๋ž˜๋‚ด์—ญ์„ ๊ธฐ๋ก


1.4. ๊ฑฐ๋ž˜ ์นด์šดํŠธ

๊ฑฐ๋ž˜(ํŠธ๋žœ์žญ์…˜)์˜ ๊ฐœ์ˆ˜



2. ์ฒด์ธ ์—ฐ๊ฒฐ

ํ•˜๋‚˜์˜ ์ƒˆ๋กœ์šด ๋ธ”๋ก์„ ๊ตฌ์„ฑํ•œ ๊ฒฝ์šฐ, ์ฒด์ธ์ฒ˜๋Ÿผ ์ด์ „๋ถ€ํ„ฐ ์ด์–ด์ ธ ๋‚ด๋ ค์˜ค๋˜ ๋ธ”๋ก์ฒด์ธ์˜ ๋งจ๋์— ์ƒˆ๋กœ์šด ๋ธ”๋ก์„ ์—ฐ๊ฒฐ

์œ„ ๋ธ”๋ก ๊ตฌ์กฐ์—์„œ ์„ค๋ช…ํ•œ ์ฑ„๊ตด ๋ฐฉ์‹์œผ๋กœ ๋ชฉํ‘œ๊ฐ’๋ณด๋‹ค ๋‚ฎ์€ ํ•ด์‹œ๊ฐ’์„ ์ฐพ์•„๋‚ผ ๊ฒฝ์šฐ ์ƒˆ๋กœ์šด ๋ธ”๋ก์ด ์ƒ์„ฑ๋˜์–ด ๊ธฐ์กด ๋ธ”๋ก์ฒด์ธ์— ์—ฐ๊ฒฐ

์ƒˆ๋กœ์šด ๋ธ”๋ก์€ ์ƒ์„ฑ ๋‹น์‹œ ์ด์ „ ๋ธ”๋ก ํ•ด์‹œ ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ ์ด๋ฅผ ์—ฐ๊ฒฐ๋œ ์ด์ „ ๋ฒˆํ˜ธ์˜ ๋ธ”๋ก ํ•ด์‹œ์™€ ๋น„๊ตํ•ด ํ•ด๋‹น ๋ธ”๋ก์ฒด์ธ์˜ ๋ฌด๊ฒฐ์„ฑ์„ ๊ฒ€์ฆ



3. P2P ๋ถ„์‚ฐ ์ €์žฅ

P2P๋ž€ Peer to Peer์˜ ์•ฝ์ž๋กœ ์ธํ„ฐ๋„ท์—์„œ ์—ฐ๊ฒฐ๋œ ๋‹ค์ˆ˜์˜ ๊ฐœ๋ณ„ ์‚ฌ์šฉ์ž๋“ค์ด ์ค‘๊ฐœ๊ธฐ๊ด€์„ ๊ฑฐ์น˜์ง€ ์•Š๊ณ  ์ง์ ‘ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›๋Š” ๊ฒƒ์„ ๋งํ•จ

๋ธ”๋ก์ฒด์ธ์˜ ๋ฐ์ดํ„ฐ๋Š” ๋„คํŠธ์›Œํฌ์— ์—ฐ๊ฒฐ๋œ ๋ชจ๋“  ๋…ธ๋“œ์— ๋ณต์‚ฌ๋˜์–ด ๋ถ„์‚ฐ ์ €์žฅ

๋ธ”๋ก์ฒด์ธ ๋„คํŠธ์›Œํฌ์—์„œ ์ƒˆ๋กœ์šด ๊ฑฐ๋ž˜๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒฝ์šฐ ๋‚ด์—ญ์ด ๋„คํŠธ์›Œํฌ์— ์—ฐ๊ฒฐ๋œ ๋ชจ๋“  ๋…ธ๋“œ๋“ค์— ์ „ํŒŒ๋˜์–ด ์•Œ๋ ค์ง

๊ฐ ๋…ธ๋“œ๋“ค์€ ์ผ์ •์‹œ๊ฐ„ ๋™์•ˆ ์ด๋ฃจ์–ด์ง„ ๋ชจ๋“  ํŠธ๋žœ์žญ์…˜๋ฅผ ๋ฌถ์–ด ์ƒˆ๋กœ์šด ๋ธ”๋ก์„ ๊ตฌ์„ฑํ•˜๊ณ  ๋ชฉํ‘œ๊ฐ’ ์ดํ•˜์˜ ํ•ด์‹œ๊ฐ’์„ ์ฐพ๊ธฐ ์œ„ํ•ด ์„œ๋กœ ๊ฒฝ์Ÿ(์ฑ„๊ตด)

๊ฐ€์žฅ ๋จผ์ € ์ฑ„๊ตด์— ์„ฑ๊ณตํ•œ ๋…ธ๋“œ๊ฐ€ ๊ฒฝ์Ÿ์—์„œ ์Šน๋ฆฌํ•˜๊ฒŒ ๋˜๊ณ  ์ด๋ฅผ ๋ชจ๋“  ๋„คํŠธ์›Œํฌ์— ์•Œ๋ฆผ

๋„คํŠธ์›Œํฌ์— ์ฐธ์—ฌํ•œ ๋‹ค๋ฅธ ๋…ธ๋“œ๋“ค์€ ์ƒˆ๋กœ ์ƒ์„ฑ๋œ ๋ธ”๋ก์˜ ์œ ํšจ์„ฑ์„ ๊ฒ€์‚ฌํ•˜๊ณ  ๋ฌธ์ œ๊ฐ€ ์—†์„ ๊ฒฝ์šฐ ํ•ด๋‹น ๋ธ”๋ก์˜ ์ƒ์„ฑ์„ ์Šน์ธ, ์ฐธ์—ฌํ•œ ๋…ธ๋“œ๋“ค์˜ ๊ณผ๋ฐ˜์ˆ˜๊ฐ€ ์ด๋ฅผ ์Šน์ธํ•  ๊ฒฝ์šฐ ํ•ด๋‹น ๋ธ”๋ก์€ ์ •์‹๋ธ”๋ก์œผ๋กœ ์ฑ„ํƒ๋˜์–ด ๋ธ”๋ก์ฒด์ธ์— ์ถ”๊ฐ€

๋งŒ์•ฝ ์„œ๋กœ ๋‹ค๋ฅธ ๋ธ”๋ก์ด ๋™์‹œ์— ์ƒ์„ฑ๋  ๊ฒฝ์šฐ ๋„คํŠธ์›Œํฌ๋Š” ์ผ์ • ์‹œ๊ฐ„ ๊ธฐ๋‹ค๋ฆฌ๋ฉฐ ์ง€์ผœ๋ณด๋‹ค ๊ฐ€์žฅ ๊ธด ๊ธธ์ด๋ฅผ ๊ฐ€์ง„ ์ฒด์ธ์„ ์„ ํƒ

์ด ๋•Œ ์„ ํƒ๋˜์ง€ ๋ชปํ•œ ๋ธ”๋ก์€ ๋ฒ„๋ ค์ ธ ๊ณ ์•„๋ธ”๋ก(orphan block)์ด ๋จ



๋ธ”๋ก์ฒด์ธ ์ข…๋ฅ˜


1. ํผ๋ธ”๋ฆญ ๋ธ”๋ก์ฒด์ธ

๊ฐœ๋ฐฉํ˜• ๋ธ”๋ก์ฒด์ธ์œผ๋กœ ๋ˆ„๊ตฌ๋‚˜ ํŠธ๋žœ์žญ์…˜์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Œ
๋ˆ„๊ตฌ๋‚˜ ์ฐธ์—ฌํ•  ์ˆ˜ ์žˆ๊ณ  ๋ชจ๋“  ์ฐธ์—ฌ์ž์˜ ์ƒํ˜ธ ๊ฒ€์ฆ์„ ๊ฑฐ์ณ ์‹ ๋ขฐ๋„๊ฐ€ ๋†’์ง€๋งŒ ๋ชจ๋“  ์ฐธ์—ฌ์ž์˜ ๊ฑฐ๋ž˜ ๊ธฐ๋ก์„ ๋‚จ๊ธฐ๊ณ  ๊ณต์œ ํ•˜๋Š๋ผ ์ฒ˜๋ฆฌ ์†๋„๊ฐ€ ๋Š๋ฆผ

2. ํ”„๋ผ์ด๋น— ๋ธ”๋ก์ฒด์ธ

ํ์‡ ํ˜• ๋ธ”๋ก์ฒด์ธ์œผ๋กœ ์„œ๋น„์Šค ์ œ๊ณต์ž์˜ ์Šน์ธ์„ ๋ฐ›์•„์•ผ๋งŒ ์ฐธ์—ฌํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ฃผ๋กœ ๊ธฐ์—…์—์„œ ํ™œ์šฉํ•˜์—ฌ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๋ธ”๋ก์ฒด์ธ์ด๋ผ๊ณ ๋„ ํ•จ

3. ์ปจ์†Œ์‹œ์—„ ๋ธ”๋ก์ฒด์ธ

์—ฌ๋Ÿฌ ๊ธฐ์—…์ด ๊ณต๋™์œผ๋กœ ์ฐธ์—ฌํ•˜๋Š” ๋ธ”๋ก์ฒด์ธ


๊ตฌ๋ถ„ํผ๋ธ”๋ฆญ ๋ธ”๋ก์ฒด์ธ์ปจ์†Œ์‹œ์—„ ๋ธ”๋ก์ฒด์ธํ”„๋ผ์ด๋น— ๋ธ”๋ก์ฒด์ธ
๊ด€๋ฆฌ์ž๋ชจ๋“  ๊ฑฐ๋ž˜ ์ฐธ์—ฌ์ž์ปจ์†Œ์‹œ์—„ ์†Œ์† ์ฐธ์—ฌ์ž์ค‘์•™ ๊ธฐ๊ด€์ด ๋ชจ๋“  ๊ถŒํ•œ ๋ณด์œ 
๊ฑฐ๋ฒ„๋„Œ์Šค์ •ํ•ด์ง„ ๋ฒ•์น™์„ ๋ฐ”๊พธ๊ธฐ ์–ด๋ ค์›€์ปจ์†Œ์‹œ์—„ ์ฐธ์—ฌ์ž๋“ค์˜ ํ•ฉ์˜์— ๋”ฐ๋ผ ๋ณ€๊ฒฝ๊ฐ€๋Šฅ์ค‘์•™ ๊ธฐ๊ด€์˜ ์˜์‚ฌ๊ฒฐ์ •์— ๋”ฐ๋ผ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ
๊ฑฐ๋ž˜์†๋„๋„คํŠธ์›Œํฌ ํ™•์žฅ์ด ์–ด๋ ต๊ณ  ๊ฑฐ๋ž˜์†๋„๊ฐ€ ๋Š๋ฆผ๋„คํŠธ์›Œํฌ ํ™•์žฅ์ด ์‰ฝ๊ณ  ๊ฑฐ๋ž˜์†๋„๊ฐ€ ๋น ๋ฆ„๋„คํŠธ์›Œํฌ ํ™•์žฅ์ด ๋งค์šฐ ์‰ฝ๊ณ  ๊ฑฐ๋ž˜์†๋„๊ฐ€ ๋น ๋ฆ„
๋ฐ์ดํ„ฐ ์ ‘๊ทผ๋ˆ„๊ตฌ๋‚˜ ์ ‘๊ทผ ๊ฐ€๋Šฅํ—ˆ๊ฐ€๋ฐ›์€ ์‚ฌ์šฉ์ž๋งŒ ์ ‘๊ทผ๊ฐ€๋Šฅํ—ˆ๊ฐ€๋ฐ›์€ ์‚ฌ์šฉ์ž๋งŒ ์ ‘๊ทผ๊ฐ€๋Šฅ
์‹๋ณ„์„ฑ์ต๋ช…์„ฑ์‹๋ณ„๊ฐ€๋Šฅ์‹๋ณ„๊ฐ€๋Šฅ
๊ฑฐ๋ž˜์ฆ๋ช…PoW, PoS ๋“ฑ ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋”ฐ๋ผ ๊ฑฐ๋ž˜ ์ฆ๋ช…์ž๊ฐ€ ๊ฒฐ์ •๋จ. ์‚ฌ์ „์— ํ™•์ธ๋ถˆ๊ฐ€๊ฑฐ๋ž˜ ์ฆ๋ช…์ž๊ฐ€ ์ธ์ฆ์„ ๊ฑฐ์ณ ์•Œ๋ ค์ง„ ์ƒํƒœ์ค‘์•™ ๊ธฐ๊ด€์— ์˜ํ•˜์—ฌ ๊ฑฐ๋ž˜ ์ฆ๋ช…์ด ์ด๋ฃจ์–ด์ง
ํ™œ์šฉ์‚ฌ๋ก€๋น„ํŠธ์ฝ”์ธ, ์ด๋”๋ฆฌ์›€R3 CEV, Hyperledger fabric๊ฑฐ๋ž˜์†Œ ํ”Œ๋žซํผ โ€˜Linqโ€™
์—˜์ง€, ์‚ผ์„ฑ, ํ•œํ™” ๋“ฑ ๊ตญ๋‚ด ๋Œ€๊ธฐ์—…์˜ ์ž์ฒด ๊ฐœ๋ฐœ ๋ธ”๋ก์ฒด์ธ


์•”ํ˜ธํ™” ๊ธฐ์ˆ 


1. ํ•ด์‹œํ•จ์ˆ˜

ํ•ด์‹œ์˜ key๋ฅผ ๋ฐ›์•„ value๋ฅผ ์ƒ์„ฑํ•˜๋Š” ํ•จ์ˆ˜

ํ•ด์‹œ๋ž€ โ€˜์–ด๋–ค ๋ฐ์ดํ„ฐ๋ฅผ ๊ณ ์ •๋œ ๊ธธ์ด์˜ ๋ฐ์ดํ„ฐ๋กœ ๋ณ€ํ™˜โ€™ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธ

๋‹จ๋ฐฉํ–ฅ ๋ณ€ํ™˜์œผ๋กœ ํ•ด์‹œ๊ฐ’์„ ์ด์šฉํ•ด ์›๋ณธ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต์› ๋ถˆ๊ฐ€๋Šฅ

ex) SHA-256

2. ๋จธํดํŠธ๋ฆฌ(ํ•ด์‹œํŠธ๋ฆฌ)

์ด์ง„ํŠธ๋ฆฌ์˜ ์ผ์ข…์œผ๋กœ ํ•ด์‹œ๋กœ ์•”ํ˜ธํ™”๋œ ํŠธ๋žœ์žญ์…˜์„ ์ €์žฅํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ

๊ฐ ์ธ์ ‘ํ•œ ๋…ธ๋“œ(์•”ํ˜ธํ™”๋œ ํŠธ๋žœ์žญ์…˜)๋“ค์„ ํ•ฉํ•œ ๋‹ค์Œ,

๋‹ค์‹œ SHA-256์œผ๋กœ ์•”ํ˜ธํ™”ํ•ด ํ•ด์‹œ ๊ฒฐ๊ณผ๋ฅผ ๋งŒ๋“ค์–ด ๋ถ€๋ชจ๋…ธ๋“œ๋ฅผ ์ƒ์„ฑ

์œ„ ๊ณผ์ •์„ ๋…ธ๋“œ๋“ค์˜ ์Œ์„ ์ง€์„ ์ˆ˜ ์—†์„ ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณต, ์ตœ์ข…์ ์œผ๋กœ ์ƒ์„ฑ๋œ ๋ถ€๋ชจ๋…ธ๋“œ๋ฅผ ๋จธํด๋ฃจํŠธ๋ผ ํ•จ

๋จธํดํŠธ๋ฆฌ ๋…ธ๋“œ๋“ค์ด ํ•ด์‹œ๋กœ ์ด๋ฃจ์–ด์ง„ ๋งŒํผ ๋ธ”๋ก ๋‚ด ํ•„๋“œ๊ฐ’์ด ๋ณ€์กฐ๋  ๊ฒฝ์šฐ ๋จธํด๋ฃจํŠธ ํ•ด์‹œ๊ฐ’์ด ๋ณ€์กฐ๋˜๋Š” ์‡„๋„ ํšจ๊ณผ๊ฐ€ ๋ฐœ์ƒ. ์ด๋ฅผ ํ†ตํ•ด ๋ธ”๋ก์˜ ๋ฌด๊ฒฐ์„ฑ์„ ์œ ์ง€ ๋ฐ ๊ฒ€์ฆ

์ฐธ๊ณ ์ž๋ฃŒ

  1. http://wiki.hash.kr/index.php/%EB%B8%94%EB%A1%9D%EC%B2%B4%EC%9D%B8#cite_note-5
  2. http://wiki.hash.kr/index.php/%EB%A8%B8%ED%81%B4%ED%8A%B8%EB%A6%AC
  3. http://wiki.hash.kr/index.php/SHA256
  4. https://brunch.co.kr/@skkrypto/2
  5. https://steemit.com/kr/@yahweh87/3
  6. https://www.kiri.or.kr/pdf/%EC%97%B0%EA%B5%AC%EC%9E%90%EB%A3%8C/%EC%97%B0%EA%B5%AC%EB%B3%B4%EA%B3%A0%EC%84%9C/nre2018-24_02.pdf
  7. https://steemit.com/kr/@brownbears/merkle-tree

0๊ฐœ์˜ ๋Œ“๊ธ€