이 글은 컨테이너화와 탈중앙 인프라의 미래에 대한 2부작 중 두 번째 글입니다. 첫 번째 글은 여기서 읽어보실 수 있습니다.

컨테이너와 SKALE EVM: SKALE Network 내 체인 생성하기

검증인 노드는 노드 코어와 최대 128개의 가상화된 서브노드로 이루어집니다. 각 서브노드는 Docker 컨테이너이죠. 신규 탄력적 사이드체인은 네트워크에 대한 API 호출을 통해 생성됩니다. 이 호출은 각 체인의 사이즈와 SKALE 토큰 예치를 통해 네트워크 리소스를 설정할 수 있는 다양한 옵션을 구체적으로 정합니다. 각 사이드체인은 기본값으로 16개의 노드를 가집니다.

SKALE 사이드체인의 크기는 소/중/대로 나뉠 수 있습니다. 소규모 체인의 경우, 노드 리소스의 128분의 1만큼의 양을 할당받게 됩니다. 중간 사이즈 체인은 8분의 1 그리고 대규모 체인은 폴 노드(노드 코어 외)를 할당받게 됩니다. 그리고 이 설정은 6/12/24개월의 기간으로 나뉩니다.

토큰이 체인 생성을 위해 네트워크에 예치되면 SKALE Manager는 가용한 노드 풀에서 16개 노드를 무작위로 선택하며, 이 노드 풀은 체인을 위한 충분한 능력을 가집니다. 이 프로세스의 일부분으로 컨트랙트는 각 노드가 신규 체인에 적절한 서브노드를 생성하도록 메세지를 보냅니다.

SKALE Manager는 노드 내 SKALE Admin과 연결되어 작동됩니다. 그리고 이는 Docker 엔진으로 하여금 SKALE EVM 이미지를 작동시키고, 체인 내 적절한 양의 리소스를 할당하도록 합니다.

탈중앙화된 호텔 예약 시스템과 유사

이 과정은 마치 호텔 체인 예약 시스템을 통해 여러 지역에 방을 여러개 예약하는 것과 비슷합니다. 예약 시스템은 네트워크 내 모든 방의 가용성에 대해 가시성을 지니고 있습니다. 그렇기 때문에 각 지역별로 가용성을 판단할 수 있는 위치에 있는거죠. 방 하나 혹은 여러개, 어쩌면 전체 호텔 예약에 대한 요청이 들어왔을 경우 어떤 지역이 이를 소화할 수 있는지를 시스템이 판단하는 것이죠. 가용성에 대해서 판단이 내려지면 각 호텔 내의 방 예약에 대한 요청을 보냅니다. 그리고 각 호텔의 책임영역은 방이 가용하고 체크인 시 제공될 수 있음을 보장하는 것입니다.

호텔 예약 시스템과 다른 점은 이더리움 메인넷 상에서 운영되는 스마트 컨트랙트를 통해서 전체 노드 풀에 대한 무작위 할당과 선택이 이뤄진다는 것입니다. 추가적으로 서브노드는 각 노드(SKALE Admin을 통한)에 호출을 통해 서브노드 컨테이너를 생성하고 적절한 사이즈 제공에 대해서 설정합니다.

SKALE EVM 이미지

가상화된 서브노드는 SKALE 이더리움 가상머신(EVM)으로 구성되어 있으며, 이 가상머신은 노드 크기(소 - 1/128, 중 ⅛, 대 1/1)에 따라 노드 리소스를 구체적으로 할당받습니다. SKALE Network가 사용하는 EVM은 ETH1 EVM 버전(깃헙 기준)이고, 이전에는 cpp-ethereum 프로젝트로 알려진 바 있습니다. 이는 C++ 라이브러리와 이더리움 클라이언트 ethereum/aleth를 포함한 이더리움을 위한 툴로 구성되어 있습니다.

SKALE EVM과 표준 ETH1 EVM의 유일한 차이점은 표준 EVM이 컨센서스 알고리즘을 작업증명에서 ABBA 기반 지분증명으로 변경했다는 것입니다. 여기서 ABBA는 비동기식 이진법 비잔틴 합의를 뜻합니다.

EVM의 기타 요소와 컨센서스 알고리즘 간 연관성은 사실 그렇게 강한 편은 아닙니다. 그러므로 알고리즘을 스왑하는 것 역시 가능하고, 이 경우처럼 더 수행능력이 좋은 지분증명 알고리즘을 택할 수 있죠. 이렇게 스왑을 하면서도 이더리움 네트워크를 신뢰받는 네트워크로 만든 모든 보안 및 암호학적 내용은 그대로 유지할 수 있습니다. 또한, SKALE의 설계는 특정 속성을 가졌다는 가정 하에 기타 컨센서스 알고리즘도 지원하여 SKALE 체인에 타의 추종을 불허하는 유연성과 적응성을 허합니다.

컨테이너 기반 접근법으로 인해 SKALE Network는 새로운 버전의 EVM이 가용해졌을 때 이를 쉽고 안전하게 지원합니다. EVM 업데이트는 그렇게 자주 이뤄지지는 않지만, 메인넷은 상대적으로 빠르게 변화하고자 합니다. 솔리디티 언어가 EVM을 구성하며, 솔리디티에 어떤 변화가 생길 시 이는 다음 EVM 업그레이드에 반영됨을 참고하세요.

dApp들이 가장 최신 버전의 EVM을 사용하는 것이 물론 유리하지만, Docker와 컨테이너를 사용하면 SKALE Network 내에서 이전 EVM 버전을 구동하는 것도 가능합니다. 이에 대한 방법론적 질의는 SKALE Network 지원팀에 하시면 됩니다.

무작위 노드 선택과 잦은 노드 로테이션을 통해 확보하는 네트워크 보안

전통적인 사이드체인은 더 적은 수의 검증인 노드를 사용하여 성능과 낮은 지연율을 확보합니다. 그리고 동시에 거래 완결성에 대한 리스크를 감수하게 되죠. 이는 더 적은 숫자의 노드가 공모와 뇌물에 더 취약하다는 이론에 따른 리스크입니다. SKALE Network는 이러한 보안 리스크를 풀링된 검증 모델을 통해 대응합니다. 이 모델은 많은 수의 검증인 노드가 제공하는 보안의 장점을 무작위 노드 할당과 검증인 세트에 대한 잦은 노드 로테이션을 결합함으로써 유사하게 가집니다. 즉, 각 개별 사이드체인은 전체 네트워크 리소스를 이용한 보호를 받는 것입니다.

검증인 노드는 무작위 과정을 통해 탄력적 사이드체인으로 배정되며, 이 과정은 이더리움 메인넷 상의 컨트랙트를 통해서 중재됩니다. 체인 컨센서스의 보안성은 잦은 노드 로테이션을 통해 추가적으로 보호됩니다. 노드는 단일 혹은 복수의 체인에서 비결정적 스케줄을 따라 제거되며, 신규 노드가 추가되기도 합니다.

컨테이너 사용은 노드가 로테이션됨에 있어서도 큰 역할을 합니다. 이 노드 로테이션은 사이드체인이 운영될 때 일어납니다. 물론 이 과정이 하늘을 나는 비행기의 제트엔진을 교체하는 것처럼 복잡하진 않지만, 현재 그리고 신규 서브노드 간의 협력과 기획이 필요합니다.

SKALE Manager가 할당을 하면 신규 노드가 서브노드(SKALE EVM 컨테이너)로 설정됩니다. 리눅스 btrfs 스냅샷은 현재 서브노드의 서브볼륨 스토리지 그리고 신규 서브노드로 이전된 정보를 담습니다. 이 과정 중에도 체인은 계속해서 운영되며 블록을 신규 생성하고 있기 때문에 노드 간 완전한 싱크로율을 위해서는 몇몇 보완 절차가 필요합니다. 이러한 절차를 거친 후 신규 서브노드는 검증인 세트에 존재하던 이전 서브노드들을 대체합니다. 그리고 신규 거래는 신규 서브노드로 보내지게 되죠.

하키 게임 내 선수 교체와 유사

SKALE Network 사이드체인에 대한 검증인 로테이션은 마치 하키 게임에서 이루어지는 선수 교체와 유사하다고도 할 수 있습니다. 타임아웃을 요청하는 대신 교체아웃되는 선수와 투입되는 선수는 바로 스케이트를 타고 들어오고 나가죠. 하나의 차이점은 신규 서브노드가 교체되는 서브노드와 정확히 똑같은 복사체라는 것이죠. 추가적으로 이러한 신규 서브노드는 가용한 노드 풀에서 무작위로 선택됩니다.

컨테이너와 가상 서브노드를 쓸 이유는 명약관화

탄력적이고 가상화된 서브노드 구조를 생성하는 방법으로 컨테이너를 택하는 것은 전통적인 가상화 체계와 클라우드 컴퓨팅에서 보인 성장과 결과를 감안하면 어쩌면 놀랍지 않습니다. 탈중앙화 네트워크 내에서 컨테이너가 가진 장점과 미래 잠재성이 더 놀랍죠.

컨테이너 사용에 대한 결정은 탄력적 및 가상화된 서브노드

이러한 장점들에 대해서 SKALE Network 개발팀과 지원팀은 잘 알고 있습니다. 추가적인 사이드체인을 발행할수록 결합성, 민첩성, 융통성 측면에서 컨테이너 사용이 탄력적 사이드체인의 생성, 개발, 사용을 용이하게 함은 명확해졌습니다. 컨테이너 사용은 SKALE Network 출시까지 수반되는 고충들을 심각한 경비나 노력 추가 없이 해결하였습니다. 또한, 코어 팀의 개발 능력과 혁신의 속도를 제고하고, 신규 능력을 추가하는 속도를 앞당겼습니다.

컨테이너 사용을 통해 SKALE Network는 이미 갖춘 담보된 서비스의 유지 뿐 아니라, 더 나은 서비스를 제공할 수 있게 도와줍니다. 수천 개의 사이드체인을 런칭하고, 수만 개의 가상화 서브노드에 대한 로테이션과 생성이 가능해지면서 컨테이너를 사용할 이유는 명확해졌습니다. 이는 SKALE Network를 가능케 하는 주요 기술적 요소입니다. 그리고 고도로 안정적이고 성능이 좋은 네트워크를 만드는 수단이며, 추후 네트워크의 능력과 특성 추가 역시 가능케 할 것입니다.