이더리움과 스마트계약
제 10강 이더리움과 스마트계약1
-
이더리움 출현
- Vitalik Buterin의 이더리움
- 차세대 스마트 계약과 비집중화된 응용 플랫폼
- Vitalik Buterin의 이더리움
-
이더리움 현황
- 현황 및 계획
- Homestead 버전의 시스템이 출시되어 2017년까지 현장에서 운영
- Metropolis(Byzantium)버전 2017년 10월 출시
- Serenity 버전의 시스템 출시 예정
- Serneity 버전에서는 비트코인과 융사한 작업증명 기반의 현재의 채굴과 합의 알고리즘이 소유 증명 기반으로 변경 예정
- 현황 및 계획
-
이더리움 목표
- 이더리움 개발 목표
- 어떤 형태의 비즈니스 계약도 프로그램으로 작성하여 블록체인에 저장하고, 관련 참여자들이 적절하게 계약 프로그램을 실행하고, 실행 결과를 블록체인에 저장할 수 있는 가상 머신 개발
- 스마트 계약 저장과 실행을 위한 World Computer 개발
- 이더리움 개발 목표
-
스마트 계약
-
스마트 계약
-
외부 참여자에 의해 작성되어 블록체인에 저장된 실행 가능한 프로그램
-
자체 계좌(Contract Account)를 가지고, 실행 결과를 블록체인에 저장할 수 있으며, 관련 외부 참여자와 거래(transaction)를 통해 다양한 형태의 통신 가능
-
이더리움 거래의 당사자로 참여(내부 참여자)
-
ex) 에스크로(Escrow) 프로그램
- 구매자는 스마트 계약과의 거래 실행을 통해 스마트 계약의 계좌로 구매대금 지불
- 스마트 계약은 판매자에게 지불 사실 통보
- 판매자는 상품을 전달한 후 스마트 계약에게 통보
- 스마트 계약은 판매자 계좌로 구매대금 이체
-
ex) DAO(Distributed Autonomous Organization)
- 블록체인 상에 스마트 계약으로 작성된 벤쳐 투자 회사
- 2016년 이더리움 재단에서 Solidity로 작성하고 운영(11.5M ETH 규모)
- 투자자 모집, 지분에 따른 권한 배분, 투자금 회수, 투자 프로젝트 결정 등 조직의 모든 운영을 스마트계약 프로그램과 투자자의 거래를 통해 수행
-
-
스마트 계약의 작성
- 외부 참여자가 작성
- 스마트 계약 생성 거래를 통해 블록체인에 저장
-
스마트 계약의 실행
- 외부 참여자가 스마트 계약과의 를
-
-
이더리움 계좌 자료 구조
- 계좌 자료구조
- 넌스
- 잔고
- 저장소루트
- 코드해
- EOA의 주소 추론 과정
- A = keccak256(K)
- keccak256 : NIST가 HSA256 후속 표준인 HSA3을 만들기 위해 제안된 해시 알고리즘
- CA의 주소 추론 과정
- Aca = kecca256(Aeoa+nonce)
- 계좌 자료구조
11강 이더리움 스마트계약2
이더리움 통화
-
ETH의 발행
- 참여자간의 지불 거래와 거래 수수료 지불을 위해 자체화폐(ETH) 발행
- 초기 이더리움 프로젝트 수행 비용 조달을 위해 크라우드 세일(Crowd Sale) 방식으로 72,009,990,49948 ETH 선 발행
- 이후 약 14초 마다 블록 채굴 보상금으로 일정액의 ETH를 계속 발행
- 블록 보상 : 정규 블록 보상 (5ETH → 3ETH), 삼촌 불록 보상(87.5%), 조카 블록 보상(3.125%)
스마트 계약의 실행
- 가스 공급 기반의 거래를 통한 실행
- 거래 실행 시에 실행에 요구되는 명령(instructions)의 종류와 수에 상응하는 비용을 지불
- 자체 통화인 이더(ETH) 기반의 가스 공급(gas fueling) 메커니즘을 거래 실행에 도입
- 이더리움의 거래는 소비할 수 있는 가스 한도를 명시하므로 무한정 많은 량의 가스 소비가 불가능
- 공격자가 무한 루프를 사용한 DoS 공격 시도 불가
- 거래 유형
- 계약 생성 거래(contract creation transaction)
- EOA의 참여자가 Solidity 등으로 계약 프로그램을 작성하여 블록체인에 실장하기 위해 네트워크로 송신
- 채굴자에 의해 처리되어 블록체인에 저장되면 해당 계약 프로그램에 의해 제어되는 CA가 생성되고 CA의 주소가 반환
- 메시지 전송 거래(message transfer transaction)
- 송신자 계좌와 수신자 계좌 간에 메시지를 전송
- 수신 계좌가 EOA인 경우 메시지는 단순히 ETH 통화를 포함
- 수신 계좌가 CA인 경우 CA의 계약 프로그램의 특정 함수를 호출하는 데 필요한 데이터를 추가로 포함 가능
- 계약 생성 거래(contract creation transaction)
- 거래 자료 구조
- 넌스(nonce)
- 가스가격(gasPrice)
- 가스한도(gasLimit)
- 수신자(to)
- 값(value)
- v, r, s(공개키와 주소 복구가 가능한 서명 정보)
- 시작코드(init)
- 데이터(data)
스마트 계약 실행을 위한 가스 공급
- 가스 - 암호 연료
- 이더리움 거래 수수료는 필수로 설정
- 거래 실행에 포함되는 명령의 종류와 수에 의해 결정
- 송신자가 지불한 전체 수수료에서 거래 실행 과정에서 수행되는 명령 마다 필요한 수수료를 사용
- 거래 실행이 안료되면 지불된 전체 수수료 중 명령 수행에 사용된 수수료를 제외한 나머지를 송신자 계좌에 반환