Connect to main chain
In this page, we will describe the steps of connecting a Service Chain to the Main Chain.
EN Configuration - Enable Main-bridge β
You should enable main-bridge by configuring kend.conf
.
Update the Configuration File β
The kend.conf
contains the following main-bridge properties.
Name | Description |
---|---|
MAIN_BRIDGE | Enable bridge service as main bridge for service chain. 1 to enable. |
MAIN_BRIDGE_PORT | Bridge listen port. Default: 50505 |
MAIN_BRIDGE_INDEXING | Enable indexing of service chain transaction hash for fast access to the service chain data. 1 to enable. |
To enable main-bridge on EN, you should do like below.
- define
MAIN_BRIDGE
- enable RPC/WS.
- add
mainbridge
API for RPC like the below example.
# Configuration file for the kend...# rpc options settingRPC_ENABLE=1 # if this is set, the following options will be usedRPC_API="klay,mainbridge" # available apis: admin,debug,klay,miner,net,personal,rpc,txpool,web3,mainbridge,subbridgeRPC_PORT=8551RPC_ADDR="0.0.0.0"RPC_CORSDOMAIN="*"RPC_VHOSTS="*"# ws options settingWS_ENABLE=1 # if this is set, the following options will be usedWS_API="klay" WS_ADDR="0.0.0.0"WS_PORT=8552WS_ORIGINS="*"...# service chain options settingMAIN_BRIDGE=1MAIN_BRIDGE_PORT=50505MAIN_BRIDGE_INDEXING=1...
Connect SCN to the Main Chain β
You need to run an EN of the main chain as a main-bridge. And also you should determine which SCN (Service Chain Consensus Node) as a sub-bridge will connect with the EN.
Check EN (Main-Bridge) information β
Open EN Console β
There are different ways to attach to the EN process. You can check the usable commands on ken CLI commands. This page explains the way to attach to the process via IPC (inter-process communication). The IPC file klay.ipc
is located in the DATA_DIR
path on the node.
Please execute the following command and check out the result. (If you added mainbridge
API for RPC, you can check the bridge API like below. If there is no mainbridge
API, you should check EN Configuration - Enable Main-bridge again. )
$ ken attach --datadir ~/kend_homeWelcome to the Kaia JavaScript console!instance: Kaia/vX.X.X/XXXX-XXXX/goX.X.Xat block: 11573551 (Wed, 13 Feb 2019 07:12:52 UTC) datadir: ~/kend_home modules: admin:1.0 mainbridge:1.0 debug:1.0 istanbul:1.0 klay:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 txpool:1.0 >
Get the EN's KNI β
After attaching to the process via IPC, you can check the EN's main-bridge KNI like below. You can refer to Service Chain API.
> mainbridge.nodeInfo{ kni: "kni://08b99d2297e0a27ddeb33f3a81b59ea1c065b9adbaff9fefab0d16f65b1a8db22939a104c24447e9aca521c158922ca912476b544baf48995a382d88886e0a37@[::]:50505?discport=0", id: "08b99d2297e0a27ddeb33f3a81b59ea1c065b9adbaff9fefab0d16f65b1a8db22939a104c24447e9aca521c158922ca912476b544baf48995a382d88886e0a37", ip: "::", listenAddr: "[::]:50505", name: "-2", ports: { discovery: 0, listener: 50505 }, protocols: { servicechain: { config: { chainId: 2018, deriveShaImpl: 0, isBFT: true, istanbul: {...}, unitPrice: 0 }, difficulty: 87860, genesis: "0x711ce9865492659977abb2758d29f68c2b0c82862d9376f25953579f64f95b58", head: "0x0d4b130731f1e7560e4531ac73d55ac8c6daccb178abd86af0d96b7aafded7c5", network: 1 } }}
You should take note of the main-bridge kni
.
Connect to the Main Chain β
Open SCN Console β
Attach to the SCN process like below. You should have enabled subbridge
API for RPC, you can find the subbridge module in the output. If there is no subbridge
API, you should check Configuration of the SCN again.
$ kscn attach --datadir ~/kscnd_homeWelcome to the Kaia JavaScript console!instance: Kaia/vX.X.X/XXXX-XXXX/goX.X.X datadir: ~/kscnd_home modules: admin:1.0 subbridge:1.0 debug:1.0 governance:1.0 istanbul:1.0 klay:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 servicechain:1.0 txpool:1.0 >
Connect SCN with EN β
You can add the EN peer on SCN via IPC like below. The kni is EN's KNI which you noted previously.
> subbridge.addPeer("kni://08b99d2297e0a27ddeb33f3a81b59ea1c065b9adbaff9fefab0d16f65b1a8db22939a104c24447e9aca521c158922ca912476b544baf48995a382d88886e0a37@[::]:50505?discport=0") true
And then you can check the connected peers like below.
> subbridge.peers [{ caps: ["servicechain/1"], id: "08b99d2297e0a27ddeb33f3a81b59ea1c065b9adbaff9fefab0d16f65b1a8db22939a104c24447e9aca521c158922ca912476b544baf48995a382d88886e0a37", name: "-1", networks: [{ inbound: false, localAddress: "[::1]:56834", remoteAddress: "[::1]:50505", static: true, trusted: false }], protocols: { servicechain: { head: "0x47be444be87daaee2989998559049ee8a859540807824dd1db4a80ea6cb42293", version: 1 } } }]