이오스 백서 읽어주는 남자 7번째 포스팅입니다.
이태민님이 번역하시고 조재우님이 감수하신 이오스 기술백서를 제가 가지고 있는 백서를 읽는 능력(?)을 바탕으로 이오스 백서를 읽어볼까 합니다. 혹 제가 잘못 이해하는 부분이 있다면 독자분들이 바로 잡아주시길 바랍니다. 그리고 제가 이오스 백서를 읽어드리는 목적은 이오스에 대한 이해를 돕기 위함이지 투자를 권유하기 위함이 아님을 분명히 밝혀둡니다.
한글 번역된 기술백서 링크-이태민님이 번역하시고 조재우님이 감수하심
@leesunmoo/eos-leesunmoo
@leesunmoo/eos-2-leesunmoo
@leesunmoo/eos-3-leesunmoo
@leesunmoo/eos-4-leesunmoo
@leesunmoo/eos-5-leesunmoo
@leesunmoo/eos-6-leesunmoo
에 이어서 계속합니다.
스크립트와 가상 머신 (Scripts & Virtual Machines)
EOS.IO 소프트웨어는 인증된 메시지를 계정으로 전달하는 과정을 조정하는 최초이자 가장 중요한 플랫폼입니다. 스크립트 언어와 가상 머신(virtual machine)의 세부 내용은 EOS.IO의 기술 설계와 독립적인 세부 구현 사항입니다. EOS.IO 소프트웨어 API를 이용하여 어떠한 언어나 성능을 보장하는 샌드박스 처리되며 결정론적으로 동작하는 가상 머신을 통합할 수 있습니다.
기술적인 언급이 많은 부분입니다. 느낌상 이오스 블록체인은 이오스만의 스마트컨트렉이 있고 이더리움에서 운영되고 있는 EVM 스마트컨트렉도 이오스 블록체인 위에서 작동 가능하게 된다는 것으로 이해됩니다.
스키마 정의 메시지 (Schema Defined Messages)
계정 간의 모든 메시지는 블록체인 합의 상태의 일부인 스키마(schema)에 따라 정의됩니다. 이 스키마는 바이너리와 JSON 형식의 메시지의 경계 없는(seamless) 대화를 허용합니다.
스키마 정의 데이터베이스 (Schema Defined Database)
데이터베이스 상태는 유사한 스키마를 이용하여 정의됩니다. 모든 애플리케이션에서 저장되는 모든 데이터는 사람이 읽을 수 있는 JSON으로 처리될 뿐만 아니라 효율적인 바이너리 형태로 저장 관리됨을 보장합니다.
애플리케이션과 인증 분리 (Separating Authentication from Application)
병렬 처리 효율의 극대화와 트랜잭션 로그에서 애플리케이션 상태(state)가 재생성될 때 발생하는 과다 연산을 최소화하기 위하여, EOS.IO는 인증 방법(authentication logic)을 세 가지로 분리합니다.
1.메시지의 내적 일관성(internal consistency) 검증
2.모든 전제 조건의 유효성 검증
3.애플리케이션 상태의 변경
메시지의 내적 일관성 검증은 읽기 연산으로만 구성되며, 블록체인 상태에 대한 확인을 요구하지 않습니다. 이는 최대한의 병렬성을 가질 수 있음을 뜻합니다. 요구불 잔액 확인과 같은 전제 조건의 유효성 검증 역시 읽기 연산만으로 구성되며, 병렬 처리의 이점을 가지게 됩니다. 오직 애플리케이션 상태 변경만 쓰기 연산을 해야 하며, 각각의 애플리케이션마다 순차적으로 처리되어야 합니다.
인증(authentication)은 메시지의 적용 가능 여부를 검증하는 읽기 연산 작업입니다. 애플리케이션은 실제 작업을 수행합니다. 두 가지 계산은 실시간으로 수행되어야 하지만 트랜잭션이 블록체인에 포함되었다면 더 이상 인증 작업을 수행할 필요가 없습니다.
위에 불라불라 써 있는 내용은 이오스 블록체인이 기술적으로 왜 우수하고 높은 효율을 내는 블록체인인지에 대한 근거들(?)입니다
가상 머신 독립 아키텍처 (Virtual Machine Independent Architecture)
EOS.IO 소프트웨어의 설계 목적은 다수의 가상 머신을 운용하며 필요에 따라 새로운 가상 머신을 추가하는 것 입니다. 그러므로 본 백서에서는 특정 언어나 가상머신에 세부적인 내용에 관하여 기술하지 않습니다. 현재 EOS.IO를 이용하여 평가 중인 가상 머신은 2가지 입니다.
이오스 블록체인위에서는 다양한 서로 다른 가상머신(스마트컨트렉이 가능하게하는)이 작동하게 될 것이고 현재 웹어셈블리와 이더리움 가상 머신 이렇게 2종의 가상머신이 테스트 되고 있다고 합니다. 만일 이더리움의 개발이 순조롭게 진행되지 못한다면 이더리움 블록체인에서 운영하기 위해 개발되고 있는 댑들의 일부가 이오스 블록체인에서 운영될 가능성을 배제할 수 없습니다.
웹어셈블리 (WASM; Web Assembly)
웹어셈블리는 고성능의 웹 애플리케이션을 제작하기 위하여 새로이 등장한 웹 표준입니다. 웹어셈블리을 일부 수정하여 결정론적이며 샌드박스인 형태로 만들 수 있습니다. 웹어셈블리의 장점은 산업 현장에서 폭넓게 수용되고 있으며, 친숙한 언어인 C나 C++로 컨트렉트를 개발할 수 있습니다.
이더리움 개발자들은 Ethereum flavored Web Assembly (EWASM)으로 웹어셈블리를 수정하여 샌드박싱하고 결정론적으로 변환하는 작업에 착수하였습니다. EWASM은 EOS.IO 소프트웨어에 쉽게 적용하고 통합할 수 있습니다.
웹어셈블리는 이오스 블록체인을 개발하고 있는 댄라이머의 글의 번역본을 참고하는 것이 좋을 것 같습니다. @clayop/eos-web-assembly-50-000 현재 테스트 과정에서 초당 50,000회의 전송에 성공했다고 합니다.
이더리움 가상 머신 (EVM; Ethereum Virtual Machine)
이 가상머신은 현존하는 대부분의 스마트 컨트렉트를 구동할 수 있으며, 이를 이용하여 그들의 작업물을 EOS.IO 블록체인에 적용할 수 있습니다. EVM의 컨트렉트는 샌드박스 안에서 구동되며, 약간의 조정을 거치면 EOS.IO의 블록체인 애플리케이션과 통신할 수 있습니다.
이더리움 스마트 컨트렉도 약간의 조정을 거치면 이오스 블록체인에서 구동이 가능하다는 이야기 입니다. 이더리움 스마트컨트렉이 위의 웹 어셈블리만큼 성능을 보여줄 수 있는지 여부는 알 수 없습니다.
이후 부분은 다음 포스팅(eos 백서-8)에서 읽어드리겠습니다
감사합니다.
@leesunmoo 올림