클레이튼과 이더리움의 차이점 중의 하나는 transaction 처리 시 발생하는 수수료의 계산 방법입니다. 이더리움의 경우 매 transaction 마다 이용자가 원하는 gas price를 기입하여 발생을 시킵니다. 하지만 클레이트의 경우에는 고정된 gas price를 사용하도록 하여 이용자가 gas price 설정을 따로 할 필요가 없도록 하고 있습니다. 클레이튼에서 모든 transaction은 현재 동일한 25 ston (0.000000025 KLAY)의 gas price로 실행이 됩니다. 이 gas price는 Governance Council (GC)의 합의에 의해 변경이 되지 않는 한 동일한 값을 유지하게 됩니다.
고정된 가스 가격을 도입한 이유는 불필요한 수수료의 등락을 제거하기 위해서 입니다.
이더리움에서는 블록 생성자가 자신들이 가져가는 수수료를 높이기 위해 비싼 가스 가격을 제시한 transaction을 우선으로 선택할 수 있도록 하였습니다. 이는 블록생성 주기와 낮은 성능으로 인해 발생되는 것이며 이로 인해 이용자는 자신의 transaction의 실행을 빨리 하기위해 수수료를 더 높게 설정하였습니다.
하지만 클레이튼은 아래와 같은 이유로 인해 유동적인 가스 비용을 가질 필요가 없었습니다.
클레이튼의 성능은 4000+ TPS로 충분한 처리용량을 가집니다.
클레이튼은 매 1초마다 블록을 생성하기 때문에 유저는 즉각적인 transaction 처리를 확인 가능합니다.
GC 구성원들은 수수료 이외의 블록 생성에 대한 보상을 받습니다.
클레이튼에서 수수료가 있는 이유는 스팸성 공격을 방지하기 위함입니다. 그래서 고정 수수료를 도입하여 이용자가 더 편리하게 사용할 수 있도록 하였습니다.
이더리움과는 달리 클레이튼은 PBFT 알고리즘 기반의 합의 알고리즘으로 동작이 됩니다.
PBFT 계열의 합의 알고리즘은 아래와 같은 장점/단점을 갖고 있습니다.
장점 : 빠른속도, 효율적인 합의
단점 : 모든 노드 동기화가 필요함
분명한것은 모든 노드가 동기화가 되어야한다는 점입니다. 하지만 탈중앙화된 합의의 경우에는 모든 노드의 동기화가 힘듭니다. 그래서 일반적인 BFT 알고리즘은 최소한 2/3 노드 이상의 합의가 요구됩니다. 그렇기 때문에 큰 규모의 네트워크의 경우에는 많은 통신량으로 인해 네트워크 부담이 커집니다.
그래서 클레이튼은 모든 노드가 합의에 참여하도록 하지 않고 임의의 노드들만 합의를 하도록 하고 있습니다. 이 임의의 노드들은 암호학적으로 random하게 선출하기 위해 VRF (Verifiable Random Function)를 적용하여 주기적으로 다르게 선택되도록 하고 있습니다. 이렇게 선택된 임의의 노드 그룹은 위원회 (committee)라고 지칭하며 이 위원회의 숫자는 전체 노드의 갯수 대비 적고, 초당 4,000 TPS 정도의 성능이 가능하도록 설정 되어 있습니다.
이러한 합의 알고리즘을 통해서 클레이튼은 50개 정도의 GC 노드로도 초당 4,000 TPS의 성능을 제공 할 수 있습니다.
노드의 종류가 없는 이더리움과는 달리 클레이튼은 3가지의 노드 종류가 존재합니다. 각각 아래와 같은 고유한 목적을 가지고 있습니다.
1. Consensus Node (CN)
CN은 합의 알고리즘을 거쳐 새로운 블록을 생성하게 됩니다. GC의 구성원만 CN을 운영할 수 있으며 이렇게 CN들로만 이루어진 전용 네트워크를 Consensus Node Network (CNN)라고 지칭합니다. 그리고 최소 2개 이상의 PN과 하나의 CN을 Core Cell (CC)라고 지칭합니다.
2. Proxy Node (PN)
PN의 주된 역할은 CN을 보호하는 것입니다. 위에서 CC는 하나의 CN과 2개이상의 PN으로 구성되어 있다고 하였는데요. PN의 역할은 CN과 CC외부의 네트워크와 연결을 해주는 역할을 하고 있습니다. PN들은 transaction을 Endpoint Nodes (ENs)에서 받아 CN에게 전달을 합니다. 그리고 CN으로 부터 블록을 받아서 EN들에게 전달을 하게 됩니다. 이렇게 PN은 CN을 DDoS와 같은 공격으로 부터 보호합니다.
3. Endpoint Node (EN)
EN은 클레이튼 네트워크에서 가장 끝단에 존재하는 노드로써 사용자로 부터의 RPC API 요청을 처리하고 Service Chains과 데이터를 주고 받는 역할을 합니다.
그리고 EN은 지속적으로 새로운 블록을 PN으로 부터 전파받습니다. 이러한 EN들이 서로 peer-to-peer 로 연결되어 있는 네트워크를 Endpoint Node Network (ENN)이라 지칭하고 있습니다.
CN들과 달리 어떤 이용자라도 EN을 실행하여 ENN에 참여가 가능합니다.