이오스 백서 읽어주는 남자 5번째 포스팅입니다.
이태민님이 번역하시고 조재우님이 감수하신 이오스 기술백서를 제가 가지고 있는 백서를 읽는 능력(?)을 바탕으로 이오스 백서를 읽어볼까 합니다. 혹 제가 잘못 이해하는 부분이 있다면 독자분들이 바로 잡아주시길 바랍니다. 그리고 제가 이오스 백서를 읽어드리는 목적은 이오스에 대한 이해를 돕기 위함이지 투자를 권유하기 위함이 아님을 분명히 밝혀둡니다.
한글 번역된 기술백서 링크-이태민님이 번역하시고 조재우님이 감수하심
@leesunmoo/eos-leesunmoo
@leesunmoo/eos-2-leesunmoo
@leesunmoo/eos-3-leesunmoo
@leesunmoo/eos-4-leesunmoo
에 이어서 계속합니다.
토큰 모델과 리소스 사용 (Token Model and Resource Usage)
모든 블록체인의 리소스는 제한적이며 부당 사용을 막는 장치가 필요합니다. EOS.IO 소프트웨어는 리소스를 크게 세 가지 분류로 나눕니다.
1.대역폭과 로그 저장소 (디스크)
2.연산과 연산 로그 (CPU)
3.상태 저장소 (램)
대역폭과 연산은 즉시 사용과 장기 사용의 2개의 구성요소가 있습니다. 블록체인은 모든 메시지의 로그를 관리합니다. 로그는 저장되며 풀 노드(full node)에 다운로드 됩니다. 메시지의 로그를 통해 모든 애플리케이션의 상태를 재구축할 수 있습니다.
메시지 로그로부터 상태를 재구축하기 위해 수행되는 계산을 연산 부채(compudational debt)라 합니다. 만약에 연산 부채가 과다하게 증가하면 블록체인의 상태의 스냅샷(snapshot)을 저장하고, 과거 이력을 제거할 필요성이 생깁니다. 만약에 연산 부채가 너무 빠르게 증가하면 때론 1년의 트랜잭션을 재현하기 위해 6개월의 시간이 필요할 수도 있습니다. 이는 매우 치명적이므로 연산 부채는 주의 깊게 관리되어야 합니다.
블록체인 상태 저장소는 애플리케이션 로직이 접근할 수 있는 정보입니다. 이는 계정 잔액과 거래 내용 등의 정보를 담고 있습니다. 만약에 애플리케이션이 특정 상태를 읽는 일이 없다면 굳이 저장할 필요가 없습니다. 예를 들어, 블로그 작성 글의 내용과 댓글 내용은 애플리케이션 로직에 의해 읽히지 않으므로 블록체인 상태에 저장할 필요가 없습니다. 반면에 글/댓글의 존재 여부와 투표 횟수 등의 속성값은 블록체인 상태에 기록되어야 합니다.
블록 생산자는 그들이 가용 가능한 대역폭, 연산 능력, 상태 허용량을 알려주어야 합니다. EOS.IO 소프트웨어는 각각의 계정이 3일간 누적한 계약의 토큰 양에 비례하여 자원을 사용하게 허용합니다. 예를 들어, EOS.IO 기반의 블록체인이 출시한 후 한 계정이 배포 가능한 전체 토큰의 1%를 가지고 있으면 해당 계정은 전체 상태 저장소의 1%를 사용할 수 있습니다.
EOS.IO 소프트웨어를 에서 대역폭과 연산 허용량은 일시적(사용하지 못한 리소스를 나중에 다시 쓸 수 없음)이므로 예비 예약 기준으로 할당됩니다. EOS.IO의 알고리즘은 스팀에서 대역폭 사용량의 속도를 제어하는 알고리즘과 유사합니다.
내용은 갈수록 어려워 집니다. 제가 모두 이해하는 것은 제 능력으로는 불가능하구요. 블록체인에 정보를 저장하는 것은 생각보다 많은 비용이 들어갑니다. 그래서 블록체인은 반드시 저장해야만 하는 정보만을 저장합니다. 위 부분에서는 이오스 블록체인의 구동에 있어 매우 핵심적인 내용이 나옵니다.
현 시점에서 플랫폼을 지향하는 블록체인으로 이더리움과 이오스가 있습니다. 이 둘을 구분해 보자면 이더리움은 안드로이드 비슷한 개념이고요. 이오스는 ios 비슷하다고 저는 생각합니다. 이더리움은 이더리움을 가지고 있지 않은 사람도 이더리움에 연결할 댑을 만들수 있고 운영할 수 있습니다. 반면에 이오스는 이오스 토큰을 가지고 있지 않으면 이오스 블록체인에 자신의 댑을 연결해서 구동할 방법이 없습니다. 이오스 블록체인은 공개적이면서 폐쇄적인 블록체인 플랫폼입니다.
이오스 기반의 댑을 운영하려고 할 경우 이오스 블록체인이 출시된 후 한 사업자가 배포 가능한 이오스 전체 토큰의 1%를 가지고 있다면 해당 계정은 전체 상태 저장소의 1%를 사용할 수 있게 됩니다. 즉 사업자는 자신이 가지고 있는 이오스 토큰의 양에 의해 사용할 수 있는 상태 저장소의 양이 결정되는 것으로서 이오스 블록체인에 댑을 연결하려면 이오스 토큰을 구매해야만 하는 거라고 이해하시면 됩니다.
객관적 측정과 주관적 측정 (Objective and Subjective Measurements)
연산 사용량의 계측은 성능과 최적화에 큰 영향을 미칩니다. 그러므로 모든 리스스 사용 제한은 궁극적으로 블록 생산자의 개별적인 측정 방식과 알고리즘에 의하여 주관적으로 이루어져야 합니다.
객관적으로 측정 가능한 것들도 있습니다. 메시지 전달 수와 내부 데이터베이스에 저장하는 데이터의 양은 객관적으로 측정할 수 있습니다. EOS.IO 소프트웨어는 블록 생산자가 객관적 측정을 위한 같은 알고리즘을 적용할 수 있게 합니다. 물론 주관적 측정 방식을 위한 주관적 알고리즘만 적용하게 할 수도 있습니다.
댑 사업자가 사용하는 연산 사용량을 블록생산자인 증인들이 계산하는 방식에는 객관적 알고리즘과 주관적 알고리증이 동시에 적용 가능하다는 이야기 입니다.
수취인 부담 (Receiver Pays)
전통적으로, 사업을 하기 위해서는 오피스 공간, 연산 능력, 그 외의 요소들을 구매해야 하며 여기에서 비용이 발생합니다. 고객이 특정 물품을 구매할 때, 벌어들인 이익 일부는 이러한 사업 비용을 결재할 때 사용됩니다. 고객이 직접 사업 비용을 내지는 않습니다. 비슷하게 생각해보면, 어떠한 웹사이트도 고객이 소액결제를 할 때 호스팅 비용을 요구하지 않습니다. 그러므로, 탈중앙화 애플리케이션 역시 고객으로 하여금 블록체인을 사용할 때 블록체인 사용료를 요구하여서는 안 됩니다.
EOS.IO 소프트웨어는 사용자가 블록체인 사용 비용을 직접 비용을 지급할 필요가 없습니다. 그러므로 사업이 상품의 수익 창출 전략을 제한하거나 막지 않습니다.
전통적으로 사업자가 사업을 할 때 연산 비용이나 오피스 비용, 개발 비용 등을 스스로 부담하듯이 블록체인도 사업자가 아닌 사용자가 사용 비용을 직접 지불하면 안된다는 이야기 입니다. 즉 블록체인의 이체수수료는 0%이어야 한다는 이야기 입니다.
리소스 허용량 위임 (Delegating Capacity)
EOS.IO 소프트웨어를 사용하여 블록체인을 출시하였을 때, 필요한 대역폭보다 많은 토큰을 가지고 있는 소유자를 가정해 봅시다. 해당 소유자는 남은 대역폭을 다른 사람에게 양도하거나 빌려줄 수 있습니다. EOS.IO의 블록 생산자는 이러한 대역폭 허용량의 양도를 인지할 수 있으며, 이에 맞추어 대역폭을 재할당합니다.
이오스 토큰을 가지고 있지만 댑을 운영할 생각이 없는 사람들은 자신의 이오스 토큰이 가진 대역폭만을 필요로 하는 댑 사업자에게 양도하거나 임대해 줄 수 있다는 것으로 이해하시면 됩니다. 즉 이오스 토큰을 보유한다는 것은 단순히 토큰을 가진 것이 아니라 이오스 블록체인의 대역폭을 소유하시는 것입니다. 마치 통신 사업자인 skt.kt.lgt 등이 주파수를 할당받은 것과 비슷한 겁니다.
토큰의 가치와 트랜잭션 비용의 분리 (Separating Transaction costs from Token Value)
EOS.IO 소프트웨어의 큰 장점 중 하나는 애플리케이션에서 필요한 대역폭은 어떠한 토큰 가격과도 독립적이라는 것입니다. 만약에 애플리케이션 소유자가 충분한 양의 토큰을 가지고 있다면, 애플리케이션은 고정된 상태와 대역폭 사용량 내에서 제한 없이 구동됩니다. 개발자와 사용자는 토큰 시장의 가격 변동성에 영향을 받지 않으며, 가격 추이에 연연하지 않게 됩니다. EOS.IO 소프트웨어에서 블록 생산자는 토큰의 가치와 무관하게 자연스럽게 대역폭, 연산 능력, 저장 능력을 향상할 수 있습니다.
EOS.IO 소프트웨어는 블록 생산자가 블록을 생성할 때마다 보상으로 토큰을 제공합니다. 토큰의 가치는 블록 생산자가 구매할 수 있는 대역폭, 저장소, 연산장치에 영향을 줍니다. 이러한 모델은 토큰 가치의 상승을 이용하여 네트워크 성능을 향상합니다.
제가 이오스 매력에 빠지게 한 부분입니다. 스팀 블록체인을 제외한 모든 블록체인의 수수료는 토큰의 가치가 오르면 수수료의 실질 가치도 오르는 구조입니다. 이오스 블록체인은 사업자가 보유한 토큰 수량에 의해 대역폭,연산능력,저장능력등이 결정되는 것이지 토큰의 시장가치의 합에 의해 결정되는 것이 아닙니다. 즉 이오스는 토큰가치가 오른다고 해도 트랜젝션 비용이 증가하지 않게 됩니다.
상태 저장 비용 (State Storage Costs)
대역폭과 연산 능력은 위임할 수 있지만, 애플리케이션 상태가 제거되기 전까지 애플리케이션 상태 저장소 유지를 위한 토큰을 보유해야 합니다. 만약에 상태가 영원히 유지된다면, 해당 토큰은 순환과정을 통해 효과적으로 제거됩니다.
모든 사용자 계정은 어느 정도의 저장 공간이 필요합니다. 그러므로 모든 계정은 최소한의 잔액을 가지고 있어야 합니다. 네트워크의 저장 능력이 향상되면 최소 잔액은 줄어들 것입니다.
이오스 블록체인의 댑을 사용하려면 사용자는 스팀 블록체인이 그러하듯이 최소한의 이오스 토큰 잔액은 가지고 있어야 합니다. 또한 네트워크 저장 능력이 증가할수록 요구되는 최소 잔액은 줄어들게 됩니다. 스팀과 비슷하다고 보시면 됩니다.
블록 보상 (Block Rewards)
EOS.IO 소프트웨어는 블록이 생성될 때마다 블록 생성자에게 보상으로 토큰을 부여합니다. 생성되는 토큰의 양은 블록 생산자들이 제출한 요구 금액의 중앙값으로 결정됩니다. EOS.IO 소프트웨어는 생산자 보상의 총량이 연 토큰 증가분의 5%를 넘지 못하도록 제한을 걸 수 있습니다.
이오스 블록체인은 블록생산자 보상으로 연간 5%이하의 신규 이오스 토큰을 발행하게 됩니다. 이 비율은 블록생산자들이 제시하는 값의 중앙값으로 결정 될 것입니다.
커뮤니티 혜택 애플리케이션 (Community Benefit Applications)
블록 생산자를 선출함과 더불어, EOS.IO 소프트웨어의 사용자들은 3개의 커뮤니티 애플리케이션(스마트 컨트렉트)을 선정할 수 있습니다. 커뮤니티 애플리케이션은 설정된 연간 토큰 공급량에서 블록 생산자에게 지급한 양을 제외한 토큰을 가지게 됩니다. 이 스마트 컨트렉트들이 받는 토큰의 양은 각 어플리케이션이 토큰 소유자들로부터 받은 투표 수에 비례하여 결정됩니다. 선정된 애플리케이션 혹은 스마트 컨트렉트는 토큰 소유자들의 투표 결과에 따라 바뀔 수 있습니다.
이오스 토큰 사용자는 블록생산자로 출마할 수 있고, 블록생산자를 선출할 수 있으며 3개의 커뮤니티 앱을 선정할수 있습니다. 이오스 블록 생산자들이 제시한 값의 중앙값으로 정해진 5%이하의 신규 발행 이오스 토큰 중 일부만 블록생산자에게 지급되고 나머지 토큰은 커뮤니티 애플리케이션들이 받은 투표수에 비례하여 지급받게 됩니다. 이것은 댑 개발자가 이오스 토큰 소유자에게 많은 투표를 받게 된다면 많은 수익을 얻을 수 있게 된다는 것을 의미하며 이오스 기반 댑 사업자의 수익모델이 되는 것입니다. 이오스 댑 개발자는 더 많은 투표를 받기 위해 더 좋은 댑을 개발하는 동기가 됩니다.
이후 부분은 다음 포스팅(eos 백서-6)에서 읽어드리겠습니다
감사합니다.
@leesunmoo 올림