๋ธ๋ก์ฒด์ธ์ ๊ธฐ๋ฐ์ธ ๋ธ๋ก์ ์ฑ๊ตด(Mining)ํ๋ ๋ฐฉ๋ฒ ์ค PoW ๋ฐฉ์์ ๋ํด ์์๋ณด์.
๋ง๊ทธ๋๋ก ์์ฒญ๋ ์์
์ ํด์ ๊ทธ ์์
์ ์ฆ๋ช
ํจ์ผ๋ก ์ธํด ๋ธ๋ก์ ์ฑ๊ตดํ๋ ๋ฐฉ์์ด๋ค.
๊ทธ๋ผ์ฌ๊ธฐ์ ๋งํ๋ ์์
(work)์ด๋ ๋ฌด์์ผ๊น?
๋ฐ๋ก, Nonce ๋ฅผ ์ฐพ๋ ์ผ์ด๋ค.
PoW ๋ฐฉ์์๋ ๋์ด๋ ๋ชฉํ๊ฐ(target value)์ด๋ผ๋ ๊ฒ์ด ์กด์ฌํ๋ค.
์ด ๋ชฉํ๊ฐ๋ณด๋ค ๊ฐ๊ฑฐ๋ ์์ block์ hash๋ฅผ ๋ง์กฑ์ํค๋ Nonce ๋ฅผ ์ฐพ๋๊ฒ์ด ์ฑ๊ตด์ด๋ค.
ํด์ ์ฑ๊ตด์๋ค์ Nonce ๋ฅผ ๊ณ์ ๋ณ๊ฒฝํด ๊ฐ๋ฉฐ block์ hash ๊ฐ์ ๋ชฉํ๊ฐ๋ณด๋ค ๊ฐ๊ฑฐ๋ ์์ ๊ฐ์ผ๋ก ๋ง๋ค์ด์ฃผ๋ Nonce๋ฅผ ์ฐพ๋๋ค.
๊ทธ Nonce ๊ฐ์ ์ฐพ์ ์ฑ๊ตด์๋ ์ฑ๊ตด๋ณด์๊ณผ ํจ๊ป ํด๋น ๋ธ๋ก์ ๊ธฐ๋ก๋ ๊ฑฐ๋์์๋ฃ(transaction fees) ๋ฅผ ๋ณด์๋ฐ๊ฒ๋๋ค.
์ค์ PoW ๋ฐฉ์์ ์ฑํํ๊ณ ์๋ ๋นํธ์ฝ์ธ์ ์๋ก ๋ค์ด ์ค๋ช
ํด๋ณด๊ฒ ๋ค.
https://blockchain.info ๋ผ๋ ์ฌ์ดํธ์ ๋ค์ด๊ฐ๋ณด๋ฉด ์ง๊ธ๊น์ง ์์ฑ๋ ๋ชจ๋ ๋ธ๋ก์ ์ ๋ณด๋ฅผ ๋ณผ ์ ์๋ค.
๊ฑฐ๊ธฐ์ ํ์ฌ์์ ์์ ๊ฐ์ฅ ์ต๊ทผ ๋ธ๋ก์ธ #512706 ๋ฒ์งธ ๋ธ๋ก์ผ๋ก ์๋ฅผ ๋ค์ด๋ณด๊ฒ ๋ค.
์ ๊ทธ๋ฆผ์ ๋ณด๋ฉด Difficulty, Bits, Nonce, Hash 4๊ฐ์ง์ ๊ฐ์ ๋ณผ ์ ์์๊ฒ์ด๋ค.
๋ธ๋ก์ ํค๋
- ver (์ํํธ์จ์ด ๋ฒ์ ์ ๋ณด)
- prev_block (๋ถ๋ชจ ๋ธ๋ก์ ํด์)
- merkle_root (ํธ๋์ญ์
์ ๋จธํดํธ๋ฆฌ ํํด์๊ฐ)
- timestamp (๋ธ๋ก์ timestamp)
- bits
- nonce
์ 6๊ฐ์ง ์์๋ก byte๋ก ์ด์ด์คํ์
HEX ๋์ฝ๋ฉ -> SHA256 + digest() ๋๋ธํด์ -> HEX ์ธ์ฝ๋ฉ ์ฒ๋ฆฌํด์ฃผ๋ฉด
block์ hash๊ฐ ๊ตฌํ ์ ์๋ค.
๊ทธ๋ผ ์ ๋ด์ฉ์ ๊ฐ์ง๊ณ , #512706 ๋ธ๋ก์ ๊ฒ์ฆํด๋ณด๊ฒ ๋ค.
์ผ๋จ, ์ฐ๋ฆฌ๊ฐ ๋ง์กฑ์์ผ์ผํ๋ ๋ชฉํ๊ฐ์ ์์์ผํ๋๋ฐ ๋ชฉํ๊ฐ์ Bits ๊ฐ์ ํตํด ๊ตฌํ ์ ์๋ค.
target = coefficient * 2**(8 * (exponent -. 3))
** ๋ ๊ฑฐ๋ญ์ ๊ณฑ์ ์๋ฏธ
1. 10์ง์๋ก ํ์๋ Bits ๊ฐ์ 16์ง์๋ก ๋ณํ
391481763 -> 0x175589A3
2. ์์ ๋์๋ฆฌ์ธ 0x17์ ์ง์, 0x5589A3 ์ ๊ณ์
3. ์ ๊ณต์์ ๋์
target = 0x5589A3 * 2**(0x08 * (0x17 - 0x03))
target = 0x5589A3 * 2**(0x08 * 0x14)
target = 0x5589A3 * 2**(0xA0)
4. 10์ง๋ฒ์ผ๋ก ๋ณํ
target = 5605795 * 2**160
target โ 8.192878571041389E54
5. 16์ง์๋ก ๋ค์ ๋ณํ
target โ 0x0000000000000000005589A30000000000000000000000000000000000000000
๊ณ์ฐ๋ฒ์ ๋ฐ๋ผ ํ๊ฒ ๋ชฉํ๊ฐ์ด ์์ ๊ฐ์ด ๋์จ๋ค.
๋ณด๋ฉด, #512706 block์ hash ๊ฐ์ด ํด๋น ๋ชฉํ๊ฐ๋ณด๋ค ๋ฎ์์ ์ ์ ์๋ค.
์ ๋ฐฉ๋ฒ์ ํตํด์ PoW ๋ฐฉ์์ Nonce๋ฅผ ์ฐพ์ ์ฑ๊ตด์ ํ๊ณ , ์ฑ๊ตดํ ์๊ฐ ํด๋น ๋ธ๋ก์ ๋คํธ์ํฌ๋ฅผ ํตํด ์ ํ์ํจ๋ค.
์ ๋ฌ๋ฐ์ ๋ค๋ฅธ ๋
ธ๋๋ค์, ์ผ๋ จ์ ๊ฒ์ฆ์ ์ฐจ์ ๋ฐ๋ผ ๋ธ๋ก์ ๊ฒ์ฆํ๊ณ ์ ํจํ๋ฉด ์์ ์ ์ฒด์ธ์ ์ฐ๊ฒฐํ๊ฒ ๋๋ค.
๊ทธ๋ผ ๊ธฐ์กด์ ์ฑ๊ตดํ๊ณ ์๋ ๊ฒ์ ๋ฉ์ถ๊ณ ์๋ก MEMPOOL (ํธ๋์ญ์
์ด ๋ชจ์ฌ์๋ ํ) ์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ ์๋ก ์ฑ๊ตด์ ์์ํ๋ค.
๊ทธ๋ผ ๋์์ ์ฑ๊ตด ๋์ ๋๋ ์ด๋ป๊ฒ ์ฒ๋ฆฌ ๋๋๊ฐ? ์ด๋ ๋ค์ ํฌ์คํ ์์ ์ ๋ฆฌํ๋๋ก ํ๊ฒ ๋ค.
์ฐธ์กฐ: ๋นํธ์ฝ์ธ, ๋ธ๋ก์ฒด์ธ๊ณผ ๊ธ์ต์ ํ์ - ์๋๋ ์์ค M. ์ํ ๋ ธํ๋ก์ค