Home EOSIO_1
Post
Cancel

EOSIO_1

EOSIO 지원환경 및 계정 권한과 합의 알고리즘

업무를 하며 Smart Contract에 대해서 공부를 하게 될 계기가 있었고 그 때 공부를 한 내용을 정리를 하고자 한다.

EOSIO의 지원환경

EOSIO의 지원환경은 다음과 같다.

  • Amazon Linux 2
  • CentOS 7
  • CentOS 7.x
  • CentOS 8
  • Ubuntu 16.04
  • Ubuntu 18.04
  • Ubuntu 20.04
  • MacOS 10.14 (Mojave)
  • MacOS 10.15 (Catalina)

용어 정리

Block Producer

  • EOSIO 환경에서 블록의 생성 및 블록의 유혀성을 검증해주는 특수한 노드
  • Block Producers는 EOSIO의 다른 노드들에 의해서 선출되는 방식으로 진행 (DPos 합의 알고리즘)
  • 각각의 Block Producer는 EOSIO의 nodeos를 활용해서 EOSIO의 인스턴스를 실행한다.

Staking

  • 암호화폐의 일정한 양을 지분으로 고정시키는 행위
  • 사용자는 자신이 가진 암호화폐를 블록체인 네트워크 운영에 활용할 수 있도록 맡기고, 그 대가로서 수익 보상을 받는 서비스를 말한다.

Staking

  • EOS 코인 전송 및 거래가 불가능한 상태를 말한다.
  • Staking이 된 만큼 CPU와 네트워크의 자원을 활용 가능하다. (1EOS당 30개의 BP에게 투표하는 것이 가능)

Unstaking

  • EOS가 유동성을 가지고 있는 상태로서 EOS 코인 전송 및 거래가 가능한 상태를 말한다.

EOS의 권한 정보

  • Producer Key
    • EOS에 블록을 생성할 때만 사용할 수 있으며 서명할 때 사용하는 키
  • Owner Permission
    • Block producer의 슈퍼유저의 키
    • 이 키를 활용하여 Active Key를 변경이 가능
  • Active Permission
    • Block Producer의 제어키

자세한 사용 예제

EOSIO의 합의 알고리즘

EOS의 합의 알고리즘

  • 1계층 (aBFT)
    • Block의 생성 및 검증하는 단계
  • **2계층 (DPos) **
    • Block Producer를 선정하고 Block을 생성하는 스케줄을 선정하는 단계

여기서 나오는 각각의 과정은 병렬적으로 진행이 된다.

첫번째의 Schedule을 제외하고는 바로 병렬로 실행을 하는 것이 가능하다.

1 계층 : The Native Consensus Model (aBFT)

  • 선출이 된 Block Producer간의 수신 및 동기화된 블록을 최종적으로 합의하여 블록체인에 영구적으로 기록하는 계층을 말한다.
  • 2계층의 결과로서 Producers Schedule을 사용하기 적절한 Producer가 올바르게 서명한 블록을 결정한다.
  • 1계층에서는 이 블록이 현재의 Schedule Set에서 2/3이상의 절대 다수가 검증한 내용인지 확인하는 검증 과정을 2번 거친다.
  • 첫 번째 단계에서 LIB(Last irreversible block)을 선별하고 난 후, 두번째 단계에서 이선별한 LIB를 최종적으로 확인을 한다.
  • 1계층에서는 매 라운드가 시작이 될 때마다 Schedule에 변경 사항이 있는 지를 확인하고 있다면 신호를 보내 2계층으로 보낸다.

BP 블록 생성부터 확정까지 합의 과정

위 그림에서 나오는 각 단계는 다음과 같은 동작을 한다.

  • Propose
    • BP가 블록을 생성하고 다른 BP들에게 블록을 전송 (BroadCasting)
  • Pre-Commit
    • 생성이 된 블록을 BP들에게 전송하기 위해서 BP들끼리 통신
  • Wait for + 2/3 Pre Commitment
    • Pre-Commit 단계에서 ⅔이상이 연결이 되기를 기다리는 단계
  • Commit
    • Pre-Commit 단계에서 전체 BP 인원중에서 ⅔이상이 연결돼 블록을 검증하는 단계
  • Finalize
    • 블록 검증을 전체 ⅔이상이 합의하여 생성된 블록을 확정

2 계층 : Delegated Proof of Stake(DPoS)

  • DPoS 계층은 토큰, 스테이킹(Staking), Voting / proxying, Vote decay, vote tallying, 생산자 순위 및 인플레이션 보수의 개념을 도입한다.
  • 블록 생성자를 투표하는 과정에서 생성된 순위를 기반으로 새로운 Producer Schedule을 생성하는 계층
  • DPoS 과정은 BP(Block Producer)가 블록을 생성하고 서명을 하는데 걸리는 시간 간격인 일정 라운드에서 발생 (약 2분, 126초)
  • BP 당 총 6초 동안 진행이 되며, Producer의 라운드에서는 최대 12개의 블록을 제작 및 서명을 하는 것이 가능하다.
  • DPoS 계층은 WASM(웹 어셈블리) 스마트 계약에 의해 활성화가 된다.
EOS의 DPOS
  • EOS의 block은 0.5초마다 block을 생성하는데 21명의 BP(Block Producer)가 RoundRobin 방식으로 블록을 생성
  • N명의 BP가 한 개의 블록들을 생성하면 i 번째 BP가 i 번째 block에 서명을 진행하는 방식
  • 21명의 BP가 한 라운드 동안 동작하고 각 BP는 6개의 블록을 생성한다고 한다면 한 라운드는 (0.5 * 12) * 21 = 128초가 걸리고 12 * 21 = 252개의 블록이 생성 0.5 : 하나의 블록이 생성되는데 걸리는 시간 (s) 6 : 한 명의 BP들이 6개의 블록을 생성 21 : 총 BP의 수
  • 각 BP들이 자신들의 차례에 블록을 생성하고 생성된 블록을 검증하는 과정을 21명의 BP들이 진행

리팩토링(3)_method 정리

리팩토링(4)_method 정리_2