3 ms·
This look cool! great job, congrats. What are you using as data storage? I understand btcd uses leveldb, are you using something similar?
by cfferry 5y ago
This look cool! great job, congrats.
What are you using as data storage? I understand btcd uses leveldb, are you using something similar?
- chjj 5y agoI considered using leveldb initially, but that would require a C++ compiler and it also requires linking to libstdc++. So at that point, you might as well just write the project in C++, which defeats the point of this project. Mako uses LMDB. Aside from Berkeley DB, it's pretty much the only key-value store in town if you want a pure C project. In the end, it worked out well because I really like LMDB. It has a very intuitive API, and it's very small, which sort of matches the spirit of this project. The zero-copy on reads feature is also amazing. When reading a UTXO from the database, we do no copying and no allocation whatsoever. The UTXO is simply parsed from the pointer LMDB returns. This is something LevelDB cannot do at all.
- avar 5y agoThere's always SQLite, which can also be used as a key-value store.
- VHRanger 5y agoAnd is similarly pure c, self contained
- cfferry 5y agoI am really impressed with your work! If you ever need or look for C++ collabs, let me know! Also, consider opening a discord server to talk more about this project!