Upgrade to Pro — share decks privately, control downloads, hide ads and more …

서비스체인 구성과 배포

kakao
December 09, 2022

서비스체인 구성과 배포

#Servicechain #Layer2 #Klaytn #Cypress #Sidechain

크러스트유니버스에서 클레이튼 메인넷의 Layer2인 서비스 체인을 오픈소스로 공개하고 있습니다. 메타버스 블록체인의 주를 이루는 게임에서 서비스 체인을 적용하는 사례가 늘어나고 있습니다. Web 2.0 서비스들이 Web 3.0으로 이동하면서 높은 TPS와 짧은 응답시간을 제공하는 서비스 체인에 대한 관심이 높아지고 있는 시점에 서비스 체인을 어떻게 구성해야 할 것인가와 설치와 배포를 할 수 있는 방법들에 대해 소개하려고 합니다.

발표자 : henry.new

크러스트유니버스에서 서비스체인 개발을 하고 있는 헨리입니다. 전에는 카카오에서 개발을 했고 최근에 클레이튼 메인넷과 카카오의 경험을 바탕으로 기존의 다양한 Web 2.0 서비스들을 빠르게 블록체인 생태계로 이동할 수 있게 할 수 있는 일들을 고민하고 있습니다.

kakao

December 09, 2022
Tweet

More Decks by kakao

Other Decks in Programming

Transcript

  1. 장동준 henry.new


    크러스트 유니버스
    Copyright 2022. Kakao Corp. All rights reserved. Redistribution or public display is not permitted without written permission from Kakao.
    서비스체인 구성과 배포
    if(kakao)2022

    View full-size slide

  2. Henry, 장동준


    2011부터 카카오 행성 시작


    카카오톡, 카카오스토리, 카카오게임, 장보기, 소셜임팩트


    크러스트유니버스로 올해 이동


    클레이튼 메인넷의 서비스체인 개발


    카카오의 경험을 바탕으로 기존의 Web 2.0 서비스들이 블록체인 생태계로 쉽
    게 온보딩을 할 수 있도록 도와 주고 싶습니다

    View full-size slide

  3. 클레이튼 소개


    서비스체인 소개


    서비스체인 배포


    서비스체인 로컬 배포


    서비스체인 문서

    View full-size slide

  4. 클레이튼 소개

    View full-size slide

  5. 클레이튼 소개


    서비스체인 소개


    서비스체인 배포


    서비스체인 로컬 배포


    서비스체인 문서

    View full-size slide

  6. 6
    1 sec 4,000
    블록 생성 TPS

    View full-size slide

  7. 7
    이더리움
    게임 개발자
    오픈소스 패키지 이더리움 동등성 개발자 커뮤니티

    View full-size slide

  8. 8
    v1.8.0 EthTxType
    Magma
    v1.9.0
    Kore
    v1.10.0
    2022 하드포크
    3월 이더리움 호환
    8월 동적 가스비
    계획중 새로운 거버넌스 시스템

    View full-size slide

  9. 서비스체인 소개

    View full-size slide

  10. 클레이튼 소개


    서비스체인 소개


    서비스체인 배포


    서비스체인 로컬 배포


    서비스체인 문서

    View full-size slide

  11. 11
    Layer2
    “서비스를 위한 블록체인”

    View full-size slide

  12. 12
    독립 체인 Public L2
    Private L2
    서비스체인

    View full-size slide

  13. 13
    특징
    비용
    대부분의 트랜젝션은 서비스체인에서 발생하도록 구성이 가능하여 사이프레스 메인넷의 가스비를
    적게 이용할 수 있습니다
    성능
    서비스체인은 사이프레스와 동일하게 구현되어 있습니다


    게임 플레이 정보를 블록체인에 저장 할 수 있는 높은 TPS와 빠른 응답 시간을 제공합니다
    보안
    서비스체인의 블록 데이터는 사이프레이스 메인넷과 앵커링을 통해 데이터 무결성을 높여 줍니다


    프라이빗하게 서비스체인을 구성하면 네트워크와 데이터 접근을 제어할 수 있습니다
    패키징
    원하는 형태의 서비스체인 설치를 단일 스크립트로 도와줍니다


    체인 아이디를 다르게 설정하고 원하면 가스비를 사용하지 않도록 0으로 설정할 수 있습니다


    다양한 네트워크 토폴로지 구성이 가능하도록 예제와 스크립트를 제공하고 있습니다
    테스트
    여러 토큰들을 전송 테스트 할 수 있는 예제를 제공하고 있습니다


    로컬 환경에서 프라이빗 체인을 구성하고 디버깅과 테스트가 가능한 개발 환경을 만들 수 있습니다

    View full-size slide

  14. 정성적 표현
    특징
    성능
    비용
    패키징
    테스트
    보안
    14

    View full-size slide

  15. 15
    서비스체인을 사용하는 게임들
    A3: Still Alive Ni No Kuni: Cross Worlds
    MIR4
    MarbleX
    Monster Arena
    Others
    More & More
    Every Farm
    Gaming Ecosystem : https:/
    /klaytn.foundation/ecosystem/

    View full-size slide

  16. 16
    Wemix
    MBX Bora
    MBX Link WEMIX Credit tBORA
    서비스체인을 사용하는 게임들의 메인 토큰들

    View full-size slide

  17. 17
    메인체인
    CN Consensus Node
    PN Proxy Node
    EN Endpoint Node
    네트워크 노드
    서비스체인
    SCN Service Chain Consensus Node
    SPN Service Chain Proxy Node
    SEN Service Chain Endpoint Node

    View full-size slide

  18. 18
    Main Chain
    Service Chain
    CN CN
    ...
    PN PN ...
    EN
    ...
    EN
    Main
    Bridge
    CN
    PN
    EN
    SCN
    SCN
    ...
    SPN
    SPN ...
    SEN
    ...
    SEN
    Sub
    Bridge
    SCN
    SPN
    SEN
    네트워크 구성도

    View full-size slide

  19. 19
    브릿지 구성
    Token
    Contract
    Main Chain
    Bridge
    Contract
    Main
    Bridge
    Token
    Contract
    Service Chain
    Bridge
    Contract
    Sub


    Bridge

    View full-size slide

  20. Service Chain
    20
    P = 앵커링 주기 (ex. 10 blocks)
    앵커링
    #1P #2P #3P
    Block B B B
    Block B B B
    Block B B B
    Block B B B
    Block
    Block B B B
    Block B B B
    Block B B B
    Block
    Main Chain
    Anchoring Transaction


    - Block Number


    - Block Hash


    - Transaction Hash


    - Receipt Hash



    View full-size slide

  21. 서비스체인 배포

    View full-size slide

  22. 클레이튼 소개


    서비스체인 소개


    서비스체인 배포


    서비스체인 로컬 배포


    서비스체인 문서

    View full-size slide

  23. 23
    Service Chain
    CN CN
    ...
    PN PN ...
    EN
    ...
    EN
    Main
    Bridge
    CN
    PN
    EN
    SCN
    SCN
    ...
    SPN
    SPN ...
    SEN
    ...
    SEN
    Sub
    Bridge
    SCN
    SPN
    SEN
    Main Chain
    서비스체인 브리지

    View full-size slide

  24. 24
    Service Chain
    CN CN
    ...
    PN PN ...
    EN
    ...
    EN
    Main
    Bridge
    CN
    PN
    EN
    SCN
    SCN
    ...
    SPN
    SPN ...
    SEN
    ...
    SEN
    Sub
    Bridge
    SCN
    SPN
    SEN
    Node
    Binary
    Node
    Conf
    VM
    Bridge
    Conf
    Test
    VT
    Main Chain
    노드와 브리지 구성

    View full-size slide

  25. klaytn
    -
    terraform value
    -
    transfer
    klaytn
    -
    ansible
    Service Chain
    CN CN
    ...
    PN PN ...
    EN
    ...
    EN
    Main
    Bridge
    CN
    PN
    EN
    SCN
    SCN
    ...
    SPN
    SPN ...
    SEN
    ...
    SEN
    Sub
    Bridge
    SCN
    SPN
    SEN
    Node
    Binary
    Node
    Conf
    VM
    Bridge
    Conf
    Test
    VT
    Main Chain
    세가지 툴들
    25

    View full-size slide

  26. klaytn
    -
    terraform

    View full-size slide

  27. 클레이튼 소개


    서비스체인 소개


    서비스체인 배포


    - klaytn
    -
    terraform


    - klaytn
    -
    ansible


    - value
    -
    transfer


    - servicechain
    -
    deploy


    서비스체인 로컬 배포


    서비스체인 문서

    View full-size slide

  28. 28
    https:/
    /github.com/klaytn/klaytn
    -
    terraform

    View full-size slide

  29. 29
    테라폼 소개
    - 테라폼은 인프라를 코드로 관리하기 위한 툴입니다


    - 테라폼을 사용하면 다양한 클라우드 서비스의 리소스
    를 코드로 관리할 수 있습니다
    Image from : https:/
    /www.terraform.io

    View full-size slide

  30. 30
    - klaytn
    -
    terraform은 서비스체인 구성에 필요한 VM을 준비할 때에 사용하는 테라폼 모듈입니다


    - AWS에서 구성이 가능합니다


    - 현재 Azure를 지원하기 위한 작업 중입니다
    klaytn
    -
    terraform 기능

    View full-size slide

  31. 31
    - EN + 4SCN

    바오밥 EN을 1개 구성하고 4개의 SCN을 구성, 기본적인 브릿지 연결을 해 볼 수 있습니다


    - EN + SCN + SPN + SEN

    하나의 Web 3.0 서비스를 구성하고 싶은 경우에 바오밥이나 사이프레이스와 연결할 수 있는

    대표적인 실 사용 구성입니다. 원하는 노드의 개수로 구성이 가능합니다


    - L1(CN + PN + EN) + L2(SCN + SPN + SEN)

    독립적인 프라이빗 체인을 구성하여 서비스체인과의 브릿지 테스트, 디버깅이 가능합니다


    - L1(CN + PN + EN) + L2(SCN + SPN + SEN) + L3(SCN + SPN + SEN)

    여러개의 게임 토큰과 게임 NFT를 각자 운영하고 싶은 경우에 효과적인 구성입니다
    klaytn
    -
    terraform 네트워크 토폴로지

    View full-size slide

  32. 32
    EN + 4SCN 구성
    Service Chain
    Sub
    Bridge
    SCN
    Main
    Bridge
    Main Chain


    (Baobab/Cypress)
    EN
    SCN SCN
    SCN
    Boabab은 테스트넷입니다. Cypress는 클레이튼 메인넷입니다.

    View full-size slide

  33. 33
    EN + SCN + SPN + SEN 구성
    Service Chain
    Sub
    Bridge
    SEN
    Main
    Bridge
    Main Chain


    (Baobab/Cypress)
    SEN
    EN
    SPN
    SCN
    SCN

    ⋮ ⋮
    SPN

    View full-size slide

  34. 34
    L1(CN + PN + EN) + L2(SCN + SPN + SEN) 구성
    Main Chain(Layer1)
    Main
    Bridge
    EN
    Sub
    Bridge
    Service Chain
    EN
    SEN
    PN CN
    CN
    ⋮ ⋮

    PN
    SPN

    SPN
    SCN
    SCN

    SEN

    View full-size slide

  35. 35
    L1 + L2 + L3 구성
    Main Chain(Layer1)
    EN
    PN
    CN

    PN


    CN
    Service Chain(Layer2)
    SEN
    SEN
    SPN
    SCN

    Sub
    Bridge
    SPN


    SCN
    Service Chain(Layer3)
    SEN
    SPN
    SCN

    SPN


    SCN
    SEN
    Main
    Bridge
    EN
    Main
    Bridge
    SEN
    Sub
    Bridge

    View full-size slide

  36. klaytn
    -
    ansible

    View full-size slide

  37. 클레이튼 소개


    서비스체인 소개


    서비스체인 배포


    - klaytn
    -
    terraform


    - klaytn
    -
    ansible


    - value
    -
    transfer


    - servicechain
    -
    deploy


    서비스체인 로컬 배포


    서비스체인 문서

    View full-size slide

  38. 38
    https:/
    /github.com/klaytn/klaytn
    -
    ansible

    View full-size slide

  39. 39
    Ansible 소개
    - 앤서블은 여러개의 리모트 머신에 일괄로 명령을 실행
    하기 위한 툴입니다


    - 여러개의 리모트 머신들에게 SSH 세션을 열고, 명령
    어를 입력하는 등의 관리 과정을 코드로 자동화를 할
    수 있습니다
    Image from : https:/
    /www.terraform.io
    Ansible
    Host A


    done this


    done that
    Host B


    done this


    done that
    5.6.7.8
    1.2.3.4
    Playbook
    SSH
    do this


    do that
    1.2.3.4


    5.6.7.8
    Inventory

    View full-size slide

  40. 40
    - Klaytn
    -
    ansible은 klaytn
    -
    terraform으로 만든 VM에 노드들을 설치하고 설정하기 위한 앤서블 플레이북입니다.


    - CN, PN, EN, SCN, SPN, SEN 노드 바이너리 설치


    - 노드의 설정 파일 세팅


    - 부모와 자식 체인간에 브릿지 설정


    - 그라파나 모니터링 툴 설정
    klaytn
    -
    ansible 기능

    View full-size slide

  41. value
    -
    transfer

    View full-size slide

  42. 클레이튼 소개


    서비스체인 소개


    서비스체인 배포


    - klaytn
    -
    terraform


    - klaytn
    -
    ansible


    - value
    -
    transfer


    - servicechain
    -
    deploy


    서비스체인 로컬 배포


    서비스체인 문서

    View full-size slide

  43. 43
    https:/
    /github.com/klaytn/servicechain
    -
    value
    -
    transfer
    -
    examples

    View full-size slide

  44. 44
    토큰 전송(밸류 트랜스퍼)
    Token Content
    ERC-20 Fungible Token
    ERC-721 Non
    -
    Fungible Token
    KIP-7 Fungible Token
    KIP-17 Non
    -
    Fungible Token
    KLAY The main internal transferable cryptocurrency of Klaytn
    ERC : Ethereum Request for Comments


    KIP : Klaytn Improvement Proposals
    Value transfer examples : https:/
    /github.com/klaytn/servicechain
    -
    value
    -
    transfer
    -
    examples

    View full-size slide

  45. 45
    - servicechain
    -
    deploy를 사용하면 자동으로 bridge_info.json
    에 값들이 설정이 된다


    - 1) 밸런스가 충분히 있는 서비스체인에서 토큰을 보낼 개인 키


    - 2) 밸런스가 충분히 있는 부모 체인에서 토큰을 보낼 개인 키, 월렛에
    서 생성한 개인 키도 가능


    - 3) 브릿징이 되어 있는 부모와 자식 노드의 RPC 접속 정보


    - 브리지 오퍼레이터 배열은 HA 구성 등으로 여러개의 브릿지가 구성
    되어 있는 경우에 다중 오퍼레이터 정보로 설정한다


    - 4) 서비스체인의 서브브릿지에서 관리하는 자식 브릿지 오퍼레이터,
    subbridge.childOperator 값이다


    - 5) 서비스체인의 서브브릿지에서 관리하는 부모 브릿지 오퍼레이터,
    subbridge.parentOperator 값이다
    bridge
    -
    info.json
    {


    "sender": {


    "child": {


    "key": "0x6a98...8cf1"


    },


    "parent": {


    "key": "0x1dd4...a3a1"


    }


    },


    "url": {


    "child": "http://127.0.0.1:8351",


    "parent": "http://127.0.0.1:8451"


    },


    "bridges": [


    {


    "child" : {


    "operator": "0x9fea...ef7c"


    },


    "parent" : {


    "operator": "0xc81e...73b2"


    }


    }


    ]


    }
    1)
    2)
    3)
    4)
    5)

    View full-size slide

  46. 46
    밸류 트랜스퍼 : ERC20
    Alice
    Token
    Contract
    1-1. ERC20.approve()
    Transaction
    1-3. return
    Event
    1-2. Approval
    alice, bridge, 100
    bridge, 100
    Main
    Bridge
    EN
    - ERC-20 밸류 트랜스퍼 예시


    - 2단계 중 첫 번째 단계인 approve
    Main Chain

    View full-size slide

  47. 2-1. Bridge.requestERC20Transfer()
    tokenAddress, bob, 100
    2-2.ERC20.transferFrom()
    47
    밸류 트랜스퍼 : ERC20
    Alice
    Token
    Contract
    Bridge
    Contract
    2-3.Transfer
    2-6.RequestValueTransfer
    TokenType.ERC20, alice, bob, 100, fee, tokenAddress, extraData
    Main Chain
    Transaction
    Event
    Event
    Call by Contract
    Main
    Bridge
    EN
    alice, bob, 100 alice, bob, 100
    2-5.Transfer
    Event
    alice, Address(0), 100
    2-4.ERC20.brun()
    Call by Contract
    alice, 100

    View full-size slide

  48. 48
    밸류 트랜스퍼 : ERC20
    Bob
    Token
    Contract
    Bridge
    Contract
    2-8. Bridge.handleERC20Transfer()
    alice, bob, 100, tokenAddress, extraData
    Service Chain
    Transaction
    Sub Bridge
    SEN
    2-10. Transfer
    Event
    Address(0), bob, 100
    2-9. ERC20.min()
    Call by Contract
    bob, 100
    Main Bridge
    P2P
    2-7. Watch RequestValueTransfer
    Subscribe Event
    2-11. Update Balance

    View full-size slide

  49. servicechain
    -
    deploy

    View full-size slide

  50. 클레이튼 소개


    서비스체인 소개


    서비스체인 배포


    - klaytn
    -
    terraform


    - klaytn
    -
    ansible


    - value
    -
    transfer


    - servicechain
    -
    deploy


    서비스체인 로컬 배포


    서비스체인 문서

    View full-size slide

  51. 51
    https:/
    /github.com/klaytn/servicechain
    -
    deploy

    View full-size slide

  52. klaytn-


    terrafrom
    klaytn-


    ansbile
    value-


    transfer
    dfdf servicechain
    -
    deploy
    52

    View full-size slide

  53. klaytn
    -
    ansible value
    -
    transfer
    0.prepare.sh 1.init_nodes.sh 2.setup_nodes.sh 3.setup_bridge.sh
    klaytn
    -
    terraform
    inventory
    VPC, subnet, VMs
    test
    -
    value
    -
    transfer.sh
    Install
    nodes Config bridge
    Test value transfer
    bridge_info.json
    53

    View full-size slide

  54. VM 구성 : EN + 4SCN
    Baobab


    (Parent Chain)
    servicechain
    -
    deploy
    CN CN ...
    PN PN ...
    EN
    Service Chain
    VM VM
    VM
    EN ...
    VM VM
    54
    klaytn
    -
    terraform 사용

    View full-size slide

  55. ./1. init
    -
    nodes.sh en-4scn 실행
    55

    View full-size slide

  56. 노드 설치과 구성
    Baobab


    (Parent Chain)
    servicechain
    -
    deploy
    CN CN ...
    PN PN ...
    EN
    Service Chain
    SCN SCN
    SCN
    EN ...
    SCN EN
    56
    klaytn
    -
    ansible 사용


    바오밥 EN 에서 블록체인 데이터 동기화에 최소 10분 이상 소요

    View full-size slide

  57. ./2.setup
    -
    nodes.sh 실행
    57

    View full-size slide

  58. 브릿지 구성
    Baobab


    (Parent Chain)
    servicechain
    -
    deploy
    CN CN ...
    PN PN ...
    EN
    Service Chain
    SCN SCN
    SCN
    EN ...
    SCN EN
    Main
    Bridge
    Sub
    Bridge
    58
    klaytn
    -
    ansible 사용

    View full-size slide

  59. ./3.setup
    -
    bridge.sh 실행
    59

    View full-size slide

  60. Value Transfer 테스트
    Baobab


    (Parent Chain)
    servicechain
    -
    deploy
    CN CN ...
    PN PN ...
    EN
    Service Chain
    SCN SCN
    SCN
    EN ...
    SCN EN
    Main
    Bridge
    Sub
    Bridge
    60
    value
    -
    transfer사용

    View full-size slide

  61. 61
    test
    -
    value
    -
    transfer.sh 실행

    View full-size slide

  62. 서비스체인 로컬 배포

    View full-size slide

  63. 클레이튼 소개


    서비스체인 소개


    서비스체인 배포


    서비스체인 로컬 배포


    서비스체인 문서

    View full-size slide

  64. 64
    https:/
    /github.com/klaytn/local
    -
    klaytn
    -
    deploy

    View full-size slide

  65. local
    -
    klaytn
    -
    deploy
    - 도커와 도커 컴포즈를 사용


    - 로컬 머신에서 도커 인스턴스 실행


    - SCNs, SPNs, SENs 인스턴스를 추가로 구성


    - 사용하는 스크립트
    $./1.prepare.sh


    $./2.start.sh


    $./3.status.sh


    $./4.logs.sh


    $./5.stop.sh


    $./6.resume.sh


    $./7.terminate.sh
    Medium: https:/
    /medium.com/klaytn/how
    -
    to
    -
    run
    -
    a
    -
    local
    -
    klaytn
    -
    network-9b7a63da04f2
    65

    View full-size slide

  66. 66
    # Generate docker-compose.yml for docker-compose.


    docker run --platform=linux/amd64 --rm -v ${PWD}:/homi-output \


    klaytn/klaytn:v1.8.2 \


    homi setup -o /homi-output \


    --docker-image-id klaytn/klaytn:latest \


    --cn-num $NUM_CNS \


    --pn-num $NUM_PNS \


    --en-num $NUM_ENS \


    --chainID $CHAIN_ID \


    --servicechain \


    --scn-num $NUM_SCNS \


    --spn-num $NUM_SPNS \


    --sen-num $NUM_SENS \


    --serviceChainID $SCHAIN_ID \


    --reward-staking-interval 5 \


    --reward-proposer-interval 5 \


    --reward-minimum-stake 0 \


    --no-grafana \


    --network-id $NETWORK_ID docker
    CHAIN_ID=1000


    NETWORK_ID=9999


    NUM_CNS=1


    NUM_PNS=1


    NUM_ENS=1


    NUM_SCNS=1


    NUM_SPNS=0


    NUM_SENS=0


    SCHAIN_ID=2000
    1.prepare.sh 스크립트 수정

    View full-size slide

  67. 67
    1.prepare.sh 실행
    $cd local-klaytn-deploy


    $vi 1.prepare.sh


    $./1.prepare.sh


    $cat docker-compose.yml

    View full-size slide

  68. 68
    2.start.sh 실행

    View full-size slide

  69. 69
    도커 컨테이너 상태 확인

    View full-size slide

  70. 70
    4.logs.sh 실행

    View full-size slide

  71. 서비스체인 문서

    View full-size slide

  72. 72
    https:/
    /docs.klaytn.foundation/node/service
    -
    chain

    View full-size slide

  73. 73
    서비스체인 시작하기
    ﹘4개 노드 서비스체인 설정하기


    ﹘Baobab 연결


    ﹘체인간에 토큰 전송


    ﹘서비스체인 고가용성(HA)


    ﹘네스티브 서비스 체인 구성


    ﹘형제 서비스 체인 간의 토큰 전송

    View full-size slide

  74. 향후 계획

    View full-size slide

  75. 75
    진행 중
    ﹘게임

    게임을 클레이튼 생태계에 쉽게 온보딩 하기


    ﹘월렛

    체인간에 토큰 전송 단계를 줄이고 사용성 높이기


    ﹘컨트렉트

    브릿지 컨트랙트와 토큰 컨트랙트 개선과 솔리디티 버전 업그레이드

    View full-size slide

  76. 76
    참고
    1) klaytn
    -
    terraform: https:/
    /github.com/klaytn/klaytn
    -
    terraform

    2) klaytn
    -
    ansible: https:/
    /github.com/klaytn/klaytn
    -
    ansible

    3) value transfer: https:/
    /github.com/klaytn/servicechain
    -
    value
    -
    transfer
    -
    examples

    4) servicechain
    -
    deploy: https:/
    /github.com/klaytn/servicechain
    -
    deploy

    5) loal klaytn deploy : https:/
    /github.com/klaytn/local
    -
    klaytn
    -
    deploy

    6) service chain document : https:/
    /docs.klaytn.foundation/node/service
    -
    chain

    View full-size slide

  77. 클레이튼에 대해 더 잘 알고 싶다면? 크러스트 유니버스는 지금 채용 중!

    View full-size slide