# blob builder high-level goal(s): * transform raw blobs into form necessary for DAS * serve data/proofs via API * disseminate data/proofs into a DHT * simulate reconstruction libraries: * [`ethereum-consensus`](https://github.com/ralexstokes/ethereum-consensus) * [`beacon-api-client`](https://github.com/ralexstokes/beacon-api-client/tree/main) * [`c-kzg-4844`](https://github.com/ethereum/c-kzg-4844) * [`blst`](https://github.com/supranational/blst) pieces: 1. retrieve blobs from CL via [`blob_sidecars`](https://ethereum.github.io/beacon-APIs/#/Beacon/getBlobSidecars) beacon API 2. erasure code blobs 3. generate KZG commitments to encoded blobs 4. generate KZG proofs for blob rows/columns/samples 5. serve KZG commitments and proofs 6. DHT 7. reconstruction pieces in code: 1. retrieve the blobs * connect to beacon node w/ [`BeaconApiClient`](https://github.com/ralexstokes/beacon-api-client/blob/d838d930f80fdfcadfe32147bcb2e805aec074bc/src/api_client.rs#L60) * manage slot times w/ [`ethereum_consensus::Clock`](https://github.com/ralexstokes/ethereum-consensus/blob/2bcb97563bb8dcb15802d1a280b58f21577ea3e2/ethereum-consensus/src/clock.rs#L43) * retrieve blobs for each slot via `BeaconApiClient::get_blob_sidecars` * hand off blobs to (2) * (optional) archive raw blobs to database 2. erasure code blobs * FFT stuff * reverse bit order (RBO) * roots of unity * blob field elements are treated as polynomial evaluations at specific root of unity in RBO * polynomial interpolation to recover polynomial from evaluations 3. generate KZG commitments 4. generate KZG proofs