‘이더리움 댑 개발’ 세미나 보조 교재 – 이더리움 디앱 개발(Building Ethereum Dapps) 3부

이번 보조 교재 같이 읽기는 3부. 다양한 이더리움 생태계 입니다.

  • 9장. 이더리움 생태계
  • 10장. 모카로 컨트랙트 단위 테스트하기
  • 11장. 트러플로 개발주기 단축하기
  • 12장. 투표 디앱 개발하기: 총정리

9장. 이더리움 생태계

그림 9.1에 표현된 요소들과 그들 사이의 관계를 설명해 봅니다.

그림 9.2에 추가적으로 표현된 요소들과 관계들에 대해 설명할 수 있어야 합니다. 특히 추가 인프라 요소들에 주의를 기울입니다.

  • ENS(Ethereum Name Service)
    • 0x829bd824b016326a401d083b33d092293333a830와 같은 이더리움 주소는 사람이 쉽게 읽고 기억하기에 쉽지 않습니다. ENS는 이더리움 주소를 roberto.manning.eth와 같이 사람이 쉽게 읽고 기억할 수 있는 도메인 형태로 사용할 수 있도록 하는 컨트랙트 입니다.
  • 스웜, IPFS
    • 탈중앙화 스토리지
    • 스웜은 이더리움 기반입니다. IPFS는 특정 블록체인에 종속되지 않고 유사한 기능을 제공합니다.
    • 스웜은 이더리움 댑에 탈중앙화된 스토리지 제공을 목표로 하는 컨텐츠 배포 플랫폼입니다.
      • 스웜에서 스토리지는 P2P 네트워크로 탈중앙화 되어 있습니다.
      • 이더리움 블록체인 트랜잭션에서 해시 id나 ENS를 활용한 읽을 수 있는 이름으로 참조할 수 있습니다.
      • 그림 9.7, 9.8, 9.9, 9.10을 설명할 수 있도록 합니다.
  • 위스퍼
    • 탈중앙화 메시지 네트워크입니다. 이더리움 스마트 컨트랙트에서 발생할 수 있는 장애에 강하고 프라이버시 보호가 주요 특징인 비동기 P2P 통신입니다. 위스퍼 API를 사용하면 컨트랙트에서 메시지를 보낼 때 추적 가능한 평문에서 추적 불가한 암호문까지 다양한 수준의 보안 및 개인 정보를 보낼 수 있습니다.
  • 오라클 프레임워크
    • 실세계 데이터(off-chain data)를 인증되고 일관되게 사용할 수 있도록 하는 컨트랙트 프레임워크입니다.
      • 예) Oraclize

 

ENS

  • 마침표로 구분되어 계층적으로 구성됩니다.
    • 마침표로 구분되는 도메인 이름의 각 부분을 레이블이라고 합니다.
    • 주소 뿐만 아니라 스웜 컨텐츠 해시와 같은 다른 리소스에도 사용할 수 있습니다.
    • 서브도메인.도메인.루트도메인 형태로 작성됩니다.
      • eth – 이더리움 메인넷, test – 이더리움 테스트넷, swarm – 스웜
    • 레지스트라(registra), 리졸더(resolver), 레지스트리(registry)가 주요 구성요소 입니다. 그림 9.5, 9.6와 표 9.1을 설명할 수 있어야 합니다.
      • 레지스트라
        • 도메인 소유권을 관리하는 컨트랙트입니다.
      • 리졸버
        • 도메인 이름을 리소스 식별자로 변환하는 컨트랙트입니다.
      • 레지스트리
        • 도메인 이름과 도메인 리졸버 매핑입니다.
  • 도메인 이름 등록
    • ENS 자바스크립트 유틸리티 라이브러리를 다운로드 합니다.
    • 테스트넷 네트워크에 도메인을 등록하려면 ensutils-testnet.js를 사용합니다.  자바 스크립트를 로드합니다.
    • 만기일을 확인함으로 도메인 소유권이 등록되어 있는지를 확인합니다.
        • manning 도메인이 테스트넷에 등록되어 있는지를 확인하는 예입니다.
        • domainExpiryDate가 오늘보다 이전이면 해당 도메인을 사용할 수 있습니다.
    • 도메인 소유권 등록을 요청합니다.
      • testRegistrar의 register 함수를 사용해서 소유권 등록을 요청합니다. 
        • 어떤 도메인을 어떤 계정이 소유하는 것으로 등록할 것인지
    • 도메인 소유권 등록 요청 트랜잭션이 채굴되면 도메인을 리졸버(컨트랙트 주소)에 매핑합니다.
    •  트랜잭션이 채굴되면 리졸버에 주소를 설정합니다.
    • 서브 도메인을 등록합니다.
      • 레지스트리로 서브 도메인 소유권을 등록합니다.
      • 도메인과 리졸버를 매핑합니다.
      • 도메인 이름을 대상 주소와 연결합니다.
    • 도메인 이름을 주소로 변환합니다.
        • 다음과 같이 할 수도 있습니다.
          • getAddr(domainName);
    • 메인넷 도메인은 commit-reveal 입찰로 등록할 수 있습니다.

 

오라클로 외부 데이터 접근하기

오라클에 기반하여 데이터를 공급하는 솔루션의 주요 구성요소는 다음과 같습니다.

  • 컨트랙트
    • 데이터를 가져오기 위해 쿼리를 실행합니다.
  • 오라클
    • 컨트랙트와 데이터 공급자를 연결합니다. 쿼리를 보내고 조회된 데이터를 받아 컨트랙트에 보냅니다.
  • 데이터 소스
    • REST API, 레거시 웹 서비스, 온라인 랜덤 생성기, 온라인 계산기 등이 사용될 수 있습니다.
  • TLSNotary
    • 온라인 데이터의 암호화 증명을 생성합니다.
  • IPFS 저장소
    • 필요할 때 오프 블록체인에서 검증하기 위해 반환된 데이터가 진위 증명과 함께 저장됩니다.

그림 9.15를 설명할 수 있도록 합니다.

10장. 모카로 컨트랙트 단위 테스트하기

이미 세미나에서 다룬 내용들이므로 건너뛰어도 됩니다.

11장. 트러플로 개발주기 단축하기

대부분 이미 세미나에서 다룬 내용이므로 아래 정리한 내용만 확인하고 넘어가도 됩니다.

  • 컨트랙트 배포 계정을 명시하고 싶을 때
    • networks의 개별 네트워크 설정에서 from에 배포 주소를 명시합니다.
        • 명시하지 않은 경우 account[0]을 사용합니다.

 

12장. 투표 디앱 개발하기: 총정리

세미나를 통해 학습한 내용을 기반으로 본문 내용을 참고해서 직접 투표 댑을 개발해 봅니다.

About the Author
(주)뉴테크프라임 대표 김현남입니다. 저에 대해 좀 더 알기를 원하시는 분은 아래 링크를 참조하세요. http://www.umlcert.com/kimhn/

Leave a Reply

*