[BlockChain]이오스블록체인_이오스란

3 minute read

1. EOS 블록체인

댄 라리머가 1년간의 이더리움의 ERC-20토큰으로 ICO를 통해 메인넷으로 올해 출시한 EOS블록체인은 합의 구조 DPOS방식의 블록체인 플랫폼 입니다.

이더리움 블록체인의 문제점인 트랜잭션 속도 처리, 사용자 부담의 비용 문제, POW합의 방식의 문제점 등을 개선하여 나온 블록체인이죠. 때문에 현재 블록체인 플랫폼에서 가장 각광받고 있는 블록체인입니다.

(1) 트랜잭션 속도 처리

스마트컨트랙트라는 새로운 개념을 탄생시킨 이더리움은 대단한 블록체인이지만 이더리움의 가장 큰 문제점은 트랜잭션의 속도 처리입니다.

즉 블록체인의 확장성이죠. 이더리움은 초당 20TPS 밖에 되지 않았고 이는 15초 주기로 블록에 생성되어 과도한 트랜잭션을 처리되지 못하고 Pending되는 문제를 낳았습니다. 물론 지금 이더리움 커뮤니티는 이러한 문제를 해결하기 위해서 (샤딩, 플라즈마 등)의 기술을 도입하고 있습니다.

이오스는 최대 초당 791TPS라는 속도를 갱신하면서 빠른 트랜잭션 처리를 자랑하고 있습니다. 실제로 개발자의 입장에서 이오스 블록체인을 개발했을 때에도 체감차이가 많이났어요. 이처럼 이오스의 트랜잭션 속도처리에는 DPOS 바로 합의구조 때문에 이더리움보다 빠른 처리가 가능하였습니다.

(2) DPOS(위임된 지분증명)

위임된 지분증명이라는 이 합의구조는 사실상 속도 개선 처리를 위한 민주주의적 지분 합의구조 입니다. EOS백서에 따르면 각 노드들이 투표에 참여하여 21명의 BP를 선출하여 해당 BP들에 의해 블록증명이 되는 구조 입니다. 이더리움은 전체 노드의 증명이 이루어져야 한다면 사실상 21개의 노드의 BP의 증명만 이루어지면 되기 때문에 속도는 빠를 수 밖에 없죠.

현재 지분증명방식 중 POS를 직접민주주의 방식이라고 하고 DPOS를 간접민주주의 방식이라고 불리는 이유가 바로 이때문입니다.

BP??

BP는 블록프로듀서의 줄임말로 매번 투표를 통해 선출됩니다. 이오스 블록체인에 참여한 모든 노드들은 투표권한이 주어지며 마치 민주주의 투표처럼 선발되죠. 민주주의 방식이 모든 것을 해결해 주지 않은 것을 보여준 것처럼 지금의 BP방식이 과연 블록체인의 문제점을 해결해 줄지 지켜봐야 될듯 합니다.

(3) 비용문제 (RAM, CPU, 네트워크)

이오스는 이더리움과 마찬가지로 트랜잭션 처리할 때 비용이 소모됩니다. 이더리움은 GAS라는 비용이 사용자에게 부담된다면 이오스는 RAM 및 네트워크 처리량에 대한 토큰을 처리자가 부담됩니다.

이렇게 되면 사용자가 이오스 토큰을 가지고 있을 이유가 없어보입니다. 그래서 이오스는 램 이외에 CPU 및 처리에 대한 Stake를 통해 대역폭을 늘려 컨트랙트를 실행 시키도록 하였습니다.

Stake?

-> Ram토큰의 경우에는 시장에서 이오스를 지불하고 구매해야 합니다. 하지만 CPU및 NET 사용은 Stake를 통해서 얻을 수 있습니다.

왜 Stake를 하는 것일까요?? 이는 이오스가 해당 사용자에게 비용을 지불하는 방식이 아니기 때문에 stake를 통해 빌리는 행위를 합니다. 실제 개발할 때 CPU와 NET은 매우 중요한 토큰이기에 이에 대해서는 따로 자세히 포스팅 할 예정입니다.

2. EOS.IO와 EOS JS

현재 이오스를 개발할 수 있는 환경은 제한적 입니다. 이오스 블록체인을 통해서 DAPP을 만들기 위해서는 EOSIO를 설치해야 하고 Nodejs를 통해서 개발할 경우에는 EOS JS의 모듈을 이용해서 직접 개발하도록 제공하고 있습니다. 기존 이더리움을 개발하기 위해 Web3.js가 있다면 이오스는 Eosjs가 존재하는 것이죠.

현재 EOSJS의 API Function은 매우 기본적인 기능만 제공하고 있습니다. 한국어로 되어있는 EOSJS가 없기 때문에 각 함수에 대한 기능을 직접 다뤄보는 수 밖에 없습니다.

EOSIO

EOSJS

  • EOS 초기 설정
//eosjs를 import합니다.
const Eos = require('eosjs');

const config = {
  httpEndpoint: 'http://api.kylin.eosbeijing.one:8880',
  chainId : '5fff1dae8dc8e2fc4d5b23b2c7665c97f9e9d8edf2b6485a86ba311c25639191',
  keyProvider : ['privatekey']
};

Eos(config).getInfo((error, result) => { console.log(result) }); //블록정보 가져오기

3. 스마트컨트랙트

이오스도 스마트컨트랙트를 지원합니다. 하지만 이더리움과는 개발 언어와 컴파일 등 차이가 있습니다. 기존 이더리움은 Solidity라는 언어를 통해서 작성하고 Web3.js의 web3.eth.sendSignedTransaction함수를 이용해서 가스량과 값, nonce를 이용해서 Deploy를 진행했었습니다.

하지만 EOS는 C++언어를 통해서 스마트 컨트랙트를 작성하고 이를 EOSIO에서 컴파일을 진행합니다.

  • EOSIO 스마트컨트랙트 설정.
eosiocpp -o Brands.wast Brands.cpp
eosiocpp -g Brands.abi Brands.cpp
  • EOSJS의 스마트컨트랙트
Eos(config).setcode('AccountName', 0, 0, wasm, (codeerror, codeinfo) => {
  if(codeerror){
    console.error('setcode_error',codeerror);
  }
  else{
    console.error('setcode',codeinfo);
    Eos(config).setabi('AccountName', abi, (abierror, abiinfo) => {
      if(abierror){
        console.error('setabi_error', abierror);
      }
      console.log('setabi', abiinfo);
    }); // @returns {Promise}
  }
}); // @returns {Promise}

4. 이오스의 대한 고찰

EOS의 메인넷은 2018년 6월 3일에 진행되었고 지금까지 운영되고 있습니다. 현재까지 EOS의 TPS는 높은 수준을 유지하고 있고 그로인해 많은 이더리움 DAPP들이 이오스 DAPP으로 옮기거나 새로 개발되었죠.

그렇다면 이오스가 과연 3세대 차세대 블록체인이라 말할 수 있는가? 입니다. 이더리움도 그랬던 것처럼 지금의 문제와 더불어 또다른 문제점이 발견될 수 있고 DPOS에 대한 논쟁이 아직까지 뜨겁기 때문에 확실하지 않습니다.

(1) BP에 대한 의존도

현재 각 노드에 대한 참여율 22%로 낮은 투표율을 보여주고 있고 이로인해 기존 BP에 대한 의존도가 점점 심화되고 있는 것이 사실입니다. 이는 BP의 해킹문제를 불러 일으킬 수 있을 수 있으며 혹여나 BP의 서버가 죽게되면 풀노드를 구축하지 않은 DAPP은 제대로 동작하지 않는 문제를 야기시키죠. 또한 BP가 처리하는 트랜잭션의 양이 점점 늘어나면서 이에 대한 개선도 필요할 듯 합니다.

때문에 BP의 수를 늘리거나 해당 투표율을 증가시킬 수 있는 방안에 대해 고민해야 될 듯 싶습니다.

(2) RAM토큰의 가격 변동성

램토큰의 가격의 변동성은 처리자에게 부담이 되는 비용이기 때문에 너무 많은 램토큰의 가격상승은 문제를 야기 시킬 수 있습니다. 이는 이더리움의 가스가격 또한 마찬가지이므로 각 수수료에 대한 가격 방안에 대해 이오스 블록체인도 똑같이 해결해야 될 문제입니다.

(3) 민주주의 대한 정당성

블록체인 합의구조에 대해서 DPOS가 과연 탈중앙화의 본질적인 가치에 맞는지에 대해 의문을 갖는 사람이 많습니다. 또한 위에서 이야기 했듯이 집중적인 BP노드의 선발은 블록체인 네트워크의 심각한 문제를 야기시킬 수 있습니다. 사회적으로 볼 때 간접민주주의가 모든 문제를 해결해 주지 못한 것처럼 이오스 블록체인의 선거방식이 중앙 집중적인 현상이 될 우려가 있습니다.