DSR 코인을 이용해서 마스터노드 서버 구축을 하는 과정 중 거의 끝에 도달했습니다. 조금만 기다려 주세요.
일단 서버 설정 시 중요한 파일이 2개가 있습니다. 하나는 코인 설정 파일(DSR의 경우 desire.conf)이고, 다른 하나는 마스터노드 설정 파일(masternode.conf)입니다. 이 중에서 코인 설정 파일은 마스터노드 서버로 동작하기 위한 정보가 설정되는 파일이고 서버에만 설정합니다. 마스터노드 설정 파일은 서버와의 연결을 위한 정보가 설정되는 파일로 개인지갑에만 설정합니다.
이 두 가지 파일을 이용해서 마스터노드 서버를 구축하는데 이때 필요한 정보가 몇 가지 있습니다.
- 첫 번째는 서버의 IP Address입니다. 실제 마스터노드 서버 데몬인 실행되는 서버의 IP Address를 말하며 공인 IP를 사용해야 합니다. 이 IP Address는 가상서버의 IP Address를 사용합니다.
- 두 번째는 Private Key입니다. 여기서 말하는 Private Key는 마스터노드 서버의 Private Key를 말하며 개인지갑의 Private Key와는 다릅니다. QT 개인지갑 프로그램에서 생성 가능합니다.
- 세 번째는 Transaction ID(TXID)와 Index입니다. 이것은 마스터노드로 사용할 주소와 연결되는 값으로 역시 QT 개인지갑 프로그램에서 확인 가능합니다. 단, 생성되는 것이 아니라 코인 전송 행위가 일어날 때 생기는 값입니다.
먼저 서버 IP는 확인이 바로 되죠. 현재 VPS 서버의 IP Address입니다.
다음은 QT 개인지갑 프로그램으로 Private Key를 생성해 보겠습니다. QT 개인지갑 프로그램을 실행해서 메뉴 중에서 [Tools]-[Debug Console]을 실행합니다.
Console 메뉴의 아래 입력 창에 아래 명령을 입력합니다.
masternode genkey
그러면 마스터노드 Private Key가 생성됩니다. 이 키값은 코인 별로 내부 키 생성 알고리즘이 다르므로 다른 코인의 키를 가져와서 사용하면 인식이 안됩니다.
"7rmmgkyyjbEfH5hbWKFqkcHWFghJxLWuRMTiiPxJkbcnzHquzd7"
이 값을 잘 저장해 놓습니다.
다음은 아래 명령을 입력합니다.
masternode outputs
"29307fa880888531ab540a2733692607a268309f150f48f45e59b829ee0020305"
"1"
값이 표시되면 잘 저장해 놓습니다(이 값은 마스터노드용 주소에 정확히 필요한 코인만큼 전송되고 이를 코인 네트워크 상에서 확인 과정을 거치치 않으면 생성되지 않습니다. 메뉴 중에서 Transaction 목록에서 확인이 끝나야 됩니다.).
[주의사항]
앞에서 개인 지갑에서 마스터노드 설정에 필요한 정확한 코인만큼 마스터노드용 주소에 전송했습니다. 그때 생성된 값이 이 TXID 값입니다. 현재는 하나의 마스터노드만 설치할 것이므로 위의 명령만 사용하면 됩니다. 하지만 여러 대의 서버를 설정할 경우는 각 전송 행위마다 고유의 값이 만들어지므로 다른 주소의 값과 혼용하면 문제가 됩니다.
다시 말해서 마스터노드용 수신 주소를 생성하고 거기에 코인을 전송하면 해당 주소와 연결되는 TXID가 생성되며 이 값이 실제로 코인 네트워크 망에서 마스터노드를 구분하는 값이 됩니다. 즉 마스터노드로 동작했을 때 보상이 들어오면 이 값을 이용해 전송(수신)이 됩니다.
내부적으로 마스터노드 서버와 개인지갑 간의 키값의 연결을 보면 아래 그림과 같습니다.
Wallet Private Key는 내부적으로 숨겨져 있으므로 바로 볼 수는 없습니다. 특별한 명령을 사용해서 얻을 수 있구요. 이 키만 알면 다른 사람이 나의 코인을 모두 빼갈 수 있으니 절대 공개하면 안됩니다!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
마스터노드 VPS 서버 환경 설정
자 이제 정보는 모두 알만큼 알았으니 서버 설정을 해 볼게요.
서버에 보면 /root/.desirecord 폴더에 desire.conf 파일이 있습니다. 서버를 최초 실행 시 자동 생성되는 파일이구요. 거의 모든 코인이 이런 식의 파일이 있습니다.
그런데 이 파일에 아무 내용이 없습니다. 다른 코인들은 기본적으로 설정을 해 준다고 앞에서 얘기를 했었죠. 이 코인은 직업 입력해야 합니다. 입력해야 하는 값들은 아래와 같습니다.
rpcuser=rpcuser1
rpcpassword=rpcpasswd1
rpcallowip=127.0.0.1
listen=1
server=1
daemon=1
rpcport=9918
staking=0
externalip=128.19.38.110:9919
masternode=1 masternodeprivkey=7rmmgkyyjbEfH5hbWKFqkcHWFghJxLWuRMTiiPxJkbcnzHquzd7
한 줄씩 살펴보죠.
- rpcuser와 rpcpqssword는 클라이언트가 접속 시 사용하는 계정 정보입니다. 그냥 임의로 설정하되 서버 수행 중에 변경하면 안 됩니다. 서버 실행 중 변경하면 클라이언트가 접근이 안되어 서버를 강제 중지해야 합니다.
- rpcallowip는 클라이언트가 접속하는 IP인데 현재는 서버 내 클라이언트만 접근하므로 기본 값이 설정됩니다.
- listen은 마스터노드들 간의 정보 교환을 위해 접근을 허용할지를 설정하는 부분이라고 보시면 됩니다. 이 값을 0으로 설정하면 다른 노드들이 이 마스터노드에 접근하지 못합니다.
- server값과 daemon값은 서버로 실행할 것인지를 설정하는 항목인데 그냥 1로 설정하면 됩니다(desired --help 명령을 입력해서 옵션들을 보면 많은 옵션들이 있습니다. server는 백그라운드에서 서버를 실행한다는 의미이고, daemon은 명령 수행을 허용하도록 하는 그런 것이라고 되어 있습니다. 상세한 것들을 알고 싶으시면 명령을 한번 수행해 보세요). 우리는 그냥 둘 다 1로 설정합니다.
- rpcport는 클라이언트에서 접근 시 사용하는 포트입니다. 임의의 값입니다.
- staking은 마스터노드 서버가 동작할 때 두 가지로 구분하여 보상을 주는데 하나는 서버에 주는 보상이고 다른 하나는 프로그램을 계속 실행했을 때 주는 보상으로 보통 8:2 정도 비율로 주어집니다. 서버에서는 필요가 없죠. 그래서 0입니다.
- externalip는 현재 서버의 IP Address와 Port입니다. Port 값을 따로 줘도 됩니다.
- masternode 항목은 마스터노드 서버로 동작할지를 설정하는 것이라도 간단히 생각하시면 됩니다(셜명에는 "Enable the client to act as a masternode (0-1, default: 0)라고 되어 있습니다).
- masternodeprivkey에는 위 지갑에서 생성한 마스터노드 Private Key 값을 입력합니다.
# cd
# cd .desirecore
# nano desire.conf
위의 항목을 모두 입력하고 저장해 줍니다(기억하시죠? Ctrl-X 입력 후 "Y"하고 Enter).
[주]
nano는 편집기 프로그램입니다. 과거에는 Unix 계열의 경우 대부분 vi 에디터를 사용했는데 nano 많이 편하네요.
그리고 코인 네트워크망에서 연결이 되도록 방화벽을 열어줍니다(이 포트는 개인지갑에서도 접근을 하는 포트이므로 반드시 오픈해야 함).
# sudo ufw allow 9919/tcp
[주]
ufw는 리눅스에서 제공되는 방화벽 프로그램이라고만 알아두시면 됩니다. 항상 이렇게 포트를 엽니다.
이제 서버를 시작합니다.
# cd /root/Desire/src/
# ./desired -daemon
서버가 시작되었습니다. 먼저 정말 실행 중인지 상태를 확인해 보죠. 기억하시나요 top 명령?
# top
실행이 되었네요. 최초 실행 시 CPU를 많이 사용합니다. 아, 그런데 지금은 거의 사용을 안 하고 있네요. 뭔가 문제가 있습니다. 아래 명령을 입력해 봅니다.
# ./desire-cli getblockcount
아, 참! 명령을 복사해서 쓰실 때 앞에 있는 #은 빼고 복사해서 쓰세요(너무 늦은 건가요...ㅋ).
값이 0이면 블럭 Sync가 안되고 있는 것입니다. 앞에서 QT 개인지갑 설정 시 Sync가 안되면 입력하라는 정보(addnode 한 것들)가 있습니다. 서버를 일단 종료 후 그 값들을 동일하게 입력해 줍니다.
# /root/Desire/src/desire-cli stop
# cd /root/.desirecore
# nano desire.conf
복사해서 붙여 넣으시면 됩니다(아시죠 화면에서 오른쪽 마우스 클릭?). 그리고 저장합니다.
다시 서버를 실행합니다.
# /root/Desire/src/desired -daemon
# /root/Desire/src/desire-cli getblockcount
잠시 기다리면 Sync가 시작됩니다. 이 값도 역시 개인지갑 설정 시 Sync된 만큼 올라가야 됩니다.
[주]
제가 위에서 명령을 입력할 때 상대 경로와 절대 경로를 때에 따라 사용을 했습니다. cd 명령으로 경로를 이동해 가면서 실행하기 귀찮은 경우 절대 경로를 사용하시는 것도 하나의 방법입니다. 물론 더 좋은 방법은 실행하는 프로그램을들 항상 접근이 가능한 폴더에 위치하는 것이 제일 좋겠지요.
예들들어 현재 /root/Desire/src/라는 절대 경로에서 2개의 프로그램을 사용하고 있습니다. 이것을 항상 접근하게 하려면 현재 로그인 한 사용자의 쉘 환경설정 파일에 경로를 넣는 방법도 있지만 특정 폴더로 복사해 주는 방법도 있습니다. 간단하게 아래 명령을 입력하시면 아무 곳에서 나 명령이 인식이 됩니다.
# cp /root/Desire/src/desire* /usr/local/bin
/usr/local/bin/ 폴더가 항상 접근이 가능한 경로입니다. 일반적으로 다른 코인들은 여기에 복사를 해 주죠.
현재 위치에 상관없이 아래 명령을 입력해 보세요.
# desire-cli getblockcount
잘 되죠...
자 여기까지 하셨으면 서버 부분은 다 된 겁니다. 다만 QT 개인지갑과 마찬가지로 서버도 블럭 데이터 Sync가 끝나야 정상 동작하고요. QT 개인지갑에서 시작 명령을 서버에 날렸을 때 실행이 됩니다. 그리고 블럭 데이터 Sync가 끝나도 실제 이 서버가 하나의 노드로 인정을 받으려면 노드 간 확인 과정이 더 남았습니다. 이 과정은 코인에 따라 금방 끝나기도 하지만 몇 시간이 걸리는 경우도 있습니다(대표적으로 LRM 코인의 경우 3시간 정도 기다리라고 가이드에 쓰여 있습니다).
대표적으로 사용하는 명령들 몇 가지만 배우고 다음 설정으로 넘어가겠습니다.
desire-cli 프로그램은 마스터노드 클라이언트 프로그램인데 이걸로 몇 가지 확인이 가능한 명령들이 있습니다. 위에서 사용해본 getblockcount 명령은 현재 Sync된 블럭 갯수를 표시하는 것이구요.
getinfo는 현재 마스터 노드 서버의 일반적인 상태 정보(버전 정보, 네트워크 정보, 노드 접속 정보 등)를 확인하는 것입니다.
# desire-cli getinfo
현재 프로그램 버전은 120202이군요. 프로토콜은 70208이구, 블럭은 24154가 Sync됐고, 연결된 노드가 9개네요. 채굴 난이도도 표시되는데 12.~~~~네요.
이런 정보를 확인할 수 있습니다.
다음 명령은 mnsync status입니다. Sync 정보만 확인 할 수 있는 명령이죠.
# desire-cli mnsync status
아직 Sync가 다 안됐습니다.
다음은 마스터노드 서버 상태를 확인하는 명령입니다.
# desire-cli masternode status
아직 마스터노드 서버가 활성화가 안됐습니다. 활성화가 되려면 QT 개인지갑 환경설정 후 지갑에서 시작 명령을 때려(?)줘야 합니다. 서버 스스로는 시작할 수 없어요.
다음은 로그를 확인하는 명령인데 아래 명령을 입력해 주세요.
# cd /root/.desirecore
# tail -f debug.log
debug.log 파일에 각종 로그들이 남게 되는데 이를 tail이라는 프로그램으로 실시간으로 보는 것입니다. 현재 Sync 중이네요.
Ctrl-C를 클릭하여 종료합니다.
자 다음번에는 개인지갑 설정을 해 보겠습니다.
'마스터노드 구축' 카테고리의 다른 글
NXG 코인 마스터노드 구축하기(구축 예) (1) | 2020.11.30 |
---|---|
13.DSR 개인지갑 환경설정하기 (0) | 2020.11.30 |
11.DSR 코인 마스터노드 서버 설치하기 (0) | 2020.11.29 |
10.VPS 서버 접근 방법 (0) | 2020.11.29 |
9.가상서버 임대는? (0) | 2020.11.29 |
최근댓글