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…

Reference

카테고리:

업데이트:

댓글남기기