백서 읽어주는 남자(eos 백서-2) @leesunmoo

이오스 백서 읽어주는 남자 2번째 포스팅입니다.

이태민님이 번역하시고 조재우님이 감수하신 이오스 기술백서를 제가 가지고 있는 백서를 읽는 능력(?)을 바탕으로 백서를 읽어볼까 합니다. 혹 제가 잘못 이해하는 부분이 있다면 독자분들이 바로 잡아주시길 바랍니다. 그리고 제가 이오스 백서를 읽어드리는 목적은 이오스에 대한 이해를 돕기 위함이지 투자를 권유하기 위함이 아님을 분명히 밝혀둡니다.

@clayop/4v3y72-eos
https://github.com/clayop/Documentation/blob/c71cc095133a3329202776769994bc923cd28a82/TechnicalWhitePaper(Kor).md

@leesunmoo/eos-leesunmoo 에 이어서 계속합니다.

트랜잭션 확인 (Transaction Confirmation)

일반적인 DPOS 블록체인은 100%의 블록 생산자 참여율을 가집니다. 전파(braodcasting) 시간부터 평균 1.5초의 시간이 흐르면 트랜잭션은 99.9%의 신뢰도로 확인(confirm)되었다 판단할 수 있습니다.

일전에 코스모스 블록체인을 개발하는 재권과 스팀블록체인을 개발하던 댄라이머가 슬랙(?)에서 위의 99.9%의 신뢰도 확인 문제를 가지고 100%가 아닌 것은 문제가 아니냐는 대화를 심도 있게 나누고 있다는 것을 지인분이 카톡에서 알려주신적이 있습니다. 당시에는 저도 문제가 없는 건가? 정도의 생각을 했던 적이 있습니다. 그러나 현실적으로 100%의 확률로 라는 말은 자연법칙 이외에 적용 가능한 곳이 있는가 싶습니다. 만일 0.1%의 확률로 내가 발생시킨 트랜젝션이 블록에 담기지 않는다고 해도 트렌젝션이 자동으로 재실행 되지 않는다면 3초 블록타임을 가진 블록체인에서는 그닥 문제가 되지 않습니다. 3초뒤 다시 트랜젝션을 일으켜서 블록에 담으면 되기 때문입니다.(이더리움이라면 이런경우에라도 개스비 지출이 발생하여 사용자가 불필요한 비용을 지불하지만 이오스의 경우에는 수수료가 없으므로 비용차감은 발생하지 않습니다) 요즘 이오스 블록체인과 유사한 스팀블록체인에서 댓글이 사라진다는 말씀의 이야기를 보곤 합니다. 이것은 사라지는것이 아니라 0.1%의 확률로 해당블록에 기록되지 않는 현상으로 짐작됩니다. 또는 블록생산에 실패한 경우일수도 있습니다. 사라졌다기 보다는 트랜젝션을 일으켰지만 아주 낮은 확률로 블록에 올라가지 못한 현상이라고 이해하시면 됩니다.

소프트웨어 버그, 인터넷 속도 저하, 비정상적 블록 생산자와 같은 특수한 상황에서 두 개 혹은 그 이상의 포크가 생성될 수 있습니다. 트랜잭션의 바뀌지 않음(irreversible)을 확정하기 위해서, 노드는 21명의 블록 생산자 중 15명의 확인(confirmation)을 기다릴 수 있습니다. EOS.IO 소프트웨어의 기본 설정에 따르면 보통 상황에서 45초의 시간이 소요됩니다. 기본적으로 모든 노드는 21명 중 15명이 확인할 경우 해당 블록이 바뀌지 않음을 확정하고 블록의 길이와 상관없이 다른 포크로 전환하지 않습니다.

증인이 이오스 블록 생산에 실패한 경우의 문제도 21명의 증인 중 15명의 증인의 확인(3초15명=45초)으로 45초 뒤에는 해결 된다는 의미입니다. 구체적으로 어떤 논리적 정합성이 있는지는 저도 이해는 못하고 있습니다.

노드는 포크가 분기된 후 9초 이내에 속한 노드가 소수 포크(minority fork)에 속해있음을 높은 확률로 사용자에게 알려줄 수 있습니다. 노드가 속한 블록체인에 2개의 블록이 연속적으로 추가되지 않을 경우 95% 확률로 소수 포크에 속하게 됩니다. 3번 연속으로 추가되지 않을 경우 99%의 소수 포크 확률을 가집니다. 블록이 Qkwls 노드, 최근 참여 비율 등의 정보를 토대로 관리자에게 잘못된 상황에 대한 경보를 신속하게 제공하는 안정적인 예측 모형을 만들 수 있습니다.
경보에 대한 대응은 비즈니스 트랜잭션의 성격에 따라 다르며, 가장 간단한 대응 방법은 15/21 확인이 이루어져 경보가 끝나는 시점까지 기다리는 것입니다.

블록체인의 블록생산에서 연속적으로 블록을 생산하지 못할 확률은 이론적으로 매우 낮아진다는 것을 의미합니다. 그렇기 때문에 블록이 연속적으로 추가되지 않을 경우 대처가 가능해서 15명의 증인의 확인이 마무리 되는 시점(45초 후)에는 안정화 된다는 의미입니다.

트랜잭션 기반 지분 증명 (Transaction as Proof of Stake, TaPoS)

EOS.IO 소프트웨어는 모든 트랜잭션이 최근 블록 헤더의 해쉬값을 포함하도록 요구합니다. 해쉬 값은 두 가지 용도로 사용됩니다.

  1. 참조 블록(referenced block)이 포함되지 않은 포크에서 트랜잭션이 재실행 되는 것을 방지합니다.
  2. signals the network that a particular user and their stake are on a specific fork.
  3. 특정 사용자가 가진 자산이 어떤 포크에서 존재하는지 네트워크에 알려줍니다.

시간이 지날수록 모든 사용자는 직접 블록체인을 확인(confirm)하게 되며, 합법적 체인의 거래를 위조 체인으로 옮길 수 없으므로 위조 체인을 만드는 것은 어렵게 됩니다.

이 부분은 저도 명확히 이해하고 있지 못한 부분입니다만, 시간이 지나면서 블록의 숫자가 늘어날수록 위변조는 점점 더 어려워 진다는 의미인 것으로 보입니다. 당연한 이야기 입니다. 블록체인은 오래된 체인이 신생 체인보다 더 가치가 있는 체인인 이유이기도 합니다.

계정 (Accounts)

EOS.IO 소프트웨어는 모든 계정이 2~32글자의 읽을 수 있는 고유 이름으로 참조되도록 합니다. 계정 이름은 생성자가 선택합니다. 모든 계정은 생성되는 시점에 계정 정보를 담는 저장 비용을 초과하는 잔액을 보유해야 합니다. 계정 이름은 네임스페이스를 지원합니다. 예를 들어, @domain 계정의 소유자만이 @user.domain을 생성할 수 있도록 합니다.
탈중앙화 환경에서, 애플리케이션 개발자는 새로운 사용자가 가입하여 계정을 생성하는 최소한의 비용을 부담해야 합니다. 기존의 사업은 이미 광고, 무료 서비스 등 다양한 형태로 고객들에게 상당한 금액을 지급하고 있습니다. 이와 비교할 때 새로운 블록체인 계정에 부담하는 비용은 상대적으로 미미할 것입니다. 이미 다른 애플리케이션에 가입한 사용자의 계정을 중복하여 가입할 필요는 없습니다.

개발자가 아닌 투자자 입장에서 이오스 블록체인을 이해하는데 중요한 이야기가 계정 부분부터 입니다.혹시 이글을 읽으시는 분은 누군가의 비트코인주소나 이더리움 주소를 기억하실 수 있으신지요. 아마도 그렇지 못하실 겁니다. 만일 그것을 기억하신다면 당신의 기억력은 지구촌 상위 0.0001%에 속하실 겁니다. 반면에 저는 누군가의 스팀 계정 주소를 여러개 기억하고 있답니다. 이오스 블록체인의 계정 주소는 스팀 계정주소에서 한발짝 더 발전하게 됩니다.에스케이텔레콤이라는 통신회사가 이오스 블록체인 @skt 계정을 만들고 지금의 티월드 서비스를 스마트컨트렉을 이용해서 이오스 블록체인에서 운영할 수 있습니다. 그리고 고객별로 @leesunmoo.skt 처럼 개별화된 계정을 제공할 수 있습니다. 그런데 이 때 @skt@leesunmoo.skt 계정을 제공하려면 @skt 는아주 작은 계정 생성 비용을 부담해야 합니다.
즉 이오스 블록체인 위에서 작동할 DAPP 개발자들은 사용자를 유치하려면 이오스 토큰을 가지고 있어야만 하는 것 입니다. 그렇기 때문에 댑이 활성화 되면 될수록 이오스 토큰의 수요는 증가하게 되는 것 입니다. 이 부분에서 DAPP 개발자들의 부담이 커지면 누가 DAPP을 개발하겠느냐는 주장이 나올수도 있습니다. 그러나 이미 블록체인이 아닌 인터넷 비지니스를 하는 많은 이들이 광고나 무료 서비스등을 통해 막대한 비용을 부담하고 있습니다. 또한 DAPP 개발자들도 댑이 활성화 될수록 자신의 댑의 수익모델 이외에 자신이 보유한 이오스 토큰 가치가 증가하기 때문에 싫지 않은 상황이 됩니다.

메시지와 처리기 (Messages & Handlers)

한 계정에서 다른 계정으로 구조화된 메시지(structured message)를 전송할 수 있으며, 이를 송신하였을 때 처리하는 스크립트(script)를 정의할 수 있습니다. EOS.IO 소프트웨어는 각각의 계정이 독립된 프라이빗 데이터베이스를 가지도록 하며, 자신의 메시지 처리기만이 접근하도록 허용합니다. 메시지 처리 스크립트에서 다른 계정으로 메시지를 전송할 수도 있습니다. EOS.IO는 스마트 컨트렉트(smart contract)를 메시지와 자동화된 메시지 처리기의 조합으로 정의합니다.

이오스 블록체인 계정간에 메세지를 주고 받을 수 있다는 의미입니다. 또한 메세지가 보관되는 곳이 프라이빗 데이터베이스고 자신의 메세지만 접근을 허용한다는 것으로 보아 비밀 메세지 기능이 제공되는 것으로 짐작됩니다.

이후 부분은 다음 포스팅(eos 백서-3)에서 읽어드리겠습니다

감사합니다.

@leesunmoo 올림

대문 이미지를 제공해 주신 @leesol님에게 감사드립니다.

H2
H3
H4
3 columns
2 columns
1 column
41 Comments