/* ์ด ๊ธ์ 2017๋
7์ ๊ฒฝ์ ์์ฑํ๋ ๊ฒ์ด๋ผ์, ์ผ๋ถ ๋ด์ฉ์์ด ๋ ์ง๋ฅผ ๊ธฐ์ค์ผ๋ก ์์ฑ๋์๋ค */
๋ธ๋ก์ฒด์ธ์ ์ถ๊ฐ ์ ์ฉ DB์ด๊ธฐ ๋๋ฌธ์, ๊ทธ ํฌ๊ธฐ๊ฐ ์ ํ์ ์ผ๋ก ๊ณ์ ๋์ด๋ ์๋ฐ์ ์๋ค. ์๋ก, 2017๋ 5์ 20์ผ(์ดํ, โํ์ฌโ๋ผ๊ณ ์นญํจ)์ ๋นํธ์ฝ์ธ์ ๋ธ๋ก์ฒด์ธ ์ฌ์ด์ฆ๋ 116 GiB์ด์๊ณ , ์ต๊ทผ 1๋ ๋์ ๋ธ๋ก์ฒด์ธ ์ฌ์ด์ฆ๋ 47 GiB๊ฐ ์ฆ๊ฐํ๋ค. ํ์ฌ ๋นํธ์ฝ์ธ ์ฝ์ด(bitcoin core)์์ ๋ธ๋ก ์ฌ์ด์ฆ๋ 1 MiB๋ก ๊ณ ์ ๋์ด ์๊ณ ,[2] ํ๊ท ์ ์ผ๋ก 10๋ถ์ ํ ๋ฒ์ฉ ๋ธ๋ก์ ์์ฑํ๋ฏ๋ก 1๋ ๋์ ์ถ๊ฐ๋ ์ ์๋ ๋ธ๋ก ์ฌ์ด์ฆ๋ 1 MiB * 6 * 24 * 365 , ์ฆ52.56 GiB์ด๋ค. ํ์ฌ ๋นํธ์ฝ์ธ ๋คํธ์ํฌ์ ์์ ์ต๋ ๊ฑฐ๋ ์ฒ๋ฆฌ๋์ ์ด๋น 7๊ฑฐ๋๋ก ์๋ ค์ ธ ์์ง๋ง[3], ํ์ฌ ํ๊ท ์ ์ผ๋ก ์ฝ 3~4 ๊ฑฐ๋๋ฅผ ์ฒ๋ฆฌํ๊ณ ์๋ค. ์ด์ ๋ฐํด์ ๋น์์นด๋์์ ๊ฑฐ๋์ ํ๊ท ์ด๋น ์ฒ๋ฆฌ๋์ ์ฝ 2,000 ๊ฑฐ๋์ด๋ฉฐ, ์ต๋(peak) ์ฒ๋ฆฌ๋์ ์ด๋น ์ฝ 56,000 ๊ฑฐ๋๋ก ์๋ ค์ก๋ค.[3] ๋ฐ๋ผ์ ๋นํธ์ฝ์ธ์ ํ์ฌ ๊ฑฐ๋ ์ฒ๋ฆฌ๋์ ๋งค์ฐ ์๋ค. ์ด ๋๋ฌธ์, ๋ง์ผ ๋นํธ์ฝ์ธ์ ์ด๋น ๊ฑฐ๋ ์ฒ๋ฆฌ๋์ด ํฌ๊ฒ ์ฆ๊ฐํ๋ค๋ฉด, ๋ธ๋ก์ฒด์ธ์ ์ฌ์ด์ฆ ๋ฌธ์ ๋ ๋์ฑ ์ฌ๊ฐํด์ง ๊ฒ์ด๋ค. ๋ํ ๋ธ๋ก์ฒด์ธ์ ์ถ๊ฐ ์ ์ฉ DB์ด๊ธฐ ๋๋ฌธ์ ๊ทธ ํฌ๊ธฐ๊ฐ ๋๋ฌด ๋น ๋ฅด๊ฒ ์ฆ๊ฐํ๋ ํผํ ์ ์๋ ๋ฌธ์ ๋ฅผ ๊ฐ์ง๋ค.
๊ทธ๋ฆผ 1์ ๋นํธ์ฝ์ธ์ ์ฃผ์ DB์ธ ๋งดํ(mempool), ๋ธ๋ก์ฒด์ธ ๊ทธ๋ฆฌ๊ณ UTXO set์ ๋ณด์ฌ์ค๋ค. ์ฌ๊ธฐ์, ๋งดํ์ ๋ธ๋ก์ ๊ธฐ๋ก๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ๋ฏธ์น์ธ ๊ฑฐ๋(unconfirmed Tx)๋ฅผ ์ ์ฅํ๋ DB์ด๊ณ , ์ด ๋๋ฌธ์ ํน์ ๊ฑฐ๋๊ฐ ๋ธ๋ก์ ๊ธฐ๋ก์ด ๋๋ฉด ์ด ๊ฑฐ๋๋ ๋งดํ์์ ์ญ์ ๋๋ค. UTXO set๋ ๋ฏธ๋์ ์ฌ์ฉํ ์ ์๋ ์ถ๋ ฅ์ธ ๋ชจ๋ UTXO๋ฅผ ๋ชจ์๋์ DB์ด๊ณ , ์ด ๋๋ฌธ์ ์ ๋ธ๋ก์ด ์ ํ๋ ๋๋ง๋ค ์ด๊ฒ์ ๋ด์ฉ์ด ๋ฐ๋๋ค. ๊ตฌ์ฒด์ ์ผ๋ก, ์ ๋ธ๋ก์ด ์ ํ๋ ๋๋ง๋ค ์ด ๋ธ๋ก์ ํฌํจ๋ ๊ฑฐ๋์ ์ํด์ STXO, ์ฆ ์๋นํ UTXO๋ฅผ UTXO set์์ ์ ๊ฑฐํ๊ณ , ์๋ก ๋ฐ์ํ UTXO๋ฅผ ์ด๊ฒ์ ์ถ๊ฐํ์ฌ ๋ด์ฉ์ ์ ๋ฐ์ดํธํ๋ค. ๋ฐ๋ผ์ UTXO set์ ์ ์ฒด ๊ณ์ ์ํ์ ๊ฐ์ด ๊ฑฐ๋์ ์ ์ฒด ์ํ๋ฅผ ๊ด๋ฆฌํ๋ค. ์ฌ๊ธฐ์ ์ค์ํ ๊ฒ์ โ๊ณต๊ฐ ๋ธ๋ก์ฒด์ธ(public blockchain)์ ๋น์ ๋ขฐ ํน์ฑ ๋๋ฌธ์, ๋ถ์ฐ๋ ๋ ธ๋๋ค์ด ๋ธ๋ก์ฒด์ธ์ ํตํด์ ๋ชจ๋ ๊ฑฐ๋๋ฅผ ๋ ๋ฆฝ์ ์ผ๋ก ๊ฒ์ฆํ์ฌ ๊ฑฐ๋์ ์ ์ฒด ์ํ์ธ UTXO set๋ฅผ ์์ฑํ๋ ๊ฒ์ด๋ค.โ๋ ๊ฒ์ด๋ค. ๋ฐ๋ผ์ ๋นํธ์ฝ์ธ์ ๋ ธ๋ ๊ด์ ์์ ๋ธ๋ก์ฒด์ธ์ ๋ณต์ ํ์ฌ ์ด๋ฅผ ๋๊ธฐํํ๊ณ , ์ด๋ฅผ ํตํด์ ๋ชจ๋ ๊ฑฐ๋๋ฅผ ๋ ๋ฆฝ์ ์ผ๋ก ๊ฒ์ฆํ์ฌ ์ ์ฒด ์ํ์ธ UTXO ์ธํธ๋ฅผ ์์ฑํ๋ ๊ฒ์ด๋ค. ์ด๋ ๋นํธ์ฝ์ธ์ ๋น์ ๋ขฐ(trustless) ํน์ฑ ๋๋ฌธ์ด๋ค. ๊ฒฐ๊ตญ ๋นํธ์ฝ์ธ์ ๋ชจ๋ ์ํ๋ UTXO set์ ๋งดํ์ด ๊ฐ์ง๊ณ ์๋ค. ์ด๋ UTXO ์ธํธ๋ ์ ์ฒด ์ํ์ธ ๋ชจ๋ UTXO๋ฅผ ๊ด๋ฆฌํ๊ณ , ๋งดํ์ ๋ธ๋ก์ฒด์ธ์ ๊ธฐ๋ก๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ๋ชจ๋ ๋ฏธ์น์ธ ๊ฑฐ๋(unconfirmed Tx)๋ฅผ ๊ด๋ฆฌํ๋ค.
๊ทธ๋ฆผ 2(a)๋ ์ ์ฒด ๋ธ๋ก์ฒด์ธ์ ๊ฐ์ง๊ณ ์๋ ๊ธฐ์กด ๋ธ๋ก์ฒด์ธ(conventional blockchain)์ ๋ณด์ฌ์ค๋ค. ์ฌ๊ธฐ์ h์ t๋ ๋ธ๋ก์ฒด์ธ์ ํค๋๋ถ(header part)์ ๊ฑฐ๋๋ถ(transaction part)๋ฅผ ๊ฐ๊ฐ ๋ํ๋ด๊ณ , ์๋ ์ฒจ์๋ ๋ธ๋ก์ ์์ฑ์์๋ฅผ ๋ํ๋ธ๋ค. ๊ธฐ์กด ๋ธ๋ก์ฒด์ธ์ ๊ทธ๋ฆผ 2(a)๊ณผ ๊ฐ์ด ์ต์ด ๋ธ๋ก(genesis block)๋ถํฐ ์ต๊ทผ ๋ธ๋ก๊น์ง ์ ์ฒด ๋ธ๋ก์ฒด์ธ์ ํฌํจํ๋ค. ๊ทธ๋ฆผ์์ ํ์ดํ๋ ์ด์ ๋ธ๋ก์ ๋ธ๋กํด์๋ฅผ ํ์ฌ ๋ธ๋ก์ ํฌํจ์์ผ์ ์ฒด์ธ์ผ๋ก ์ฐ๊ฒฐ์ํจ ๊ฒ์ ๋ํ๋ธ๋ค. ๋ง์ผ ์ ๋ ธ๋๊ฐ ๋นํธ์ฝ์ธ ๋คํธ์ํฌ์ ์ฐธ์ฌํ๋ค๋ฉด, ์ด ๋ ธ๋๋ ์ด ๊ทธ๋ฆผ 2(a)๊ณผ ๊ฐ์ด ์ ์ฒด ๋ธ๋ก์ฒด์ธ์ ๋ค์ด๋ก๋๋ฐ๊ธฐ ์ํด IBD๋ฅผ ์งํํด์ผ ํ๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๋ฆผ 2(b)๋ ํน์ ๊ฐ์์ ์ต๊ทผ ๋ธ๋ก์ฒด์ธ์ ์ ์ฅํ ๋ถ๋ถ ์ญ์ ๋ธ๋ก์ฒด์ธ(pruned blockchain)์ ๋ณด์ฌ์ค๋ค. ๋ถ๋ถ ์ญ์ ๋ ธ๋๋ ๊ทธ๋ฆผ 2(b)์ ๊ฐ์ด ํน์ ๊ฐ์์ ์ต์ ๋ธ๋ก๋ง์ ๊ฐ์ง๊ณ ์๋ค.[7] ๊ทธ๋ฆผ 2(b)์ ๊ฒฝ์ฐ, ์ด ๋ ธ๋๋ m๋ฒ์งธ ๋ธ๋ก๋ถํฐ ์ต์ ๋ธ๋ก์ธ n๋ฒ์งธ ๋ธ๋ก์ ํฌํจํ๊ณ , nโโโm์ ์ผ์ ํ ์์์ด๋ค. ๋ ธ๋๋ ์ ์ฒด ๋ธ๋ก์ฒด์ธ์ ์ ์ฅํ์ฌ ๊ฒ์ฆํ๊ณ UTXO set์ ์์ฑํ ํ, ๋ถ๋ถ ์ญ์ ๋ ธ๋๊ฐ ๋ ์ ์๋ค. ํ์ง๋ง ์ด ๊ฒฝ์ฐ, ์ด ๋ ธ๋๋ ์ ๋ ธ๋๊ฐ ๋คํธ์ํฌ์ ์ฐธ์ฌํ๋๋ก ์ ์ฒด ๋ธ๋ก์ฒด์ธ์ ์ ๊ณตํ ์๋ ์๋ค.
์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์, UTXO ํ์ (UTXO commitments) ๋ฐฉ๋ฒ์ด ์ด๋ฏธ ์ ์๋์๊ณ , ์ด๋ฅผ ๊ฒฝ๋ ์ง๊ฐ(light wallet)์ ์ ์ฉํ๋ ค๋ ์ฌ๋ฌ ๊ฐ์ง ์ ์๋ค์ด ์์๋ค.[11โ13] ์ด๊ฒ์ ์ ์ฒด UTXO set๋ฅผ ๋จธํดํธ๋ฆฌ(merkle tree)๋ก ๊ตฌ์ฑํ๊ณ , ์ด๊ฒ์ ๋ฃจํธ ํด์๋ฅผ ๋ธ๋ก์ ๊ธฐ๋กํ๋ ๋ฐฉ๋ฒ์ด๋ค. ๊ทธ๋ฆฌ๊ณ ์ ๋ ธ๋๋ ์ ์ฒด UTXO set์ ์ ์ก๋ฐ๊ณ ์ด๋ฅผ ๋จธํดํธ๋ฆฌ๋ก ๊ตฌ์ฑํ์ฌ ์ด๊ฒ์ ๋ฃจํธ ํด์๋ฅผ ๊ตฌํ๊ณ ๋ธ๋ก์ ๊ธฐ๋ก๋ ๋ฃจํธํด์๋ฅผ ๋น๊ตํ์ฌ ์์ ์ฑ์ ๊ฒ์ฆํ๋ค. ์ฆ UTXO ํ์ ์ p2p ๋คํธ์ํฌ์์ ๋ค๋ฅธ ๋ ธ๋๋ก๋ถํฐ ์ ํ ๋ฐ์ UTXO set์ด ์ฌ๋ฐ๋ฅธ์ง๋ฅผ ํ์ธํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ค. ์ด๊ฒ์ ์ด๊ธฐ UTXO ๋๊ธฐํ(initial UTXO download, IUD)๋ผ ๋ถ๋ฅด์. IUD์ ์ฅ์ ์ ๋ค์๊ณผ ๊ฐ๋ค. 1) IUD๋ ๊ธฐ์กด์ IBD๋ฅผ ํตํด ์ ์ฒด ๋ธ๋ก์ฒด์ธ์ ๋ค์ด๋ฐ๋ ๋ฐฉ๋ฒ๋ณด๋ค ์ ์ก๋ฐ๋ ๋ฐ์ดํฐ๊ฐ ๋งค์ฐ ์๋ค. ์ด ๋๋ฌธ์ ์ ๋ ธ๋๊ฐ ๋งค์ฐ ๋นจ๋ฆฌ ์ด๊ธฐ ๋๊ธฐํ๋ฅผ ์ํฌ ์ ์๋ค. 2) ๊ธฐ์กด์ IBD๋ ์๋ช ์ ๊ฒ์ฆ์ ๋ง์ CPU ์์์ด ํ์ํ๋ค. ํ์ง๋ง, IUD๋ ๋ชจ๋ ๋ธ๋ก์ ๊ฒ์ฆํ๋ ๋์ ์, ์ ์ฒด UTXO set์ ๊ฒ์ฆํ๊ธฐ ๋๋ฌธ์ ๊ฒ์ฆ์ ์ํ ๊ณ์ฐ๋ ๋ฐ ์๊ฐ์ ํฌ๊ฒ ์ค์ผ ์ ์๋ค.
๊ทธ๋ ์ง๋ง IUD๋ ๋ ธ๋์ ๋ ๋ฆฝ์ฑ์ ์ผ๋ถ ํฌ๊ธฐํ ๊ฒ์ผ๋ก ๋ณด์ผ ์ ์๋ค. ์๋ํ๋ฉด ๊ธฐ์กด์ IBD๋ ๋น์ ๋ขฐ ํน์ฑ ๋๋ฌธ์ ์ ๋ ธ๋๊ฐ ์ ์ฒด ๋ธ๋ก์ฒด์ธ์ ์ ์ก๋ฐ์ ์ด๊ฒ์ ํฌํจ๋ ๋ชจ๋ ๊ฑฐ๋๋ฅผ ๋ ๋ฆฝ์ ์ผ๋ก ๊ฒ์ฆํ๊ธฐ ๋๋ฌธ์ด๋ค. ํ์ง๋ง ๋นํธ์ฝ์ธ์์ IUD๊ฐ ์์ ํ ์ด์ ๋ ๊ณต๊ฒฉ์๊ฐ ์ต๊ทผ์ ๋ธ๋ก์ฒด์ธ์ ์๋ก ๋ง๋ค ๋ ์๋นํ ๋น์ฉ์ด ๋ค๊ธฐ ๋๋ฌธ์ด๋ค. ์ฆ, ์ ๋ ธ๋๊ฐ IUD๋ฅผ ํตํด UTXO set๋ฅผ ์ ์ก๋ฐ์ ํ, ๊ทธ๊ฐ ๋ช ๊ฐ์ ์ต์ ๋ธ๋ก์ ์ฐ์์ผ๋ก ๊ฒ์ฆํ๋ฉด ์์ ํ UTXO ์ธํธ๋ฅผ ์ ์ก๋ฐ์๋์ง ์ฝ๊ฒ ๊ฒ์ฆํ ์ ์๋ค. ๊ทธ๋ฆฌ๊ณ ๋นํธ์ฝ์ธ ์ง๊ฐ์ ๊ฑฐ๋๊ฐ ํฌํจ๋ ๋ธ๋ก ์ดํ 6๊ฐ์ ์ ๋ธ๋ก์ด ์์ฑ๋๋ฉด ์ด์ฒด๊ฐ ๊ฐ๋ฅํ๋ค. ์ด์ ์ ์ฌํ๊ฒ, ์๋ก ๋ค๋ฉด, ์ ๋ ธ๋๋ IUD ๋์ ๋จผ์ ์ต์ ๋ธ๋ก๊ณผ UTXO set์ ์ ์ก๋ฐ๊ณ ์ด๋ฅผ ๊ฒ์ฆํ ํ, ์ฐ์์ผ๋ก 5๊ฐ์ ์๋ก์ด ๋ธ๋ก์ ์ ํ ๋ฐ์์ ์ด UTXO set๋ฅผ ๊ณ์ ๊ฒ์ฆํ๋ค. ์ด ๊ณผ์ ์ ๋ชจ๋ ํต๊ณผํ ๊ฒฝ์ฐ ์ ๋ ธ๋๋ ์ด UTXO set์ ์ฌ์ฉํ ์ ์๋ค.
๋ธ๋ก์ UTXO set์ ๋ฃจํธ ํด์๋ฅผ ๊ธฐ๋กํ๋ ๋ฐฉ๋ฒ์ ์๋์ ๊ฐ์ ์ ์๋ค. ์๋ฅผ ๋ค๋ฉด, ๋ ธ๋๋ค์ ๊ธฐ์กด ๋ฐฉ๋ฒ๋๋ก ๋์ด๋ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๋ธ๋กํด์๋ฅผ ๋จผ์ ์ฐพ์ ํ์, UTXO set์ ๋จธํดํธ๋ฆฌ๋ฅผ ๊ตฌ์ฑํ์ฌ ๊ทธ๊ฒ์ ๋ฃจํธ ํด์๋ฅผ ๊ณ์ฐํ๋ค. ๊ทธ๋ฆฌ๊ณ ๊ธฐ์กด ๋ธ๋ก๊ณผ ๋์ผํ๊ฒ ๋ธ๋ก์ ๋ง๋ค๊ณ , ์ถ๊ฐ๋ก ๋จธํดํธ๋ฆฌ์ ๋ฃจํธ ํด์๋ฅผ ๋ธ๋ก์ ๊ธฐ๋กํ๋ค. ๋ํ ์ด ๋ฃจํธ ํด์์ ๋ธ๋กํด์๋ก ์๋ก์ด ํด์๋ฅผ ๋ง๋ค์ด ์ด๋ฅผ ๋ธ๋ก์ ์ถ๊ฐํ ์ ์๋ค.
2017๋ 5์ 20์ผ ํ์ฌ UTXO set์ ํฌ๊ธฐ๋ ์ฝ 1.9 GiB์ด๊ณ , ์ด๊ฒ์ ์ฝ 5์ฒ4๋ฐฑ๋ง ๊ฐ์ UTXO๋ฅผ ํฌํจํ๋ค.[15] ์ด๊ฒ์ ์์ผ๋ก ๋ ์ฆ๊ฐํ ์๋ฐ์ ์๋ค. ๊ทธ๋ฆฌ๊ณ ์ ์ฒด UTXO set๋ฅผ ๋จธํดํธ๋ฆฌ๋ก ๊ตฌ์ฑํ๊ณ ์ด๊ฒ์ ๋ฃจํธ ํด์๋ฅผ ๊ตฌํ๋ ๊ฒ์ ๋ง์ ํด์ ๊ณ์ฐ์ด ํ์ํ๋ค. ํ์ง๋ง ๋นํธ์ฝ์ธ์์ ์ ๋ธ๋ก์ด ์์ฑ๋ ๋๋ง๋ค, UTXO set์ ์๋ก ์์ฑ๋ UTXO๋ฅผ ์ฝ์ ํ๊ณ ์๋นํ UTXO๋ฅผ ์ญ์ ํ๋ค. ์ ๋ธ๋ก๋ง๋ค, UTXO set์ ๋จธํดํธ๋ฆฌ๋ฅผ ์ ๋ฐ์ดํธํ๊ณ ๋ด๋ถ๋ ธ๋์ ํด์๋ฅผ ๋ค์ ๊ณ์ฐํ๋ ๊ฒ์ ๋๋ฌด ๋ง์ ํด์ ๊ณ์ฐ์ด ๋ฐ์ํ๋ ๋ฑ์ ๋ฌธ์ ๊ฐ ์์๋ค. ์ด๋ฐ ์ด์ ๋ก ์์ง๊น์ง ๋นํธ์ฝ์ธ์ IUD๋ฅผ ์ ์ฉํ์ง ๋ชปํ๊ณ ์๋ค[13]. ๋๋ถ์ด ๊ธฐ์กด ๋จธํดํธ๋ฆฌ๋ ๋ชจ๋ ๋ฐ์ดํฐ, ์ฆ ์ ์ฒด UTXO๊ฐ ๋จ๋ง ๋ ธ๋์ ์์นํ๊ธฐ ๋๋ฌธ์, UTXO๊ฐ ์ ๋ ฌ๋์ด ์์ง ์๋๋ค. ์ด ๋๋ฌธ์, ๊ธฐ์กด ๋จธํดํธ๋ฆฌ๋ ํน์ ๋ฐ์ดํฐ์ ๋น์กด์ฌ ์ฆ๋ช ์ ์ด์ฉํ ์ ์์๋ค.[16]
์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด, ์ฐ๋ฆฌ๋ ๊ธฐ์กด ์ด์งํธ๋ฆฌ๋ฅผ ์ด์ฉํ ์ ๋ ฌ๋ ๋จธํดํธ๋ฆฌ(sorted merkle tree)๋ฅผ ์ ์ํ๋ค. ๊ทธ๋ฆผ 1(b)๋ ์ฐ๋ฆฌ๊ฐ ์ ์ํ ์๋ก์ด ๋จธํดํธ๋ฆฌ๋ฅผ ๋ณด์ฌ์ค๋ค. ์ด ๋จธํดํธ๋ฆฌ๋ ๊ธฐ์กด์ ์ด์งํธ๋ฆฌ๋ฅผ ์ด์ฉํ์ฌ ๋ฐ์ดํฐ์ธ UTXO๋ฅผ ๋ชจ๋ ๋ ธ๋์ ์ ๋ ฌ์ํค๊ณ , ๊ทธ ํ์ ๋ด๋ถ๋ ธ๋์ ํด์๋ฅผ ๊ณ์ฐํ๋ค. ์ด ๋๋ฌธ์, ์ฐ๋ฆฌ๊ฐ ์ ์ํ ๋จธํดํธ๋ฆฌ๋ AVL ํธ๋ฆฌ ๋๋ ๋ ๋-๋ธ๋ ํธ๋ฆฌ(red-black tree) ๋ฑ๊ณผ ๊ฐ์ ์๊ฐ ๋ณต์ก๋๊ฐ O(log n)์ธ ๊ท ํ ์ด์งํธ๋ฆฌ(balanced binary tree) ๋ฑ์ ์ฌ์ฉํ ์ ์๋ค. ๊ตฌ์ฒด์ ์ผ๋ก, ์ฐ๋ฆฌ๊ฐ ์ ์ํ ๋จธํดํธ๋ฆฌ๋ ์ ๋ธ๋ก์ด ์์ฑ๋ ๋๋ง๋ค ๋จผ์ ๊ธฐ์กด UTXO์ ์ด์งํธ๋ฆฌ์ ์ฌ์ฉ๋ UTXO ๋ฐ ์๋ก ์์ฑ๋ UTXO๋ฅผ ์ญ์ ๋ฐ ์ฝ์ ํ๊ณ , ๊ทธ ํ์ ํด๋นํ๋ ๋ ธ๋์ ํด์๋ฅผ ๋ถ๊ฐ์ ์ผ๋ก ๊ณ์ฐํ๋ค. ๊ตฌ์ฒด์ ์ผ๋ก, ๊ทธ๋ฆผ 3(b)์์ ๋ง๋จ๋ ธ๋์ ํด์๋ h2์ h3์ด๊ณ , ์ด๋ค์ hself = hf(uleft || uright || uself)๋ก ๊ตฌํ๋ค. ์๋ฅผ ๋ค๋ฉด, 2๋ฒ ๋ ธ๋์ ํด์(h2)๋ u4, u5์ u2๋ฅผ ์ฐ๊ฒฐํ์ฌ ๊ตฌํ๋ค. ๊ทธ๋ฆฌ๊ณ ๋ง์ผ ์์ ๋ ธ๋์ ํด์๊ฐ ์กด์ฌํ ๊ฒฝ์ฐ, ์ด ๋ ธ๋์ ํด์๋ ์์๋ ธ๋์ ํด์์ ์์ ์ UTXO๋ฅผ ์ฐ๊ฒฐํ์ฌ ๊ตฌํ๋ค. ์๋ฅผ ๋ค๋ฉด, ๋ฃจํธ ํด์(h1)๋ h2, h3์ u1์ ์ฐ๊ฒฐํ์ฌ ๊ตฌํ๋ค. ์ด ๋จธํดํธ๋ฆฌ์ ์ฅ์ ์ ๋ค์๊ณผ ๊ฐ๋ค. ์ฒซ ๋ฒ์งธ, ์ด๊ฒ์ ๋ด๋ถ๋ ธ๋์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ์๊ธฐ ๋๋ฌธ์ ๊ธฐ์กด ๋จธํดํธ๋ฆฌ์ ๋นํด์ ์ด์งํธ๋ฆฌ์ ๋ ธ๋ ๊ฐ์๋ฅผ ์ฝ 1/2๋ก ์ค์ธ๋ค. ์ด ๋๋ฌธ์ ๊ธฐ์กด ๋จธํดํธ๋ฆฌ์ ๋นํด ํด์์ ๊ฐ์๊ฐ ์ฝ ์ ๋ฐ์ผ๋ก ์ค์ด๋ ๋ค. ์ฆ ๋ฐ์ดํฐ์ ์ ๋ฐ์ดํธ ์์ ํด์ ๊ณ์ฐ์ ๊ฐ์๊ฐ ์ค์ด๋ ๋ค. ๋ ๋ฒ์งธ, ์ ์ํ ๋จธํดํธ๋ฆฌ๋ ๊ธฐ์กด ์ด์งํธ๋ฆฌ๋ก ๋ฐ์ดํฐ์ธ UTXO๋ฅผ ๋จผ์ ์ ๋ ฌํ๊ณ , ์ด ๋๋ฌธ์ ์ด๊ฒ์ ํน์ UTXO์ ์กด์ฌ ์ฌ๋ถ๋ฅผ ์ฝ๊ฒ ์ฆ๋ช ํ ์ ์๋ค. ๋ฐ๋ผ์ ๊ฒฝ๋ ์ง๊ฐ์์ ํน์ ๊ฑฐ๋์ ์กด์ฌ ์ฌ๋ถ์ ๋ํ ๊ฒ์ฆ์ด ๊ฐ๋ฅํ๋ค. ์ฐ๋ฆฌ์ ๋จธํดํธ๋ฆฌ์์ ๋ฐ์ดํฐ์ ๋น์กด์ฌ ์ฆ๋ช ์ ๋น์กด์ฌํ๋ ๋ฐ์ดํฐ์ ์ ์์ ์๋ ๋ฐ์ดํฐ๊ฐ ๋ฐ๋ก ์ด์ํ๊ณ ์๋์ง๋ฅผ ์ฆ๋ช ํ๋ฉด ๊ฐ๋ฅํ๋ค. [16] ์ฐธ๊ณ ๋ก, ๊ฒฝ๋์ง๊ฐ์์ ๊ฑฐ๋์ ์กด์ฌ ์ฆ๋ช ์ ์๋์ ๊ฐ์ด ํ์ธํ ์ ์๋ค. ์๋ฅผ ๋ค๋ฉด, ๊ทธ๋ฆผ 3(b)์ ์ ์ํ ๋จธํดํธ๋ฆฌ์์ u2์ ๊ฒ์ฆ์ u4, u5, u2, h3๊ฐ ํ์ํ๋ค. ์ด์ ๋นํด ๊ทธ๋ฆผ 3(a)์ ๊ธฐ์กด ๋จธํดํธ๋ฆฌ์์ u2์ ๊ฒ์ฆ์ u1, u2, h5, h3๊ฐ ํ์ํ๋ค.
๋๋ถ์ด, ๊ธฐ์กด ๋จธํดํธ๋ฆฌ๋ ๊ฐ ๋ฐ์ดํฐ, ์ฆ UTXO๋ฅผ ๊ฒ์ฆํ ๋, ๋จ ํ๋์ ์ด์ ๋ฐ์ดํฐ๋ฅผ ํฌํจํ๋ค. ํ์ง๋ง ์ฐ๋ฆฌ๊ฐ ์ ์ํ ๋จธํดํธ๋ฆฌ๋ ๋ด๋ถ ๋ ธ๋์ ๋ฐ์ดํฐ๋ฅผ ํฌํจํ๊ธฐ ๋๋ฌธ์ ๊ฐ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ฆํ ๋, ๊ธฐ์กด ๋จธํดํธ๋ฆฌ์ ๋นํด์ ๋ ๋ง์ ๋ฐ์ดํฐ๋ฅผ ํฌํจํด์ผ ํ๋ค. ํ์ง๋ง, ๋นํธ์ฝ์ธ์ ๊ณต๊ฐ ๋ธ๋ก์ฒด์ธ์ด๋ฏ๋ก, ํน์ ๊ฑฐ๋์ ๊ฒ์ฆ ๊ณผ์ ์์ ํน์ utxo๋ฅผ ๋ ธ์ถํ๋ ๊ฒ์ ์ ํ ๋ฌธ์ ๊ฐ ๋์ง ์๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ด๋๋ฆฌ์์ UTXO ๋์ ์ ๊ณ์ (accounts)์ ๊ฐ์ง๊ณ ์๊ณ , ๋จธํด ํํธ๋ฆฌ์ค ํธ๋ฆฌ(merkle patricia tree)์ ์ ์ฅํ๋ค.[17] ๋น์ทํ๊ฒ ์ฝ์ค๋ชจ์ค ์ฝ์ธ๋ ๊ณ์ ์ ๊ฐ์ง๊ณ ์๊ณ , ์ด๋ฅผ ๋จธํด IAVL+ ํธ๋ฆฌ(merkle IAVL+ tree)์ ์ ์ฅ๋๋ค.[18] ํ์ง๋ง, ์ด๋ค๋ ๋ชจ๋ ๋จ๋ง๋ ธ๋์ ๊ณ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ค. ๋ฐ๋ผ์ ์ด๋๋ฆฌ์๊ณผ ๊ฐ์ด ๊ณ์ ์ ์ ์ฒด ์ํ๋ฅผ ๊ฐ์ง ์ํธํํ์๋ ์ฐ๋ฆฌ๊ฐ ์ ์ํ ์ ๋ ฌ๋ ๋จธํดํธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์ ์ฉํ ์ ์๋ค.
References
[1] Satoshi Nakamoto, โBitcoin: A Peer-to-Peer Electronic Cash System.โ https://bitcoin.org/bitcoin.pdf (2009)
[2] No Auther, โBitcoin Core.โ https://en.wikipedia.org/wiki/Bitcoin_Core (accessed 3 April 2018)
[3] No Auther, โScalability.โ Bitcoin Wikipedia https://en.bitcoin.it/wiki/Scalability (accessed 3 April 2018)
[4] No Auther, โBlock Chain Overview.โ https://bitcoin.org/en/developer-guide#block-chain-overview
[5] Aleksandr Bulkin, โExplaining blockchainโโโhow proof of work enables trustless consensus.โ https://keepingstock.net/explaining-blockchain-how-proof-of-work-enables-trustless-consensus-2abed27f0845
[6] No Auther, โInitial Block Download.โ https://bitcoin.org/en/developer-guide#initial-block-download
[7] No Auther, โBlock file pruning.โ https://github.com/bitcoin/bitcoin/blob/v0.11.0/doc/release-notes.md#block-file-pruning
[8] No Auther, โChain Reorganization.โ https://en.bitcoin.it/wiki/Chain_Reorganization
[9] No Auther, โFull Node.โ https://bitcoin.org/en/developer-guide#full-node
[10] No Auther. โUnspent transaction output set.โ Statoshi.info http://statoshi.info/dashboard/db/unspent-transaction-output-set (accessed 5 April 2017)
[11] Andrew Miller. โStoring UTXOs in a Balanced Merkle Tree.โ Bitcointalk https://bitcointalk.org/index.php?topic=101734.0
[12] No Auther. โPettycoin Revisted Part I: Utxo Commitments.โ http://rustyrussell.github.io/pettycoin/2014/11/29/Pettycoin-Revisted-Part-I:-UTXO-Commitments.html
[13] Peter Todd. โMaking UTXO Set Growth Irrelevant With Low-Latency Delayed TXO Commitments.โ https://petertodd.org/2016/delayed-txo-commitments
[14] No Auther. โMerkle tree.โ https://en.wikipedia.org/wiki/Merkle_tree
[15] No Auther. โNumber of Unspent Transaction Outputs.โ https://blockchain.info/charts/utxo-count?timespan=all
[16] No Auther. โsorted-merkle-tree-issue693.โ https://gist.github.com/chris-belcher/eb9abe417d74a7b5f20aabe6bff10de0
[17] Gavin Wood. โEthereum: A secure decentralized generalized transaction ledgerโ No Publisher (2014) http://gavwood.com/paper.pdf
[18] Jae Kwon and Ethan Buchman. โCosmos whitepaper.โ Cosmos https://cosmos.network/whitepaper (accessed 3 April 2018)