들어가며
본인은 19년말쯤 부터 이더리움 스테이킹에 관심을 가져왔고 채굴한 이더로 스테이킹을 하기위해 준비중이었으나
20년말 비컨체인 시작할때 2.0 전환이후 출금이 가능하다는 사실때문에 머지 이후로 스테이킹 참여를 미뤄왔고
21년말 개발팀이 머지 기능구현에 집중하기 위해 출금기능을 상하이업데이트로 분리하면서 조금더 기다리고 있는중입니다.
해당글은 스테이킹을 권하는 글도 아니고 기술적인 관점에서 어떻게 구동되는지 최근 공부하면서 알게된 바를 기술한 글이니 이점 참고해서 읽어주세요.
--------------------------------------------------------------------------------------------------------------------------------------------------
0.
블록체인은 블럭을 생성하기 위해 합의 알고리즘을 사용하고 2008년 비트코인이 처음 세상에 나올때 POW라는 개념의 합의 알고리즘을 소개합니다. 선의의 참여자가 체인에 손상을 주지않고 블럭을 생성하면 보상을 지급하는 개념이었고. 이후 많은 코인들이 이 개념을 도입합니다.
201x년대 비트코인을 공부하던 비탈릭은 탈중앙화된 렛저(거래원장) 개념이었던 비트코인을 넘어
스마트컨트랙 기능을 더한 월드 컴퓨터라는 개념의 새로운 블럭체인을 구상하게 되었고 이더리움이 탄생합니다.
이더리움은 초기에 POW방식의 합의 알고리즘으로 시작하되 월드컴퓨터로서의 확장성을 구현하기 위해서는
POS방식으로의 전환이 불가피하다는걸 이미 생각하고 있었고 추후 POS방식으로 전환한다는 초기구상을 가지고 시작했습니다.
그리고 길고긴 개발과정을 거쳐 드디어 지난달 머지를 통해 이더리움은 합의 알고리즘이 POW에서 POS로 완전히 전환되었습니다.
POS는 말그대로 Proof of staking. 스테이킹을 통해 증명을 한다는 의미입니다.
일정량의 이더를 가지고 지분 참여를 하는건데. 개발초기에는 이더 100개가 스테이킹 기준으로 적용될뻔 했으나 비탈릭의 의견에 따라 32개로 낮춰졌습니다. (이더가격 10-30만원시절)
즉 스테이킹을 하기 위해서는 32이더가 필요합니다. 32ETH = 1 Validator
1. 스테이킹 방법
이더리움 스테이킹에 참여하는 방법은 아래처럼 크게 4가지 입니다.
A. 솔로 홈 스테이킹
B. 서비스로의 스테이킹(Staking as a service = SaaS)
C. 스테이킹 풀
D. 거래소를 통한 스테이킹
일단 각각 내용을 살펴보기 전 기본이 되는 솔로 홈 스테이킹은 어떻게 이루어 지는 지 먼저 살펴보면
A. 솔로 홈 스테이킹은 사실 탈 중앙화된 이더리움의 기본이 되는 스테이킹 방식 입니다.
노드(블럭체인 데이터가 기록된 하드웨어)에 32이더를 예치하면서 만든 키를 등록하고 인터넷에 24시간 연결해 블럭을 검증하고 블럭을 생성합니다.
준비물은 다음과 같습니다.
1. 원활한 공급이 보장되는 전기와 인터넷 회선 ( UPS 강력히 권장 )
2. 최소 스테이킹을 위한 32이더
3. 노드를 운영할 컴퓨터 ( 최소 4코어(8스레드권장) , 최소 16기가(32기가권장) 램 , 2TB SSD
4. 스테이킹용 키를 만들 안전한 컴퓨터(오프라인상에 키생성) + 하드웨어 월렛(메타마스크 연동)
일단 노드가 인터넷에 연결된채 24시간 운영되어야 하고 전기가 상시 공급될수 있는 환경이어야 합니다. 정전이 거의 발생하지 않는 한국의 상황으로 볼때 UPS는 필요없는걸로 보이지만 순간 정전이어도 재시작을 하면서 체인을 재 동기화 할수도 있기 때문에 가능하면 UPS를 권장합니다.
노드를 위한 컴퓨터는 사실 인텔 9세대, 라이젠 1세대 이상의 최신의 장비면 무리가 없습니다.
( passmark 점수 8000이상 . 4코어8쓰레드 이상 강력히 권장 )
램은 최소 16기가가 필요한데. 32기가를 강력히 권장합니다. 16기가와 비교하여 누적되는 체인 사이즈가 33%이상 줄어듭니다.
HDD는 절대 사용불가능합니다. 최소 SSD, NVME를 권장합니다.
초기 동기화시에 전체 체인의 스냅샷등을 만드는데 순차읽기가 아니라 이전 블럭을 읽어서 상태정보를 기록하기때문에
랜덤 읽기쓰기 성능이 중요합니다.
전 저전력을 위해 그동안 J4105로 노드를 운영해왔었는데. 스테이킹 노드는 EL+CL 두가지를 돌려야하고 증명작업까지 더해지니 해당 장비로는 운영이 어렵더라구요. ( 증명이 간혹 자꾸 누락됩니다. )
현재는 ASROCK A300 미니 + Ryzen 5 2400G + 16GB ( 추후 확장) + MX500 2TB 로 메인넷 동기화와 테스트넷 돌리고 있습니다.
스테이킹용 키 만들기 위한 컴퓨터 ( 특별 프로그램을 이용하여 이전과 다른 방식의 키 생성 )
- 이전 블럭체인은 대부분 BIP32/39/44를 지원하는 지갑을 사용하면 되었는데.
니모닉(단어세트)를 통해 마스터키를 생성하고 이를 기반으로 지갑이 유도되는 방식이어서
안전하게 지갑을 지키려면 니모닉 단어세트를 절대 디지털화 하지 않고 온라인데 저장하지 않으면 안전했으나. (제일 중요합니다.)
스테이킹방식에서는 온라인에서 밸리데이터가 스테이킹 키로 6.4분마다 증명을 수행해야 하므로 위의 키를 입력하는게 아니고
BLS방식의 새로운 시스템이 도입되었습니다. 그래서 기존 키를 활용하는 대신 새로운 방식으로 전용프로그램을 통해 키를 생성합니다.
해당 프로그램은 32이더를 입금하기 위한 디파짓 정보와 . 스테이킹용 키를 생성합니다. 스테이킹 출금용 키는 나중에...
한가지 중요한건.. 해당 키를 만들때 출금용 주소로 기존 이더 주소를 입력할수 있습니다. 중간에 추가된 기능인데.
키를 관리하는 입장에서 출금용으로 관리되는 키가 두개나 생기는게 관리에 버거우니. 디파짓 정보에 아예 출금전용 주소를 입력할수있게 기능이 추가되었고.. 내가 하드웨어 월렛등으로 지갑을 제대로 관리하고 있으면 출금용 전용 주소를 사용하는것이 좋을것 같습니다.
준비물 준비완료 이후 과정. 간략소개
0.준비된 하드웨어를 가동해 ETH1(EL) 동기화 와 ETH2(CL) 동기화를 마칩니다. ( 대략 2일 소요 )
1. 스테이킹용 키를 생성합니다. - 디파짓파일 + 스테이킹용 키 생성.
2. 공식 런치패드라는 사이트를 이용해 디파짓 파일로 스마트 컨트랙을 생성합니다. - 메타마스크를 통해 32이더 전송. (항상 피싱 주의 )
(아래는 테스트넷 사진입니다. 착오없으시길)
3. 32이더가 이체되면 해당 디파짓이 컨펌되기까지 EL에서 2048개의 블럭이 지나가길 기다리고
이후 비컨체인으로 넘어와 32 epoch을 기다려야 합니다. 2048블럭은 대략 8시간. 32 epoch은 3.5시간.. 총 11시간 30분은 최소대기 시간이고.
이후 밸리데이터 큐에 들어가 액티베이션이 되기를 기다려야 하는데.
1 epoch당 6명의 밸리데이터만 액티브가 되니 .. 대기자가 많으면 또 계속 기다려야 합니다.
현재 500명이 넘은 대기자가 있네요. 9시간.. 이더 32이 이체후 최소 20시간을 대기해야 액티브가 되고 증명보상을 받기 시작합니다.
4. 디파짓이 잘 입금되면 노드에 스테이킹용 키를 입력하고 3번의 작업이 완료되기를 기다립니다. active.
5. 이후 액티브 까지 끝나면 스테이킹 시작입니다.
입금이후의 과정은 https://beaconcha.in/에 자신의 퍼블릭 키를 입력하면 상태정보 확인이 가능합니다.
여기까지가 스테이킹 하는 방법입니다. 사실 어렵습니다.
용어도 어렵고. 뭐가 뭔지도 모르겠고.. 근데 한번 해보면 쉽습니다.
그래서 테스트넷에서 꼭 한번 해보시길 강력히 권장합니다.
이더리움은 POS 연습을 위해 Goerli/Prater TestNet을 운영중입니다.
Goerli ETH를 32개 얻으셔서 ( 파우셋을 통해 무료 배포, 근데 지금은 수량이 너무 줄어들어서.. )
운영되고 있는 고엘리 파우셋 모음 사이트 입니다.
참고로 PK910은 cpu채굴을 통해 테스트 이더를 지급합니다. - 제일 빠른 방법중 하나 입니다.
메타마스크에서 테스트넷 지갑 접근하려면 설정-고급에서 테스트넷에 전환표시 기능을 켜야 합니다.
진심 테스트 넷 테스트 해보고 싶으시면 추가로 아래와 같은 방법으로 테스트넷 밸리데이터 설정가능합니다.
다만 먼저 노드를 설정하시고 신청하세요.
테스트넷 POS 운영을 위해서 테스트 이더가 필요하다면 아래 방법으로 2개의 밸리데이터를 만들수 있습니다.
1개의 밸리데이터당 원래 32이더(여기서는 Goerli이더)가 필요하지만
해당 서비스 런치패드를 이용하면 밸리데이터 하나당 0.0001이더만 필요합니다.
1. 메타마스크 지갑 설치후 Goerli test net선택하고 지갑주소 확인
2. 해당 지갑을 통해 극소량의 테스트 이더 확보. 0.0002 이상.
3. https://goerli.launchpad.ethstaker.cc/en/ 의 런치패드를 이용해서 디파짓.. (화이트 리스트 등록필요. 아래 4번 확인)
4. Join the #cheap-goerli-validator channel on EthStaker Discord Server
5. 채널에 들어가 /명령어로 /cheap-goerli-deposit 선택. 답변창에 개별 signer.js 링크를 통해 디파짓에 사용할 메타마스크 주소 선택등록 후 signature 입력.
동작구조.
내 메타마스크의 특정주소를 등록하고(화이트리스트 등록) . 전용 런처패드를 이용해 디파짓하면 등록한(화이트리스트 내주소) 주소를 통해 0.0001이더가 이체되면 , 32이더를 공식 테스트넷 컨트랙주소로 재 전송해주는 구조입니다.
스마트컨트랙이 이러한 구조군요.
-----------------------------------------------------------------------------------------------------------------------
메인넷 대신 테스트넷 노드를 설치후 모든 절차를 직접 해보시면 됩니다.
제가 운영하고 있는 테스트 노드 및 밸리데이터 입니다.
여기까지 이해하셨는지 모르겠는데.. 스테이킹 방식에 대해 추가로 더해보면 위 방법이 개인이 노드를 직접 운영하며
키를 직접 관리하는 등 운영은 어렵지만 가장 높은 수익이 보장되며 탈 중앙화된 방식이며.
B. SaaS는 위 기본 방식에서 메인키는 자신이 운영하지만 노드 서비스를 제공하는 업체에 내 스테이킹 키를 등록해 운영하는 방식입니다.
노드 운영이 어려울때 하드웨어만 서비스 받는다고 보시면 됩니다.
C. 스테이킹 풀 은 그냥 풀에 이더를 전송하고 서비스를 받는 방식으로 키를 만들 필요도 없고. 하드웨어도 필요없고. 32 최소이더 이하여도 가능합니다. - 리도, 로켓풀 등등이 서비스를 하고 있습니다.
D. 거래소를 통한 스테이킹 - 업비트,코빗등과 같은 거래소에서 하는 스테이킹 서비스를 말합니다. 거래소와의 계약이므로 개인적으로는 스테이킹이라고 하기엔 무리가 있다고 생각합니다. 특히 국내 거래소들은 공식적인 밸리데이터 정보도 오픈하지 않는 걸로 알고 있고 수익율 분배도 투명하지 않은것 같습니다.
---------------------------------------------------------------------------------------------------------------------------------------
스테이킹 보상.
크게 증명보상과 블럭생성 보상, 전송수수료 로 보시면 됩니다.
기존 POW에서는 약 13초마다 블럭이 생성되면서 블럭당 2이더를 보상으로 받고 수수료중 소각되지 않는 팁도 보상으로 받았는데.
POS에서는 그 구조가 좀 달라졌습니다
1 Epoch이라는 개념과 슬롯이라는 개념이 들어왔습니다.
1 epoch은 32개의 슬롯으로 이루어져있고 약 6.4분의 주기를 같습니다.
epoch이 시작되면 참여한 밸리데이터는 일단 무작위로 블럭을 만들 32명의 밸리데이터를 선발하며
나머지는 생성된 블럭이 유효한지 증명을 합니다.
현재기준으로는 약 44만명의 밸리데이터가 있으니. 평균적으로 일년에 약 6번(두달에 한번) 블럭을 만든다고 보시면 됩니다.
그래서 블럭을 만들면서 받는 블럭보상 (기본적으로 보상액이 큼) + 해당블럭의 전송수수료중 소각안된 팁에 해당하는 전송수수료(별도주소로전송) 그외에는 6.4분마다 블럭검증에 참여하면서 받는 기본보상. 이렇게 보시면 됩니다.
https://beaconcha.in/validator/445485#attestations 아래 사이트에서는 제네시스 부터 참가한 모든 밸리데이터의 수익을 조회할수 있습니다.
스테이킹 패널티 .
해당 Epoch에 블럭검증을 하지 않은 경우 miss처리되며 패널티는 받을 보상만큼 차감합니다.
받을것도 못받고 그만큼 더 차감하니 두배로 차감된다고 보면 됩니다. 예를 들어 15일 멈추면 한달 얻은수익과 같습니다.
슬래시
같은 epoch의 다른 슬롯에 두번 검증하는등의 체인 무결성에 훼손을 가하면 바로 슬래싱 당합니다.
보통 바로 0.5-1이더 차감당하고 36일동안 페널티를 받은후 마지막 페널티 공제후 아웃됩니다.
원래는 출금이 가능하지만 현재는 출금이 안되니 그냥 그상태로 멈춥니다.
서버 가용성을 위해 키를 입력한 두대의 노드를 운영하고 장애시 자동전환 등의 기능을 켜놓았는데. 실수로 두대가 다 같이 동작하면 슬래싱 당합니다. 절대 키를 입력한 노드를 두개 같이 돌리면 안됩니다.
------------------------------------------------------------------------------------------------------------------------
이더리움의 향후 스케쥴은 대략 다음과 같습니다.
작년말 비탈릭이 발표한 최신 로드맵을 보시면 확인 가능하실텐데. 전체적인 계획을 보실수 있는데.
0. 현 시점 개발팀의 가장 우선한 첫번째 달성 목표는 EIP-4895(비컨체인 출금기능)를 포함한 상하이 업데이트 입니다.
( 머지이후 6-12개월정도 예상하고 있던데 지난주에 상하이 업데이트 테스트넷도 나왔습니다. )
1.머지 : 체인 합병을 통해 지분증명으로 전환 , 확장성 증가의 초석 ( 이미 적용됨)
2.서지 : 2023년 계획 , 샤딩의 도입. 댕크샤딩 모델 도입, 확장성 증가 기대
3.버지 : 버클트리 소개. 노드들이 스테이트 저장없이 검증할수 있는것을 목표. 기존 머클트리에서 대체.
4. 퍼지 : EIP-4444 , 노드들이 1년보다 오래된 데이터를 잘라버릴수 있도록 개선. 노드 스토리지 사이즈 개선.
5.스플러지 : 위 4개는 주요업데이트이고 기타 다양한 업데이트 집합
출금기능 업데이트 및 확장성 개선을 위한 위 업데이트들은 순차적 진행이 아니라 병렬로 진행된다고 합니다
자료출처
https://ethereum.org/en/staking/