> For the complete documentation index, see [llms.txt](https://whs3-doge5k.gitbook.io/smartcontract-security-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://whs3-doge5k.gitbook.io/smartcontract-security-docs/basics/1./undefined-1/pos.md).

# 지분증명(PoS)

지분증명(Proof-of-Stake,PoS)은 작업증명(PoW) 이후에 등장한 합의 알고리즘으로, 해시함수를 사용해 가장 긴 블록체인을 기준으로 삼는 PoW와 달리, 검증자를 뽑아 블록이 무결한지 투표하는 과정을 통해 기준 체인을 결정하는 방식이다.

따라서 PoW는 연산능력(Hashing Power)에 비례하여 블록 생성 능력을 가진다면,&#x20;PoS는 더 많은 지분(해당 코인)을 가지고 있을수록 그에 비례하여 블록 생성 능력이 부여된다.

***

### 이더리움의 PoS :”The Merge”

이더리움은 에너지 소비가 높은 PoW 방식에서, 에너지 효율성이 뛰어난 PoS 방식으로 전환했다. 이를 통해 네트워크의 효율성과 확장성이 크게 개선되었다.

PoS 전환의 시작은 **2020년 12월 1일**에 출시된 **비콘 체인(Beacon Chain)**&#xC73C;로, 이는 PoS 전환을 위한 첫 단계였다. 이후 **2022년 9월 15일**, 비콘 체인과 메인넷이 통합되는 "The Merge"가 완료되면서, 이더리움은 공식적으로 PoS 기반 네트워크로 전환되었다.

***

### **주요 용어 정리**

* **Epoch와 Slot**

PoS 이더리움은 시간 단위를 슬롯(slot)과 에포크(epoch)로 나누어 블록 생성과 검증 프로세스를 관리한다. 1 슬롯은 새로운 블록 제안 기회에 해당하여 사실상 블록을 지칭하며 12초이다. 32개의 슬롯(약 6.4분)이 모여 하나의 에포크를 구성한다. 에포크는 후술할 합의 프로토콜의 **체크포인트(checkpoint)**&#xB85C; 사용되어, 특정 에포크의 **첫 블록**이 체크포인트로써 최종화(finalized)되는 단위로 활용된다.

즉, 새로운 블록은 12초마다 생성되며 체크포인트 블록은 약 6.4분마다 생성된다.

* **비콘 체인(Beacon Chain)과 샤드 체인 (Shard Chain)**

비콘 체인이 중앙에서 검증자들을 관리하고 난수 생성, 최종성 합의를 이끌어가는 **컨트롤 타워** 역할을 한다면, 각  샤드 체인은 개별 데이터 스트림으로서 트랜잭션을 처리한다. PoS 합의 관련 데이터(검증자 목록과 상태, 검증자 투표, 샤드 연결 정보 등)가 모두 비콘 체인에 기록된다.

샤드는 거대한 네트워크 시스템을 여러 개의 작은 조각으로 나누어 **분산 저장 및 관리**하는 기술로, 하나의 블록체인에서 전체 트랜잭션을 처리하는 것이 아니라 소규모 체인에 해당하는 샤드 체인들이 트랜잭션들을 **병렬적으로 처리**한다. 이로 인해 트랜잭션과 스마트 컨트랙트의 속도가 상승하고 클라이언트가 저장해야 하는     트랜잭션의 내역 용량이 줄었다.

<figure><img src="https://2462457462-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLf9vwRuaws92ULgGvzTi%2Fuploads%2FeyW90Vtlu3XjPV5ilbLE%2Fimage%20(9).png?alt=media&amp;token=00ad7d7f-c584-46d0-89ce-68c4f338ca4a" alt=""><figcaption></figcaption></figure>

* **검증자 투표(Attestation)**

**검증자 투표(Attestation)**&#xB294; 검증자들이 블록의 유효성과 체인의 진행 방향에 대해 내리는 서명 투표이다. 각 활성 검증자는 **매 에포크마다 최소 한 번** 지정된 슬롯의 위원회(committee)에 속해 투표를 수행한다.

* **최종성(Finality)**

블록이 **불가역적으로 인정**되는 상태를 말한다. PoW에서는 충분한 작업 누적으로 경제적 최종성을 추정하지만, PoS 에서는 명시적 투표로 최종성을 얻는다. ⅔ 이상의 검증자가 체크포인트(에포크 시작 블록)를 지지하면 정당화되며, **연속된 두 개의 체크포인트에 대한 정당화 투표가 모이면 이전 체크포인트가 최종화(finalized)된다.** 최종성을 달성하면 해당 블록 이전의 모든 블록은 안전하게 확정된다.

* **Casper FFG**

Casper FFG는 이더리움 2.0의 최종성(Finality)을 담당하는 합의 알고리즘 구성 요소이다. 일정 수 이상의 검증자 투표(supermajority ⅔  이상)가 있으면 블록을 정당화(Justify)하고 이후 두 에포크, 즉 64블록에 걸쳐 연속된 ⅔  투표를 받으면 최종성(Finality)이 확보된다.

* **LMD-GHOST**

&#x20;최신 메세지 기반 GHOST(LMD-GHOST)는 이더리움 2.0에서 사용되는 포크 선택 규칙이다. 검증자들이 마지막으로 제출한 검증인 투표(attestation)들을 바탕으로 가장 무거운 서브트리, 즉 가장 많은 투표를 받은 블록을 선택하여 체인의 헤드를 정하는 알고리즘이다. 요약하면, “가장 많은 검증자 투표가 쌓인 블록의 경로”를 현재 유효 체인으로 간주하는 규칙이다. LMD-GHOST는 단기적인 체인 진행(포크 해결)에 활용되고, Casper FFG의 최종성 규칙과 함께 동작하여 안전성을 보장한다.

* **Gasper**

Casper FFG와LMD-GHOST와 결합되어 **Gasper**라는 완전한 합의 프로토콜을 구성한다. Gasper 합의 구조를 아래 간단한 예시를 통해 알아보자.&#x20;

<figure><img src="https://2462457462-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLf9vwRuaws92ULgGvzTi%2Fuploads%2F62I4iYB9WqVg0HJU3jIR%2Fimage.png?alt=media&amp;token=6e050c73-e931-43fb-88c5-5ddb244a1af1" alt=""><figcaption></figcaption></figure>

* **초록색 (A1)**: **Finalized 블록**

  → 다수의 검증자(⅔ )가 동의했고, 더 이상 되돌릴 수 없는 최종화 된 상태이다.
* **주황색 (B1)**: **Justified 블록**

  → 검증자 다수의 동의를 받아, 다음 블록에서 최종화 될 수 있는 후보이다.
* **파란색 (D1)**: **현재 Head 블록** (LMD-GHOST 기준)

  → 가장 많은 검증인 투표(attestation)가 도달한 경로의 최신 블록이다.

\[출처][eth2book.info](https://eth2book.info/latest/part2/consensus/casper_ffg/#:~:text=The%20two,something%20we%20cannot%20always%20assume) , [<img src="https://ethereum.org/favicon.ico" alt="" data-size="line">ethereum.orgProof-of-stake (PoS)](https://ethereum.org/en/developers/docs/consensus-mechanisms/pos/)

***

### PoS 상세 절차

<figure><img src="https://2462457462-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLf9vwRuaws92ULgGvzTi%2Fuploads%2FZ3jwVX5oyJdBJNZf6UwT%2Fimage.png?alt=media&amp;token=cd4e9f01-86db-4c4e-b17c-e6eb96de822b" alt=""><figcaption><p>[출처]<a href="https://www.offchainlabs.com/prysm/docs/how-prysm-works/validator-lifecycle">Validator lifecycle | Prysm</a></p></figcaption></figure>

1. **검증자 등록 및 스테이킹**
   * 검증자가 되려면 32 ETH를 예치해야 하며, 이는 Beacon Chain에서 관리된다.
   * 예치 후 대기 기간을 거쳐 검증자로 활성화된다.
2. **검증자 선정**
   * 검증자 집단이 각 에포크마다 새로 선정되며, 각 슬롯마다 무작위로 한 명의 블록 제안자(Proposer)와 여러 검증자 위원회(Committee)가 선정된다.
   * 무작위성은 RANDAO 알고리즘으로 보장된다.
   * 예를 들어 각 에포크마다 1만명의 검증자를 선정하면, 한 슬롯에 무작위로 약 312명의 검증자가 할당되며, 그 312명 중 한 명의 블록 제안자(Proposer)가 뽑히고 나머지는 위원회(Committee)로 역할이 나뉜다. 따라서 검증자는 한 에포크당 한 번 투표를 진행하게 된다.
3. **블록 제안 (Block Proposal)**
   * 블록  제안자(Proposer)는 LMD-GHOST 알고리즘으로 체인의 최신 상태를 파악하고 그 뒤에 이을 새 블록을 제안한다.
   * 블록은 부모 블록 해시, 슬롯 정보, 검증자 운영 리스트, 트랜잭션 데이터 등을 포함한다.
4. **블록 검증 및 투표 (Attestation)**

   * 각 블록의 위원회(Committee)로 선정된 검증자들은 제안자(Proposer)가 생성한 블록의 유효성을 검증하고 투표한다.
   * 검증자들은 검증자 투표(Attestation)를 통해 해당 블록에 대해 찬성 혹은 반대 투표를 하여, 결과가 과반수를 넘으면 블록이 체인에 포함된다.
   * 검증하는 내용을 아래와 같다.
     * 블록이 유효한지 (포맷, 상태 루트, 서명 등)
     * 타임스탬프와 이전 블록 해시가 맞는지
   * 효율성을 위해 집계자를(aggregator) 두어 (예: 위원회당 16명), 서명 집계를 통해 투표 결과를 네트워크에 전파한다.

   <figure><img src="https://2462457462-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLf9vwRuaws92ULgGvzTi%2Fuploads%2FSk8NAOqIv4s8birwggR6%2Fimage.png?alt=media&amp;token=f588a32b-68ff-432d-9ec1-4694389eb43a" alt=""><figcaption></figcaption></figure>
5. **최종성(Finality) 결정**
   * 블록이 여러 Epoch를 거치며,  2/3 이상의 동의(Supermajority)를 얻으면 최종 확정(Finalize)된다. 이는 되돌릴 수 없는 확정된 블록이란 뜻으로,  확정된 블록 앞 체인은 되돌릴 수 없다.
6. **보상 및 벌칙**
   * 검증자들은 올바른 블록 제안과 투표에 대해 보상을 받는다.
   * 반대로, 규정을 위반하거나 부정행위를 하면 벌칙으로 예치금 일부가 소각되며, 이를 **슬래싱(Slashing)**&#xC774;라 한다.

\[출처][ethereum.orgAttestations](https://ethereum.org/en/developers/docs/consensus-mechanisms/pos/attestations/)

​
