Skip to content

Instantly share code, notes, and snippets.

@KingofHamyang
Last active September 14, 2019 16:35
Show Gist options
  • Save KingofHamyang/fbf60e2f2d3fc28d48145273ce16e719 to your computer and use it in GitHub Desktop.
Save KingofHamyang/fbf60e2f2d3fc28d48145273ce16e719 to your computer and use it in GitHub Desktop.
Klaytn week2

Klaytn Study 2주차

<개요>

클레이튼의 네트워크 구조를 살펴보고, 각 노드들의 역할을 파악한 뒤 가장 유명한 블록체인 플랫폼 중 하나인 이더리움과 비교해보고, 그 차이점을 분석해보겠습니다.

<클레이튼 네트워크 구성>

클레이튼은 기존의 public 블록체인들과는 다른 형태의 네트워크 구조를 가집니다. 이더리움과 비트코인 과는 달리, 모든 노드에게 동등한 기회와 능력이 부여되지 않습니다.

누구나 마이너가 될 수 있고, 누구나 네트워크에 트랜잭션을 전파하는 등 모든 노드가 동등한 권한을 가지는 이더리움, 비트코인 과는 달리 클레이튼은 그러한 행위를 할 수 있는 노드들이 제한됩니다. 클레이튼은 기존 public 블록체인의 문제점인 처리속도를 개선하고, Dapp의 활성화를 목표로 하였는데, 합의 과정에 참여하는 노드수를 제한함을 해결책으로 제시하였습니다.

node

위 그림은 클레이튼의 네트워크를 도식화 해놓은 것인데요, 이더리움과는 다르게, 모든 노드가 그에 맞는 권한, 역할을 가지고 있습니다.

CN은 실질적으로 합의 프로토콜을 통해 블록을 생성하는 노드들입니다. 비트코인, 이더리움과는 다르게 소수의 CN들만이 이 합의과정에 참여할 수 있습니다. PoW나 PoS같은 알고리즘이 아닌, IBFT 알고리즘을 사용하며, 이를 통해 다른 플랫폼 보다 빠른 속도로 블록을 검증하고, 생성합니다. CN이 되기 위해선, 엄격한 심사가 필요합니다.

PN은 CN들에 연결된 프록시 노드입니다. CN들은 인터넷을 통한 각종 공격을 막기위해서 CN들 자신들만의 private network로 연결되어 있습니다. CN들은 외부와 통신하기 위해 PN이라는 노드를 따로 두고, 외부의 노드들과 CN은 이 PN을 통해서만 정보를 주고 받을 수 있습니다. CN과 PN을 합쳐서 CoreCell(CC)라고도 합니다.

EN은 실질적으로 PN과 통신하여 블록의 정보를 받아서 이용하는 노드들입니다. 모든 사용자는 EN이 될 수 있으며, PN과 통신하여 블록체인을 이용할 수 있습니다.

소수의 CN들만이 블록 생성에 가담하므로 기존의 블록체인 보다는 분산 이라는 성질은 약하지만, 모든 노드들이 경쟁을 통해 마이닝을 하는 기존의 블록체인보다 TPS가 훨씬 빠르므로 Dapp이 활성화 될 수 있는 계기가 될 것입니다.

<합의 알고리즘-IBFT>

위 설명에서 CN들이 사용하는 합의 알고리즘이 이더리움, 비트코인과는 다르다고 설명했는데, 좀 더 자세히 알아보겠습니다.

CN들은 매 순간마다 그들중에서 한명의 Proposer를 뽑고, 나머지는 validator가 됩니다. 이 중 proposer가 트랜잭션들을 담고, 정렬해서 블록을 만들고, 이를 나머지에게 검증받아 최종적으로 블록이 완성되게 됩니다. 아래 그림을 통해 좀 더 자세히 설명해보겠습니다.

bft

  1. 매 순간 마다 Proposer가 결정되면, Proposer가 트랜잭션들을 담아서 블록을 생성합니다.
  2. 블럭을 다른 노드들(validator)에게 전파합니다.
  3. 블럭을 받은 노드들은, 해당 블럭을 받았음을 확인하고, 확인 메세지를 나머지 노드들에게 전파합니다.
  4. 전파받은 블록을 검증합니다. 검증하면서 서로 메세지를 주고 받는데요, 이때 2/3이상이 합의한다면, 이 블록은 제대로된 블록으로 인정받아, 체인에 연결됩니다.

<이더리움과의 차이>

위에서 언급한 바와 같이, 기존의 블록체인과는 많은 차이들이 있는데, 가장 많이 사용되어 왔고, 동시에 스마트컨트랙트를 지원하는 플랫폼인 이더리움과 비교를 해보았습니다.

이더리움과 클레이튼의 차이점을 표로 정리해봤습니다.

이더리움 클레이튼
블록생성(마이닝) 모든 노드 CN
노드 권한 누구나 동등한 권한, 역할 노드 종류별로 역할이 다름
TPS(상대적) 느림 빠름
분산화 모든 노드가 동등 일부 CN만 합의에 참여
합의알고리즘 PoW(추후 PoS) IBFT

위와 같이 이더리움은 모든 노드가 마이닝이 가능하고, 정보를 열람할 수 있지만, 클레이튼은 그 부여된 권한에 따라 할 수 있는 일이 제한됩니다. 소수의 CN이 블록을 생성하는 클레이튼의 경우 분산화는 덜 하지만 합의과정이 매우 빠르다는 특징이 있으며, 모든 노드가 동등하게 합의과정에 참여하는 이더리움의 경우 PoW특성상 느리지만, 분산화가 매우 잘 된다는 특징이 있습니다.

분산화가 다른 블록체인에 비해서 적다라는 단점이 있긴 하지만, 데이터의 무결성과 투명성은 다른 블록체인과 동등하게 보장하면서 동시에 빠른 TPS를 보장하므로, 빠른 TPS를 요하는 IoT나 스마트 팩토리, 또는 물류사업 등 위 성능을 요하는 어플리케이션에 맞게 사용한다면 다른 블록체인 플랫폼보다 월등한 성능을 낼 수 있을것같습니다.

<의문점>

이더리움의 경우 모든 노드가 마이닝을 할 수 있으므로, 특정 사람이 던진 트랜잭션이 의도적으로 거부될 확률이 적습니다. A가 마이너 B와 원수지간이라서 A가 보내는 트랜잭션은 블록에 담지 않는다고 해도(B가 A의 계정주소를 안다면.......) B 말고도 많은 마이너가 있기 때문에, A는 블록체인 플랫폼을 이용하는 데에는 문제가 없습니다. 하지만 클레이튼의 경우는 어떨까요? 현재 Klaytnscop 참조결과 23개의 CN들이 있습니다. (2019/9/14 기준) 생각보다 수가 적은데, 이정도 숫자면, 서로 합의하에 악의적인 행동을 할 확률이 매우 높다고 생각합니다. 예를 들어 저 23개의 노드들이 합의해서 특정 지역의 ip로부터(예를들면 북한)오는 트랜잭션은 블록에 담지말자! 라고 하면 어떨까요? 또는 특정 계정에서 오는 트랜잭션은 블록에 담지말자! 라고 합의하면 어떻게 될까요?

긴 글 읽어주셔서 감사합니다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment