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
  2. Henry, 장동준 2011부터 카카오 행성 시작 카카오톡, 카카오스토리, 카카오게임, 장보기,

    소셜임팩트 크러스트유니버스로 올해 이동 클레이튼 메인넷의 서비스체인 개발 카카오의 경험을 바탕으로 기존의 Web 2.0 서비스들이 블록체인 생태계로 쉽 게 온보딩을 할 수 있도록 도와 주고 싶습니다
  3. 8 v1.8.0 EthTxType Magma v1.9.0 Kore v1.10.0 2022 하드포크 3월

    이더리움 호환 8월 동적 가스비 계획중 새로운 거버넌스 시스템
  4. 13 특징 비용 대부분의 트랜젝션은 서비스체인에서 발생하도록 구성이 가능하여 사이프레스

    메인넷의 가스비를 적게 이용할 수 있습니다 성능 서비스체인은 사이프레스와 동일하게 구현되어 있습니다 게임 플레이 정보를 블록체인에 저장 할 수 있는 높은 TPS와 빠른 응답 시간을 제공합니다 보안 서비스체인의 블록 데이터는 사이프레이스 메인넷과 앵커링을 통해 데이터 무결성을 높여 줍니다 프라이빗하게 서비스체인을 구성하면 네트워크와 데이터 접근을 제어할 수 있습니다 패키징 원하는 형태의 서비스체인 설치를 단일 스크립트로 도와줍니다 체인 아이디를 다르게 설정하고 원하면 가스비를 사용하지 않도록 0으로 설정할 수 있습니다 다양한 네트워크 토폴로지 구성이 가능하도록 예제와 스크립트를 제공하고 있습니다 테스트 여러 토큰들을 전송 테스트 할 수 있는 예제를 제공하고 있습니다 로컬 환경에서 프라이빗 체인을 구성하고 디버깅과 테스트가 가능한 개발 환경을 만들 수 있습니다
  5. 15 서비스체인을 사용하는 게임들 A3: Still Alive Ni No Kuni:

    Cross Worlds MIR4 MarbleX Monster Arena Others More & More Every Farm Gaming Ecosystem : https:/ /klaytn.foundation/ecosystem/
  6. 16 Wemix MBX Bora MBX Link WEMIX Credit tBORA 서비스체인을

    사용하는 게임들의 메인 토큰들
  7. 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
  8. 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 네트워크 구성도
  9. 19 브릿지 구성 Token Contract Main Chain Bridge Contract Main

    Bridge Token Contract Service Chain Bridge Contract Sub Bridge
  10. 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 …
  11. 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 서비스체인 브리지
  12. 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 노드와 브리지 구성
  13. 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
  14. 클레이튼 소개 서비스체인 소개 서비스체인 배포 - klaytn - terraform

    - klaytn - ansible - value - transfer - servicechain - deploy 서비스체인 로컬 배포 서비스체인 문서
  15. 29 테라폼 소개 - 테라폼은 인프라를 코드로 관리하기 위한 툴입니다

    - 테라폼을 사용하면 다양한 클라우드 서비스의 리소스 를 코드로 관리할 수 있습니다 Image from : https:/ /www.terraform.io
  16. 30 - klaytn - terraform은 서비스체인 구성에 필요한 VM을 준비할

    때에 사용하는 테라폼 모듈입니다 - AWS에서 구성이 가능합니다 - 현재 Azure를 지원하기 위한 작업 중입니다 klaytn - terraform 기능
  17. 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 네트워크 토폴로지
  18. 32 EN + 4SCN 구성 Service Chain Sub Bridge SCN

    Main Bridge Main Chain (Baobab/Cypress) EN SCN SCN SCN Boabab은 테스트넷입니다. Cypress는 클레이튼 메인넷입니다.
  19. 33 EN + SCN + SPN + SEN 구성 Service

    Chain Sub Bridge SEN Main Bridge Main Chain (Baobab/Cypress) SEN EN SPN SCN SCN ⋮ ⋮ ⋮ SPN
  20. 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
  21. 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
  22. 클레이튼 소개 서비스체인 소개 서비스체인 배포 - klaytn - terraform

    - klaytn - ansible - value - transfer - servicechain - deploy 서비스체인 로컬 배포 서비스체인 문서
  23. 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
  24. 40 - Klaytn - ansible은 klaytn - terraform으로 만든 VM에

    노드들을 설치하고 설정하기 위한 앤서블 플레이북입니다. - CN, PN, EN, SCN, SPN, SEN 노드 바이너리 설치 - 노드의 설정 파일 세팅 - 부모와 자식 체인간에 브릿지 설정 - 그라파나 모니터링 툴 설정 klaytn - ansible 기능
  25. 클레이튼 소개 서비스체인 소개 서비스체인 배포 - klaytn - terraform

    - klaytn - ansible - value - transfer - servicechain - deploy 서비스체인 로컬 배포 서비스체인 문서
  26. 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
  27. 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)
  28. 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
  29. 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
  30. 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
  31. 클레이튼 소개 서비스체인 소개 서비스체인 배포 - klaytn - terraform

    - klaytn - ansible - value - transfer - servicechain - deploy 서비스체인 로컬 배포 서비스체인 문서
  32. 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
  33. VM 구성 : EN + 4SCN Baobab (Parent Chain) servicechain

    - deploy CN CN ... PN PN ... EN Service Chain VM VM VM EN ... VM VM 54 klaytn - terraform 사용
  34. 노드 설치과 구성 Baobab (Parent Chain) servicechain - deploy CN

    CN ... PN PN ... EN Service Chain SCN SCN SCN EN ... SCN EN 56 klaytn - ansible 사용 바오밥 EN 에서 블록체인 데이터 동기화에 최소 10분 이상 소요
  35. 브릿지 구성 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 사용
  36. 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사용
  37. 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
  38. 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 스크립트 수정
  39. 73 서비스체인 시작하기 ﹘4개 노드 서비스체인 설정하기 ﹘Baobab 연결 ﹘체인간에

    토큰 전송 ﹘서비스체인 고가용성(HA) ﹘네스티브 서비스 체인 구성 ﹘형제 서비스 체인 간의 토큰 전송
  40. 75 진행 중 ﹘게임 
 게임을 클레이튼 생태계에 쉽게 온보딩

    하기 ﹘월렛 
 체인간에 토큰 전송 단계를 줄이고 사용성 높이기 ﹘컨트렉트 
 브릿지 컨트랙트와 토큰 컨트랙트 개선과 솔리디티 버전 업그레이드
  41. 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