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

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

kakao
PRO
December 09, 2022

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

#Klaytn #Latencycomparison

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

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

kakao
PRO

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

    View Slide

  2. 소개
    Phoebe


    - Interface Part, Core Dev Team, Klaytn Foundation


    - 다양한 블록체인에 대한 트랜잭션 지연시간 측정


    - Klaytn Online Toolkit 개발 중

    View Slide

  3. 개요


    블록체인 선정 및 실험 설계


    데이터 수집 결과


    결론

    View Slide

  4. 지연 시간 처리량
    Latency Throughput


    Ex) TPS (Transaction Per Second)
    블록체인 성능 지표

    View Slide

  5. 메타버스에 적합한 블록체인은?
    - 사용자 간의 상호작용과 개인의 경험이 중요함


    - 처리량으로는 사용자의 행동이 빠른 시간 내에 완결성
    있게 실행 되는지 파악이 어려움


    - 지연시간에 대한 논의 부족


    - 지연시간에 초점을 맞춰 블록체인들을 비교하고자 함
    블록체인 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

    View Slide

  6. 개요


    블록체인 선정 및 실험 설계


    데이터 수집 결과


    결론

    View Slide

  7. 블록체인 비교 대상 선정
    - 빠른 처리속도를 표방하는 타 블록체인과 비교하기 위함


    - 22.05.01 기준 CoinMarketCap 순위의 50위권 네이티브 토큰 중 블록 생성 시간이 10초 이내인 체인 선택


    - 추가적으로 Harmony는 싸고 빠르다는 것을 강점으로 내세운 블록체인이기 때문에, Hedera는 트랜잭션의 확
    정시간이 짧기 때문에 추가함

    View Slide

  8. 블록 생성 시간 (초) 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

    View Slide

  9. 트랜잭션 처리 시간 측정 기준
    트랜잭션 처리 시간


    = 트랜잭션이 블록에 포함된 시간 - 트랜잭션을 블록체인 네트워크에 전송한 시간
    트랜잭션 생성 및 서명
    트랜잭션 전송
    블록체인 네트워크 기존 블록체인에 블록 추가
    영수증(Receipt)

    View Slide

  10. 데이터 수집 과정
    - 각 블록체인에서 제공하는 공식 문서의 트랜잭션 전송 예시 참고. 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

    View Slide

  11. 트랜잭션 수수료 설정
    트랜잭션 우선순위


    설정 가능 여부
    체인 이름 트랜잭션 수수료 설정 기준
    가능
    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 가격으로 트랜잭션 수수료 고정

    View Slide

  12. 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

    View Slide

  13. 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

    View Slide

  14. 개요


    블록체인 선정 및 실험 설계


    데이터 수집 결과


    결론

    View Slide

  15. 데이터 수집 결과
    Klaytn 트랜잭션 처리 시간 Solana 트랜잭션 처리 시간
    실험 결과 대시보드

    View Slide

  16. 데이터 수집 결과
    Polygon PoS Chain 트랜잭션 처리 시간 Near Protocol 트랜잭션 처리 시간
    실험 결과 대시보드

    View Slide

  17. 데이터 수집 결과
    블록체인 별 평균 트랜잭션 처리 시간 (에러 바: 표준편차)
    평균: 2.135초


    표준편차: 0.581초

    View Slide

  18. 네트워크 혼잡도 분석 (Ex: Polygon PoS Chain)
    최신 블록의 가스 사용량 최신 블록의 트랜잭션 개수
    - 최신 블록의 가스 사용량이 블록 리밋의 90% 이하인 트랜잭션들의 지연시간 평균을 계산하여 기존 지연시간 평균과 비교


    - 10.919 초 (8956개의 트랜잭션)
    ->
    10.785 초 (8029개의 트랜잭션)

    View Slide

  19. 개요


    블록체인 선정 및 실험 설계


    데이터 수집 결과


    결론

    View Slide

  20. 클레이튼의 빠른 트랜잭션 처리 시간
    - 클레이튼은 즉각적 완결성을 제공하기 때문에, 이후 추가적인 확정(con
    fi
    rmation)이 필요하지 않음


    - 완결성을 고려 하여도 가장 빠른 트랜잭션 지연 시간을 가짐


    - 실시간 상호작용을 필요로 하는 메타버스에 가장 적합한 블록체인

    View Slide

  21. 향후 계획 ( TPS는 어떻게 비교해야할까? )
    - 각 블록체인의 TPS는 테스트 환경에서 측정된 값이고, 테스트 환경을 통일하지 않는 이상 비교하기 어려움


    - 동일한 성능의 노드 네트워크를 구성하고, 트랜잭션을 대량으로 생성하여 네트워크에 전파하여야 함


    - 추가적으로 FT(Fungible Token)과 NFT(Non
    -
    Fungible Token)을 전송하는 트랜잭션을 전송하여 실제 사
    용자 시나리오를 고려한 TPS 측정도 필요

    View Slide

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

    View Slide

  23. 참고 문헌
    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

    View Slide