안녕하세요.
카카오의 그라운드X에서 출시한 이번 블록체인 플랫폼 Klaytn에 대해서 알아보고자 합니다.
사실 5.31 까지 Klaytn 해커톤이 진행되면 참가만 할 경우 50코인, 결과물을 제출 할 시 100코인을 추가로 지급한다고 합니다.
그래서 저도 해커톤 참여를 위해 공부 할 겸 Klaytn에 대해서 조사하고 Dapp을 구현에 있어 알아보고자 합니다.
우선 클래이튼은 기업용, 개인용이 아닌 누구나 사용하기 쉽게 하기위한 목표를 가지고 있는 블록체인 플랫폼입니다.
또한 기존 블록체인의 문제점을 해결하였다고 하는데요.
그렇다면 기존의 블록체인들에게는 어떠한 문제점이 있었을까요?
기존 블록체인의 문제점
우선 기존 블록체인의 문제점에는 3가지가 존재합니다. Scalablilty(확장성), Finality(불변성), Fork(분기)
기존 블록체인들의 각 문제점을 살펴보고 Klaytn은 어떻게 해결하였는지 살펴보도록 하겠습니다.
Scalability (확장성)
확장성이란 얼마나 많은 일을 할 수 있는가를 의미하며 블록체인에서 확장성을 이야기 할 때는 대부분 TPS(Transaction Per Second), Block Interval(블럭 생성 주기)를 이야기를 합니다.
VISA(현재 카드 서비스) => TPS : 1700
비트코인 => TPS : 7, Block Interval : 10분
이더리움 => TPS : 15~20, Block Interval : 25초
현재 비트코인과 이더리움은 초당 7개의 트랜잭션, 15~20개의 트랜잭션 밖에 처리하지 못합니다.
하지만 실제로 저희가 사용하고 있는 비자카드의 경우 평균 초당 1700건의 트랜잭션이 발생하기에 비트코인과 이더리움을 실생활에 접목시키기 어렵다고 하는 것입니다. 또한 블록체인의 경우 블록이 생성되어야 거래가 완료되었다고 판단되기에 운이 나쁘면 비트코인의 경우 거래를 하고도 10분동안 기다려야하는 문제점이 생깁니다.
이러한 문제점을 Klaytn은 TPS 3000+, Block Interval 1초의 성능을 달성하여 해결하였다고 합니다.
Finality (불변성)
블록체인의 Final이란 트랜잭션이 더 이상 바뀔 수 없는 상태를 의미합니다. Finality는 쉽게 생각하면 블록이 더 이상 변할 수 없는 상태까지 걸리는 시간을 생각하시면 될 것 같습니다.
비트코인 : 블록 검증 6번 * 블록 생성 시간 10분 = 60분
이더리움 : 블록 검증 25번 * 블록 생성 시간 25초 = 6분
비트코인의 경우 새로운 블록이 생성되면 브랜치에 연결이 되더라도 이전 블록 6개와 함께 검증이 들어갑니다. 이 과정에서 검증이 실패 할 경우 블록이 변경 될 수 있습니다. 이더리움 또한 마찬가지입니다.
즉, 비트코인의 경우 거래를 완료하더라도 최대 60분동안은 거래 내역이 변경 될 수 있다는 것입니다.
그러나 Klaytn은 1초안에 블록이 불변 상태가 된다고 합니다.
Fork (분기)
블록 생성 주기를 보통은 Round(라운드)라고 합니다. 같은 라운드에 여러 노드가 블록을 생성할 경우 블록체인의 브랜치가 나눠지게 됩니다. 위와 같은 현상을 Fork라고 하는데 비트코인과 이더리움의 경우 합의 알고리즘으로 PoW (작업증명) 방식을 사용합니다.
PoW의 경우 누가 더 빨리 연산을 하여 정답을 찾는지를 통해 블록 생성자를 결정하게 됩니다.
하지만 PoW의 경우 51% 공격이라는 공격법의 가능성이 존재하는데요.
Hash Perfermence의 51%를 가지고 있을 경우 먼저 블록을 채굴하여 블록의 브랜치를 마음대로 바꿀 수 있게 됩니다.
물론 가능성이 있다는 것일 뿐입니다.
Klaytn의 경우 BFT(비잔티움 결함 허용)기반의 IBFT 합의 알고리즘 사용함으로써 문제점을 해결 하였습니다.
IBFT의 경우 아래의 주소에서 자세하게 확인 하실 수 있습니다.
https://steemit.com/kr/@kanghamin/istanbul-byzantine-fault-tolerance
지금까지 기존 블록체인의 문제점을 Klaytn은 어떻게 해결하였는지에 대해서 알아보았습니다.
그렇다면 이제 Klaytn에 대해서 좀 더 자세하게 알아보겠습니다.
Klaytn
우선 클래이튼의 합의 과정에 대해서 먼저 알아보도록 하겠습니다.
합의 / 블록 생성
IBFT의 경우 1명의 제안자(Proposal)과 다수의 위원회(Commit/Validator)이 존재해야합니다.
제안자의 경우 합의 노드들 중 임의로 하나의 노드를 선정하며 선정된 노드는 이번 라운드는 자신이 선정되었음을 최근 이전 블록헤더에서 파생된 난수와 자신의 공개키를 통해 암호화하여 위원회 노드들에게 전파를 합니다.
위원회 노드들 또한 자신의 합의 노드라는 것을 다른 합의 노드들에게 공개키를 통해 암호화하여 전파합니다.
제안자는 합의 노드의 2/3의 서명을 받을 경우 블록을 생성하고 다른 위원회 노드들에게 전파를 하게 됩니다.
네트워크 구성
위의 합의 / 블록 생성을 통해 블록이 생성되는 과정을 알아보았는데요. 아직까지 블록이 모든 노드들에게 전파 된 것이 아닙니다.
CNN : consensus node network = 합의 노드 / 제한 노드
PNN : proxy node network = 블록을 앤드포인트 노드에게 전달하는 노드
ENN : Endpoint node network = 기타 노드 / 누구나 참여가능 노드
CN/PN/ENBootnode : 새로운 참가자의 노드를 등록하게 도와주는 노드
CNN + PNN : Core cell
위에서 말했다시피 블록이 생성이 되면 위원회 노드들(CNN)에게 전파가 됩니다. 그후 PN을 통해 각 EN들에게 전파가 됨으로써 블록 전파가 마무리 됩니다.
위 그림을 통해 알 수 있듯이 CNN을 통해 합의 및 블록 생성이되고 CN에 PN들이 붙어 블록을 받아 다시 PN들이 EN들에게 블록을 전파하는 방식인걸 알 수 있습니다.
그런데 왜? CN이 바로 EN에게 전파하면 되는데 굳이 PN이라는 징검다리를 만들 것일까요?
그 이유는 기존 서버 네트워크의 경우 이용자가 많아지게 되면 서버를 증감시키거나 Request를 분할 처리하여 성능을 향상시킵니다.
하지만 블록체인의 경우 각 노드들이 모든 Request에 대한 처리를 해야합니다. 또한 가장 느린 노드의 성능에 맞춰 블록의 생성이 이루어지게 됩니다.
그러기에 Klaytn의 경우 CNN에 들어오기 위한 최소 성능 조건을 내세웠으며, 또한 각 노드들의 성능을 향상시키도록 하여 블록체인 네트워크의 성능을 향상시킵니다. 그렇다면 여기서 CN에 많은 EN들이 계속 붙게 된다면 CN은 합의 외에도 EN에게 블록을 전파하는 부분에 있어서 성능을 사용하게 되버립니다. 이런 부분을 없애고 CN은 오직 합의를 위해 성능을 사용하기 위해 PN이라는 전파 용도의 노드를 추가적으로 구성한 것입니다.
마지막으로 Klaytn은 이더리움의 아키텍처를 기반으로 구현되었다고 하는데요.
그 둘의 차이점을 간단하게 보고 마치겠습니다.
이더리움 VS 클래이튼
이더리움
- 단일 네트워크
- PoW 방식으로 누가 블럭을 생성하는지 알 수 없음.
- 누가 블럭을 생성하는지 알 수 없음으로 최신 블록을 제일 빨리 받기 위해서는 최대한 많은 노드들에게 붙어 있어야 함.'
클래이튼
- Two Layer Architecture Trust Model
- Core cell에 EN이 붙으면 최신 정보를 받을 수 있음.
여기까지 클래이튼에 대해서 간단히 알아보았습니다.
혹시 틀린 내용이나 잘못된 내용이 있다면 댓글로 알려주시면 감사하겠습니다.
긴글 읽어주셔서 감사합니다.
댓글