์ค๊ฐ์ ๋ฆฌ 1์์ ์ธ๊ธํ๋ 4๊ฐ์ ๋ฃจํ์ค ๋จ์ 3๊ฐ์ ํ๋ฆ๊ณผ geth์ ๋ง์ง๋ง์ธ startmining๊น์ง ์ ๋ฆฌํด๋ด ๋๋ค.
์ค๊ฐ์ ๋ฆฌ 1( https://steemit.com/ethereum/@sigmoid/1) ์์ ์๋์ ๊ทธ๋ฆผ์ ์ฐํ๋จ 4๊ฐ์ ๋ฃจํ์ค ์ด๋ก์ ๋ฃจํ์ธ ์ฑ์ปค์์ ํธ๋ ์ ์ ์ ์ฒ๋ฆฌํ๋ ๊ฒ์ ํ์ธํ์์ต๋๋ค.
์ด์ ๋ณด๋ผ์ ๋ฃจํ๋ถํฐ ์์ํฉ๋๋ค.
๋ณด๋ผ์ ๋ฃจํ๋ ํธ๋ ์ ์
์ ๊ณต์ ํ๋ ๋ฃจํ ์
๋๋ค.
txsCh ์ฑ๋์์ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ฉด, ํด๋น ํธ๋ ์ ์
์ p2p๋ ์ด์ด๋ฅผ ํตํด ์ ๋ฌํ๋ ์ญํ ์ ํฉ๋๋ค.
txsCh ์ฑ๋์ tx_pool์ SubscribeNewTxsEventsํจ์๋ฅผ ํตํด ๊ตฌ๋
ํ ์ฑ๋์ด๊ณ ,
์ด ์ฑ๋์ ๋ฐ์ดํฐ๊ฐ ์จ์ง๋ ์์ ์ ํธ๋ ์ ์
ํ์ ์๋ก์ด ํธ๋ ์ ์
์ด ์ถ๊ฐ๋๊ฑฐ๋,
pendingํ์์ excutableํ๋ก ํธ๋ ์ ์
์ด ์ฎ๊ฒจ์ง๋ ์๊ฐ ๋ถ๋ฆฌ์ ์ง๊ฒ ๋ฉ๋๋ค.
์๋๊ทธ๋ฆผ์ ์ด๋๋ฆฌ์ ๋
ธ๋ ์์ชฝ์ SendTransaction์ด ๊ทธ๊ฒ์ด๊ณ ์. ํ๋ก์ฐ ์ฐจํธ๋ ํจ๊ป ์ถ๊ฐํฉ๋๋ค.

์ฃผํฉ์ ๋ฃจํ๋ ๋ธ๋ก์ด ๋ง์ด๋ ๋์์๋, ํด๋น ๋ธ๋ก์ ํผ์ด๋ค์๊ฒ ์ ํํ๋ ์ญํ ์ ๋ด๋นํฉ๋๋ค.
์ด ๊ทธ๋ฆผ์ด ๊ธฐ์ต์ด ๋์๋์?
์ง๋ ๋ฒ syncer๊ทธ๋ฆผ์์ ๋๊ฐ ํ์ ๋ธ๋ก์ ํธ์ํ๋์ง ์๋์ ๊ฐ์ด ๊ทธ๋ฆฐ์ ์ด ์์์ต๋๋ค.
์ฌ๊ธฐ์ ์ฌ์ฉ๋ ๋ฉ์์ง๋ฅผ ๋ฐ์์ํค๋ ๊ณณ์ด ์ฃผํฉ์๋ฃจํ์
๋๋ค.
์ด์ ๋ง์ง๋ง์ผ๋ก ํ๋์ ๋ฃจํ๋ TxsyncCh ์ฑ๋์์ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ์๋ ํธ๋ ์ ์
์ ๋๊ธฐํํ๋ ์ญํ ์ ํฉ๋๋ค.
์์ ์ด๋ฏธ ๋๊ธฐํํ๋ ๋ณด๋ผ์ ๋ฃจํ๊ฐ ์์๋๋ฐ, ์ด๊ฒ ์ ๋์๋ ํ์คํ
๋ฐ, ์ด๋ฃจํ์์ ํ๋ ๋๊ธฐํ๋
๋
ธ๋๊ฐ ์ฒ์์ ์ฐ๊ฒฐ๋์์๋ ๋ฑ ํ๋ฒ,
๋๊ธฐ์ค์ธ ํธ๋ ์ ์
์ ์๋ ๋
ธ๋์ ๋๊ธฐํ ํ๋ ์ฉ๋๋ก ์ฌ์ฉ๋ฉ๋๋ค.
๊ทธ ์ดํ์ ๋ค์ ๋ณด๋ผ์ ๋ฃจํ๋ฅผ ์ฌ์ฉํด์ ๋๊ธฐํ๊ฐ ๋ฉ๋๋ค.
์ด๊ทธ๋ฆผ์์ p2p์ฐ๊ฒฐ์ฌ์ด์ SendTransaction์ด ์ด ๋ฃจํ์์ ๋ฐ์๋๋ ๊ฒ์ด์ฃ .
ํ๋ก์ฐ ์ฐจํธ๋ ํจ๊ป ์ถ๊ฐํฉ๋๋ค.

geth๋ ๋
ธ๋๋ฅผ ๋ง๋ค๊ณ ์์ํ ํ, ๋ง์ง๋ง์ผ๋ก ์ด์นด์ดํธ๋ฅผ ์ธ๋ฝํ๋ค ๋ง์ด๋์ ์์ํฉ๋๋ค.
๋ง์ด๋์ ํฌ๊ฒ ๋๊ฐ์ ๊ณ ๋ฃจํด ํธ์ถ๋ก ์ด๋ค์ง๋๋ฐ
์ฒซ๋ฒ์งธ ๊ณ ๋ฃจํด์์ ๋ง์ด๋๋ ์์ด์ ํธ๋ฅผ ์ฌ๋ฌ๊ฐ(๋
ผ๋ฆฌ์ cpu๊ฐฏ์)๋ง๋ค์ด์ ์ผ์ ์ํต๋๋ค.
์์ด์ ํธ๋ค์ ์ผ์ด๋, ํ์๋ชจํ ํ์ ๋์์ํค๊ณ , ๋
ผ์ค๋ฅผ ์ฐพ๋ ๊ฒ์ด๊ณ ์, ํ ์์ด์ ํธ๋ผ๋ ๋
ผ์ค๋ฅผ ์ฐพ๋๋ค๋ฉด found ์ฑ๋๋ก ๋ง์ด๋์๊ฒ ๋ธ๋ก์ ์ ์กํฉ๋๋ค.
๊ทธ๋ผ, workCh์ฑ๋์ ์ฌ์ฉํด ๋๋จธ์ง ๋์์ค์ธ ์์ด์ ํธ๋ค์ ๋ชจ๋ ์ค์ง์ํต๋๋ค.
๋๋ฒ์งธ ๊ณ ๋ฃจํด์ธ cimmit new work์์๋ ๋ธ๋ก์ ์์ฑํ๊ฒ๋ฉ๋๋ค. ํธ๋ ์ ์
ํ์์ ํ์ฌ ์ฒ๋ฆฌ๊ฐ๋ฅํ ํธ๋ ์ ์
์ ๊ฐ์ ธ์์ ๊ฐ๊ฒฉ์ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํฉ๋๋ค. ์ด์ ๋ ๋ธ๋ก์ ํฌํจ์ํฌ ํธ๋ ์ ์
๋ค์ด ๋น์ธ์ผ ์ฑ๊ตดํ์๋ ์์ต์ ๋ ํฌ๊ฒ ๊ฐ์ ธ๊ฐ์ ์๊ธฐ ๋๋ฌธ์ด๊ณ ์. ํธ๋ ์ ์
์ ํ๋ํ๋ ์คํํ๊ณ , ๊ทธ์ ๋ฐ๋ฅธ ์คํ
์ดํธ๋ฅผ DB์ ์
๋ฐ์ดํธ ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์์์ฆ์ ๋ง๋ญ๋๋ค.
ํค๋์ ๋ฃจํธ๋ฅผ ์์ฑํ๊ณ ์ฃผ์ด์ง ํค๋ + ํธ๋ ์ ์
+ ์ํด์ ๋ณด + ์์์ฆ์ผ๋ก๋ธ๋ก์ ๋ง๋ค์ด ๋ง์ด๋ ์์ด์ ํธ์๊ฒ ์ ๋ฌํฉ๋๋ค.
์ด๋ ๊ฒ nonce๊ฐ ์ฐพ์์ง๊ณ ๋ธ๋ก์ด ์์ฑ๋๋ฉด NewMinedBlockEvent๊ฐ ๋ฐ์ํฉ๋๋ค.
์ด ์ด๋ฒคํธ๋ ์ด์ ์ต์ํ์์ฃ ? ์ฃผํฉ์ ๋ฃจํ์์ ์ฒ๋ฆฌ๋์
queue์ ๋ค์ด๊ฐ๊ณ insertchainํธ์ถ์ด์์ฃ
๋ง์ง๋ง์ผ๋ก ๋ค์ ๋ธ๋ก์ ๋ํ nonce๋ฅผ ์ฐพ๊ธฐ ์ํด Agent ๋ค์๊ฒ ์ work๋ฅผ ํ ๋นํ๋ฉด์ ๋ฃจํ์ฒ๋ผ ๋์ํ๊ฒ ๋ฉ๋๋ค.
์ด๋ ๊ฒ ์ด๋๋ฆฌ์์ ๋ ธ๋์ ํฐ ๋์์ ํ๋ฒ ํ์ด๋ณผ์ ์๊ฒ๋์ ์ฐธ ๊ธฐ์ฉ๋๋ค.
์ด๋๋ฆฌ์ ๊ณต๋ถํ๋ฉด์ ์ฌ๋ฏธ์๋ ๊ฒ์ด
p2p ๋คํธ์ํฌ์น๊ณ ๋ ํต์ ๋์ด ๊ฑฐ์ ์์ด๋ณด์ธ๋ค๋ ์ ์
๋๋ค.
ํธ๋ ์ ์
์ ํ๋ ๋ง๋ค์์๋, ์ฐ๊ฒฐ๋ ํผ์ด๋ค์ด ์ด ํธ๋ ์ ์
์ ์ด๋ฏธ ์๋ค, ๋ชจ๋ฅธ๋ค๋ฅผ ๋ด๊ฐ ์ด๋ฏธ ๊ด๋ฆฌํ๊ณ ์์ด์ ํ์ํ ๋
ธ๋์๋ง ๊ณต์ ํ๋๋ก ํด๋จ์ฃ .
๋ธ๋ก์ด๋ ํธ๋ ์ ์
์ ๋ณํ๋ ๋ถ๋ถ๋ง์ ๊ณต์ ํจ์ผ๋ก์ ์๋ ๋
ธ๋์ ์
๋ฐ์ดํธ๋ฅผ ์ ๋ํด์ ๋์๊ฐ์ ์ํ๋ก ์ ์ง๋๊ฒ ๋ง๋ ๋ค๋๊ฒ์ด ์ฐธ ๋งค๋ ฅ์ ์ธ ๋์์ธ์ธ๊ฒ ๊ฐ์ต๋๋ค.
๋ค์๋ถํฐ๋ ์์ฆ ํดํน๋ฑ์ผ๋ก ํซํ ์ค๋งํธ ์ปจํธ๋ ํธ ๊ณต๋ถ๋ฅผ ํด๋ด์ผ๊ฒ ์ต๋๋ค. ๋ถ์กฑํ ๊ธ ์ฝ์ด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.
์ง๊ทนํ ๊ฐ์ธ์ ์ผ๋ก ์ด๋๋ฆฌ์ ์ฃผ์ ํ๊ธํ ํ๋ก์ ํธ๋ฅผ ์งํํ๊ณ ์์ต๋๋ค.
https://github.com/NAKsir-melody/go-ethereum