서비스체인(Servicechain)을 운영하고 싶습니다. 어떻게 해야하나요?

서비스체인은 클레이튼의 확장성 솔루션으로 메인 네트워크 사용을 하기에는 부담되는 서비스를 위한 전용 블록체인을 구성할 수 있도록 합니다.

그래서 필요에 따라 자체적인 Private 네트워크 또는 Public 네트워크를 서비스체인으로 운영이 가능합니다.

서비스체인은 클레이튼과 같이 BFT 합의 알고리즘으로 동작이 되며 N개의 노드로 운영을 하는 경우에는 N = 2F + 1로써 F개의 노드의 장애에도 블록 생성은 유지가 됩니다.

하지만 4대 미만의 노드로 운영이 되는 경우에는 1대의 장애만으로도 블록생성이 되지 않습니다.

그래서 서비스 운용을 위해서는 4대의 노드 운영을 권장합니다.
(테스트나 특정 필요에 따라서 1대의 노드로 운영도 가능합니다.)

자세한 내용은 링크를 참조 해주십시요.

4 Likes

좋은 정보 감사합니다. 현재 저희는 SCN을 이용한 서비스를 준비 중입니다. 이와 관련하여

  1. SCN을 운영 시 SCN 내부에 발생하는 트랜잭션에 대한 가스비를 어떻게 처리하나요?
    (가스비를 "0"으로 설정할 방법이 있나요?)
  2. 현재 테스트용 스마트컨트랙트를 SCN에 배포하려고 합니다.
  • 일반적으로 스마트컨트랙트를 배포하기 위하여 Klay가 필요하다고 하는데 이는 메인넷이나 테스트넷과 필수적으로 연동되어 있어야 하나요?
  • 아니면 SCN 내부에 메인넷이나 테스트넷과 독립된 klay를 초기 발행하여 사용할 수 있나요?
  • klay 발행이 가능하다면 어떻게 처리해야 하는지 레퍼런스나 매뉴얼이 있는지 가능하다면 상세하게 자료를 요청 드립니다.

두서없이 질문 드렸습니다. 이 분야에 대한 처음 시작하는 입장으로 질문 드리는 점 양해 부탁 드립니다.

4 Likes

안녕하세요. 클레이튼 개발자 김경업입니다. 문의 주셔서 감사합니다. 문의 내용에 대해 설명드리면
서비스체인은 기본적으로 private chain으로 운영할때는 편의상 gas비를 0으로 설정하게 됩니다.
클레이튼에서 unit price라고 부르는 부분이죠.

Klaytn docs를 참고하셔서 아래와 같이 genesis 파일을 생성하시면 unit price가 0인 genesis 파일을 생성하실 수 있습니다.
Klaytn Docs

그리고 서비스체인상의 KLAY는 genesis 파일에 allocate된 주소가 소유를 하고 있으며 해당 주소의 private key는 keys 폴더의 nodekey와 keys_test의 testkey입니다.

해당 KLAY는 메인넷/테스트넷과는 관련없는 서비스체인 내에서의 KLAY입니다.
추가 발행은 되지 않으며 초기 발행금액으로만 동작이 되게 됩니다.
참고해주십시요. 추가 문의사항이 있으시면 언제든지 문의 부탁드립니다.

> homi setup local --cn-num 4 --test-num 1 --servicechain --p2p-port 30000 -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/0x7274c008eFB0f984b4cce86cB72F716C6a401354
Created :  homi-output/Klaytn.json
Created :  homi-output/Klaytn_txpool.json
> cat homi-output/scripts/genesis.json
{
    "config": {
        "chainId": 1000,
        "istanbul": {
            "epoch": 3600,
            "policy": 0,
            "sub": 22
        },
        "unitPrice": 0,
        "deriveShaImpl": 2,
        "governance": null
    },
    "timestamp": "0x5e5f9652",
    "extraData": "0x0000000000000000000000000000000000000000000000000000000000000000f89af85494b0b9234e9ff5a219f1e9cbb2d53ca31e68854d959422c8383b5dae24c4cf4d67d2f7065673d022d38394a96e23312ac4a525786b842bb282fe92a94e9aed94ef4d96485cd48259cc3a8127896fd19e84b9dc8bb8410000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0",
    "governanceData": null,
    "blockScore": "0x1",
    "alloc": {
        "22c8383b5dae24c4cf4d67d2f7065673d022d383": {
            "balance": "0x2540be400"
        },
        "7274c008efb0f984b4cce86cb72f716c6a401354": {
            "balance": "0x2540be400"
        },
        "a96e23312ac4a525786b842bb282fe92a94e9aed": {
            "balance": "0x2540be400"
        },
        "b0b9234e9ff5a219f1e9cbb2d53ca31e68854d95": {
            "balance": "0x2540be400"
        },
        "ef4d96485cd48259cc3a8127896fd19e84b9dc8b": {
            "balance": "0x2540be400"
        }
    },
    "number": "0x0",
    "gasUsed": "0x0",
    "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000"
4 Likes

안녕하세요. 친절하고 상세한 설명 감사드립니다.

추가적인 문의 사항이 있어 연락 드립니다.

클레이튼 기반의 토큰 발행에 관한 내용은(https://ko.docs.klaytn.com/smart-contract/token-standard) 에서 확인 하였습니다. 현재 SCN 및 서비스에서 사용할 토큰 발행을 기획중에 있습니다. 해당 페이지에서는 아직 서비스체인의 표준 토큰에 대한 자료가 없어서 어떻게 준비해야 할지 고민중입니다.

저희가 고려하고 있는 사항은

  1. 클레이튼과 호환 가능한 토큰 발행과 추가 발행 방법 확인
  2. SCN 내에서 해당 토큰을 사용
  3. 클레이와 교환 시 메인넷에서 처리
  4. 이를 위한 스마트컨트랙트 배포 위치(메인넷 or 서비스체인) 확인
  5. 토큰 발행 시 klay와 교환 비율(일부 코인에서 토큰 발행 시 코인과 토큰의 교환 비율이 초기 정해지면 바꿀수 없는 경우가 있음) 혹은 교환 비율 없이 발행 가능여부
    입니다.

이와 관련하여 각 항목 별로 가능한 예시나 자료 혹은 설명 부탁 드립니다.

반갑습니다.
말씀하신 현재 저희가 가이드 하는 토큰관련내용은 해당 문서가 맞으며 서비스체인 토큰에 관한내용은 아래 링크를 참조 부탁드립니다.
https://docs.klaytn.com/node/service-chain/references/value-transfer#erc-20-transfer

다만, 클레이튼에서 이더리움의 ERC-20와 같이 KIP-7/17이라는 표준 토큰을 이번달 중으로 확정할 예정이며 서비스체인에 대한 표준도 추후 확정 할 예정입니다.



https://github.com/klaytn/caver-js (Caver v1.4.0 에서도 지원을 할 예정입니다.)

해당 내용을 참고 부탁드리며, 추후에 token 발행시 해당 KIP에 맞는 token으로 deploy 해주시길 안내드립니다.

추가적으로 문의하신 내용을 하나씩 말씀드려보겠습니다.

  1. 클레이튼과 호환 가능한 토큰 발행과 추가 발행 방법 확인
    -> 현재 ERC20를 호환이 가능하며 신규 클레이튼 토큰 스탠다드는 곧 확정되고 Caver에서 지원할 예정입니다.
    추가발행은 Token contract를 deploy할때 설정한 minter가 권한을 가지고 할 수 있도록 할 수 있습니다.

  2. SCN 내에서 해당 토큰을 사용
    -> SCN내에서 사용할 토큰은 Cypress/Baobab과 동일하게 deploy하셔서 사용하시면 됩니다.
    다만 메인넷과 서비스체인간 token 전송을 하시기 위해서는 bridge 기능을 사용하시면 되겠습니다.
    아래 링크를 참조 부탁드립니다.
    https://docs.klaytn.com/node/service-chain/getting-started/value-transfer

  3. 클레이와 교환 시 메인넷에서 처리
    -> KLAY와 특정 token을 교환은 직접 구현하시거나 외부 솔루션을 사용하는 등 다양한 방법이 존재하므로 어떻게 처리를 해야된다는 가이드는 없습니다.

  4. 이를 위한 스마트컨트랙트 배포 위치(메인넷 or 서비스체인) 확인
    -> 메인넷의 KLAY와 Token 교환을 위해서라면 메인넷에 교환을 위한 contract가 존재해야 될것으로 보입니다. 하지만 다양한 방법이 있으므로 특정 가이드를 드릴 수 는 없습니다.
    다만, 체인간 token 전송을 위해서라면 기본적으로 체인마다 token과 bridge contract가 필요합니다. 아래 문서를 참조 부탁드립니다.
    https://docs.klaytn.com/node/service-chain/getting-started/value-transfer

  5. 토큰 발행 시 KLAY와 교환 비율(일부 코인에서 토큰 발행 시 코인과 토큰의 교환 비율이 초기 정해지면 바꿀수 없는 경우가 있음) 혹은 교환 비율 없이 발행 가능여부입니다.
    -> KLAY와 특정 token을 교환은 직접 구현하시거나 외부 솔루션을 사용하는 등 다양한 방법이 존재하므로 교환비율을 어떻게 해야된다는 가이드는 없습니다.

문의 주셔서 감사합니다.

1 Like

안녕하세요? 서비스체인과 관련하여 문의 사항이 있어 연락 드렸습니다.
현재 저희는 도큐멘트와 포럼을 통해 어드바이스 받은 내용이 기반하여 서비스체인을 구축 하였습니다.

현재 저희가 구축한 SCN에서 기본적인 토큰 발행후 하나의 계정에서 초당 몇개의 토큰 전송 트랜잭션을 처리 할 수 있는지 테스트를 진행하고 있습니다.
포럼에서 확인한 내용으로는 메인넷에서 klay 전송 기준 4000 tps 이상 처리할 수 있다고 하셨는데, 현재 저희가 구축한 SCN에서는 100tps 미만으로 처리 되고 있습니다.

  • SCN의 경우 권장 최소사항부터 진행하여 추가적인 옵션(AWS)으로 테스트 하였지만 결과는 동일합니다.
  • 테스트 시 1개의 계정에서 다수의 계정으로 토큰 전송 트랜잭션을 발생 시키는 구종 입니다.
  • 저희가 토큰 전송 트랜잭션 처리 속도를 올릴 수 있는 방안이 있을지 문의드립니다.

안녕하세요. 아래 정보가 있으면 답변을 드리기가 더 수월할것 같습니다.

  • SCN을 몇대로 구성하셨는지?
  • transaction은 한대로만 전송을 한 경우인지?
  • SCN의 conf파일은 어떻게 설정하셨느지?
  • Tx의 Nonce의 처리는 어떻게 하였는지?
  • SCN의 instance type은 무엇인지? (m5.2xlarge 또는 실제 물리서버의 spec)

해당 정보와 함께 새로운 thread로 글을 남겨주시면 구체적으로 답변을 드릴수 있을것 같습니다