Repository for BLOB storage (archive and serve data)
- Docker engine up and running.
- Go installed on your system.
-
Start MySQL:
Navigate to the
docker-compose
directory and start the MySQL service:cd ./docker-compose docker-compose up -d
This command starts your MySQL instance as defined in your
docker-compose.yml
file. -
Migrate Database Schema:
Navigate to the
migrations
directory to apply database migrations:cd ./migrations goose mysql "<user>:<password>@tcp(localhost:3306)/blobs" status goose mysql "<user>:<password>@tcp(localhost:3306)/blobs" up
These commands apply migrations to the
blobs
database.
Ensure your .default.indexer.env
and .default.server.env
files are configured with the correct database credentials, host, and any other necessary environment variables.
-
Start the Indexer:
With the environment file configured, start the indexer:
ENV_FILE=.default.indexer.env go run cmd/main.go indexer
This starts the app from the latest block height by default. Adjust the
STARTING_BLOCK_ID
in the environment file if needed. -
Start the Server:
Similarly, start the server:
ENV_FILE=.default.server.env go run cmd/main.go server
When the DB
, blob-catcher
and server
are running, the blob-catcher
is outputting the blobHash
to the terminal (with the networkName
variable too, though it is not written into the DB). Use that blobHash
(including the 0x) in
-
Querying Blob Data via HTTP Request:
To retrieve blob data, you can execute a
curl
command. This allows for querying multipleblobHashes
simultaneously, separated by commas. A single request can yield an array of results:curl -X GET "http://localhost:3282/getBlob?blobHash=0x01a2a1cdc7ad221934061642a79a760776a013d0e6fa1a1c6b642ace009c372a,0xWRONG_HASH"
Expected Output:
{"data":[{"blob":"0x123...00","kzg_commitment":"0xabd68b406920aa74b83cf19655f1179d373b5a8cba21b126b2c18baf2096c8eb9ab7116a89b375546a3c30038485939e"}, {"blob":"NOT_FOUND","kzg_commitment":"NOT_FOUND"}]}
-
Backtesting with a Python Script:
This script facilitates querying the database directly based on a specified
blob_hash
. Modify theblob_hash
variable in the script to match the hash you wish to query.To run the script:
python3 python_query.py
What is still missing is:
- small refinements and DevOps (prod-grade DB with credentials, proper containerization)