Klaytn 문서 아카이브
시작하기스마트 컨트랙트노드 운영dApp 개발자
  • Klaytn 문서
  • -
    • Klaytn Overview
      • 왜 클레이튼일까요?
      • 클레이튼 디자인
        • 합의 메커니즘
        • 계정
        • 트랜잭션
          • 기본
          • 수수료 위임 트랜잭션
          • 수수료 부분 위임 트랜잭션
          • Ethereum
        • 연산
          • 클레이튼 스마트 컨트랙트
          • 실행 모델(Execution Model)
          • Computation Cost
            • 연산 비용 (구 버전 문서)
          • Klaytn 가상머신
            • 클레이튼 가상머신 (구 버전 문서)
        • 스토리지
        • 트랜잭션 비용
          • 트랜잭션 비용 (구 버전 문서)
        • 클레이튼의 네이티브 코인 - KLAY
        • 토큰 이코노미
        • 거버넌스
        • 다중 채널
        • KNI
      • 확장성 솔루션
    • Getting Started
      • Deploying Smart Contract Using Foundry
      • Deploying Smart Contract Using Hardhat
      • Deploying Smart Contract Using KEN
        • Launch an Endpoint Node
        • Top up your Account
        • Install Development Tools
        • Deploy a Smart Contract
        • Check the Deployment
        • Account Management
          • Creating Accounts
          • Managing Accounts
      • Development Environment
      • Getting KLAY
    • 스마트 컨트랙트
      • 솔리디티 - 스마트 컨트랙트 언어
      • 미리 컴파일된 컨트랙트
        • 미리 컴파일된 컨트랙트 (구 버전 문서)
      • IDE 및 도구
        • Truffle
      • 샘플 컨트랙트
        • KlaytnGreeter
        • ERC-20
          • 1. ERC-20 스마트 컨트랙트 작성
          • 2. 스마트 컨트랙트 배포
          • 3. 클레이튼 월렛에서 ERC-20 토큰 사용
        • ERC-721
          • 1. ERC-721 스마트 컨트랙트 작성
          • 2. Deploying Smart Contract
      • 테스트 가이드
      • 배포 가이드
      • 클레이튼 호환 토큰
      • 이더리움 컨트랙트 이식
    • Run a Node
      • 배포
        • Endpoint Node
          • 시스템 요구사항
          • 설치 가이드
            • 다운로드
            • Installation Guide
            • 환경설정
            • EN 실행하기
            • 설치 테스트하기
          • ken CLI 명령어
          • JSON-RPC API
        • 코어 셀
          • System Requirements
          • 네트워크 설정
          • Installation Guide
            • Download
            • 설치하기 전에
            • 컨센서스 노드 설정
              • Installation Guide
              • Configuration
              • CN 실행하기
            • 프록시 노드 설정
              • Installation Guide
              • Configuration
              • PN 실행하기
            • 코어 셀 테스트하기
          • 모니터링 설정
          • H/A 설정
        • Service Chain
          • Getting Started
            • 4개 노드 서비스 체인 설정하기
            • Connecting to Baobab
            • 크로스체인 토큰 전송
            • HA(High Availability) for ServiceChain
            • Nested ServiceChain
            • Value Transfer between Sibling ServiceChains
          • 참조 매뉴얼
            • System Requirements
            • Download
            • SCN User Guide
              • Installation
              • Configuration
              • SCN 실행 및 중지하기
              • 노드 상태 확인하기
              • kscn commands
              • homi commands
            • SPN/SEN User Guide
              • Installation
              • Configuration
              • 노드 실행 및 중지
              • Checking Node Status
            • Bridge Configuration
            • 앵커링
            • KAS 앵커링
            • 토큰 전송
            • Configuration Files
            • 로그 파일
            • Genesis JSON
            • 업그레이드 및 하드포크
          • How-To Guides
        • Download Node Packages
          • v1.11.1
          • v1.11.0
          • v1.10.2
          • v1.10.1
          • v1.10.0
          • v1.9.1
          • v1.9.0
          • v1.8.4
          • v1.8.3
          • v1.8.2
          • v1.8.1
          • v1.8.0
          • v1.7.3
          • v1.7.2
          • v1.7.1
          • v1.7.0
          • v1.6.4
          • v1.6.3
          • v1.6.2
          • v1.6.1
          • v1.6.0
          • v1.5.3
          • v1.5.2
          • v1.5.1
          • v1.5.0
          • v1.4.2
          • v1.4.1
          • v1.4.0
          • v1.3.0
          • v1.2.0
          • v1.1.1
          • v1.0.0
          • v0.9.6
          • v0.8.2
    • 운영 가이드
      • Configuration
      • 노드 로그
      • Log operation
      • 에러 및 문제 해결
      • Klaytn Command
      • Chaindata Change
      • Chaindata Migration
    • dApp Developers
      • JSON-RPC APIs
        • API references
          • eth
            • Caution
            • Account
            • Block
            • Transaction
            • Config
            • Filter
            • Gas
            • Miscellaneous
          • klay
            • Account
            • Block
            • Transaction
              • Working with Klaytn Transaction Types
            • Configuration
            • Filter
            • Gas
            • Miscellaneous
          • net
          • debug
            • Logging
            • Profiling
            • Runtime Tracing
            • Runtime Debugging
            • VM Tracing
            • VM Standard Tracing
            • Blockchain Inspection
          • admin
          • personal
          • txpool
          • governance
        • Service Chain API references
          • mainbridge
          • subbridge
        • Transaction Error Codes
      • RPC Service Providers
        • Public Endpoints
      • SDK & Libraries for interacting with Klaytn Node
        • caver-js
          • Getting Started
          • Sending a sample transaction
          • API references
            • caver.account
            • caver.wallet
              • caver.wallet.keyring
            • caver.transaction
              • Basic
              • Fee Delegation
              • Partial Fee Delegation
            • caver.rpc
              • caver.rpc.klay
              • caver.rpc.net
              • caver.rpc.governance
            • caver.contract
            • caver.abi
            • caver.kct
              • caver.kct.kip7
              • caver.kct.kip17
              • caver.kct.kip37
            • caver.validator
            • caver.utils
            • caver.ipfs
          • caver-js ~v1.4.1
            • Getting Started (~v1.4.1)
            • API references
              • caver.klay
                • Account
                • Block
                • Transaction
                  • Legacy
                  • Value Transfer
                  • Value Transfer Memo
                  • Account Update
                  • Smart Contract Deploy
                  • Smart Contract Execution
                  • Cancel
                • Configuration
                • Filter
                • Miscellaneous
              • caver.klay.net
              • caver.klay.accounts
              • caver.klay.Contract
              • caver.klay.KIP7
              • caver.klay.KIP17
              • caver.klay.abi
              • caver.utils (~v1.4.1)
            • Porting from web3.js
        • caver-java
          • Getting Started
          • API references
          • caver-java ~v1.4.0
            • Getting Started (~v1.4.0)
            • Porting from web3j
        • ethers.js
        • web3.js
      • Tutorials
        • Klaytn Online Toolkit
        • Fee Delegation Example
        • Count DApp
          • 1. Environment Setup
          • 2. Clone Count DApp
          • 3. Directory Structure
          • 4. Write Smart Contract
          • 5. Frontend Code Overview
            • 5-1. Blocknumber Component
            • 5-2. Auth Component
            • 5-3. Count Component
          • 6. Deploy Contract
          • 7. Run App
        • Klaystagram
          • 1. Environment Setup
          • 2. Clone Klaystagram DApp
          • 3. Directory Structure
          • 4. Write Klaystagram Smart Contract
          • 5. Deploy Contract
          • 6. Frontend Code Overview
          • 7. FeedPage
            • 7-1. Connect Contract to Frontend
            • 7-2. UploadPhoto Component
            • 7-3. Feed Component
            • 7-4. TransferOwnership Component
          • 8. Run App
        • Building a Buy Me a Coffee dApp
          • 1. Project Setup
          • 2. Creating a BMC Smart Contract
          • 3. Testing the contract using scripts
          • 4. Deploying BMC Smart contract
          • 5. Building the BMC Frontend with React and Web3Onboard
          • 6. Deploying Frontend code on IPFS using Fleek
          • 7. Conclusion
        • Migrating Ethereum App to Klaytn
        • Connecting MetaMask
        • Connecting Remix
        • Verifying Smart Contracts Using Block Explorers
      • Developer Tools
        • Wallets
          • Kaikas
          • Klaytn Wallet
          • Klaytn Safe
            • Klaytn Safe Design
            • Create a Safe
            • Add assets
            • Send assets
            • Contract Interaction
            • Transaction Builder
            • Points to Note
            • Frequently Asked Questions
          • Wallet Libraries
            • Web3Auth
            • Web3Modal
            • Web3-Onboard
        • Oracles
          • Orakl Network
          • Witnet
          • SupraOracles
        • Block Explorers
          • Klaytnscope
          • Klaytnfinder
        • Klaytn Contracts Wizard
    • Glossary
  • ---
    • Klaytn 하드포크
    • 클레이튼 2.0
      • 메타버스 패키지
      • 완결성과 개선 사항들
      • 이더리움 호환성
      • 거버넌스 탈중앙화
      • 대규모 에코 펀드
    • FAQ
    • 오픈 소스
    • 이용약관
    • 지원 언어
  • ℹ️최신 Klaytn 문서
Powered by GitBook
On this page
  • Prerequisites
  • 1단계: EN-SCN 간에 다른 브릿지 추가
  • 2단계: 브릿지 스마트 컨트랙트 등록 및 구독

Was this helpful?

  1. -
  2. Run a Node
  3. 배포
  4. Service Chain
  5. Getting Started

HA(High Availability) for ServiceChain

Previous크로스체인 토큰 전송NextNested ServiceChain

Last updated 2 years ago

Was this helpful?

ServiceChain에서 하나의 브리지만 사용하는 경우, 해당 브리지가 단일 실패 지점이 될 수 있습니다. 이를 해결하기 위해 두 개 이상의 브리지로 고가용성 시스템을 구축하는 방법을 설명합니다. 아래 그림과 같이 최소 두개 이상의 브릿지가 연결되어 있다면, 한 브릿지가 연결 상 문제가 있다고 하더라도 다른 브릿지를 통해 체인간 데이터 앵커링 및 토큰 전송이 정상적으로 수행될 수 있습니다.

Prerequisites

  • 이번 섹션에서는 Baobab과 ServiceChain 사이에 추가로 브릿지를 하나 더 연결하는 방법을 설명합니다. <0>Baobab 연결</0>과 같은 방법으로 브리지를 하나 더 추가하여 HA를 구성할 수 있습니다.

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

EN-02의 conf/kend.conf 파일에서 SC_MAIN_BRIDGE을 1로 설정하고, 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에 접속한 후 EN-02의 KNI 정보로 main-bridges.json 파일을 만듭니다. 해당 파일은 대괄호 속에 KNI 정보가 있는 형식이라는 점에 주의해야 합니다.

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는 부모 체인(Baobab)으로 앵커링 트랜잭션을 보낼 주기를 설정하는 매개변수입니다. 이 예제에서 앵커 트랜잭션은 10개의 자식 블록마다 부모 체인(Baobab)으로 전송됩니다.

...
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의 브릿지만 등록되어 있습니다.

$ 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
// register operator
await conf.child.newInstanceBridge.methods.registerOperator("0xCHILD_BRIDGE_ADDR").send({ from: conf.child.sender, gas: 100000000, value: 0 });
await conf.parent.newInstanceBridge.methods.registerOperator("0xPARENT_BRIDGE_ADDR").send({ from: conf.parent.sender, gas: 100000000, value: 0 });

브리지가 여러 개인 경우 임계값을 설정하여 더욱 안전하게 토큰 전송을 할 수 있습니다. 임계값 이상의 운영자들이 토큰 전송을 요청하는 경우에만 토큰 전송이 가능해 집니다. 예를 들어 현재 예제와 같이 브릿지가 2개 있고 임계값이 2로 설정되어 있으면, 두 브릿지의 오퍼레이터들이 모두 정상적으로 토큰 전송을 요청해야만 토큰 전송이 가능합니다. 만약 하나의 브릿지가 공격을 받아서 비정상적인 요청을 보내는 경우에 토큰 전송이 실행되지 않습니다. 임계값은 기본값은 1입니다. 아래 코드의 주석을 제거하고 임계값을 설정하는 코드를 실행하면 브릿지 컨트랙트의 임계값을 변경할 수 있습니다. .

// // set threshold
// await conf.child.newInstanceBridge.methods.setOperatorThreshold(0, "your threshold number").send({ from: conf.child.sender, gas: 100000000, value: 0 });
// await conf.parent.newInstanceBridge.methods.setOperatorThreshold(0, "your threshold number").send({ from: conf.parent.sender, gas: 100000000, value: 0 });

아래 그림과 같이 브릿지 컨트랙트에 EN-02와 SCN-L2-02 사이의 브릿지가 등록되어 HA를 구성합니다.

HA를 위해 두 개 이상의 브릿지가 연결되면 동일한 블록에 대한 데이터 앵커링 트랜잭션이 두 번 이상 발생하고, 토큰 전송을 위한 트랜잭션도 여러 번 발생할 수 있습니다. 즉, HA 구성으로 인해 수수료가 더 발생할 수 있다는 점에 주의하셔야 합니다.

EN의 메인 브릿지와 SCN의 서브 브릿지가 연결되어 있습니다. If it's not, please refer to to establish the connection.

In , we assume that the EN and the SCN connected by a bridge as EN-01 and SCN-L2-01, respectively. 이번 섹션에서는 EN-02와 SCN-L2-02 사이에 또 다른 브릿지를 추가합니다. 이전과 동일한 절차로 진행되므로 여기서는 간단히 설명합니다.

SCN-L2-02의 kscn 콘솔에 접속하여 브릿지 등록, 구독 및 토큰 등록을 위한 명령어를 실행합니다. The bridge and token contract were created while deploying the bridge contract with EN-01 and SCN-L2-01 in step 2 of .

추가된 브릿지에 대한 정보가 브릿지 컨트랙트에 반영되어야 합니다. 의 erc20/erc20-addOperator4HA.js 파일에 추가된 브릿지의 자식 및 부모 오퍼레이터 정보로 변경하고 node erc20-addOperator4HA.js를 실행합니다.

Baobab connection
Connecting to Baobab
Cross-Chain Value Transfer
service-chain-value-transfer-example