티스토리 뷰

반응형

이더리움에서 스테이킹이란 이더리움 코어 소프트웨어의 검증 기능을 실행하기 위해 이뤄지는 행위이다. 하지만 많은 사람들이 스테이킹을 단순히 장시간 코인을 예치하고 수익을 얻는 것으로 알고있다. 물론 스테이킹을 함으로써 수익을 얻게되는 것은 검증 과정 중 하나이기에 틀린 말은 아니다. 수익을 얻을 수 있다고해서 스테이킹에 대해서 자세히 알아보지 않는 것은 위험하다. 스테이킹은 반드시 수익을 보장한다고 할 수 없으며 위험성도 존재하기 때문이다. 그리하여 투자를 하기전에 스테이킹이 무엇인지 어떤 과정과 어떤 종류로 스테이킹이 이뤄지는지 알아볼 필요성이 있다.


 

지분 증명(PoS)과 스테이킹

기존의 작업증명(PoW, Proof-of-Work) 알고리즘을 사용하던 이더리움 블록체인은 작업증명의 비효율성에 대한 불만이 지속적으로 제기되며 변화에 대한 필요성을 느끼게되었고, 합의 알고리즘을 지분증명(PoS, Proof-of-Stake)으로 업데이트하게 된다. 지분증명은 작업 증명에 비해 초기 운영과 네트워크 확장에 있어 효율적이기도 하며 새로운 블록을 생성하기 위해 컴퓨팅 파워 대신 기존 블록체인 가상자산을 이용하여 일정량을 담보로 묶는 행위로 에너지 소비를 줄여 친환경적이기도 하다. 

 

지분증명은 검증자라는 이들이 가상자산(ETH)을 보증금으로 입금하고 이더리움 네트워크에 블록을 검증하는 역할을 수행한다. 보증금은 32개의 ETH를 예치한 뒤 검증자의 자격을 얻어 블록체인의 데이터 저장, 트랜잭션 처리 및 새로운 블록을 추가하게 되는 프로세스에 참여함으로써 역할을 잘 수행하면 보상을 얻게된다. 이때 가상자산을 보증금으로 묶는(Stake) 행위를 하여 수익을 얻는 것을 스테이킹이라고 한다. 검증자의 보증금은 검증자가 악의적으로 블록 검증을 부적합하게 수행하거나 검증을 하지 못했을 경우 담보를 차감하며 올바르게 검증하면 보상을 받는다.


 

검증자(Validators)

위의 검증 내용을 좀더 상세히 설명하도록 한다. 검증자로 참여하려면 32 ETH를 예금 컨트랙트(Deposit Contract)에 입금하고 검증을 진행하는 이더리움 소프트웨어들을 실행해야한다(실행 클라이언트, 합의 클라이언트, 검증기 등등). 한번 입금한 32 ETH는 되돌릴 수 없으며, 32 ETH 이상을 입금해도 32 ETH에 대한 보상만 획득할 수 있다. 초과로 보낸 ETH는 상하이 업그레이드가 개발되지 전까지 비콘 체인 내 묶여있다.

 

사용자가 예금 컨트랙트를 통해 ETH를 스테이킹하고 소프트웨어를 실행시키면 비콘 체인에서 로그 확인 후 검증인 자격을 제공한다. 그 후 네트워크에 참여하는 새로운 검증자의 참여 비율을 제한하는 활성화 대기열(activation queue)에 추가된다. 검증자가 사용자가 대기열에 있다가 활성화가 되면, 그 검증자는 이더리움 네트워크 상의 노드로부터 새로운 블록을 수신 받게 된다. 이 블록 정보를 받은 검증자는 블록제안자가 되며, 블록제안자는 12초 안에 블록이 유효한지 확인하고 블록 정보를 다른 검증자들(위원회, Committee)에게 전달해야한다. 블록제안자는 블록에 있는 트랜잭션들을 다시 실행시켜 블록 서명을 확인해 블록이 유효한지 확인하고, 올바른 블록이라 판단하면 네트워크를 통해 위원회에게 블록 정보 메시지를 전송한다. 위원회에게 제안된 블록은 위원회가 투표(증명)를 통해 다시 올바른 블록인지 검증한다. 위원회의 증명은 실시간 투표로 진행되며 2/3 이상의 지지를 얻었을때 블록이 체인에 기록된다.

 

블록제안자가 올바르게 행동해서 블록을 생성하면 새로 발행된 이더(Minting Ether)를 보상으로 얻게된다. 발행된 이더의 총량은 검증자들이 입금(스테이킹)한 이더의 양에 따라 달라지며, 발행 이더는 모든 검증자가 정직하게 검증과정을 진행한 경우에 균등하게 나눠지지만 이는 이상적인 이론에 가깝기에 실제로는 검증자의 성능에 따라 받는 이더가 다르다. 총 발행 이더의 1/8은 블록제안자에게 전달되고 나머지는 다른 검증자에게 분배된다. 블록제안자는 검증 보상뿐 아니라 블록 트랜잭션의 수수료도 받는다.


슬래싱(Slashing)

이더리움 네트워크에 검증자로서 참여하게 될 경우 검증자는 2가지의 행동을 취할 수 있다. 하나는 정상적으로 블록 검증을 진행하는 것과 다른 하나는 개인적인 이익추구나 네트워크 파괴를 위해 공격을 하는 것이다. 공격을 방지하기 위해 설계된 합의 매커니즘이 있는데, 검증자가 검증 역할에 참여하지 않으면 ETH 보상을 받지 못한다는 것과 부정직하고 공격적인 행동을 취할 경우 기존 예금 컨트랙트에 입금했던 ETH를 차감시키는 것이다. 부정직하다고 생각되는 행위는 2가지가 있는데, 블록제안자가 1개의 슬롯에서 여러개의 블록을 제안하거나 잘못된 증명 데이터를 제출하는 경우이다.


검증 과정 요약

검증자가 예금 컨트랙트(Deposit Contract)에 32 ETH를 입금하고 검증자 소프트웨어(노드)를 실행하면 비콘 체인에 주소가 등록된 후  검증인의 자격을 얻는다. 비콘 체인에 레지스트리에 등록된 검증인 주소들의 집합을 검증인집단이라 부르며, 모든 검증인들은 고유한 인덱스 번호를 가진다.

 

 위의 내용을 요약해서 검증인이 네트워크에서 어떤 작업을 수행 중인지 6가지의 활동 상태로 나눌 수 있다.

 

Validator Lifecycle

예치(Deposited) : 검증인 자격을 얻기 위해 예금 컨트랙트(Deposit Contract)에 32 ETH를 예치한 상태로 약 7시간 동안 이 상태를 유지한다. 만약 이 상태에서 네트워크가 공격당할 경우 보안 기능을 제공한다.

활성화 자격획득(Pending) : 이더를 예치하면 비콘 체인의 검증인 레지스트리에 등록된다. 역할을 부여 받기 전(블록제안자 또는 위원회) 우선적으로 활성화 대기열(activation queue)에 배치되는데, 검증자가 대기열에 들어가기 전에 다른 활성화된 검증자들이 투표로 대기열에 추가할지 정한다. 검증자는 대기열에 추가된 후 최소 4 epoch 이후 활성화 될 수 있으며 이 시점에서 검증인 등록 요청이 몰리게 되면 4 epoch를 초과할 수 있다.

활성화(Activated) : 특정 슬롯(slot)에 검증 역할(블록제안자 또는 위원회)을 할당 받은 상태로 검증 수행 결과에 따라 보상 또는 패널티를 받는다. 검증자는 3가지 행동을 취할때까지 활성 상태를 유지한다. 첫째는 보유 예치금이 16 ETH로 떨어지는 경우, 두번째는 자발적으로 네트워크를 종료한 경우, 세번째는 슬래싱으로 쫒겨난 경우이다.

패널티, 처벌(Slashed) : 활성화 상태의 검증인이 악의적인 행동을 취했을 경우 처벌을 받는다.

종료(Exited) : 검증인이 활성화 상태에서 자발적으로 종료 메시지를 전송하거나 처벌 받을 경우 검증인의 임무 수행이 중단되며 종료 대기열에 배치된다.

탈퇴(Withdrawable) : 자발적으로 종료 대기열을 빠져나온 검증인은 약 27시간 뒤 출금이 가능하며, 처벌을 받아 종료되었을 경우 약 36일의 잠금(Locked) 기간이 주어진다. 출금 가능 시간(27시간)은 악의적인 행동이 발각되면 처벌을 부여하기 위한 유예 시간이다. 현재는 상하이 업그레이드 전까지 출금이 불가능하다. 


다음 글에선 어떤 종류의 스테이킹이 있는지 설명하겠다.

반응형
댓글
공지사항