Skip to content
Snippets Groups Projects
  1. Jan 16, 2024
    • STEVAN Antoine's avatar
      add support for decoding recoded shards (dragoon/komodo!13) · 4493022b
      STEVAN Antoine authored
      - should close dragoon/komodo#3
      - based on top of dragoon/komodo!12
      
      > **Note**  
      > - commits containing "_DEBUG_" will be removed once this is done
      > - this MR is based on dragoon/komodo!12 and will be rebased on top of `main` once dragoon/komodo!12 lands
      
      i think this is best [reviewed commit by commit](dragoon/komodo!13 (58cec473))
      4493022b
    • STEVAN Antoine's avatar
      refactor shard to use a simple vector (dragoon/komodo!12) · ab7c61f2
      STEVAN Antoine authored
      this MR uses a simpler `Vec` of `E::ScalarField` to represent a linear combination.
      
      the rest of the crate has been fixed accordingly.
      
      the goal is to let Arkworks do as much work as possible, fixing part of #2.
      - `one_more` removed from `field::split_data_into_field_elements` in 5531b31a
      - `one_less` removed from `field::merge_elements_into_bytes` in 5761b784
      
      ## examples
      let's say we have at most $k = 3$ source shards, called $s_0$, $s_1$ and $s_2$ respectively.
      this first means that all linear combinations will be at most of length 3.
      
      if a new shard $s$ is a linear combination of the source shards, e.g. $s = \alpha s_0 + \beta s_1 + \gamma s_2$, where $\alpha$, $\beta$ and $\gamma$ are scalar elements of an elliptic curve, then the linear combination in the code will be
      ```rust
      vec![alpha, beta, gamma]
      ```
      > **Note**  
      > the right of the vector can be truncated to remove zero elements that are not part of the linear combination and don't add any extra useful information.  
      > the left stays mandatory.
      
      e.g. we create two times a linear combination with a single one set to $1$ and the rest to $0$ with the following snippet
      ```rust
      let mut linear_combination = Vec::new();
      linear_combination.resize(i + 1, E::ScalarField::zero());
      linear_combination[i] = E::ScalarField::one();
      ```
      ab7c61f2
  2. Jan 12, 2024
    • STEVAN Antoine's avatar
      test all shard permutations in the CLI test (dragoon/komodo!14) · 94b544af
      STEVAN Antoine authored
      related to
      - dragoon/komodo!13
      
      ## description
      in dragoon/komodo!13, i noticed that decoding can be pretty sensitive to the order of the shards...
      this is why i thought testing all possible permutations of the shards could be beneficial 🤔
      
      see the [run attached to this MR](https://gitlab.isae-supaero.fr/dragoon/komodo/-/jobs/11281#L1120) to see all the combinations of shards used in the tests, e.g. `[0, 2, 3]` means that shards `0`, `2` and `3` have been used and shards `1` and `4` have been "_lost_" 
      
      ## changelog
      this MR
      - adds an inline `math` module to `tests/cli.nu` which defines
        - `choose` which computes all the sets of $k$ choose $n$ in $[|0, ..., n - 1|]$
        - `perm` which computes all the permutations on $[|0, ..., n - 1|]$
        - see the inline `_test_choose` and `_test_perm` commands for concrete examples of their behaviours
      - compute all the permutation of $k'$ choose $n$ shards, where $k'$ ranges from $k$ to $n$
      - run the reconstruction test on all these cases
      - moves the CLI example from `README.md` to `examples/cli.nu`
      
      > **Note**  
      > also removes the newline added to the stdout of `komodo` commands, so that the output is prettier, without spurious empty lines
      94b544af
  3. Jan 10, 2024
  4. Dec 06, 2023
  5. Dec 05, 2023
  6. Dec 01, 2023
  7. Nov 30, 2023
Loading