Open Source Blockchain Engine์ธ It-chain ์ ๋๋ฒ์งธ ํฌ์คํธ์
๋๋ค.
์ด๋ฒ ํฌ์คํธ์์๋ IT-CHAIN์์ ๋ธ๋ก์ ํฉ์๋ฅผ ๋ด๋นํ๋ Blockchain component์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค.
๋ธ๋ก์ฒด์ธ์์ ์ผ์ด๋๋ ๋ชจ๋ ๊ฑฐ๋๋ Transaction์ด๋ผ๊ณ ๋ถ๋ฆฌ๋ฉฐ, ํ๋์ ๋ธ๋ก์ ์ฌ๋ฌ Transaction๋ค์ ์งํฉ์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
๋๋ฌธ์ ๋ธ๋ก์ฒด์ธ์์๋ ์์ฑ๋ ๋ธ๋ก์ด ์ฌ๋ฐ๋ฅธ ๋ธ๋ก์ธ์ง ํ์ธํ๊ณ ์ฒด์ธ์ ์ถ๊ฐํ๋ ๊ณผ์ ์ด ํ์ํ๋ฉฐ, ์ด ๊ณผ์ ์ It-chain์ Blockchain Component์์ ์ด๋ฃจ์ด ์ง๋๋ค.
๋ํ, It-chain์์๋ ๋ธ๋ก์ ์ ์ฅ ๋ฐ ์กฐํ๋ฅผ ์ํ ๋ณ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ตฌํํ์์ผ๋ฉฐ, Blockchain Component๋ yggdrasill์์ ์ ์ํ interface์ ๋ง๊ฒ ๊ตฌ์กฐ์ฒด๋ฅผ ๊ตฌํํ๋ค๋ฉด yggdrasill์ block์ ์ ์ฅ, ์กฐํํ ์ ์์ต๋๋ค.
yggdraill์ ์ฐ์์ ์ผ๋ก ์ ์ฅ๋ block๋ค์ ์ฐ๋ฆฌ๋ blockchain์ด๋ผ๊ณ ๋ถ๋ฆ ๋๋ค.
Blockchain Component์์ Block์ ๋ค์๊ณผ ๊ฐ์ ์ํ๋ก ์กด์ฌํฉ๋๋ค.
| Block State | Description |
|---|---|
| Created | ํฉ์๋์ง ์์๊ณ , blockchain์ ์ ์ฅ๋์ง ์์๋ค. |
| Staged | ํฉ์๋์์ง๋ง, blockchain์ ์ ์ฅ๋์ง ์์๋ค. |
| Committed | ํฉ์๋์๊ณ , blockchain์ ์ ์ฅ๋์๋ค. |
์์์ ์ธ๊ธํ ๋ฐ์ ๊ฐ์ด ๋ธ๋ก์ฒด์ธ ๋คํธ์ํฌ๋ฅผ ๊ตฌ์ฑํ๋ ๋ ธ๋๋ค์ ๊ณ์ํด์ ์๋ก์ด ๋ธ๋ก๋ค์ ํฉ์ํ๋ ๊ณผ์ ์ค์ ์๊ณ ํฉ์๊ฐ ์๋ฃ๋๋ฉฐ ์ค์ง ๋ฆฌ๋ ๋ ธ๋ ์์ ๋ธ๋ก์ ์์ฑํ์ฌ ๋ค๋ฅธ ๋ ธ๋๋ค์๊ฒ ์ ํํ๊ณ ๋ธ๋ก์ ๋ฐ์ ๋ ธ๋๋ ์์ ์ด ์์ฑํ ๋ธ๋ก๊ณผ ๋น๊ตํ์ฌ ๊ฒ์ฆ์ฌ๋ถ๋ฅผ ํ๋จํฉ๋๋ค.
์ฆ, ๊ฐ ๋ ธ๋์์ ๋ง ์์ฑ๋ ๋ธ๋ก์ Created ์ํ์ ์์ผ๋ฉฐ, ์ด ๋ธ๋ก์ Consensus ์๊ณ ๋ฆฌ์ฆ์ ํตํด ํฉ์๋ฅผ ์ด๋ฃจ๊ณ ํฉ์๊ฐ ์๋ฃ๋๋ฉฐ Staged ์ํ๋ก ๋ฐ๋๊ฒ ๋ฉ๋๋ค.
Staged ์ํ์ ๋ธ๋ก์ด ์ค์ yggdrasill ๋ด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ๋๋ค๋ฉด, ๋ธ๋ก์ Commited ์ํ๋ก ๋ณ๊ฒฝ๋ฉ๋๋ค.
๋๊ธฐํ(Synchronize)๋ ํน์ ๋ ธ๋์ ๋ธ๋ก ์ฒด์ธ์ ๋คํธ์ํฌ ๋ด ์์์ ๋ ธ๋์ ๋ธ๋ก ์ฒด์ธ๊ณผ ๋์ผํ๊ฒ ๋ง๋๋ ๊ณผ์ ์ ์๋ฏธํฉ๋๋ค.
๋๊ธฐํ(Synchronize) ๊ณผ์ ์ ๋ชฉ์ ์ ๋ชจ๋ ๋ธ๋ก์ ๋ํ์ฌ ๋ํ๊ฐ(Seal), ์ด์ ๋ธ๋ก์ ๋ํ๊ฐ(PrevSeal), ํธ๋์ญ์ ๋ชจ์(TxList), ํธ๋์ญ์ ๋ํ๊ฐ(TxSeal), ๋ธ๋ก ์์ฑ ์๊ฐ(TimeStamp), ์์ฑ์(Creator), ๋ธ๋ก ์ฒด์ธ์ ๊ธธ์ด(Height) ๋ฑ์ ๋ธ๋ก ์ฒด์ธ๊ณผ ๊ด๋ จ๋ ๋ชจ๋ ์ ๋ณด๋ค์ ๋ค๋ฅธ ๋ ธ๋์ ๊ฒ๊ณผ ๊ฐ๊ฒ ๋ง๋๋ ๊ฒ์ ์์ผ๋ฉฐ, ์ด๋ฅผ ํตํด ๋ธ๋ก์ฒด์ธ์ ์ฐธ์ฌํ๋ ๋ชจ๋ ๋ ธ๋๊ฐ ๊ฐ์ ๋ธ๋ก์ ๋ชจ์์ ๊ฐ์ง๊ฒ ๋ ์ ์์ต๋๋ค.
๋๊ธฐํ(Synchronize)๋ ๋ค์๊ณผ ๊ฐ์ด ํ์ธ(Check), ๊ตฌ์ถ(Construct), ์ฌ๊ตฌ์ถ(PostConstruct) ์ ๊ณผ์ ์ ๊ฑฐ์นฉ๋๋ค.
ํ์ธ(Check)
ํน์ ๋ ธ๋์ ๋ธ๋ก ์ฒด์ธ์ด ๋๊ธฐํ๊ฐ ํ์ํ ์ํ์ธ์ง๋ฅผ ์ ๊ฒํฉ๋๋ค. ์ด ๊ณผ์ ์ ์์์ ๋ ธ๋์๊ฒ Blockchain ๊ธธ์ด์ lastSeal์ ๋ฐ์์์ ์์ ์ ๋ธ๋ก ์ฒด์ธ ์ ๋ณด๊ฐ ๊ฐ์ ์ง ๋น๊ตํ์ฌ, ๋๊ธฐํ๊ฐ ํ์ํ ์ํ์ธ์ง ์ ๊ฒํ๋ ๊ฒ์ผ๋ก, ์ด๋ฏธ ๋๊ธฐํ๊ฐ ์๋ฃ๋ ์ํ๋ผ๋ฉด, ๋๊ธฐํ(Synchronize) ๊ณผ์ ์ ์ค๋จํ๊ณ , ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ, ๊ตฌ์ถ(Construct) ์ ์ํํฉ๋๋ค.
๊ตฌ์ถ(Construct)
๊ตฌ์ถ์์๋ ์์์ ๋ ธ๋์๊ฒ ๋ธ๋ก ์ ๋ณด๋ฅผ ์์ฒญํ์ฌ, ์๋ต๋ฐ๊ณ , ์๋ต๋ฐ์ ๋ธ๋ก์ ๋ธ๋ก ์ฒด์ธ์ ์ ์ฅํ๋ ๊ณผ์ ์ ๋ฐ๋ณตํฉ๋๋ค.
๋ธ๋ก ์์ฒญ์ ํน์ ๋ ธ๋์ ๋ธ๋ก ์ฒด์ธ ๊ธธ์ด(Height)๋ฅผ ํ์ฉํด, ์์์ ๋ ธ๋์ ๋ธ๋ก์ ์์ฒญํจ์ผ๋ก์จ ์ํ๋๋ฉฐ, ํน์ ๋ ธ๋๊ฐ ์๋ก ์ฐธ์ฌํ๋ ๋ ธ๋์ผ ๊ฒฝ์ฐ ์์์ ๋ ธ๋์ ๋ธ๋ก ์ฒด์ธ ๋ด ์ต์ด ๋ธ๋ก๋ถํฐ ๋ง์ง๋ง ๋ธ๋ก๊น์ง ์์ฒญํ๊ณ , ๊ธฐ์กด์ ์ฐธ์ฌ์ค์ด๋ ๋ ธ๋์ผ ๊ฒฝ์ฐ ๋ณด์ ์ค์ธ ๋ธ๋ก ์ฒด์ธ ๋ด ๋ง์ง๋ง ๋ธ๋ก์ ๋ค์ ๋ธ๋ก๋ถํฐ ์์์ ๋ ธ๋์ ๋ธ๋ก ์ฒด์ธ ๋ด ๋ง์ง๋ง ๋ธ๋ก๊น์ง ์์ฒญํฉ๋๋ค.
์์์ ๋ ธ๋์ ๋ชจ๋ ๋ธ๋ก์ด ํน์ ๋ ธ๋์ ๋ธ๋ก์ฒด์ธ์ ์ ์ฅ๋๋ฉด ๊ตฌ์ถ(Constrcut)์ด ์๋ฃ๋ฉ๋๋ค.
ํน์ ๋ ธ๋๋ ๊ตฌ์ถ(Construct) ์ ์งํ ์ค์ ์๋กญ๊ฒ ํฉ์๋๋ ๋ธ๋ก์ ๋ธ๋ก ์์ ์ ์ฅ์(BlockPool)์ ๋ณด๊ดํ๋ฉฐ, ๊ตฌ์ถ(Construct) ์ด ์๋ฃ๋๊ณ ๋๋ฉด, ๋ธ๋ก ์์ ์ ์ฅ์์ ๋ธ๋ก์ด ๋ณด๊ด๋์ด ์๋ ์ง ํ์ธํฉ๋๋ค. ๋ณด๊ด์ค์ธ ๋ธ๋ก์ด ์๋ค๋ฉด, ์ฌ๊ตฌ์ถ(PostConstruct)์ ์ํํฉ๋๋ค.
์ฌ๊ตฌ์ถ(PostConstruct)
์ด๋ฏธ ๊ตฌ์ถ(Construct) ๋ ๋ธ๋ก ์ฒด์ธ์ ๋ธ๋ก ์์ ์ ์ฅ์(BlockFool)์ ๋ณด๊ด์ค์ธ ๋ธ๋ก๋ค์ ๋ถ์์ ์ผ๋ก ์ถ๊ฐํ๋ ๊ฒ์ ์๋ฏธํ๋ฉฐ, ์ฌ๊ตฌ์ถ(PostConstrcut) ์ ์ํํ๊ณ ๋๋ฉด, ๋๊ธฐํ(Synchronize) ๊ณผ์ ์ด ๋ชจ๋ ์๋ฃ๋ฉ๋๋ค.
์ด๋ฒ ํฌ์คํธ์์๋ It-chain ๋ด์์ ๋ธ๋ก์ ๊ฒ์ฆ๊ณผ ์ ์ฅ์ ์ํํ๋ Blockchain ์ปดํฌ๋ํธ์ ๋ํด ์์๋ณด์์ต๋๋ค.
๋ค์ ํฌ์คํธ์์๋ it-chain์์ dApp์ ๋ฐํํ๊ณ ์คํํ๋ ivm ์ปดํฌ๋ํธ์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค.
It-chain: https://github.com/it-chain/engine
Opensource Blockchain Engine It-chain ์๋ฆฌ์ฆ
LNH