[루디움 렉쳐] 이더리움 베이직_kingyoungdae 학습 내용 정리

이더리움의 출현 배경 및 개요

이더리움은 지분 증명 합의 알고리즘에 기반하여 프로그램 데이터를 저장하는 오픈 소스 퍼블릭 블록체인이다. 이더리움 블록체인에 데이터를 저장하기 위해서는 $ETH 토큰이 필요하다. 사용자는 이더리움 블록체인에 저장된 프로그램(스마트 컨트랙트라고 하는데)과 상호 작용하는 어플리케이션(디앱이라고 하는데)에 접속하여 이더리움 블록체인 네트워크에 데이터 저장, 처리를 요청한다.

한마디로 이더리움은 크고 분산된 컴퓨터이다. 개발자는 이더리움을 활용하여 높은 가용성, 투명성, 중립성을 제공하는 동시에 경제적인 기능을 갖춘 강력하고 탈중앙화된 애플리케이션을 구축할 수 있다.

1.블록 체인이란 무엇인가?

먼저 이더리움, 비트코인과 같은 플랫폼들의 근간이 되는 블록체인 기술에 대해 알아보자.

블록 체인 개요

블록 체인은 네트워크 상의 여러 컴퓨터에서 공유되는 공개적인 데이터베이스라고 할 수 있다. 데이터의 집합으로 “블록”을 만들고 이전 블록 참조하여 시간순으로 “체인”처럼 연결한 것이다. 이를 복제하여 수많은 컴퓨터(노드)에 분산하여 저장한다.

그렇다면 블록체인의 목적은 무엇인가? 블록체인의 목적은 컴퓨터 네트워크가 공통된 데이터 상태에 동의하도록 하는 것이다. 블록의 데이터는 연결된 모든 하위 블록을 변경하지 않고는 변경할 수 없고, 이를 위해서는 네트워크 상 모든 노드의 합의가 필요하다. 새로운 블록의 생성 또한 네트워크 참여 노드의 동의가 필요하다. 노드는 모든 사람이 동일한 데이터를 갖도록 하고, 합의를 이루기 위해서 합의 메커니즘이 필요하다. 참고로 이더리움은 지분 증명 기반의 합의 메커니즘을 사용한다. 이더리움의 기본 통화인 이더를 담보로 검증인이 되어 트랜잭션을 검증한다.

블록체인의 가장 일반적인 사용 사례인 암호화폐를 통해 더 자세히 살펴보도록 한다.

암호화폐에 왜 블록체인이 필요한가? 암호화폐를 구현했을 때 악의적인 참가자의 위변조나 거래 부인 또는 네트워크의 지연으로 인해 전송된 정보의 불일치가 발생할 수 있고, 이로 인한 이중 지급 같은 문제가 발생할 수 있다. 그리고 중앙 관리 기구 없이도 자율적이고 안정적인 네트워크가 유지되어야 한다.

바로 이러한 문제를 해결하기 위해 일련의 거래(트랜잭션)정보를 모아 블록을 만들고, 이 블록을 연결한 공유 원장(shared ledger)기술인 블록체인을 통해 위변조가 불가능하도록 만들었다. 네트워크에 연결되어있는 과반수 참여자의 공유 원장을 위변조 해야 하기 때문에 실질적으로 불가능하다. 변조가 어렵고 합의 메커니즘을 통해 유효성을 입증하기 때문에 저장된 정보를 신뢰할 수 있어, 결과적으로 중앙 관리자나 중개자가 필요하지 않게 되는 것이다. 다시 말해, 블록체인은 신뢰를 해결하기 위해 발명 되었다고 볼 수 있다.

블록 체인의 구성 요소

블록 체인 기술은 다음과 같은 구성 요소를 지닌다.

  • 암호화와 데이터 표준: 데이터의 용량 효율성을 높이고 효율적인 소통 방식을 정립하기 위해서는 데이터 저장, 소통의 표준이 필요하다. 또한 데이터 접근 권한 설정에 있어 암호화(Cryptographic)된 데이터 표준을 사용한다.
  • 계정(어카운트): 블록체인의 어카운트란 데이터를 전송할 수 있는 주체(Entity)를 의미한다. 각 블록체인의 암호화 표준, 프로토콜의 활용 방안에 따라 어카운트의 형식과 방식이 달라질 수 있다.
  • 트랜잭션: 블록체인에 전송하는 모든 데이터를 의미한다. 트랜잭션 혹은 온체인 트랜잭션이라고 부른다.
  • 가상 머신: 원래 가상 머신이란 컴퓨팅 환경을 소프트웨어에 구현한 모든 것을 지칭한다. 블록체인에 있어 가상 머신은 블록체인 상에 저장, 실행될 수 있는 프로그램을 위해 만들어진 소프트웨어이다.
  • 블록: 블록이란 가상 머신을 통해 처리된 트랜잭션 데이터를 저장한 데이터 베이스를 의미한다. 블록체인은 데이터 블록의 기록을 불가역적으로 서로 연결하여 저장하기 때문에 블록체인(Block Chain)이라고 부른다.
  • 노드 네트워크: 노드란 동일한 블록체인의 소프트웨어 클라이언트(프로그램)을 공유하는 분산 서버(클라이언트)를 의미한다. 노드는 블록체인의 서버로서 요청된 트랜잭션을 처리하기 위해 암호화와 데이터 표준, 가상 머신을 비롯한 프로토콜의 일부 혹은 전부가 내장되어 있으며 데이터를 저장할 수 있다.
  • 합의 알고리즘: 합의 알고리즘이란 노드들에서 전파된 데이터를 취합해 하나의 공동 장부(Ledger)로 만드는 방식이다. 분산화된 노드들은 합의 알고리즘을 통해 단위 시간(블록타임, Block Time이라고 부른다) 안에 전파된 모든 트랜잭션을 전달 받음으로서 블록체인에 저장된 전체 데이터를 파악할 수 있다.

각 블록체인은 위의 7가지의 특성의 변경 따라 시스템의 구동 방식이 달라진다. 위의 요소를 총체적으로 구동하는 소프트웨어를 블록체인의 프로토콜(Protocol)이라고 부른다.

2. 이더리움이란 무엇인가?

이더리움은 좁은 범위에서 이더리움 블록체인과 프로토콜 그 자체를 의미하지만 넓은 범위에서는 이더리움의 암호 화폐($ETH) 사용자와 이더리움 프로토콜에 기반한 제품과 서비스 개발자, 그리고 프로토콜 업데이트와 관련 소식에 관심을 가진 모든 사람들까지 거대한 생태계를 구성한다.

이더리움 블록체인의 구성 요소

  • 암호화와 데이터 표준: 이더리움은 주로 keccak-256 알고리즘을 통해 데이터를 해시화하고 secp256k1 타원 곡선 알고리즘을 활용하여 공개키와 비공개키를 생성한다.
  • 계정: 이더 잔액이 있는 엔티티로 외부 소유 계정(EOA)와 컨트랙트 게정(CA)가 있다.
  • 트랜잭션: 이더리움에는 계정 간 화폐 전송, 컨트랙트 배포, 컨트랙트 실행과 같은 트랜잭션이 있다. 이더리움 트랜잭션은 이더스캔과 같은 도구를 통해 확인이 가능하다.
  • 가상 머신: 이더리움은 이더리움 가상 머신(Ethereum Vitual Machine, EVM)을 구동한다. 예를 들어 컨트랙트를 배포하거나 실행하는 트랜잭션이 요청되면 EVM에서 이를 실행시킨다.
  • 블록: 이더리움은 12초마다 새로운 유효성이 검증된 트랜잭션을 블록에 저장한다.
  • 노드 네트워크: 이더리움은 수천 개의 분산화된 노드로 구성된 탈중앙화 네트워크이다. 이더리움 노드는 네트워크의 합의와 트랜잭션 실행을 위한 클라이언트를 구동한다.
  • 합의 알고리즘: 이더리움은 지분 증명 합의 알고리즘에 따라 트랜잭션이 블록에 저장된다. 합의 클라이언트에 참여하는 노드는 각각 32이더를 예치(스테이킹)하고 새로운 블록 생성에 성공하면 발행되는 이더로 보상받는다. 합의 과정에 참여하는 노드를 벨리데이터(Validator)라고 부른다.

이더와 가스비

이더(ETH)란 이더리움 네트워크에서 다양한 용도로 사용되는 기본 암호화폐이다. 거래 수수료로 사용되거나, 디파이 시장에서 주요 담보로, 상품을 판매한 대가로 사용되는 등 다양한 용도가 있다.

주요한 목적은 이더리움 컴퓨팅 파워에 대한 가격 책정 이다. 사용자가 블록체인 상에서 거래가 실행되게 하기 위해서는 이더를 지불해야 하고 이것을 가스라고 한다. 가스비는 거래를 실행할 때 필요한 컴퓨팅 파워의 양과 그 당시 네트워크 전체 컴퓨팅 파워 수요에 따라 유동적으로 변한다. 지불된 가스는 네트워크의 거래를 검증하고, 실행하고, 블록체인에 커밋하고, 네트워크 상에 브로드캐스트 하는 작업자에게 보상으로 제공된다.

또한, 이더는 네트워크 상의 보안을 유지하는데 에도 활용된다. 첫번째로, 블록을 생성하고 다른 검증인의 부정행위를 적발하는 검증인에게 보상으로 사용된다. 두번째로 검증인의 부정 행위에 대한 담보 역할을 한다. 부정 행위를 시도했을 때 보유한 지분이 차감 되는 패널티를 받는다. 마지막으로 새로운 블록 생성 시 포크(동시에 두 블록이 생기는 현상)를 선택하고 합의할 때 사용된다.

앞서 언급했듯이, 이더리움 네트워크에서 트랜잭션을 전송하거나, 스마트 컨트랙트를 실행하는 등의 작업을 수행하려면 비용을 지불해야 한다. 이 비용은 "가스"라고 불리며, 이더리움 네트워크에서 컴퓨터가 작업을 처리하는 데 필요한 연산 작업의 비용을 측정하는 단위이다. 연산 작업의 복잡도와 네트워크의 혼잡도에 따라 필요한 가스의 양이 달라진다.

복잡한 작업이라는 것은 어떤 의미인가? 쉽게 생각했을 때, 어떤 작업을 하는 데 더 많은 계산이 필요하거나 자원이 필요할 것 같다고 판단된다면 더 복잡한 작업이라고 볼 수 있다. 각 연산이 어느 정도의 가스 비용을 필요로 하는지를 정리해 둔 자료가 있어서 소개하고자 한다.

연산은 크게 다음과 같이 구분할 수 있으며, 더 복잡한 연산일수록 가스 비용이 증가한다.

  • 단순 연산: 값을 더하거나(ADD), 나누는 연산(DIV).
  • 정보 관련 연산: 블록의 시간 정보를 가져오거나(TIMESTAMP), 작업을 수행하는 계좌의 주소를 가져오는 연산(ADDRESS).
  • 임시 메모리 연산: 메모리에 단어를 저장하거나(MSTORE), 스택에 32바이트 데이터를 저장하는 연산(PUSH32).
  • 영구 저장소 연산: 영구 저장소에 단어를 저장하는 연산(SSTORE).
  • 흐름 제어 연산: 프로그램의 실행 흐름을 변경하는 연산(JUMP).

예를 들어, 단순한 값의 덧셈은 가스 비용이 3으로 낮은 반면, 영구 저장소에 데이터를 저장하는 연산은 가스 비용이 20,000이 발생한다.

 

가스 가격은 사용자가 설정할 수 있으며, 네트워크의 혼잡도에 따라 바뀔 수 있다. 가스 가격을 높게 설정하면 트랜잭션이 더 빨리 처리되지만 비용이 증가하고, 낮게 설정하면 비용이 줄어들지만 처리 속도가 느려질 수 있다.

스마트 컨트랙트와 디앱

스마트 컨트랙트는 이더리움 블록체인에서 실행되는 프로그램이다. 사용자는 이더리움 가상 머신(EVM)에 계산을 요청할 때마다 새로운 코드를 작성하는 것이 아닌, 개발자가 업로드한 스마트 컨트랙트를 실행하도록 요청한다. 스마트 컨트랙트는 일종의 자판기와 같다고 볼 수 있다. 돈을 넣고 원하는 물건을 선택하면 그 물건이 나오는 것처럼, 특정 매개변수를 호출하여 특정 조건이 충족되면 작업이나 계산을 수행한다. 모든 개발자는 스마트 컨트랙트를 작성하고 네트워크에 공개할 수 있으며, 그러기 위해 수수료를 지불해야 한다. 사용자 또한 스마트 컨트랙트 호출하여 코드를 실행하고, 네트워크에 수수료를 지불한다.

스마트 컨트랙트를 통해 개발자는 마켓플레이스, 금융 상품, 게임과 같은 사용자 대상 앱과 서비스를 빌드하고 배포할 수 있다.

하지만 일단 배포되면 코드를 변경할 수 없고 기존 소프트웨어와는 다르게 수정을 위해선 새로운 인스턴스를 배포해야 한다.

스마트 컨트랙트를 활용하여 블록체인 네트워크에서 실행되는 어플리케이션을 디앱이라고 부른다. 디앱(dApps, Decentralized Applications)이란 탈중앙화 애플리케이션을 의미하며, 블록체인 네트워크 위에서 실행되는 애플리케이션이다. 디앱은 중앙 서버에 의존하지 않고 블록체인 기술을 통해 분산화된 네트워크에서 작동하기 때문에 더 안전하고 투명하다는 특징을 가지고 있다.

좀 더 구체적으로 특징을 정리하면 다음과 같다.

  • 탈중앙화: 중앙 서버가 아닌 블록체인 네트워크 상의 분산된 노드에서 실행된다. 이는 단일 실패 지점을 제거하고, 데이터의 무결성과 가용성을 높여준다.
  • 오픈소스: 디앱의 코드는 누구나 확인할 수 있도록 공개되어 있다. 이러한 특징 때문에 개발자들 간의 협업을 촉진하고, 사용자들이 애플리케이션의 기능을 신뢰할 수 있도록 한다.
  • 토큰 경제: 디앱은 자체 토큰을 생성하고, 이 토큰을 통해 경제적 인센티브를 제공한다. 사용자는 디앱을 사용하거나 기여함으로써 토큰을 얻고, 이 토큰은 디앱 내에서 다양한 기능을 수행하는 데 사용될 수 있다.
  • 스마트 컨트랙트: 디앱은 스마트 컨트랙트를 통해 자동화된 방식으로 작동한다. 스마트 컨트랙트는 사전에 정의된 조건이 충족되면 자동으로 실행되는 코드로, 신뢰할 수 없는 당사자 간의 거래를 가능하게 한다.

주요 디앱 사례

디앱은 금융, 게임, 소셜 미디어 등 다양한 분야에 존재하며, 기존의 중앙 집중형 애플리케이션과는 다른 사용 경험을 제공하고 있다. 여기에서는 디앱 몇 가지를 소개해보고자 한다.

  • 유니스왑(Uniswap): 탈중앙화된 암호화폐 거래소로, 사용자들이 직접 지갑을 연결하고 토큰을 거래할 수 있다.
  • 오픈씨(OpenSea): 디지털 자산을 사고팔 수 있는 탈중앙화된 마켓 플레이스이다.
  • 유링크(Uxlink): 블록체인 기반의 소셜 시스템으로, 사용자들이 소셜 네트워크를 통해 간단하게 웹3 금융을 이용할 수 있도록 해주는 플랫폼이다.

다양한 이더리움 디앱을 보기 위해서는 DappRader 에서 살펴볼 수 있다.

4. EIP와 ERC

이더리움 네트워크는 체계적인 발전을 하기 위해 여러 가지 장치를 마련해두었다. 그 중, 대표적인 것이 네트워크의 기능을 개선하거나 새로운 표준을 도입하기 위한 문서에 해당되는 EIP(Ethereum Improvement Proposal)와 ERC(Ethereum Request for Comments)다.

  1. EIP(Ethereum Improvement Proposal): "이더리움 개선을 위한 제안서"를 의미하며, 네트워크의 기능을 개선하거나 새로운 기능을 도입하기 위한 제안서이다. 이더리움 커뮤니티가 네트워크의 개선 사항을 논의하고 결정하는 공식적인 방법으로, 이를 통해 이더리움의 성능이나 보안과 같은 기능들이 지속적으로 향상된다. EIP는 제안서를 작성하고, 커뮤니티 논의, 구현 및 테스트, 승인이라는 과정을 거친 뒤에 네트워크에 반영된다.
  2. ERC(Ethereum Request for Comments): 이더리움 네트워크에서 개발 관련 표준을 규정하는 기술 문서로, 주로 스마트 컨트랙트 및 토큰 표준에 관한 내용을 다루고 있다. ERC는 EIP에 포함된다고도 볼 수 있는데, EIP가 네트워크 프로토콜에 관한 전반적인 방향성을 제시해준다면, ERC는 실제적으로 이를 어떻게 구현하는 데 있어서 지켜야 하는 표준을 상세하게 담고 있다.

대표적인 ERC 표준에는 다음을 들 수 있습니다.

  • ERC-20: 이더리움 네트워크에서 대체 가능한 토큰을 생성할 때 사용되는 표준으로 가장 널리 사용된다. 토큰의 전송, 잔액 조회, 승인 및 기타 기능 등을 담고 있다.
  • ERC-721: 대체 불가능한 토큰(NFT: Non-fungible Token)에 대한 표준으로, 고유한 자산을 나타내는 데 사용된다. 예술품, 게임 아이템, 부동산 등의 디지털 자산을 표현할 수 있다.
  • ERC-1155: 다중 토큰 표준으로, 하나의 스마트 컨트랙트에서 여러 토큰 유형을 관리할 수 있도록 한다. 대체 가능한 토큰과 대체 불가능한 토큰을 모두 포함할 수 있으며, 게임 아이템과 같은 복잡한 자산 관리에 유리하다.

이와 같이, ERC 표준은 이더리움 네트워크 상에서 스마트 컨트랙트를 작성하고 토큰을 관리하는 데 필수적인 규약을 제공한다. 이러한 표준은 개발자들이 상호 운용 가능한 애플리케이션을 만들 수 있도록 도와주며, 이더리움 생태계의 발전에 큰 기여를 한다.

이를 통해 이더리움 네트워크는 다양한 디앱과 스마트 컨트랙트가 원활하게 작동하고, 사용자들이 신뢰할 수 있는 환경을 제공한다. EIP와 ERC는 이더리움의 발전과 혁신을 지속적으로 지원하는 중요한 역할을 한다.

추가 자료

느낀점

이더리움은 단순한 암호화폐를 넘어 탈중앙화된 애플리케이션과 스마트 컨트랙트를 통해 다양한 가능성을 제공하는 플랫폼이라는 점이 
인상적입니다. 블록체인 기술을 활용하여 신뢰성을 확보하고, 개발자와 사용자에게 개방된 생태계를 만들어가는 과정이 신기했고, 특히 EIP와 ERC 같은 제안서와 표준이 이더리움의 지속적인 발전에 기여하고 있다는 점이 매력적입니다. 이러한 혁신이 앞으로의 디지털 경제에 큰 영향을 미칠 것으로 기대됩니다.