본문 바로가기

The Kimchi Review/Ethereum2.0

[THE KIMCHI REVIEW] ETH2.0 Launchpad #2

Written by 김지윤. 

 

본 글은 Ethereum 2.0 Medalla 네트워크에 노드로서 참여하기 위한 과정을 다루고 있으며, 크게 계정 생성과 노드 설정 과정에 대해 설명하고 있다. 이미 계정을 생성한 경우 해당 내용을 Skip하기 바란다.

Ethereum 2.0 - Medalla 스테이킹에 참여하기

1. 계정의 생성 및 등록

이더리움 2.0에 실제 스테이킹을 진행하기 위해서는 아래와 같이 크게 5개의 단계가 요구된다.

  1. Overview
  2. Generate Keys
  3. Upload Validator
  4. Connect Wallet
  5. Summary
  6. Transactions

지금부터 한단계 씩 차근차근 진행해 보도록 하겠다.

1.1 Overview

Ethereum 2.0 medalla network에 참여하기 위해 아래의 링크로 진입하여 Overview에 해당하는10단계의 교육을 시작한다

https://medalla.launchpad.ethereum.org/

+ Step 1

Ethereum2.0에 대한 간단한 소개다.

Validator가 되기 위해서는 Ethereum 1.0 체인의 자산을 deposit contract(예치 계약)에 동결해야 한다.

현재 medalla는 goerli 테스트 넷에 deposit contract를 배포해 둔 상황이므로, 1.0 테스트넷상의 이더 자산이 필요하다.

+ Step 2

Validator가 되기 위해서는 32 테스트넷 이더를 예치해야 한다는 내용이며, 해당 이더리움은 돌려받을 수 없다는 것을 명시한다.

+ Step 3

합의과정에 활발하게 참여하는 검증인 만이 리워드를 획득할 수 있으며, Offline 상태일 경우 페널티를 받을 수 있다는 내용이다.

+ Step 4

이전 글에서 언급되었던것 처럼, 검증인이 악의적인 행동을 할 경우, 상당한 량의 페널티를 부여한다는 내용이다.

(이더리움의 연간보상은 약 2~20%로 예상되며, 해당보상은 주로 타 검증인들의 페널티에서 발생하기 때문에 상황에 따라 20%가 삭감될 수도 있다)

 

 

 

+ Step 5

니모닉을 잘 저장하라는 경고이다. 이더리움의 계정은 니모닉으로 부터 파생되어 생성되기 때문이다.

+ Step 6

런치패드를 통해 검증인 키를 생성하게 될것이고, deposit file을 이 사이트에 재 업로드할 것이라는 것을 알려준다.

(deposit파일의 내용은 Ethereum 2.0상의 어떤 계정이 ethereum1.0의 어떤 계정에서 deposit을 진행했는지를 저장하고 있으며, 이 내용은 Ethereum1.0상의 트렌젝션에 포함되어 deposit contract에 저장된다)

 

 

+ Step 7

medalla testnet phase 1에서는 검증인들간의 Asset Transfer기능이 Off 되어있고, 2년정도 이후 deposit을 출금할 수 있다는 내용이다.

 

 

 

+ Step 8

Phase 1까지는 토큰 전송이 중지 되므로, 검증인이 자유롭게 네트워크에 가입/탈퇴 할수 없다는 내용이다.

 

+ Step 9

초기 단계의 네트워크에 참여하기 때문에, 버그 또는 버그로 인한 슬래싱이 발생할 수 있다는 내용이다.

 

+ Step 10

이제 다음을 누르게 되면, 드디어 Ethereum2.0의 계정을 만들 시간이다.

현재 Ethereum2.0에서 계정을 만들기 위해서는 배포된 소프트웨어 툴을 사용하여 터미널에서 작업해야 하기 때문에, 약간의 기술적 지식이 필요하다는 내용이다.

 

1.2. Generate Keys

몇 개의 Validator노드를 운용할 것인지, 어떤 OS에서 운용할 것인지 선택 한다.

(예시에서 우리는 1개 (즉, 32 ETH)를 사용하여 1개의 노드를 운용할 것이다)

 

키를 생성하기 위해서는 이미 배포된 바이너리를 사용하거나, 코드를 빌드하여 사용하는 방식이 있는데,

사용자의 숙련도에 따라 선택하여 실행하도록 한다.

배포된 바이너리 사용하기

  1. https://github.com/ethereum/eth2.0-deposit-cli/releases/ 링크에서 설치파일을 다운로드한다.

2. /deposit --num_validators 1 --chain medalla 명령어를 통해 키를 생성한다.

 

빌드해서 사용하기

  1. https://github.com/ethereum/eth2.0-deposit-cli/releases/ 에서 코드를 다운받는다.

  2. Python환경 설정후, python3 ./eth2deposit/deposit.py --num_validators 1 --chain medalla 명령어를 실행한다.

명령어를 실행시키면 Ethereum 2.0 계정을 만들 수 있다.

(영어를 선택했고, 니모닉을 받아적은 후, 재 입력하는 과정을 거친다)

 

 

니모닉을 재 입력하는 과정을 거치면 아래와 같이 완료 로그가 보인다.

 

 

최종적으로 키스토어와 deposit파일이 생성되었다.

 

이제 이 파일 중 deposit파일을 페이지에 등록할 것이다.

1.3. Upload Validator

 

위에서 만든 deposit파일을 웹사이트에 등록한다.

 

1.4. Connect Wallet

 

이제 Ethereum 1.0에 32이더를 예치해야 한다.

먼제 메타마스크와 연동한 후,

testnet faucet에서 테스트 이더리움을 수령하고, 테스트 한다.

 

테스트 이더리움은 아래 경로에서 요청한다. 자신의 Ethereum 1.0 계정을 포함하는 SNS의 링크를 입력하면 된다.

https://faucet.goerli.mudit.blog/

 

 

 

1.5. Summary

1개의 노드를 돌릴 것이기 때문에 32개의 1.0체인 이더리움이 필요하다

 

 

 

1.6. Transactions

마지막 단계이다. 이제 새롭게 생성된 키에 대한 정보를 가지고 Deposit 트랜젝션을 Ethereum 1.0 deposit 컨트렉트에 보낼 것이다.

 

Start를 클릭하면 메타마스크를 통해 트렌젝션을 전송한다.

 

 

이더스캔에서 트랜잭션을 확인할 수 있다.

 

 

 

 

2. 노드의 설정

이전 리뷰에서 Ethereum 2.0에서는 크게 4개의 클라이언트를 지원한다고 언급했지만

이 글을 쓰는 시점에는 Typescript기반 구현체인 Lodestar까지 포함되어 총 5개의 클라이언트가 지원된다.

https://blog.ethereum.org/2020/08/03/eth2-quick-update-no-14/

먼저 Ethereum2.0 의 노드 구조를 간단하게 이해해야 한다.

약간 오래된 글이긴 하지만 아래 링크에서 그림을 하나 빌려온다

(https://medium.com/coinmonks/eth2-0-phase-0-basics-for-new-contributors-8a0a22bc38c7)

 

 

Beacon Node는 Validator 입장에서 Beacon Chain에 대한 정보를 알려주는 일종의 RPC 역할이라고 이해하는 것이 가장 좋다. 따라서 우리의 Validator Node를 운영하기 위해서는 Beacon Node를 직접 운영하거나, 타 시스템을 빌려 Beacon체인에 접근해야 한다.

https://ethos.dev/beacon-chain/ 에서 Beacon Node에 대해 조금 더 자세하게 이해할 수 있다.

 

위 내용에 따라 우리는 1개의 Beacon Node를 사용하여 여러 Validator Node를 운영할 수 있다.

이제 각 구현체마다 Beacon Node와 Validator Node를 운영하는 방법에 대해 알아보겠다.

 

그 전에, Beacon Node는 Ethereum 1.0 체인의 deposit contract를 읽어야 하기 때문에, ethereum 1.0 테스트 넷이 필요하다. 반드시 노드를 운영할 필요는 없기 때문에, Infura등을 사용하여 RPC경로를 지정해 주길 권장한다.

2.1 Prysm

Golang으로 개발된 클라이언트이다.

가장 적극적으로 빠르게 Ethereum2.0 client개발에 뛰어 들었으며, 기본적으로 Ethereum 개발자들이 golang유저가 많기 때문에 가장 개발단계가 진척되어 있으리라 미루어 짐작이 가능하다.

Prysm개발문서는 아래 링크를 확인 바란다

(https://docs.prylabs.network/docs/testnet/medalla/)

 

Prysm을 가장 쉽게 사용하는 방법은 아래의 명령어를 통해 자동 스크립트를 다운로드 받는 것이다.

curl https://raw.githubusercontent.com/prysmaticlabs/prysm/master/prysm.sh --output prysm.sh && chmod +x prysm.sh

이후 아래의 명령어를 실행하게 되면 beacon-node가 실행된다.

./prysm.sh beacon-chain

해당스크립트는 실행바이너리를 아래와 같이 다운로드 받는다.

비콘 노드를 운영하기전, 우리가 생성했던 Validator key를 노드에 미리 등록해야 한다. 아래의 명령을 사용하여 키를 import한다.

./prysm.sh validator accounts-v2 import --keys-dir=$HOME/eth2.0-deposit-cli/validator_keys

이후 다음 명령어를 사용하면 Beacon-chain이 실행되는 것을 볼 수 있다.

(디폴트 옵션으로 eth1.0 rpc가 infura를 사용하도록 되어있음)

./prysm.sh beacon-chain

 

 

Validator 노드를 실행하기 위해서는 다음 명령어를 이용한다.

./prysm.sh validator

2.2 Lighthouse

Rust로 개발된 클라이언트이다.

최근 많은 체인들이 Rust를 기반으로 개발되고 있으며, Cosmwasm의 영향으로 SmartContract를 Rust로 만드는 일들도 많아 졌다.

Lighthouse 개발문서는 아래 링크를 확인 바란다

(https://lighthouse-book.sigmaprime.io/installation.html)

Lighthouse는 바이너리가 나뉘어 배포되는 prysm과 달리 하나의 실행 바이너리를 사용하며, 옵션으로 Beacon Node와 Validator Node의 동작을 구분한다

소스코드는 다음 링크에서 다운로드 받고, Rust와 Cargo를 설치 후 빌드한다.

https://github.com/sigp/lighthouse.git

빌드가 끝나면, 우리가 생성했던 Validator key를 노드에 미리 등록해야 한다. 아래의 명령을 사용하여 키를 import한다.

./lighthouse account_manager validator import --directory eth2.0-deposit-cli/validator_keys/

이후 다음 명령어를 사용하면 Beacon-chain이 실행되는 것을 볼 수 있다.

(eth1.0 rpc 지정 필요)

./lighthouse beacon_node

 

 

 

Validator 노드를 실행하기 위해서는 다음 명령어를 이용한다.

./lighthouse vc

2.3 Nimbus

Nim으로 개발된 클라이언트이다.

이 클라이언트는 SNT토큰으로 잘 알려진 메신져 개발팀인 Status팀에서 개발한 것으로 보인다.

Nimbus의 개발문서는 아래 링크를 확인 바란다

(https://status-im.github.io/nim-beacon-chain/install.html)

Nim은 make명령어와 함께 빌드된 바이너리가 동작한다.

소스코드를 다음 링크에서 다운로드 받는다.

https://github.com/status-im/nim-beacon-chain

빌드가 끝나면, 우리가 생성했던 Validator key를 노드에 미리 등록해야 한다. 아래의 명령을 사용하여 키를 import한다.

build/beacon_node deposits import --data-dir=build/data/shared_medalla_0 ../eth2.0-deposit-cli/validator_keys/

 

이후 다음 명령어를 사용하면 Beacon-chain이 실행되는 것을 볼 수 있다.

(디폴트 옵션으로 eth1.0 rpc가 infura를 사용하도록 되어있음)

./make medalla

build/beacon_node --network=medalla --log-level=DEBUG --log-file=build/data/shared_medalla_0/nbc_bn_20200805010007.log --data-dir=build/data/shared_medalla_0 --web3-url=wss://goerli.infura.io/ws/v3/809a18497dd74102b5f37d25aae3c85a --tcp-port=9000 --udp-port=9000 --metrics --metrics-port=8008 --rpc --rpc-port=9190

 

Validator 노드를 따로 실행할 필요는 없인다.

2.4 Teku

Java로 개발된 클라이언트이다.

이 클라이언트는 기업 환경에 적합하게 ConsenSys가 주도적으로 개발했다.

Nimbus의 개발문서는 아래 링크를 확인 바란다

(https://docs.teku.pegasys.tech/en/latest/HowTo/Get-Started/Build-From-Source/l)

소스코드를 다음 링크에서 다운로드 받는다.

https://github.com/PegaSysEng/teku.git

빌드 이후 다음 명령어를 사용하면 Beacon-chain이 실행되는 것을 볼 수 있다.

(eth1.0 rpc 지정 필요)

./teku --network=medalla

 

Validator 노드를 따로 실행할 필요는 없는 것으로 보인다.

3. 누가 살아남을 것인가?

DSRV는 4개의 클라이언트를 동일한 지역과 컴퓨팅 성능으로 테스트 해보고 있다.

이제 약 2시간 후면 Genesis File이 생성될 것이다.

과연 어느 클라이언트가 문제 없이 살아남을지 기대가 된다.

+ Kimchi Review #3에서는.

DSRV의 다음 글에서는 이더리움 2.0의 경제 구조 및 Validator관점에서의 Ethereum 2.0에 대한 의미를 서술할 것이다.

dsrv labs Co., Ltd

www.dsrvlabs.com  

 

DSRV

DSRV is a validator and data infrastructure provider for early stage blockchain networks

www.dsrvlabs.com



출처: https://dsrv.tistory.com/2?category=418226 [DSRV]

'The Kimchi Review > Ethereum2.0' 카테고리의 다른 글

[THE KIMCHI REVIEW] ETH2.0 Launchpad #1  (0) 2020.08.07