블록체인 이론 및 응용 - (5) EOS

BLANC·2022년 1월 15일
0

블록체인

목록 보기
9/11
post-thumbnail

• 본 게시글은 K-MOOC 묶음강좌 '블록체인 암호화폐:입문부터 심화까지' 강의를 수강하고 공부하며 정리한 내용입니다.

EOS

EOS는 다양한 블록체인 기반 엔터프라이즈 응용 및 서비스를 지원하는 3세대 블록체인으로 DPoS 방식의 합의 알고리즘을 사용한다.

EOS 로고


블록원 로고

블록원이라는 회사에 의해 제작 및 관리되고 있으며 로고는 위와 같습니다. Steemit과 Bitshares라는 DApp을 개발한 경험이 있는 댄 라리머가 CTO로 이오스의 개발에 핵심적인 역할을 하였습니다.

이더리움 체계에서 나타난 Scalability와 같은 여러가지 문제들을 해결하면서 3세대 블록체인으로 불리고 있습니다.

용어 정리

  • EOS EOS는 에코시스템이자 토큰의 이름이며, 블록체인 네트워크의 통칭입니다.
  • EOS.IO EOS.IO는 EOS 네트워크를 가동하는 블록체인 운영체제(소프트웨어 시스템)의 이름입니다.

EOS의 장점

  • Scalable : 확장·축소하여도 난조가 생기지 않는
    DPoS 합의 알고리즘을 사용하여 빠른 블록 생성속도를 구현하고 이를 뒷받침하기 위해 애플리케이션의 병렬 실행을 지원합니다.
    또한 여러개의 체인을 동시에 지원합니다. (Multiple chain)
    VISA가 초당 1만개의 트랜잭션을 처리할 수 있고, EOS는 이론상 초당 100만개의 트랜잭션을 처리할 수 있습니다.
  • Governance
    EOS는 소프트웨어 알고리즘을 피해 교묘하게 발생하는 악의적인 문제(예시: 이더리움의 DAO해킹 사건)를 하드포크가 아닌 투표를 통해 바로 잡을 수 있습니다. 21명의 대표를 선출하여 프로토콜과 약관의 계정, 계정 동결, EOS 헌법 등을 투표를 통해 진행, 확정하고 네트워크의 방향과 활동을 규정합니다.
  • Flexible
    블록체인 상 문제가 있을 때, 다른 어플리케이션에 영향을 미치지 않으면서 어플리케이션만 정지하고 손볼 수 있습니다. 사람에게 권한을 부여하지않고 역할에 권한을 부여하여 역할만 바꿔 필요한 권한만 부여할 수 있도록 권한을 관리합니다.
    또한, 다양한 VM을 지원하여 다양한 컨트랙트를 유연하게 지원하고 EOS 네트워크 상에서 실행시킬 수 있습니다.

EOS의 특징

  • 트랜잭션 비용이 없음
    이더리움은 DApp의 사용자가 트랜잭션을 보낼 때마다 비금융 활동에 대해서도 가스를 지불해야합니다. 이러한 방식은 DApp을 사용하는데 불편함을 주기 때문에 EOS는 DApp의 사용자들에게 트랜잭션 비용을 받지 않습니다.
    트랜잭션의 사용료를 개발자가 가지고 있는 EOS의 양에 비례하여 할당된 네트워크 대역폭을 제외한 만큼 개발자에게 청구되고 이 또한 이더리움에 비해 100,000배 이상 적은 금액입니다.
  • DPoS 합의 알고리즘
    DPoS 합의 알고리즘의 원리는 PoS와 같습니다. 둘의 차이점은 직접 민주주의와 간접 민주주의의 차이와 같습니다. DPoS는 지분을 가진 사람들이 대표를 선출하고 선출된 대표들이 투표를 진행합니다. 지분을 가지고 있는 사람들이 뽑은 소수의 대표들만 투표하기 때문에 블록이 빠르게 형성됩니다.
  • On-chain Governance
    DPoS 합의 알고리즘에서 주로 채택하는 방법으로, 블록체인의 정책을 결정하는 권위체가 블록체인 내부에 있는 것을 의미함합니다. EOS에서는 21명의 BP(Block Producers)들이 앞으로 EOS의 정책과 방향성에 대해 토의하고 결정합니다. 반면 비트코인에서는 개발자들이 블록체인 외부에서 활동하면서 메일링 리스트를 두고 관리하는 형식으로 이는 Off-chain Governance라고 합니다. DPoS에서는 모든 블록체인 네트워크가 정치적이고, 정치과정을 공식화 하려고 하는 것을 기본적으로 인정합니다. 공개적이고 분산된 구조이고 결과적으로 중앙화된 권력이 아닌 커뮤니티 소유의 운영입니다.
  • TaPoS(Transaction as Proof of Stake)
    DPoS와 같이 협의 방법이 아닌 네트워크 보안을 높이기 위해 TaPoS를 사용하는데, 기존의 PoS 방식에서는 일부 노드만이 PoS 계산에 참여했지만 TaPoS는 모든 트랜잭션이 가장 최근 생성된 블록 헤더의 해시값을 포함하도록 하여 트랜잭션을 만드는 모든 노드들이 전체 네트워크 보안에 참여하도록 하는 방식입니다.
  • 스마트 컨트랙트 언어로 C 또는 C++ 사용

DPoS의 모순

DPoS는 지분을 가진 사람이 일부 사람에게 자신의 결정권을 위임하기 때문에 ‘Controlled Semi-Centralization’이라고 할 수 있습니다. 즉, 탈중앙화와 중앙화의 장점을 가지지만, 기존 블록체인과 비교하여 중앙화 된다는 점에서 DPoS를 지지하지 않는 사람들이 많습니다.

또한, 중앙화의 정도는 블록생산자로 몇명의 후보를 선출하냐에 따라 결정되므로 후보가 몇명인지가 중요한 쟁점이 됩니다.

EOS에서 일어날 수 있는 공격

  • Nothing at Stake
    PoS 합의 알고리즘에서 어떠한 악의적인 개입에 의해 유효해 보이는 블록체인이 두개 이상 존재할 때, 노드들은 보상 확률을 높이기 위해 그 두 블록체인 모두에 블록을 생성하게 됩니다.
    DPoS에서는 대표가 선출되어 순서대로 블록을 생성하여 가장 긴 블록을 형성하여 체인에 공격을 가하기 어렵습니다. 또한 다수의 대표들이 악의적으로 몰래 체인을 형성하더라도 소수의 대표들이 있다면 길이에 의한 공격을 성공할 수 없습니다.
  • Exploit Low Voter Turnout
    PoS 합의 알고리즘에서는 자신이 가진 지분에 비례하여 투표에서 힘을 가지는데, 매우 적은 지분을 가진 사람들은 투표하는 방법에 대해 알아보는 것에 상응하는 보상을 받기 어려워 투표를 하지 않게되고 많은 지분을 가진 사람이 이를 악용할 수 있는 문제가 발생합니다.
    하지만 DPoS에서는 자신의 지분에서 나오는 투표권을 위임할 수 있으므로 간접적으로는 전체 투표율에 기여하게 되어 위와 같은 문제에서 벗어날 수 있습니다.
  • Bribing Attacks
    DPoS에서는 블록 생성 권한을 토큰 소유자로부터 위임받기 때문에 많은 사용자로부터 권한을 위임 받을수록 블록 생성 노드가 될 확률이 높아지고, 채굴로 인한 보상을 받을 가능성도 커집니다. 따라서 투표권을 구매하여 악의적인 의도로 권한을 위임받아 블록을 생성할 수 있고, Steemit이나 List와 같은 다른 DPoS기반 블록체인에서 공격이 발생했습니다. EOS에서는 EOS헌법에 투표권을 사지 말아야 한다는 조항을 명시하여 Bribing Attack을 시도하는 노드를 네트워크에서 퇴출시킵니다.
  • Attacks at Scale
    블록생산자들(BP)은 DPoS 네트워크에 자신의 CPU나 네트워크 등의 리소스를 제공하는데 BP가 블록 생산에서의 실수에 의해 네트워크에서 퇴출당하면 거대한 리소스가 한번에 사라져 네트워크의 능력이 현저히 떨어져 네트워크 운영이 힘들어집니다.
  • Block Producers Collude (담합)
    DPoS에서는 블록을 생성하는 대표자의 수가 적어 담합을 할 수 있습니다. 1) 검열 2) 프로토콜 변경 3) 이중 지불공격 의 공격이 대다수의 대표들이 악의를 가지고 협동한다면 벌어질 수 있습니다.
  • Distributed Denial-of-Service Attack (DDoS)
    DPoS에서는 블록을 생성하는 대표들의 IP주소 및 순서가 각 라운드마다 무작위로 결정되어 알려져 있기 때문에 공격의 대상이 될 수 있고, 공격받아 블록을 생성하지 못할 경우에 예비 블록 생성자를 두어 이를 대신할 수 있도록 준비하고 있습니다. 또한 EOS에서는 21명의 BP 중 한 BP가 제 기능을 못할 시 그 다음으로 투표를 많이 받은 22번째 예비 BP가 진짜 BP가 됩니다.

EOS 프로그램

EOS 프로그램은 nodeos, cleos, keosd 세가지 프로그램으로 작동합니다.

  • nodeos
    eos의 블록을 생성하는 가장 중요한 기능을 담당하며, 사용자가 보낸 transaction이 유효한지 블록이 유효한지 등을 결정하는 하나의 노드 프로그램입니다.
  • keosd
    지갑 단위의 key를 관리하는 구성요소입니다.
  • celos
    cli와 eos가 결합한 말으로, 사용자가 다른 구성요소에 접근할 수 있는 인터페이스를 제공합니다. 이를 통해 nodeos와 keosd에 접근할 수 있습니다.

EOS에서 Transaction을 생성하는 과정

  1. 트랜잭션을 만들고 싶은 사용자는 일단 자신의 지갑에 접근하기 위해 keosd를 거칩니다.
  2. 올바른 key를 사용하여 지갑을 잠금 해제하였다면 사용자는 트랜잭션을 만들어 nodeos에 접근합니다.
  3. nodeos에서는 올바른 트랜잭션이었다면 임시 pool에 저장하였다가 빠른 시간 내에 블록체인에 포함시켜줌

EOS네트워크에서는 21명의 Block Producer와 79명의 Backup Producer가 있습니다. 각각의 node들은 자신이 소유한 EOS 만큼의 투표권을 최대 30명의 노드에 위임할 수 있습니다. 매 라운드마다 BP는 바뀌며 선출된 BP는 블록을 만들어 다른 BP에게 검증받은 후 블록이 최종형성됩니다.

node가 eos를 얼마나 가지고 있는지는 voting power, CPU 할당, 네트워크 대역폭 등을 보장받기 때문에 EOS 네트워크 상에서 Dapp을 구현하는데 영향을 미칩니다.

profile
Frontend Engineer

0개의 댓글