Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

πŸ› οΈ [TASK] : Design Immutable Storage Ledger which will be used for vote storage and realtime publishing of votes. #693

Closed
3 tasks done
Tracked by #35
stevenj opened this issue Aug 16, 2024 · 0 comments
Assignees
Labels
enhancement New feature or request

Comments

@stevenj
Copy link
Collaborator

stevenj commented Aug 16, 2024

Summary

Design Immutable Ledger

Description

Outer Data Layer

The ledger is an immutable write once append only tamper proof ledger.
It is to create time banded chunks that reference previous chunks, such that any change to a chunk invalidates all later chunks.

It needs a header block that defines header information about the data in the ledger.
It needs a final block that locks the entire set of chunks and no further chunks can be added.

Data in the header should include:

  1. information about the kind of data being recorded. (Think UUID as a definition type).
  2. Sub ID 1 - Global ID. (UUID)
  3. Sub ID 2 - Local ID. (ULID).
  4. Time when it started.
  5. Maximum size (time) of each chunk.
  6. Creator ID. (Kid x509/c509 certificate). (128 bit hash of the cert).
  7. Data specific CBOR data (specific to the kind of data being recorded).
  8. Hash algorithm for chunks. (OID?) (Blake3).
  9. Signature over the hash.

Intermediate Chunks.

  1. Marker that says its an intermediate chunk.
  2. Chunk index
  3. Hash of the previous chunk (copied).
  4. Sub ID 2 - Local ID. (ULID).
  5. Information explaing a gap in the block production (missing chunks).
  6. Data specific CBOR data (specific to the kind of data being recorded).
  7. Hash algorithm for chunks. (OID?) (Blake3).
  8. Signature over the hash.

Final chunk

  1. Looks like the Intermediate chunk, except its marked final.
  2. Has a distinct final data block.

Tasks

  • Make the structure in the Architecture docs for cat voices
  • Create Markdown file to explain how the structure works and is to be used.
  • Create 1 (or more) CDDL Files to define the structures used in a formal sense.

References

  1. CDDL Spec: https://www.rfc-editor.org/rfc/rfc8610
  2. Errata to include: https://www.ietf.org/archive/id/draft-ietf-cbor-update-8610-grammar-01.html
  3. Extensions: https://www.rfc-editor.org/rfc/rfc9165
  4. Modules: https://cbor-wg.github.io/cddl-modules/draft-ietf-cbor-cddl-modules.html and https://github.com/cabo/cddlc
@stevenj stevenj added the enhancement New feature or request label Aug 16, 2024
@stevenj stevenj moved this to πŸ”– Ready in Catalyst Aug 16, 2024
@stevenj stevenj added this to the M4: Voting & Delegation milestone Aug 16, 2024
@Mr-Leshiy Mr-Leshiy moved this from πŸ”– Ready to πŸ— In progress in Catalyst Aug 16, 2024
@Mr-Leshiy Mr-Leshiy moved this from πŸ— In progress to πŸ‘€ In review in Catalyst Sep 3, 2024
@Mr-Leshiy Mr-Leshiy moved this from πŸ‘€ In review to βœ… Done in Catalyst Sep 21, 2024
@github-project-automation github-project-automation bot moved this from βœ… Done to πŸ”¬ Ready For QA in Catalyst Sep 25, 2024
@Mr-Leshiy Mr-Leshiy moved this from πŸ”¬ Ready For QA to βœ… Done in Catalyst Sep 25, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
Archived in project
Development

No branches or pull requests

2 participants