44 lines
1.9 KiB
Markdown
Raw Normal View History

2025-06-17 14:09:35 +02:00
Dynamic Data Experiments
================================
2025-06-24 14:32:49 +02:00
This is a prototype implementation of the proposed Codex storage proofs for dynamic data.
### Erasure Coding & Commitment
- [x] Organize data as byte Matrix with `k` rows and `m` columns
- [x] Convert the byte Matrix to Field Matrix with `k` rows and `m` columns
- [ ] Each cell in the Field matrix is "fat" (fat cell = `z` field elements) -> end up with `(k/z)`*`m` Matrix
- [x] Erasure code the columns -> end up with `n`*`m` Matrix
- [ ] Commit to each "fat" cell in each row independently with KZG
- [x] Commit to each row independently with KZG
- [ ] Build a Merkle tree with the KZG commitments
**Note:** in the above I switched the directions of the encoding and commitment (opposite of the [proposal](https://hackmd.io/kPGC3VIZSaWj8DBYOjd4vA?view)) just because it was easier to implement but basically it is same thing.
### Sampling
2025-06-24 16:15:35 +02:00
- [x] Select a set of columns randomly
- [x] Generate a KZG evaluation proof at random point for each column
2025-06-24 14:32:49 +02:00
- [ ] Aggregate the KZG evaluation proofs
### Updating the Data
- [x] Select a row (or multiple)
- [x] Query the original row
- [x] Update the cells in that row
- [x] Erasure code the updated row
### Updating the Commitments
- [x] Query the old row and receive the new row
- [ ] Compute the `delta` = `r'` - `r`
- [ ] Query the old the "fat" cell commitment and compute the new one
- [ ] Compute the `delta_comm` = `fat_comm'` - `fat_comm`
- [ ] Compute the new row commitment `row_comm'` = `row_comm` + `delta`
2025-06-24 16:15:35 +02:00
### Prove Data & Commitment Update
2025-06-24 14:32:49 +02:00
- [ ] TODO...
### TODO:
- [ ] Clean up and optimize
- [ ] Simulate interactions between Client (Data Owner) and SP (Storage Provider)
- [ ] Add details and write-up & experimentation/benchmark results
2025-06-17 14:09:35 +02:00
**WARNING**: This repository contains work-in-progress prototypes, and has not received careful code review. It is NOT ready for production use.