This repository contains the research and implementation for the paper "Comparative Study of Data Availability Schemes in Various Blockchains".
- Pranjal Sarode ([email protected])
- Prasad Kumkar ([email protected])
We make a comparative benchmarking study of currently polkadot's ELVES data availability protocol with emerging data availability solutions which includes Avail, Celestia, Espresso's-Tiramisu and NEAR's sharded DA.
This work compares various system parameters—including bandwidth, time, latency, block time, block size, robustness, and cost per megabyte of data availability—and extends the analysis to other emerging factors affecting performance and scalability.
The repository is organized as follows:
paper-latex/: Contains the LaTeX source for the research paper.protocol/: Contains the code for interacting with and testing the different blockchain protocols.common/: Common code and libraries used across the different protocols.outputs/: Output data from the experiments.figures/: Figures and plots used in the paper.
- Polkadot (ELVES)
- Avail
- Celestia
- Espresso (Tiramisu)
- NEAR (Sharded DA)
The protocol/Avail directory contains scripts for interacting with the Avail network.
Dependencies:
- Node.js
avail-js-sdkdotenvsubstrate-interface(for Python scripts)
Installation:
cd protocol/Avail
npm install
pip install substrate-interfaceScripts:
avail_test_data.js: Submits data to the Avail testnet.- Usage:
node avail_test_data.js - Note: Requires a
SEEDenvironment variable.
- Usage:
avail_telemetry_probe.py: Fetches telemetry from a local Avail/Substrate node.- Usage:
python3 avail_telemetry_probe.py
- Usage:
block_bloat_test.py: Bloats a block with remark extrinsics and shows before/after telemetry.- Usage:
python3 block_bloat_test.py
- Usage:
The protocol/Celestia directory is currently empty.
The protocol/Espresso directory contains scripts for interacting with the Espresso Data Availability network.
Dependencies:
- Python 3
requests
Installation:
pip install requestsScripts:
espresso-da.py: A client for the Espresso DA to submit and retrieve data.- Usage:
python3 espresso-da.py
- Usage:
espresso_analyzer.py: Fetches block data from the Espresso Network API and calculates statistics.- Usage:
python3 espresso_analyzer.py
- Usage:
The protocol/NEAR directory is currently empty.
The protocol/Polkadot directory contains a script for submitting data to the Polkadot network.
Dependencies:
- Node.js
@polkadot/api@polkadot/util@polkadot/util-crypto
Installation:
cd protocol/Polkadot
npm installScripts:
polkadot_add_data.js: Submits data to the Polkadot network using aremarkorpreimageextrinsic.- Usage:
node polkadot_add_data.js - Note: Requires a
SEED_PHRASEenvironment variable. Use--sendand--feesflags to control behavior.
- Usage: