⛓ 블록체인
[Klaytn 클레이튼 블록체인 어플리케이션 만들기] 8~11강
락꿈사
2022. 2. 13. 12:50
Klaytn 네트워크 구조
- 전체 네트워크 안에 core cell 네트워크가 있음
- core cell을 둘러싸는 Endpoint Node Network가 있음
- core cell 네트워크는
- CNN(Concensus Node Network, 노란색 부분)과
- PNN(Proxy Node Network, 빨간색 부분) 으로 이루어져 있음
- CNN안의 CN들이 합의를 담당하는 노드들을 의미함
- 하나의 코어셀은 하나의 참여자가 운영하게 되는데 1개의 CN과 이 CN과 연결되어 있는 여러 개의 Proxy Node들로 운영됨
- CN으로 참여하기 위해서는 까다로운 조건을 만족해야 함
- CN들은 서로 소통하기 위해 각자가 연결되어 있는 구조임
- CN들은 외부와는 접촉할 수 없고 Core Cell 참여자로써 운영하과 관리해서 믿을 수 있는 Proxy Network를 내세움
- End Point Node들은 Core Cell 네트워크와 연결되어 있으며 Core Cell안의 PN과 연결해서 정보를 주고받을 수 있음
- End Point Node들끼리 서로 정보를 주고받을 수도 있음
- End Point Node가 되기 위한 조건은 없고, 아무나 End Point Node가 되어서 웹이나 모바일등의 클라이언트에게 정보를 전달할 수 있음. 서비스 제공자로서의 역할을 함
- CN Boot Node, PN Boot Node, EN Boot Node 등 Boot Node들은 새로 들어온 노드가 네트워크에 등록하고 다른 노드에 연결할 수 있도록 도움을 주는 클레이튼에서 운영하는 특수 유형 노드
- CN Boot Node는 CN Network 안에 있으면서 공개가 되지 않음
- PN Boot Node, EN Boot Node는 공개가 됨
- PN Boot Node는 허용된 Proxy Node만 등록할 수 있게 해주고 End Point Node들과 연결할 수 있도록 해줌
- EN Boot Node는 어떤 Proxy Node에 연결해야할지 End Point Node에게 정보를 제공하는 역할을 함
Klaytn 코어셀 Core Cell
- 합의를 담당하는 Core Cell은 Main Net이 런칭되면 몇 십대정도로 운영됨
- 서비스가 잘 되어서 Core Cell에 연결하는 커넥션이 많아지면 확장이 필요함
- 일반적인 경우 : 서버를 늘리고 Request를 분할해서 처리함
- 블록체인 : Node를 늘려봤자 늘린만큼 정보를 각 Node들에게 더 전달해야 하므로 처리속도가 더 느려질 수 있음.
- 따라서 Node 자체의 성능을 늘림 (ex. Ram, CPU 성능 올림)
- CN의 참여 조건
- Physical Core가 40개 이상
- 256GB RAM
- 1년치의 데이터 약 14TB 저장
- 10G 네트워크
- Core Cell의 성능 향상을 위해서는 전체가 똑같은 스펙에 맞춰서 성능을 향상시켜야 함
- Core Cell은 하나의 CN과 여러개의 PN으로 이루어져 있음
- PN이 여러 대 있는 이유는 CN은 연결에 필요한 자원이 제한적이고 CN의 수가 한정적이기 때문에 PN을 이용해서 End Point Node들의 연결을 지원하는 것
- PN이 End Point Node들과 연결하고, 넘어온 트랜잭션들을 CN에 넘겨줌
- 결론적으로 CN은 합의를 담당하는 Node이기 때문에 컨넥션으로 인해 성능에 걸림돌이 되어서는 안됨. 따라서 PN이 CN을 보호해주면서 확장성 문제를 해결해주는 구조 채택
Klaytn 서비스 체인
- 서비스 체인 : Mainnet과 연결된 독립적으로 운영되는 블록체인
- 서비스 체인이 사용되는 경우
- DApp이 특별한 노드 환경에서 설정되어야 하는 경우
- 보안 수준을 맞춤형으로 설정해서 운영하고 싶을 때 (ex. Private 블록체인을 운영하고 싶을 때)
- 많은 처리량을 요구하는 서비스라 Mainnet에 배포시 경제성이 낮다고 판단될 때
- Mainnet에 체인처럼 연결되어 있는 것들이 서비스 체인임
- 서비스 체인이 Mainnet의 신뢰를 고정시키는 역할을 함
- Mainnet과 서비스 체인의 소통이 자유로운 것은 아니며 오직 제한된 트랜잭션만이 사용될 수 있음
- => 서비스 체인은 독립된 서비스 공간을 구축해서 필요할 때 메인넷에 신뢰를 고정시킴
- 서비스 체인과 같은 기술이 타 블록체인 플랫폼에서 채택하려고 함. (ex. 이더리움 - 크립토키티즈. 이더리움 Mainnet을 느리게 만들어 용량과 속도에서 한계를 느낌. 이더리움측에서는 이에 대항하기 위해 플라즈마라는 사이드 체인 기술을 기반을 둔 컨셉을 내놓았으나 아직은 미지수)
- Klaytn의 서비스 체인 안에서는 트랜잭션에 소요되는 Gas 비용을 안받게 설정할 수 있음. 즉 DApp 개발자나 서비스 제공자가 서비스 체인 안에서 원하는 환경을 구축하고, 서비스를 유저들에게 제공할 수 있다는 것
이더리움과 클레이튼의 차이
이더리움
- 단일 네트워크 (네트워크 구성원간의 구분이 없음)
- Proof-of-Work(작업증명) : 누구나 블록을 생성할 수 있으나 가장 먼저 블록을 만들고 많이 전파해야 함. 그렇게 해서 블록을 블록체인에 추가하면 보상을 받는 구조.
- 마이닝 노드 : 블록을 쓰고 네트워크에 전파한 노드. 블록을 체굴하는 노드
- 마이닝 노드가 누가 될지 모르기 때문에 최대한 많은 노드들에게 붙어야 함
- 블록을 쓰는 노드는 최신 정보를 갖고 있으므로 이 블록을 빨리 받아야 하는데 이 노드가 어디에 있는지 모름
- 만약 A라는 노드가 항상 블록을 쓴다고 가정했을 때 A노드 옆에 달라붙어 있으면 됨
- 하지만 블록체인은 이 역할을 하는 노드가 계속 바뀌기 때문에 어떻게 최대한 많은 노드들에 붙어서 전파, 즉 가십을 받아야 함
- 최대한 많은 노드들에게 연결을 하고 블록 전파에 힘써야 최신 노드를 확보할 수 있음
클레이튼
- 두 개의 레이어를 가지고 있는 네트워크Two Layer Architecture Trust Model
- Core cell 네트워크에 있는 CN 중 매라운드마다 하나씩 뽑혀서 블록을 씀
- Core cell 안의 CN들이 블록을 만든다는 사실을 바깥에 있는 End Point Node들이 알고 있기 때문에 옆에 붙어있음 (그래야 신뢰도가 높은 정보를 불러오고 쓸 수 있기 때문)
- 어떤 어플리케이션을 만들 때 Java, SqlDB를 Azure, AWS와 같은 클라우드, 또는 개인 서버에 디플로이 하여 서버를 구축함
- 이러한 서버가 직접적으로 Core cell과 연결을 시킬 수 없으므로 블록체인 데이터이 접근하려면 End Point Node에 먼저 연결을 해야함
- 내 컴퓨터를 End Point Node화 해서 연결하거나
- 아니면 다른 End Point Node에 연결해서 쓸 수 있음
- 그러나 이 End Point Node를 개인적으로 운영하는것이 어려움
- 블록체인 시스템은 Node를 운영할 때 모든 블록들을 동기화시켜서 사용하기 때문에 제대로 쓸려면 새로운 블록들이 추가될 때마다 동기화를 시켜주어야 함
- 이런 문제들 때문에 이더리움의 "Infura" 노드처럼 신뢰 가능한 외부 노드에 연결해서 쓸 수도 있음
- 예를 들어 클레이튼에 연결해서 단순히 데이터만 읽어오는 사이트를 개발한다고 했을 때, 개인적으로 End Point Node를 운영하는 것보다 신뢰 가능한 외부 공영 End Point Node에 연결해서 쓰는 것이 편하고 시간이 절약됨
- 이더리움과 달리 Mainnet과 부분적으로 소통할 수 있으며 독립된 서비스 공간을 구축하는 서비스 체인이 있음