안녕하세요, 대한민국의 EOS Block Producer 후보 EOSYS 팀입니다.
EOS.io 기반의 블록체인은 어떤 과정을 통해 구축되고, BP는 어떻게 선출될까요? 그 과정과 방법이 아직 명확하게 나오지 않아 많은 분들께서 궁금해 하고 계신데요, 이번 글에서는 그 과정을 파악하는 데 조금이나마 도움이 될 만한 글을 번역해 보았습니다. 지난 3월 block.one 의 엔지니어 Thomas Cox가 EOS.io 공식 블로그에 올린 Once Upon a Time: BIOS Booting an EOSIO blockchain 라는 제목의 포스트로, EOS.io 기반 블록체인의 BIOS가 어떻게 부팅되는지 기술한 글입니다. 기술적 요소가 포함되어 있어 EOS 를 처음 접하신 분들께 다소 난해할 수 있으나, 전체 흐름이 담겨 있어 파악해 두시면 앞으로의 과정들을 이해하는 데 유익하시리라 생각합니다.
EOS 커뮤니티에서 토론을 거치면서, EOS 소프트웨어의 부팅 순서(sequence)는 아래 내용(제가 커뮤니티의 공통된 의견을 이끌어 내기 위해 제시하는)대로 진행될 것으로 보입니다(단 실제로 어떤 일이 발생하고 어떤 소프트웨어 기능이 추가될지에 대해서는 어떤 것도 보장하지 않습니다).
0 단계: Pre-Boot(사전 부팅)
Go-Live(라이브)에 앞서, 블록 프로듀서(이하 BP) 커뮤니티는 그들 멤버 중 가장 뛰어난 기술을 보유하고 Go-Live Pool 에 자원할 의사가 있는 정족수를 파악(identify)할 것입니다. 목표 정족수는 50인으로 제안되었습니다.
Go-Live 바로 직전에, Pool의 멤버들은 무작위 선정 기술(*)을 이용해 멤버 중 22인의 멤버를 선정하여 Go-Live팀을 구성할 것입니다. 그 후, DDOS와 그 외 다른 공격으로부터 저항할 수 있도록 높은 보안의 상호 VPN(mutual VPN)을 연결합니다. 구성원 목록을 게시(publish)할 것이지만 당장은 아닙니다.
EOS 토큰 배분(distribution)의 기한은 2018년 6월 2일 22:00(UTC기준)에 종료됩니다(한국 시각으로 6월 3일 07:00). 이 시점에 EOS의 ERC-20 토큰은 동결될 수 있고(can be frozen), 최초로 생성된 EOS 잔고의 정확한 스냅샷을 포함하는 EOS.IO 소프트웨어 기반의 블록체인이 만들어지게 됩니다.
22인의 Go-Live팀 중 15인에 의해 최초 잔고의 스냅샷이 찍히고 검증이 되면(이들은 외부 검증을 위해 이 내용을 게시할 것입니다) 이들은 한번 더 무작위 선정 기술을 사용해 그들 중 1명을 BIOS 부트 노드(Boot node)로 선정할 것입니다. 선정된 멤버는 이제 BIOS 부트 과정(Boot process)에만 쓰일 EOS의 새 키페어(keypair)를 생성합니다.
(*) 무작위 선정 기술은 감사(audit)를 위해 추후 공개될 것입니다.
1단계: BIOS Boot(BIOS 부트)
- 단 하나의 BIOS 부트 노드(Boot node)는 제공된 제네시스 블록(Genesis Block)을 포함한 배포된 소프트웨어를 통해 체인을 준비(bootstrap)하여;
가장 첫 블록을 생성합니다.
BIOS 부트를 위해 새로 생성된 EOS 키페어를 사용하는 시스템 계정(system account)을 통해 코어 오퍼레이션 컨트랙트(core operation contract)를 설치합니다.
첫 선거를 치르기 위해서 21명의 ABP(Appointed Block Producer; 지정된 BP) 리스트를 임명합니다. 이 21명의 리스트는 Go-Live팀의 다른 멤버들로 구성됩니다.
BIOS 부트 노드는 21 ABP들에게 최초 선거에 필요한 만큼의 시스템 파워를 할당합니다. 그리고,
마지막으로 모든 시스템 권한(system authorities)으로부터 부트 노드의 키를 제거합니다. BIOS 부트 노드는 이제 쓸모가 없어진 그의 개인 BIOS 부트 키를 공개(publish)하며, 이에 따라 타인이 부트 노드의 작업을 감사(audit)하거나 다시 만들어낼 수 있습니다.
2단계: 지정된 BP(ABP;Appointed Block Producers)
ABP들은 체인 초기 시스템의 계정 설정과 잔고를 연결하고 검증합니다. 그리고 블록을 생성하기 시작합니다. 그 다음, BIOS 부트 노드가 BP 후보자 pool로 돌아갑니다(BIOS 부트 노드는 이후 선출된 BP들(EBP)에 의해 이루어진 10라운드 블록 생성 이후에야 선거 자격이 생깁니다). 싱글 노드 블록체인의 경우 이 과정의 총 소요 시간은 9초 미만입니다. 21 ABP가 가시화되고 체인을 작동시키기 시작하면 참여자들은 연결이 가능합니다.
나머지 Go-Live Pool의 참여자들은 스스로 선거에 참여할 BP 후보로 나서고 연결할 수 있습니다.
토큰 홀더들은 투표를 위한 토큰을 연결하고 stake(지분 증명)할 수 있으며 BP의 선거에 투표권을 행사할 수 있습니다.
ABP는 BIOS BP처럼 선거에 자격이 없으며 그들의 유일한 역할은 선거를 여는 것입니다. 그들의 자리는 선출된 21BP들(EBPs: Elected BPs)로 대체됩니다. 이 선거에서 21 EBP는 단일 그룹으로 만들어져야만 현재 작동하는 체인으로 전환될 수 있으며, Go-Live Pool에 남아있는 BP들이 연결되기 위해서는 몇 차례 라운드(round)를 거쳐야 할 것입니다. 다른 BP 후보자들도 연결하여 운영에 참여할 수 있습니다. (BIOS 부트 BP와 같은 ABP들은 21 EBP가 10 라운드 동안 성공적으로 블록생성을 완료할 때 까지 선거 자격이 없습니다)
3단계: 선출된 BP들(Elected BPs)
- EBP는 이제 ‘보통의’ 트랜잭션을 처리하기 시작하고, 1라운드 당 1BP를 선출하는 무기한으로 시행되는 선거를 실시함으로써 블록체인의 심장 역할을 하기 시작합니다. 10라운드 이후로는 하나의 EBP가 이전의 ABP나 이전의 BIOS BP 또는 새로운 경쟁자로부터 대체될 수 있으며, 유권자들이 처음으로 서로 연결되어 진행되는 첫 투표의 몇 시간/몇 일 동안은 어느정도의 혼란이 있을 것으로 예상합니다.
4단계: 헌법 Zero
여기서부터 #0 이라는 번호가 붙은, 기본 헌법을 대체하는 새 단계로 진입합니다 — 이 단계는 좀 더 오랫동안 지속됩니다.
이 단계에서, 지분(stake) 보유자라면 누구든지 언제든지 기본 헌법을 대체하기 위한 제안을 제시할 수 있습니다.
제안된 각 헌법은 준비된 소프트웨어 알고리즘을 통해 모든 지분 보유자로부터 투표를 받을 수 있습니다.
하나의 헌법은 아래와 같은 조건이 충족될 경우 #1(제1)헌법이 됩니다:
과반수에 도달(활성화된 계정들이 총 지분의 50%보다 클 경우)하고 이것을 15일간 유지하거나
30일 동안 leading position을 유지합니다.
5단계: 검증
유효성이 검증될 때 까지는 계정 간에 어떤 토큰도 전송될 수 없으며 어떤 블록 보상도 지급될 수 없습니다. 검증은 아래의 경우에 발생합니다.
- 총 EOS 잔고 중 계정들의 잔고 도합이 15% 또는 그를 초과하여, 네트워크에 연결되고 트랜잭션 검증을 수행할 때. 그리고
- #1(제 1) 헌법이 선택될 때.
면책조항
block.one은 소프트웨어 회사로, 무료 오픈소스 소프트웨어인 EOS.IO를 제작합니다. 이 소프트웨어는 위에서 언급된 기능들을 포함하는 블록체인이나 탈중앙화 어플리케이션을 출시하려는 이들의 배포를 가능하게 합니다. block.one은 EOS.IO 소프트웨어 기반의 블록체인을 출시하지는 않게 될 것입니다. 블록체인의 출시는 여러 기능들을 적용하거나(하고) 위에서 언급된 서비스들을 제공하여 블록 프로듀서가 되기 위한, 스스로 적합하다 여기는 서드파티 참여자들과 커뮤니티의 역할입니다. block.one은 기능 구현과 서비스 제공, 또는 EOS.IO 소프트웨어가 어떠한 방식으로 적용되고 배포되어도 어떤 것도 보장하지 않습니다.
이 문서에 담긴 내용 중 역사적 사실 외에 block.one의 사업 전략, 계획, 프로젝트, 개발, 목적에 관한 모든 내용은 앞으로의 전망일 뿐입니다. 이들 성명은 단지 block.one 예측일 뿐이며 현재 단계에서 미래에 대한 믿음과 기대를 반영, 추정을 기반으로 하며 위험과 불확실성의 영향을 받으며 언제든 변경될 수 있습니다. 우리는 급변하는 환경 속에서 일하고 있습니다. 새로운 위험들이 계속해서 생겨납니다. 우리가 마주하게 되는 여러 위험과 불확실성으로 미루어 보아, 여러분은 이 전망들을 신뢰함에 있어 주의할 필요가 있습니다. 실제 결과나 퍼포먼스, 사건들은 얼마든지 전망과 크게 달라질 수 있습니다. 시장의 변화, 자본과 금융과 인력의 지속 가능성, 프로덕트의 검수, 새로운 프로덕트, 기술의 상업적 성공, 시장경쟁, 정부의 규제와 법, 일반적 경제 요인, 시장과 비즈니스의 조건 등 block.one이 말하는 모든 미래에 대한 전망은 작성된 날짜를 기준으로만 말하고 있으며 이것을 업데이트하거나 변경할 의무가 없고, 새로운 정보를 통한 결과나, 그 이후의 사건, 기타 결과들에 대해서 책임이 없습니다.
위 내용 만으로 모든 과정을 이해하기에는 많은 무리가 있지만, 글로 정리된 내용인 만큼 파악을 하고 계시면 추후 mainnet이 어떻게 작동하는지 좀 더 쉽게 이해가 되실 것입니다. 앞으로도 저희 EOSYS팀은 여러분께 도움이 될 만한 유익한 컨텐츠를 제공할 수 있도록 노력하겠습니다. 궁금한 점이나 토론하고 싶은 이슈가 있으시면 언제든 저희 EOSYS 텔레그램 채널에 오셔서 저희와 함께 생태계 발전에 함께해 주시길 바랍니다.
감사합니다.
EOSYS 팀 드림
Website: http://eosys.io
Medium: https://medium.com/@eosys
Steemit: https://steemit.com/@eosys
Twitter: https://twitter.com/@EOSYS_IO
Telegram (영문): https://t.me/EOSYSIO
Telegram (한글): http://t.me/EOSYSIOKR
암호화폐 백서를 읽으면서, 기술자들이 기술한 것이라 이해하기가 너무 힘들었고, 현재도 그러합니다. 한국 이오스팀에 문과출신이 절대적으로 필요합니다. 중학생이라도 이해할 수 있는 수준의 설명을 할 수 있는 능력자를 초빙하십시오. 엔지니어 만으로는 소통에 항상 문제가 잇을 것이라 봅니다.
그러게요. 외계어 같네요. 어필 할려면 쉽게...
이건 그냥 코딩 풀어 놓은 합니다.
말씀 주셔서 정말 감사드립니다. 블록체인 구축과 BP선정에 있어서 모든 과정이 전부 명확하게 드러나면, 저희 EOSYS가 한 번 정리를 해서 쉽게 포스팅 할 예정입니다. :) 이번 글은 단편적으로 쏟아지는 정보 중 하나를 최대한 원문 그대로 전달해 드리고자 번역한 내용입니다. 앞으로 더욱 도움이 되는 내용을 보여드리도록 하겠습니다.
하나의 슈퍼컴퓨터를 구동하기위해서...
부팅의 시간이 다가오네요
기대하며 기다리고 있습니다. :)
EOS 가즈아아아아 EOSYS팀 화이팅입니다용!
감사합니다 ribai님!
EOS 초기과정에 대해 자세한 기술이 되어 있는 글 소개 감사합니다. 마지막 면책조항 부분에선 역시 아직 진행중인 기술인 만큼 그 만큼 위험성?도 감수해야 한다는 것을 다시한번 일깨워 주네요 ^^
네 맞습니다. 엄밀히 말해 많은 내용들이 아직 구현된 상태가 아니니까요 ^^