Minimal implementation of the Mimblewimble protocol.
Find a file
Antioch Peverell 4fda7a6899
Minimal Transaction Pool (#1067)
* verify a tx like we verify a block (experimental)

* first minimal_pool test up and running but not testing what we need to

* rework tx_pool validation to use txhashset extension

* minimal tx pool wired up but rough

* works locally (rough statew though)
delete "legacy" pool and graph code

* rework the new pool into TransactionPool and Pool impls

* rework pool to store pool entries
with associated timer and source etc.

* all_transactions

* extra_txs so we can validate stempool against existing txpool

* rework reconcile_block

* txhashset apply_raw_tx can now rewind to a checkpoint (prev raw tx)

* wip - txhashset tx tests

* more flexible rewind on MMRs

* add tests to cover apply_raw_txs on txhashset extension

* add_to_stempool and add_to_txpool

* deaggregate multi kernel tx when adding to txpoool

* handle freshness in stempool
handle propagation of stempool txs via dandelion monitor

* patience timer and fluff if we cannot propagate
to next relay

* aggregate and fluff stempool is we have no relay

* refactor coinbase maturity

* rewrote basic tx pool tests to use a real txhashset via chain adapter

* rework dandelion monitor to reflect recent discussion
works locally but needs a cleanup

* refactor dandelion_monitor - split out phases

* more pool test coverage

* remove old test code from pool (still wip)

* block_building and block_reconciliation tests

* tracked down chain test failure...

* fix test_coinbase_maturity

* dandelion_monitor now runs...

* refactor dandelion config, shared across p2p and pool components

* fix pool tests with new config

* fix p2p tests

* rework tx pool to deal with duplicate commitments (testnet2 limitation)

* cleanup and address some PR feedback

* add big comment about pre_tx...
2018-05-30 16:57:13 -04:00
.hooks Make pre-commit more portable (#993) 2018-04-22 08:33:58 -04:00
api Minimal Transaction Pool (#1067) 2018-05-30 16:57:13 -04:00
chain Minimal Transaction Pool (#1067) 2018-05-30 16:57:13 -04:00
config Minor config file handling cleanup 2018-05-22 19:01:16 +01:00
core Minimal Transaction Pool (#1067) 2018-05-30 16:57:13 -04:00
doc Remove unused error type switch commitment (#1104) 2018-05-30 14:45:27 -04:00
keychain Wallet+Keychain refactoring (#1035) 2018-05-09 10:15:58 +01:00
p2p Minimal Transaction Pool (#1067) 2018-05-30 16:57:13 -04:00
pool Minimal Transaction Pool (#1067) 2018-05-30 16:57:13 -04:00
servers Minimal Transaction Pool (#1067) 2018-05-30 16:57:13 -04:00
src [WIP] Factoring out wallet traits and continued wallet library work (#1096) 2018-05-30 17:48:32 +01:00
store Minimal Transaction Pool (#1067) 2018-05-30 16:57:13 -04:00
util [WIP] Wallet refactor - part 3 (#1072) 2018-05-21 16:28:11 +01:00
wallet Minimal Transaction Pool (#1067) 2018-05-30 16:57:13 -04:00
.editorconfig Add a .editorconfig file 2018-05-07 10:08:55 -04:00
.gitignore add test_output to .gitignore (#1092) 2018-05-25 21:34:49 -04:00
.gitlab-ci.yml Add gitlab ci config (#860) 2018-03-25 17:41:49 +00:00
.travis.yml [WIP] Miner removal (#979) 2018-04-24 09:18:24 +01:00
Cargo.lock Minimal Transaction Pool (#1067) 2018-05-30 16:57:13 -04:00
Cargo.toml [WIP] Miner removal (#979) 2018-04-24 09:18:24 +01:00
CODE_OF_CONDUCT.md fix grammar issue (go the extra step --> go the extra mile) (#688) 2018-02-07 10:00:42 +00:00
CONTRIBUTING.md Cleanup docs before testnet2 (#798) 2018-03-17 18:08:40 +00:00
grin.toml Minimal Transaction Pool (#1067) 2018-05-30 16:57:13 -04:00
LICENSE Create LICENSE 2017-06-29 09:24:44 -07:00
README.md Minor updates 2018-03-25 23:35:06 +01:00
rustfmt.toml cannot use write_mode in rustfmt.toml in stable (get rid of the warnings) (#752) 2018-03-05 15:23:52 -05:00

Build Status Gitter chat Codecov coverage status

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, aiming to stay as such.
  • Follows the MimbleWimble protocol, which provides great anonymity and scaling characteristics.
  • Cuckoo Cycle proof of work.
  • Relatively fast block time (a 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 still an infant, 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:

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 disrepect 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.

J.K. Rowling for making it despite extraordinary adversity.

License

Apache License v2.0.