이번 포스트에서 쿼럼(Quorum)이라는 오픈 소스 프로토콜을 통해 이더리움 기반 프로이빗 블록체인 네트워크를 구축하는 가이드를 작성하고자 한다. 우선, 쿼럼이란 자세히 어떤 프로젝트인지 살펴보자.
쿼럼(Quorum)이란?
쿼럼의 풀 네임은 ConsenSys Quorum
으로 ConcenSys 사에서 제공하는 오픈 소스 프로토콜이다. 해당 패키지를 통해 개발자는 이더리움 기반 블록체인을 보다 편의성 있게 구축할 수 있다. 이더리움 블록체인의 메인넷과의 차이점이라고 하면, 쿼럼은 사용자(혹은 노드 운영자) 권한(Permission)에 따라 네트워크가 구축된다는 점(Private)으로 이더리움은 모든 사용자에게 오픈되어 있는 것(Public)과 대비된다. 덧붙여 이러한 네트워크의 특성(Private, Permissioned)으로 인해 쿼럼은 공급망 관리, 금융 서비스, 헬스 케어 분야와 같이 내부적으로 보안이 필요한 운영 서비스 구축의 솔루션으로 채택된다.
개발자는 Hyperledger Besu 혹은 GoQuorum이라는 이더리움 클라이언트를 선택해 개인키 관리, 함의 메커니즘, 트렌젝션 관리 등을 비롯해 각종 API, 플러그인, 라이브러리와 같은 유틸리티 기능까지 이용할 수 있다.
쿼럼(Quorum) 세팅
쿼럼에 대해 간단히 알아보았으니 본론으로 돌아와 구축에 대해 알아보자. 먼저 운영체제에 대해 짚고 넘어가면, 나는 Ubuntu 18.04 환경에서 설치를 진행했음을 밝힌다. Window나 MacOS 데스크탑 환경에서는 그 설치법이 달라질 수 있음을 밝힌다.
쿼럼의 기초적인 세팅 목록은 다음과 같다. Truffle을 제외한 NodeJS와 Docker는 필수 사항이며, Truffle의 경우 추후 블록체인 네트워크에 DApp을 배포할 때 필요하기에 지금 당장 설치가 필요하지 않다.
NodeJS (with NPM)
Docker Engine & Docker-compose
Truffle
NodeJS와 NPM(Node Package Manager)
우선 오픈 소스를 가져와 실행하기 위해 필요해 NodeJS의 JavaScript 코드 실행 환경과 NPM 설치가 필요하다. 나는 NodeJS 버전 관리에 대비해 NVM을 먼저 설치한 뒤, 17 버전의 노드로 세팅했다. (22.03.07 기준 최신 버전)
NPM의 경우 NodeJS 설치 시 자동으로 세팅되니 생략.
# 해당 서버에 NodeJS 설치 유무 확인
# 명령어 결과값이 'command not found: docker'와 같다면 해당 서버에는 NodeJS가 설치되어있지 않음을 의미한다.
node --version
# 결과가 없다면 NVM 설치
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
# 서버 설정파일 업데이트 (Shell 환경에 따라 다를 수 있음)
# 설정파일을 못 찾겠다면, 열려있는 Shell을 종료하고 다시 연결하면 된다.
[bash] source ~/.bashrc
[zsh] source ~/.zshrc
[ksh] ~/.profile
# 최신 버전 노드 설치
nvm install node
# 특정 버전의 노드를 설치하고 싶다면, 아래 명령어로 버전 정보를 조회한 뒤, 선택적으로 설치가 가능하다
nvm list
nvm install 16.3.0
# 다시 NodeJS 설치 확인
node --version
Docker Engine 과 Docker-compose
쿼럼 소스 안에는 도커 블록체인 노드와 관계된 도커 이미지들이 포함되어있다. 그렇기 때문에 실행을 위한 Docker와 Docker-compose 툴의 설치가 필수다. 덧붙여 쿼럼 네트워크를 동작하는데 도움을 주는 쉘스크립트들이 다수 존재하는데 모든 스크립트가 도커와 관련되어 있기에 더더욱 필요하다.
다시 말하지만, 해당 설치법은 Ubuntu 환경을 기준으로 하였다. Window, MacOS PC에서 진행할 경우 Docker Desktop만 설치하면 된다.
설치 방법에 대한 자세한 내용이 궁금하다면 아래 공식문서 링크를 참조하자.
Docker Desktop
Docker Engine for Ubuntu
Docker Compose for Ubuntu
먼저 도커 설치 전 세팅에 필요한 사전 작업이 있다.
# 도커 설치 유무 확인
# 명령어 결과값이 'command not found: docker'와 같다면 해당 서버에는 Docker가 설치되어있지 않음을 의미한다.
docker --version
# 오래된 버전의 도커가 있다면 삭제
sudo apt-get remove docker docker-engine docker.io containerd runc
# 도커 리파지토리 세팅 (아래 명령어에 포함된 패키지들은 apt 명령어가 HTTPS 위에서 동작할 수 있게 허용하게 한다.)
sudo apt-get update
sudo apt-get install \
ca-certificates \
curl \
gnupg \
lsb-release
# 도커 공식 GPG Key 설치
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# Stable Repository 설정
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
위 명령어 실행을 잘 마무리했다면, 이제 Docker Engine을 설치한다. 설치 패키지 목록으로 docker-ce, docker-ce-cli, containerd.io 가 있다. 도커와 관련된 명령어는 항상 관리자 권한(root)가 필요하다는 걸 참고하자.
# 설치
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
# 설치 확인
sudo docker run hello-world
# 설치가 확인되면 시스템관리자 명령어를 통해 도커와 컨테이너 데몬을 실행
sudo systemctl enable docker.service
sudo systemctl enable containerd.service
이어서 docker-compose 를 설치한다.
# docker-compose 설치
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# docker-compose 실행 권한 부여
sudo chmod +x /usr/local/bin/docker-compose
# 버전 확인
docker-compose --version
만약, 설치 후 실행에 에러가 발생한다면 docker-compose 경로에 문제가 있을 확율이 크다. 아래 명령어로 심볼링 링크를 지정하면 해결될 것이다.
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
쿼럼(Quorum) 설치
드디어 본격적으로 쿼럼을 설치하고 실행할 준비가 끝났다. 앞서 언급했듯 쿼럼은 오픈 소스 프로토콜이며, 소스코드를 NPM 관련 npx라는 명령어를 통해 쉽게 다운받을 수 있다. 다운로드가 진행되기 전에 설치 옵션에 대한 몇가지 체크사항을 설정해야하는데 자세한 내용은 아래 이미지와 함께 설명해두었다.
# 쿼럼 소스 코드 다운로드
npx quorum-dev-quickstart
(1) 이더리움 네트워크 실행에 어떤 클라이언트 환경을 사용하시겠습니까?
- 1
(2) Codefi Orchestrate 툴을 사용하시겠습니까?
- n
(3) 쿼럼 키 관리자 툴을 사용하시겠습니까?
- Y
(4) 프라이빗 트렌젝션을 구현하시겠습니까?
- Y
(5) ELK (엘라스틱서치, 로그스태시, 키바나) 기능을 구현하시겠습니까? (서버 모니터링에 필요한 기능)
- 1
(6) Blockscout을 통한 서버 모니터링을 구현하시겠습니까?
- N
(7) 설치 서버명(디렉토리명)을 지정해주세요. (Default = quorum-test-network)
위 과정을 모두 마쳤다면, 이제 기본적인 서버 구축 단계가 끝난 것이다. 다음 게시물에서 쿼럼에 config 설정 및 네트워크 구동에 대해 알아보고, 더불어 메타마스크(MetaMask)와 연동하는 법까지 알아보자.
'Blockchain > Quorum' 카테고리의 다른 글
[Quorum] 쿼럼(Quorum) 기본 구성 및 설정 (0) | 2022.03.22 |
---|
댓글