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

메타버스에 적합한 블록체인은?: Transaction Latency Measurement

kakao
December 09, 2022

메타버스에 적합한 블록체인은?: Transaction Latency Measurement

#Klaytn #Latencycomparison

서비스를 구축하기 위해 어떤 블록체인을 선택할지 고민할 때 성능은 가장 먼저 고려되는 것들 중 하나일 것입니다. 성능지표로는 대표적으로 동작을 수행할 때 걸리는 시간을 나타내는 지연시간(Latency)과 동일 시간 내에 얼마나 많은 동작을 수행할 수 있는지를 나타내는 처리량(Throughput)이 있습니다. 처리량을 측정하는 지표인 TPS 는 블록체인의 대표적인 성능 지표로 여겨지는 반면에 지연시간에 대한 논의는 많이 다뤄지지 않습니다. 개개인의 입장에서 생각해보면 처리량보다는 트랜잭션이 처리되는 속도가 더 중요하지 않을까요? 클레이튼은 지연 시간을 알아보기 위해 다양한 블록체인 플랫폼에서 트랜잭션을 네트워크에 전송하고, 확정되기까지의 시간을 측정해 보았습니다. 그리고 그 결과를 기반으로 클레이튼과 다른 블록체인 플랫폼들을 비교해보았습니다.

발표자 : phoebe.727
크르스트유니버스 코어 데브 팀 인터페이스 파트에서 개발을 하고 있는 피비입니다. 개발자 뿐만 아니라 일반 사용자들도 클레이튼을 쉽게 사용할 수 있도록 돕기 위해 필요한 다양한 개발에 참여하고 있습니다.

kakao

December 09, 2022
Tweet

More Decks by kakao

Other Decks in Programming

Transcript

  1. 김연주 Phoebe.727 크러스트 유니버스 Copyright 2022. Kakao Corp. All rights

    reserved. Redistribution or public display is not permitted without written permission from Kakao. 메타버스에 적합한 블록체인은? if(kakao)2022 Transaction Latency Measurement
  2. 소개 Phoebe - Interface Part, Core Dev Team, Klaytn Foundation

    - 다양한 블록체인에 대한 트랜잭션 지연시간 측정 - Klaytn Online Toolkit 개발 중
  3. 메타버스에 적합한 블록체인은? - 사용자 간의 상호작용과 개인의 경험이 중요함

    - 처리량으로는 사용자의 행동이 빠른 시간 내에 완결성 있게 실행 되는지 파악이 어려움 - 지연시간에 대한 논의 부족 - 지연시간에 초점을 맞춰 블록체인들을 비교하고자 함 블록체인 TPS 블록 생성 시간 (초) Ethereum 15-20 10-20 Polygon PoS Chain ~1000 2.3 Avalanche C - Chain 4500 2 Solana 2000-3000 0.4 Klaytn 4000 1
  4. 블록체인 비교 대상 선정 - 빠른 처리속도를 표방하는 타 블록체인과

    비교하기 위함 - 22.05.01 기준 CoinMarketCap 순위의 50위권 네이티브 토큰 중 블록 생성 시간이 10초 이내인 체인 선택 - 추가적으로 Harmony는 싸고 빠르다는 것을 강점으로 내세운 블록체인이기 때문에, Hedera는 트랜잭션의 확 정시간이 짧기 때문에 추가함
  5. 블록 생성 시간 (초) Time to fi nality CoinMarketCap 순위

    (22.05.01 기준) Klaytn 1 즉각적 완결성 47 Solana 0.4 1초 이내 6 Near Protocol 1 2초 이내 19 Fantom 1 즉각적 완결성 49 Avalanche C - Chain 2 2초 이내 13 Harmony 2 즉각적 완결성 73 Polygon PoS Chain 2.3 20 번의 확정 (con fi rmation) 18 BNB Smart Chain 3 33초 4 Polkadot 6 12-60초 14 Elrond 6 Intra shard: ~27초 / cross shard: ~51초 39 Hedera - 3-5초 36
  6. 트랜잭션 처리 시간 측정 기준 트랜잭션 처리 시간 = 트랜잭션이

    블록에 포함된 시간 - 트랜잭션을 블록체인 네트워크에 전송한 시간 트랜잭션 생성 및 서명 트랜잭션 전송 블록체인 네트워크 기존 블록체인에 블록 추가 영수증(Receipt)
  7. 데이터 수집 과정 - 각 블록체인에서 제공하는 공식 문서의 트랜잭션

    전송 예시 참고. Public RPC Endpoint를 사용 - 대부분 1분마다 데이터 수집. 수수료를 고려하여 간격 조절 - 네트워크 혼잡도 고려: 트랜잭션을 생성하기 전 최신 블록의 가스 사용량과 트랜잭션의 개수를 수집 - 네트워크 지연시간 고려: 간단한 쿼리(예: GetLatestBlockNumber())를 보내고 응답받기까지의 시간을 ping time으로 정의한 뒤 수집 - 트랜잭션 수수료 비용과 그 비용의 미국 달러 가격을 계산한 뒤 수집 Executed At Transaction Hash Start time End Time Chain Id Latency (ms) Tx Fee (KLAY) Tx Fee (USD) Gas Used Num of Txs Ping TIme (ms) 07/09/22 03:34:32.845 0x30de416892c150f748801b6495a248c50ab91b23 ad841bfd7fa91aefd62488bc 07/09/22 03:34:32.982 07/09/22 03:34:35.008 8,217 2,026 0.001050 0.000224 1,401,429 8 7 07/09/22 03:33:32.944 0xd970e093032c96a77ebba78305944b33dbfbcd8 b17fa1b312b3de1a3cfd1bb85 07/09/22 03:33:32.977 07/09/22 03:33:34.996 8,217 2,019 0.001050 0.000224 428,274 6 7
  8. 트랜잭션 수수료 설정 트랜잭션 우선순위 설정 가능 여부 체인 이름

    트랜잭션 수수료 설정 기준 가능 Avalanche C - Chain 공식 문서 참고함. AvalancheJS의 getMaxPriorityFeePerGas() 사용 Polygon PoS Chain Gas Station에서 제공하는 gas fee 추정치 중 standard 값을 사용 Polkadot Weight Fee 와 Length Fee 이외에도 팁 추가 가능. 튜토리얼처럼 팁을 따로 추가 하지 않음 Elrond GasPrice 변경 가능하지만, 튜토리얼처럼 기본값 사용 Fantom web3.eth.getGasPrice()를 사용하여 구한 값을 가스비로 설정함 Harmony BNB Smart Chain 불가능 Solana 네트워크 혼잡도에 의해 정해지는 가격 사용 NEAR Protocol Klaytn 동적 가스비 사용 Hedera USD 가격으로 트랜잭션 수수료 고정
  9. Javascript SDK 사용 코드 작성 (예시: Klaytn) const Caver =

    require('caver-js'); const caver = new Caver(process.env.CAVER_URL) const keyring = caver.wallet.keyring.createFromPrivateKey(process.env.PRIVATE_KEY) caver.wallet.add(keyring) // Create value transfer transaction const vt = caver.transaction.valueTransfer.create({ from: keyring.address, to: keyring.address, value: 0, gas: 25000, }) // Sign to the transaction const signed = await caver.wallet.sign(keyring.address, vt) data.startTime = new Date().getTime() // Send transaction const receipt = await caver.rpc.klay.sendRawTransaction(signed) data.endTime = new Date().getTime() data.latency = end-start End Time Start Time
  10. Javascript SDK 사용 코드 작성 (예시: Solana) const web3 =

    require("@solana/web3.js"); const keypair = web3.Keypair.fromSecretKey(Base58.decode(process.env.SIGNER_PRIVATE_KEY)); const connection = new web3.Connection(web3.clusterApiUrl(process.env.CLUSTER_NAME), 'confirmed'); // Create transfer instruction const instruction = web3.SystemProgram.transfer({ fromPubkey: keypair.publicKey, toPubkey: keypair.publicKey, lamports: 0, }); // Create transaction object and sign. const tx = new web3.Transaction({ recentBlockhash: blockhash, feePayer: keypair.publicKey }).add(instruction); tx.sign(keypair) data.startTime = new Date().getTime() // Send signed transaction and wait til confirmation const signature = await web3.sendAndConfirmRawTransaction( connection, tx.serialize(), // tx serialized in wire format ) data.endTime = new Date().getTime() data.latency = end-start Start Time End Time
  11. 데이터 수집 결과 Polygon PoS Chain 트랜잭션 처리 시간 Near

    Protocol 트랜잭션 처리 시간 실험 결과 대시보드
  12. 데이터 수집 결과 블록체인 별 평균 트랜잭션 처리 시간 (에러

    바: 표준편차) 평균: 2.135초 표준편차: 0.581초
  13. 네트워크 혼잡도 분석 (Ex: Polygon PoS Chain) 최신 블록의 가스

    사용량 최신 블록의 트랜잭션 개수 - 최신 블록의 가스 사용량이 블록 리밋의 90% 이하인 트랜잭션들의 지연시간 평균을 계산하여 기존 지연시간 평균과 비교 - 10.919 초 (8956개의 트랜잭션) -> 10.785 초 (8029개의 트랜잭션)
  14. 클레이튼의 빠른 트랜잭션 처리 시간 - 클레이튼은 즉각적 완결성을 제공하기

    때문에, 이후 추가적인 확정(con fi rmation)이 필요하지 않음 - 완결성을 고려 하여도 가장 빠른 트랜잭션 지연 시간을 가짐 - 실시간 상호작용을 필요로 하는 메타버스에 가장 적합한 블록체인
  15. 향후 계획 ( TPS는 어떻게 비교해야할까? ) - 각 블록체인의

    TPS는 테스트 환경에서 측정된 값이고, 테스트 환경을 통일하지 않는 이상 비교하기 어려움 - 동일한 성능의 노드 네트워크를 구성하고, 트랜잭션을 대량으로 생성하여 네트워크에 전파하여야 함 - 추가적으로 FT(Fungible Token)과 NFT(Non - Fungible Token)을 전송하는 트랜잭션을 전송하여 실제 사 용자 시나리오를 고려한 TPS 측정도 필요
  16. 참고 문헌 1) 실험 결과 Dashboard: http:/ /redash - analytics.ds.groundx.xyz/public/dashboards/jp9VVcKYJk4Ohrt66jitf7x7SaEsLhvhE5xIxKMX?org_slug=default

    2) 실험에 사용된 코드: https:/ /github.com/klaytn/tx - latency - measurement 3) D fi nitycommunity, “TPS & Blocktime”, 2022년 6월 20일, https:/ /www.d fi nitycommunity.com/internet - computer - vs - layer-1-blockchains/ 4) Polygon, “Polygon TPS”, 2022년 6월 20일, https:/ /blog.polygon.technology/what - do - you - prefer - maximum - security - or - cheaper - transactions/ 5) Polygonscan, “Polygon Blocktime”,, 2022년 6월 20일, https:/ /polygonscan.com/chart/blocktime 6) Solana Whitepaper, “Solana Finality”, 2022년 6월 20일, https:/ /solana.com/solana - whitepaper.pdf 7) Near Protocol Docs, “Near Protocol Blocktime”, 2022년 6월 20일, https:/ /docs.near.org/concepts/basics/transactions/ gas#:~ : text=NEAR%20has%20a%20more%2Dor,amount%20of%20gas%20per%20block 8) Near Protocol Docs, “Near Protocol Finality”, 2022년 6월 20일, https:/ /docs.near.org/integrator/exchange - integration#blocks - and - fi nality 9) Klaytn Docs, “Klaytn Overview”, 2022년 6월 20일, https:/ /docs.klaytn.foundation/klaytn 10) Klaytn Docs, “Klaytn Finality”, 2022년 6월 20일, https:/ /docs.klaytn.foundation/klaytn/design/consensus - mechanism 11) Fantom Explorer, “Fantom block time chart”, 2022년 6월 20일, https:/ /ftmscan.com/chart/blocktime 12) Fantom Foundation, “Fantom Finality”, https:/ /fantom.foundation/fantom - faq/#different 13) Elrond Docs, “Elrond Block time”, 2022년 6월 20일, https:/ /docs.elrond.com/welcome/welcome - to - elrond/ 14) BNB Smart Chain Average Block time chart, “BNB Block time”, 2022년 6월 20일, https:/ /bscscan.com/chart/blocktime 15) Kraken Article, “Polygon Finality”, 2022년 6월 20일, https:/ /support.kraken.com/hc/en - us/articles/203325283 - Cryptocurrency - deposit - processing - times 16) Avalanche webpage, “Avalanche transaction fi nality”, 2022년 6월 20일, https:/ /www.avax.network/ 17) Harmony Medium blog, “Harmony transaction fi nality”, 2022년 6월 20일, https:/ /medium.com/harmony - one/2-seconds - block - time - on - harmony - mainnet - aba78ee5643f 18) BNB Chain Documentation, “BNB Smart Chain Finality”, 2022년 6월 20일, https:/ /docs.bnbchain.world/docs/learn/consensus 19) Polkadot wiki, “Polkadot Finality”, 2022년 6월 20일, https:/ /wiki.polkadot.network/docs/learn - comparisons - ethereum-2#:~ : text=The expected time to fi nality is 12-60 seconds.,with fewer validators per shard 20) Threadreader, “Elrond Transaction Finality”, 2022년 6월 20일, https:/ /threadreaderapp.com/thread/1222950920503296004.html 21) Hedera.com, “Hedera Transaction Con fi rmation”, 2022년 6월 20일, https:/ /hedera.com/ 22) Polygon Docs, “Polygon Gas station”, 2022년 6월 20일, https:/ /docs.polygon.technology/docs/develop/tools/polygon - gas - station/ 23) Avalanche Docs, “Avalanche send transaction”, 2022년 6월 20일, https:/ /docs.avax.network/quickstart/sending - transactions - with - dynamic - fees - using - javascript/ 24) Polkadot Docs, “Polkadot simple transfer”, 2022년 6월 20일, https:/ /polkadot.js.org/docs/api/examples/promise/make - transfer/ 25) Elrond Docs, “Elrond transfer”, 2022년 6월 20일, https:/ /docs.elrond.com/sdk - and - tools/erdjs/erdjs - cookbook/#broadcasting - transactions 26) Solana Docs, “Solana Transaction Fee”, 2022년 6월 20일, https:/ /docs.solana.com/implemented - proposals/transaction - fees 27) Near Protocol Docs, “Near Gas Fee”, 2022년 6월 20일, https:/ /docs.solana.com/implemented - proposals/transaction - fees 28) Hedera Docs, “Hedera Fee”, 2022년 6월 20일, https:/ /docs.hedera.com/guides/mainnet/fees