Ch 3. Ethereum Clients
업데이트:
Ethereum Clients
- P2P 네트워크로 서로 통신하는 sw application
- 사양과 표준 프로토콜을 따르면 타 이더리움 끼리도 상호운용 가능
- 다른 팀/언어로 개발되어도 모두 동일한 규칙을 따름
- 이더리움은 오픈소스 프로젝트
- 메이저 client의 소스 코드들은 OSS 라이센스 아래에 사용 가능
- 이더리움은 공식 사양, “Yellow Paper”에 의해 정의
- 비트코인은 공식적인 방법으로 정의되지 않음
- 이더리움은 구현해야할 사양이 명확히 제시되어있음
- -> 독립적 개발된 client들도 대부분 상호운용 가능
- 이더리움은 네트워크에서 실행되는 구현의 다양성이 더 크며, 이는 보안적인 면에서 장점이 있다.
Ethereum Networks
- Yellow Paper에 부합함에도 불구하고 서로 상호운용되지 않을 수도 있는 네트워크도 많이 있다.
- 이더리움 클라이언트 소프트웨어의 관리자가 각 네트워크를 지원하기 위해 작은 변경을 요구하는 기눙/속성을 갖는 경우가 많음
- 이더리움 프로토콜의 6가지 기본 구현
- Rust -> Parity
- Go -> Geth
- C++ -> cpp-ethereum
- Python -> pyethereum
- Scala -> Mantis
- Java -> Harmony
Should I run Full Node?
- Full Node: 블록체인의 가장 첫 번째 블록부터 지금까지의 블록 정보를 모두 다 가지고 있는 노드
- 스스로 거래 검증 가능
- 저장에 소요되는 시간이 김
- 큰 용량이 필요함
- 이더리움 개발에는 mainnet에서 실행중인 풀노드 필요 X
- testnet, Ganache 같은 로컬 사설 클라우드
- Infura같은 서비스 공급자가 제공하는 클라우드 기반 이더리움 클라이언트
- 위의 것들로 대부분의 작업 수행 가능
- Remote client
- 블록체인의 로컬 사본을 저장하지 않음
- 블록 및 트랜잭션의 유효성을 확인하지 않음
- 기존 네트워크에 연결 가능
- 자신의 풀 노드, 공개 블록체인, 공개 또는 허가된 테스트넷
- ex. MetaMask, MyEtherWallet
- Remote client = 지갑 + 그 외의 기능 (ex. web3.js API)
Full Node Advantanges and Disadvantages
Advantages
- 이더리움 네트워크 기반의 복원/검열저항 지원
- 모든 트랜잭션 정식 검증
- 중개자 없이 공개 블록체인의 모든 컨트랙트와 상호작용 가능
- 중개자 없이 컨트랙트를 공개 블록체인에 직접 배포 가능
- 블록체인 상태를 오프라인 조회 가능
- 읽은 정보를 제3자에게 노출하지 않고 가져올 수 있음
Disadvantage
- H/W와 대역폭 자원의 확대가 필요
- 시작시 동기화에 많은 시간 소요
- 동기화를 위해 관리, 업그레이드, 온라인 상태로 유지
Public Blockchain Simulation Advantages and Disadvantages
Advantages
- 훨씬 적은 데이터
- 빠른 동기화
- 무료 테스트용 이더
- live 공개 블록체인
Disadvantages
- 실제 돈을 사용할 수 없음 -> 실전 보안 테스트 불가
- 가스 수수료를 고려하지 않음, 네트워크 혼잡 X -> 실전 만큼 테스트 X
Local Blockchain Simulation Advantages and Disadvantages
Advantages
- 동기화가 없고, 디스크 데이터가 거의 없음
- 첫 번째 블록을 직접 채굴
- 테스트 이더 필요 X
- 다른 사용자는 없고 자신만 있음
- 다른 컨트랙트는 없고 자신이 배포한 컨트랙트만 있음
Disadvantage
- 공개 블록체인과 동일하게 동작하지 않음
- 채굴이 예측 가능 -> 공개 블록체인에서 발생하는 일부 시나리오 테스트 불가
- 모든 것을 자신이 배포해야함
- 시나리오 테스트를 위한 공개 컨트랙트와 주소를 재현 못할 수 있음
Remote Ethereum Clients
원격 클라이언트는 풀 클라이언트의 일부 기능을 제공한다.
- 지갑에서 Private Key와 이더리움 주소 관리
- Transaction 생성, 서명 및 브로드캐스트
- Data payload를 이용하여 스마트 컨트랙트와 상호작용
- 브라우저와 DApp 간 상호 연동
- 블록 탐색기 같은 외부 서비스 링크
- Ether 유닛 변환 및 외부 소스로 부터 환율 검색
- JS 객체로서 web3 인스턴스를 웹 브라우저에 삽입
- 다른 client가 브러우저에 제공/삽입한 web3 인스턴스를 사용
- 로컬/원격 이더리움 노드에서 RPC 서비스로 접근
Mobile(Smartphone) Wallet
- 기본적인 지갑 기능만 제공
- 전체 Ethereum client를 실행하는 데 필요한 자원 충분 X
- Jaxx, Status, Trust Wallet, Cipher Browser
Browser Wallet
모든 기능을 갖춘 DApp 브라우저
- 브라우저의 확장 혹은 플러그인 형태로 사용 가능
- MetaMask, Jaxx, MyEtherWallet, MyCrypto, Mist…
댓글남기기