Ethereum 2.0 Deeper Dive
이더리움 2.0
Background
Ethereum
은 2.0 릴리스 (Eth2) 를 앞두고 있음. 해당 업데이트는,
1) POW → POS 전환 (보상체계 변경) 2) Sharding 기능 도입으로 인한 Scalability 확보 등 기존 Ethereum
네트워크와 핵심 요소들이 변하는 만큼 2.0 업데이트 현황 및 2.0에 대한 시장 반응 분석이 필요하다고 판단했다.
이더리움이 기존에 가지고 있었던 단점들을 어느 정도 보완할 수 있다면,
현재 이더리움이 보유하고 있는 Marketshare 를 활용하여 '플랫폼 코인' 으로써 더욱 성장할 수 있지 않을까라는 생각이 든다.
Purpose
Ethereum
은 흔히 불리는 "2세대 가상화폐" 로써, Bitcoin의 원천기술인 Blockchain 기술을 활용하여 분산된 탈중화 플랫폼을 제공하고자 Smart Contract 라고 불리는 블록체인상 코드를 선보여, 로직이 블록체인 기반하에 동작할 수 있게끔 기능을 제공한다.
단,
Ethereum
또한 초기 코인으로써, 확장성(Scalability), 성능(Performance) 및 데이터 합의를 위한 컴퓨팅 리소스 소모(Resource Consumption) 가 존재한다 이런 부분들을 보완하기 위해 등장한 가상화폐를 3세대 코인이라고 부른다.
결론적으로 Ethereum
또한 기존에 가지고 있는 단점을 보완하고자 Ethereum
2.0 을 준비 중에 있다!
Ethereum 2.0 in Details
- Phases : Vitalik’s Annotated Ethereum 2.0 Spec
- Staking : https://ethereum.org/en/eth2/staking/
- Beacon chain & The Merge : https://ethereum.org/en/eth2/beacon-chain/
- Shard chains : https://ethereum.org/en/eth2/shard-chains/
- Ethereum 2.0 현황
Ethreum Phases
Ethereum Phase는 아래와 같이 구분되어 있다
- Phase 0: a proof of stake beacon chain is launched, which can process deposits from the eth1 chain.
No shard chains yet. (Dec, 2020) - Phase 1: shard chains are activated, though they only process data, not transactions. Hence, the eth2 chain becomes useful as a data availability verification layer for rollups, but you cannot yet directly transact on it.
- Phase 1.5 (aka The Merge): the eth1 chain is shut down, and the state (ie. all balances, contracts, code, storage…) from the eth1 chain is moved into one shard of the eth2 chain. Users can transact on that shard.
- Phase 2: all shards support full transaction capabilities.
- Phase 3+ (aka Ethereum 2.x): ongoing improvements to safety, efficiency and scalability...
Staking
Staking은 PoS 기반 합의 알고리즘 상에서 필수 동작요소인 Stake(지분)을 네트워크에 "고정" 시키는 것을 의미한다.
지분을 블록체인 네트워크에 고정, 즉 예치 함으로써, 해당 플랫폼의 운영 및 검증에 참여하고 이에 대한 보상을 받을 수 있게 된다.
Staking on Ethereum
Staking is the act of depositing 32 ETH to activate validator software. As a validator you’ll be responsible for storing data, processing transactions, and adding new blocks to the blockchain. This will keep Ethereum secure for everyone and earn you new ETH in the process. This process, known as proof-of-stake, is being introduced by the Beacon Chain.
Ethereum
에서 스테이킹을 참여하기 위한 조건은 아래와 같다 (쉬우면서도 복잡해 보임...)
validator
즉 PoS 과정의 "검증자" 로 참여하기 위해최소32 ETH 예치 필요- 32 ETH가 없을 경우 각종 Staking Pool 참여 가능
- 신규
Eth2
외 기존Eth1
클라이언트 기동 및 연계 필요 - SSD, 대략 400GB+ 기존 데이터 다운로드 필요. 하루에 대략 1GB씩 증가함
- 1GB/hr 업로드 BW
Staking을 하기 위해선 32 ETH를 Deposit 해야 한다.
[0x00000000219ab540356cbb839cbe05303d7705fa]
- 위 스마트 컨트랙트 주소로 32 ETH를 Deposit 한다.
- Deposit 은 Staking이랑 다르다. Staking 할 시 알맞은 address 로 보상이 가는지 확정하기 위한 것이다.
- 결론적으로 Deposit 이후, 정상적으로 Eth2 클라이언트를 설정해야 함. 아니면 보상 못 받음
참, 당연한 얘기지만,
Staking 한 ETH는 당분간 돌려받지 못한다.
Mainnet과 Beacon Chain이 Merge 될 때 가능할 것으로 예상하고, 최소 1년을 걸릴 것으로 예상된다.
Penalty 관련
Validator로 선택됐는데 블록은 생성 못한다거나 (offline) 혹은 collusion (담합) 하는 행위가 적발되면 Stake 를 잃을 수 있다.
Network 단절 시 validating 에 참여했을 때 받는 보상만큼 penalty가 부여되고,
담합 혹은 네트워크 상 부적절한 행위가 적발됐을 시 Staking 한 모든 ETH를 잃는다.
Staking 한 지갑 잔액이 16 ETH 이하로 내려가면 Beacon Chain상에서 deactivate 된다.
Q: Why PoS?
Ethereum
에서 PoS를 채택한 이유는 아래와 같다.
- PoW 처럼 연산작업이 필요 없어서 더 친환경적이다.
- PoW 대비 진입장벽이 낮다 ( Mining 장비 불필요)
- 낮은 진입장벽으로 인하여 네트워크 참여자를 증가할 수 있고 분산화 할 수 있다 (탈중화)
PoS 경우도 51% Attack 에 취약할 수도 있지만:
- Eth 네트워크의 51% 이상 ETH를 보유해야 한다.
- 공격 성공 시 ETH 가치가 하락하여 득이 되는 게 없다.
위 2가지 사유로 공격의 의미가 없어서 발생 안 할 가능성이 높다고 본다 ( almost as much as PoW )
Ethereum PoS [https://ethos.dev/beacon-chain/]
PoS 단계
- 블록 생성자 선정 및 블록 Proposal 생성
- Attestation (블록 검증)
- crosslink ( Beacon chain과 연계)
- finality via Casper
Attestation
일단 블록 생성자는 random 으로 지정된다.
블록 생성자가 블록을 생성(Propose)하면, 해당 블록은 최소 128 validator의 Attestaton (승인) 이 필요하다. 이 validator를 묶어서 committee 라고 표현한다.
각 committee 는 time-frame 내 블록을 propose , 검증하게 된다.
이 시간 frame을 slot 이라고 표현한다. 각 slot 당 하나의 블록이 생성된다. slot은 Epoch 이라는 단위로 묶이는데 32 slot 이 하나의 Epoch 이다.
slot이 12초, Epoch은 즉 6.4 분이다.
Epoch이 완료되면 committee는 해체되고, 다음 Epoch을 위해 랜덤으로 재생성된다.
Crosslink
블록에 대한 충분한 Attestation이 확보되면 해당 블록은 검증됐고 Beacon Chain에 연계될 수 있다는 crosslink 라는 확정을 받는다.
이 Crosslink는 Beacon Chain과의 연계 부분에서도 중요하지만, Beacon Chain상에서 각 Shard 에서 생성된 블록의 Crosslink 나열도 중요하다. 이 과정을 통해 Shard Chain에 대한 블록을 최종화(?) 한다.
Finality via CASPER
생성된 블록이 최종 확정되기 위해서는 Beacon Chain에 포함되어야 한다.
현재 Beacon Coin 은 CASPER 프로토콜 사용하여 블록 추가에 대한 최종 결정이 이뤄진다. CASPER에서는 2/3의 validator가 블록에 대해 승인(Vote)을 하고, 해당 블록이 조상 블록을 가지게 될 시 확정된다.
아래 그림은 매우 단순하게 표기되어 있지만,
CASPER 프로토콜에서는 validator의 이중 투표 및 악행위에 대한 보안이 잘 이루어져 있어서 도입을 하게 됐다고 한다.
--- Footnote---
Finalization: A block B is finalized if:
it is the genesis block, or B is justified and more than 2/3rd validators have made votes (B, C),
where C is the direct child of B (i.e., height(C) = height(B) + 1)
Beacon Chain
저번에 언급했던 Beacon Chain은 PoS 기반으로 동작하는 Chain 이다. 2020년 12월 출시됐다.
Beacon Chain은 mainnet 체인과 달리 accounts 및 smart contract를 다루지 못한다.
Beacon Chain의 주역할은 Staker, 즉 Validator에 대한 관리 및 Shard chain 관리다.
- Validator 및 Stake 관리
- 블록 Proposer 선정 (Each step. RANDAO)
- Committee 선정 (매 Epoch 마다 변경됨)
- consensus rules 적용
- 보상 및 Penality 부여
- Shard chain anchor point 역할
Beacon Chain 이 핵심적인 요소인 이유는 추후 모든 Shard Chain 에 대한 최종 검증을 수행하는 체인이 되기 때문이다.
The Merge (이게 핵심!!?)
비행기가 비행 중 엔진을 교체하는 행위?
현재 Ethreum Mainnet은 PoW 기반으로 동작하고 있다.
그럼 mainnet과 Beacon Chain 은 어떻게 합쳐지게 되냐? mainnet이 POS 로 전환되고 Beacon Chain의 Shard 가 된다.
말은 진짜 너무 단순하다. 정확히 어떻게 적용될지는 조금 더 지켜봐야지만.. 기존 mainnet을 완전히 POS로 대체하기 위한 핵심단계라고 보고 있다. 그런데 기존에 있던 메인 체인을 하나의 shard 로 사용하는 게 쉬울까.. 그리고 신뢰를 할 수 있을까가 의문인 거 같다.
주의점:
Merge 시 아래 Cliffening도 적용될 예정이다.
- Cliffening (Halvening) : 비트코인은 블록 생성에 대한 보상을 4년마다 halving하는 행위를 하고 있다. Ethereum 을 이 행위를 Merge 때 수행할 예정이며 기존 대비 약 90% 로 감소할 예정이다.
Merge는 위 phase에 따라서, 1단계가 아닌 1.5 단계로 원래 Sharding 작업이 이루어진 이후 적용될 계획이었는데, 일단 더 먼저 적용될 것으로 예상된다.
WHEN'S IT SHIPPING?
~2021/22
This upgrade represents the official switch to proof-of-stake consensus. This eliminates the need for energy-intensive mining, and instead secures the network using staked ether. A truly exciting step in realizing the Eth2 vision – more scalability, security, and sustainability.
Sharding
Ethereum 이 Sharding 을 도입을 하게 된 계기는 확장성 및 성능을 보유하기 위해서다.
기존 Ethereum 을 1/N 으로 나누고 특정 account를 하나의 shard 에 할당하고 거래들을 병행 (Parallel) 처리하여 거래처리량을 대폭 증가시키려 한다. Eth2 에서는 최초 64개의 Shard Chain을 사용하고자 한다.
Sharding은 노드 운영에도 도움이 된다.
모든 네트워크에 대한 정보를 보유할 필요 없고 담당하고 있는 Shard에 대한 데이터만 보유하고 있으면 된다.
적용 단계
1 단계 : metadata handling
2 단계 : code execution
일단 Shard Chain에서는 거래와 스마트 컨트랙트를 다루지 않는다.
Rollup 기술이 도입되면 그 필요가 없을 수도 있다는 생각이 들어서 그런가? Rollup 기술은 아래와 같다.
Rollup 이란?
Rollup은 dapp에 거래들을 하나의 transaction으로 묶어서 증명 정보를 생성한 후 chain 에다가 기재하는 것을 뜻한다.
Rollups are a "layer 2" technology that exists today. They allow dapps to bundle or “roll up” transactions into a single transaction off-chain, generate a cryptographic proof and then submit it to the chain. This reduces the data needed for a transaction.
Combine this with all the extra data availability provided by shards and you get 100,000 transactions per second. (https://ethereum.org/en/developers/docs/scaling/layer-2-rollups/#rollups)
실은 이런 식으로 여러 거래를 하나의 거래로 합쳤을 때 발생하는 문제점은 묶음 거래 안에 있는 거래들을 어떻게 증명한다. 기존 블록체인 경우 거래 하나하나가 Merkle Tree 구조로 추가됐는데, 2중으로 처리가 되다 보니 ( merkle tree안에 있는 거래 안에 여러 거래 존재), 내부에 있는 거래들을 믿을 수 있을 지가 관건이다.
현재는 아래와 같은 거래에 대한 "증명" 정보를 사용하여 Rollup 을 적용하고자 한다.
- ZK Rollups : 영지식 기반.
- Optimistic Rollups : 거래에 문제가 없다고 가정하고 승인
결론적으로 sharding은 아직 갈 길이 멀다. ~2022
일단 기존에 있는 체인을 쪼개는 것도 문제여서..
Ethreum 2.0 근황
현재 Eth2 적용은 생각보다 순전히, 별 탈 없이 진행되고 있다. 일단 테스트넷 적용도 어느 정도 진행됐고 (롭스테인, 골리(goerli) 테스트 네트워크에는 반영했음), 현재 네트워크상에 Stake 되어 있는 이더 및 Validator 로 참여하려고 하는 노드들도 적지는 않다. 따라서 7월 내 해당 업그레이드가 진행될 수 있지 않을까라는 생각이 든다. Altair and London Upgrade (7월 예정)
- 진짜 생각보다 도입률(?) 높다..
참고:
- Ethreum.org- Upgrading Ethreum to radical new heights
- Ethereum 2.0 Launchpad
- Beacon-chain Implementation
- Casper : https://www.adiasg.me/2020/03/31/casper-ffg-explainer.html
- https://ethos.dev/beacon-chain/
이상입니다.