자신의 Private Key로 나인크로니클 블록체인 노드 실행하기
이전 실습에서 우리는 Headless.Executor
를 사용해 Node를 실행해보았습니다. 이번에는 자동으로 생성된 private key가 아닌, 새로 생성한 private key와 제네시스 블록을 사용해 노드를 실행하는 방법을 배워보겠습니다.
1. appsettings
수정하기
먼저, ~/.planetarium/headless/appsettings/appsettings.Single.json
경로에 있는 Single 노드 설정 파일을 수정해야 합니다. 이 파일에서 MinerPrivateKeyString
, ConsensusPrivateKeyString
, ConsensusSeedStrings
항목을 새로 생성한 값으로 대체합니다.
{
...
"MinerPrivateKeyString": "9fe5f7c309495d284ca36b948fdeca0e65b21a019e2f8a03efd849df88fab102",
"MinerPrivateKeyString": "{your private key}",
"ConsensusPrivateKeyString": "9fe5f7c309495d284ca36b948fdeca0e65b21a019e2f8a03efd849df88fab102",
"ConsensusPrivateKeyString": "{your private key}",
"ConsensusSeedStrings": [
"033dafc7bf6d603578a8c51b04430b738aeeead8a012e1dcbd8c75cf18a625cf14,127.0.0.1,31588"
],
"ConsensusSeedStrings": [
"{your public key},127.0.0.1,31588"
],
...
}
2. 제네시스 블록 대체하기
다음으로, ~/.planetarium/headless/genesis-block/genesis-block-for-single
경로에 자동으로 생성된 제네시스 블록이 있습니다.
경로에 있는 genesis-block-for-single
파일을 삭제하고, 이전 실습에서 생성한 제네시스 블록을 동일한 이름으로 수정한 후 옮겨줍니다.
3. 기존 스토어 삭제하기
이전 실습에서 노드를 실행했기 때문에 이미 private key로 node가 설정되어있습니다. 이를 초기화해주기 위해 store 폴더를 삭제해줍니다. ~/.planetarium/headless/store/v200220
해당 폴더를 삭제합니다.
4. 노드 실행하기
이제 노드를 실행할 차례입니다. 다음 명령어를 통해 실행합니다:
9crun run --version=v200220 --planet=Single
이 명령어를 실행하면, 이미 파일이 존재하는 경우에도 새로 수정한 private key와 제네시스 블록을 사용하여 노드가 실행됩니다. 실행 로그는 다음과 같습니다:
[19:00:51 INF] The workstation garbage collector is running.
[19:00:52 DBG] Secp256K1CryptoBackend initialized.
[19:00:52 DBG] Migrating RocksDB.
[19:00:52 DBG] RocksDB is initialized.
[19:00:53 DBG] Number of chain ids: 1
[19:00:53 DBG] Canonical chain id: 7d43fc6c-c48b-469b-9724-712495d409d9
[19:00:53 INF] [ActionEvaluator] Evaluating actions in the block #1 pre-evaluation hash 6dc1b3d42c91c9affffe6ec3e2205978271d383c1fdbee742623e00074360f66...
[19:00:53 INF] [ActionEvaluator] Evaluating policy end block actions for block #1 6dc1b3d42c91c9affffe6ec3e2205978271d383c1fdbee742623e00074360f66
[19:00:53 DBG] [b4179Ad0d7565A6EcFA70d2a0f727461039e0159, b4179Ad0d7565A6EcFA70d2a0f727461039e0159]RewardGold exec started
[19:00:53 DBG] [b4179Ad0d7565A6EcFA70d2a0f727461039e0159, b4179Ad0d7565A6EcFA70d2a0f727461039e0159]RewardGold Total Executed Time: 00:00:00.0009670
[19:00:53 INF] [ActionEvaluator] Action Nekoyume.Action.RewardGold took 25 ms to execute, GetState called 0 times and took 0 ms
[19:00:53 INF] [ActionEvaluator] Actions in 0 transactions for block #1 pre-evaluation hash 6dc1b3d42c91c9affffe6ec3e2205978271d383c1fdbee742623e00074360f66 evaluated in 47 ms
[19:00:53 DBG] [BlockChain] Took 51 ms to evaluate block #1 hash 4e5ed98157a2783b98bf2e6e376359b0c6070ce1c8fad5d1cc11ae2a4da50d8e with 1 action evaluations
[19:00:53 INF] [NetMQTransport] Listening on 31234...
[19:00:53 INF] [NetMQTransport] Listening on 31588...
[19:00:53 DBG] Initializing Swarm. ConsensusReactor: True
[19:00:53 DBG] [HeightVoteSet] Adding round 0
[19:00:53 INF] [Context] Created Context for height #2, round #-1
[19:00:53 DBG] Trying to delete 0 obsoleted chains...
...
5. 자신의 Private Key로 변경되었는지 확인하기
노드가 성공적으로 실행되었는지 확인하기 위해, GraphQL을 사용해 블록체인의 상태를 조회해보겠습니다. Local Headless에 접속해 다음 쿼리를 실행합니다:
query {
nodeStatus {
tip {
miner
hash
index
}
}
}
쿼리 결과에서 miner
항목에 각자 수정해서 입력한 private key의 address가 표시되는 것을 확인할 수 있습니다.
🎉
축하합니다! 이제 유니크한 자신의 private key로 Node를 가동하는 방법을 배웠습니다. 다음 단계에서는 로컬 네트워크로 게임 클라이언트를 실행해보겠습니다.