Pwnstar

이더리움 관련 개념 본문

블록체인(BlockChain)/블록체인 기본 개념

이더리움 관련 개념

포너블처돌이 2023. 1. 21. 15:42

인프런의 이더리움 입문 바이블: 모든 이더리움 입문자를 위하여 강의를 보고 단순 정리 목적으로 정리한 글이다.

[무료] 이더리움 입문 바이블: 모든 이더리움 입문자를 위하여 - 인프런 | 강의
초급자를 위해 준비한 [블록체인] 강의입니다. 본 텍스트 강의는 하나의 '바이블' 을 자처하고, 그러한 기초 내용을 올바르게 담고자 노력한 자료입니다. 너무나도 중요하고 뼈대있는 이더리움 기초 내용들 블록체인에 대한 관심, 이더리움에 대한 학습 열의에 대해서 논하는건 이제 너무나도 당연해서 식상하다는 생각이 들 정도입니다.
https://www.inflearn.com/course/ethereum-bible/dashboard

Smart Contracts

  • Solidity 언어(다른 언어도 가능하지만 많이 쓰이는 언어가 solidity)로 작성한 응용프로그램을 ‘스마트 컨트랙트’라고 한다.
  • 계약서를 작성하여 코드로 변환하고 블록체인에 배포하면 디지털 계약이 체결된다.
  • 당사자 간의 합의를 강화할 수 있다는 장점이 있다.

이더와 이더의 단위

  • 각 블록체인에는 자체 통화가 존재.
  • 이더리움 블록체인의 경우 기본 통화를 이더(Ether)라고 한다.
  • 웨이(wei)는 가장 낮은 단위로 스마트 계약서에서 실제로 쓰이는 단위.

주소(Address)

  • 이더리움 블록체인에서 사용자를 인증할 수 있는 것은 주소이다.
  • 각 주소에는 해당 개인키(사용자가 알고 있는 일종의 암호)가 존재.
  • 블록체인과 상호작용하기 위해서 주소 + 개인키 쌍이 필요.
    • 이더리움의 주소는 공개되어 있으며 전 세계 누구와도 공유할 수 있다.
    • 개인키는 절대 다른 사람과 공유해서는 안된다.
    • 주소 + 개인키는 그 어떤 데이터베이스에도 저장되지 않는다. 사용자만이 이정보를 통제할 수 있다.

이더리움의 주소가 생성되는 방식

https://en.wikipedia.org/wiki/Public-key_cryptography

공개키 암호화 방식 사용

  1. 개인키 생성 k(private key) = f8f8a2f43c8376ccb0871305060d7b27b0554d2cc72bccf41b2705608452f315
  1. 개인키로부터 공개키 생성 K(public key) = 6e145ccef1033dea239875dd00dfb4fee6e3348b84985c92f103444683bae07b83b5c38e5e2b0c8529d7fa3f64d46daa1ece2d9ac14cab9477d042c84c32ccd0

  1. keccak256 알고리즘으로 공개키의 해시값 계산 Keccak256(K) = 2a5bc342ed616b5ba5732269001d3f1ef827552ae1114027bd3ecf1f086ba0f9001d3f1ef827552ae1114027bd3ecf1f086ba0f9
  1. 생성된 해시값의 하위 20바이트를 취하여 이더리움 주소 생성 0x001d3f1ef827552ae1114027bd3ecf1f086ba0f9

계정(Account)

  • 이더리움 주소와 개인키의 조합을 계정이라고 한다.
  • 이더리움 계정은 이더 잔고를 보유하고 트랜잭션을 전송할 수 있다.
  • 두 가지 유형이 존재
    1. 외부 소유 계정(EOA)
      • 공개주소와 개인키의 조합.
      • 다른 계정과 이더를 송수신할 수 있다.
      • 스마트 컨트랙트에 트랜잭션을 보낼 수 있다.
    1. 컨트랙트 계정
      • 상응하는 개인키가 없다.
      • 이러한 종류의 계정은 스마트 계약을 블록체인에 배포할 때 생성된다.
      • 다른 계정과 이더를 송수신할 수 있다.
      • 관련된 코드를 담을 수 있다.(담을 수 있다?)
      • EOA나 다른 컨트랙트의 호출을 받아 트랜잭션을 발생시킨다.

지갑(Wallets)

  • 이더리움 계정을 저장하고 관리하는 데 사용되는 소프트웨어 플러그인 또는 라이브러리.
  • 지갑을 통해 여러 계정을 관리하고, 트랜잭션에 서명하고, 잔고를 추적할 수 있다.
  • 두 가지 유형이 존재
    1. 비결정적 지갑
      • 임의의 개인키/공개키 쌍을 사용하는 유형의 지갑
      • 개인키/공개키 쌍을 많이 생성할 수 있지만 각 키 쌍 간에는 아무런 상관 관계가 없다.
    1. 결정론적 지갑
      • 모든 키가 시드(seed)라는 단일 시작 지점에서 파생된다.
      • 시드는 사용자가 다른 정보를 요구하지 않고 지갑을 쉽게 백업하고 복원할 수 있게 해주고, 경우에 따라 개인키를 몰라도 공개키를 생성할 수 있게 해준다.

가스(Gas)

  • 이더리움 블록체인에 스마트 계약을 배포하고 트랜잭션을 실행하기 위한 비용.
  • 트랜잭션을 실행하기 위해 채굴자에게 이더를 지불해야 한다.

가스 가격(Gas Price)

  • 실제 채굴자에게 지불해야 하는 이더의 양을 결정.
  • 가스 가격은 트랜잭션 생성자가 설정할 수 있다.
  • 설정한 가격이 높을수록 트랜잭션이 빨리 처리된다.
  • 대부분의 처리자들이 가스 가격의 내림차순으로 트랜잭션을 분류해서 처리한다.

가스 한도(Gas Limit)

  • 트랜잭션을 실행하기 위해 사용할 가스의 최대 금액을 나타내는 것.
  • 블록 가스 한도(Block Gas Limit)과 다름.
    • 블록 가스 한도는 이더리움의 각 블록에 적용되는 최대 캡.
    • 현재 이더리움의 블록은 가스 총액이 800만 이내의 범위에서만 트랜잭션을 포함할 수 있다.
    • 무한 루프를 실행할 수 없도록 하기 위함.
    • 무한 루프가 발생하면 트랜잭션 실행이 완료되지 않아 블록 채굴이 발생하지 않는다.

바이트코드(Byte Code)

  • 스마트 컨트랙트 코드는 Solidity와 같은 고급 프로그래밍 언어로 작성된다.
  • 이 코드는 이더리움 블록체인에 배포되는 EVM 바이트코드로 컴파일된다.
  • 이더리움의 런타임 환경은 바이트코드만을 이해하고 실행할 수 있다.
  • 현재 파이썬과 유사한 Vyper 등 몇몇 언어가 EVM 바이트코드로 컴파일된다.

EVM(Ethereum Virtual Machine)

  • 이더리움 가상 머신은 256비트 가상머신으로써 누구나 임의의 EVM 바이트코드를 실행할 수 있다.
  • EVM은 이더리움 프로토콜의 일부이며, 이더리움 시스템의 합의 엔진에서 중요한 역할을 한다.
  • 누구나 신뢰가 필요없는 환경에서 임의의 코드를 실행하고 그 결과로 완전히 결정론적이고 실행 결과가 보장된다.
  • geth, parity 등의 이더리움 클라이언트를 설치하고 실행하면 EVM이 시작되고, EVM이 트랜잭션의 동기화, 유효성 검사 및 실행을 시작한다.


Uploaded by N2T

'블록체인(BlockChain) > 블록체인 기본 개념' 카테고리의 다른 글

Ethereum이란?  (0) 2023.01.10
블록체인 기본 개념  (0) 2023.01.07
Comments