* db: migrate from lmdb-zero to heed * fix: check resizing operation and wait to avoid crash with multiple batches, fix exists check at batch * build: fix missing deps at Cargo.lock * lmdb: single environment, migrate existing databases with provided non-default environment name * fix: revert chunk size to 128mb * lmdb: ability to use multiple shared environments * build: remove unused dependency * fix: resize to have correct multiplier of the system page size * lmdb: speed up prefix iter by storing keys * lmdb: default env name * lmdb: wait db resize before read, reduce timeout before resizing * lmdb: use static reader for iterator, count existing batches for stable resize * fix: check batches count on resize waiting * lmdb: use separate databases instead of prefixes, use default db for values without prefixes, migrate old environment * fix: pop pos key * lmdb: count all open transactions to finish before resizing * lmdb: immediate resize if there are no open transactions * lmdb: remove env state when there are no more stores * lmdb: use atomic for resize and resize checking flags * lmdb: sleep 10ms when waiting all opened txs to be closed * lmdb: use atomic open txs and stores count * lmdb: use index to detect separator, ignore unknown db key to not have a panic * lmdb: store max 10k keys in the iterator * lmdb: check iter result on getting total * lmdb: handle errors at iterator * lmdb: handle an error when db with provided key not found * lmdb: fix iterate over 10k keys * lmdb: document migration resize safety * lmdb: fix iter test * lmdb: clear new db after unsuccessful migration, handle read error on migration to interrupt process * store: bring back old key methods to reproduce data migration * lmdb: return an error on unsuccessful migration * lmdb: migration test, clean data after allocate test * lmdb: info migration log * fix: move iterator before handling an error to allow skip bad value * lmdb: return an error if removal of old DB file failed after migration * lmdb: lifetime for iterator, use write transaction at batch iterator * lmdb: migration progress * fix: tests * lmdb: immediately set resizing flag, ignore resizing flag while there are more than 0 opened txs to avoid stuck, optimize tx counter for some operations * lmdb: key for successful migration * lmdb: fix put database creation at separate block to avoid lifetime issues when returning an error on migration
Grin
Grin is an in-progress implementation of the Mimblewimble protocol. Many characteristics are still undefined but the following constitutes a first set of choices:
- Clean and minimal implementation, and aiming to stay as such.
- Follows the Mimblewimble protocol, which provides hidden amounts and scaling advantages.
- Cuckoo Cycle proof of work in two variants named Cuckaroo (ASIC-resistant) and Cuckatoo (ASIC-targeted).
- Relatively fast block time: one minute.
- Fixed block reward over time with a decreasing dilution.
- Transaction fees are based on the number of Outputs created/destroyed and total transaction size.
- Smooth curve for difficulty adjustments.
To learn more, read our introduction to Mimblewimble and Grin.
Status
Grin is live with mainnet. Still, much is left to be done and contributions are welcome (see below). Check our mailing list archives for the latest status.
Contributing
To get involved, read our contributing docs.
Find us:
- Telegram: Grin Development
- Chat: Keybase, more instructions on how to join here.
Getting Started
To learn more about the technology, read our introduction.
To build and try out Grin, see the build docs.
Philosophy
Grin likes itself small and easy on the eyes. It wants to be inclusive and welcoming for all walks of life, without judgement. Grin is terribly ambitious, but not at the detriment of others, rather to further us all. It may have strong opinions to stay in line with its objectives, which doesn't mean disrespect of others' ideas.
We believe in pull requests, data and scientific research. We do not believe in unfounded beliefs.
Credits
Tom Elvis Jedusor for the first formulation of Mimblewimble.
Andrew Poelstra for his related work and improvements.
John Tromp for the Cuckoo Cycle proof of work.
License
Apache License v2.0.