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

Status - Sept 2022 #1

Closed
10 tasks done
Tracked by #8
tabcat opened this issue Sep 1, 2022 · 3 comments
Closed
10 tasks done
Tracked by #8

Status - Sept 2022 #1

tabcat opened this issue Sep 1, 2022 · 3 comments

Comments

@tabcat
Copy link
Member

tabcat commented Sep 1, 2022

Many of the project files have just been committed. Almost every source file has a unit tests for it.

Bi-directional iterative traversal of the merkle-dag has been implemented and tested thoroughly (although there is always more room for testing; especially crucial components like this). This is done by keeping all known entry cids inside of an adjacency list with incoming and outgoing links being tracked. Source files with respective unit tests:

Two key features still need to be added. They are persistence and replication. This means that currently the utility of Opal currently is only mutating local states in memory. The mentioned two features are key and are the priority this month.

On adding persistence, the goal will be to also allow for opening databases in O(1) time this includes the time before being able to edit the database. To do this the states of the a few different components will need to be persisted, specifically:

  • index: the reduced state to allow for immediate reading of the current state of the database.
  • graph: an adjacency list which includes reverse resolutions for all links in the merkle-dag.

Unfortunately to this kind of usability will rely on more stateful-ness, at least as I understand the problem now. What is nice is that these states may be able to be verified as correct/up-to-date potentially by references hashes. In which case the components generating and editing those stats can be sure that everything is working.


Focus this month is building a solid project foundation:

@tabcat
Copy link
Member Author

tabcat commented Sep 8, 2022

As of now ESLint is using TS-Standard's configuration which is very strict. ts-node is being used with mocha to run the .ts test files. All src and test files are passing the linter and all 177 tests are passing.

Next steps are going to be setting up code coverage with c8 which I have not looked at yet. After that will be looking at how to generate API docs with typedoc. I'm going to be looking for a solution that generates markdown files.

It would be great to be able to finish these by the 10th of this month.


After that is all set up I think the next steps will be first going over the code again to try and clean it up and getting it ready for new features. The first feature will probably have to do with replication. There will be some replication tests added that will try to be extensive. In the future there are plans to try using test-ground from protocol labs which allows for testing over a large simulated network.

@tabcat
Copy link
Member Author

tabcat commented Sep 12, 2022

Been thinking more and I'll be working on database persistence before replication. Normally I would work on replication first but with future plans local persistence is better.

@tabcat
Copy link
Member Author

tabcat commented Oct 1, 2022

Closing with #12 uncompleted

@tabcat tabcat closed this as completed Oct 1, 2022
@tabcat tabcat mentioned this issue Oct 20, 2022
10 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant