이더리움 백서 해설 - (중상)

이더리움 백서 해설

 

1. 이더리움 탄생 배경과 목적


2. 이더리움 개념                     

-------------------------------------------------

3. 이더리움 아키텍처      中上

-------------------------------------------------

4. 스마트 계약 및 DApp   中下

-------------------------------------------------

5. 합의 알고리즘              下


6. 이더리움의 응용 가능성




 본 이더리움 백서 해설 (중상) 편에서는 3장 이더리움 아키텍처를 다루겠습니다. (중상) 편을 이해하기 위해서는 (상)편의 개념을 알고 있어야 하므로 아직 (상) 편을 보기 않으셨다면 먼저 보는 것을 추천합니다.



3. 이더리움 아키텍처


 이더리움 아키텍처는 이더리움 네트워크가 어떻게 구성되어 있는지, 그리고 그 구성 요소들이 어떻게 상호작용하는지를 설명합니다. 아래에서 이더리움 아키텍처를 더 상세히 설명하겠습니다.


3-1) 이더리움 계정 모델


 이더리움의 계정 모델은 두 가지 주요 계정 유형으로 구성됩니다.



A) 외부 소유 계정 (EOA, Externally Owned Account)

 EOA는 개인이나 조직이 소유하는 계정입니다. 이 계정은 비트코인에서 사용되는 전통적인 계정과 유사하게, 사용자가 소유한 개인키에 의해 제어됩니다.

 EOA는 이더(ETH)를 보유할 수 있으며, 트랜잭션을 발생시킬 수 있습니다. 사용자는 EOA를 통해 다른 계정(EOA나 계약 계정)으로 이더를 전송하거나, 스마트 계약을 호출할 수 있습니다.

 EOA의 주요 특징은 개인키를 통해 트랜잭션에 서명할 수 있다는 점입니다. 이는 사용자가 트랜잭션을 시작하고 이더리움 네트워크에 제출할 수 있도록 합니다.


B) 계약 계정 (Contract Account)

 계약 계정은 스마트 계약이 배포된 계정입니다. 이 계정은 사용자가 직접 제어하는 것이 아니라, 스마트 계약 코드에 의해 제어됩니다.

 계약 계정은 트랜잭션에 의해 호출될 때마다 해당 코드가 실행되며, 코드의 결과에 따라 상태가 변경됩니다.

 계약 계정은 이더리움 블록체인에 저장된 스마트 계약의 상태와 관련된 모든 데이터를 유지합니다. 이 데이터는 블록체인에 영구적으로 기록되며, 누구나 이 데이터를 검증할 수 있습니다.



3-2) 이더리움 가상 머신 (EVM)


 EVM의 역할: EVM은 모든 이더리움 노드에서 실행되는 분산 컴퓨팅 환경입니다. 이 환경은 이더리움 네트워크에 배포된 모든 스마트 계약을 동일한 방식으로 실행하며, 모든 노드에서 동일한 결과를 보장합니다.

 EVM은 스마트 계약을 실행할 때 필요한 모든 연산을 수행하며, 그 결과를 블록체인에 기록합니다. 이는 분산된 방식으로 이루어지기 때문에 중앙화된 서버 없이도 신뢰할 수 있는 결과를 얻을 수 있습니다.


 튜링 완전성: EVM은 튜링 완전성을 지닌 가상 머신입니다. 이는 이론적으로 EVM이 임의의 복잡한 프로그램을 실행할 수 있다는 것을 의미합니다. 개발자는 이더리움의 스마트 계약을 통해 다양한 로직과 알고리즘을 구현할 수 있습니다.

 가스(Gas)와 비용: EVM에서 스마트 계약을 실행하거나 트랜잭션을 처리하려면 가스(Gas)가 필요합니다. 가스는 이더리움에서 연산 작업의 비용을 측정하는 단위입니다. 모든 명령어는 일정량의 가스를 소모하며, 사용자는 이를 위해 이더(ETH)를 지불해야 합니다.

 가스 시스템은 네트워크 자원의 남용을 방지하고, 노드들이 과부하 되지 않도록 보장합니다. 사용자는 트랜잭션을 실행할 때 가스 가격을 설정할 수 있으며, 높은 가스 가격을 설정할수록 트랜잭션이 더 빨리 처리될 가능성이 높습니다.



3-3) 트랜잭션과 메시지


 트랜잭션: 트랜잭션은 EOA에서 발생하며, 이더를 다른 계정으로 전송하거나 스마트 계약을 호출하는 데 사용됩니다. 트랜잭션은 서명되어야 하며, 서명된 트랜잭션은 네트워크의 노드들에 의해 검증되고, 블록체인에 기록됩니다.

 트랜잭션은 특정 수신자 주소, 전송할 이더의 양, 가스 한도, 가스 가격, 그리고 선택적인 데이터 필드를 포함합니다. 데이터 필드는 주로 스마트 계약을 호출할 때 사용되며, 호출할 함수와 그 인자를 포함할 수 있습니다.


 메시지(Call): 메시지는 트랜잭션과 유사하지만, 스마트 계약 간의 내부 통신에 사용됩니다. 메시지는 계약에서 다른 계약으로 데이터를 전송하거나 함수를 호출할 수 있습니다.

 메시지는 트랜잭션과 달리 블록체인에 직접 기록되지 않으며, 스마트 계약 내부에서 발생하는 연산의 일부로 처리됩니다. 이는 스마트 계약이 다른 계약의 기능을 호출하고 그 결과를 사용하는 데 사용됩니다.



3-4) 상태(state)와 트리 구조

 이더리움의 상태는 모든 계정의 현재 상태를 포함하며, 이 상태는 블록체인에 저장됩니다. 이 상태는 Merkle Patricia 트리라는 특별한 데이터 구조로 관리됩니다.


 세계 상태 트리(World State Tree): 세계 상태 트리는 이더리움의 모든 계정과 그 계정의 데이터를 포함하는 트리 구조입니다. 이 트리는 각 계정의 상태(잔액, 코드, 저장된 데이터 등)를 효율적으로 관리하고 검색할 수 있도록 돕습니다.

 Merkle Patricia 트리는 블록체인에서 상태를 효율적으로 관리하기 위해 사용되는 데이터 구조로, 노드 간의 데이터 검증을 빠르고 정확하게 수행할 수 있게 해줍니다.


 트랜잭션 트리와 로그 트리: 트랜잭션 트리는 블록 내에 포함된 모든 트랜잭션을 기록하는 트리 구조입니다.

 로그 트리는 스마트 계약 실행 중에 발생하는 로그 데이터를 기록합니다. 이 로그는 스마트 계약의 실행 결과에 대한 다양한 이벤트를 추적하는 데 사용됩니다.



3-5) 합의 알고리즘


 Proof of Work (PoW): 이더리움은 초기에는 비트코인과 유사한 작업 증명 알고리즘을 사용했습니다. PoW는 채굴자들이 복잡한 수학 문제를 해결하여 블록을 생성하고, 이 과정에서 채굴자들은 보상으로 이더를 획득합니다.

 PoW는 네트워크의 보안을 유지하고, 중앙 집중화된 공격을 방지하는 데 효과적이지만, 높은 에너지 소비와 낮은 처리 속도 등의 단점이 있습니다.


 Proof of Stake (PoS): 이더리움은 PoW에서 지분 증명(Proof of Stake, PoS)으로 전환하고자 합니다. PoS에서는 채굴자가 아닌 이더를 소유한 사람들이 블록 검증에 참여하며, 소유한 이더의 양에 따라 블록 생성 권한이 부여됩니다.

 PoS는 에너지 효율성이 높고, 네트워크의 보안성을 강화할 수 있는 장점이 있습니다. 이더리움 2.0 업그레이드의 핵심 목표 중 하나는 PoS로의 전환을 통해 네트워크 성능과 효율성을 개선하는 것입니다.



3-6) 이더리움 클라이언트

 이더리움 클라이언트는 네트워크에 연결된 소프트웨어로, 블록체인을 유지하고 트랜잭션을 처리하며 스마트 계약을 실행하는 역할을 합니다.


 풀 클라이언트 (Full Client): 풀 클라이언트는 이더리움 블록체인의 전체 사본을 다운로드하고 유지합니다. 이 클라이언트는 네트워크에서 발생하는 모든 트랜잭션과 블록을 검증하고, 스마트 계약을 실행할 수 있습니다. 풀 클라이언트는 많은 저장 공간과 연산 자원이 필요하지만, 네트워크의 완전한 신뢰성을 보장합니다.


 라이트 클라이언트 (Light Client): 라이트 클라이언트는 블록체인의 일부만을 저장하고 필요한 경우에만 데이터를 다운로드합니다. 이는 더 적은 리소스로 빠르게 작동할 수 있으며, 특히 리소스가 제한된 환경(예: 모바일 디바이스)에서 주로 사용됩니다.



3-7) 샤딩 (Sharding)

 샤딩은 이더리움 2.0에서 도입된 기술로, 이더리움의 확장성을 대폭 향상시키는 역할을 합니다.


 샤딩의 개념: 샤딩은 이더리움 네트워크를 여러 개의 작은 체인(샤드)으로 나누는 기술입니다. 각 샤드는 독립적으로 트랜잭션을 처리하고, 자체적인 상태를 유지합니다. 이를 통해 네트워크의 처리 용량을 크게 늘릴 수 있습니다.


 샤드 체인: 샤드 체인은 메인 이더리움 체인과 연결되어 있으며, 서로 다른 트랜잭션과 데이터를 병렬로 처리할 수 있습니다. 이를 통해 네트워크의 처리 속도를 높이고, 대규모 사용자 기반을 지원할 수 있습니다.


 이더리움 아키텍쳐는 매우 복잡하지만 강력한 구조를 가지고 있습니다. 이러한 구조 덕분에 이더리움은 스마트 계약, DApps, DeFi 등을 지원할 수 있는 범용 블록체인 플랫폼으로 자리 잡을 수 있게 됩니다.


다음 (중하)편에서는 4장 스마트 계약 및 DApp에 대하여 다루겠습니다. 이더리움 플랫폼이 세계적으로 퍼진다면 가장 일반 사람들에게 와닿을 기술이라고 생각합니다. 이더리움 네트워크 속 요소 중 제일 핵심적인 요소라고 생각하니 꼭 알아두면 좋겠습니다. 




Share on Google Plus