[크립토벤처스] 이오스 기술 백서 v2 번역.

in #eos8 years ago

안녕하세요, 크립토벤처스 대니얼입니다.

최근 이오스가 급등했다가 조정을 거치고 있는데요, 많은 분들이 세부적인 내용을 궁금해 하셔서 백서 이해 겸 내용을 번역해보았습니다. 기술적인 내용은 다소 생략한 부분이 있습니다만, 정책적인 면은 보다 주의깊게 살펴보았습니다.

DPOS 방식이 제대로 된 탈중앙화가 아니라는 논란은 있습니다만, 이오스의 설계자인 daniel larimer 는 DeX(탈중앙화 거래소), Steemit(소셜 미디어)를 블록체인 상에서 만든 경험이 있어, 실생활에 사용되는 온라인 서비스 입장에서 블록체인에 대한 기술적, 성능적 요구사항을 잘 알고 있습니다. 타 블록체인과는 분명히 다른 에지를 가지고 있어 향후 발전이 기대됩니다.

아울러, TPS 및 이오스에서 협력한 VC 펀드를 통해 이오스 기반의 DAPP을 개발하고자 하는 곳들이 많아졌습니다. 이오스 기반의 DAPP들은 스마트 컨트랙트 적용의 용이성 때문에라도 이오스로 ICO를 진행하게 될텐데요, 작년 상반기 이더리움의 급등을 이끌었던 ICO를 위한 매수세를 기대해볼 수 있을 것 같습니다.

배경.
여러가지의 블록체인 플랫폼들이 탈중앙화된 앱을 지원하려고 노력하고 있지만, 특정 앱을 위한 블록체인(DEX 인 bitshares, 스팀잇등) 역시 수만명의 액티브 유저들을 수용하고 있다. 특정 앱을 위한 블록체인의 경우, 초당 수천 트랜잭션을 처리하고, 레이턴시를 1.5초로 줄이고, 트랜잭션 피를 무료화하고, 기존 중앙화시스템과 유사한 UX를 제공하는 방향으로 발전하고 있다.
현재의 블록체인 플랫폼들은 수수료가 비싸고, 트랜잭션 용량이 낮아 블록체인 기술의 확산에 걸림돌이 되고 있다.

블록체인 앱의 요구사항.

수백만 유저를 지원.
무료 사용 지원 : 기존 플랫폼들은 모든 트랜잭션에 유저에게서 수수료를 수령하는데, 이것은 인터넷 서비스에서 확인할 수 있듯, 무료 사용을 할 수 없게 해서 서비스 확산에 불리하다.
쉬운 업그레이드와 복구 : 블록체인 기반 앱들은 새로운 기능이 추가되곤 하는데, 이때문에 소프트웨어 및 스마트 컨트랙트의 업그레이드가 쉬워야 한다.
빠른 트랜잭션 속도(Low latency) : 비트코인의 경우 트랜잭션이 확정되기까지 30분 가까이 소요된다. 빨라야 유저가 쓸만한 앱이 된다.
순차 처리 성능 : 거래소처럼, 병렬처리가 불가능한 앱이 존재한다. 이 때문에 순차처리 속도가 빨라야 한다.
병렬 처리 성능 : 대용량 앱의 경우 분산처리가 가능한 구조라야 한다.

컨센서스 알고리즘.(BFT-DPOS)
EOS.IO 소프트웨어는 성능 문제를 해결할 수 있는 유일한 컨센서스 알고리즘인 DPOS를 사용한다. 계속되는 보팅 시스템을 통해 토큰 홀더들이 블록프로듀서에게 투표하는 개념이다. 토큰 홀더들을 설득해서 자기에게 투표시킬 수만 있다면 누구나 블록프로듀서가 될 수 있다.
블록은 0.5초마다 만들어지고, 단 하나의 프로듀서만이 해당 블록을 만들 수 있다. 정해진 시간에 블록이 만들어지지 않으면(서버 다운/네트웍 다운등으로), 해당 블록은 스킵된다.
한 라운드는 126 블록이고, 이것은 21 프로듀서가 6개씩 블록을 만드는 주기이다. 각 라운드마다 보팅 순서로 21개의 프로듀서가 선택된다. 이 프로듀서들은 15개 이상의 프로듀서의 동의 아래 스케쥴링된다.
만약, 프로듀서가 최근 24시간동안 블록을 만들지 못했으면, 네트워크에 재개 의사를 밝히기 전까지는 프로듀서 풀에서 배제된다.
정상적인 상황이라면 프로듀서들은 경쟁관계라기보단 협력 관계이기 때문에 포크를 일으킬 동기가 없다. 하지만 만약 포크가 발생한다면, 컨센서스는 자동으로 가장 긴 체인을 택한다. 이 방식은 블록체인에 블록이 추가되는 갯수가 해당 포크에 참여하는 프로듀서의 갯수와 정비례하기 때문에 문제없이 작동한다. 다르게 표현하자면, 더 많은 프로듀서가 참여하는 포크가 더 적은 프로듀서 포크보다 더 빨리 블록을 만들어내고, 그 포크가 더 길기 때문에 네트워크에서 채택된다.
아울러, 프로듀서는 두개의 포크에 동시에 블록을 만들 수 없어야 한다. 이것이 적발되는 프로듀서는 보팅 풀에서 제외시키려 한다. 이 기능이 소프트웨어 내에 내장될 수도 있다.
일반적으로 DPOS에는 비잔틴 폴트 톨러런스를 구현하기 위해 모든 프로듀서가 모든 블록에 사인을 할 수 있게 하고, 동일한 타임스탬프 또는 동일한 블록 넘버에는 사인할 수 없게 한다. 15 프로듀서가 블록에 사인을 마치면 해당 블록은 확정된다. 비잔틴 프로듀서가 되려면 같은 타임스탬프 또는 블록 넘버인 블록 2개를 사인해야 하기 때문에, 배신했다는 암호학적 증거를 남기게 된다. 이 모델 하에서는 컨센서스가 확정되기까지 1초가 걸린다.

트랜잭션 컨퍼메이션
일반적 DPOS 블록체인은 프로듀서 참여율이 100%이다. 트랜잭션은 평균 0.25초 후에는 99.9%의 확률로 확정된다. EOS.IO는 DPOS 에 aBFT(async 비잔틴 폴트 톨러런스)를 더해, 더 빠른 속도로 확정 여부를 판단할 수 있게 하였다. aBFT는 1초 내에 100% 확정이 가능하다.

POS 트랜잭션
EOS.IO 는 모든 트랜잭션이 최근 블록헤더 해시의 일부를 포함하도록 설계되어있다. 이 해시는 두가지 목적으로 쓰인다.

  1. 참조된 블록을 포함하지 않는 포크의 리플레이 방지.
  2. 네트워크에 특정 유저와 그 트랜잭션이 특정 포크에 존재하는지 알려줌.
    시간이 흐름에 따라, 위조 체인이 정상 체인으로부터 트랜잭션을 가져오기 어려워져, 위조 체인을 만들 수 없게 된다.

계정
사람이 읽을 수 있는 글자로 12글자까지 계정명을 허용한다. 어카운트 자체가 토큰을 가져서 스스로의 RAM을 확보하기 전까지는 어카운트 작성자가 RAM을 대신 확보해주어야 한다.
앱 개발자들은 새 계정을 만들어주는 댓가를 지불해야 한다. 전통적인 비즈니스 역시 유저당 큰 돈을 지불하고 있다. 블록체인에서 계정 하나를 만들기 위해 지불하는 비용은 이에 비하면 대단치 않다. 다른 앱을 통해 계정을 만든 유저의 경우, 중복해서 계정 생성비를 지불할 필요는 없다.

액션 & 핸들러
각 계정들은 다른 계정으로 구조화된 “액션”을 보낼 수 있고, 이 “액션”을 받았을 때 처리할 스크립트(액션핸들러라 칭함)를 정의할 수 있다. 시스템에서는 각 계정마다 액션 핸들러에서만 액세스할 수 있는 프라이빗 데이터베이스를 부여한다. 액션핸들러는 다른 계정에 액션을 보낼 수도 있다. 이러한 액션과 액션핸들러의 조합이 EOS.IO 에서 스마트 컨트랙트를 제공하는 방식이다.
병렬처리를 지원하기 위해, 각 계정에서는 데이터베이스 내에 스코프를 정의할 수 있다. 프로듀서들은 스코프에 충돌이 없는 방식으로 트랜잭션을 스케쥴링하여 병렬처리가 가능해진다.

Role 기반 권한 관리.
권한 관리란 특정 액션이 올바르게 권한이 부여되었는지 알아내는 것에 대한 내용이다. 가장 단순한 형태는 한 트랜잭션이 필요한 서명을 가지고 있는지 체크하는 것이다. 보통, 권한은 확실하게 구분 가능한 개인이나 그룹에게 주어진다. EOS.IO 는 선언적 권한 관리 시스템을 제공한다.
인증 및 권한 관리는 표준화된 형태로 비즈니스 로직으로부터 분리될 수 있게 만들어져야 한다.
EOS.IO 는 어떤 키와 계정 조합이 특정 액션을 보낼 수 있는지 정의할 수 있게 한다. 예를 들어, 특정 유저의 소셜 미디어 계정과 거래소 계정에 대해 다른 키를 가질 수 있게 한다. 심지어는 다른 계정에 키를 전달하지 않고 어떤 계정을 대신하여 액션을 할 수 있는 권한을 부여할 수도 있다.
<권한관리 디테일 일부는 생략했습니다>

의무적으로 딜레이를 발생시키는 액션들.
EOS.IO는 앱 개발자들에게 어떤 액션들은 블록에 적용하기 전에 웨이팅 타임을 적용할 수 있게 한다. 이 시간 내에는 유저가 취소할 수도 있게 한다. 유저들은 이런 액션이 발생할 때 이메일이나 문자로 공지를 받는다. 유저가 승인하기 싫은 경우, 복구 프로세스를 밟을 수 있다. 필요한 딜레이 시간은 해당 작업이 얼마나 민감하냐에 따라 달라진다. 커피 값을 지불하는 경우 딜레이가 없을테고 몇초내에 호가정될 것이고, 집을 사는경우 72시간의 정산 시간을 필요로 할 수도 있다. 어떤 계정을 다른 사람에게 이관하는 경우 30일을 적용할 수도 있다. 딜레이 타임은 앱 개발자와 유저들이 정할 수 있다.

도난당한 키의 복구.
EOS.IO는 키를 도난당한 경우 계정을 복구하는 방법을 제공합니다. 계정의 소유자는 과거 30일 동안 유효하던 키와, 소유자가 지정한 계정 복구 파트너의 승인 2가지를 통해 계정의 키를 리셋할 수 있습니다. 계정 복구 파트너는 소유자의 도움 없이는 계정을 리셋할 수 없습니다.
해커는 이미 해당 계정을 컨트롤하고 있기 때문에 이러한 복구 프로세스로부터 이익을 얻을 것이 없습니다. 게다가, 복구 파트너는 신분증과 다중 인증(전화 및 이메일)을 받게 되므로 해커를 오히려 위협하게 됩니다.
이 프로세스는 다중 서명 방식과 매우 다릅니다. 다중 서명 트랜잭션의 경우, 다른 파트너가 모든 트랜잭션에 서명을 하게 됩니다. 이와 대조적으로, 복구 파트너는 복구 프로세스에만 개입하고 일상적 트랜잭션에는 권한이 없습니다. 이 방식을 통해 비용과 법적 책임을 감소시킬 수 있습니다.

병렬처리
2018년 6월 버전의 EOS.IO 릴리즈는 미래에 병렬처리를 염두에 둔 데이터 구조를 가지고 있습니다만, 싱글 스레드로 실행됩니다.
<디테일 일부 생략>

커뮤니케이션 레이턴시 최소화.
레이턴시란, 한 계정에서 다른 계정으로 액션을 보낸 후 응답을 받을 때까지의 시간을 뜻합니다. 목표는 두 계정이 단일 블록 내에서 액션을 주고 받아, 액션 사이에 0.5초를 기다릴 필요가 없게 하는 것입니다. 이를 가능하게 하기 위해 EOS.IO는 한 블록을 사이클로 나눕니다. 각 사이클은 샤드들로 나뉘고, 각 샤드들이 트랜잭션들을 가지게 됩니다. 각 트랜잭션은 액션들을 포함합니다.
한 사이클에서 생성된 트랜잭션들은 다음 사이클이나 다음 블록으로 전달됩니다. 프로듀서들은 블록 타임에 도달할 때까지 사이클들을 블록에 추가합니다.
특정 사이클 내에서 각기 다른 샤드가 같은 계정을 수정할 수 없도록 블록을 분석하여, 샤드들을 병렬처리하도록 만들 수도 있습니다.다.

읽기 전용 액션 핸들러
계정 내부의 상태를 변경하지 않고 패스/실패 형태로 처리하는 액션이 있을 수 있습니다. 이러한 읽기 전용 액션 핸들러들은 사이클 내에 여러 샤드에 포함되어 병렬로 처리시킬 수 있습니다.

여러 계정들과의 아토믹 트랜잭션
어떤 경우에는 액션들이 여러 계정들에게 아토믹하게 전달되는 것이 필요할 때가 있습니다. 이런 경우, 액션들을 한 트랜잭션에 배치하고, 계정들을 같은 샤드에 배치하여 액션을 순차적으로 적용합니다.

블록체인 정보의 부분 추출.
블록체인의 스케일을 늘리려면 각 콤포넌트들이 모듈화되어 있어야 한다. 블록체인의 일부분만 필요한데도 모든 것을 실행하고 있을 필요가 없어야 한다.
거래소 개발자는 유저에게 거래소의 상태를 표시하기 위해 풀 노드를 구동해야 한다. 이 거래소 앱은 소셜 미디어 앱과 연결된 상태 정보는 필요로 하지 않는다. EOS.IO 는 풀노드에서 특정 앱의 정보만 꺼낼 수 있게 한다. 특정 앱이 다른 앱과 관련성이 없는 경우 다른 앱으로 전달되는 액션은 무시된다.

주관적 베스트 이포트 스케쥴링
EOS.IO는 프로듀서에게 다른 계정으로 액션을 보내라고 강제할 수 없다. 각 프로듀서들은 트랜잭션 처리를 위해 필요한 계산 능력과 시간에 대해 기준을 가지게 된다. 이것은 유저가 만든 트랜잭션이든, 스마트 컨트랙이 만들어낸 것이든 마찬가지다.
EOS.IO 기반 블록체인하에서, 모든 트랜잭션은 WASM 인스트럭션 처리 갯수에 비례하는 처리 대역폭 기준으로 과금된다. 하지만 개별 프로듀서들은 자체적 알고리즘이나 측정 방식으로 컴퓨팅 자원 사용량을 계산할 수도 있다. 프로듀서가 트랜잭션이나 계정이 감당할 수 없는 계산 용량이라 판단되면 블록 생성을 거절할 수 있다. 하지만, 다른 프로듀서들이 올바른 블록이라고 판단하는 블록에 대해 트랜잭션 처리는 진행하여야 한다.
보통, 하나의 프로듀서라도 자원 사용 한계 내에서 트랜잭션이 올바르다고 판단하면 다른 모든 프로듀서들도 해당 블록을 받아들이게 된다. 하지만, 그런 프로듀서를 찾는데 1분까지 소요될 수 있다.
어떤 경우에는, 한 프로듀서가 수용가능한 범위를 훨씬 넘어서는 블록을 만들어낼 수도 있다.(하나의 프로듀서만으로도 블록을 만들 수 있기 때문에 해킹의 우려가 있지 않을까에 대한 우려에 대한 처리방안을 얘기함.) 이런 경우, 다음 프로듀서가 블록을 거절하고, 세번째 프로듀서가 1:1 상황을 깨서 이전 블록을 무효화시킨다. 이것은 거대한 블록이 네트워크 전파 딜레이를 일으키는 경우와 동일한 처리 방식이다. 커뮤니티에서는 어뷰징 정황을 발견하고, 이러한 해적 프로듀서들로부터 보팅을 거둬들일 것이다.
계산 비용을 프로듀서들이 개별적으로 계산해내게하는 “주관적인” 방식은, 블록체인이 어떤 걸 계산하는데 들어가는 시간을 계산할 필요를 없애준다. 이러한 설계를 통해 인스트럭션 갯수를 정확하게 셀 필요를 없게 하여, 컨센서스를 깨지 않고 처리속도를 늘려준다.

디퍼드 트랜잭션
EOS.IO 는 나중에 실행할 수 있도록 디퍼드 트랜잭션을 지원한다. 어떤 트랜잭션을 다른 샤드로 옮기거나, 지속적으로 스케쥴링해서 실행해야 하는 긴 프로세스를 만들 수 있다.

컨텍스트 프리 액션
컨텍스트 프리 액션은 블록체인 상태와 관계 없이, 트랜잭션 데이터와만 관계된 액션을 의미한다.
예를 들어 서명 검증의 경우, 트랜잭션 데이터와 서명만을 이용해 트랜잭션에 사인한 퍼블릭키를 알아낸다. 이것은 블록체인에서 처리하는 가장 비싼 계산이지만, 컨텍스트 프리하기 때문에 병렬처리를 할 수 있다.
컨텍스트 프리 액션은 검증을 위해 블록체인의 상태를 액세스하지 않아도 된다는 점을 제외하고는 다른 액션들과 동일하다.
컨텍스트 프리 액션을 통해, 샤딩, 라이덴, 플라즈마, 스테이트 채널등 확장성과 관련한 기술들의 병렬처리를 확대할 수 있다. 이를 통해 효율적인 인터-블록체인 통신을 할 수 있고, 잠재적으로 무한한 확장을 도모할 수 있다.

토큰 모델과 자원 사용
모든 블록체인은 자원에 제약이 있으므로, 어뷰징을 방지할 수 있는 시스템이 필요하다. EOS.IO 를 사용하는 블록체인에 있어, 앱들이 사용하는 자원에는 크게 3가지가 있다.

  1. 대역폭 및 로그 저장소(디스크)
  2. 계산 능력(CPU)
  3. 상태 저장소(RAM)
    대역폭과 계산에는 즉시 사용과 장기적 사용 두가지 관점이 있다. 블록체인은 모든 액션의 로그를 가지고 있고, 풀노드들은 이런 로그를 다운로드 받아 저장한다. 이런 액션의 로그를 가지고 모든 앱의 상태를 재구성할 수 있게 된다.
    계산 부채는 액션로그로부터 상태를 재구성하는데 필요한 계산을 의미한다. 만약 계산 부채가 너무 커지는 경우, 블록체인의 스냅샷을 만들고 과거 히스토리를 버려야 하게 된다. 만약 계산 부채가 너무 빨리 커지는 경우, 1년치의 트랜잭션을 재구성하는데 6개월이 걸릴 수도 있다. 따라서, 계산 부채는 주의깊게 관리되어야 한다.
    블록체인 상태 저장소는 애플리케이션 로직에서 액세스하는 정보이다. 주문 호가정보나 계정 잔고등을 포함하게 된다. 만약 앱이 필요로 하지 않는 정보라면, 저장되지 말아야 한다. 예를 들어 애플리케이션 로직이 블로그의 컨텐트나 코멘트를 읽어들이지 않는다면, 블록체인 상태에 기록되지 말아야 한다. 반면, 포스팅과 코멘트의 존재 여부, 좋아요 갯수등은 블록체인 상태의 일부로서 저장한다.
    프로듀서들은 대역폭, 계산능력, 상태저장소의 용량을 외부에 공개한다. EOS.IO 는 계정들이 3일간의 스테이킹 컨트랙트에 묻어두는 토큰의 양과 비례하여, 이 용량을 활용할 수 있도록 해준다. 예를 들어, EOS.IO 를 이용한 블록체인이 런칭되고, 해당 계정이 1%의 토큰을 갖고 있다고 하면, 해당 계정은 상태 저장소의 1%를 사용할 수 있다.
    사용되지 않은 용량이 미래를 위해 비축되지는 않는다.

객관적, 주관적인 측정.
계산 사용량 측정은 성능 및 최적화에 따라 큰 영향을 받는다. 이 때문에, 자원 사용 제약은 결국 주관적이 될 수 밖에 없고, 각 프로듀서들이 각자의 알고리즘과 추정치를 사용해서 커스텀 플로그인을 코딩하여 처리하게 된다.
어떤 항목들은 객관적으로 측정할 수 있는 것들도 있다. 전송한 액션 수, 내부 데이터베이스에 저장한 데이터의 용량은 쉽게 객관적으로 측정할 수 있다. EOS.IO 는 프로듀서들에게 이러한 객관적 지표 추출을 위한 API를 제공하지만, 주관적 측정에 대해서는 프로듀서들이 각자 알고리즘을 적용할 수 있게 된다.

수신자 지불
전통적으로, 사업체들이 사무실, 서버등 운영비를 지불해왔다. 물품 판매 비용에서 이러한 운영비를 충당해왔던 것이다. 이와 유사하게, 웹사이트들은 방문자들로부터 방문 요금을 받지 않고 있다. 따라서, 탈중앙화 앱들 역시 블록체인 이용료를 받지 않아야 한다.
EOS.IO 는 유저에게서 수수료를 받지 않는 모델을 지원한다.
EOS.IO 는 수신자가 지불할 수 있고, 송신자도 용량에 대해 지불할 수 있다.(수신자가 일반 유저를 의미하고 송신자가 앱 개발사를 의미함) 앱 개발자가 자신의 앱에 가장 들어맞는 방식을 채택하면 된다. 송신자 지불의 경우, 배급제 시스템을 개발하지 않아도 되기 때문에 앱 개발자들의 복잡성을 크게 줄여준다. 앱 개발자들은 대역폭과 계산력을 유저들에게 위임하여, 송신자 지불 모델을 적용할 수 있다. 엔드 유저의 입장에서 이것은 무료이지만, 블록체인의 관점에서는 송신자 지불 모델이다.

용량 위임.
EOS.IO 기반 블록체인의 토큰 홀더로서, 대역폭이 필요하지 않은 경우 대역폭을 다른 사람에게 위임하거나 대여할 수 있다. 프로듀서들은 이러한 용량의 위임을 인식하고 대역폭을 할당해준다.

토큰 가격과 트랜잭션 비용의 분리.
EOS.IO 의 장점중 하나는 앱에 필요한 대역폭의 양이 토큰 가격과 무관하다는 점이다. 앱 오너가 충분한 양의 토큰을 홀드하고 있으면, 앱은 고정된 대역폭을 계속 사용할 수 있다. 이런 경우 개발자와 유저들은 가격 변동성에 영향을 받지 않을 수 있다.
한편, EOS.IO 기반 블록체인은 프로듀서들에게 토큰 가격과 상관없이 자연스럽게 토큰당 대역폭을 늘릴 수 있게 유도한다. EOS.IO 기반 블록체인은 프로듀서들에게 블록 생성마다 토큰을 보상한다. 토큰 가격은 프로듀서들이 구입할 수 있는 대역폭에 영향을 주게 되어, 토큰 가격이 올라가면 자연스럽게 블록체인 퍼포먼스가 올라가게 된다.

상태 저장소 비용
대역폭(하드디스크), 계산능력(CPU)는 위임가능하지만, 상태 저장소(RAM)은 해당 상태가 삭제되기 전까지 앱 개발자가 토큰을 홀드하고 있어야 한다. 상태가 삭제되지 않는한, 그에 할당된 토큰은 유통량에서 제외되는 구조이다.

블록 보상
EOS.IO 기반 블록체인에서는 블록이 만들어질때마다 프로듀서에게 새 토큰을 보상한다. 새로 생기는 토큰 갯수는 다른 모든 프로듀서들의 “희망 급여”의 중간값으로 계산한다. EOS.IO 는 매해 신규 발행량을 5%를 넘지 않도록 설정될 것이다.

작업자 제안 시스템
토큰홀더들은 프로듀서를 선출하는 외에도 커뮤니티에 혜택을 주는 종류의 작업자 제안에 투표할 수 있다. 우승한 제안은 설정한 토큰 인플레이션의 일정 퍼센트를 받게 된다. 제안들은 제안이 요청하는 액수 한도 내에서, 받은 투표에 비례하게 토큰을 배분받는다. 선출된 제안은 새로운 선출 제안에 의해 대체될 수도 있다.
작업자 제안을 구현하는 시스템 컨트랙은 2018년 6월 런칭 시점에서는 포함되지 않을 수 있다. 하지만 펀딩 메카니즘은 포함될 것이다. 프로듀서들이 블록 보상을 받는 시점부터 작업자 제안을 위한 보상도 누적된다. 작업자 제안 시스템은 WASM으로 구현될 예정이므로, 포크 없이 향후에 업데이트 가능하다.

지배구조(가버넌스)
지배구조란, 커뮤니티의 구성원이 아래 내용을 진행하는 프로세스를 의미한다.

  1. 소프트웨어 알고리즘으로 통제하기 어려운 집단적 행동에 대한 컨센서스에 이르기.
  2. 의사 결정 진행
  3. 헌법 개정을 통해 지배구조를 수정하기.
    EOS.IO 기반 블록체인은 현존하는 프로듀서의 영향력을 효과적으로 통제하는 지배구조를 구현한다. 과거의 블록체인들은 정의된 거버넌스 프로세스가 없어, 임시방편의, 비공식적인, 논란이 많은 절차를 거쳐 예측할 수 없는 결과를 내곤 했다.
    EOS.IO 기반 블록체인은 힘을 프로듀서들에게 위임할 수 있는 토큰홀더들의 힘을 인식하고 있다. 프로듀서들은 계정을 잠그고, 결함이 발생한 앱을 업데이트하고, 블록체인에 하드포크를 제안하는 등의 제한적인 권한이 주어진다.
    EOS.IO 에는 프로듀서 선출 프로세스가 내장되어 있다. 블록체인에 어떤 변경이 가해지기 전에는 프로듀서들이 승인해야 한다. 프로듀서들이 토큰홀더가 원하는 변화를 거부할 경우에는 보팅을 철회하여 프로듀서를 제거할 수 있다. 만약 프로듀서들이 토큰홀더의 승인 없이 블록체인을 변경하는 경우, 프로듀서가 아닌 풀노드들(예를 들어 거래소등)이 이 변경을 거절하게 된다.

계정 잠금
스마트 컨트랙이 이상행동을 하거나, 의도와 다르게 실행이 되는경우, 또는 자원을 말이 안되게 소비하는 경우가 있을 수 있다. 이런 이슈들은 발생할 가능성이 반드시 존재하는데, 이런 경우 프로듀서들은 이런 상황을 바로잡을 수 있다.
프로듀서들은 계정을 잠글 수 있는 권한을 가진다. EOS.IO 기반 블록체인에서는 21개의 프로듀서중 15개의 찬성으로 계정을 잠글 수 있다. 프로듀서가 권한을 남용하는 경우 보팅을 철회하여 프로듀서에서 제외시킬 수 있고, 결과적으로 계정을 다시 풀어놓을 수 있다.

계정의 코드 변경.
모든 다른 조치가 실패하여, 어떤 앱을 중단시킬 수가 없는 경우 프로듀서들은 블록체인을 하드포크하지 않고 특정 계정의 코드를 변경해버릴 수 있다. 이 역시 15/21 보팅이 필요하다.

헌법
EOS.IO는 P2P 형태의 이용 약관이나, 사인한 유저들 사이에서의 계약을 행할 수 있도록 지원한다. 이것을 헌법이라 부른다. 헌법의 내용은 코드로만 강제할 수 없는 의무를 정의하고, 관할 기관 및 양측에서 받아들일 수 있는 규약을 선택하여 분쟁을 해결할 수 있도록 하기 위한 것이다. 모든 트랜잭션은 헌법의 해시를 서명의 일부로 포함하여 사인한 사람이 헌법을 받아들였음을 인증시킨다.
또한, 헌법은 소스코드의 작성 의도를 인간이 읽을 수 있는 형태로 정의한다. 이 의도를 통해, 에러 발생시 버그인지 개발 의도인지 알아낼 수 있게 하고, 커뮤니티로 하여금 어떠한 소스코드 수정이 적절한지 아닌지에 대한 가이드를 제공한다.

프로토콜 및 헌법의 업그레이드.
EOS.IO 는 아래와 같은 프로세스를 정의하고 있습니다.

  1. 프로듀서들이 헌법에 대한 개정사항을 제안하고 15/21 이 동의한다.
  2. 프로듀서들이 30일간 개정안에 대해 15/21 동의를 유지한다.
  3. 모든 유저들이 새 헌법을 받아들일 것인지 의견을 표시한다.
  4. 프로듀서들은 헌법의 개정사항을 반영한 소스코드를 도입하고 새 헌법의 해시를 이용하여 블록체인에 제안한다.
  5. 프로듀서들은 새 코드에 대해 30일간 15/21 동의를 유지한다.
  6. 코드에 대한 수정사항은 7일 후에 효력을 발휘하는데, 이는 프로듀서가 아닌 풀노드에게 1주간의 업그레이드 기간을 주기 위해서이다.
  7. 새 코드로 업그레이드하지 않은 모든 노드는 자동으로 셧다운된다.
    IOS.IO 의 기본설정에 따르면, 헌법 개정을 요하지 않는 버그 수정은 1~2개월이 소요되고, 새로운 기능을 추가하는 업데이트는 2~3개월이 소요된다.

인터-블록체인-커뮤니케이션(IBC)
<디테일 생략>

원본은 아래 링크에서 참고하세요.

https://github.com/EOSIO/Documentation/blob/master/TechnicalWhitePaper.md

Coin Marketplace

STEEM 0.04
TRX 0.32
JST 0.088
BTC 61578.51
ETH 1697.55
USDT 1.00
SBD 0.38