클레이튼을 참고하여 많은 도움을 받으며 메인넷을 개발, 관련 연구를 진행하는 컴퓨터 공학과 학생입니다.
클레이튼의 성능의 4000 이상의 TPS가 유지된다는 것을 보고 참고하며 개발, 연구를 진행중인데, 클레이튼 아키텍쳐와 관련된 것에 대해 궁금증이 생겨 노드 구성과 합의 알고리즘에 대한 질문을 드립니다.
현재 클레이튼 노드는 CN(Consensus Node)와 EN(Endpoint Node)로 노드의 역할이 분리되어 노드가 구성되어 있는데, 이 방식은 CN의 경우 하이퍼레저 패브릭의 Private Blockchain의 특성과 EN의 경우 퍼블릭 블록체인의 특성을 결합한 것으로 보입니다. 이 구조에서
CN으로도 블록체인이 유지되지만 EN이 동작하는 이유, (EN이 퍼블릭 블록체인의 특성을 추가하여 사용자가 클라이언트 뿐만 아니라 블록체인의 노드로 참여하여 데이터 감시를 받기 위함 등 신뢰성과 관련이 있는지 궁금합니다)
블록을 생성하는 CNN에서의 트랜잭션 위변조에 대한 대응 방법 (트랜잭션을 전달받고 PN을 통해 CNN으로 트랜잭션을 전파하여 블록 생성은 CNN에서 되는 것으로 확인하였습니다. 이 과정에서 CNN 내 데이터 위변조 시도 시 대응 방안이 존재하는지 궁금합니다.)
CN의 개수 (CNN에 참여하는 허가된 노드의 개수와 참여 기준에 대해 알려주시면 감사드리겠습니다.)
에 대한 질문을 드립니다. 또한
클레이튼은 현재 istanbul-bft 합의 알고리즘을 사용하는데 논문을 참고한 결과 블록 합의에 참여하는 커미티의 개수가 22개로 고정되었다고 명시되어 있습니다.
안녕하세요. 우선 클레이튼 포럼에 질문주셔서 감사합니다.
질문 주신 내용들을 한번에 정리해서 답변드리겠습니다.
CN으로도 블록체인이 유지되지만 EN이 동작하는 이유
EN이 동작하는 가장 큰 목적은 트랜잭션을 생성하기 위함 입니다. 또한 서비스체인에서 요청한 데이터를 처리하는 역할을 수행하기도 합니다.
블록을 생성하는 CNN에서의 트랜잭션 위변조에 대한 대응 방법
CN은 트랜잭션을 검증하고 블록을 생성하는 역할을 합니다. 한번 기록된 트랜잭션을 임의로 바꾸는 위변조 과정 및 로직은 CNN에서 없다고 보시면 됩니다. 만일 한 CN의 연산 오류로 트랜잭션의 검증을 잘못 하였다고 해도, CNN내 다른 CN에 의해 검증과정을 거쳐 합의 이후 블록에 쓰이는 여부가 결정되므로, 검증에 대한 오류는 이런 방식으로 대응된다고 보시면 될 것 같습니다.
CN의 개수 및 참여기준
현재 cypress 메인넷 CN의 개수는 30개이며, 참여 기준은 내부 심사 및 5백만 클레이 이상의 스테이킹 물량이 필요한 것으로 알고 있습니다. CN의 개수는 https://scope.klaytn.com/ 에서 확인하실 수 있습니다.
커미티 개수를22개로 결정한 이유
이스탄불 bft 관련 내용을 찾아보시면 좋을 것 같습니다. 간단히 설명드리자면 시스템은 N 개의 검증자가 있는 네트워크에서 최대 F 개의 악의적인 노드를 허용할 수 있습니다 ( N = 3F + 1). 해당 F개의 악의 노드가 최악의 경우 모두 validator로 들어간다고 해도 2/3 찬성으로 합의에 이룰 수 있기 때문에 해당 N = 3F + 1 이 도출되게 된 겁니다. 참고로 현재 CCO 사이즈를 고려해 F는 7로 설정이 되어있습니다.
CN 개수에 따라 동적으로 바뀔 수 있는지
CN의 개수가 현재보다 늘어나게 되면 블록 생성 합의에 실패할 수 있습니다. 클레이튼에서는 CN이 바뀜에 따라 커미티 수가 동적으로 바뀌는 로직은 현재 없습니다. 향후 CN 크기가 증가함에 따라 커미티 수를 바꿀 수는 있습니다.