SlideShare a Scribd company logo
1 of 39
Download to read offline
Lead of Backend, Ground X
- Developing Klaytn API Service
- Developing Node Discovery In Klaytn Node
SK Telecom
- Data Engineer In Data Transform Center
KIWI PLUS (Acquired by kakao)
- Lead of S/W team (android smart watch)
KT NexR
- BigData S/W Engineer (Apache Hadoop & Hive)
- Developing Distributed Log Collector (Apache Flume)
- Developing Storage Cloud base on Hadoop
BEA Systems (Acquired by Oracle)
- Developing KT SDP Platform
Hancom Thinkfree
- Developing Word Processor
이종희, Jesse
Solidity
Develop a Blockchain Application?
Consensus
Blockchain
Hash
Crypto
Token
Gas
TransactionSmart Contract
Nonce
Klaytn Virtual Machine
Private Key
Account
Transaction Fee
Blockchain
Application
(BApp)
Klaytn As Service
Blockchain
Application
Klaytn
<Blockchain Service>
사용
API 제공
Klaytn As Service
Deploy, Call
Blockchain Application
Data
Code
Klaytn
<Blockchain Service>
Data
Code
<Solidity>
Client
Client
Server
Klaytn As Service
Deploy, Call
Blockchain Application
Data
Code
Klaytn
<Blockchain Service>
Data
Code
<Solidity>
Klaytn
Consensus Network
TransactionsDeploy, Call
Klaytn Endpoint
Node
BApp Infrastructure
Blockchain
Application
Server
<Code>
Deploy
Block, TX,
TXLogs
Blocks
Deploy
Smart
Contract
</>
BApp Infrastructure
Private
KEN
Klaytn CNN
BApp
Server
BApp Infrastructure
Public
KEN
Klaytn CNN
BApp
Server
BApp
Infrastructure
Public KEN
외부에 공개된 KEN. 노드 운영 주체를 알
수 없고 성능, 운영시간등을 예측할 수
없기 때문에 서비스에 연동해 사용하려면
다소 어려움이 있다.
Private KEN
서비스 전용으로 개별적으로 운영하는
KEN. 직접 제어를 할 수 있기 때문에
실서비스에 적합하나 운영의 수고가
든다.
BApp Infrastructure In Practice
실제 서버 구성은 같은 일을 하는 다수의
서버들을 클러스터로 묶어 운영하여
다음의 요구조건을 만족한다.
- 고가용성 (High Availability)
- 내고장성 (Fault Tolerant)
- 확장성 (Scalability)
- 안정성 (Reliability)Private
KEN
Cluster
Klaytn CNN
BApp
Server
Cluster
BApp Infrastructure
LoadBalancer
LoadBalancer
Client
Data Synchronize Problem Between KENs
P2P 네트워크
Klaytn Node는 P2P로 연결이 되어 있고
Block 정보를 서로 교환하여 모든 노드의
chaindata를 동기화하기 때문에
특정시점의 chaindata 정보가 노드마다
다를 수 있다.
KEN
1002
KEN
1000
KEN
1001
KEN
1000
KEN
1001
KEN
1000
Block Height
Data Synchronize Problem - Read Op
BApp
Load Balancer
getBlockNumber()
getBlockNumber() 1001
1001
최신 블록 번호 조회
KEN
<A>
KEN
<B>
BApp
Block Height = 1000 Block Height = 1001
Load Balancer
getBlockReceipts(1001)
getBlockBlockReciept(1001) Error : NotFound
Error : NotFound
최신 블록 (1001)의 Receipt 조회
KEN<B>에서 읽어 온 최신블록은 1001이였다. 이를 이용해 1001의 BlockReceipt을 조회했지만 로드밸런싱을 통해
KEN<A>으로 전달되었고 KEN<A>의 최신블록은 1000이라서 요청은 실패하게 된다.
KEN
<A>
KEN
<B>
Block Height = 1000 Block Height = 1001
BApp
Load Balancer
getTransactionCount(act1)
getTransactionCount(act1) 3
3
Get act1’s nonce
KEN
<A>
KEN
<B>
BApp
act1’s nonce = 4 act1’s nonce = 3
Load Balancer
sendTransaction(nonce=4)
sendTransaction(nonce=4) Error (NonceTooLow)
Error (NonceTooLow)
KEN
<A>
KEN
<B>
act1’s nonce = 4 act1’s nonce = 3
Data Synchronize Problem - Write Op
Send Tx with act1’s nonce +1
Data Synchronize Problem
KEN 동기화 문제를 해결하기 위해선 Client가
항상 동일한 KEN으로 요청을 보내도록 보장하거나
KEN Cluster가 모두 동일한 상태를 갖도록 보장을 해줘야 한다.
Private
KEN
Cluster
BApp
Server
Cluster
BApp Infrastructure
LoadBalancer
LoadBalancer
Client별 같은 KEN으로 요청을 보내도록보장
KEN 동일한 상태로 서비스 하도록 보장
KEN Cluster Operation Cost
CPU Intensive Job
KEN은 Consensus Node에서 만들어낸
Data(Block)을 검증하는 역할을 맡고 있기
때문에 Cpu Intensive한 작업을 한다.
따라서 AWS기준 최소 c5.2xlarge (8 core)
인스턴스를 요구한다.
KEN
(Block Validation)
Continuous Increase
Block Data
Large Storage
Block 데이터는 지속적으로 증가하며 현재
Cypress기준 연간 1TB 씩 증가하며
Network의 트래픽이 늘어나면 이 수치는
더 증가한다.
Klaytn CNN
● 직접 KEN(Private KEN)을 구축하여 BAPP 서비스를 개발하고 운영하는 것은
서비스 본질에 집중할 시간과 비용을 소모할 수 있는 일이다.
● 공개된 KEN(public KEN)을 이용해 서비스를 개발할 수 있지만 안정적인
서비스를 위해 최소 1대의 KEN은 직접 운영을 해야 한다.
KEN Operation
Batch
Processor
Distribute
Storage
Node APIs
Managed KEN
cluster
Klaytn API Service (KAS)
Klaytn API Service는 Blockchain
Application이 쉽게 Klaytn을 사용할 수
있도록 돕는 Full-Managed Cloud
Service이다.
- KEN을 직접 운영할 필요가 없다.
- Wallet, Token등 블록체인 서비스를
쉽게 개발할 수 있는 API를 제공한다.
- 개발/운영에 필요한 개발툴을 제공한다.
Authentication
Account
REST JSON-RPC WebSocket
coordinate service
Extend APIs Dev APIs
Notification service
Audit
Monitoring
Analytic
service
Realtime
Processor
http
Analytic APIs
Klaytn API Service
Klaytn API Service Infrastructure
Scalable
요청 규모에 맞게 선형적으로확장되는
인프라
Reliable
99.999 uptime을 보장하는인프라
Consistent
일관성 있는 데이터 제공을 보장하는인프라
Node APIs, Extended APIs
Klaytn Node API 및 Wallet, Token등의
블록체인 서비스 개발에 용이한 확장
API를 제공한다.
Smart ContractTransactionChain Data
● block
● block receipt
● transaction
● transaction receipt
● transaction log
● account
● committee
● council
● Deploy Smart
contract
● Execute Smart
contract
● Send transaction
● List sent
transaction
history
● List Failed
transaction
History
KLAY KCT(NFT)KCT(FT)
● Account’s Klay
Balance
● Account’s klay
transfer history
● NFT Info
● NFT Transfer
History
● Account’s NFT List
● Token Info
● Account’s Token
Transfer History
● Account’s Token
Balance
Access Control
● Authentication (Access Token)
● IP Address Access Control
● Traffic Throttling
Klaytn API Service
Access token
<Prod>
Access Control
Authentication (access token)
Access Token으로 인증/식별을 하고
미리 정의한 Klaytn Network을 사용할 수
있게 한다.
BApp
<Prod>
BApp
<QA>
BApp
<Dev>
cypress
<mainnet>
baobab
<testnet>
baobab
<testnet>
Access token
<QA>
Access token
<Dev>
Klaytn
<Cypress>
Klaytan
<Baobab>
IP Address Access Control
IP 기반 접근 제어
미리 정의한 IP 또는 IP 대역에서의
접근만 허용한다.
Klaytn API Service
My-BApp
10.10.1.1
My-BApp
10.10.2.1
My-BApp
<allow-ip : 10.10.1.x>
10.10.1.1 - OK
10.10.2.1 - Deny
Traffic throttling
트래픽 처리량 제어
미리 정의한 트래픽만 처리하여 예상가능한
서비스 운영 및 장애를 예방할 수 있다.
My-BApp
400/tps
100/tps
400/tps 중 100/tps 는 처리되지
못하고 거부된다.
Klaytn API Service
My-BApp
<allow-traffic : 300/tps>
Notification
Blocks
Register
Event
Klaytn API Service
Event Subscription
Event Subscription
event를 등록하고 해당 event가 발생하면
callback을 보내주는 기능
ex) 특정 주소(Account)에 Klay를
전송받았을 때
ex) 특정 주소(Account)의 Klay 잔고가
10이하로 떨어졌을 때
My-BApp
Klaytn
<Cypress>
Block Stream
Processor
My-BApp
Subscripted
Events
Event
Audit
트랜잭션을 모니터링하고 기록하여 검색을 할 수 있다.
● 트랜잭션 로깅 & 검색
● 실패한 트랜잭션 알림 & 검색
● 트랜잭션 요청 통계 그래프
BApp이 보낸 Transaction에 대한 이력
(성공/실패)을 조회할 수 있다.
BApp은 Transaction 내역에 대한 알림을
받을 수 있다.
Klaytn API Service
Transaction History
Transaction History
Transaction #3
Transaction #2 (Failed)
Transaction #1
BApp
Send Transactions
Klaytn
BApp
Search Transaction History
Transaction hist #3
Transaction hist #2
Transaction hist #1
Transaction Hist Store
Notification
Smart Contract는 chaindata에 사용자
정의 로그(Transaction Log)를 남길 수
있다.
Klaytn API Service는 Transaction Log를
다양한 조건으로 검색을 하고 특정
Log발생에 대한 이벤트를 구독할 수 있는
기능을 제공한다.
Receipt
...
Smart Contract
Transaction Log
Transaction Log 검색 및 알림 구독
Transaction Log #1
Transaction Log #2
Transaction Log #3
Transaction
(execution)
Klaytn
API
Service
BApp
Search
Notify
BApp
Internal Transaction
ChainData
Transaction #1
Transaction #2
Transaction #3
Transaction #4
Block #1
Transaction #5
Transaction #6
Transaction #7
Block #2
Transaction #8
Transaction #9
Transaction #10
Transaction #11
Block #3
Transaction #12
StateData
Account #1
KLAY
DATA
Account #2
KLAY
DATA
Account #3
KLAY
DATA
Account #1
KLAY
DATA
Account #2
KLAY
DATA
Account #1
KLAY
DATA
Account #2
KLAY
DATA
ChainData
상태를 변경시키는 내용의 데이터
ex1) klay 전송 (from->to)
ex2) smart contract 배포/실행
StateData
Transaction을 적용한 결과 데이터
ex1) Account의 klay 잔액
ex2) Smart Contract의 데이터State(#1) State(#2) State(#3)
Internal Transaction
ChainData
Transaction #1
Transaction #2
Transaction #3
Transaction #4
Block #1
StateData
Account #1
KLAY
DATA
Account #2
KLAY
DATA
데이터 읽기
Block, Transaction, Transaction
Receipt 등 체인데이터를 관련
API로 읽을 수 있다.
또한 Account에 귀속된 KLAY
잔고나 Custom Data를 관련
RPC는 Smart Contract 호출을
통해 읽을 수 있다.
State (#1)
GetTransactionByHash(#1’s txhash)
GetBlock(#1)
Call(account #2’s address, method_name, method_Args)
GetBalance(account #2’s address)
Update Value
Internal Transaction
ChainData
Transaction #1
Transaction #2
Block #1
StateData
Account #1
KLAY (10)
DATA
Account #2
KLAY (0)
DATA
State (#1)
From : Account #1
To : Account #2
Value : 5 KLAY
Account #1
KLAY (5)
DATA
Account #2
KLAY (5)
DATA
State (#1`)
From : Account #1
To : Account #3
Value : 2
DATA : CODE
Account #1
KLAY (3)
DATA
Account #2
KLAY (5)
DATA
State (#1``)
Account #3
KLAY (2)
DATA(CODE)
Send a KLAY
Deloy
a Smart
Contract
Transaction #3
From : Account #1
To : Account #3
Value : 0
DATA : method signature
Account #1
KLAY (3)
DATA
Account #2
KLAY (5)
DATA
State (#1```)
Account #3
KLAY (2)
DATA(CODE)
DATA(Value)
Call
a Smart
Contract
데이터 쓰기
sendTransaction관련 API로 Transaction을
Network에 보내 KLAY 잔액이나 User
Data(Smart Contract 계정의 데이터)를
생성/변경할 수 있다.
*단 합의를 이뤄야 한다.
Internal Transaction
ChainData
Block #1
Internal Transaction
Smart Contract 메소드내에서
State를 변경시키는 내부
Transaction들로 Chaindata에
기록되지 않는다.
Internal Transaction 는
Transaction을 debug로 실행하여
나온 trace log를 분석해서 읽을
수 있기때문에 이용하기가
쉽지않다.
Transaction #3
From : Account #1
To : Account #3
Value : 0
DATA : Call Method#1
Account #1
KLAY (3)
DATA
Account #2
KLAY (5)
DATA
State (#1)
Account #3
KLAY (10)
DATA(CODE)
DATA(Value)
Call
Smart
Contract
Account #4
KLAY (5)
DATA
Method#1
send (account#2, 2 KLAY)
send (account#4, 2 KLAY)
Account #1
KLAY (3)
DATA
Account #2
KLAY (7)
DATA
State (#1`)
Account #3
KLAY (6)
DATA(CODE)
DATA(Value)
Account #4
KLAY (7)
DATA
Internal
Transaction
Search Internal Transactions
Account
Internal Transaction
검색 & 알림
Klaytn API Service는 Internal
Transaction을 검색하고 알림을 받을 수
있는 기능을 제공한다.
Deploy a New Smart Contract
Smart Contract #1
Smart Contract #2
(new)
Smart Contract #2Call a Smart Contract
Send a Transaction (KLAY)
Klaytn API Service
BApp BApp
Notify
Write
Transactions In Klaytn
Block
Blockchain
Application
Logic
Logic
Write
Klaytn
Core
Cell
Klaytn
Endpoint
Node
Klaytn
Core
Cell
Klaytn
Core
Cell
Klaytn
Core
Cell
Consensus
Network
합의
BApp에서 데이터 쓰기 연산(send
Transaction)을 하면 KEN(klaytn endpoint
node)에게 tx(트랜잭션)을 보내고 KEN은
CNN(Consensus Node Network)에게
전달하여 합의를 이루게 한다. 합의된
데이터는 Block을 통해 BApp이 받을 수
있다.
즉! 합의되기 전까지는
Tx는 Klaytn에 데이터로
남겨지지 않는다.
Result
(from
Block)
=
Find Result
getTransaction(tx_id)
Write Operation Pattern in BApp
Tx Result Block
<result>
Klaytn
Endpoint
Node
Blockchain
Application
Write
SendTransaction
Klaytn
Consensus
Network
Write
SendTransaction
Blockchain
Application
Klaytn
Endpoint
Node
Blockchain
Application
Klaytn
Endpoint
Node
합
의
BApp은 Write 연산
(TX)을 Klaytn에게
보내고 해당 TX가
Klaytn의
Chaindata에 기록이
되었는지 해당 TX의
ID로 조회를 찾을
때까지 해야 한다.
Transaction LifeCycle
Pending Dropped
In Block
Created
RejectedSubmitted
Created : Transaction이 생성됨
Submitted : Klaytn Network에 제출됨
Pending : Block 생성 후보리스트에 들어감.
In Block : Block에 포함되어 BlockChain에 확정됨.
Rejected : Transaction 오류로 거절됨.
Dropped : Transaction 상태가 유효하지 않을 경우 삭제됨.
Transaction LifeCycle Notification
KAS에 보낸 Transaction의 상태 변경에
대한 알림을 받을 수 있다.
Pending Dropped
In Block
Created
RejectedSubmitted
Blockchain
Application
Send
Transaction
Notification
(State Changes)
Analytics Tools
분석 툴
BApp의 이용 패턴을 분석하여 서비스의
인사이트 정보를 제공한다.
Klaytn API Service RoadMap
Internal use
KLIP, Kaikas, KlaytnScope
GX 서비스 백엔드 지원
Node APIs
Extended APIs
Account/Authentication
Transaction Logs
Internal Transaction
2020
Private Beta
More Extended APIs
WebSocket
Event Subscription
Notification
Audit
2021
Klaytn API Service 1.0
BI Dashboard
https://www.groundx.xyz/careers
WE ARE
HIRING!
Ground X
27F, 521, Teheran-ro,
Gangnam-gu, Seoul, Republic of Korea
THANK YOU

More Related Content

What's hot

대용량 로그분석 Bigquery로 간단히 사용하기
대용량 로그분석 Bigquery로 간단히 사용하기대용량 로그분석 Bigquery로 간단히 사용하기
대용량 로그분석 Bigquery로 간단히 사용하기
Jaikwang Lee
 

What's hot (20)

Cosmos&amp;tendermint (kr,en) by jeon chang suk
Cosmos&amp;tendermint (kr,en) by jeon chang sukCosmos&amp;tendermint (kr,en) by jeon chang suk
Cosmos&amp;tendermint (kr,en) by jeon chang suk
 
Block chain architecture and hyperledger fabric overview
Block chain architecture and hyperledger fabric overviewBlock chain architecture and hyperledger fabric overview
Block chain architecture and hyperledger fabric overview
 
Luniverse Partners Day - Game Case Study & Partnership (Evan)
Luniverse Partners Day - Game Case Study & Partnership (Evan)Luniverse Partners Day - Game Case Study & Partnership (Evan)
Luniverse Partners Day - Game Case Study & Partnership (Evan)
 
멀티클라우드 Service Mesh
멀티클라우드 Service Mesh멀티클라우드 Service Mesh
멀티클라우드 Service Mesh
 
Service mesh(istio) monitoring
Service mesh(istio) monitoringService mesh(istio) monitoring
Service mesh(istio) monitoring
 
[Main Session] 카프카, 데이터 플랫폼의 최강자
[Main Session] 카프카, 데이터 플랫폼의 최강자[Main Session] 카프카, 데이터 플랫폼의 최강자
[Main Session] 카프카, 데이터 플랫폼의 최강자
 
Hyperledger fabric - tuna fishing analysis
Hyperledger fabric - tuna fishing analysisHyperledger fabric - tuna fishing analysis
Hyperledger fabric - tuna fishing analysis
 
ChainHero web application hyperledger fabric analysis v 1.0
ChainHero web application hyperledger fabric analysis v 1.0ChainHero web application hyperledger fabric analysis v 1.0
ChainHero web application hyperledger fabric analysis v 1.0
 
[OpenInfra Days Korea 2018] (Track 4) Provisioning Dedicated Game Server on K...
[OpenInfra Days Korea 2018] (Track 4) Provisioning Dedicated Game Server on K...[OpenInfra Days Korea 2018] (Track 4) Provisioning Dedicated Game Server on K...
[OpenInfra Days Korea 2018] (Track 4) Provisioning Dedicated Game Server on K...
 
kubernetes : From beginner to Advanced
kubernetes : From beginner to Advancedkubernetes : From beginner to Advanced
kubernetes : From beginner to Advanced
 
OpenStack summit austin 2016
OpenStack summit austin 2016OpenStack summit austin 2016
OpenStack summit austin 2016
 
Hyperledger farbric build your first network install and analysis
Hyperledger farbric   build your first network install and analysisHyperledger farbric   build your first network install and analysis
Hyperledger farbric build your first network install and analysis
 
[OpenInfra Days Korea 2018] Day 2 - E6 - 마이크로서비스를 위한 Istio & Kubernetes [다운로드...
[OpenInfra Days Korea 2018] Day 2 - E6 - 마이크로서비스를 위한 Istio & Kubernetes [다운로드...[OpenInfra Days Korea 2018] Day 2 - E6 - 마이크로서비스를 위한 Istio & Kubernetes [다운로드...
[OpenInfra Days Korea 2018] Day 2 - E6 - 마이크로서비스를 위한 Istio & Kubernetes [다운로드...
 
GS Neotek aws_Amazon_CloudFrontDay2018_session4
GS Neotek aws_Amazon_CloudFrontDay2018_session4GS Neotek aws_Amazon_CloudFrontDay2018_session4
GS Neotek aws_Amazon_CloudFrontDay2018_session4
 
대용량 로그분석 Bigquery로 간단히 사용하기
대용량 로그분석 Bigquery로 간단히 사용하기대용량 로그분석 Bigquery로 간단히 사용하기
대용량 로그분석 Bigquery로 간단히 사용하기
 
designing, implementing and delivering microservices with event storming, spr...
designing, implementing and delivering microservices with event storming, spr...designing, implementing and delivering microservices with event storming, spr...
designing, implementing and delivering microservices with event storming, spr...
 
Oracle Blockchain Cloud 소개 - 콘솔 화면 포함
Oracle Blockchain Cloud 소개 - 콘솔 화면 포함Oracle Blockchain Cloud 소개 - 콘솔 화면 포함
Oracle Blockchain Cloud 소개 - 콘솔 화면 포함
 
Block chain bidding_System
Block chain bidding_SystemBlock chain bidding_System
Block chain bidding_System
 
Infra as Code with Packer, Ansible and Terraform
Infra as Code with Packer, Ansible and TerraformInfra as Code with Packer, Ansible and Terraform
Infra as Code with Packer, Ansible and Terraform
 
Kubernetes in action
Kubernetes in actionKubernetes in action
Kubernetes in action
 

Similar to TXGX 2019_Jesse_Klaytn API Service

플랫폼데이2013 workflow기반 실시간 스트리밍데이터 수집 및 분석 플랫폼 발표자료
플랫폼데이2013 workflow기반 실시간 스트리밍데이터 수집 및 분석 플랫폼 발표자료플랫폼데이2013 workflow기반 실시간 스트리밍데이터 수집 및 분석 플랫폼 발표자료
플랫폼데이2013 workflow기반 실시간 스트리밍데이터 수집 및 분석 플랫폼 발표자료
choi kyumin
 

Similar to TXGX 2019_Jesse_Klaytn API Service (20)

세션3. geth 클라이언트 실습 및 모니터링과 시각화
세션3. geth 클라이언트 실습 및 모니터링과 시각화세션3. geth 클라이언트 실습 및 모니터링과 시각화
세션3. geth 클라이언트 실습 및 모니터링과 시각화
 
AWS 기반 블록체인 (1부) - 블록체인 환경 구성하기 (박혜영 & 유다니엘, AWS 솔루션즈 아키텍트) :: AWS DevDay2018
AWS 기반 블록체인 (1부) - 블록체인 환경 구성하기 (박혜영 & 유다니엘, AWS 솔루션즈 아키텍트) :: AWS DevDay2018AWS 기반 블록체인 (1부) - 블록체인 환경 구성하기 (박혜영 & 유다니엘, AWS 솔루션즈 아키텍트) :: AWS DevDay2018
AWS 기반 블록체인 (1부) - 블록체인 환경 구성하기 (박혜영 & 유다니엘, AWS 솔루션즈 아키텍트) :: AWS DevDay2018
 
[오픈소스컨설팅]파일럿진행예제 on AWS
[오픈소스컨설팅]파일럿진행예제 on AWS[오픈소스컨설팅]파일럿진행예제 on AWS
[오픈소스컨설팅]파일럿진행예제 on AWS
 
CloudWatch 성능 모니터링과 신속한 대응을 위한 노하우 - 박선용 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
CloudWatch 성능 모니터링과 신속한 대응을 위한 노하우 - 박선용 솔루션즈 아키텍트:: AWS Cloud Track 3 GamingCloudWatch 성능 모니터링과 신속한 대응을 위한 노하우 - 박선용 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
CloudWatch 성능 모니터링과 신속한 대응을 위한 노하우 - 박선용 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
 
[243]kaleido 노현걸
[243]kaleido 노현걸[243]kaleido 노현걸
[243]kaleido 노현걸
 
플랫폼데이2013 workflow기반 실시간 스트리밍데이터 수집 및 분석 플랫폼 발표자료
플랫폼데이2013 workflow기반 실시간 스트리밍데이터 수집 및 분석 플랫폼 발표자료플랫폼데이2013 workflow기반 실시간 스트리밍데이터 수집 및 분석 플랫폼 발표자료
플랫폼데이2013 workflow기반 실시간 스트리밍데이터 수집 및 분석 플랫폼 발표자료
 
2. klaytn developer meetup #2 univ chain
2. klaytn developer meetup #2 univ chain2. klaytn developer meetup #2 univ chain
2. klaytn developer meetup #2 univ chain
 
Bitcoin 2.0(blockchain technology 2)
Bitcoin 2.0(blockchain technology 2)Bitcoin 2.0(blockchain technology 2)
Bitcoin 2.0(blockchain technology 2)
 
ksqlDB로 시작하는 스트림 프로세싱
ksqlDB로 시작하는 스트림 프로세싱ksqlDB로 시작하는 스트림 프로세싱
ksqlDB로 시작하는 스트림 프로세싱
 
Play node conference
Play node conferencePlay node conference
Play node conference
 
[164] pinpoint
[164] pinpoint[164] pinpoint
[164] pinpoint
 
한대희 Web proxy_개발_2006년11월_pas_ktf
한대희 Web proxy_개발_2006년11월_pas_ktf한대희 Web proxy_개발_2006년11월_pas_ktf
한대희 Web proxy_개발_2006년11월_pas_ktf
 
Implementing remote procedure calls rev2
Implementing remote procedure calls rev2Implementing remote procedure calls rev2
Implementing remote procedure calls rev2
 
L4교육자료
L4교육자료L4교육자료
L4교육자료
 
코어 이더리움
코어 이더리움 코어 이더리움
코어 이더리움
 
Datadog을 활용한 Elastic Kubernetes Service(EKS)에서의 마이크로서비스 통합 가시성 - 정영석 시니어 세일즈 ...
Datadog을 활용한 Elastic Kubernetes Service(EKS)에서의 마이크로서비스 통합 가시성 - 정영석 시니어 세일즈 ...Datadog을 활용한 Elastic Kubernetes Service(EKS)에서의 마이크로서비스 통합 가시성 - 정영석 시니어 세일즈 ...
Datadog을 활용한 Elastic Kubernetes Service(EKS)에서의 마이크로서비스 통합 가시성 - 정영석 시니어 세일즈 ...
 
Blockchain 4th dapp programming
Blockchain 4th dapp programmingBlockchain 4th dapp programming
Blockchain 4th dapp programming
 
kubernetes from beginner to advanced
kubernetes  from beginner to advancedkubernetes  from beginner to advanced
kubernetes from beginner to advanced
 
지금 핫한 Real-time In-memory Stream Processing 이야기
지금 핫한 Real-time In-memory Stream Processing 이야기지금 핫한 Real-time In-memory Stream Processing 이야기
지금 핫한 Real-time In-memory Stream Processing 이야기
 
802.1X 적용 사례(차세대 정보보안을 위한 동적 네트워크 환경 구성과 접근통제)
802.1X 적용 사례(차세대 정보보안을 위한 동적 네트워크 환경 구성과 접근통제)802.1X 적용 사례(차세대 정보보안을 위한 동적 네트워크 환경 구성과 접근통제)
802.1X 적용 사례(차세대 정보보안을 위한 동적 네트워크 환경 구성과 접근통제)
 

More from Klaytn

More from Klaytn (9)

TXGX 2019_Kai_Klaytn Blockchain Application (BApp) Development
TXGX 2019_Kai_Klaytn Blockchain Application (BApp) DevelopmentTXGX 2019_Kai_Klaytn Blockchain Application (BApp) Development
TXGX 2019_Kai_Klaytn Blockchain Application (BApp) Development
 
TXGX 2019_Albert_High Availability Architecture of Klaytn Service Chain
TXGX 2019_Albert_High Availability Architecture of Klaytn Service ChainTXGX 2019_Albert_High Availability Architecture of Klaytn Service Chain
TXGX 2019_Albert_High Availability Architecture of Klaytn Service Chain
 
TXGX 2019_Melvin_Data Layer Architecture & Optimizations
TXGX 2019_Melvin_Data Layer Architecture & OptimizationsTXGX 2019_Melvin_Data Layer Architecture & Optimizations
TXGX 2019_Melvin_Data Layer Architecture & Optimizations
 
TXGX 2019_Colin_Account and Transaction Model in Klaytn
TXGX 2019_Colin_Account and Transaction Model in KlaytnTXGX 2019_Colin_Account and Transaction Model in Klaytn
TXGX 2019_Colin_Account and Transaction Model in Klaytn
 
TXGX 2019_Sam_Challenges for Blockchain Mass Adoption
TXGX 2019_Sam_Challenges for Blockchain Mass AdoptionTXGX 2019_Sam_Challenges for Blockchain Mass Adoption
TXGX 2019_Sam_Challenges for Blockchain Mass Adoption
 
TXGX 2019_Jun_Klaytn World: From Inception to Completion
TXGX 2019_Jun_Klaytn World: From Inception to CompletionTXGX 2019_Jun_Klaytn World: From Inception to Completion
TXGX 2019_Jun_Klaytn World: From Inception to Completion
 
TXGX 2019_Jason_Welcome Speech
TXGX 2019_Jason_Welcome SpeechTXGX 2019_Jason_Welcome Speech
TXGX 2019_Jason_Welcome Speech
 
Klaytn Developer Meetup_20191210
Klaytn Developer Meetup_20191210Klaytn Developer Meetup_20191210
Klaytn Developer Meetup_20191210
 
Klaytn Developer Meetup_20190827
Klaytn Developer Meetup_20190827Klaytn Developer Meetup_20190827
Klaytn Developer Meetup_20190827
 

Recently uploaded

Grid Layout (Kitworks Team Study 장현정 발표자료)
Grid Layout (Kitworks Team Study 장현정 발표자료)Grid Layout (Kitworks Team Study 장현정 발표자료)
Grid Layout (Kitworks Team Study 장현정 발표자료)
Wonjun Hwang
 
파일 업로드(Kitworks Team Study 유현주 발표자료 240510)
파일 업로드(Kitworks Team Study 유현주 발표자료 240510)파일 업로드(Kitworks Team Study 유현주 발표자료 240510)
파일 업로드(Kitworks Team Study 유현주 발표자료 240510)
Wonjun Hwang
 

Recently uploaded (6)

[OpenLAB] AWS reInvent를 통해 바라본 글로벌 Cloud 기술동향.pdf
[OpenLAB] AWS reInvent를 통해 바라본 글로벌 Cloud 기술동향.pdf[OpenLAB] AWS reInvent를 통해 바라본 글로벌 Cloud 기술동향.pdf
[OpenLAB] AWS reInvent를 통해 바라본 글로벌 Cloud 기술동향.pdf
 
오픈소스 위험 관리 및 공급망 보안 솔루션 'Checkmarx SCA' 소개자료
오픈소스 위험 관리 및 공급망 보안 솔루션 'Checkmarx SCA' 소개자료오픈소스 위험 관리 및 공급망 보안 솔루션 'Checkmarx SCA' 소개자료
오픈소스 위험 관리 및 공급망 보안 솔루션 'Checkmarx SCA' 소개자료
 
Grid Layout (Kitworks Team Study 장현정 발표자료)
Grid Layout (Kitworks Team Study 장현정 발표자료)Grid Layout (Kitworks Team Study 장현정 발표자료)
Grid Layout (Kitworks Team Study 장현정 발표자료)
 
도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'
도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'
도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'
 
클라우드 애플리케이션 보안 플랫폼 'Checkmarx One' 소개자료
클라우드 애플리케이션 보안 플랫폼 'Checkmarx One' 소개자료클라우드 애플리케이션 보안 플랫폼 'Checkmarx One' 소개자료
클라우드 애플리케이션 보안 플랫폼 'Checkmarx One' 소개자료
 
파일 업로드(Kitworks Team Study 유현주 발표자료 240510)
파일 업로드(Kitworks Team Study 유현주 발표자료 240510)파일 업로드(Kitworks Team Study 유현주 발표자료 240510)
파일 업로드(Kitworks Team Study 유현주 발표자료 240510)
 

TXGX 2019_Jesse_Klaytn API Service

  • 1.
  • 2. Lead of Backend, Ground X - Developing Klaytn API Service - Developing Node Discovery In Klaytn Node SK Telecom - Data Engineer In Data Transform Center KIWI PLUS (Acquired by kakao) - Lead of S/W team (android smart watch) KT NexR - BigData S/W Engineer (Apache Hadoop & Hive) - Developing Distributed Log Collector (Apache Flume) - Developing Storage Cloud base on Hadoop BEA Systems (Acquired by Oracle) - Developing KT SDP Platform Hancom Thinkfree - Developing Word Processor 이종희, Jesse
  • 3. Solidity Develop a Blockchain Application? Consensus Blockchain Hash Crypto Token Gas TransactionSmart Contract Nonce Klaytn Virtual Machine Private Key Account Transaction Fee Blockchain Application (BApp)
  • 5. Klaytn As Service Deploy, Call Blockchain Application Data Code Klaytn <Blockchain Service> Data Code <Solidity> Client Client Server
  • 6. Klaytn As Service Deploy, Call Blockchain Application Data Code Klaytn <Blockchain Service> Data Code <Solidity>
  • 7. Klaytn Consensus Network TransactionsDeploy, Call Klaytn Endpoint Node BApp Infrastructure Blockchain Application Server <Code> Deploy Block, TX, TXLogs Blocks Deploy Smart Contract </>
  • 8. BApp Infrastructure Private KEN Klaytn CNN BApp Server BApp Infrastructure Public KEN Klaytn CNN BApp Server BApp Infrastructure Public KEN 외부에 공개된 KEN. 노드 운영 주체를 알 수 없고 성능, 운영시간등을 예측할 수 없기 때문에 서비스에 연동해 사용하려면 다소 어려움이 있다. Private KEN 서비스 전용으로 개별적으로 운영하는 KEN. 직접 제어를 할 수 있기 때문에 실서비스에 적합하나 운영의 수고가 든다.
  • 9. BApp Infrastructure In Practice 실제 서버 구성은 같은 일을 하는 다수의 서버들을 클러스터로 묶어 운영하여 다음의 요구조건을 만족한다. - 고가용성 (High Availability) - 내고장성 (Fault Tolerant) - 확장성 (Scalability) - 안정성 (Reliability)Private KEN Cluster Klaytn CNN BApp Server Cluster BApp Infrastructure LoadBalancer LoadBalancer Client
  • 10. Data Synchronize Problem Between KENs P2P 네트워크 Klaytn Node는 P2P로 연결이 되어 있고 Block 정보를 서로 교환하여 모든 노드의 chaindata를 동기화하기 때문에 특정시점의 chaindata 정보가 노드마다 다를 수 있다. KEN 1002 KEN 1000 KEN 1001 KEN 1000 KEN 1001 KEN 1000 Block Height
  • 11. Data Synchronize Problem - Read Op BApp Load Balancer getBlockNumber() getBlockNumber() 1001 1001 최신 블록 번호 조회 KEN <A> KEN <B> BApp Block Height = 1000 Block Height = 1001 Load Balancer getBlockReceipts(1001) getBlockBlockReciept(1001) Error : NotFound Error : NotFound 최신 블록 (1001)의 Receipt 조회 KEN<B>에서 읽어 온 최신블록은 1001이였다. 이를 이용해 1001의 BlockReceipt을 조회했지만 로드밸런싱을 통해 KEN<A>으로 전달되었고 KEN<A>의 최신블록은 1000이라서 요청은 실패하게 된다. KEN <A> KEN <B> Block Height = 1000 Block Height = 1001
  • 12. BApp Load Balancer getTransactionCount(act1) getTransactionCount(act1) 3 3 Get act1’s nonce KEN <A> KEN <B> BApp act1’s nonce = 4 act1’s nonce = 3 Load Balancer sendTransaction(nonce=4) sendTransaction(nonce=4) Error (NonceTooLow) Error (NonceTooLow) KEN <A> KEN <B> act1’s nonce = 4 act1’s nonce = 3 Data Synchronize Problem - Write Op Send Tx with act1’s nonce +1
  • 13. Data Synchronize Problem KEN 동기화 문제를 해결하기 위해선 Client가 항상 동일한 KEN으로 요청을 보내도록 보장하거나 KEN Cluster가 모두 동일한 상태를 갖도록 보장을 해줘야 한다. Private KEN Cluster BApp Server Cluster BApp Infrastructure LoadBalancer LoadBalancer Client별 같은 KEN으로 요청을 보내도록보장 KEN 동일한 상태로 서비스 하도록 보장
  • 14. KEN Cluster Operation Cost CPU Intensive Job KEN은 Consensus Node에서 만들어낸 Data(Block)을 검증하는 역할을 맡고 있기 때문에 Cpu Intensive한 작업을 한다. 따라서 AWS기준 최소 c5.2xlarge (8 core) 인스턴스를 요구한다. KEN (Block Validation) Continuous Increase Block Data Large Storage Block 데이터는 지속적으로 증가하며 현재 Cypress기준 연간 1TB 씩 증가하며 Network의 트래픽이 늘어나면 이 수치는 더 증가한다. Klaytn CNN
  • 15. ● 직접 KEN(Private KEN)을 구축하여 BAPP 서비스를 개발하고 운영하는 것은 서비스 본질에 집중할 시간과 비용을 소모할 수 있는 일이다. ● 공개된 KEN(public KEN)을 이용해 서비스를 개발할 수 있지만 안정적인 서비스를 위해 최소 1대의 KEN은 직접 운영을 해야 한다. KEN Operation
  • 16. Batch Processor Distribute Storage Node APIs Managed KEN cluster Klaytn API Service (KAS) Klaytn API Service는 Blockchain Application이 쉽게 Klaytn을 사용할 수 있도록 돕는 Full-Managed Cloud Service이다. - KEN을 직접 운영할 필요가 없다. - Wallet, Token등 블록체인 서비스를 쉽게 개발할 수 있는 API를 제공한다. - 개발/운영에 필요한 개발툴을 제공한다. Authentication Account REST JSON-RPC WebSocket coordinate service Extend APIs Dev APIs Notification service Audit Monitoring Analytic service Realtime Processor http Analytic APIs Klaytn API Service
  • 17. Klaytn API Service Infrastructure Scalable 요청 규모에 맞게 선형적으로확장되는 인프라 Reliable 99.999 uptime을 보장하는인프라 Consistent 일관성 있는 데이터 제공을 보장하는인프라
  • 18. Node APIs, Extended APIs Klaytn Node API 및 Wallet, Token등의 블록체인 서비스 개발에 용이한 확장 API를 제공한다. Smart ContractTransactionChain Data ● block ● block receipt ● transaction ● transaction receipt ● transaction log ● account ● committee ● council ● Deploy Smart contract ● Execute Smart contract ● Send transaction ● List sent transaction history ● List Failed transaction History KLAY KCT(NFT)KCT(FT) ● Account’s Klay Balance ● Account’s klay transfer history ● NFT Info ● NFT Transfer History ● Account’s NFT List ● Token Info ● Account’s Token Transfer History ● Account’s Token Balance
  • 19. Access Control ● Authentication (Access Token) ● IP Address Access Control ● Traffic Throttling
  • 20. Klaytn API Service Access token <Prod> Access Control Authentication (access token) Access Token으로 인증/식별을 하고 미리 정의한 Klaytn Network을 사용할 수 있게 한다. BApp <Prod> BApp <QA> BApp <Dev> cypress <mainnet> baobab <testnet> baobab <testnet> Access token <QA> Access token <Dev> Klaytn <Cypress> Klaytan <Baobab>
  • 21. IP Address Access Control IP 기반 접근 제어 미리 정의한 IP 또는 IP 대역에서의 접근만 허용한다. Klaytn API Service My-BApp 10.10.1.1 My-BApp 10.10.2.1 My-BApp <allow-ip : 10.10.1.x> 10.10.1.1 - OK 10.10.2.1 - Deny
  • 22. Traffic throttling 트래픽 처리량 제어 미리 정의한 트래픽만 처리하여 예상가능한 서비스 운영 및 장애를 예방할 수 있다. My-BApp 400/tps 100/tps 400/tps 중 100/tps 는 처리되지 못하고 거부된다. Klaytn API Service My-BApp <allow-traffic : 300/tps>
  • 23. Notification Blocks Register Event Klaytn API Service Event Subscription Event Subscription event를 등록하고 해당 event가 발생하면 callback을 보내주는 기능 ex) 특정 주소(Account)에 Klay를 전송받았을 때 ex) 특정 주소(Account)의 Klay 잔고가 10이하로 떨어졌을 때 My-BApp Klaytn <Cypress> Block Stream Processor My-BApp Subscripted Events Event
  • 24. Audit 트랜잭션을 모니터링하고 기록하여 검색을 할 수 있다. ● 트랜잭션 로깅 & 검색 ● 실패한 트랜잭션 알림 & 검색 ● 트랜잭션 요청 통계 그래프
  • 25. BApp이 보낸 Transaction에 대한 이력 (성공/실패)을 조회할 수 있다. BApp은 Transaction 내역에 대한 알림을 받을 수 있다. Klaytn API Service Transaction History Transaction History Transaction #3 Transaction #2 (Failed) Transaction #1 BApp Send Transactions Klaytn BApp Search Transaction History Transaction hist #3 Transaction hist #2 Transaction hist #1 Transaction Hist Store Notification
  • 26. Smart Contract는 chaindata에 사용자 정의 로그(Transaction Log)를 남길 수 있다. Klaytn API Service는 Transaction Log를 다양한 조건으로 검색을 하고 특정 Log발생에 대한 이벤트를 구독할 수 있는 기능을 제공한다. Receipt ... Smart Contract Transaction Log Transaction Log 검색 및 알림 구독 Transaction Log #1 Transaction Log #2 Transaction Log #3 Transaction (execution) Klaytn API Service BApp Search Notify BApp
  • 27. Internal Transaction ChainData Transaction #1 Transaction #2 Transaction #3 Transaction #4 Block #1 Transaction #5 Transaction #6 Transaction #7 Block #2 Transaction #8 Transaction #9 Transaction #10 Transaction #11 Block #3 Transaction #12 StateData Account #1 KLAY DATA Account #2 KLAY DATA Account #3 KLAY DATA Account #1 KLAY DATA Account #2 KLAY DATA Account #1 KLAY DATA Account #2 KLAY DATA ChainData 상태를 변경시키는 내용의 데이터 ex1) klay 전송 (from->to) ex2) smart contract 배포/실행 StateData Transaction을 적용한 결과 데이터 ex1) Account의 klay 잔액 ex2) Smart Contract의 데이터State(#1) State(#2) State(#3)
  • 28. Internal Transaction ChainData Transaction #1 Transaction #2 Transaction #3 Transaction #4 Block #1 StateData Account #1 KLAY DATA Account #2 KLAY DATA 데이터 읽기 Block, Transaction, Transaction Receipt 등 체인데이터를 관련 API로 읽을 수 있다. 또한 Account에 귀속된 KLAY 잔고나 Custom Data를 관련 RPC는 Smart Contract 호출을 통해 읽을 수 있다. State (#1) GetTransactionByHash(#1’s txhash) GetBlock(#1) Call(account #2’s address, method_name, method_Args) GetBalance(account #2’s address)
  • 29. Update Value Internal Transaction ChainData Transaction #1 Transaction #2 Block #1 StateData Account #1 KLAY (10) DATA Account #2 KLAY (0) DATA State (#1) From : Account #1 To : Account #2 Value : 5 KLAY Account #1 KLAY (5) DATA Account #2 KLAY (5) DATA State (#1`) From : Account #1 To : Account #3 Value : 2 DATA : CODE Account #1 KLAY (3) DATA Account #2 KLAY (5) DATA State (#1``) Account #3 KLAY (2) DATA(CODE) Send a KLAY Deloy a Smart Contract Transaction #3 From : Account #1 To : Account #3 Value : 0 DATA : method signature Account #1 KLAY (3) DATA Account #2 KLAY (5) DATA State (#1```) Account #3 KLAY (2) DATA(CODE) DATA(Value) Call a Smart Contract 데이터 쓰기 sendTransaction관련 API로 Transaction을 Network에 보내 KLAY 잔액이나 User Data(Smart Contract 계정의 데이터)를 생성/변경할 수 있다. *단 합의를 이뤄야 한다.
  • 30. Internal Transaction ChainData Block #1 Internal Transaction Smart Contract 메소드내에서 State를 변경시키는 내부 Transaction들로 Chaindata에 기록되지 않는다. Internal Transaction 는 Transaction을 debug로 실행하여 나온 trace log를 분석해서 읽을 수 있기때문에 이용하기가 쉽지않다. Transaction #3 From : Account #1 To : Account #3 Value : 0 DATA : Call Method#1 Account #1 KLAY (3) DATA Account #2 KLAY (5) DATA State (#1) Account #3 KLAY (10) DATA(CODE) DATA(Value) Call Smart Contract Account #4 KLAY (5) DATA Method#1 send (account#2, 2 KLAY) send (account#4, 2 KLAY) Account #1 KLAY (3) DATA Account #2 KLAY (7) DATA State (#1`) Account #3 KLAY (6) DATA(CODE) DATA(Value) Account #4 KLAY (7) DATA Internal Transaction
  • 31. Search Internal Transactions Account Internal Transaction 검색 & 알림 Klaytn API Service는 Internal Transaction을 검색하고 알림을 받을 수 있는 기능을 제공한다. Deploy a New Smart Contract Smart Contract #1 Smart Contract #2 (new) Smart Contract #2Call a Smart Contract Send a Transaction (KLAY) Klaytn API Service BApp BApp Notify
  • 32. Write Transactions In Klaytn Block Blockchain Application Logic Logic Write Klaytn Core Cell Klaytn Endpoint Node Klaytn Core Cell Klaytn Core Cell Klaytn Core Cell Consensus Network 합의 BApp에서 데이터 쓰기 연산(send Transaction)을 하면 KEN(klaytn endpoint node)에게 tx(트랜잭션)을 보내고 KEN은 CNN(Consensus Node Network)에게 전달하여 합의를 이루게 한다. 합의된 데이터는 Block을 통해 BApp이 받을 수 있다. 즉! 합의되기 전까지는 Tx는 Klaytn에 데이터로 남겨지지 않는다. Result (from Block) =
  • 33. Find Result getTransaction(tx_id) Write Operation Pattern in BApp Tx Result Block <result> Klaytn Endpoint Node Blockchain Application Write SendTransaction Klaytn Consensus Network Write SendTransaction Blockchain Application Klaytn Endpoint Node Blockchain Application Klaytn Endpoint Node 합 의 BApp은 Write 연산 (TX)을 Klaytn에게 보내고 해당 TX가 Klaytn의 Chaindata에 기록이 되었는지 해당 TX의 ID로 조회를 찾을 때까지 해야 한다.
  • 34. Transaction LifeCycle Pending Dropped In Block Created RejectedSubmitted Created : Transaction이 생성됨 Submitted : Klaytn Network에 제출됨 Pending : Block 생성 후보리스트에 들어감. In Block : Block에 포함되어 BlockChain에 확정됨. Rejected : Transaction 오류로 거절됨. Dropped : Transaction 상태가 유효하지 않을 경우 삭제됨.
  • 35. Transaction LifeCycle Notification KAS에 보낸 Transaction의 상태 변경에 대한 알림을 받을 수 있다. Pending Dropped In Block Created RejectedSubmitted Blockchain Application Send Transaction Notification (State Changes)
  • 36. Analytics Tools 분석 툴 BApp의 이용 패턴을 분석하여 서비스의 인사이트 정보를 제공한다.
  • 37. Klaytn API Service RoadMap Internal use KLIP, Kaikas, KlaytnScope GX 서비스 백엔드 지원 Node APIs Extended APIs Account/Authentication Transaction Logs Internal Transaction 2020 Private Beta More Extended APIs WebSocket Event Subscription Notification Audit 2021 Klaytn API Service 1.0 BI Dashboard
  • 39. Ground X 27F, 521, Teheran-ro, Gangnam-gu, Seoul, Republic of Korea THANK YOU