Gartner์ ๋ฐ๋ฅด๋ฉด 2024๋ ๊น์ง ๋๊ธฐ์ ์ 20%๊ฐ ๊ฒฐ์ , ๊ฐ์น์ ์ฅ, ๋ด๋ณด๋ก ๋์งํธ ํํ๋ฅผ ์ฌ์ฉํ ๊ฒ์ด๋ผ๋ ์ ๋ง์ผ๋ก, ์ค๋๋ ์ธ๊ณ์์ ๊ฐ์ฅ ๋น ๋ฅด๊ฒ ์ฑ์ฅํ๊ณ ์๋ ๊ธฐ์ ๋ถ์ผ ์ค ํ๋์ด๋ค.
๐ํ๋ก์ ํธ ๊ฐ์
Part1 ๋ธ๋ก์ฒด์ธ์ ๊ฐ๋ฐํ๊ธฐ ์ํ ๊ธฐ์ด ํ์ต(์๋ฆฌ)๊ณผ ๊ฐ๋ฐํ๊ฒฝ ๊ตฌ์ฑ
Part2 ๊ฐ๋จํ ๋ธ๋ก์ฒด์ธ์ ์ฝ๋ฉํ์ฌ ์์ฑ
๐ฆ ๋ธ๋ก์ฒด์ธ์ด ๋ญ๊น..?๋ ์๋ฌด๊ฒ๋ ๋ชฐ๋ผ์..
๐๊ณผ์ ๋ชฉํ
- ๋ธ๋ก์ฒด์ธ์ด ๋ฌด์์ด๊ณ ์ด๋ป๊ฒ ๋์ํ๋์ง ํ์ต
- ๋ธ๋ก ์์ฑํด์ ๊ฒฐ๊ณผ ์ ์ถ
๐ํ์ต ์๋ฃ
โ๏ธ๋ธ๋ก์ฒด์ธ์ด๋
: ๋ฐ์ดํฐ ๋ถ์ฐ ์ฒ๋ฆฌ ๊ธฐ์ ๋ก, "๋ฐ์ดํฐ๋ฅผ ์ํธํํด์ ์ ์ฅํ๋ ํ๋์ ๋จ์"์ธ "๋ธ๋ก(Block)"์ ๋ฐ์ดํฐ๋ฅผ ๋ด์ ์ฒด์ธ(Chain) ํํ๋ก ์ฐ๊ฒฐํ์ฌ ์๋ง์ ์ปดํจํฐ์ ๋์์ ์ด๋ฅผ ๋ณต์ ํด ์ ์ฅํ๋ ๊ธฐ์ ์ด๋ค.
- ๋๊ตฌ๋ ์์๋ก ์์ ํ ์ ์๊ณ , ๋๊ตฌ๋ ๋ณ๊ฒฝ์ ๊ฒฐ๊ณผ๋ฅผ ์ด๋ํ ์ ์๋ค..!
โ๏ธ๋ธ๋ก์ฒด์ธ์ ์๋์๋ฆฌ
: ๋ค์์ ์จ๋ผ์ธ ๊ฑฐ๋ ๊ธฐ๋ก์ ๋ฌถ์ด์ ํ๋์ "๋ธ๋ก(Block)"์ ๊ตฌ์ฑํ ๋ค, "ํด์(Hash)" ๊ฐ์ ์ด์ฉํ์ฌ ์ด์ ๋ธ๋ก๊ณผ "์ฒด์ธ(Chain)"์ฒ๋ผ ์ฐ๊ฒฐํ๋ค.
- ๋ธ๋ก(Block)์ "ํค๋(Header)" ์ "๊ฑฐ๋(Transaction)" ๋ฆฌ์คํธ๋ก ์ด๋ฃจ์ด์ ธ ์๋ค
- ๊ฐ ๊ฑฐ๋๊ธฐ๋ก์ ์ต์ ๋จ์๋ฅผ Transaction ์ด๋ผ๊ณ ํ๋ค.
- Transaction์ด ๋ง๋ค์ด์ง๋ฉด "P2P"๋ก ๋ชจ๋ "๋
ธ๋(Node)"์ "๋ธ๋ก๋์บ์คํ
(Broadcasting)"์ ํ๋ค
- ๋ ธ๋(Node)๋ ๋ธ๋ก์ฒด์ธ ๋คํธ์ํฌ์ ์ฐ๊ฒฐ๋์ด ์๋ ๋ชจ๋ ์๋ฒ(Server) ์ด๋ค.
- ๊ฐ ๋ ธ๋(Node)์์๋ ๊ฑฐ๋๊ธฐ๋ก์ ๋ชจ์ ๋ธ๋ก(Block)์ ์์ฑํ๋ค.
Source from euromoney.com
- Transaction(์ฝ์ธ ์ ์ก) ์์ฑ > P2P Net.์ผ๋ก Broadcasting > ๊ฐ ๋ ธ๋(Node)์์ ๋๊ธฐ ๋ฐ ๋ธ๋ก(Block)์์ฑ > ์์ฑ๋ ๋ธ๋ก(Block) Broadcasting > ๋ชจ๋ ๋ ธ๋๊ฐ ๋ธ๋ก(Block) ๊ฒ์ฆ
Source from borntodevelop.tistory.com
Peer-to-Peer Network ์ ์ฝ์๋ก ๋คํธ์ํฌ๋ก ๊ฐ์ด ์ฐ๊ฒฐ๋์ด์๋ ์ปดํจํฐ๋ค์ด ํด๋ผ์ด์ธํธ์ ์๋ฒ์ ๊ธฐ๋ฅ์ ํ๋ ๋คํธ์ํฌ๋ฅผ ๋ปํ๋ค.
์ฝ๊ฒ ๋งํ๋ฉด, ํด๋ผ์ด์ธํธ ์ปดํจํฐ๊ฐ์ ์ง์ ์ ์ผ๋ก ํต์ ํ๋ ๋ฐฉ์์ด๋ค!
โ๏ธ๋ง์ด๋(Mining)
-
๊ฐ ๋ ธ๋์์ ๋ง๋ ๋ธ๋ก์ด ๋ชจ๋ ํ์ฉ๋๋ ๊ฒ์ ์๋๋ฉฐ, ์ฃผ์ด์ง "๋์ด๋"์ ๋ฐ๋ผ ๋ธ๋ก์ "ํด์ฌ๊ฐ"์ ๊ณ์ฐํ์ฌ ์กฐ๊ฑด์ ๊ฐ์ฅ ๋ถํฉํ๋ ๋ธ๋ก์ด ์๋กญ๊ฒ "์ฒด์ธ(Chain)"์ ์ถ๊ฐ๋๋ ๋ธ๋ก์ผ๋ก ์ ํ๋จ. ์ด ๊ณผ์ ์ ์ฑ๊ตด / ๋ง์ด๋(Mining) ์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค.
-
์ด๋ ๋ฏ ๋ฌด์์ ์ ์ ๋ ๊ฒ์ฆ์ธ์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ๋ธ๋ก์ฒด์ธ ๋คํธ์ํฌ์ ๋ํด ์๋ก์ด ๋ธ๋ก์ ์ถ๊ฐํ๋ ํฉ์ ๋ฉ์ปค๋์ฆ(์๊ณ ๋ฆฌ์ฆ) ์ ์์ ์ฆ๋ช (PoW) ์ด๋ผ๊ณ ํ๋ค.
Proof-of-Work ์ ์ฝ์๋ก ๋ชฉํ๊ฐ ์ดํ์ ํด์๋ฅผ ์ฐพ๋ ๊ณผ์ ์ ๋ฐ๋ณตํ์ฌ ํด๋น ์์ ์ ์ฐธ์ฌํ์์ ์ฆ๋ช ํ๋ ๋ฐฉ์์ ํฉ์ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ์ฑ๊ตด(mining)์ ํตํด ์์ ์ฆ๋ช (PoW)๋ฅผ ํ๋ค.
-
์ ํ์ํ ๊น?
- ์์ ์ฆ๋ช ์๊ณ ๋ฆฌ์ฆ์ ๋คํธ์ํฌ์ ๋ชจ๋ ๋ ธ๋(์๋ฒ)๊ฐ ๋์์ ๋ธ๋ก์ ์์ฑํ ์ ์๊ฒ ํ๋ ๊ฒ์ ์์๊ฐ ์๋ค. ์์ ์ฆ๋ช ์ ํต๊ณผํด์ผ๋ง ๋ธ๋ก์ ์์ฑํ ์ ์๋ค.
- ๋์ด๋ ์กฐ์ ์๊ณ ๋ฆฌ์ฆ์ ํตํด 10๋ถ๋น 1-2๊ฐ์ ๋ธ๋ก์ด ์์ฑ๋จ์ ๋ณด์ฅํ๋ค.
โ๏ธ๋ธ๋ก(Block)
Source from www.researchgate.net
-
Header + Body ์ ๊ตฌ์ฑ
-
Block์ ๋๋ถ๋ถ์ Transaction์ผ๋ก ๊ตฌ์ฑ๋จ
-
Block์ ์ผ์ ์๊ฐ๋ง๋ค ์ฌ๋ฌ๊ฑด์ ๊ฑฐ๋๋ด์ญ์ ํ๋์ ๋ธ๋ก์ผ๋ก ๋ํ๋
Header๋ฅผ ๊ตฌ์ฑํ๊ณ ์๋ ์ด์ ๋ธ๋ก ํด์ ๊ฐ(Previous block hash), ๋จธํดํธ๋ฆฌ ๋ฃจํธ(Merkle tree root), ๋์ด๋(Difficulty), ๋ ผ์ค(Nonce) ๊ฐ์ด ๋ฌด์์ธ์ง ํ์ต์ ์งํํด ์ฃผ์ญ์์ค.
โ๏ธ์ด์ ๋ธ๋ก ํด์ ๊ฐ(Previous block hash) โ๏ธ๋จธํดํธ๋ฆฌ ๋ฃจํธ(Merkle tree root) โ๏ธ๋์ด๋(Difficulty) โ๏ธ๋ ผ์ค(Nonce)
โ๏ธ์ด์ ๋ธ๋ก ํด์ ๊ฐ(Previous block hash)
"์ด์ ๋ธ๋ก ํค๋ ํด์" ๋ ๋ธ๋ก์ฒด์ธ์ ์ฒด์ธ(Chain)์ผ๋ก ๋ฌถ์ด์ฃผ๋ ๋ฐ ์ค์ํ ๊ฐ๋ ์ด๋ค.
EX > 101๋ฒ์งธ block์ miningํ๋ ค๋ ์ฑ๊ตด์(Node, Server)๊ฐ 100๋ฒ์งธ block์ ์ ๋ฌ๋ฐ์์ ๋ ํด๋น ๋ธ๋ก์ header ๋ฐ์ดํฐ๋ฅผ ๋ ๋ฒ ํด์ํด์ 101๋ฒ์งธ block์ ๋ด๋๋ค.
-
๋ธ๋ก์ฒด์ธ์ ๋ธ๋ก๋ค์ด ์ฐ๊ฒฐ๋ ์ฐ๊ฒฐ ๋ฆฌ์คํธ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์, ๊ฐ ๋ธ๋ก์ ์ด์ ๋ธ๋ก์ ํด์ ๊ฐ์ ๊ฐ์ง๊ณ ์๋ค. ์ด๋ ์ด์ ๋ธ๋ก์ ๋ฐ์ดํฐ์ ๋ฉํ๋ฐ์ดํฐ(header์ ๋ฐ์ดํฐ)์ ๋ํ ํด์ ๊ฐ์ด๋ค.
-
์ญํ :
-
๋ฌด๊ฒฐ์ฑ ์ ์ง - ํ ๋ฒ ์ถ๊ฐ๋ ๋ธ๋ก์ ์ด์ ๋ธ๋ก๊ณผ์ ์ฐ๊ฒฐ์ฑ์ ๊ฐ์ง๊ฒ ๋๋ค. ์ด์ ๋ธ๋ก์ ๋ด์ฉ์ด ๋ณ๊ฒฝ๋๋ฉด ํด๋น ๋ธ๋ก์ ํด์ ๊ฐ๋ ๋ณ๊ฒฝ๋์ด ํ์ฌ ๋ธ๋ก์ ์ํฅ์ ๋ฏธ์น๊ฒ ๋๋ฏ๋ก ๋ฌด๊ฒฐ์ฑ์ ์ ์งํ ์ ์๋ค.
-
์์ ์ ์ง - ์ด์ ๋ธ๋ก์ ํด์ ๊ฐ์ ๊ทธ ๋ธ๋ก์ ์์น๋ฅผ ์ ์ํ๊ณ , ๋ธ๋ก์ฒด์ธ์์์ ์์๋ฅผ ๊ฒฐ์ ํ๋ค.
-
์ด์ ๋ธ๋ก ํด์๋ฅผ ์ฌ์ฉํจ์ผ๋ก์จ ๋ธ๋ก์ฒด์ธ์ ๋ณ๊ฒฝ์ด ์ด๋ ต๊ณ ๊ฒ์ฆ์ด ๊ฐํธํ ๋ถ๋ณ์ ๊ฑฐ๋ํ ๋ถ์ฐ ๋ํ์ฅ๋ถ๋ฅผ ํ์ฑํ๊ฒ ๋๋ค.
-
โ๏ธ๋จธํดํธ๋ฆฌ ๋ฃจํธ(Merkle tree root)
๐ก ๊ทธ์ ์..ํด์ํจ์๋?
-
์์์ ๊ธธ์ด๋ฅผ ๊ฐ๋ ๋ฉ์ธ์ง๋ฅผ ์ ๋ ฅ๋ฐ์์ ๊ณ ์ ๋ ๊ธธ์ด์ ํด์๊ฐ์ ์ถ๋ ฅํ๋ ํจ์
-
ํค๋ฅผ ์ฌ์ฉํ์ง ์์ผ๋ฏ๋ก ๊ฐ์ ์ ๋ ฅ์ ๋ํด์๋ ํญ์ ๊ฐ์ ์ถ๋ ฅ์ด ๋์ค๊ฒ ๋๋ค
- ๋์ฌํ ํจ๊ณผ : ์ ๋ ฅ ๊ฐ์ ์์ฃผ ์ผ๋ถ๋ง ๋ณ๊ฒฝ๋์ด๋ ์ ํ ๋ค๋ฅธ ์ถ๋ ฅ๊ฐ์ด ๋์จ๋ค
- ์ถ๋ ฅ๊ฐ์ ํ ๋๋ก ์ ๋ ฅ๊ฐ์ ์ ์ถํ ์ ์๋ค
- ๋ฉ์์ง์ ์ค๋ฅ๋ ๋ณ์กฐ๋ฅผ ํ์งํ ์ ์๋ ๋ฌด๊ฒฐ์ฑ ๋ณด์ฅ
-
๋จธํดํธ๋ฆฌ(Merkle Tree)
-
ํด์ํธ๋ฆฌ๋ผ๊ณ ๋ ๋ถ๋ฆฌ๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ก, ๋น ๋ฅธ ๊ฒ์์ด ์๋๋ผ ๋ฐ์ดํฐ์ ๊ฐํธํ๊ณ ํ์คํ ์ธ์ฆ์ ์ํด ์ฌ์ฉ
-
๋ธ๋ก์ฒด์ธ์ ์์ ์ญํ ์ ์ํํ๋ ๋ธ๋ก์ ๋ถ๋ถ์ ์ ์ฅ๋ transaction๋ค์ ํด์ํธ๋ฆฌ
-
๋จธํด๋ฃจํธ(Merkle Root)
- ๋ธ๋ก์ body ๋ ๊ฐ ๊ฑฐ๋์ ๋ณด์ธ transaction์ ์ ๋ณด๋ก ๊ตฌ์ฑ์ด ๋๋๋ฐ, ๋ธ๋ก์ body ์ ๋ณด์ ์ ์ฅ๋ transaction์ ์ ๋ณด๋ค์ด ์ ํจํ์ง ๋น ๋ฅด๊ฒ ๊ฒ์ฌํ๊ธฐ ์ํ ์ญํ ์ ์ํํ๋ ๊ฒ์ด ๋จธํด๋ฃจํธ ์ ๋ณด์ด๋ค.
- ๋จธํด๋ฃจํธ๊ฐ ๋ง๋ค์ด์ง๋ ๊ณผ์
- ์ต์ด ๋ฐ์ดํฐ๋ฅผ SHA256 ํํ์ ํด์๊ฐ์ผ๋ก ๋ณํ
- ๊ฐ์ฅ ๊ฐ๊น์ด ๋ ธ๋ 2๊ฐ๋ฅผ ํ์์ผ๋ก ๋ฌถ์ด ํฉ์น ํ ํด์๊ฐ์ผ๋ก ๋ณํ
- ๊ณ์ํด์ ํด์๊ฐ์ผ๋ก ๋ณํํ์ฌ ๋ง์ง๋ง ํ๋๊ฐ ๋จ์๋๊น์ง ์ด ๊ณผ์ ๋ฐ๋ณต
- ๊ฐ ํด์๋ ๊ฒฐ๊ณผ๊ฐ TXID์ ๋ ธ๋๋ฅผ 2๊ฐ์ฉ ์ง์ง์ด ํฉ์น ํ, ๋ค์ SHA256 ํจ์๋ฅผ ํตํด ํด์ ๊ฐ์ผ๋ก ๋ณํํ๊ณ .... ์ต์ข ์ ์ผ๋ก ๋์จ ํ๋์ ๋ ธ๋๊ฐ์ด ๋จธํด๋ฃจํธ(Merkle Root) ๊ฐ์ด ๋จ.
๊ฒฐ๋ก : Block์ Header ์ Merkle Tree Root ๊ฐ์ Block Body์ Transaction ์ ๋ณด๋ค TXID๋ฅผ ๊ณ์ํด์ SHA256 ํด์ํจ์๋ก ํด์ํ์ ๋์ ํด์ํธ๋ฆฌ ๊ฒฐ๊ณผ ๊ฐ์ด๋ค
-
Merkle Root ์ ์ญํ : ๊ฐ transaction(TXID)์ ์ ๋ณด๋ค์ด ๋ณ๊ฒฝ๋์๋์ง์ ๋ํ ์ ํจ์ฑ์ ๊ฒ์ฌํ๋ค.
-
Merkle Root์ ๊ฒฐ๊ณผ๊ฐ์ ํตํด Block Hash์ ์ ๋ณด๊ฐ ๊ตฌ์ฑ๋๋ฏ๋ก ๊ทธ Block ์ ์ ํจ์ฑ ๋ํ ๊ฒ์ฌ๋ ๊ฒ.
Referred from https://www.codestates.com/blog/content/%EB%B8%94%EB%A1%9D%EC%B2%B4%EC%9D%B8-%EA%B5%AC%EC%A1%B0%EC%99%80-%EB%B8%94%EB%A1%9D%EC%B2%B4%EC%9D%B8-%ED%8A%B8%EB%9E%9C%EC%9E%AD%EC%85%98 https://steemit.com/kr/@yahweh87/2* https://steemit.com/kr/@yahweh87/4-merkle-tree-merkle-root
โ๏ธ๋์ด๋(Difficulty)
-
๋ธ๋ก์ ์ฑ๊ตดํ ๋์ ๋์ด๋์ด๋ฉฐ, ๋ธ๋ก์ ๋์ด์ ๋ฐ๋ผ ์๋ ์ค์ ๋๋ค.
-
์ฑ๊ตด์(Miner)๋ ์ผ์ข ์ ์ํ๋ฌธ์ ๋ฅผ ํ๊ณ , ๋ฌธ์ ๋ฅผ ํ์์ ๊ฒฝ์ฐ ์๋ก์ด ๋ธ๋ก์ ์์ฑํ๋ค.
-
๋์ด๋๊ฐ ๋์ ๊ฒฝ์ฐ
- ์๋ก์ด ๋ธ๋ก์ ์ฐพ๋๋ฐ ๊ฑธ๋ฆฌ๋ ์์์๊ฐ์ด ๊ธธ์ด์ ธ ๊ฑฐ๋์๋๊ฐ ๋๋ ค์ง๋ค
-
๋์ด๋๊ฐ ๋ฎ์ ๊ฒฝ์ฐ
- ์๋ก์ด ๋ธ๋ก์ ์ฐพ๋ ์๋๊ฐ ์ฆ๊ฐํด์ ๊ฑฐ๋์๋๊ฐ ๋นจ๋ผ์ง๋ค
- ๋์์ ๋ธ๋ก์ ์์ฑํ ํ๋ฅ ์ด ๋์์ง๋ค = ์คํ ์ผ ๋ธ๋ก์ด ๋ฐ์ํ ํ๋ฅ ์ด ๋์์ง๋ค
- ์ด๋ transaction์ ํ์ธ์ ์ง์ฐ์ํค๊ณ , ์คํ ์ผ ๋ธ๋ก๋ค์ ์ด์ด์ง๋ ๋ชจ๋ ๋ธ๋ก์ ๋ถํ์ํ ์ฐ์ฐ์ ํ ๊ฒฐ๊ณผ์ด๊ธฐ ๋๋ฌธ์ ์์ ๋ญ๋น๊ฐ ์ผ์ด๋๋ค
-
๋ฐ๋ผ์, ์คํ ์ผ ๋ธ๋ก์ ํ๋ฅ ์ ๋ฎ์ถ๋ฉด์ ๊ฑฐ๋์๋๋ ํฅ์๋ ์ ์๋ ๋ฐฉ๋ฒ์ ์ฐพ๋ ๊ฒ์ด ์ค์ํ๋ค.
-
๋์ด๋์ ๋ง๋ ๋ชฉํฏ๊ฐ์ด ์กด์ฌํ๋ฉฐ 'Bits'๋ก ํ๊ธฐ๋๋ค.
-
๋ชฉํ๊ฐ๋ณด๋ค ๋ฎ์ ํด์๊ฐ์ ์ฐพ๋ ๊ณผ์ ์ด ์ฑ๊ตด์ด๋ค.
Difficulty = MAX_TARGET / current_target
- MAX_TARGET์ โ์ฒซ ๋์ด๋โ๋ก์ ๋นํธ์ฝ์ธ ๋ธ๋ก์ฒด์ธ์ด ์ฒ์ ๊ตฌ๋๋ ๋ ์ค์ ๋ ๋์ด๋ ๊ฐ์ผ๋ก ๊ฐ โ1โ์ ์๋ฏธํ๋ฉฐ, 4๋ฐ์ดํธ๋ก โ1d00ffffโ๋ผ๊ณ ํ๊ธฐ
- โbitsโ๊ฐ์ธ 388618029๋ฅผ 16์ง๋ฒ์ผ๋ก ๋ณํํ๋ฉด 0x1729d72d์ ๊ฐ์ด ๋์จ๋ค. bits๋ ์ง์์ ๊ณ์๋ก ํ๊ธฐ๋๋ค๊ณ ์ค๋ช ํ์๋ค. ์ฒซ 1๋ฐ์ดํธ๋ ์ง์, ์ดํ 3๋ฐ์ดํธ๋ ๊ณ์๊ฐ ๋๋ค. ์ฆ, ํด๋น bits๋ 0x17๋ ์ง์, 0x29d72d ๊ณ์๊ฐ ๋๋ค. (0x๋ 16์ง๋ฒ์ ์๋ฏธํ๋ค.)
โ๏ธ๋ ผ์ค(Nonce)
: "Number Used Only Once(ํ ๋ฒ๋ง ์ฌ์ฉ๋๋ ๋ฒํธ)"์ ํฉ์ฑ์ด
-
Miner ๊ฐ ์๋ก์ด Block์ ์ฑ๊ตดํ๊ณ ๊ทธ์ ๋ํด ๋ณด์๋ฐ๊ธฐ ์ํด ์ฐพ์ผ๋ ค๊ณ ํ๋ Nonce
-
Miner๋ Block ์ Header์ ์๋ Nonce ๋ฅผ ์กฐ์ ํด์ Block ์ ํด์ ๊ฐ์ด ํน์ ์กฐ๊ฑด์ ๋ง์กฑํด์ ์ ํจํ ํด์ ๊ฐ์ ๊ฐ์ง๋๋ก ํ๋ค. ์ด ์์ ์ Proof-of-Work(์์ ์ฆ๋ช ) ์ด๋ผ๊ณ ํ๊ณ , ์ด ๊ณผ์ ์ ํตํด ์๋ก์ด ๋ธ๋ก์ด blockchain์ ์ถ๊ฐ๋๋ค
-
Miner๊ฐ ์ฌ๋ฐ๋ฅธ Nonce๋ฅผ ์ฐพ์ ๋๊น์ง ์๋๋จ. ์ด๋ ๊ฒ ๋ฐ๊ฒฌ๋ Nonce๋ ๋ธ๋ก์ Header์ ํฌํจ๋๊ณ , ๋ธ๋ก์ ํด์๊ฐ ๋ชฉํ์น ์ดํ๋ก ๋์ด์ผ ํด๋น ๋ธ๋ก์ด ์ ํจํ ๊ฒ์ผ๋ก ๊ฐ์ฃผ๋จ.
-
Mining์ Block Header์ ๋ฐ์ดํฐ์ธ ๋ฒ์ , ์ด์ ๋ธ๋ก ํค๋ ํด์, ๋จธํด ๋ฃจํธ, ํ์ ์คํฌํ, ๋์ด๋ ๋ชฉํ ์ ๋ ผ์ค(Nonce)๋ฅผ ์กฐํฉํด ๋ชฉํ์์ ์ ํ ๊ฐ๋ณด๋ค ์์ ํด์๊ฐ์ ์ฐพ๋ ๊ฒ์ด๋ค.
- Nonce ์ด์ธ์ 5๊ฐ์ง ๋ฐ์ดํฐ๋ ๋ชจ๋ ์๋์ผ๋ก ์ฃผ์ด์ง๊ฑฐ๋, ๊ณ์ฐ๋๋ ๊ณ ์ ๊ฐ
- ๋ธ๋ก์ ์์ฑํ ๋ ํค๋์ ๋ด๊ธฐ๋ ๋ฐ์ดํฐ ์ค ์ฃผ์ด์ง๊ฑฐ๋, ๊ณ์ฐํ์ง ์๋ ๊ฐ์ด ๋ฐ๋ก ๋ ผ์ค(Nonce) ์ด๋ค
- ์ฑ๊ตด ๊ณผ์ ์์ ๋ณ์๊ฐ์ ์ ์ฉํด๊ฐ๋ฉฐ ๋ชฉํ๊ฐ๋ณด๋ค ๋ฎ์ ํด์๊ฐ์ ์ฐพ์์ผ ํ๋๋ฐ ์ฌ๊ธฐ์ ๋ณ์๊ฐ์ด ๋ ผ์ค์ด๋ค.
-
์ฆ, Nonce๋ฅผ ์ฐพ๋ ๊ณผ์ ์ ๋ธ๋ก์ฒด์ธ์ ๋ถ์ฐ๋ ๋คํธ์ํฌ์์ ์ด๋ ค์ด ๊ณ์ฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๊ณผ์ ์ผ๋ก, ์ด๋ ๋ธ๋ก ์์ฑ์ ๋ํ ๊ฒฝ์๋ ฅ์ ์ ๊ณตํ๊ณ ๋ณด์์ฑ์ ๋์ด๋ ์ญํ ์ ํ๋ค.
-
๋ง์ด๋๊ฐ ์ฌ๋ฐ๋ฅธ Nonce๋ฅผ ์ฐพ์ผ๋ฉด, ๊ทธ ๋ธ๋ก์ด ๋ธ๋ก์ฒด์ธ์ ์ถ๊ฐ๋๊ณ , ๋ง์ด๋๋ ๋ธ๋ก ๋ณด์์ผ๋ก ๋นํธ์ฝ์ธ์ ๋ฐ๊ฒ๋๋ค. ์ด๋ ๊ฒ Nonce๋ฅผ ์ฐพ๋ ์์ ์ ๋ธ๋ก์ฒด์ธ์ ๋ถ์ฐ๋ ํฉ์ ๋ฉ์ปค๋์ฆ์ ์ผ๋ถ๋ก์จ ์ค์ํ ์ญํ ์ ํ๋ค.
โ๏ธ๋ธ๋ก ํด์(Block Hash) : ๋ธ๋ก Header ์ ๋ณด๋ฅผ ์ ๋ ฅ ๊ฐ์ผ๋ก SHA256 ํด์ ํจ์๋ฅผ ์ ์ฉํด์ ๊ณ์ฐ๋๋ ๊ฐ
- ํด์ ๊ฐ์ ํด์ ํจ์๋ฅผ ์ฌ์ฉํด์ 32bite์ ์ซ์ ๊ฐ์ ์ถ๋ ฅํ๋ค
- Blockchain์์๋ ๋ธ๋ก ์ ์ฒด๋ฅผ ํด์ํ ๊ฐ์ด ์๋๋ผ ๋ธ๋ก Header๋ฅผ ํด์ํ ๊ฐ์ ์ฌ์ฉํ๋ค
- ์ด๋๋ฆฌ์ ํ ์คํธ ๋คํธ์ํฌ ์ค ๊ฐ์ธ ํ ์คํธ์ฉ ์ฌ์ค ํ ์คํธ ๋ท์ ๊ตฌ์ฑํ๊ณ ํ๋ฉด์ ์บก์ณํ์ฌ ์ ์ถ
- ์ ๊ณผ์ ๋ฅผ ์ํํ๋ฉฐ ๋ง๋ ์ ๋ค์์ค ๋ธ๋ก ํ์ผ์ ์ ์ถ
- ์ฌ์ค ๋คํธ์ํฌ ๊ตฌ์ถ์ ์ํด์๋ "์ ๋ค์์ค ๋ธ๋ก ํ์ผ"๊ณผ "๋ธ๋ก ๋ฐ์ดํฐ ํด๋"๊ฐ ํ์ํ๋ค
- ๋ธ๋ก์ฒด์ธ์์ ๊ฐ์ฅ ๋จผ์ ์์ฑ๋๋ ๋ธ๋ก์ "์ ๋ค์์ค ๋ธ๋ก" ์ด๋ผ๊ณ ํ๋ค
์ ๋ค์์ค ๋ธ๋ก ํ์ผ ์์ฑ
- Genesis ํ์ผ์ JSON ํ์์ผ๋ก ๋คํธ์ํฌ ์ค์ ์ ์ ์ฅํ๊ณ , ์ด ํ์ผ์ ๋จผ์ ๋ง๋ค์ด์ผ ๋๋ง์ ์ด๋๋ฆฌ์ ๋คํธ์ํฌ๋ฅผ ๊ฐ๋ํ ์ ์๋ค.
Operating a private network
Maintaining your own private network is more involved as a lot of configurations taken for granted in the official networks need to be manually set up.
Defining the private genesis state
First, you'll need to create the genesis state of your networks, which all nodes need to be aware of and agree upon. This consists of a small JSON file (e.g. call it genesis.json):
{
"config": {
"chainId": <arbitrary positive integer>,
"homesteadBlock": 0,
"eip150Block": 0,
"eip155Block": 0,
"eip158Block": 0,
"byzantiumBlock": 0,
"constantinopleBlock": 0,
"petersburgBlock": 0,
"istanbulBlock": 0,
"berlinBlock": 0,
"londonBlock": 0
},
"alloc": {},
"coinbase": "0x0000000000000000000000000000000000000000",
"difficulty": "0x20000",
"extraData": "",
"gasLimit": "0x2fefd8",
"nonce": "0x0000000000000042",
"mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"timestamp": "0x00"
}
The above fields should be fine for most purposes, although we'd recommend changing the nonce to some random value so you prevent unknown remote nodes from being able to connect to you.
ํ ์คํธ์ฉ ์ฌ์ค ํ ์คํธ ๋คํธ์ํฌ ๊ตฌ์ฑ
- c:\geth ์์ cmd ์ฐฝ์ ์ฐ๋ค
- ๋ธ๋ก์ฒด์ธ์ ์ ์ฅํ ๊ฒฝ๋ก๋ฅผ ๋ง๋ ๋ค
- mkdir c:\my_blockchain
- ์์ฑํ genesis.json ๋ธ๋ก์ ๋ณต์ฌํด์ c:\my_blockchain ๊ฒฝ๋ก์ ๋ถ์ฌ๋ฃ๋๋ค
- ๋ธ๋ก ๋ฐ์ดํฐ ํด๋ ์์ฑ
- geth --datadir c:\my_blockchain init c:\my_blockchain\genesis.json
- my_blockchain ํด๋์ geth, keystore ํด๋๊ฐ ์์ฑ๋ ๊ฒ์ ํ์ธํ ์ ์๋ค
- geth : ๋ชจ๋ ์ฒด์ธ์ ๋ํ ๋ฐ์ดํฐ ์ ์ฅ
- keystore : ๊ณ์ ๋ค์ ๋ํ ์ ๋ณด๋ฅผ ๊ด๋ฆฌ
- ๊ณ์ ์์ฑ
- get account new --datadir c:\my_blockchain
- ๋น๋ฐ๋ฒํธ ์ ๋ ฅ
- ์์ฑ๋ ๊ณ์ ์ ๋ณด ํ์ธ
- geth account list --datadir c:\my_blockchain
์ฌ์ค ํ ์คํธ๋ท ๊ธฐ๋
-
genesis.json ์ config์ chainId ๊ฐ์ networkid ๊ฐ๊ณผ ์ผ์น
- C:\Program Files\Geth>geth --networkid 921 --nodiscover --maxpeers 0 --datadir c:\my_blockchain console 2>>c:\my_blockchain\gethErr.log
- ์ค๋ฅ๋ฐ์ : Fatal: Failed to register the Ethereum service: ethash is only supported as a historical component of already merged networks
-
geth๋ฅผ ์ฝ์ ๋ชจ๋๋ก ์คํ
- geth --identity "MyNodeName" --genesis /path/to/CustomGenesis.json --rpc --rpcport "8080" --rpccorsdomain "*" --datadir "/path/to/TestChain" --port "30303" --nodiscover --rpcapi "db,eth,net,web3" --networkid 1999 console
- "MyNodeName" ์ ์ํ๋ ๋ ธ๋ ์ด๋ฆ์ผ๋ก ์์ ํ์๊ณ , ์ ๋ค์์ค ํ์ผ ๋ฐ ๋ฐ์ดํฐ ๋๋ ํ ๋ฆฌ๋ ๊ฐ๊ฐ ๋ณธ์ธ์ ํ๊ฒฝ์ ๋ง๊ฒ ์์






