上級者用語を調べる
シャーディングとは
- 執筆
- CRYPTO PORT 編集部
- 公開日
- 更新日
- 読了目安
- 5 分
結論
シャーディングは、ネットワーク全体を複数の区画に分け、各ノードが全体ではなく担当分だけを処理することで容量を増やす設計です。全ノードが全取引を検証するという前提を崩すため、区画をまたぐ処理や安全性の確保が難しく、実装は慎重に進められています。
要点
- ネットワークを分割し並列処理で容量を増やす手法
- 各ノードは担当区画のデータだけを保持する
- 区画をまたぐ取引の整合性確保が最大の課題
- イーサリアムはデータ可用性の分割を先行させた
定義
ブロックチェーンのデータや処理を複数の区画(シャード)に分割し、各ノードが一部だけを担当することで全体の処理量を増やす設計手法。
もともとはデータベースの分割手法です。1台で全件を扱う代わりに、顧客IDの範囲などで複数台に分けて負荷を下げます。ブロックチェーンに当てはめると、全ノードが全取引を検証するという前提を外し、各ノードが担当シャードだけを検証する形になります。理論上、シャード数に比例して容量が増えます。
難しいのは、あるシャードの資産を別のシャードに送るような、区画をまたぐ処理です。両方の状態を同時に、かつ整合的に更新する必要があり、片方だけ成立するような中途半端な状態を許すと資産の二重計上が起きます。また、1つのシャードだけを攻撃できるなら、全体を攻撃するより安く済んでしまいます。
イーサリアムは当初、実行そのものを分割する計画でしたが、ロールアップを中心に据える方針に転換し、まずデータの置き場を分割する方向へ進みました。EIP-4844で導入されたブロブは、ロールアップ用のデータを一定期間だけ保持する専用の領域で、この流れの最初の段階にあたります。
注意点
- · シャード数が増えても、区画をまたぐ処理が多い用途では期待どおりに速くならない
- · 1シャードあたりの検証者が減ると、その区画だけを狙う攻撃の難度が下がる
- · 各チェーンが「シャーディング」と呼ぶ実装内容は同じではないため、名前だけで比較しない