Klaytn Docs - 1 [ 개요 ]

Lumi·2021년 12월 9일
0

Klaytn

목록 보기
9/10
post-thumbnail

시간이 조금 붕 뜨는것 같아서 강제로 할것을 만들고자 가장 관심있게 보고 잇는 Klaytn을 차근차근 알아보았습니다.

https://docs.klaytn.com/klaytn

🔥 개요

Klaytn은 이더리움에서 만들어 졌으며 최적환된 BFT 기반 퍼블릭 블록체인으로 안정성을 충족하는 것으로 목표를 한다.

Klaytn의 주요 설계 목표는 다음과 같다.

[1] 즉각적인 완결성

BFT기반을 사용하기 떄문에 완결성이 보장이 된다.

[2] 실생활에 사용될수 있게 뛰어난 TPS

DPoS를 사용하기 떄문에 확장성 면에서 뛰어나다.

[3] 낮은 실행 비용

[4] 사용자의 낮은 진입 장벽

제이슨 대표님이 블록체인에서 가장 중요하게 생각하는 부분이다.
- 사용자 친화적

[5] 기술 채택 프로세스를 간소화

Klaytn은 2019.06.27일 메인넷 Cypress를 출시함으로써 이더리움과는 다른 생태계를 가지게 되었다.

주요 특징은 다음과 같다.

[1] 1초 블록 생성 및 확인 시간

[2] 초당 4000건의 트랜잭션

[3] 이더리움에 비해 1/10에 가까운 낮은 가스 가격

[4] EVM과 solidity를 지원

[5] 평판이 좋은 기업을 통해 합의노드를 결성
- 현 시점에는 30개의 합의 노드가 있다.

[6] 50개 이상의 초기 파트너

Klaytn의 큰 그림은 역할과 목적에 따라서 3개의 논리적 하위 네트워크로 분할이 됩니다.

  • 즉 네트워크의 역할을 3개로 나누었고 이는 다음과 같습니다.
[1] CNN = 핵심 셀 네트워크

EN을 통해 제출된 트랜잭션을 확인하고 실행하는 코어 셀(CC)로 구성이 됩니다.
- CNN은 네트워크 전체에 블록을 생성하고 전파하는 역할을 합니다.

[2] ENN = 엔드포인트 노드 네트워크

주로 트랜잭션을 생성하고 RPC API요청을 처리하며, 서비스 체인의 데이터 요청을 처리하는 EN으로만 구성이 됩니다.

[3] SCN = 서비스 체인 네트워크

BApp에 의해서 독립적으로 운영되는 보조 블록체인 입니다.
- 일종의 서브 네트워크를 말합니다.

서비스 체인은 EN을 통해서 메인 체인에 연결이 됩니다.

**** [요약] ****

CNN과 ENN은 Klaytn의 메인넷을 구성을 하게 되고, 블록체인 어플리케이션 즉 BApp는 메인 체인에서 작동이 이루어 지거나 SCN에서 작동이 이루어 지게 됩니다.

만약 높은 TPS와 구성 가능한 네트워크 정책을 보장하는 애플리케이션 전용 실행 환경을 원한다면 서비스 체인을 사용하는 것이 좋습니다.

이번에는 클레이튼의 네트워크에서 어떤 노드들이 존재를 하고 어떤 역할을 수행하게 되는지에 대해서 알아보겠습니다.

🔨 코어 셀(CC)

합의 노드와 프록시 노드로 구성이 되어 있습니다.

  • CN + PN

CC는 단일 CN과 두개의 PN의 구성으로 이루어 지고 이러한 CC는 CNN에서 여러개 존재하게 됩니다.

  • 현 기준에서는 30개의 CN이 있기 때문에 총 30개의 CC, 30개의 CN, 60개의 PN이 존재합니다.

CN은 블록을 직접적으로 생성하는데에 참여하는 노드이며 PN은 네트워크에 대한 인터페이스를 제공을 하게 됩니다.

즉 PN은 합의 노드로 트랜잭션을 전송하고 이후 블록이 생성이 되면 블록을 EN으로 전송을 합니다.

  • 중간 전달자 라고 이해를 하면 될 것 같습니다.

🔨 엔드 포인트 노드(EN)

요청을 처리하고 서비스 체인에서 송수신되는 데이터를 처리하는 역할을 수행합니다.

🔨 부트노드

새로 가입한 노드가 네트워크에 등록할 수 있도록 돕고 연결할 다른 노드를 찾기 위해 Klaytn에서 운영하는 특수한 노드입니다.

  • 뉴비를 위한 노드입니다.

CN부트 노드는 CNN안에 있으며 대중들에게 공개가 되지 않지만

PN 및 EN은 공개적으로 노출되어 있습니다.

PN 부트노드는 허용된 PN만 등록하고 이후 EN과 연결이 되는 것을 돕습니다.

EN 부트노드는 연결할 PN에 대한 정보를 EN에게 제공을 합니다.

🔨 네트워크 계략도

CN들은 CNN이라는 네트워크를 형성 하게 됩니다.

  • 이해하기 쉬운 표현으로는 VIP라고 할 수가 있겠네요

이들은 IBFT + DPoS로 이루어진 합의 알고리즘이며 이러한 규칙에 맞게 블록을 생성하고 이를 PN에게 전송을 하게 됩니다.

PNN은 PN들의 집합을 말합니다.

  • VIP들의 자녀들 이라고 이해를 하면 되겠네요

이들은 CN의 종류에 따라서 달라지는 노드들의 집합이며 일종의 중간 다리 역할을 수행 합니다.

마지막은 ENN입니다.

  • 집안의 일꾼들 이라고 이해를 하면 되겠네요

이들은 서비스 체인과의 연결을 돕고 사용자들이 정보를 요청할떄 이를 응답해주는 역할을 수행합니다.

표현이 직관적으로 계층을 나타낼수 있기 떄문에 이런식으로 비유를 한 것입니다.

🔨 블록 생성 및 전파

블록 생성과 전파 되는 단계는 블록체인 네트워크에서 굉장히 중요한 역할을 수행 하게 됩니다.

  • 직접적으로 TPS와 연결되어 있기 떄문입니다.

라운드는 Klaytn의 블록 생성 주기 입니다.

각 라운드 마다 새 블록이 생성되고 즉시 새로운 라운드가 시작이 됩니다.

현재에는 1초로 유지가 되고 있고 Klaytn의 목표 또한 1초를 목표로 하고 있습니다.

제안자 및 위원횐 선정

클레이튼은 CNN이라는 네트워크 구성을 통해서 블록을 생성하고 있고 이는 DPoS합의 알고리즘을 선택하는 것으로 알 수가 있습니다.

또한 좀더 기능적 및 보안적으로 추가하기 위해서 제안자 및 위원회를 각 라운드마다 선정하게 됩니다.

이 둘은 모두 무작위로 결정하여 생성이 되고 Klaytn은 절대 선택에 관여하지 않습니다.

대신 CN은 가장 최근의 블록 헤더에서 파생된 난수를 사용하여 라운드 시작시에 CN이 정말 선택되었는지 증거를 생성하는 암호화 작업을 실행합니다.

만약 CNN의 크기가 작은 경우에는 존재하는 모든 CN이 위원회 위원으로 선출 될 수가 있습니다.

블록 제안 및 검증

이제 제안자가 선택이 되면 라운드 마다 선택 증명을 모든 CN에 브로드캐스트 합니다.

  • 제안자의 공개 키로 확인할 수 있는 증명

이후 해당 라운드의 위원회로 선정된 CN은 자신의 선택증명으로 제안자에게 응답을 하여 제안할 새 블록을 누구에게 브로드 캐스트 할지 제안자에게 알립니다.

그런다음 제안자는 트랜잭션을 선택하고 순서를 지정하여 블록을 생성합니다.

마지막으로 제안자는 위원회와 합의하여 새로 생성된 블록에 대해 합의하고 확정합니다.

전파 차단

BFT의 특성산 3분의 2 이상의 동의를 얻어야 하고 동의가 이루어 지면 새 블록이 모든 CN에 전파가 이루어 지고 라운드가 종료가 됩니다.

새 블록이 모두 전파가 되면 PNN을 통해 블록 헤더 및 데이터를 ENN에 전달하여 새로운 블록의 정보를 모든 참여자가 볼 수가 있게 됩니다.

요약

블록 생성에 대해서 간단하게 요약을 해보겠습니다.

일단 Klaytn이 관여하지 않는 방법으로 난수를 생성을 하고 그 난수를 통해서 제안자 + 위원회를 선출 합니다.

이후 제안자가 자신임을 증명하는 증명을 위원회에게 브로드캐스트 하고 위원회들도 응답으로 자신음을 증명하는 증명을 브로드 캐스트 합니다.

이 과정이 완료가 되면 제안자가 트랜잭션들을 모아서 블록을 제안하고 위원회의 3분의 2 이상이 동의를 하게 되면 새 블록이 형성이 되게 됩니다.

그러면 이제 나머지 CN노드들에게도 새 블록을 전송을 하고 CNN네트워크는 PNN을 통해서 ENN네트어크에 새 블록을 갱신하게 됩니다.

🔨 다중 채널 전파

만약 트랜잭션이 과하게 몰려서 트랜잭션이 몰리게 된다면 사용자 입장에서는 좋은 경험이 될수는 없을 것 입니다.

이러한 부분을 대비하기 위해서 Klaytn은 다중 채널 접근 방식을 택합니다.

트랜잭션과 블록에 대해 별도의 전파 채널을 할당함으로써 많은 트랜잭션이 들어오게 되어도 새로 생성된 블록을 올바르게 전송 할 수가 있습니다.

🔥 클레이튼의 차별성

다른 생태계와는 어떤점이 다르고 이로인해 왜 클레이튼을 사용해야 하는지를 다루어 보겠습니다.

블록체인은 2009년에 탄생하게 되었지만 시장에서는 선택을 받지 못하였습니다.

이러한 이유에는 크게 3가지가 있습니다.

[1] 사용 어려움

많은 암호화를 사용하기 떄문에 사용자에게는 사용하기 여간 까다롭습니다.

[2] 열악한 사용자 경험

기숙적으로 미숙하기 떄문에 TPS가 느리고 사용하려면 반복적으로 신원을 확인하여야 했고 수수료 또한 변동적이였습니다.

[3] 불확실한 지속 가능성

퍼블릭 블록체인을 위한 장기적 지속 가능한 모델의 부족은 기업의 채택 속도를 늦추게 됩니다.

Klaytn의 주요한 목표는 대량 채택 이라고 하며 다음과 같은 요구사항을 충족하도록 설계되었습니다.

고성능

최소 4000TPS처리가 가능하며 1초의 블록 생성시간으로 즉각적인 트랜잭션 완결성을 보장

저렴한 비용

사용자는 시스템이 요구하는 비용보다 더 높은 수수료를 부담해서는 안됩니다.

안정적인 거래가 이루어 져야 합니다.

계정 관리의 유용성

사용자는 사람이 읽을 수 있는 형식으로 계정 주소를 선택할 수 있어야 합니다.

주소를 변경하지 않고도 계정의 개인 키를 변경할수 있어야 합니다.

거래에서의 사용성

거래수수료를 애플리케이션 운영자에게 위임하게 됩니다.

운영자는 거래에 대한 보조금 금액을 결정 가능하며 구독과 같은 유연한 모델을 구현 가능합니다.

다음은 애플리케잉션 개발을 지원하기 위한 요구사항 입니다.

급속 성장

Klaytn에서의 애플리케이션 개발은 간단해야 하며 사용된 기술은 학습 곡선을 줄이기 위해 공개 표준을 따라야 합니다.

데이터 앵커링

Klaytn은 프라이빗 블록체인을 위한 솔루션을 제공해야 합니다.

프라이빗 체인은 자체 거버넌스를 가질 수 있으며 앵커링을 통해 Klaytn메인 체인에 연결되어야 합니다.

profile
[기술 블로그가 아닌 하루하루 기록용 블로그]

0개의 댓글