티스토리 뷰

반응형

이전 글은 이더스캔의 시작인 메인 페이지를 살펴봤다면 이번글은 블록에 대해 알아보겠다. 개발하는데 꼭 필요한 정보들은 블록에 담겨 있기에 블록안에 정보들이 어떤 유의미한 데이터를 가지고 있는지 알고 이더스캔을 살펴보면 이해하기 쉬울 것이다.


이더리움 블록체인

이더리움 블록체인은 수많은 트랜잭션들로 이루어져 있고, 트랜잭션들은 블록 단위로 묶여져 구분된다. 블록 내 각 트랜잭션들은 블록에 포함되기 전 일반적인 상태에서 검증을 통해 유효한 상태로 전환을 한 뒤 블록에 포함되게 된다. 이때 검증 노드는 제출되는 트랜잭션부터 모든 트랜잭션의 검증을 순차적으로 수행한다.

 

트랜잭션들이 검증을 통해 유효하다고 판단되면 검증자(validator)가 블록 제안 후 위원회들이 올바른 블록인지 검증 행위를 통해 최종적으로 블록을 완성시킬 수 있다. 검증을 통해 최종적으로 블록에 담긴 트랜잭션은 곧 유효한 트랜잭션임을 뜻한다. 

 

2022년 하반기 PoS(Proof-of-Stake) 블록체인인 비콘 체인(Beacon Chain)과 PoW(Proof-of-Work) Ethereum 메인넷이 병합(Merge)되어 현재 이더리움 2.0이 되었다. 기존 이더리움은 채굴자들이 복잡한 수학 문제를 풀어 트랜잭션들을 검증하고, 블록체인을 업데이트하고, 보상을 받았지만 이 프로세스는 많은 컴퓨팅 에너지가 필요했고 이는 실용적이지 않았다. 현재 이더리움은 채굴과 관련된 모든 것을 종료하고 PoS 기반 합의 메커니즘으로 블록을 생성하고 있다. PoS는 한 번에 소수의 검증자만 선택되어 다음 블록의 트랜잭션을 검증하고 해당 블록을 블록 체인에 제안하여 계산 능력과 에너지 손실을 줄여 친환경적이라고 한다.

 

블록을 생성하기위해서 과거에 채굴을 했다면 현재는 검증을 한다. 검증은 검증자에 의해서 실시된다. 검증자가 되기 위해서는 이더리움 메인넷에 최소 32 ETH를 스테이킹 해야한다. 검증자가 다음 블록을 검증하도록 선택되면 먼저 블록 내의 모든 트랜잭션이 유효한지 여부를 검증한다. 트랜잭션 검증이 끝나면 트랜잭션을 블록에 담고, 검증자는 블록체인에 블록 상태를 변경한다. 그 다음 이 변경된 127명의 다른 검증자로 구성된 위원회에 의해 확인 절차를 거치는데, 이 프로세스를 증명이라고 한다. 블록이 저장되면 처음 블록을 제안한 검증자는 검증된 트랜잭션들의 모든 수수료를 고정 보상으로 받게된다.

 

이더리움 블록에는 블록이 생성되기 위해 사용했던 데이터들이 기록되어 있다. 이 데이터들을 통해 블록 생성 실행(execution) 과정에는 어떤 해시를 사용했고, 블록에 어떤 트랜잭션들을 담았으며, 얼마나 보상 받았고, 블록의 크기는 어떻게 되는지 등등 여러가지 정보를 알 수 있다. 


이번에는 블록 데이터에 대해 알아보자.

Block Height : 블록체인의 블록 길이

Status : 블록이 확정된 상태로, 검증자로 구성된 위원회에서 1/3 이상 슬래싱(악의적인 행동으로 인한 패널티) 상태가 없으면 블록 상태는 바뀌지 않는다. 상태는 블록의 3가지 커밋 레벨로 나뉘며 Latest, Safe, Finalized로 나타낼 수 있다.

Timestamp : 블록이 제출된 날짜와 시간

Proposed On : 블록이 제안된 정보이다. epoch의 번호와 epoch 안에 속하는 slot의 번호이다. 하나의 slot에 최대 64개의 위원회가 구성될 수 있으며, 위원회 구성원 중 한명은 검증자로 선출되어 블록을 제안한다. slot은 블록을 제안하는데 검증하는 시간인 12초로 구성되며 epoch는 총 32개의 slot을 가질 수 있다. 따라서 하나의 epoch는 총 6.4분(12secs * 32)을 가진다.

Transactions : 블록체인 블록에 포함된 트랜잭션 수이다. 내부 트랜잭션(internal transaction)은 Ether 값을 포함하는 계약(contract)을 실행한 트랜잭션이다.

Fee Recipient : 블록을 올바르게 제안한 보상으로 수수료를 받을 사람(검증자)이다. 32 ETH 이상을 가진 검증자는 스테이킹을 통해 검증 위원회에 소속될 수 있으며, 이 위원회에서 랜덤으로 선출되어 새 블록을 제안할 수 있다. 검증자 클라이언트와 비콘노드에서 수취인 주소를 설정할 수 있다.

Block Reward : 블록 제안 보상으로써, 블록에 포함되는 모든 트랜잭션들의 팁 요금(periority fee)을 더한 금액이다. 블록 보상은 [기본 보상금 + 트랜잭션 팁 수수료 - 소각 수수료] 값을 계산한 것이다. PoW에서 PoS로 전환되면서 기본 보상금이 없어졌다. 따라서 PoS에서의 블록 보상은 블록에 포함된 트랜잭션들의 팁 수수료에서 블록에 포함된 트랜잭션들의 소각 수수료를 제외한 최종 금액이다.

Total Difficulty : 블록을 채굴하는데 필요한 난이도로 시간에 따라 난이도가 올라간다. PoW에서 PoS로 전환되면서 사실상 의미가 없으며, 블록 난이도가 계속해서 올라가도 블록 생성에는 영향을 미치지 않는다(블록 생성은 검증 프로세스에서 이루어지기 때문). 

Size : 블록의 gas Limit에 의해 블록의 크기가 결정되며 블록 크기는 bytes 단위로 나타낼 수 있다.

Gas Used : 블록에서 사용된 총 가스 및 블록에 채워진 가스의 양이다. 가스 값 옆에 Gas Target이라는 그래프를 볼 수 있는데 이 값의 기준은 Gas Limit로, 총 용량이 3000만 가스면 100%고, 1500만 가스면 50%이다. 현재 블록의 가스 사용율이 50% 이상(1500만 이상 가스 사용)이면 다음 블록의 Base Fee가 증가하고, 가스 사용율이 50% 미만(1500만 미만 가스 사용)이면 다음 블록의 Base Fee가 감소한다. 이 Gas Target이 엄청나게 높고 낮아도 Base Fee가 ±12.5%까지 증가하거나 감소할 수 있도록 제한해놨다.
Gas Limit : 블록 내 모든 트랜잭션에서 제공되는 총 가스 제한이다. 런던 하드포크 이전에는 1500만으로 제한되었지만 지금은 3000만으로 2배가 늘어나 더 많은 트랜잭션을 포함할 수 있게 되었다.

Base Fee Per Gas : 런던 하드포크 이후 생겨난 개념으로, 트랜잭션을 블록에 포함시키는데 필요한 최소 gas 사용 금액이다. 블록에 포함된 모든 트랜잭션들은 이 Base Fee Per Gas 값을 가져와서 트랜잭션 수수료를 계산한다. 트랜잭션 수수료는 이 Base Fee 보다 적게 지불할 수 없다. 이더리움 네트워크 상태에 따라서 증가 또는 감소할 수 있다. 원래 PoW에서는 채굴자에게 가는 보상이었지만 런던 하드포크 이후 모두 소각하고 있다.

Burnt Fees : 런던 하드포크 이후 생겨난 개념으로, 블록에 포함된 트랜잭션들의 모든 소각 수수료이다. 블록 보상에서 이 값이 제외되어 지급된다. 

Extra Data : 블록 제안자가 블록에 포함할 수 있는 모든 데이터이다.

Ether Price : 1 ETH의 환율 가격이다.

Hash : 현재 블록의 블록 헤더 해시값이다.

Parent Hash : 부모 블록의 블록 헤더 해시값이다.

State Root : 스테이트트리의 Root 주소이다.

Nonce : 채굴 프로세스에서 블록의 작업 증명을 나타내는데 사용되는 값으로 현재는 의미가 없다.

반응형
댓글
공지사항