diff --git a/doc/internal/dandelion.md b/doc/dandelion/dandelion.md similarity index 76% rename from doc/internal/dandelion.md rename to doc/dandelion/dandelion.md index f6cb160cb..c4ca4f37b 100644 --- a/doc/internal/dandelion.md +++ b/doc/dandelion/dandelion.md @@ -22,7 +22,7 @@ Illustration: └-> I ... -TODO Add transaction aggregation in stem mode +This mechanism also allows Grin transactions to be aggregated during the stem phase and then broadcasted to all the nodes on the network. This result in transaction aggregation and possibly cut-through (thus removing spent outputs) giving a significant privacy gain similar to a non-interactive coinjoin with cut-through. ## Specification @@ -49,7 +49,27 @@ Nodes that receives stem transactions are called stem relays. This relay is chos ## Aggregation -TODO Transaction aggregation +Two aggregation scenarios have been proposed. + +### Scenario 1: aggregating transaction without lock_height + +In this scenario, transactions are aggregated during the stem phase and then broadcasted to the mempool only when the fluff phase happens. + +Each node maintains a ```patience``` timer along with a ```max_patience``` value. When a node receives a stem transaction, its ```patience``` timer starts, waiting for more stem transactions to aggregate. Once the ```patience``` timer reachs the ```max_patience``` value, the node flips a coin to decide whether to send as stem or fluff. +In the of a stem transactions, the node starts an embargo timer which is defined in the Considerations part. The node need to track every stem transactions it receives aggregated or not in order to guarantee its propagation and be able to revert to a previous stempool state. + +A simulation of this scenario is available [here](simulation.md). + +### Scenario 2: aggregating transaction with lock_height + +Similar to the previous scenario, except that we aggregate transactions that are locked with ```lock_height```. As of now (7f478d7), transactions with ```lock_height > chain_height``` are rejected by the mempool. In this scenario, such locked transaction would be accepted in the stempool and relayed to other stem relays with the following conditions: + +``` +if (lock_height <= chain_tip.height && coin_flip <= stem_probability) +``` + +In this scenario, a patience parameter would still exist to know for how long a peer keep the transaction to its stempool before broadcasting it. Also a ```max_lock_height``` parameter must be defined in order to limit the potential denial of service vector. + ## Considerations diff --git a/doc/dandelion/images/Dandelion.xml b/doc/dandelion/images/Dandelion.xml new file mode 100644 index 000000000..fa3ddc212 --- /dev/null +++ b/doc/dandelion/images/Dandelion.xml @@ -0,0 +1,2 @@ + +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 \ No newline at end of file diff --git a/doc/dandelion/images/t0.png b/doc/dandelion/images/t0.png new file mode 100644 index 000000000..592140909 Binary files /dev/null and b/doc/dandelion/images/t0.png differ diff --git a/doc/dandelion/images/t10.png b/doc/dandelion/images/t10.png new file mode 100644 index 000000000..ee8d50d34 Binary files /dev/null and b/doc/dandelion/images/t10.png differ diff --git a/doc/dandelion/images/t100.png b/doc/dandelion/images/t100.png new file mode 100644 index 000000000..178ab0b9d Binary files /dev/null and b/doc/dandelion/images/t100.png differ diff --git a/doc/dandelion/images/t30.png b/doc/dandelion/images/t30.png new file mode 100644 index 000000000..4704b5764 Binary files /dev/null and b/doc/dandelion/images/t30.png differ diff --git a/doc/dandelion/images/t35.png b/doc/dandelion/images/t35.png new file mode 100644 index 000000000..b1896965b Binary files /dev/null and b/doc/dandelion/images/t35.png differ diff --git a/doc/dandelion/images/t40.png b/doc/dandelion/images/t40.png new file mode 100644 index 000000000..a06f7d5f3 Binary files /dev/null and b/doc/dandelion/images/t40.png differ diff --git a/doc/dandelion/images/t50.png b/doc/dandelion/images/t50.png new file mode 100644 index 000000000..46a9c98b1 Binary files /dev/null and b/doc/dandelion/images/t50.png differ diff --git a/doc/dandelion/images/t55.png b/doc/dandelion/images/t55.png new file mode 100644 index 000000000..37c180201 Binary files /dev/null and b/doc/dandelion/images/t55.png differ diff --git a/doc/dandelion/images/t60.png b/doc/dandelion/images/t60.png new file mode 100644 index 000000000..5531a6aee Binary files /dev/null and b/doc/dandelion/images/t60.png differ diff --git a/doc/dandelion/images/t65.png b/doc/dandelion/images/t65.png new file mode 100644 index 000000000..2726b2799 Binary files /dev/null and b/doc/dandelion/images/t65.png differ diff --git a/doc/dandelion/images/t70.png b/doc/dandelion/images/t70.png new file mode 100644 index 000000000..bc05a6fa6 Binary files /dev/null and b/doc/dandelion/images/t70.png differ diff --git a/doc/dandelion/images/t75.png b/doc/dandelion/images/t75.png new file mode 100644 index 000000000..b3253a0d2 Binary files /dev/null and b/doc/dandelion/images/t75.png differ diff --git a/doc/dandelion/images/t85.png b/doc/dandelion/images/t85.png new file mode 100644 index 000000000..32203a8e2 Binary files /dev/null and b/doc/dandelion/images/t85.png differ diff --git a/doc/dandelion/images/ti.png b/doc/dandelion/images/ti.png new file mode 100644 index 000000000..1ceb64aa9 Binary files /dev/null and b/doc/dandelion/images/ti.png differ diff --git a/doc/dandelion/simulation.md b/doc/dandelion/simulation.md new file mode 100644 index 000000000..64b656983 --- /dev/null +++ b/doc/dandelion/simulation.md @@ -0,0 +1,93 @@ +Dandelion Simulation +================== +This document describes a network of node with Dandelion. + +In this scenario, we simulate a successfull aggregation but a failed transaction cut-through forcing a node to revert its stempool state. + +This document also helps visualizing all the timers in a simple way. + +## Initial Situation + +![Initial situation](images/ti.png) + +## T = 0 + +A sends grins to B, adds the transaction to its stempool and starts its patience timer. + +![t = 0](images/ti.png) + +## T = 10 + +B waits until he runs out of patience. + +![t = 10](images/t10.png) + +## T = 30 + +B runs out of patience, flips a coin, broadcasts the transaction to its stem relay and starts the embargo timer for this transaction. + +![t = 30](images/t30.png) + +## T = 35 + +B and H wait. + +![t = 35](images/t35.png) + +## T = 40 + +G sends grins to E. +E adds the transaction to its stempool and starts its patience timer. + +![t = 40](images/t40.png) + +## T = 50 + +B, H and E wait. + +![t = 50](images/t50.png) + +## T = 55 + +B spends B1 to D. +D adds the transaction to its stempool and starts its patience timer. + +![t = 55](images/t55.png) + +## T = 60 + +H runs out of patience, flips a coin, broadcasts the transaction to its stem relay and starts the embargo timer for this transaction. + +![t = 60](images/t60.png) + +## T = 65 + +Waiting. + +![t = 65](images/t65.png) + +## T = 70 + +E runs out of patience, flips a coin, broadcasts the aggregated transaction to its stem relay and starts the embargo timer for this transaction. + +![t = 70](images/t70.png) + +## T = 75 + +Waiting. + +![t = 75](images/t75.png) + +## T = 85 + +D runs out of patience, flips a coin, broadcasts the aggregated transaction to its stem relay and starts the embargo timer for this transaction. +E receives the stem transaction, aggregates its (thus removing duplicate input/output pair B1) and starts it s patience timer. + +![t = 85](images/t85.png) + +## T = 100 + +F runs out of patience, flips a coin, broadcasts the aggregated transaction to all its peers (fluff in the mempool). +E receives the transaction in its mempool and reverts the state of its stempool to avoid conflicting transactions. + +![t = 100](images/t100.png)