From 9b41634f08063858ba97d9a464bc4791d9481818 Mon Sep 17 00:00:00 2001 From: M Alghazwi Date: Thu, 3 Jul 2025 12:20:57 +0200 Subject: [PATCH] update README.md --- README.md | 39 +++++++++++++++++++++------------------ 1 file changed, 21 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index 5711524..ea3b33c 100644 --- a/README.md +++ b/README.md @@ -5,39 +5,42 @@ This is a prototype implementation of the proposed Codex storage proofs for dyna ### 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 -- [x] Select a set of columns randomly -- [x] Generate a KZG evaluation proof at random point for each column -- [ ] Aggregate the KZG evaluation proofs +- [x] Select a set of rows randomly +- [x] Generate a KZG evaluation proof at random point for each selected row ### 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 +- [x] Select a column (or multiple) +- [x] Query the original column +- [x] Update the cells in that column +- [x] Erasure code the updated column ### 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` +- [x] Query the old column and receive the new column +- [x] Iterate over all row commitments +- [x] Commit to each old cell `c_i` and new cell `c'_i` in each row `i`: +- [x] Compute `delta_i` = `c'_i` - `c_i` +- [x] Compute the new row commitment `row_comm_i'` = `row_comm_i` + `delta_i` ### Prove Data & Commitment Update - [ ] TODO... +### Additional functionalities +- [x] BLS encoder: erasure coding over Bls12_381 + ### TODO: -- [ ] Clean up and optimize -- [ ] Simulate interactions between Client (Data Owner) and SP (Storage Provider) -- [ ] Add details and write-up & experimentation/benchmark results +- [ ] implement matrix with "fat" cell and let encoding and commitment work over such matrix. +- [ ] fix conversion between byte to field matrix. +- [ ] Aggregate the KZG proofs. +- [ ] Build a Merkle tree with the KZG commitments. +- [ ] Simulate interactions between Client (Data Owner) and SP (Storage Provider). +- [ ] Clean up and optimize. +- [ ] Add details and write-up & experimentation/benchmark results. **WARNING**: This repository contains work-in-progress prototypes, and has not received careful code review. It is NOT ready for production use.