안녕하세요. 서비스체인 관련해서 문의주셔서 감사합니다.
말씀 하신데로 homi setup
을 통해서 아래와 같이 3가지 방식으로 띄울수 있습니다.
참고로 항상 homi setup을 하면 그때그때 랜덤하게 nodekey를 생성하고 static-nodes.json, genesis 파일에 반영하기 때문에 이 들의 조합이 맞지 않으면 동작이 되지 않습니다.
- docker 방식 : docker-compose.yml 파일 생성
- local 방식 : nodekey와 static-nodes.json(local에서 사용가능하도록 다른 포트로 설정) 파일 생성
- remote 방식 : nodekey와 static-nodes.json(포트가 동일) 파일 생성
Docker 방식
먼저 docker 방식을 살펴보겠습니다. 따로 Docs가 없지만 먼저 설명을 드리고 향후 Docs에 보충하도록 하겠습니다.
- 이 경우에는 따로 nodekey/genesis/static-nodes.json파일을 생성하지 않고 docker-compose.yml파일안에 넣어주고 있으며
nodekeyhex
에 nodekey정보가 있으며 이걸로 test KLAY를 사용가능 합니다. - homi 기본 docker image ID 변경이 필요합니다 아래 내용을 살펴봐주십시요.
➜ homi setup --scn-num 4 --test-num 1 --servicechain --p2p-port 30000 -o docker-4scn-default
Created : docker-4scn-default/docker-compose.yml
Created : docker-4scn-default/prometheus.yml
Created : docker-4scn-default/Klaytn.json
Created : docker-4scn-default/Klaytn_txpool.json
➜ cd docker-4scn-default
➜ sed -i '' 's/klaytn-base/klaytn\/klaytn/g' docker-compose.yml # 현재는 homi에서 기본으로 되는 docker-image ID를 public한 klaytn docker id로 변경이 필요합니다. (향후에 homi에 반영토록 하겠습니다.)
➜ docker-4scn-default docker-compose up
Creating network "docker-4scn-default_app_net" with driver "bridge"
Creating docker-4scn-default_SCN-3_1 ... done
Creating docker-4scn-default_prometheus_1 ... done
Creating docker-4scn-default_SCN-0_1 ... done
Creating docker-4scn-default_SCN-2_1 ... done
Creating docker-4scn-default_grafana_1 ... done
Creating docker-4scn-default_SCN-1_1 ... done
Attaching to docker-4scn-default_prometheus_1, docker-4scn-default_SCN-0_1, docker-4scn-default_grafana_1, docker-4scn-default_SCN-2_1, docker-4scn-default_SCN-3_1, docker-4scn-default_SCN-1_1
SCN-0_1 | WARN[12/18,08:41:02 Z] [19] Some input value of genesis.json have been set to default or changed
SCN-0_1 | INFO[12/18,08:41:02 Z] [18] Setting connection type nodetype=cn conntype=0
SCN-0_1 | INFO[12/18,08:41:02 Z] [18] Cypress bootnodes are set
SCN-0_1 | INFO[12/18,08:41:02 Z] [18] Setting MaxPhysicalConnections MaxPhysicalConnections=10
SCN-0_1 | INFO[12/18,08:41:02 Z] [18] Cypress network ID is set networkid=8217
SCN-0_1 | INFO[12/18,08:41:02 Z] [18] Cypress network ID is set networkid=8217
SCN-0_1 | INFO[12/18,08:41:02 Z] [18] Archiving mode of this node isArchiveMode=false
SCN-0_1 | INFO[12/18,08:41:02 Z] [46] Non-single database is used for persistent storage DBType=LevelDB
SCN-0_1 | INFO[12/18,08:41:02 Z] [46] LevelDB configurations path=/klaytn/klay/chaindata...
위와 같이 노드를 띄운이후에는 아래와 같이 RPC 로 접속이 가능합니다.
현재는 4개 노드를 각각 8551,2,3,4로 할당하여 각 노드를 접속 가능합니다.
➜ ksen attach http://localhost:8551
Welcome to the Klaytn JavaScript console!
instance: Klaytn/"SCN-0"/v1.5.3/linux-amd64/go1.14.6
datadir: /klaytn
modules: admin:1.0 debug:1.0 istanbul:1.0 klay:1.0 net:1.0 personal:1.0 rpc:1.0 subbridge:1.0 txpool:1.0 web3:1.0
> net.peerCount
3
> klay.blockNumber
77
> personal.importRawKey("6a579fa47a64d2b5a1985c0a52fdea064174db26af7d4709dfaad4e2f169227e", "test") # docker-composer.yml 파일에서 얻은 nodekey정보로 account를 생성
"0xeff305a89df7ae7ba735a2f6f76a4940ac923280" # 주소확인
> klay.getBalance("0xeff305a89df7ae7ba735a2f6f76a4940ac923280") # balance 확인
1e+50
Local/Remote 방식
local과 remote 방식의 경우는 아래 link docs를 참고 부탁드립니다.
local의 경우는 한 PC에서 4대를 띄우는 것이기 때문에 static-nodes.json 파일에 port가 다 다르게 나오게 됩니다.
그러므로 각 노드별 conf/kscnd.conf
에서 PORT값을 각각 static-nodes.json파일처럼 설정이 필요합니다.
nodekey로 부터 static-node.json의 kni 주소가 나오는 것이니 순서를 잘 맞춰 주셔야 합니다.
remote의 경우 각 노드별 ip와 nodekey의 순서만 잘 맞춰 주시면 됩니다.
진행하시다가 추가적으로 문의가 있으시면 언제든지 문의부탁드립니다.
부족한 Docs 부분은 채워 나가도록 하겠습니다.
감사합니다.