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

StateDB Pruning & Migration

kakao
PRO
December 09, 2022

StateDB Pruning & Migration

#BlockchainStorage

블록체인의 스토리지는 모든 데이터의 정합성 체크를 위해 모든 데이터를 누적해 저장합니다. 지속해서 증가하는 데이터로 인해 로컬 스토리지 데이터는 계속 증가하고, 이에 따라 데이터 액세스 속도는 지속적으로 느려지게 됩니다. 블록체인에서 과거 데이터가 중요하긴 하지만 노드별 역할에 따라 현재 데이터만 필요한 경우도 있고, 과거 데이터가 필요하더라도 최근 데이터만큼 빠른 속도로 액세스 되지 않아도 괜찮은 노드도 존재합니다. 이러한 특성을 이용해서 클레이튼은 과거 데이터를 지우거나 분산 스토리지로 마이그레이션 하는 로직을 만들어 스토리지 활용을 최적화하는 블록체인 스토리지 관리 모듈을 개발 중입니다. 본 세션에서는 이에 대한 이야기를 하고자 합니다.

발표자 : ethan.kr
크러스트유니버스에서 블록체인의 스토리지를 개발하고 있는 이든입니다. 카카오톡의 분산스토리지를 개발했고, 최근에 클레이튼에서 사용하는 블록체인용 스토리지의 최적화와 분산시스템으로의 확장을 고민하고 있습니다.

kakao
PRO

December 09, 2022
Tweet

More Decks by kakao

Other Decks in Programming

Transcript

  1. 이동광 ethan.kr


    크러스트 유니버스
    Copyright 2022. Kakao Corp. All rights reserved. Redistribution or public display is not permitted without written permission from Kakao.
    StateDB Pruning & Migration
    if(kakao)2022

    View Slide

  2. 자기소개
    경력사항


    (05~07) Search engine & SEO


    (07~11) Internet AD Server & Analytics


    (11~19) kage - kakao distributed storage


    (19~21) kakao enterprise. Data & Contents 팀 리더


    (22~) Krustuniverse (Klaytn Core Dev, Storage Part)


    관심 분야 - 대용량 데이터 처리 및 분산 처리 기술

    View Slide

  3. What is blockchain?


    AccountDB & StorageDB


    ExtHash


    StateDB Pruning & Migration


    Storage for nodes

    View Slide

  4. What is Blockchain?

    View Slide

  5. - 블록체인 기술은 비즈니스 네트워크 내에서 정보를 투명하게 공유할 수 있도록 하는 고
    급 데이터베이스 메커니즘입니다. 블록체인 데이터베이스는 연쇄적으로 연결된 블록에
    데이터를 저장합니다. 네트워크의 합의 없이 체인을 삭제하거나 수정할 수 없으므로 이
    데이터는 시간 순서대로 일관성이 있습니다. 그 결과 블록체인 기술을 사용하여 주문, 결
    제, 계정, 기타 트랜잭션을 추적하기 위해 불변하거나 변경 불가능한 원장을 생성할 수 있
    습니다. 이 시스템에는 무단 트랜잭션 항목을 방지하고 이러한 트랜잭션의 공유 보기에
    서 일관되게 생성하는 기본 제공 메커니즘이 있습니다.
    What is Blockchain
    AWS: https://aws.amazon.com/ko/what-is/blockchain/

    View Slide

  6. What is Blockchain
    ࠶۾
    헤더

    트랜잭션 1
    트랜잭션 2
    State
    Alex : 100 KLAY
    Bob : 100 KLAY
    Mike : 300 KLAY

    영수증 2
    영수증 1
    Michael : 400 KLAY

    View Slide

  7. What is Blockchain
    헤더
    트랜잭션 1
    트랜잭션 2
    영수증 2
    영수증 1
    RootHash
    Alex : 100 KLAY
    Bob : 100 KLAY
    Mike : 300 KLAY

    Michael : 400 KLAY Alex : 100 Bob : 100 Mi
    ke : 300 chael : 400

    View Slide

  8. What is Blockchain
    ೻؊
    ౟ے੥࣌ 1
    ౟ے੥࣌ 2
    ৔ࣻૐ 2
    ৔ࣻૐ 1
    RootHash
    Alex : 100 Bob : 100 Mi
    ke : 300 chael : 400

    ೻؊
    ౟ے੥࣌ 1
    ౟ے੥࣌ 2
    ৔ࣻૐ 2
    ৔ࣻૐ 1
    ೻؊
    ౟ے੥࣌ 1
    ౟ے੥࣌ 2
    ৔ࣻૐ 2
    ৔ࣻૐ 1
    State Trie Nodes State Trie Nodes

    View Slide

  9. Account DB

    & Storage DB

    View Slide

  10. Account DB
    RootHash - 1
    Alex : 100 Bob : 100 Mi
    ke : 300 chael : 400

    헤더
    트랜잭션 1
    트랜잭션 2
    영수증 2
    영수증 1
    헤더
    트랜잭션 3
    트랜잭션 4
    영수증 4
    영수증 3
    RootHash - 2
    Bob : 50 Mi
    chael : 450
    - Bob이 Michael에게

    50 KLAY를 전송하면

    View Slide

  11. Account DB
    RootHash - 1
    Alex : 100 Bob : 100 Mi
    ke : 300 chael : 400

    헤더
    트랜잭션 1
    트랜잭션 2
    영수증 2
    영수증 1
    헤더
    트랜잭션 3
    트랜잭션 4
    영수증 4
    영수증 3
    RootHash - 2
    Bob : 50 Mi
    chael : 450
    - Bob이 Michael에게

    50 KLAY를 전송하면

    View Slide

  12. Account DB
    - 중복 사용된 trie node를 삼각형의 중첩으로 표현

    View Slide

  13. StorageDB
    - AccountDB의 leaf노드에 StorageDB가 연결되는 구조.


    - StorageDB는 Smart Contract의 코드와 결과 값을 저장

    View Slide

  14. AccountDB & StorageDB
    1,647,476,103
    51,177,588
    AccountDB nodes StorageDB nodes
    Block Num = 95952184

    View Slide

  15. AccountDB & StorageDB
    1 Block’s StateDB Trie nodes : 1.7 billion nodes

    All Block’s StateDB nodes : Estimated at 9 billion nodes


    Save space - same data is referenced to the same hashnode.


    Reference count management is too dif
    fi
    cult, So pruning is possible only

    of
    fl
    ine
    Etheruem : https://blog.ethereum.org/2015/06/26/state-tree-pruning

    View Slide

  16. AccountDB & StorageDB
    1 Block’s StateDB Trie nodes : 1.7 billion nodes

    All Block’s StateDB nodes : Estimated at 9 billion nodes


    Save space - same data is referenced to the same hashnode.


    Reference count management is too dif
    fi
    cult, So pruning is possible only

    of
    fl
    ine
    Etheruem : https://blog.ethereum.org/2015/06/26/state-tree-pruning

    View Slide

  17. ExtHash

    View Slide

  18. ExtHash
    Hash Keccak-256 ( 32 Byte )

    Used as key string for all data
    ExtHash Extended Hash ( 40 Byte )

    Hash + Ext bytes ( Block number, Hash Index of block )


    Used as key string for all data, But there is no duplicate keys
    type Hash [HashLength]byte


    type ExtHash struct {

    Hash Hash

    BlockNum uint32

    Idx uint32

    }

    View Slide

  19. ExtHash
    Node ࣻ ૐоਯ : 1.91%

    Byteӝળ ਊ۝ ૐоਯ : 1.16%

    82671574 ~ 84187519

    View Slide

  20. ExtHash - Hash Function
    func (h *hasher) makeHashNode(data []byte) hashNode {

    n := make(hashNode, h.sha.Size())

    h.sha.Reset()

    tmpData, err := common.ExtFilter(data)

    if err == nil {

    h.sha.Write(tmpData)

    } else {

    h.sha.Write(data)

    }

    h.sha.Read(n)

    return n

    }
    f86180808080808080a8ca32c18c40a75a837b2c085d332f9ca9ba8bc3136fa373dbc8f5370558cf0429616b1100
    ffff
    0e008080a842
    cde4e2c2be45ea92d4113025489974bc37f556b918a3bd7b042b246d30dcc900000000
    ffff
    0100808080808080


    f85180808080808080a0ca32c18c40a75a837b2c085d332f9ca9ba8bc3136fa373dbc8f5370558cf04298080a042cde4e2c2be45ea
    92d4113025489974bc37f556b918a3bd7b042b246d30dcc9808080808080

    View Slide

  21. StateDB Pruning

    & Migration

    View Slide

  22. Trie Update
    RootHash - 1
    Alex : 100 Bob : 100 Mi
    ke : 300 chael : 400

    헤더
    트랜잭션 1
    트랜잭션 2
    영수증 2
    영수증 1
    헤더
    트랜잭션 3
    트랜잭션 4
    영수증 4
    영수증 3
    RootHash - 2
    Bob : 50 Mi
    chael : 450

    View Slide

  23. StateDB Pruning & Migration
    Move

    Add
    Delete

    Add
    StateDB Pruning StateDB Migration

    View Slide

  24. StateDB Pruning
    RootHash - 1
    Alex : 100 Bob : 100 Mi
    ke : 300 chael : 400

    헤더
    트랜잭션 1
    트랜잭션 2
    영수증 2
    영수증 1
    헤더
    트랜잭션 3
    트랜잭션 4
    영수증 4
    영수증 3
    RootHash - 2
    Bob : 50 Mi
    chael : 450
    Hash-24
    Hash-23
    Delete Queue

    View Slide

  25. StateDB Pruning
    RootHash - 1
    Alex : 100
    Bob : 100
    Mi
    ke : 300
    chael : 400

    헤더
    트랜잭션 1
    트랜잭션 2
    영수증 2
    영수증 1
    헤더
    트랜잭션 3
    트랜잭션 4
    영수증 4
    영수증 3
    RootHash - 2
    Bob : 50 Mi
    chael : 450
    Hash-24
    Hash-23
    Delete Queue

    View Slide

  26. StateDB Migration
    RootHash - 1
    Alex : 100
    Bob : 100
    Mi
    ke : 300
    chael : 400 …
    헤더
    트랜잭션 1
    트랜잭션 2
    영수증 2
    영수증 1
    Hash-24
    Hash-23
    Migration Queue

    View Slide

  27. StateDB Migration
    RootHash - 1
    Alex : 100
    Bob : 100
    Mi
    ke : 300
    chael : 400 …
    헤더
    트랜잭션 1
    트랜잭션 2
    영수증 2
    영수증 1
    Hash-24
    Hash-23
    Migration Queue

    View Slide

  28. StateDB Pruning & Migration Result
    300~500GB
    4TB
    StateDB Size StateDB Pruning / Migration

    최근 1000블럭 기준

    View Slide

  29. Storage for node

    View Slide

  30. Storage for nodes

    View Slide

  31. Storage for nodes
    CN
    Consensus Node

    Consensus & Block generation
    Latest Data

    Less latency
    Nvme

    Ramdisk
    PN
    Proxy Node

    CN’s proxy for traf
    fi
    c distribution
    Latest Data

    Less latency
    Nvme

    Ramdisk
    EN
    End Node

    Handles most API services
    All Data
    Nvme

    Hdd - ebs

    Cloud, noSQL

    View Slide

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

    View Slide