Learning EOS Block Producer(BP) Part 1. Concept of BP

Sonny
EOS Chrome
Published in
9 min readMar 22, 2019

--

EOS 블록 프로듀서에 대해 알아보자

서론

EOS 블록체인 네트워크가 2017년 6월에 출범한 이래 EOS 블록체인 전반에 대한 대중의 관심이 매우 커지고 있습니다. EOS 블록체인을 이해하기 위해 반드시 알아두어야 하는 매우 중요한 개념 중 하나는 바로 블록 생성자, Block Producers (BP)입니다. 도대체 블록 생성자란 무엇일까요? 이름만 보아서 블록을 생성하는 주체임은 확실하나 실제 어떻게 블록 생성자가 역할을 수행하는지, 어떻게 하면 블록 생성자가 될 수 있는지, 블록 생성자의 투표는 어떻게 진행 되는지 이 번 글을 통해 자세히 알아보도록 하겠습니다.

EOS Block Producer 란?

블록 생성자의 구조

BP란 대표적으로 EOS에서 적용한 DPOS 합의 알고리즘을 가능하게 만드는 대표자들이라고 할 수 있습니다. DPOS에서는 21명의 BP들이 모여 대표를 선출하고 그 선출된 대표가 합의를 진행합니다.

상위 BP 21개와 백업 BP 100여개로 이루어져 있으며 DPOS 에서 합의 할 수 있는 권한을 위임 받은 노드들을 말합니다. 상위 BP와 백업 BP는 언제든 변동 가능하고 투표에 따라 언제든 바뀔 수 있습니다. 또한 후보자 BP는 서로 좋은 공약을 내걸고 상위 BP가 되기 위해 노력합니다. 이렇게 상위 BP가 되면 그에 따른 보상을 받을 수 있는 반면에 24시간 동안 블록을 생성하지 못한다면 상위BP자격을 잃을 수 있습니다. 이렇게 선출된 BP는 블록체인을 운영하는 역할을 하고, 누구보다 정직하고 효율적으로 시스템을 운영 해야 합니다. 또한, 혹시라도 있을 모든 경우의 공격과 사건 사고에 대비 할 수 있어야 합니다.

BP- 선출

BP 선출 process

메인넷에 존재하는 많은 노드들 중에 21개의 BP가 되기를 원하는 노드들이 후보자 등록을 합니다. 그 후 BP중재자에 의해 후보들이 상위 BP가 되기에 적합한지 검사한 후 정식으로 후보자 BP로 등록을 진행합니다. 여기서 기본적으로 갖춰야 할 조건으로 현재 블록체인 생태계를 유지 시킬 수 있는 정도의 CPU, RAM등을 확인합니다. 이렇게 후보자BP가 되면 BP는 자신이 내세운 공약에 대해 EOSGO,STEEMIT 등 커뮤니티 사이트를 활용하여 홍보를 합니다. 그러면 투표에 참여 가능한 노드들은 후보자BP의 홍보를 보고 자신의 생각과 맞는 BP를 생각한 후 투표를 진행 하게 됩니다. 매 라운드(126초) 마다 투표율이 갱신 되고 결과에 따라 21명의 BP가 새롭게 선출됩니다.

BP- 투표

EOS의 경우에는 eos를 보유 중인 노드인 경우 누구나 선거에 참여 할 수 있고 1개의 eos당 최대 30개의 투표권을 가집니다 하지만 1개의 eos는 한 BP에 대하여 다중으로 투표가 불가능하고 가지고 있는 eos의 개수만큼 투표권에 대한 파워를 크게 가집니다. 밑에 투표에 대한 예를 설명해 드리겠습니다.

  • 1 eos = 30개 BP 투표 가능 중복 안됨

EX) 투표 해보기

  • 비트는 200 eos를 가지고 있다. 100 eos를 투표권을 행사하기 위해 스테이킹 한다. 비트는 BP 1과 BP 3에 투표한다. BP 1과 BP 3은 둘 다 100 eos의 투표를 받게 된다.
  • 이오는 400 eos를 가지고 있다. 100 eos는 CPU에 스테이킹, 50eos는 네트워크에 스테이킹하여 총 150 eos를 스테이킹 한다. 이오는 BP 1,2,3,4 총 4군데의 BP에 투표 한다.
  • 리움은 100 eos를 가지고 있고, 100 eos전부를 스테이킹 한다. 리움은 BP1에만 투표한다.
  • 리프는 100 eos를 가지고 있지만 스테이킹을 하지 않았다. 리프는 투표할 수 없다.
투표결과

EOS의 경우 투표권을 많이 가지고 있으면서 투표하지 않는 걸 방지하기 위해 투표 파워라는 제도를 도입했습니다. 이 제도는 투표를 많이 할 수 있으면서 일부러 안 하는 것을 방지하기 위한 방법입니다.

Voting Weight table

위 그림을 보면 매 초 마다 weight 줄어드는 것을 알 수 있고, 이 그림을 참고하면 첫 번째 투표한 투표 값 과 1년 뒤 의 투표 값 이 정확이 50% 감소하는 것을 볼 수 있습니다.

투표하는 방법을 알고 싶으면 여기를 참조해주세요!

BP- 공약

EOSYS 공약내용 예시

BP는 자신들만의 공약을 가지고 있는데 이 공약이란? 선거 공약과 비슷하게 생각할 수 있습니다.

후보자 BP는 이 블록체인 플랫폼을 위해 기본적으로 CPU,network,RAM을 얼마나 제공할 것이고 네트워크를 활성화 시키기 위해 어떠한 방식으로 참여 노드에게 잘해줄 것이고 좀 더 편리하고 좋은 환경을 만들겠다 등.. 다양한 방면에서 공약을 내세우고 홍보를 합니다.

BP- 보상

EOS BP보상 프로세스

BP는 블록체인을 운영 ,관리하는 보상으로 1년 동안 발행되는 코인 발행량의 1%를 보상으로 받습니다. 발행된 1%의 자원 중에 25%는 상위 21개의 액티브 BP가 균등하게 나눠 가지고 나머지 75%는 모든BP(상위BP,후보자BP)가 투표율에 따라 배분 받습니다.

EOS BP의 역할 및 기능

BP-블록 생성

EOS의 BP들은 1개의 블록을 0.5초마다 생성합니다. 한 명 의 BP는 자기 차례에 12개의 블록을 생성하고 21명의 BP들이 모두 생산을 마치면 이를 라운드라고 합니다. (한 라운드 6초, 라운드 당 252개 블록 생성, 총 126초)
매 라운드마다 21명의 BP가 투표로 결정되며, 블록 생성을 제대로 하지 않은 BP들은 제외 대상이 됩니다.(24시간내 최소 1개 이상 블록 생성)

블록 생성 과정

BP-권한

BP는 블록에 포함되는 거래를 선택할 수 있는 권한이 있으며, 이용하여 계정을 동결 시킬 수 있습니다. 이를 위해 21명의 BP 중 15명의 투표를 받으면 특정 계정에 대해 동결할 수 있습니다.

이러한 권한을 남용하지 못하도록 ECAF(중재자)를 두어서 ECAF에서 의심이 가는 계정을 동결하라는 지시를 내리면 BP들은 이때 투표를 통해 계정을 동결 시킬 수 있습니다.

ECAF 명령문 발췌

한 사례로 ECAF(중재자)가 출범하면서 계정 동결에 대한 첫 명령문을 발표했습니다. 쉽게 말해 사용자들이 문제점을 발견해 문제점에 대한 권고문 만드는 것이 법을 만드는 입법부와 비슷한 역할을 하는 것이고, 문제점에 대한 내용을 검증하고 판결하는 역할을 하는 것이 ECAF입니다. ECAF는 법을 해석하고 적용하는 사법부 역할을 하는 것이고, ECAF에서 판결한 권고문에 대한 내용을 수행하는 것이 BP들의 역할입니다. BP는 법을 집행하는 행정부의 역할을 수행하는 기관입니다. 다시 사례를 보겠습니다.

계정을 동결 시키게 되면 BP들은 해당 계정을 블랙 리스트 업데이트를 해서 해당 계정에 거래를 전송하지 않도록 관리해야 합니다. 그러나 동결된 계정에 BP가 제대로 블랙 리스트 업데이트를 하지 않아 발생한 사례가 있습니다.

2018년 6월, EOS 블록 2618051에서 3570 EOS가 guzdonzugmge 계정에서 bitfinexdep1 계정으로 전송되었습니다. 문제는 guzdonzugmge계정이 해킹으로 인해 동결된 27개의 계정 중 하나라는 것입니다. 이 사건이 논란이 된 이유는 시스템 오류, 해커의 의한 버그가 아닌 21명의 BP중 eosstore가 동결된 계정을 블랙 리스트 업데이트를 하지 않아서 eosstore의 블록 생성 차례에 전송이 이루어지는 일이 발생한 것입니다. 이 문제로 eosstore는 사용자들의 신뢰를 잃어 eosstore에 투표한 투표권을 사용자들이 회수해 21명의 순위에서 벗어나 21명의 블록 생성자에게 주어지는 보상을 받지 못해 자산 리스크가 발생하게 되었습니다. (현재 2019년 1월 기준 eosstore의 순위는 9위에서 48위로 하락)

BP- RAM 제공

EOSIO를 운영하기 위해서는 BP들은 EOS 네트워크를 유지할 정도의 성능을 갖춘 서버 컴퓨터를 보유하고 있어야 하고, 사용자들에게 일정량의 RAM을 제공해 주어야 합니다. RAM이 필요한 이유는 EOS 를 사용하고자 하는 모든 계정들이 자신의 블록 체인 키, 밸런스, 컨트랙트 상태와 같은 계정 정보 등의 데이터 들을 저장할 공간을 확보하기 위해 RAM이 필요합니다. BP가 제공하는 RAM을 마켓에서 사용자 또는 DApp 개발자들이 필요한 만큼을 구매하여 DApp개발을 하고 거래 데이터를 저장하는 용도로 사용합니다.

  • RAM 구입하는 명령어 (eostoolkit.io)
    $ cleos -u <BPaddress:port> system buyram <내 account> <내 account> '1.0000 EOS'
  • RAM 판매하는 명령어
    $ cleos -u <BPaddress:port> system sellram <내 account> 1024

추가적인 램 구매 및 램 마켓 에 대한 정보를 확인하고 싶으시면 이 링크를 참조해 주세요.

결론

지금까지 EOS 블록체인에서 매우 중요한 개념인 블록 생성자(BP)대해 알아 보았습니다. 블록 생성자 이외에도 ECAF에 대해서 사법부에 예를 간단히 알아 보았습니다. 또한 블록 생성자(BP)가 자신의 역할을 수행하지 못했을 경우 해당 블록 생성자에게 어떠한 불이익이 생기는지 알아 보았습니다.

오늘 살펴본 블록 생성자(BP)를 통해 알 수 있었던 것은 EOS에서 사용자들의 대표로 블록 생성자가 무엇인지, 투표 및 선출 방법, 역할 및 기능에 대해 알아보았습니다. 블록 생성자의 역할 중에는 블록 생성 이외에도 RAM제공,계정 동결이라는 중요한 역할을 할 수 있는 것을 알게 되었습니다. 블록 생성자는 EOS의 중요한 역할로 문제점도 많습니다. 그 중 블록 생성자(BP)의 고착화로 위의 본문 사례와 같이 블록 생성자들이 자신의 역할의 중요성을 잊어 무책임한 행동을 하게 되었다 생각했습니다. 이와 같은 고착화 문제점 이외에도 블록 생성자와 고래 투자자의 담합 등 여러 문제점을 해결하기 위해 많은 노력을 해야 할 것으로 보여집니다.

Team.Sapari

정해민 : kjhm0607@gmail.com
김평주 : vudwn9497@gmail.com
김재민 : jeamin4800@gmail.com
조성연 : tjddusanan@gmail.com

--

--