이제 pool을 다른 사람들이 쓸 수 있도로 개방하는 절차 입니다.
block producer의 key 생성
cd $NODE_HOME
cardano-cli node key-gen-KES \
--verification-key-file kes.vkey \
--signing-key-file kes.skey
cardano cli를 통해 node의 key를 생성합니다.
kes key는 90일마다 업데이트를 해야하며, 업데이트 주기는 gLiveView에서 보실 수 있습니다.
cold key를 저장할 저장소 생성
cold관련된 작업은 반드시 cold에서 진행하셔야 합니다.(network가 연결되어 있지 않은 vm)
cold vm에서
mkdir $HOME/cold-keys
pushd $HOME/cold-keys
cold key를 저장할 폴더를 생성 합니다.
cardano-cli node key-gen \
--cold-verification-key-file node.vkey \
--cold-signing-key-file node.skey \
--operational-certificate-issue-counter node.counter
사용할 node의 key들을 만들어 줍니다. 이 키들은 반드시 따로 백업을 해두시길 바랍니다.
이제 block vm 으로 돌아가서
slotsPerKESPeriod=$(cat $NODE_HOME/${NODE_CONFIG}-shelley-genesis.json | jq -r '.slotsPerKESPeriod')
echo slotsPerKESPeriod: ${slotsPerKESPeriod}
slotNo=$(cardano-cli query tip --mainnet | jq -r '.slotNo')
echo slotNo: ${slotNo}
kesPeriod=$((${slotNo} / ${slotsPerKESPeriod}))
echo kesPeriod: ${kesPeriod}
startKesPeriod=${kesPeriod}
echo startKesPeriod: ${startKesPeriod}
startKesPeriod 값을 알아냅니다.
아까 만들었던 kes.vkey를 cold로 복사해줍니다.
cold vm으로 돌아가서
cardano-cli node issue-op-cert \
--kes-verification-key-file kes.vkey \
--cold-signing-key-file $HOME/cold-keys/node.skey \
--operational-certificate-issue-counter $HOME/cold-keys/node.counter \
--kes-period <startKesPeriod> \
--out-file node.cert
startKesPeriod는 위에서 출력된 값을 넣어줍니다. 이제 node.cert 파일이 생성되었습니다.
node.cert 파일을 block vm으로 복사해줍니다.
block vm으로 돌아가서
cardano-cli node key-gen-VRF \
--verification-key-file vrf.vkey \
--signing-key-file vrf.skey
chmod 400 vrf.skey
sudo systemctl stop cardano-node
vrf key를 만들고 cardano를 정지시킵니다.
cat > $NODE_HOME/startBlockProducingNode.sh << EOF
DIRECTORY=$NODE_HOME
PORT=6000
HOSTADDR=0.0.0.0
TOPOLOGY=\${DIRECTORY}/${NODE_CONFIG}-topology.json
DB_PATH=\${DIRECTORY}/db
SOCKET_PATH=\${DIRECTORY}/db/socket
CONFIG=\${DIRECTORY}/${NODE_CONFIG}-config.json
KES=\${DIRECTORY}/kes.skey
VRF=\${DIRECTORY}/vrf.skey
CERT=\${DIRECTORY}/node.cert
cardano-node run --topology \${TOPOLOGY} --database-path \${DB_PATH} --socket-path \${SOCKET_PATH} --host-addr \${HOSTADDR} --port \${PORT} --config \${CONFIG} --shelley-kes-key \${KES} --shelley-vrf-key \${VRF} --shelley-operational-certificate \${CERT}
EOF
node.cert와 각종 키들을 setting 해줍니다.
sudo systemctl start cardano-node
# Monitor with gLiveView
./gLiveView.sh
다시 노드를 시작하고 gLiveView를 켭니다.
error message가 뜨고 아무키나 누르면 starting… 상태인것을 볼수 있습니다.
잠시지만 node가 내려갔다 올라왔기때문에 동기화 시간이 필요합니다.(수분 안에 완료됩니다.)
여기까지 진행한 모든 작업은 아무런 비용이 필요없으며 잘 안될경우 다시 진행하셔도 됩니다.