Ethereum Basics - Quickstart

이더리움의 핵심 개념 ✨

이더리움의 등장과 함께 처음 소개되어, 이후 출시된 많은 블록체인 네트워크 프로토콜의 뼈대가 된 핵심 개념들을 소개합니다.

이더리움 가상 머신 (Ethereum Virtual Machine, EVM)

이더리움을 분산된 여러 노드들 간의 통신으로 이루어진 물리적인 네트워크 위에서, 스마트 컨트랙트를 실행하기 위한 런타임 환경인 EVM을 프로토콜로 구현하였습니다. EVM은 모든 노드에서 동일한 코드를 실행하여 스마트 계약이 일관되게 동작하도록 보장합니다.

  • EVM의 역할
    EVM은 이더리움 블록체인 상에서 스마트 계약을 실행하기 위한 격리된 환경을 제공합니다. 분산 환경에서 각 노드가 동일한 결과를 보장할 수 있도록 하며, 이는 네트워크 전체의 합의를 유지하는 데 중요한 역할을 합니다. EVM은 바이트코드 형태로 작성된 스마트 계약을 실행하며 각 명령의 실행을 위해 가스를 소모합니다.
  • 스마트 계약의 실행
    스마트 계약이 호출되면, 해당 계약의 바이트코드가 EVM에서 실행됩니다. EVM은 코드를 실행하면서, 코드의 상태 변경을 추적하고, 최종적으로 변경된 상태를 블록체인에 기록합니다. 모든 상태 변경 이력은 영구적으로 기록되기 때문에 실행의 과정과 결과는 위조하거나 변조할 수 없으며 불법적인 접근이나 오류 없이 계약이 수행됨을 보장할 수 있습니다.

스마트 계약 (Smart Contracts)

스마트 계약은 이더리움 블록체인 상에서 실행되는 자율적인 계약입니다. 스마트 계약은 특정 조건이 충족되면 자동으로 실행되며, 코드로 작성된 계약 조건이 만족되는 상태 변경이 발생하면 사전에 정의된 동작을 수행합니다. 이러한 계약은 중개자 없이 신뢰할 수 있는 방식으로 작동하며, 투명하게 기록되기때문에 법적 계약과 유사한 기능을 수행할 수 있습니다.

  • 동작 원리
    스마트 계약은 이더리움 가상 머신(EVM)에서 실행되며, 트랜잭션의 일부로서 이더리움 네트워크에 배포됩니다. 스마트 계약은 일련의 명령을 포함하는 코드로 구성되어 있으며, 특정 조건이 충족되면 자동으로 특정 작업이 수행됩니다. 예를 들어, 스마트 계약은 A 사용자로부터 B 사용자에게 일정 금액의 이더를 전송하는 조건을 정의할 수 있습니다.
  • 배포와 실행
    스마트 계약은 사용자가 트랜잭션을 통해 이더리움 네트워크에 배포합니다. 이때, 트랜잭션은 네트워크 상의 모든 노드에 전파되고, 스마트 계약의 상태는 네트워크 전체에서 공유됩니다. 이후, 스마트 계약이 호출되면, EVM에서 코드가 실행되어 계약 조건에 따라 자동으로 작업이 수행됩니다.

이더 (Ether, ETH)

이더(ETH)는 이더리움 네트워크의 기본 화폐입니다. 이더는 이더리움 네트워크에서 가치를 저장하고 및 전송하는 수단으로서 트랜잭션 수수료(가스)를 지불하거나, 스마트 계약을 실행하는 데 사용됩니다.

  • 가치 저장 및 전송
    이더는 디지털 통화로서 가치의 저장 및 전송을 가능하게 합니다. 사용자는 EOA(외부 소유 계정)를 통해 이더를 다른 사용자에게 전송할 수 있으며, 이러한 트랜잭션은 네트워크에서 검증되고 블록체인에 기록됩니다.
  • 가스(Gas) 수수료
    이더리움 네트워크에서 트랜잭션을 실행하려면 가스 수수료를 지불해야 합니다. 가스 수수료는 이더로 지불되며, 그 양은 트랜잭션이 요구하는 Computation Power에 일정수준 비례하여 결정됩니다. 네트워크 사용량이 많아지는 경우 가스 수수료를 더 많이 지불함으로서 트랜잭션 처리의 우선순위를 조정할 수 있습니다.

분산 애플리케이션 (Decentralized Applications, DApps)

분산 애플리케이션(DApps)은 넓은 의미에서 블록체인 상에서 실행되는 스마트 계약을 활용한 기능을 제공하는 어플리케이션을 통칭하는 단어로, 트랜잭션의 실행에 따라 변경되는 온체인 상태에 따라 정의된 동작을 수행하도록 온체인/오프체인으로 구현된 프로그램을 지칭합니다. 블록체인을 활용하여 동작의 투명성과 신뢰성을 보장한다는 점에서 일반적인 중앙 통제형 어플리케이션과 다른 특징을 갖습니다.

  • DApp의 구조
    일반적으로 DApp은 프론트엔드와 백엔드로 구성되며, 백엔드는 스마트 계약 연동을 포함하는 형태로 구현됩니다. 어플리케이션의 기능과 목적에 따라 중요한 조건-실행 부를 스마트 계약상에 구현할 수 있습니다.
  • 동작 방식
    사용자가 DApp을 사용하면, DApp은 이더리움 네트워크에 트랜잭션을 생성하고, 스마트 계약을 호출하여 작업을 수행합니다. 이러한 작업은 중앙 서버가 아닌 블록체인 네트워크에 의해 검증되고 기록되므로 중앙 통제형 어플리케이션 대비 높은 수준의 신뢰성과 보안을 제공합니다.
  • DApp의 예
    DeFi(탈중앙화 금융) 애플리케이션, 게임, 소셜 네트워크 등 다양한 형태의 DApp을 구현할 수 있습니다. 예를 들어, Uniswap과 같은 DApp은 사용자가 중앙 거래소 없이도 암호화폐를 교환할 수 있도록 지원합니다.

노드 (Node)

이더리움 네트워크에서 노드는 블록체인 데이터를 저장하고, 다른 노드와 데이터를 공유하며, 네트워크의 상태를 유지하는 역할을 합니다. 노드는 이더리움 네트워크의 기본 구성 요소이며, 기능과 역할에 따라 아래와 같이 타입을 분류합니다.

  • 풀 노드(Full Node): 풀 노드는 이더리움 블록체인의 전체 데이터를 다운로드하고, 블록 및 트랜잭션을 검증하며, 네트워크의 합의 프로토콜에 참여합니다. 풀 노드는 네트워크의 안정성과 보안을 유지하는 데 중요한 역할을 합니다.
  • 라이트 노드(Light Node): 라이트 노드는 블록체인의 전체 데이터를 다운로드하지 않고, 필요한 정보만 요청하여 처리합니다. 라이트 노드는 풀 노드보다 적은 리소스를 사용하지만, 여전히 네트워크와의 상호작용을 지원합니다.
  • 아카이브 노드(Archive Node): 아카이브 노드는 모든 상태와 블록 데이터를 저장하는 노드로, 블록체인의 모든 역사를 포함한 모든 데이터를 유지합니다. 주로 Nodit과 같은 Infrastructure 시스템의 개발자나 또는 데이터 전문가가 과거 데이터를 조회하거나 검증하는 데 사용됩니다.

계정 (Account)

이더리움에는 두가지 타입의 계정이 존재합니다. 이더리움 계정에 대한 자세한 내용은 Ethereum Basics - Account/EVM 페이지를 참고하세요.

  • 외부 소유 계정 (EOA): EOA는 개인 키에 의해 제어되는 계정으로, 실제 이더리움 사용자와 관련됩니다. EOA를 통해 ETH 전송 및 스마트 계약 호출이 가능합니다. 사용자는 EOA를 통해 트랜잭션을 서명하고 네트워크에 브로드캐스트할 수 있습니다.
  • 스마트 계약 계정: 스마트 계약 계정은 코드에 의해 제어되며, EOA와 달리 개인 키가 없습니다. 스마트 계약 계정은 EOA로부터 호출되어야만 활성화될 수 있으며, 스마트 계약에 정의된 로직에 따라 동작합니다. 스마트 계약 계정은 특정 조건이 충족되면 자동으로 실행되며, 이는 자동화된 프로세스를 가능하게 합니다.

트랜잭션 (Transaction)

이더리움의 트랜잭션은 네트워크에서 상태를 변경하는 명령입니다. 트랜잭션은 계정 간에 ETH를 전송하거나, 스마트 계약을 배포하거나, 스마트 계약의 함수를 호출할 때 발생합니다. 이더리움 트랜잭션에 대한 자세한 내용은 Ethereum Basics - Transaction 페이지를 참고하세요.

  • 트랜잭션 구조: 트랜잭션은 보내는 계정, 받는 계정, 전송할 이더의 양, 가스 가격 및 가스 리미트, 그리고 선택적으로 포함할 데이터(예: 스마트 계약 실행에 필요한 정보)로 구성됩니다.
  • 트랜잭션 동작: 사용자가 트랜잭션을 생성하면, 해당 트랜잭션은 네트워크의 노드로 브로드캐스트됩니다. 이후, 트랜잭션은 채굴자 또는 검증자에 의해 블록에 포함되고, 네트워크에 의해 확인됩니다. 트랜잭션이 포함된 블록이 채굴되면 트랜잭션이 확정되고, 이더리움의 상태가 업데이트됩니다.

가스 (Gas)

이더리움 네트워크에서 가스는 스마트 계약 실행이나 트랜잭션 처리에 필요한 연산 작업을 수행하기 위해 지불하는 비용입니다. 가스는 이더(ETH)로 지불되며, 각 연산 작업에는 고유한 가스 비용이 할당됩니다. 가스와 관련된 주요 개념들입니다.

  • 가스 리밋(Gas Limit): 트랜잭션을 보낼 때 사용자는 가스 리밋을 설정해야 합니다. 이는 해당 트랜잭션 실행을 위해 사용자가 지불할 의향이 있는 최대 가스 양을 의미합니다. 가스 리밋이 너무 낮으면 트랜잭션이 실패할 수 있습니다.
  • 가스 가격(Gas Price): 가스 가격은 사용자가 지불할 의향이 있는 이더의 가격(예: gwei 단위)입니다. 가스 가격이 높을수록 트랜잭션이 더 빨리 처리될 가능성이 큽니다.
  • 가스 사용(Gas Used): 스마트 계약이나 트랜잭션이 네트워크에서 실행될 때, 실제로 사용된 가스 양을 의미합니다. 이더리움에서 가스는 네트워크의 효율성을 유지하고, 네트워크 스팸을 방지하기 위한 중요한 메커니즘입니다.

이더리움 개선 제안(Ethereum Improvement Proposals, EIP)과 이더리움 표준 규약(Ethereum Request for Comments, ERC)

이더리움 커뮤니티에서는 새로운 기능과 개선 사항이 지속적으로 제안되고 있으며 이러한 제안은 Ethereum Improvement Proposals (EIP)라는 형식으로 제출됩니다. EIP에는 이더리움의 코어 프로토콜, API, 스마트 계약 표준 등을 정의하고 개선하기 위한 제안 사항, 동기, 기술 명세, 실행 방법 등이 포함됩니다. EIP가 제출되면 이더리움 커뮤니티와 개발자들은 이를 검토하고 논의하여 수용 여부를 결정합니다. 이 중 이더리움 제안에서 특별히 관리하는 제안들은 일종의 표준 규약은 ERC로 정의됩니다. 아래는 EIP의 ERC의 대표적인 예시들입니다.

  • EIP-20: ERC-20 토큰 표준
    ERC-20은 이더리움 네트워크에서 발행되는 토큰의 표준을 정의하는 EIP입니다. 이 표준은 스마트 계약을 통해 생성된 토큰이 서로 호환되도록 보장하며, 토큰의 전송, 잔액 조회, 승인 등의 기능을 명확하게 규정합니다. ERC-20 표준은 이더리움 생태계에서 수천 개의 토큰이 만들어지고 상호작용할 수 있게 한 중요한 기반이 되었습니다. 대부분의 ICO(Initial Coin Offering)와 DeFi(탈중앙화 금융) 토큰이 ERC-20 표준을 따르고 있습니다.
  • EIP-721: ERC-721 비대체성 토큰 (NFT) 표준
    ERC-721은 비대체성 토큰(NFT) 표준을 정의한 EIP로, 각 토큰이 고유하고 교환 불가능함을 보장합니다. ERC-721 표준은 NFT의 생성, 소유권 이전, 승인 등의 기능을 포함합니다. 이 표준은 디지털 자산의 소유권을 증명하고, 예술, 게임, 디지털 수집품 등의 다양한 분야에서 NFT의 폭발적인 성장을 이끌었습니다. CryptoKitties와 같은 초기 NFT 프로젝트가 ERC-721 표준을 활용했습니다.
  • EIP-1559: 가스 요금 시장 개혁
    EIP-1559는 이더리움의 가스 요금 구조를 개혁한 제안으로, 트랜잭션 수수료 모델을 개선하여 가스 요금의 예측 가능성을 높였습니다. 이 제안은 "기본 수수료(base fee)"와 "팁(tip)" 구조를 도입하여, 트랜잭션의 우선순위를 정하고, 네트워크의 혼잡을 완화하는 데 기여했습니다. 이를 통해 EIP-1559는 이더리움 네트워크의 사용자 경험을 크게 향상시켰으며, 이더리움의 통화 정책에도 중요한 영향을 미쳤습니다. 이 제안에 따라 일부 가스 수수료가 소각(burning)되며, 이더리움의 총 공급량을 줄이는 효과가 발생했습니다.
  • EIP-2981: NFT 로열티 표준
    EIP-2981은 NFT 거래에서 창작자에게 로열티를 지급하는 표준을 정의합니다. 이 표준은 NFT가 2차 시장에서 거래될 때, 창작자가 일정 비율의 로열티를 받을 수 있도록 하는 기능을 제공합니다. 이 표준은 창작자가 자신의 작품에 대해 지속적으로 수익을 얻을 수 있도록 보장하여, NFT 생태계의 지속 가능성을 높이는 데 기여했습니다.
  • EIP-1822: 업그레이드 가능한 프록시 표준
    EIP-1822는 스마트 계약을 업그레이드 가능한 형태로 배포하기 위한 프록시 패턴을 정의합니다. 이 표준은 스마트 계약의 로직을 변경할 수 있도록 하면서도, 기존 상태를 유지하는 방법을 제공합니다. 이를 통해 개발자들은 DeFi와 같은 장기 프로젝트에서 버그 수정이나 기능 확장 시 기존 사용자 데이터나 상태를 손상시키지 않고 계약을 업그레이드할 수 있게 되었습니다.