์๋ ํ์ธ์! KEEP!T์ ๋๋ค. ์ต์ด์ ์ํธํํ์ธ ๋นํธ์ฝ์ธ์ ๋๊ตฌ๋ ์ฝ๊ฒ ์ดํดํ ์ ์๋๋ก '๋นํธ์ฝ์ธ ๋ฝ๊ฐ๊ธฐ'๋ผ๋ ์ฃผ์ ๋ก ์ฝํ ์ธ ๋ฅผ ์ฐ์ฌํ๊ณ ์์ต๋๋ค. ์ง๋ '๋นํธ์ฝ์ธ ๋ฝ๊ฐ๊ธฐ 2ํธ'์์๋ ๋นํธ์ฝ์ธ์์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ธฐ ์ํ ์๋จ์ผ๋ก ์ ๋ธ๋ก์ฒด์ธ ๊ธฐ์ ์ ํ์ฉํ๋์ง์ ๋ํ ๋ด์ฉ์ ์ ๋ฌํด๋๋ ธ์ต๋๋ค.
์ค๋์ ๋นํธ์ฝ์ธ์ ๋ธ๋ก ๊ตฌ์กฐ๋ ์ด๋ป๊ฒ ๊ตฌ์ฑ๋์ด ์๊ณ , ์ด๋ค ์ญํ ์ ์ํํ๋์ง์ ๋ํด์ ์์ธํ ์์๋ณด๋ ์๊ฐ์ ๊ฐ๋๋ก ํ๊ฒ ์ต๋๋ค. ํน์ ํน์ ์์ ๋นํธ์ฝ์ธ ๋ฝ๊ฐ๊ธฐ ์๋ฆฌ์ฆ๋ฅผ ์ฝ์ง ์์ผ์ จ๋ ๋ถ๋ค์ ์๋์ ๋งํฌ๋ฅผ ํตํด ์ฝ์ด๋ณด์๋ ๊ฒ๋ ์ข์ ๊ฒ ๊ฐ์ต๋๋ค.
๋ธ๋ก์ ๋ธ๋ก์ฒด์ธ์ ์์ ๊ฐ๋ ์ผ๋ก ๋ธ๋ก์ ์ํ ์ ๋ณด์, ๋ค์์ ํธ๋์ญ์ (๊ฑฐ๋) ์ ๋ณด๊ฐ ํฌํจ๋์ด ์์ผ๋ฉฐ, ๋ธ๋ก์ฒด์ธ(๋ฐ์ดํฐ ๋ฒ ์ด์ค)์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ธฐ ์ํ ๋ฐ์ดํฐ ๋ฌถ์์ด๋ผ๊ณ ์๊ฐํ์๋ฉด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค.
๋ธ๋ก์ Height(๋์ด)๋ผ๋ ์ฉ์ด๋ก ๋ถ๋ฆฌ๋ฉฐ, ๋ธ๋ก์ฒด์ธ์ด ๊ธธ๊ฒ ์ด์ด์ง ์ํ์ ์ผ๋ก ๋ณด๋ ๊ฒ์ด ์๋๋ผ ํ ์นธ์ฉ ์์๋๊ฐ๋ ํ์ ํํ๋ก ๊ตฌ์ฑ๋๋ค๊ณ ์๊ฐํ์ฌ Height(๋์ด)๋ผ๋ ๋ง์ ์ด๋ค๊ณ ํฉ๋๋ค. ๋นํธ์ฝ์ธ ๋คํธ์ํฌ์์๋ ํ๊ท ์ ์ผ๋ก 10๋ถ์ ํ ๋ฒ์ฉ ๋ธ๋ก์ด ์์ฑ๋ ์ ์๋๋ก ์ค๊ณ๋์์ผ๋ฉฐ, ๋ธ๋ก์ ํฌ๊ธฐ๋ 1MB๋ก ์ฝ 1800-4200๊ฑด์ ๊ฑฐ๋๋ด์ญ์ ๋ด์ ์ ์์ต๋๋ค. ์ด๋ฌํ ๋ธ๋ก์ ๋ค์๊ณผ ๊ฐ์ด ํฌ๊ฒ 3๊ฐ์ง ์ ๋ก๋ ๋๋์ด๋ณผ ์ ์์ต๋๋ค.
๋ธ๋ก ํด์๋ธ๋ก ํค๋๋ธ๋ก ๋ฐ๋๋ธ๋ก์ ์๋ณ์ ์ญํ ์ ์ํํ๋
๋ธ๋ก ํด์์ ๋ณด๋ ๋ธ๋ก ํค๋ ์ ๋ณด๋ฅผ ํด์ํ ๊ฒฐ๊ณผ๊ฐ์ด๋ฉฐ, ๋ธ๋ก ํด์ ์ ๋ณด๋ฅผ ์ดํดํ๊ธฐ ์ํด์๋ ๋จผ์ ๋ธ๋ก ํค๋์ ๊ตฌ์ฑ์์์ ์ญํ ์ ๋ํ ๊ฐ๋ ์ ๋ฆฌ๊ฐ ํ์ํฉ๋๋ค.
๋ธ๋ก ํค๋๋ ๋ธ๋ก์ ์ํ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ ๋ค์๊ณผ ๊ฐ์ ๊ตฌ์ฑ์์๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค.
๋ธ๋ก ํค๋์ ์ ์ฅ๋๋ ๋ฒ์ ์ ๋ณด๋ ๋ธ๋ก์ด ๋ง๋ค์ด์ง ์์ ์ ์ด๋ค ์ํํธ์จ์ด ์ ๋ณด๋ฅผ ์ฌ์ฉํ๋์ง์ ๋ํด ๊ธฐ๋ก์ด๋ฉฐ, ๋ธ๋ก ์์ฑ ์์ ์์ ์ฌ์ฉ๋ ์ํํธ์จ์ด ๋ฒ์ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค.
์ด์ ๋ธ๋กํด์์ ๋ณด๋ ์๋ก์ด ๋ธ๋ก์ด ์์ฑ๋๋ ์์ ์์ ๋ฐ๋ก ์ด์ ๋ธ๋ก์ ๋ธ๋ก ํด์์ ๋ณด๋ฅผ ์ฐธ์กฐํฉ๋๋ค. ๋ธ๋ก์ด ์์ฑ๋๋ ์์ ์์ ์ด์ ๋ธ๋ก ํด์ ์ ๋ณด๋ฅผ ์ฐธ์กฐํจ์ผ๋ก์จ ๋ธ๋ก๊ณผ ๋ธ๋ก์ด ์ฒด์ธ(๋งํฌ๋ ๋ฆฌ์คํธ)ํํ๋ก ์ฐ๊ฒฐ๋ ์๋ฃ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง ์ ์์์ต๋๋ค.
์์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด 3307๋ฒ์งธ ๋ธ๋ก์ ์ด์ ๋ธ๋ก ํด์ ์ ๋ณด๋ 3306๋ฒ์งธ ๋ธ๋ก์ ๋ธ๋ก ํด์ ์ ๋ณด๋ฅผ ์ฐธ์กฐํ๊ณ ์์ผ๋ฉฐ, 3306๋ฒ์งธ ๋ธ๋ก ๋ํ ๋ง์ฐฌ๊ฐ์ง๋ก ์ด์ ๋ธ๋ก์ธ 3305๋ฒ์งธ ๋ธ๋ก์ ๋ธ๋ก ํด์ ์ ๋ณด๋ฅผ ์ฐธ์กฐํ๊ฒ ๋ฉ๋๋ค.
์ด๋ฌํ ๋ฐฉ์์ผ๋ก ์ต์ด์ ๋ธ๋ก์ธ ์ ๋ค์์ค ๋ธ๋ก๊น์ง ๋ชจ๋ ๋ธ๋ก์ด ์๊ฐ์ ํ๋ฆ ์์์ ๋ฐ๋ผ ์ฐ๊ฒฐ๋์ด ์์ผ๋ฉฐ, ๋ธ๋ก๊ณผ ๋ธ๋ก์ด ์ด๋ฌํ ๋ฐฉ์์ผ๋ก ์ฒด์ธ ํํ์ฒ๋ผ ์ฐ๊ฒฐ๋์ด ์๋ค๊ณ ํ์ฌ ๋ธ๋ก์ฒด์ธ์ด๋ผ๊ณ ํํํ๋ ๊ฒ์ ๋๋ค.
'๋จธํดํธ๋ฆฌ(Merkle Tree)' ํน์ 'ํด์ํธ๋ฆฌ(Hash Tree)'๋ผ๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ 1979๋ Ralph Merkle์ด ํนํ๋ฅผ ๋ธ ๊ฐ๋ ์ผ๋ก ๋์ฉ๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ์ ๋ด์ฉ์ ํจ์จ์ ์ด๊ณ ์์ ํ๊ฒ ํ์ธํ ์ ์๋ ์ฅ์ ์ด ์์ต๋๋ค.
๋ธ๋ก์ฒด์ธ์์ ์ฌ์ฉ๋๋ ๋จธํดํธ๋ฆฌ๋ ๋ฐ์ดํฐ์ ๊ฐํธํ๊ณ ํ์คํ ์ธ์ฆ์ ์ํด ์ฌ์ฉ๋๋ฉฐ, ๋ธ๋ก ๋ฐ๋์ ์ ์ฅ๋ ํธ๋์ญ์ ๋ค์ ๋จธํด ํธ๋ฆฌํ ์ต์ข ๊ฒฐ๊ณผ ๊ฐ์ด ๋ฐ๋ก '๋จธํด ๋ฃจํธ(Merkle Root)' ์ ๋ณด ์ ๋๋ค.
๋จธํด๋ฃจํธ ์ ๋ณด๋ฅผ ํตํด ๋ธ๋ก ๋ฐ๋์ ์ ์ฅ๋ ๊ฑฐ๋ ๋ด์ญ ์ ๋ณด์ธ TXID์ ์ ๋ณด๊ฐ ๋ณ์กฐ๋์๋์ง์ ๋ํ ์ ํจ์ฑ์ ์ฝ๊ณ ๋น ๋ฅด๊ฒ ํ์ธํ ์ ์์ผ๋ฉฐ, ๋ง์ฝ ๋ธ๋ก ํค๋ ์ ๋ณด์ธ ๋จธํด ๋ฃจํธ ์ ๋ณด๊ฐ ๋ณ๊ฒฝ๋์์ ๊ฒฝ์ฐ ๋ธ๋กํด์ ์ ๋ณด๊น์ง ๋ณ๊ฒฝ๋จ์ผ๋ก ๋ธ๋ก์ ์ ํจ์ฑ ๋ํ ์ฝ๊ฒ ๊ฒ์ฌํ ์ ์์ต๋๋ค.
๋ณด๋ค ์ฌ๋ ์๊ฒ ๋จธํด ๋ฃจํธ(Merkle Root)๋ฅผ ์ดํดํ๊ธฐ ์ํด์๋ ๋จธํด ๋ฃจํธ ์ฐ์ฐ ๊ณผ์ ์ ๋ํ ์ดํด๊ฐ ํ์ํ๋ฉฐ, ์ฐ์ฐ ๊ณผ์ ์ ์ดํดํ๊ธฐ ์ํด์๋
ํธ๋ฆฌ ๊ตฌ์กฐ์,์๋์์ ๋ํ ๊ฐ๋ ์ ๋ฆฌ๊ฐ ํ์ํฉ๋๋ค.
ํธ๋ฆฌ๊ตฌ์กฐ๋ ๊ทธ๋ํ์ ์ผ์ข ์ผ๋ก, ์ฌ๋ฌ ๋ ธ๋๊ฐ ํ ๋ ธ๋๋ฅผ ๊ฐ๋ฆฌํฌ ์ ์๋ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ, ํธ๋ฆฌ ๊ตฌ์กฐ์์ ์์์ด ์๋ ์์์ด ์๋ ์ตํ์ ๋ ธ๋๋ฅผ
์ ๋ ธ๋(leaf node)๋ผ ํํํ๋ฉฐ, ์ ๋ ธ๋๊ฐ ์๋ ๋ ธ๋๋ฅผ๋ด๋ถ ๋ ธ๋(internal node), ๋ง์ง๋ง์ผ๋ก ์ต์์ ๋ ธ๋๋ฅผ๋ฃจํธ ๋ ธ๋(root node)๋ผ๊ณ ํํํฉ๋๋ค.
์๋์์ ์ปดํจํฐ์ ๋ฉ๋ชจ๋ฆฌ์ ๊ฐ์ 1์ฐจ์ ๊ณต๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๋ฐฉ๋ฒ์ ๋ํ ๋ด์ฉ์ด๋ฉฐ, ์ปดํจํฐ์์ ์ด๋ค ํฌ๊ธฐ์ ๋ฐ์ดํฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํ ๋ ๋ฐ์ดํธ ๋จ์๋ก ๋๋์ด์ ์ ์ฅํ๊ฒ ๋ฉ๋๋ค. CPU์ ์ค๊ณ๊ฐ ์ด๋ป๊ฒ ์ด๋ฃจ์ด์ก๋์ง์ ๋ฐ๋ผ์ ๋ฐ์ดํธ ์ ์ฅ์์๊ฐ ๋ฌ๋ผ์ง๋ฉฐ, ๋ฎ์(์์) ์ฃผ์์ ํ์ ๋ฐ์ดํธ๋ก๋ถํฐ ๊ธฐ๋ก๋๋ Intel CPU ๊ณ์ด์ ๋ฆฌํ-์๋์(Little-Endian), ๋ฎ์(์์) ์ฃผ์์์ ์์ ๋ฐ์ดํธ๋ก ๋ถํฐ ๊ธฐ๋ก๋๋ Sparc / RISC CPU ๊ณ์ด์ ๋น
-์๋์(Big-Endian)์ด๋ผ๊ณ ํ๋ฉฐ, ๋ ๊ฒฝ์ฐ์ ์ํ์ง ์๊ฑฐ๋ ๋์ ๋ชจ๋ ์ง์ํ๋ ๊ฒ์ ๋ฏธ๋ค ์๋์(Middle-endian)์ด๋ผ๊ณ ํฉ๋๋ค.
์กฐ๊ธ ์ฝ๊ฒ ํ์ด์ ์ค๋ช ์ ํด๋ณด์๋ฉด, ์ปดํจํฐ๋ 0๊ณผ 1์ ์ ๊ธฐ์ ์ ํธ๋ฅผ ์ฒ๋ฆฌํ๋ ๊ธฐ๊ณ์ ๋๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ฐ๋ฆฌ๊ฐ ํ์ฌ ๋ณด๊ณ ์๋ ํ๊ธ ๋ฌธ์์ด ๋ฐ์ดํฐ๋ฅผ ๊ทธ๋๋ก ์ปดํจํฐ์ ์ ์ฅํ ์ ์์ผ๋ฉฐ, ์ปดํจํฐ์ ๋ฉ๋ชจ๋ฆฌ์ ๊ฐ์ 1์ฐจ์ ๊ณต๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ธฐ ์ํด์๋ ์ปดํจํฐ๊ฐ ์ดํดํ ์ ์๋ ํํ์ ๋ฐ์ดํฐ๋ก ๋ณํํ์ฌ ์ ์ฅํด์ผํฉ๋๋ค.
์ปดํจํฐ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๋ฐฉ๋ฒ์ ๊ดํ ๊ฐ๋ ์ด ๋ฐ๋ก ์๋์์ ๊ฐ๋ ์ด๋ฉฐ, CPU์ ์ค๊ณ์ ๋ฐ๋ผ ๋ฐ์ดํธ์ ์ ์ฅ ์์๊ฐ ๋ฌ๋ผ์ง๊ธฐ ๋๋ฌธ์ ์ฌ๋ฌ ๊ฐ์ง ํํ์ ์๋์ ๋ฐฉ์์ด ์๋ค๊ณ ์๊ฐํ์๋ฉด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค. (ํ์ค์ ๋น ์๋์ ๋ฐฉ์์ด๋ผ๊ณ ํฉ๋๋ค.)
๋จธํด ๋ฃจํธ ๊ฒฐ๊ณผ ๊ฐ์ ๋ธ๋ก๋ฐ๋์ ์ ์ฅ๋ TXID ์ ๋ณด๋ฅผ ๋จธํด ํธ๋ฆฌํ ๊ฒฐ๊ณผ ๊ฐ์ ๋๋ค. ๊ทธ๋ ๋ค๋ฉด TXID ์ ๋ณด๋ฅผ ํ ๋๋ก ์ด๋ป๊ฒ ๋จธํด ๋ฃจํธ ๊ฒฐ๊ณผ ๊ฐ์ ๊ตฌํ๋์ง ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
์กฐ๊ธ ๋ ๊นํ ์๋ ํ์ต์์ํด, ๋จธํด ๋ฃจํธ ์ฐ์ฐ ๊ณผ์ ์ด ์ ํํ ์ฝ๋์์ผ๋ก ์ด๋ป๊ฒ ์ด๋ฃจ์ด์ง๋์ง ํ์ธํ๊ณ , ์ค์ ๊ฐ์ด ์ ์์ ์ผ๋ก ๊ตฌํด์ง๋์ง ๊ฒ์ฆํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
๊ฑฐ๋๋ด์ญ์ด ๋ง์ ๊ฒฝ์ฐ ์ดํดํ๊ธฐ ์ด๋ ค์ด ๊ด๊ณ๋ก '๋ธ๋ก์ฒด์ธ ์ธํฌ' ์ฌ์ดํธ๋ฅผ ํตํด ๊ฑฐ๋๋ด์ญ์ด ๋๊ฑด์ธ ๋ธ๋ก ์ ๋ณด๋ฅผ ์ฐพ์์ต๋๋ค. ์์ธํ ์ ๋ณด๋ ์๋์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ต๋๋ค.
๋ธ๋ก #99997์ ๋จธํด ๋ฃจํธ ๊ฐ์ 5140e5972f672bf8e81bc189894c55a410723b095716eaeec845490aed785f0e์ด๋ฉฐ ๋ธ๋ก ๋ฐ๋์ ์ ์ฅ๋ ๊ฑฐ๋๋ด์ญ์ธ TXID ์ ๋ณด๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
b86f5ef1da8ddbdb29ec269b535810ee61289eeac7bf2b2523b494551f03897c80c6f121c3e9fe0a59177e49874d8c703cbadee0700a782e4002e87d862373c6์์ ๋๊ฐ์ TXID ์ ๋ณด๋ฅผ ํตํด Merkle Root ๊ฐ์ ๊ตฌํ๋ ์์ ์์ค๋ ์๋์ ๊ฐ์ต๋๋ค. (์์ ์์ค๋ PHP๋ก ์์ฑ๋์์ต๋๋ค.)
<?
function swapendian($data) {
return implode('', array_reverse(str_split($data, 2)));
}
function hextobin($hexstr)
{
$n = strlen($hexstr);
$sbin="";
$i=0;
while($i<$n)
{
$a =substr($hexstr,$i,2);
$c = pack("H*",$a);
if ($i==0){$sbin=$c;}
else {$sbin.=$c;}
$i+=2;
}
return $sbin;
}
//-- TXID ์ ๋ณด.
$tx_1 = 'b86f5ef1da8ddbdb29ec269b535810ee61289eeac7bf2b2523b494551f03897c';
$tx_2 = '80c6f121c3e9fe0a59177e49874d8c703cbadee0700a782e4002e87d862373c6';
//-- 1. ๋ชจ๋ ์ ๋
ธ๋์ TXID ์ ๋ณด๋ฅผ ๋น
-์๋์ ํํ๋ก ๋ณํํ๋ค.
//-- 1-1. TXID ๋ฌธ์์ด ์ ๋ณด๋ฅผ ์ค์ํ๋ค.
$endian_tx_1 = swapendian($tx_1);
$endian_tx_2 = swapendian($tx_2);
//-- 1-2. ์ค์ํ ๋ฌธ์์ด์ ๋ฐ์ด๋๋ฆฌ ํํ๋ก ๋ณํํ๋ค.
$binary_tx_1 = hextobin($endian_tx_1);
$binary_tx_2 = hextobin($endian_tx_2);
//-- 2. ๋ ๋
ธ๋์ ๋ฌธ์์ด์ ํฉ์น ํ ์ด์ค ํด์ํ๋ค.
$res_tx_1 = hash('sha256', hash('sha256', $binary_tx_1.$binary_tx_2, true), true);
//-- 3. ๊ฒฐ๊ณผ ๊ฐ์ ๋ฆฌํ ์๋์ ํํ๋ก ๋ณํ ํ๋ค.
// (๋ฐ์ด๋๋ฆฌ ๊ฐ์ hex ๊ฐ์ผ๋ก ์ถ๋ ฅ, ์ถ๋ ฅ๋ ๊ฐ์ ์ค์ํ๋ค.)
$merkleroot = swapendian(bin2hex($res_tx_1));
echo $merkleroot;
?>
์์ ์์ ์์ค๋ฅผ ์กฐ๊ธ ๊ฐ๋ตํ๊ฒ ๋ค์ ์ค๋ช ํด๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค
(1) ๋ธ๋ก ๋ฐ๋์ ์ ์ฅ๋ ๋ชจ๋ TXID ์ ๋ณด๋ ์ ๋ ธ๋(leaf node)์ด๊ธฐ ๋๋ฌธ์, ๋ TXID ๊ฐ์ ๋ชจ๋ ๋น -์๋์ ํํ๋ก ๋ณํํ๊ธฐ ์ํ์ฌ, ๋ฌธ์์ด์ ์ค์ํ๊ณ , ์ค์๋ ๋ฌธ์์ด์ ๋ฐ์ด๋๋ฆฌ ์ ๋ณด๋ก ๋ณ๊ฒฝํ์์ต๋๋ค.
(2) ๋ TXID ๋ฌธ์์ด์ ์ด์ด ๋ถ์ธ ํ SHA 256 ํจ์๋ก ํด์ ๊ฐ์ ์ถ๋ ฅํ๊ณ , ์ถ๋ ฅ๋ ํด์ ๊ฐ์ ๋ค์ SHA 256 ํจ์๋ฅผ ํตํด ํด์ ๊ฐ์ผ๋ก ์ถ๋ ฅํ์์ต๋๋ค.
(3) ๊ฒฐ๊ณผ ๊ฐ์ด ์ต์ข ์ ์ผ๋ก ํ๋๋ง ๋จ๊ฒ๋์์ผ๋ฏ๋ก ๋ฆฌํ ์๋์ ํํ๋ก ๋ณํํ๊ธฐ ์ํด, ๋ฐ์ด๋๋ฆฌ ๊ฐ์ hex ๊ฐ์ผ๋ก, ์ถ๋ ฅ๋ hex ๊ฐ์ ๋ค์ ์ค์ํ์์ต๋๋ค.
(4) Merkle Root ๊ฒฐ๊ณผ ๊ฐ์ ํ๋ฉด์ ์ถ๋ ฅํ์์ต๋๋ค.
์์ ์์ค๋ฅผ ์คํํ ํ ๊ฒฐ๊ณผ ๊ฐ์ด ๋ธ๋ก #99997์ ๋จธํด๋ฃจํธ ๊ฒฐ๊ณผ ๊ฐ๊ณผ ๋์ผํ์ง ํ์ธํด๋ณด๊ฒ ์ต๋๋ค.
๋จธํด ๋ฃจํธ ๊ฒฐ๊ณผ๊ฐ์ ์ถ๋ ฅํ ๊ฒฐ๊ณผ, ์ค์ ๋ธ๋ก์ ๋จธํด ๋ฃจํธ ๊ฐ๊ณผ ์ ํํ๊ฒ ์ผ์นํ๋๊ฒ์ ํ์ธํ์์ต๋๋ค.
๋ง์ฝ TXID ์ ๋ณด๊ฐ ํ๋๋ง์์ ๊ฒฝ์ฐ์๋ ์ด๋ป๊ฒ ๋จธํด ๋ฃจํธ ๊ฐ์ ๊ตฌํ ์ ์์๊น์? TXID ์ ๋ณด๊ฐ ํ๋๋ง ์์ ๊ฒฝ์ฐ์๋ ๋์ด์ ๋จธํด ํธ๋ฆฌํ ๊ฒฐ๊ณผ ๊ฐ์ด ์์ผ๋ฏ๋ก TXID ์ ๋ณด๊ฐ ๋จธํด ๋ฃจํธ ๊ฐ์ด ๋ฉ๋๋ค. 3๊ฐ์ TXID ์ ๋ณด๊ฐ ์์ ๊ฒฝ์ฐ์๋ 1~2๋ฒ์ ๋ ธ๋์ ๋จธํด ํธ๋ฆฌ ๊ฒฐ๊ณผ๊ฐ์ 3๋ฒ ๋ ธ๋๋ฅผ ๊ฒฐํฉํ์ฌ ๋จธํด ํธ๋ฆฌํ ๊ฒฐ๊ณผ ๊ฐ์ด ๋จธํด ๋ฃจํธ ๊ฒฐ๊ณผ๊ฐ์ด๋ฉ๋๋ค.
๊ฒฐ๊ตญ ์ต์ข ์ ์ผ๋ก ํ๋์ ๋จธํด ํธ๋ฆฌ ๊ฒฐ๊ณผ ๊ฐ์ด ๋จ์ ๋ ๊น์ง ๊ณ์์ ์ผ๋ก ์ฐ์ฐํ๊ณ , ์ฐ์ฐ๋ ์ต์ข ๊ฒฐ๊ณผ ๊ฐ์ด ๋จธํด ๋ฃจํธ ์ ๋ณด๊ฐ ๋๋๊ฒ์ ๋๋ค. ์์ ์์ ์ฝ๋๋ ์ดํด๋ฅผ ๋๊ธฐ ์ํด ๋ถํ์ํ ์์ค๊ฐ ์ผ๋ถ ์ ๊ฑฐ๋ ์ฝ๋์ด๋ฉฐ, ์ ์ฒด์ ์ผ๋ก ๋ค์์ TXID ์ ๋ณด๋ฅผ ํตํด ๋จธํด ๋ฃจํธ ๊ฐ์ ๊ตฌํ๋ ์์ ๋ github์ in3rsha๋๊ป์ ์คํ ์์ค ํํ๋ก ์ ๊ณตํ ์์ค๋ฅผ ์ฐธ์กฐํ์๋ฉด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค. (์คํ์์ค ๋งํฌ)
๋ธ๋ก์ฒด์ธ์ ๋ธ๋ก๊ณผ ๋ธ๋ก์ด ์ฒด์ธ(๋งํฌ๋ ๋ฆฌ์คํธ) ํํ๋ก ์ฐ๊ฒฐ๋ ์๋ฃ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ, ๋ธ๋ก์๋ ๋ธ๋ก์ ์ํ์ ๋ณด์ ๋ค์์ ๊ฑฐ๋์ ๋ณด๊ฐ ํฌํจ๋์ด ์์ต๋๋ค. ์ด๋ฌํ ๋ธ๋ก์ ํฌ๊ฒ ๋ธ๋กํด์, ๋ธ๋ก ํค๋, ๋ธ๋ก ๋ฐ๋๋ก ๋๋์ด๋ณผ ์ ์์ต๋๋ค.
๋จธํด ํธ๋ฆฌ๋ ๋ฐ์ดํฐ์ ๊ฐํธํ๊ณ ํ์คํ ์ธ์ฆ์ ์ํด ์ฌ์ฉ๋๋ฉฐ, ๋ธ๋ก ๋ฐ๋์ ์ ์ฅ๋ TXID ์ ๋ณด๋ฅผ ํตํด ๋จธํด ํธ๋ฆฌํ ์ต์ข
๊ฒฐ๊ณผ ๊ฐ์ด ๋ฐ๋ก '๋จธํด ๋ฃจํธ(Merkle Root)' ์ ๋ณด์
๋๋ค.
๋จธํด ๋ฃจํธ(Merkle Root) ์ ๋ณด๋ฅผ ํตํด ๋ธ๋ก ๋ฐ๋์ ์ ์ฅ๋ ๊ฑฐ๋ ๋ด์ญ ์ ๋ณด์ธ TXID์ ์ ๋ณด๊ฐ ๋ณ์กฐ๋์๋์ง์ ๋ํ ์ ํจ์ฑ์ ์ฝ๊ณ ๋น ๋ฅด๊ฒ ํ์ธํ ์ ์์ผ๋ฉฐ, ๋ง์ฝ ๋ธ๋ก ํค๋ ์ ๋ณด์ธ ๋จธํด ๋ฃจํธ ์ ๋ณด๊ฐ ๋ณ๊ฒฝ๋์์ ๊ฒฝ์ฐ ๋ธ๋กํด์ ์ ๋ณด๊น์ง ๋ณ๊ฒฝ๋จ์ผ๋ก ๋ธ๋ก์ ์ ํจ์ฑ ๋ํ ์ฝ๊ฒ ๊ฒ์ฌํ ์ ์์์ต๋๋ค.
๋ง์ฝ ๋ธ๋ก ๋ฐ๋์ ์ ์ฅ๋ ๊ฑฐ๋๋ด์ญ์ด 4,000๊ฑด์ด๋ผ๊ณ ๊ฐ์ ํ์ ๊ฒฝ์ฐ ํด๋น ๋ธ๋ก์ ๊ฑฐ๋ ์ ๋ณด๊ฐ ์กฐ์๋์๋์ง ๊ฒ์ฆํ๊ธฐ ์ํด์ ํ๋์ ๋์กฐํ์ฌ ๊ฒ์ฆํ๊ฒ๋๋ฉด ์์ฒญ๋ ์์์ด ๋ญ๋น๋๊ณ , ๋งค์ฐ ๋นํจ์จ์ ์ผ๊ฒ์
๋๋ค. ํ์ง๋ง ํด์ ํจ์์ ํน์ง์ธ ์
๋ ฅ ๊ฐ์ ์ ๋ณด๊ฐ ์กฐ๊ธ์ด๋ผ๋ ๋ณ๊ฒฝ๋์์ ๊ฒฝ์ฐ ์ ํ ๋ค๋ฅธ ๊ฒฐ๊ณผ ๊ฐ์ ์ถ๋ ฅํ๊ณ , ๋์ผํ ์
๋ ฅ๊ฐ์ ํญ์ ๊ฐ์ ๊ฒฐ๊ณผ ๊ฐ์ ์ถ๋ ฅํ๋ ํน์ง์ ํ์ฉํ๋ค๋ฉด ๋งค์ฐ ํจ๊ณผ์ ์ธ ๊ฒ์ฆํ ์ ์๊ฒ๋ฉ๋๋ค.
์กฐ๊ธ๋ ์ดํด๋ฅผ ๋๊ธฐ ์ํด ๋ค์์ ๊ทธ๋ฆผ์ ์ดํด๋ณด๋๋กํ๊ฒ ์ต๋๋ค.
์์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ๋ง์ฝ TX 1๋ฒ์ ๋ฐ์ดํฐ๊ฐ ์กฐ์๋์์ ๊ฒฝ์ฐ, ํด์ ํจ์์ ํน์ง์ผ๋ก ์ธํด ์์ ๋ ธ๋์ ๋จธํด ํธ๋ฆฌ ๊ฐ์ด ์ ํ ๋ค๋ฅธ ๊ฒฐ๊ณผ ๊ฐ์ด ์ถ๋ ฅ๋๊ณ , ์ต์ข ์ ์ผ๋ก ๋จธํด ๋ฃจํธ ๊ฒฐ๊ณผ ๊ฐ๊น์ง ๋ณ๊ฒฝ๋ฉ๋๋ค.
์ฆ, ๋ธ๋ก ๋ฐ๋์ ์ ์ฅ๋ ๊ฑฐ๋ ๋ด์ญ ๋ฐ์ดํฐ ์ค ์ด๋ค ๋ฐ์ดํฐ๋ฅผ ์์ ํ๋๋ผ๋ ๋จธํด ๋ฃจํธ ๊ฐ์ด ๋ณ๊ฒฝ๋๊ณ , ๋์๊ฐ ๋ธ๋ก ํด์ ์ ๋ณด๊น์ง ๋ณ๊ฒฝ๋จ์ผ๋ก์จ ๋ธ๋ก์ ์กฐ์ ์ฌ๋ถ๋ฅผ ์ฝ๊ณ ๋น ๋ฅด๊ฒ ๊ฒ์ฆํ ์ ์๊ฒ ๋๋ ๊ฒ์ ๋๋ค.
์ด์์ผ๋ก ๋นํธ์ฝ์ธ ๋ฝ๊ฐ๊ธฐ 3ํธ์ ๋ง์น๋ฉฐ, 4ํธ์์๋ ๋ธ๋ก์ ๊ตฌ์กฐ์, ๋ธ๋ก ํด์์ ๋ํ ๋ด์ฉ์ผ๋ก ์ฐพ์๋ต๋๋ก ํ๊ฒ์ต๋๋ค.
yahweh87
https://en.wikipedia.org/wiki/Merkle_tree
https://en.wikipedia.org/wiki/Ralph_Merkle
https://ko.wikipedia.org/wiki/%ED%8A%B8%EB%A6%AC_%EA%B5%AC%EC%A1%B0
์ด ์ ์๋ฌผ์ ํฌ๋ฆฌ์์ดํฐ๋ธ ์ปค๋จผ์ฆ ์ ์์ํ์-๋น์๋ฆฌ-๋ณ๊ฒฝ๊ธ์ง 4.0 ๊ตญ์ ๋ผ์ด์ ์ค์ ๋ฐ๋ผ ์ด์ฉํ ์ ์์ต๋๋ค.