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
  • 0 단계: 모든 노드에 SCN 설치하기
  • 1 단계: genesis.json 및 nodekey 생성
  • 2 단계: static-nodes.json 수정
  • 3 단계: 노드 초기화
  • 4 단계: nodekey 및 static-nodes.json 설치
  • 5 단계: 노드 설정
  • 6 단계: 노드 시작
  • (예) 토큰 전송 트랜잭션 생성 및 확인

Was this helpful?

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

4개 노드 서비스 체인 설정하기

PreviousGetting StartedNextConnecting to Baobab

Last updated 1 year ago

Was this helpful?

이 장에서는 여러 노드로 서비스체인을 구성하는 법을 설명합니다. chainID를 1002로 구별하여 4개의 컨센서스 노드로 구성된 서비스체인을 설치할 것입니다.

Prerequisites

  • 4대의 Linux 또는 MacOS 서버

  • 최소 하드웨어 요구 사항

    • CPU: 4코어(Intel Xeon 또는 동급), RAM: 16GB, HDD: 50GB

0 단계: 모든 노드에 SCN 설치하기

다운로드한 kscn 패키지를 압축 해제하고, 압축해제된 파일들을 각 노드로 복사합니다.

$ tar xvf kscn-vX.X.X-XXXXX-amd64.tar.gz
x kscn-XXXXX-amd64/
x kscn-XXXXX-amd64/conf/
x kscn-XXXXX-amd64/conf/kscnd.conf
x kscn-XXXXX-amd64/bin/
x kscn-XXXXX-amd64/bin/kscnd
x kscn-XXXXX-amd64/bin/kscn

편의상 바이너리 경로를 $PATH로 추가하겠습니다. 여러분의 노드에서는 실제 경로를 사용하세요.

$ export PATH=$PATH:~/path/to/kscn-XXXXX-amd64/bin
$ curl -o /etc/yum.repos.d/klaytn.repo https://packages.klaytn.net/config/rhel/7/prod.repo
  % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed
     100 118 100 118 0 0 1113 0 --:--:-- --:--:-- --:--:-- 1102 

$ yum list | grep klaytn 
packages-klaytn-prod 31 kB/s | 2.9 kB 00:00 
homi.x86_64           v1.8.0-0.el7      packages-klaytn-prod 
kbnd.x86_64           v1.8.0-0.el7      packages-klaytn-prod 
kcnd.x86_64           v1.8.0-0.el7      packages-klaytn-prod 
kcnd-baobab.x86_64    v1.8.0-0.el7      packages-klaytn-prod 
kend.x86_64           v1.8.0-0.el7      packages-klaytn-prod 
kend-baobab.x86_64    v1.8.0-0.el7      packages-klaytn-prod 
kgen.x86_64           v1.8.0-0.el7      packages-klaytn-prod 
kpnd.x86_64           v1.8.0-0.el7      packages-klaytn-prod 
kpnd-baobab.x86_64    v1.8.0-0.el7      packages-klaytn-prod 
kscnd.x86_64          v1.8.0-0.el7      packages-klaytn-prod 
ksend.x86_64          v1.8.0-0.el7      packages-klaytn-prod 
kspnd.x86_64          v1.8.0-0.el7      packages-klaytn-prod 

$ yum install kscnd

1 단계: genesis.json 및 nodekey 생성

homi 유틸리티를 사용해 필요한 파일을 생성할 것입니다. homi는 클레이튼 블록체인의 환경설정을 위해 필요한 스크립트, 환경설정 파일 그리고 프라이빗 키들을 자동으로 생성하는 유틸리티입니다. Linux와 Mac PC 모두에서 homi를 실행할 수 있습니다.

먼저 다운로드 한 homi 아카이브를 추출하십시오.

$ tar xvf homi-vX.X.X-XXXXX-amd64.tar.gz
x homi-XXXXX-amd64/
x homi-XXXXX-amd64/bin/
x homi-XXXXX-amd64/bin/homi

bin 폴더로 가서 파일 생성을 위해 다음의 옵션과 함께 homi를 실행하세요. homi setup --gen-type local --cn-num 4 --test-num 1 --servicechain --chainID 1002 --p2p-port 22323 -o homi-output Since Baobab's chainID is 1001, for convenience, the chainID of the ServiceChain constructed in this example is set to 1002. 실제 서비스를 출시하기 위해 블록체인을 운영하는 경우, 다른 서비스 체인과 겹치지 않도록 https://chainlist.defillama.com/에서 새로운 chainID를 등록한 뒤에 사용할 것을 권장합니다. 서비스체인의 포트는 기본값이 22323으로 설정되어 있습니다.

$ ./homi setup --gen-type local --cn-num 4 --test-num 1 --servicechain --chainID 1002 --p2p-port 22323 -o homi-output
Created :  homi-output/keys/passwd1
Created :  homi-output/keys/passwd2
Created :  homi-output/keys/passwd3
Created :  homi-output/keys/passwd4
Created :  homi-output/scripts/genesis.json
Created :  homi-output/keys/nodekey1
Created :  homi-output/keys/validator1
Created :  homi-output/keys/nodekey2
Created :  homi-output/keys/validator2
Created :  homi-output/keys/nodekey3
Created :  homi-output/keys/validator3
Created :  homi-output/keys/nodekey4
Created :  homi-output/keys/validator4
Created :  homi-output/scripts/static-nodes.json
Created :  homi-output/keys_test/testkey1
Created :  homi-output/keys_test/keystore1/0xdC7218621513f71d609653d22C39d79d558d9CDC
Created :  homi-output/Klaytn.json
Created :  homi-output/Klaytn_txpool.json

결과물 중 다음 단계에서 우리가 사용할 파일은 nodeky*, genesis.json 그리고 static-nodes.json입니다.

2 단계: static-nodes.json 수정

문서 편집기에서 homi-output/scripts/static-nodes.json를 열고 IP 주소 및 포트를 여러분 노드의 실제 값으로 업데이트 해주세요. 이 예제에서는 서비스체인의 각 SCN 노드의 IP가 아래 그림과 같다고 가정합니다. 여러분이 여기에 설정한 포트값은 4 단계에서 사용될 것이므로 꼭 기억해주세요.

[
     "kni://38693ad4b17ff77...23153@192.168.0.1:22323?discport=0\u0026ntype=cn",
     "kni://f36d969b16f7337...1329b@192.168.0.2:22323?discport=0\u0026ntype=cn",
     "kni://16e55d8921ab034...b2bec@192.168.0.3:22323?discport=0\u0026ntype=cn",
     "kni://0973e792a421c1d...bbd71@192.168.0.4:22323?discport=0\u0026ntype=cn"
]

static-nodes.json을 업데이트한 후, 결과 폴더(homi-output)를 모든 SCN에 업로드하세요. 이 예제에서는 SCN-L2-01, SCN-L2-02, SCN-L2-03, SCN-L2-04 노드입니다.

$ scp -r path/to/homi-output/ user@192.168.0.1:~/
$ scp -r path/to/homi-output/ user@192.168.0.2:~/
$ scp -r path/to/homi-output/ user@192.168.0.3:~/
$ scp -r path/to/homi-output/ user@192.168.0.4:~/

3 단계: 노드 초기화

이제 제네시스 파일을 사용해서 각 노드를 초기화해보겠습니다. 개별 노드에서 아래의 명령을 실행합니다. 홈 디렉토리에 체인 데이터와 로그를 저장하는 데이터 폴더를 생성합니다. --datadir 지시문을 이용해 데이터 폴더를 변경할 수 있습니다. 이 예제에서 우리는 데이터 폴더를 \~/data에 지정했습니다.

$ kscn --datadir ~/data init ~/homi-output/scripts/genesis.json

$ ls ~/data
keystore    klay        kscn

4 단계: nodekey 및 static-nodes.json 설치

모든 SCN에서 static-nodes.json을 데이터 폴더에 복사하세요.

$ cp ~/homi-output/scripts/static-nodes.json ~/data/

1 단계에서 우리는 4개의 노드키(nodekey)를 생성했습니다. 각각의 노드키를 SCN에 할당한 뒤, 매칭되는 nodekey를 각각 SCN 데이터 폴더에 복사하세요. 예를 들어 SCN-L2-01(192.168.0.1) 노드에는 nodekey1를 SCN-L2-02(192.168.0.2), SCN-L2-03(192.168.0.3) 그리고 SCN-L2-04(192.168.0.4)에는 nodekey2, nodekey3와 nodekey4를 각각 사용합니다.

$ cp ~/homi-output/keys/nodekey{1..4} ~/data/klay/nodekey

5 단계: 노드 설정

모든 SCN에서 kscn 설치 폴더로 이동하여 conf/kscnd.conf를 다음과 같이 편집하세요. PORT는 homi를 설치하는 데 사용하는 포트이며, SC_SUB_BRIDGE는 다음 장에서 브릿지를 연결하는 데 필요합니다. 현재는 0으로 설정하겠습니다. DATA_DIR에서 3 단계에 설정한 데이터 폴더를 입력합니다.

...
PORT=22323
...
SC_SUB_BRIDGE=0
...
DATA_DIR=~/data
...

6 단계: 노드 시작

모든 SCN에서 다음 명령을 실행하세요.

$ kscnd start
Starting kscnd: OK

klay.blockNumber를 보면서 블록 생성 상태를 확인할 수 있습니다. 조회 결과가 0이 아니라면 노드가 제대로 작동하는 것입니다.

$ kscn attach --datadir ~/data
> klay.blockNumber
10

노드를 중지하고 싶으면 kscnd stop 명령을 사용할 수 있습니다.

(예) 토큰 전송 트랜잭션 생성 및 확인

이제 4개의 노드로 구성된 서비스체인이 작동하고 있습니다. 서비스체인이 잘 동작하는지 확인하기 위해 서비스체인에서 토큰 전송 트랜잭션을 실행해 보겠습니다.

1 단계: 테스트 계정 가져오기

testkey1는 1 단계에서 homi를 통해 자동으로 생성되었습니다. homi에 의해 생성된 genesis.json에 설명되어 있듯, KLAY는 테스트 계정에 지급되어 있습니다.

$ kscn account import --datadir ~/data ~/homi-output/keys_test/testkey1
Your new account is locked with a password. Please give a password. Do not forget this password.
Passphrase:
Repeat passphrase:
Address: {80119c31cdae67c42c8296929bb4f89b2a52cec4}

2 단계: 계정 잠금 해제

계정의 잠금 해제는 testkey1를 가져온 SCN의 콘솔을 통해서만 가능합니다.

$ kscn attach --datadir ~/data
> personal.unlockAccount("80119c31cdae67c42c8296929bb4f89b2a52cec4")
Unlock account 80119c31cdae67c42c8296929bb4f89b2a52cec4
Passphrase:
true

3 단계: 트랜잭션을 보내고 잔액 확인하기

> klay.sendTransaction({from: "80119c31cdae67c42c8296929bb4f89b2a52cec4", to: "305c6cc464d5fe1e624679695a20d641a01688e1", value: 10})
"0xa0e7102e8f14200cec8d964aacc1c9ed7c22271078b2b213170c64333cbca8a3"
> klay.getBalance("305c6cc464d5fe1e624679695a20d641a01688e1")
10

가장 단순한 형태의 서비스 체인은 SCN를 하나만 가지고 있는 것입니다. 이 예제에서는 4개 노드를 가진 서비스 체인을 설명했습니다. 하지만 필요에 따라 단일 노드 서비스 체인도 구축할 수 있습니다. 1 단계 'genesis.json 및 nodekeys 생성하기'에서 --cn-num 4 대신 --cn-num 1를 homi에 전달하면 됩니다.

비잔틴 장애를 견뎌내기 위해서는 최소 4개의 노드가 필요합니다. BTF 알고리즘 하에서 높은 가용성을 보장하기 위한 SCN의 최소값은 4입니다. 2개의 SCN인 경우 하나에 장애가 생길 경우 다른 하나가 혼자서 합의를 이루지 못하기 때문에 가용성을 보장하지 못 합니다.

Download packages for kscn, homi binary from .

자세한 설명은 을 참조하세요.

SCN은 RHEL, CentOS와 Fedora와 같은 다양한 RPM 배포판을 제공합니다. 더 자세한 내용은 를 참조하십시오.

Download
시스템 요구사항
Installation