본문으로 건너뛰기
이 페이지는 영문에서 기계 번역되었으므로 오역이나 어색한 표현이 있을 수 있습니다. 따라서 정확한 정보는 영어 원문을 참조하시기 바랍니다. 또한 잦은 업데이트로 인해 일부 콘텐츠는 영문이 그대로 남아있을 수 있습니다. Crowdin에서 이 페이지의 번역을 개선하는 데 동참하여 도움을 주세요. (Crowdin translation page, Contributing guide)

고가용성(high availability, HA) 구성하기

서비스 체인에서 하나의 브리지만 사용하는 경우, 해당 브리지가 단일 장애 지점이 될 수 있습니다. 이 문제를 해결하기 위해 두 개 이상의 브리지로 HA 시스템을 구축하는 방법을 설명합니다. 아래 그림과 같이 브리지를 두 개 이상 쌍으로 연결하도록 구성하면 하나의 브리지 연결에 문제가 발생하더라도 다른 브리지를 통해 체인 간 데이터 앵커링과 값 전송이 정상적으로 작동할 수 있습니다.

전제 조건 ​

  • EN의 메인 브리지와 SCN의 서브 브리지가 연결되어 있어야 합니다. 연결되지 않은 경우, Kairos 연결을 참조하여 연결을 설정하세요.
  • 이 섹션에서는 Kairos와 서비스체인 사이에 브리지를 추가하는 방법을 설명합니다. 같은 방법으로 다른 브리지를 추가하여 HA를 설정할 수도 있습니다.

1단계: EN-SCN 간에 다른 브리지 추가 ​

Kairos에 연결하기에서는 브리지로 연결된 EN과 SCN을 각각 EN-01과 SCN-L2-01로 가정합니다. 이 섹션에서는 EN-02와 SCN-L2-02 사이에 브리지를 하나 더 추가하겠습니다. 동일한 절차를 따르므로 간략하게 설명하겠습니다.

EN-02를 빌드한 후 conf/kend.conf에서 SC_MAIN_BRIDGE를 1로 설정하고 EN-02에서 ken을 재시작합니다.


SC_MAIN_BRIDGE=1

다음 명령어로 EN-02의 KNI 정보를 확인합니다:


EN-02$ ken attach --datadir ~/data
> mainbridge.nodeInfo.kni
"kni://eb8f21df10c6562...25bae@[::]:50505?discport=0"

SCN-L2-02에 로그인하고, KNI가 EN-02인 main-bridges.json을 생성합니다. 대괄호로 묶은 JSON 배열 형식이어야 합니다.


SCN-L2-02$ echo '["kni://eb8f21df10c6562...25bae@192.168.0.5:50505?discport=0"]' > ~/data/main-bridges.json

SCN-L2-02의 셸에서 아래 설명과 같이 kscn-XXXXX-amd64/conf/kscnd.conf를 편집합니다. 브리지를 연결하려면 SC_SUB_BRIDGE를 1로 설정합니다. SC_PARENT_CHAIN_ID는 Baobob의 chainID 1001로 설정합니다. SC_ANCHORING_PERIOD는 앵커링 트랜잭션을 부모 체인에 전송할 주기를 결정하는 파라미터입니다. 이 예시에서는 자식 블록 10개마다 앵커 트랜잭션이 부모 체인(Kairos)에 전송됩니다.


...
SC_SUB_BRIDGE=1
...
SC_PARENT_CHAIN_ID=1001
...
SC_ANCHORING_PERIOD=10
...

EN-02에서 ken을 재시작하면 아래 그림과 같이 EN-02와 SCN-L2-02 사이에 브리지가 자동으로 연결되고 연결 지점부터 데이터 앵커링이 시작됩니다.

EN-02와 SCN-L2-02 사이에 브리지를 추가하고 나면 아래와 같이 노드 간 연결이 설정된 것을 확인할 수 있습니다.

2단계: 브릿지 컨트랙트 등록 및 구독 ​

위 그림과 같이 브리지 컨트랙트는 EN-01과 SCN-L2-01에만 등록되어 있습니다.

SCN-L2-02 콘솔에 접속하여 브리지 등록, 브리지 구독, 토큰 등록을 위한 API를 실행합니다. 브리지 컨트랙트와 토큰 컨트랙트는 크로스체인 밸류 전송 2단계에서 EN-01과 SCN-L2-01에 브리지 컨트랙트를 배포하는 과정에서 생성되었습니다.


$ kscn attach --datadir ~/data
> subbridge.registerBridge("0xCHILD_BRIDGE_ADDR", "0xPARENT_BRIDGE_ADDR")
null
> subbridge.subscribeBridge("0xCHILD_BRIDGE_ADDR", "0xPARENT_BRIDGE_ADDR")
null
> subbridge.registerToken("0xCHILD_BRIDGE_ADDR", "0xPARENT_BRIDGE_ADDR", "0xCHILD_TOKEN_ADDR", "0XPARENT_TOKEN_ADDR")
null

브리지 컨트랙트에서 추가 브리지 추가에 대한 정보를 업데이트해야 합니다. service-chain/value-transfer의 erc20/erc20-addOperator4HA.js 스크립트는 Cross-Chain Value Transfer에 배포된 브리지 계약에 추가 브리지의 연산자를 등록합니다.

먼저, SCN-L2-02에 있는 추가 브리지의 운영자 주소를 확인한 다음, 이를 common/bridge_info.json 파일의 bridges에 추가하십시오.


$ kscn attach --datadir ~/data
> subbridge.childOperator
"0x2ed72a9d7fe5da7672fd21567e07302431649b0b"
> subbridge.parentOperator
"0x5f4d5ac6da5d2d1f0af0e1bd8bc85a43a0ba41c5"


"bridges": [
{
"child": { "operator": "0x10221f7f9355017cd0c11444e7eecb99621bacce" },
"parent": { "operator": "0x3ce216beeafc62d20547376396e89528e1d778ca" }
},
{
"child": { "operator": "0x2ed72a9d7fe5da7672fd21567e07302431649b0b" },
"parent": { "operator": "0x5f4d5ac6da5d2d1f0af0e1bd8bc85a43a0ba41c5" }
}
]

교량 계약의 소유자만이 운영자를 등록할 수 있습니다. erc20-deploy.js는 브리지 계약의 소유권을 SCN-L2-01 운영자에게 이전했으므로, 이 스크립트는 해당 운영자의 키로 서명되어야 합니다. SCN-L2-01은 이들을 ~/data/child_bridge_account와 ~/data/parent_bridge_account에 저장하며, 각 디렉터리에는 키스토어 파일과 해당 비밀번호 파일이 포함되어 있습니다. 이 두 디렉터리를 스크립트가 실행되는 컴퓨터로 복사한 다음, 해당 경로를 스크립트에 전달하십시오. erc20-deploy.js에 의해 transfer_conf.json 파일이 생성된 erc20 디렉터리에서 스크립트를 실행하십시오.


$ cd erc20
$ CHILD_OWNER_KEYSTORE=/path/to/child_bridge_account \
PARENT_OWNER_KEYSTORE=/path/to/parent_bridge_account \
node erc20-addOperator4HA.js

경고

브리지 계정 디렉토리에는 운영자 키스토어와 해당 평문 비밀번호가 포함되어 있어, 이를 통해 운영자 계정에 대한 완전한 제어 권한을 얻을 수 있습니다. 스크립트를 실행한 후 복사본을 삭제하십시오.

여러 개의 브리지가 있는 경우 임계값을 설정하면 보다 안전하게 값 전송을 제공할 수 있습니다. 임계값을 초과하는 오퍼레이터가 정상적으로 값 전송을 요청하는 경우에만 값 전송을 활성화할 수 있습니다. 예를 들어, 현재 예시와 같이 브리지 쌍이 2개이고 임계값을 2로 설정하면 두 개 모두 정상적으로 요청이 들어올 때만 값 전송을 제공할 수 있습니다. 즉, 하나의 브리지가 공격을 받아 비정상적인 요청을 보내더라도 이를 방지할 수 있습니다. 이 스크립트는 bridge_info.json에 있는 교량 수를 임계값으로 설정합니다. 다른 값을 사용하려면 실행 시 THRESHOLD를 설정하십시오. 예: THRESHOLD=1 node erc20-addOperator4HA.js.

이 스크립트는 SCN-L2-01의 운영자 계정에서 노드 외부로 트랜잭션을 전송합니다. 작업이 완료된 후, SCN-L2-01에서 kscn을 재시작하여 해당 서브브릿지가 운영자 계정의 논스를 다시 불러오도록 하십시오.


SCN-L2-01$ kscnd stop
SCN-L2-01$ kscnd start

등록이 완료되면 아래 그림과 같이 EN-02와 SCN-L2-02에 모두 브리지 컨트랙트가 등록되어 HA를 구성합니다.

HA를 위해 두 개 이상의 브리지 쌍이 연결되면 동일한 블록에 대한 데이터 앵커링 트랜잭션이 두 번 이상 발생하며, 밸류 전송 트랜잭션도 여러 번 발생할 수 있습니다. 즉, 추가 수수료가 필요합니다.

페이지를 개선해 주세요