πŸ“ 이더리움 간단 정리

망고·2022λ…„ 5μ›” 25일
0
post-thumbnail

πŸ”μ΄λ”λ¦¬μ›€μ΄λž€

이더리움은 퍼블릭 λΈ”λ‘μ²΄μΈμ˜ μΌμ’…μœΌλ‘œ 슀마트 μ»¨νŠΈλž™νŠΈ(smart contract)λ₯Ό μ‹€ν–‰ν•˜λŠ” νƒˆμ€‘μ•™ν™”λœ μ›”λ“œ 컴퓨터이닀.

이더리움은 κ²°μ •λ‘ μ μ΄μ§€λ§Œ, ν•œμ •λ˜μ§€ μ•Šμ€ μƒνƒœ 머신이며, μ „μ—­μ μœΌλ‘œ μ ‘κ·Ό κ°€λŠ₯ν•œ 싱글톀 μƒνƒœμ™€ κ·Έ μƒνƒœλ₯Ό λ³€ν™”μ‹œν‚¬ 수 μžˆλŠ” κ°€μƒλ¨Έμ‹ μœΌλ‘œ κ΅¬μ„±λ˜μ–΄ μžˆλ‹€.


πŸ“¦κ΅¬μ„± μš”μ†Œ

  • Peer-to-Peer λ„€νŠΈμ›Œν¬ (P2P network)
    이더리움은 TCP 포트 30303으둜 접속 κ°€λŠ₯ν•œ 이더리움 메인 λ„€νŠΈμ›Œν¬(Ethereum main network)μ—μ„œ μ‹€ν–‰λœλ‹€.

  • ν•©μ˜ κ·œμΉ™(consensus rules)
    μ΄λ”λ¦¬μ›€μ˜ ν•©μ˜ κ·œμΉ™μ€ κΈ°μ€€ 사양인 ν™©μ„œ(Yello Paper)에 μ •μ˜λ˜μ–΄ μžˆλ‹€.

  • νŠΈλžœμž­μ…˜(transactons)
    이더리움 νŠΈλžœμž­μ…˜μ€ 보낸 μ‚¬λžŒ, λ°›λŠ” μ‚¬λžŒ, κ°’ 및 데이터 νŽ˜μ΄λ‘œλ“œκ°€ ν¬ν•¨λœ λ„€νŠΈμ›Œν¬ λ©”μ‹œμ§€μ΄λ‹€.

  • μƒνƒœ λ¨Έμ‹ (state machine)
    이더리움 μƒνƒœ μ „μ΄λŠ” λ°”μ΄νŠΈμ½”λ“œ(bytecode, 기계어 λͺ…λ Ήμ–΄)λ₯Ό μ‹€ν–‰ν•˜λŠ” μŠ€νƒ 기반 가상머신인 EVM(Ethereum Virtual Machine, 이더리움 가상머신)에 μ˜ν•΄ μ²˜λ¦¬λœλ‹€.
    슀마트 μ»¨νŠΈλž™νŠΈλŠ” λ°”μ΄νŠΈ μ½”λ“œλ‘œ μ»΄νŒŒμΌλ˜μ–΄ EVM을 톡해 μ‹€ν–‰λœλ‹€.

  • 데이터 ꡬ쑰(data structure)
    μ΄λ”λ¦¬μ›€μ˜ μƒνƒœλŠ” νŠΈλžœμž­μ…˜ 및 μ‹œμŠ€ν…œ μƒνƒœκ°€ 머클 νŒ¨νŠΈλ¦¬μƒ€ 트리(Merkle Patricia Tree)라고 ν•˜λŠ” 직렬화(seriallize)된 ν•΄μ‹œ 데이터 ꡬ쑰둜, 각 λ…Έλ“œμ˜ λ°μ΄ν„°λ² μ΄μŠ€(levelDB)에 μ €μž₯λœλ‹€.

  • ν•©μ˜ μ•Œκ³ λ¦¬μ¦˜(consensus algorithm)
    이더리움은 λΉ„νŠΈμ½”μΈμ˜ ν•©μ˜ λͺ¨λΈμΈ λ‚˜κ°€λͺ¨ν†  ν•©μ˜(Nakamoto Consensus)λ₯Ό μ‚¬μš©ν•œλ‹€.
    λ‚˜μΉ΄λͺ¨ν†  ν•©μ˜λŠ” 순차 단일 μ„œλͺ… 블둝을 μ‚¬μš©ν•˜μ—¬ μž‘μ—…μ¦λͺ…(PoW)의 μ€‘μš”λ„ κ°€μ€‘μΉ˜κ°€ κ°€μž₯ κΈ΄ 체인(ν˜„μž¬ μƒνƒœ)을 κ²°μ •ν•œλ‹€.
    κ·ΈλŸ¬λ‚˜ 이더리움 2.0λΆ€ν„΄ 지뢄증λͺ…(PoS) 가쀑 νˆ¬ν‘œ μ‹œμŠ€ν…œμœΌλ‘œ μ „ν™˜ν•  κ³„νšμ΄λ‹€.

  • 경제적 λ³΄μ•ˆμ„±(economic security)
    이더리움은 ν˜„μž¬ EthashλΌλŠ” μž‘μ—…μ¦λͺ…(PoW) μ•Œκ³ λ¦¬μ¦˜μ„ μ‚¬μš©ν•˜μ§€λ§Œ, ν–₯ν›„μ—λŠ” κ²°κ΅­ 지뢄증λͺ…(PoS) μ•Œκ³ λ¦¬μ¦˜μ„ μ‚¬μš©ν•  μ˜ˆμ •μ΄λ‹€.

  • ν΄λΌμ΄μ–ΈνŠΈ(clients)
    이더리움은 ν΄λΌμ΄μ–ΈνŠΈ μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό μƒν˜Έμš΄μš©ν•  수 μžˆλŠ” ꡬ쑰체λ₯Ό κ°–κ³  μžˆλ‹€.
    κ°€μž₯ 유λͺ…ν•œ 것은 게슀(Go-Ehtereum, Geth)와 νŒ¨λ¦¬ν‹°(Parity)이닀.

βš™οΈμž‘λ™ 방식

  1. 이더리움은 본질적으둜 νŠΈλžœμž­μ…˜μ— κΈ°λ°˜ν•œ μƒνƒœ λ¨Έμ‹  (state machine)이닀.

  2. μƒνƒœ 머신은 일련의 정보λ₯Ό 읽고 이λ₯Ό λ°”νƒ•μœΌλ‘œ μƒˆλ‘œμš΄ state둜 μ΄λ™ν•˜λŠ” μ‹œμŠ€ν…œμ„ μ˜λ―Έν•œλ‹€.

  3. 이더리움 μƒνƒœ 머신은 μ†Œμœ„ μ œλ„€μ‹œμŠ€(Genesis)라 λΆˆλ¦¬λŠ” stateμ—μ„œ μΆœλ°œν•˜λ©° μ œλ„€μ‹œμŠ€λŠ” λ„€νŠΈμ›Œν¬μ—μ„œ μ–΄λ– ν•œ νŠΈλžœμž­μ…˜λ„ λ°œμƒν•˜μ§€ μ•Šμ€ stateλ₯Ό λ§ν•œλ‹€.

  4. μ΄λ”λ¦¬μ›€μ˜ stateλŠ” 수백만의 νŠΈλžœμž­μ…˜λ“€λ‘œ 이루어져 μžˆλŠ”λ°, μ΄λŠ” λΈ”λ‘λ‹¨μœ„λ‘œ λ¬Άμ—¬ μžˆλ‹€.

  5. 블둝은 일련의 νŠΈλžœμž­μ…˜λ“€μ„ ν¬ν•¨ν•˜κ³ , 각각의 블둝듀은 이전 블둝과 블둝 ν•΄μ‹œλ₯Ό 맀개둜 μ—°κ²°λ˜μ–΄ μžˆλ‹€.

  6. ν•˜λ‚˜μ˜ stateλ‘œλΆ€ν„° λ‹€μŒ state둜 λ„˜μ–΄κ°€κΈ° μœ„ν•΄μ„œλŠ” λ°˜λ“œμ‹œ ν•΄λ‹Ή νŠΈλžœμž­μ…˜μ΄ μœ νš¨ν•œ νŠΈλžœμž­μ…˜μ΄μ–΄μ•Ό ν•œλ‹€.

  7. νŠΈλžœμž­μ…˜μ΄ μœ νš¨ν•˜λ‹€λ©΄, λ„€νŠΈμ›Œν¬μ— μ°Έμ—¬ν•˜λŠ” λ‹€μˆ˜μ˜ μ±„κ΅΄μž λ…Έλ“œλ“€λ‘œλΆ€ν„° 경쟁적인 채꡴을 거쳐 λΈ”λ‘μœΌλ‘œ 병합 및 λ“±λ‘λœλ‹€.

πŸ”‘κ³„μ • (Account)

πŸ”μ΄λ”λ¦¬μ›€μ—μ„œ κ³„μ •μ΄λž€

  • μ΄λ”λ¦¬μ›€μ˜ μƒνƒœ(State)λŠ” κΈ€λ‘œλ²Œν•˜κ²Œ 곡유되며 μ΄λŠ” 계정(Account)을 λ§€ν•‘μ‹œν‚¨ μ£Όμ†Œλ“€μ˜ 집합이닀.

  • νŠΉμ • 계정은 λ©”μ‹œμ§€ 전달 ν”„λ ˆμž„μ›Œν¬λ₯Ό 톡해 λ‹€λ₯Έ 계정과 μƒν˜Έμž‘μš©ν•œλ‹€.

  • 각 계정은 μžμ‹ μ— λŒ€ν•œ 정보와 20λ°”μ΄νŠΈμ˜ μ£Όμ†Œλ₯Ό 가진닀.

πŸ·οΈκ³„μ • μ’…λ₯˜

  • μ™ΈλΆ€ μ†Œμœ  계정 (Externally Owned Account: EOA)
    • κ°œμΈν‚€κ°€ μžˆλ‹€.
    • 개인 ν‚€λ‘œ μ œμ–΄λ˜λ©° μ½”λ“œλ₯Ό μ €μž₯ν•  수 μ—†λ‹€.
    • 자금 λ˜λŠ” μ»¨νŠΈλž™νŠΈμ— λŒ€ν•œ 접근을 μ œμ–΄ν•œλ‹€.
    • νŠΈλžœμž­μ…˜μ„ μ‹œμž‘ν•  수 μžˆλ‹€.

  • μ»¨νŠΈνƒνŠΈ 계정 (Contract Account: CA)
    • κ°œμΈν‚€κ°€ μ—†λ‹€.
    • 슀마트 μ»¨νŠΈλž™νŠΈ λ‘œμ§μ— μ˜ν•΄ μ œμ–΄λ˜λ©° 슀마트 μ»¨νŠΈλž™νŠΈ μ½”λ“œλ₯Ό μ €μž₯ν•  수 μžˆλ‹€.
    • κ°œμΈν‚€κ°€ μ—†μ–΄ 슀슀둜 νŠΈλžœμž­μ…˜μ„ μ‹œμž‘ν•  수 μ—†λ‹€.
    • μ™ΈλΆ€ νŠΈλžœμž­μ…˜μ— λŒ€ν•œ 응닡을 톡해 νŠΈλžœμž­μ…˜μ„ μ‹€ν–‰ν•  수 μžˆλ‹€.

πŸ“¦κ³„μ • ꡬ성 μš”μ†Œ

  • λ…ΌμŠ€(Nonce)
    • EOA의 경우, ν•΄λ‹Ή κ³„μ •μ˜ μ£Όμ†Œλ‘œλΆ€ν„° μ‹œμž‘ν•œ νŠΈλžœμž­μ…˜λ“€μ˜ 수λ₯Ό μ˜λ―Έν•œλ‹€.
    • CA의 경우, ν•΄λ‹Ή 계정에 μ˜ν•΄ μƒμ„±λœ μ»¨νŠΈλž™νŠΈμ˜ 수λ₯Ό μ˜λ―Έν•œλ‹€.

  • Balance
    • ν•΄λ‹Ή 계정이 μ†Œμœ ν•˜κ³  μžˆλŠ” Wei의 μ–‘ (10^18 Wei = 1 ETH)

  • StorageRoot
    • 머클 νŒ¨νŠΈλ¦¬μƒ€ 트리의 λ£¨νŠΈλ…Έλ“œλ₯Ό ν•΄μ‹±ν•œ κ°’
    • 머클 νŒ¨νŠΈλ¦¬μƒ€ νŠΈλ¦¬λŠ” μ΄λ”λ¦¬μ›€μ˜ TXλ₯Ό λ³΄κ΄€ν•˜κ³  μœ νš¨μ„±μ„ κ²€μ¦ν•˜κΈ° μœ„ν•œ 자료ꡬ쑰둜 계정에 μ €μž₯된 μš”μ†Œλ“€μ„ ν•΄μ‹œκ°’μœΌλ‘œ μ•”ν˜Έν™”ν•˜μ˜€λ‹€.

  • CodeHash
    • EVM(Ethereum Virtual Machine)μ—μ„œ 싀행될 μ½”λ“œμ˜ ν•΄μ‹œκ°’
    • CA의 경우, ν•΄λ‹Ή κ³„μ •μ—μ„œ μ‹€ν–‰μ‹œν‚¬ 슀마트 μ»¨νŠΈλž™νŠΈ μ½”λ“œμ˜ ν•΄μ‹œκ°’μ΄λ‹€.
    • EOA의 경우, μ½”λ“œλ₯Ό μ €μž₯ν•  수 μ—†κΈ°ν•΄ empty λ¬Έμžμ—΄μ˜ ν•΄μ‹œκ°’μ΄λ‹€.

πŸ“œνŠΈλžœμž­μ…˜

πŸ”μ΄λ”λ¦¬μ›€μ—μ„œ νŠΈλžœμž­μ…˜μ΄λž€

  • νŠΈλžœμž­μ…˜μ€ μ™ΈλΆ€ μ†Œμœ  계정(EOA)에 μ˜ν•΄ μ„œλͺ…λœ λ°”μ΄λ„ˆλ¦¬ λ©”μ‹œμ§€μ΄λ‹€.

  • 이더리움 λ„€νŠΈμ›Œν¬μ— μ˜ν•΄ μ „μ†‘λ˜κ³  이더리움 블둝체인에 κΈ°λ‘λœλ‹€.

  • νŠΈλžœμž­μ…˜μ€ EVMμ—μ„œ μƒνƒœ 변경을 μœ λ°œν•˜κ±°λ‚˜ μ»¨νŠΈλž™νŠΈλ₯Ό μ‹€ν–‰ν•  수 μžˆλŠ” μœ μΌν•œ 방법이닀.

πŸ“¦νŠΈλžœμž­μ…˜ ꡬ쑰

  • λ…ΌμŠ€(Nonce)
    λ°œμ‹  EOA에 μ˜ν•΄ λ°œν–‰λ˜μ–΄ λ©”μ‹œμ§€ μž¬μ‚¬μš©μ„ λ°©μ§€ν•˜λŠ”λ° μ‚¬μš©λ˜λŠ” 일렬번호
    νƒˆμ€‘μ•™ν™”λœ μ‹œμŠ€ν…œμ—μ„œ νŠΈλžœμž­μ…˜ 처리 μš°μ„ μˆœμœ„λ₯Ό νŒλ³„ν•  λ•Œ μ‚¬μš©ν•œλ‹€.

  • κ°€μŠ€ 가격(gas price)
    λ°œμ‹ μžκ°€ μ§€κΈ‰ν•˜λŠ” κ°€μŠ€μ˜ 가격

  • κ°€μŠ€ ν•œλ„(gas limit)
    이 νŠΈλžœμž­μ…˜μ„ μœ„ν•΄ κ΅¬μž…ν•  κ°€μŠ€μ˜ μ΅œλŒ€λŸ‰

  • μˆ˜μ‹ μž(recipient)
    λͺ©μ μ§€ 이더리움 μ£Όμ†Œ

  • κ°’(value)
    λͺ©μ μ§€μ— 보낼 μ΄λ”μ˜ μ–‘

  • 데이터(data)
    κ°€λ³€ 길이 λ°”μ΄λ„ˆλ¦¬ 데이터 νŽ˜μ΄λ‘œλ“œ

  • v,r,s
    EOA의 ECDSA 디지털 μ„œλͺ…μ˜ 세가지 κ΅¬μ„±μš”μ†Œ

πŸͺ™νŠΈλžœμž­μ…˜ κ°€μŠ€

  • κ°€μŠ€λŠ” μ΄λ”λ¦¬μ›€μ˜ μ—°λ£Œλ‘œ νŠΈλžœμž­μ…˜ 및 μ—°μ‚° λ°œμƒ μ‹œ λ°œμ‹ μžκ°€ λΆ€λ‹΄ν•˜λŠ” 수수료이며 μ΄λŠ” μ±„κ΅΄μžμ—κ²Œ λ³΄μƒμœΌλ‘œ μ§€κΈ‰λœλ‹€.

  • 이더리움은 νŠΈλžœμž­μ…˜μ— κ°€μŠ€λ₯Ό λΆ€κ³Όν•˜μ—¬ νŠΈλžœμž­μ…˜ λ°œμƒκ³Ό νŠΈλžœμž­μ…˜μ΄ μ‚¬μš©ν•˜λŠ” μžμ›μ˜ 양을 μ œμ–΄ν•œλ‹€.

  • κ°€μŠ€ 가격을 μ‘°μ •ν•΄ νŠΈλžœμž­μ…˜ 컨펌 μš°μ„ μˆœμœ„λ₯Ό μ‘°μ •ν•  수 μžˆλ‹€.

  • νŠΈλžœμž­μ…˜μ—μ„œ κ³Όλ„ν•œ 연산이 λ°œμƒν•΄ κ°€μŠ€ ν•œλ„(gas limit)λ₯Ό λ„˜μ–΄μ„€ 경우 ν•΄λ‹Ή νŠΈλžœμž­μ…˜ 처리λ₯Ό μ€‘λ‹¨ν•œλ‹€.

  • κ°€μŠ€ 가격(gas price) * κ°€μŠ€ ν•œλ„(gas limit) = μ΅œλŒ€ 수수료

πŸ“­νŠΈλžœμž­μ…˜ μˆ˜μ‹ μž

  • 20byte의 이더리움 μ£Όμ†Œλ₯Ό ν¬ν•¨ν•˜λ©° EOA λ˜λŠ” μ»¨νŠΈλž™νŠΈμ˜ μ£Όμ†ŒμΌ 수 μžˆλ‹€.

  • 이더리움은 ν•΄λ‹Ή ν•„λ“œλ₯Ό κ²€μ¦ν•˜μ§€ μ•ŠμœΌλ©° λͺ¨λ“  20byte 값은 μœ νš¨ν•˜λ‹€κ³  κ°„μ£Όν•œλ‹€.

βœ‰οΈνŠΈλžœμž­μ…˜ νŽ˜μ΄λ‘œλ“œ

  • νŠΈλžœμž­μ…˜μ˜ μ£Όμš” νŽ˜μ΄λ‘œλ“œλŠ” κ°’κ³Ό 데이터에 ν¬ν•¨λœλ‹€.

  • νŠΈλžœμž­μ…˜μ€ κ°’κ³Ό 데이터, κ°’λ§Œ, λ°μ΄ν„°λ§Œ, κ°’κ³Ό 데이터 λͺ¨λ‘ 가지지 μ•ŠλŠ” 넀가지 쑰합이 λͺ¨λ‘ μœ νš¨ν•˜λ‹€.

  • κ°’λ§Œ μžˆλŠ” νŠΈλžœμž­μ…˜μ€ 지급(payment), λ°μ΄ν„°λ§Œ μžˆλŠ” νŠΈλžœμž­μ…˜μ€ 호좜(invocation), κ°’κ³Ό 데이터 λͺ¨λ‘ μ‚¬μš©ν•˜λŠ” νŠΈλžœμž­μ…˜μ€ 지급과 ν˜ΈμΆœμ΄λ‹€.

  • 지급 νŠΈλžœμž­μ…˜μ€ μˆ˜μ‹ μž μ£Όμ†Œκ°€ EOA인지 μ»¨νŠΈλž™νŠΈμΈμ§€μ— 따라 λ‹€λ₯΄κ²Œ μž‘λ™ν•œλ‹€.
    • EOA인 경우, 이더리움은 μƒνƒœ 변경을 κΈ°λ‘ν•˜μ—¬ μ£Όμ†Œ μž”μ•‘μ— 보낸 값을 μΆ”κ°€ν•œλ‹€.
    • μ»¨νŠΈλž™νŠΈμΈ 경우, EVM은 μ»¨νŠΈλž™νŠΈλ₯Ό μ‹€ν–‰ν•˜κ³  νŠΈλžœμž­μ…˜μ˜ 데이터 νŽ˜μ΄λ‘œλ“œμ— μ§€μ •λœ ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜λ € ν•œλ‹€.
    • 데이터가 μ—†μœΌλ©΄ 폴백 ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜κ³ , ν΄λ°±ν•¨μˆ˜κ°€ μ„€μ •λ˜μ§€ μ•Šμ€ κ²½μš°μ—” EOA와 λ§ˆμ°¬κ°€μ§€λ‘œ μ»¨νŠΈλž™νŠΈμ˜ μž”μ•‘μ„ λŠ˜λ¦°λ‹€.

  • 호좜 νŠΈλžœμž­μ…˜μ€ λŒ€λΆ€λΆ„ μ»¨νŠΈλž™νŠΈλ‘œ ν–₯ν•˜λ©° μ „λ‹¬λœ λ°μ΄ν„°λŠ” EVM에 μ˜ν•΄ μ»¨νŠΈλž™νŠΈ ν˜ΈμΆœλ‘œμ„œ ν•΄μ„λ˜κ³  μ»¨νŠΈλž™νŠΈμ—μ„œλŠ” 이λ₯Ό ν•¨μˆ˜ 호좜둜 μ‚¬μš©ν•œλ‹€.

πŸ”§μ»¨νŠΈλž™νŠΈ 생성 νŠΈλžœμž­μ…˜

  • μ»¨νŠΈλž™νŠΈ 생성 νŠΈλžœμž­μ…˜μ€ 제둜 μ–΄λ“œλ ˆμŠ€λΌκ³  ν•˜λŠ” 특수 λŒ€μƒ μ£Όμ†Œλ‘œ μ „μ†‘λœλ‹€.
  • μ»¨νŠΈλž™νŠΈ μƒμ„±μ˜ μˆ˜μ‹ μž μ£Όμ†ŒλŠ” 0x0으둜 ν•΄λ‹Ή μ£Όμ†ŒλŠ” EOAλ‚˜ μ»¨νŠΈλž™νŠΈλ₯Ό λ‚˜νƒ€λ‚΄μ§€ μ•ŠμœΌλ©° 이더λ₯Ό μ†ŒλΉ„ν•˜κ±°λ‚˜ νŠΈλžœμž­μ…˜μ„ μ‹œμž‘ν•  수 μ—†λ‹€.

πŸ“¨νŠΈλžœμž­μ…˜ μ „νŒŒ

  • 이더리움 λ„€νŠΈμ›Œν¬λŠ” 'ν”ŒλŸ¬λ“œ λΌμš°νŒ…(flood routing)' ν”„λ‘œν† μ½œμ„ μ‚¬μš©ν•œλ‹€.

  • 각 이더리움 ν΄λΌμ΄μ–ΈνŠΈλŠ” λ©”μ‹œ λ„€νŠΈμ›Œν¬λ₯Ό ν˜•μ„±ν•˜λŠ” P2P λ„€ν¬μ›Œν¬μ—μ„œ λ…Έλ“œ 역할을 ν•œλ‹€.

  • νŠΈλžœμž­μ…˜ μ „νŒŒλŠ” μ„œλͺ…λœ νŠΈλžœμž­μ…˜μ„ μƒμ„±ν•œ 이더리움 λ…Έλ“œμ—μ„œ μ‹œμž‘ν•΄ 이웃 λ…Έλ“œλΌ λΆˆλ¦¬λŠ” 직접 μ—°κ²°λœ λ‹€λ₯Έ λͺ¨λ“  이더리움 λ…Έλ“œλ‘œ μ „μ†‘λœλ‹€.

  • 각 이웃 λ…Έλ“œλŠ” νŠΈλžœμž­μ…˜μ„ μˆ˜μ‹ ν•˜λ©΄ μ¦‰μ‹œ μœ νš¨μ„±μ„ κ²€μ‚¬ν•œλ‹€.

  • νŠΈλžœμž­μ…˜μ˜ μœ νš¨μ„±μ΄ μž…μ¦λ˜λ©΄ 이웃 λ…Έλ“œλ“€μ€ ν•΄λ‹Ή 사본을 μ €μž₯ν•˜κ³  λͺ¨λ“  μ΄μ›ƒμ—κ²Œ νŠΈλžœμž­μ…˜μ„ μ „νŒŒν•œλ‹€.

  • 결과적으둜 νŠΈλžœμž­μ…˜μ€ λ„€νŠΈμ›Œν¬μ˜ λͺ¨λ“  λ…Έλ“œκ°€ νŠΈλžœμž­μ…˜ 사본을 κ°€μ§ˆ λ•ŒκΉŒμ§€ μ‹œμž‘ λ…Έλ“œμ—μ„œ λ°”κΉ₯μͺ½μœΌλ‘œ 물결치며 퍼진닀(flooding).

πŸ“μŠ€λ§ˆνŠΈ μ»¨νŠΈλž™νŠΈ

πŸ”μŠ€λ§ˆνŠΈ μ»¨νŠΈλž™νŠΈλž€

  • 슀마트 μ»¨νŠΈλž™νŠΈλŠ” λΆˆλ³€μ μΈ(immutable) 컴퓨터 ν”„λ‘œκ·Έλž¨μœΌλ‘œ EVM(이더리움 가상 λ¨Έμ‹ )의 μ»¨νŠΈλž™νŠΈμƒμ—μ„œ 결정둠적(deterministically) μž‘λ™ν•œλ‹€.

  • 슀마트 μ»¨νŠΈλž™νŠΈ μ½”λ“œλŠ” 일단 배포되면 λ³€κ²½ν•  수 μ—†μœΌλ©° μˆ˜μ •ν•˜λŠ” μœ μΌν•œ 방법은 μƒˆλ‘œμš΄ μΈμŠ€ν„΄μŠ€λ₯Ό λ°°ν¬ν•˜λŠ” 것이닀.

  • 슀마트 μ»¨νŠΈλž™νŠΈλ₯Ό μ‹€ν–‰ν•œ 결과물은 그것을 μ‹€ν–‰ν•œ λͺ¨λ“  λ…Έλ“œμ—κ²Œ λ™μΌν•œλ°, μ΄λŠ” 싀행을 μ‹œμž‘ν•œ νŠΈλžœμž­μ…˜μ˜ μ»¨ν…μŠ€νŠΈμ™€ μ‹€ν–‰ μ‹œμ μ— 이더리움 λΈ”λ‘μ²΄μΈμ˜ μƒνƒœκ°€ λ™μΌν•˜κΈ° λ•Œλ¬Έμ΄λ‹€.

  • 슀마트 μ»¨νŠΈλž™νŠΈλŠ” 솔리디티(Solidity)λ‚˜ 바이퍼(Vyper)와 같은 κ³ κΈ‰ ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄λ‘œ μž‘μ„±λœλ‹€.

  • 슀마트 μ»¨νŠΈλž™νŠΈλŠ” EVM μœ„μ—μ„œ μ‹€ν–‰λ˜λ©° 이λ₯Ό μœ„ν•΄μ„  μ €μˆ˜μ€€μ˜ λ°”μ΄νŠΈ μ½”λ“œλ‘œ 컴파일 λ˜μ–΄μ•Ό ν•œλ‹€.

βš™οΈμž‘λ™ 방식

  1. 슀마트 μ»¨νŠΈλž™νŠΈλ₯Ό μž‘μ„±ν•œλ‹€.

  2. μ»¨νŠΈλž™νŠΈλ₯Ό EVMμ—μ„œ μ‹€ν–‰λ˜λŠ” μ €μˆ˜μ€€μ˜ λ°”μ΄νŠΈμ½”λ“œλ‘œ μ»΄νŒŒμΌν•œλ‹€.

  3. 컴파일되면 μ»¨νŠΈλž™νŠΈ 생성 νŠΈλžœμž­μ…˜μ„ μ‚¬μš©ν•˜μ—¬ 이더리움 ν”Œλž«νΌμ— λ°°ν¬λœλ‹€.

  4. 배포된 μ»¨νŠΈλž™νŠΈλŠ” νŠΈλžœμž­μ…˜μ— μ˜ν•΄ 호좜된 κ²½μš°μ—λ§Œ μ‹€ν–‰λ˜λ©° 자체적으둜 λ°±κ·ΈλΌμš΄λ“œμ—μ„œ μ‹€ν–‰λ˜μ§€ μ•ŠλŠ”λ‹€.

  5. νŠΈλžœμž­μ…˜μ€ μ›μžμ„±(atomic)을 κ°€μ§€λŠ”λ° λͺ¨λ“  싀행이 μ„±κ³΅μ μœΌλ‘œ μ’…λ£Œλœ κ²½μš°μ—λ§Œ μƒνƒœ λ³€κ²½ 사항이 기둝 및 μ‹€ν–‰λ˜κ³  였λ₯˜λ‘œ 인해 싀행이 μ‹€νŒ¨ν•˜λ©΄ λͺ¨λ“  μƒνƒœ λ³€κ²½ νŠΈλžœμž­μ…˜μ΄ μ‹€ν–‰λ˜μ§€ μ•Šμ€ κ²ƒμ²˜λŸΌ λ‘€λ°±λœλ‹€.

  6. ν•œλ²ˆ 배포된 μ»¨νŠΈλž™νŠΈλŠ” μˆ˜μ •μ΄ λΆˆκ°€ν•˜μ§€λ§Œ μ‚­μ œν•˜μ—¬ ν•΄λ‹Ή μ£Όμ†Œμ—μ„œ μ½”λ“œμ™€ μŠ€ν† λ¦¬μ§€λ₯Ό μ œκ±°ν•˜κ³  빈 κ³„μ •μœΌλ‘œ 남길 수 μžˆλ‹€.

  7. μ»¨νŠΈλž™νŠΈλ₯Ό μ‚­μ œν•˜λ©΄ κ°€μŠ€λ₯Ό ν™˜λΆˆμ΄ λ°œμƒν•˜λ©°, μ΄λŠ” μ‚­μ œλ₯Ό 톡해 λ„€νŠΈμ›Œν¬ ν΄λΌμ΄μ–ΈνŠΈ μžμ›μ„ λ°˜ν™˜ν•˜λ„λ‘ ν•˜λŠ” λ™κΈ°λΆ€μ—¬λ‘œ μž‘μš©ν•œλ‹€.

  8. μ»¨νŠΈλž™νŠΈλ₯Ό μ‚­μ œν•˜λ”λΌλ„ νŠΈλžœμž­μ…˜ 내역은 μ œκ±°λ˜μ§€ μ•ŠλŠ”λ‹€.

πŸ’½EVM

πŸ”EVMμ΄λž€

  • 이더리움 가상 λ¨Έμ‹ (Ethereum Virtual Machine)은 λ°”μ΄νŠΈμ½”λ“œλ‘œ 컴파일된 ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄μ˜ 인터프리터와 λΉ„μŠ·ν•œ 계산 엔진이닀.

  • EOAμ—μ„œ EOA둜 κ°„λ‹¨ν•œ 값을 μ „μ†‘ν•˜λŠ” νŠΈλžœμž­μ…˜μ„ μ œμ™Έν•œ λͺ¨λ“  EVM에 μ˜ν•œ μƒνƒœ μ—…λ°μ΄νŠΈλ₯Ό μˆ˜λ°˜ν•œλ‹€.

  • EVM은 λͺ¨λ“  이더리움 λ…Έλ“œμ—μ„œ 둜컬 μΈμŠ€ν„΄μŠ€λ‘œ μ‹€ν–‰λ˜μ§€λ§Œ, EVM의 λͺ¨λ“  μΈμŠ€ν„΄μŠ€λŠ” λ™μΌν•œ 초기 μƒνƒœμ—μ„œ μž‘λ™ν•˜κ³  λ™μΌν•œμ΅œμ’… μƒνƒœλ₯Ό μƒμ„±ν•˜κΈ° λ•Œλ¬Έμ— μ‹œμŠ€ν…œ 전체가 νƒˆμ€‘μ•™ν™”λœ 단일 μ›”λ“œ μ»΄ν“¨ν„°λ‘œ μž‘λ™ν•œλ‹€.

  • EVM은 λ©”λͺ¨λ¦¬ λ‚΄μ˜ λͺ¨λ“  값을 μŠ€νƒμ— μ €μž₯ν•˜λŠ” μŠ€νƒ 기반 μ•„ν‚€ν…μ²˜μ΄λ©° 256λΉ„νŠΈμ˜ 단어 크기둜 λ™μž‘ν•œλ‹€.

  • EVM은 μœ μ‚¬ 튜링 μ™„μ „ μƒνƒœ λ¨Έμ‹ μœΌλ‘œ λ¬΄ν•œ 루프λ₯Ό μ œμ™Έν•œ λͺ¨λ“  ν”„λ‘œκ·Έλž¨μ„ μ‹€ν–‰ν•  수 μžˆλ‹€.

  • EVM은 μ‹€ν–‰ μˆœμ„œκ°€ μ™ΈλΆ€(이더리움 ν΄λΌμ΄μ–ΈνŠΈ)μ—μ„œ κ΅¬μ„±λ˜κΈ°μ— μŠ€μΌ€μ€„λ§ κΈ°λŠ₯이 μ—†λ‹€.

  • EVM은 μ‹œμŠ€ν…œ μΈν„°νŽ˜μ΄μŠ€(System Interface) μ²˜λ¦¬κ°€ μ—†λ‹€.

πŸ“¦EVM ꡬ쑰

  • EVM μ›”λ“œ μƒνƒœ (EVM World State)
    이더리움 μ£Όμ†Œλ₯Ό λ§€ν•‘ν•œ 계정(Account)의 집합

  • λ³€μˆ˜μ™€ μœ λ‹›μ˜ EVM κΈ€λ‘œλ²Œ λ„€μž„μŠ€νŽ˜μ΄μŠ€

  • EVM μ‹€ν–‰λͺ¨λΈ (EVM Execution Model)
    • EVM μƒνƒœ
      • ν”„λ‘œκ·Έλž¨ μ½”λ“œ(슀마트 μ»¨νŠΈλž™νŠΈμ˜ λ°”μ΄νŠΈμ½”λ“œ) ROM
      • 영ꡬ μŠ€ν† λ¦¬μ§€
      • νœ˜λ°œμ„± λ©”λͺ¨λ¦¬
      • ν”„λ‘œκ·Έλž¨ μΉ΄μš΄ν„°
      • μŠ€νƒ
    • λ°”μ΄νŠΈμ½”λ“œ ν˜•νƒœμ˜ μ—°μ‚°μ½”λ“œ(OPCODE) μƒνƒœ 사이클

참고자료

  1. Mastering Ethereum, by Andreas M. Antonopoulos, Gavin Wood
  2. https://hersheythings.xyz/entry/ethtereumstructure

0개의 λŒ“κΈ€