見出し画像

ブロックチェーンデータを効率的に処理および管理する方法

ビットコインやイーサリアムのようなブロックチェーンが進化し続けるにつれて、それらが生成するデータの量は指数関数的に増加します。これにより、元帳全体を格納してトランザクションを検証するブロックチェーンノードの保存と処理の課題が発生します。StateDB Live Pruningのようなテクニックは、ストレージ要件を削減し、パフォーマンスを向上させることにより、ノードが効率的に動作するのに役立ちます。

ブロックチェーンの成長するストレージ要件

ブロックチェーンの中心には、ネットワークで発生したすべてのトランザクションを記録する元帳があります。この元帳は、コンセンサスとトランザクションの検証に参加するノード全体に分散されます。ブロックチェーンが時間の経過とともに多くのトランザクションを処理するにつれて、元帳は一貫して成長します。

例えば、ビットコインブロックチェーンは、10分ごとにトランザクションデータを含むブロックを追加します各ブロックのサイズは1MBです。144ブロックが毎日追加され、1日あたり合計144MBです。このレートでは、ビットコイン台帳は年間50GB以上成長します。より複雑なデータ構造とスマート契約機能を備えたイーサリアムブロックチェーンは、より大きなブロックサイズで15秒ごとに1ブロックでデータをさらに高速に生成します。これにより、イーサリアム台帳のサイズが急速に拡大し、毎年ほぼ倍増しています。

このすべてのデータは、ブロックチェーンの完全なコピーを保持する完全なノードで保存する必要があります。2023年半ば、ビットコイン台帳のサイズは500GBに近づきました。イーサリアムの場合、すでに1TBを超えていました。このような大量のデータを保存することは、個々のノードオペレーターにとってコスト抑制的で技術的に困難な場合があります。その結果、完全に分散化された独立したノードインフラストラクチャを実行することがより困難になります。

ブロックチェーンストレージにおけるStateDBの役割

イーサリアムやKlaytnなどの多くのブロックチェーンプラットフォームでは、State Database(StateDB)と呼ばれる主要なデータ構造が重要なストレージスペースを占めています。StateDBは、取引を検証するために必要な口座残高、契約データ、ブロックチェーン状態などの重要な情報を保持しています。

トランザクションが発生すると、StateDBは継続的に更新され、最新の状態を反映します。これは、口座残高の変更や契約データの修正などの頻繁な変更を意味します。

StateDBはMerkle Patricia Trie(MPT)構造を使用して、状態データを効率的に保存します。しかし、欠点は、データが少しでも変化するとMPT全体が劇的に変化することです。調査によると、単一の更新されたノードにより、MPTに10を超える新しいノードが追加される可能性があります。この指数関数的成長特性は、StateDBサイズをすばやく膨らませます。必要な膨大な容量は、フルノードを実行しているバリデータと鉱山労働者が管理するのに困難です。

既存の剪定方法に制限がある理由

StateDBの拡張し続けるストレージのニーズに対応するために、ブロックチェーンの開発者は、古い不要なデータを安全に削除するための剪定技術に取り組んできました。

StateDBオフラインのようなプルーニング方法プルーニングでは、ノードサーバーをオフラインにして、データを新しいインフラストラクチャに移行し、ブロックチェーンを再同期する必要があります。これにより、ブロックチェーンのサイズに応じて、数時間から数日までのかなりのノードダウンタイムが発生します。このような複雑な調整により、頻繁な剪定作業の実現可能性も制限されます。

剪定の主な制限は、MPTのようなデータ構造がノード間で共有されたネストされたデータを使用することです。これは、ノードA:同じデータを参照することができます。ノードB:単純に削除します。このような場合、回復不可能なデータの損失と破損が発生します。マルチ参照データを管理するというこの課題により、これまでのところ効率的なオンライン剪定が妨げられています。

ライブプルーニングを可能にするExthashの紹介

マルチリファレンスの問題を克服するために、Klaytn開発者はExthashと呼ばれる変更されたハッシュ関数を導入しました。Exthashは、通常の32バイトのハッシュに7バイトのシリアル番号を追加することで機能します。このシリアル番号は一意の識別子として機能し、同じデータが同じハッシュを持つことを防ぎます。

通常のハッシュをStateDB全体でExthashに置き換えることにより、重複した参照を削除できます。もしノードA以前にノードBで同じハッシュを使用する場合、このリンクには一意のExthash識別子が含まれています。後で定中に削除されます。その参照は別個のExthash値を使用するため、影響を受けません。

Exthashを実装するために、既存のMerkle Patricia Trie構造が新しい拡張ハッシュを使用するように改造されました。個々のノードはキーと値のペアを表します。キーはオブジェクトハッシュであり、値は実際のデータを格納します。通常のハッシュの代わりにExthashを利用するようにハッシュ生成を変更することにより、冗長性を回避できます。

Exthashによって追加された7バイトのnonceは、同一のデータでも一意のハッシュを生成します。たとえば、2つのノードに“残高:100 ”が含まれている場合、それらのExthash値はnonceに基づいて異なります。ノードAは安全に参照できノードB 紛争なく、剪定中に後でBが削除された場合、Aのリンクはそのままで、別個のExthashを指します。

Exthashを使用すると、共有データを安全に削除できるため、ブロックチェーンが完全に機能している間、StateDBをライブで剪定できます。これにより、従来のオフライン剪定技術によってもたらされるダウンタイムと複雑な再同期課題が排除されます。

ライブプルーニングはStateDBリーンを維持します

KlaytnはStateDB Live Pruningを実装しました(バージョン1.11)古いStateDBデータの自動削除を可能にします。デフォルトでは、過去2日間のStateDBデータのみが保持されますが、古い情報は定期的に剪定されます。

これにより、アクティブなStateDBサイズがI / Oパフォーマンスに最適になり、通常は150GBから200GBの範囲になります。完全なアーカイブと比較してストレージ要件が大幅に削減されたため、フルノードは肥大化したデータに窒息することなくスムーズに動作できます。小さいStateDBは、キャッシュの利点も提供し、さまざまなブロックチェーン操作を高速化します。

Exthashの導入により、7バイトの拡張機能の生成と保存に関連する追加のオーバーヘッドが追加されます。ただし、ベンチマークでは、システム全体の効率が、ライブ剪定によって可能になるストレージとキャッシュの増加から20%以上向上していることが明らかになっています。

StateDB Live Pruningは、ストレージスペースに加えて、ノードオペレータの帯域幅も節約します。最初にノードを同期するとき、過去数日間の剪定されたStateDBは、ダウンロードする必要があるデータの量を最小限に抑えます。これにより、世界中の参加者がノードを実行しやすくなります。

継続的な分析は、最適な剪定頻度と期間を決定するのに役立ちます。ディスクパフォーマンス、ネットワーク速度、ノードタイプなどの要素は、理想的な剪定構成に影響を与えます。プルーニングパラメータは、ブロックチェーンのデータ特性が進化するにつれて、時間の経過とともに調整できます。

異なるノードタイプの継続的な最適化

Live StateDBプルーニングは、最近の状態データへの高速アクセスを必要とするコンセンサスと検証のみのノードに最も価値を提供します。主に分析用の履歴データを維持しても、そのようなノードにはメリットがない場合があります。

今後の作業では、さまざまなストレージシステム間で最新のホットデータと古いコールドデータを効率的に分離します。たとえば、安価なスローハードディスクは分析のために履歴データを格納できますが、高速SSDは時間に敏感な処理のために最新の情報を処理します。

最近のブロックからトランザクションデータを抽出するなどの最適化も検討されています。トランザクションは個別のストレージに移動できますが、ホットなStateDBでは状態の変更のみが保持されます。ライブプルーニングが効果的であることを証明することで、Klaytn開発者は、さまざまなノードタイプに合わせたさらなる拡張機能に集中できます。

結論

ブロックチェーンデータは時間とともに指数関数的に増加するため、ノードがスムーズに動作するには、効率的なストレージと剪定が不可欠です。Exthashを使用して冗長な共有データ参照をインテリジェントに排除することにより、Klaytnは継続的なライブStateDB剪定を可能にします。これにより、検証に必要な最近のブロックチェーンデータのみを保持することにより、ノードを軽量に保ちます。

進行中の研究は、ユーティリティに基づいてホットストレージとコールドストレージ間でデータを分離することにより、剪定をさらに改善しています。ライブプルーニングのような革新的なソリューションにより、ブロックチェーンは、膨大な量のデータを生成するにもかかわらず、持続的にスケーリングできます。

よくある質問

ブロックチェーンのStateDBとは何ですか?
– StateDBは、ブロックチェーンの状態を表すデータベース保持アカウントとストレージ情報です。ツリー(Merkle Patricia Trie)を使用してデータを整理します。

ブロックチェーンのStateDBが大きくなるのはなぜですか?
–トランザクションが発生すると、不変のStateDBは時間の経過とともにデータを蓄積します。データを変更すると、基礎となるtrie構造も拡張されます。この指数関数的な成長は、かなりの貯蔵を消費します。

StateDB ライブプルーニングはどのように機能しますか?
– Exthashと呼ばれる新しいハッシュアルゴリズムを使用して、重複するデータ参照を排除します。これにより、ブロックチェーンが正常に動作している間、古いStateDBデータを安全にプルーニングできます。

Exthashとは何ですか?
– Exthashは、ハッシュに7バイトのシリアル番号を追加する代替ハッシュアプローチです。これにより、各ハッシュの反復が一意であることが保証され、重複するキーの問題がなくなります。

StateDB ライブプルーニングの利点は何ですか?
– StateDBを小さく無駄のない状態に保つことで、ノードのパフォーマンスを向上させます。これにより、ストレージのニーズが軽減され、I / Oキャッシングのパフォーマンスが向上します。また、Exthashが安全な共有データの削除を可能にするため、ブロックチェーンが完全に機能している間、シームレスに発生するため、ブロックチェーンのダウンタイムは発生しません。

https://klaytn.foundation/how-to-efficiently-process-and-manage-blockchain-data/

この記事が気に入ったらサポートをしてみませんか?