So i've reimplemented Haircomb
![Smiley](https://bitcointalk.org/Smileys/default/smiley.gif)
(no actual forks yet)
First off its been separated into 3 parts that are fairly isolated from each other: libcomb, combcore, and combcore-qt. Which is the library, the daemon and the GUI respectively.
There's a couple of reasons for the rewrite, the big one is to reduce complexity in the high stakes areas so devs can read/audit the important code much more easily.
Another is to make the codebase more approachable, if you want to develop a GUI you don't need to be digging around in important signing code etc.
Finally its so more features can be added relatively painlessly (P2P mining, integrated DEX, lightwallets, auctions, etc have all been talked about).
https://github.com/dyoform/libcombhttps://github.com/dyoform/combcorehttps://github.com/dyoform/combcore-guiBinaries are here (Qt is statically linked on the windows release):
https://github.com/dyoform/combcore/releasesI mention most of the important changes in the combcore readme. If you can read code then libcomb is where all the important stuff is, its also very small (only ~1k lines) and as simple as I could make it. I should also say that the current system of mutex's is going to be replaced when i implement P2P, so there may be race conditions etc (none that ive seen though).
Right now im preparing libcomb to optionally operate in lightwallet mode. The idea is that combcore will have a public API that other people can query so they dont have to deal with storing commits.
Currently the API is smaller than i thought it would be, only:
check_commits_exist([]commit) -> []commit
returns commits that are missing from the commit set
check_commits_older_than([]commit, commit) -> bool
return true if any of the commits in the array are older than the commit
get_coinbase(commit) -> uint64
returns the amount of nats awarded to commit (0 if not a coinbase)
get_height() -> uint64
return the current block height
This will be mostly superseded by P2P commit mining/validating when that gets implemented however it will require storing the commit DB (~1gb), which still might not be possible for some people