Skip to content

aishahansten/blockchain

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

2 Commits
ย 
ย 
ย 
ย 

Repository files navigation

header

๐Ÿ˜ƒ 3์ผ์ฐจ

์ฃผ์ œ :๋ธ”๋ก์ฒด์ธ ๊ฐœ๋ฐœ ์ž…๋ฌธ

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) ๊ฒ€์ฆ

โš ๏ธP2P Net. ์ด๋ž€?

Source from borntodevelop.tistory.com

Peer-to-Peer Network ์˜ ์•ฝ์ž๋กœ ๋„คํŠธ์›Œํฌ๋กœ ๊ฐ™์ด ์—ฐ๊ฒฐ๋˜์–ด์žˆ๋Š” ์ปดํ“จํ„ฐ๋“ค์ด ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„์˜ ๊ธฐ๋Šฅ์„ ํ•˜๋Š” ๋„คํŠธ์›Œํฌ๋ฅผ ๋œปํ•œ๋‹ค.

์‰ฝ๊ฒŒ ๋งํ•˜๋ฉด, ํด๋ผ์ด์–ธํŠธ ์ปดํ“จํ„ฐ๊ฐ„์— ์ง์ ‘์ ์œผ๋กœ ํ†ต์‹ ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค!

โœ”๏ธ๋งˆ์ด๋‹(Mining)

  • ๊ฐ ๋…ธ๋“œ์—์„œ ๋งŒ๋“  ๋ธ”๋ก์ด ๋ชจ๋‘ ํ—ˆ์šฉ๋˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋ฉฐ, ์ฃผ์–ด์ง„ "๋‚œ์ด๋„"์— ๋”ฐ๋ผ ๋ธ”๋ก์˜ "ํ•ด์‰ฌ๊ฐ’"์„ ๊ณ„์‚ฐํ•˜์—ฌ ์กฐ๊ฑด์— ๊ฐ€์žฅ ๋ถ€ํ•ฉํ•˜๋Š” ๋ธ”๋ก์ด ์ƒˆ๋กญ๊ฒŒ "์ฒด์ธ(Chain)"์— ์ถ”๊ฐ€๋˜๋Š” ๋ธ”๋ก์œผ๋กœ ์„ ํƒ๋จ. ์ด ๊ณผ์ •์„ ์ฑ„๊ตด / ๋งˆ์ด๋‹(Mining) ์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

  • ์ด๋ ‡๋“ฏ ๋ฌด์ž‘์œ„ ์„ ์ •๋œ ๊ฒ€์ฆ์ธ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ๋ธ”๋ก์ฒด์ธ ๋„คํŠธ์›Œํฌ์— ๋Œ€ํ•ด ์ƒˆ๋กœ์šด ๋ธ”๋ก์„ ์ถ”๊ฐ€ํ•˜๋Š” ํ•ฉ์˜ ๋ฉ”์ปค๋‹ˆ์ฆ˜(์•Œ๊ณ ๋ฆฌ์ฆ˜) ์„ ์ž‘์—…์ฆ๋ช…(PoW) ์ด๋ผ๊ณ  ํ•œ๋‹ค.

โš ๏ธPoW ๋ž€?

Proof-of-Work ์˜ ์•ฝ์ž๋กœ ๋ชฉํ‘œ๊ฐ’ ์ดํ•˜์˜ ํ•ด์‹œ๋ฅผ ์ฐพ๋Š” ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•˜์—ฌ ํ•ด๋‹น ์ž‘์—…์— ์ฐธ์—ฌํ–ˆ์Œ์„ ์ฆ๋ช…ํ•˜๋Š” ๋ฐฉ์‹์˜ ํ•ฉ์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. ์ฑ„๊ตด(mining)์„ ํ†ตํ•ด ์ž‘์—…์ฆ๋ช…(PoW)๋ฅผ ํ•œ๋‹ค.

  • ์™œ ํ•„์š”ํ• ๊นŒ?

    • ์ž‘์—…์ฆ๋ช… ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๋„คํŠธ์›Œํฌ์˜ ๋ชจ๋“  ๋…ธ๋“œ(์„œ๋ฒ„)๊ฐ€ ๋™์‹œ์— ๋ธ”๋ก์„ ์ƒ์„ฑํ•  ์ˆ˜ ์—†๊ฒŒ ํ•˜๋Š” ๊ฒƒ์— ์˜์˜๊ฐ€ ์žˆ๋‹ค. ์ž‘์—…์ฆ๋ช…์„ ํ†ต๊ณผํ•ด์•ผ๋งŒ ๋ธ”๋ก์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ๋‚œ์ด๋„ ์กฐ์ ˆ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ†ตํ•ด 10๋ถ„๋‹น 1-2๊ฐœ์˜ ๋ธ”๋ก์ด ์ƒ์„ฑ๋จ์„ ๋ณด์žฅํ•œ๋‹ค.

โœ”๏ธ๋ธ”๋ก(Block)

Source from www.researchgate.net

  • Header + Body ์˜ ๊ตฌ์„ฑ

  • Block์˜ ๋Œ€๋ถ€๋ถ„์€ Transaction์œผ๋กœ ๊ตฌ์„ฑ๋จ

  • Block์€ ์ผ์ • ์‹œ๊ฐ„๋งˆ๋‹ค ์—ฌ๋Ÿฌ๊ฑด์˜ ๊ฑฐ๋ž˜๋‚ด์—ญ์„ ํ•˜๋‚˜์˜ ๋ธ”๋ก์œผ๋กœ ๋‚˜ํƒ€๋ƒ„

๐Ÿ„โœจ๊ณผ์ œ1

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์ง„๋ฒ•์„ ์˜๋ฏธํ•œ๋‹ค.)

Reference https://medium.com/@dongha.sohn/bitcoin-6-%EB%82%9C%EC%9D%B4%EB%8F%84%EC%99%80-%EB%AA%A9%ED%91%AF%EA%B0%92-9e5c0c12a580

โœ”๏ธ๋…ผ์Šค(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๋ฅผ ์ฐพ๋Š” ์ž‘์—…์€ ๋ธ”๋ก์ฒด์ธ์˜ ๋ถ„์‚ฐ๋œ ํ•ฉ์˜ ๋ฉ”์ปค๋‹ˆ์ฆ˜์˜ ์ผ๋ถ€๋กœ์จ ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•œ๋‹ค.

Reference 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


โœ”๏ธ๋ธ”๋ก ํ•ด์‹œ(Block Hash) : ๋ธ”๋ก Header ์ •๋ณด๋ฅผ ์ž…๋ ฅ ๊ฐ’์œผ๋กœ SHA256 ํ•ด์‹œ ํ•จ์ˆ˜๋ฅผ ์ ์šฉํ•ด์„œ ๊ณ„์‚ฐ๋˜๋Š” ๊ฐ’

  • ํ•ด์‹œ ๊ฐ’์€ ํ•ด์‹œ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์„œ 32bite์˜ ์ˆซ์ž ๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค
  • Blockchain์—์„œ๋Š” ๋ธ”๋ก ์ „์ฒด๋ฅผ ํ•ด์‹œํ•œ ๊ฐ’์ด ์•„๋‹ˆ๋ผ ๋ธ”๋ก Header๋ฅผ ํ•ด์‹œํ•œ ๊ฐ’์„ ์‚ฌ์šฉํ•œ๋‹ค

๐Ÿ„โœจ๊ณผ์ œ2

  1. ์ด๋”๋ฆฌ์›€ ํ…Œ์ŠคํŠธ ๋„คํŠธ์›Œํฌ ์ค‘ ๊ฐœ์ธ ํ…Œ์ŠคํŠธ์šฉ ์‚ฌ์„ค ํ…Œ์ŠคํŠธ ๋„ท์„ ๊ตฌ์„ฑํ•˜๊ณ  ํ™”๋ฉด์„ ์บก์ณํ•˜์—ฌ ์ œ์ถœ
  2. ์œ„ ๊ณผ์ œ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฉฐ ๋งŒ๋“  ์ œ๋„ค์‹œ์Šค ๋ธ”๋ก ํŒŒ์ผ์„ ์ œ์ถœ
  • ์‚ฌ์„ค ๋„คํŠธ์›Œํฌ ๊ตฌ์ถ•์„ ์œ„ํ•ด์„œ๋Š” "์ œ๋„ค์‹œ์Šค ๋ธ”๋ก ํŒŒ์ผ"๊ณผ "๋ธ”๋ก ๋ฐ์ดํ„ฐ ํด๋”"๊ฐ€ ํ•„์š”ํ•˜๋‹ค
  • ๋ธ”๋ก์ฒด์ธ์—์„œ ๊ฐ€์žฅ ๋จผ์ € ์ƒ์„ฑ๋˜๋Š” ๋ธ”๋ก์„ "์ œ๋„ค์‹œ์Šค ๋ธ”๋ก" ์ด๋ผ๊ณ  ํ•œ๋‹ค

์ œ๋„ค์‹œ์Šค ๋ธ”๋ก ํŒŒ์ผ ์ƒ์„ฑ

์ด๋”๋ฆฌ์›€ ์˜คํ”ˆ์†Œ์Šค

  • 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. 

ํ…Œ์ŠคํŠธ์šฉ ์‚ฌ์„ค ํ…Œ์ŠคํŠธ ๋„คํŠธ์›Œํฌ ๊ตฌ์„ฑ

geth ๋‹ค์šด๋กœ๋“œ

  • 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

etheruem

์‚ฌ์„ค ํ…Œ์ŠคํŠธ๋„ท ๊ธฐ๋™

  • 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" ์€ ์›ํ•˜๋Š” ๋…ธ๋“œ ์ด๋ฆ„์œผ๋กœ ์ˆ˜์ •ํ•˜์‹œ๊ณ , ์ œ๋„ค์‹œ์Šค ํŒŒ์ผ ๋ฐ ๋ฐ์ดํ„ฐ ๋””๋ ‰ํ† ๋ฆฌ๋„ ๊ฐ๊ฐ ๋ณธ์ธ์˜ ํ™˜๊ฒฝ์— ๋งž๊ฒŒ ์ˆ˜์ •

ethereum2

Footer

About

๐Ÿ“ฑ ๋ธ”๋ก์ฒด์ธ์„ ์ฃผ์ œ๋กœ ๋ฆฌ์„œ์น˜ํ•˜๊ณ  ๋ฐœํ‘œํ•˜๊ธฐ ์œ„ํ•ด ์ค€๋น„ํ•œ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์ž…๋‹ˆ๋‹ค ๐Ÿ“ฑ

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors