-
-
Save knaccc/78c691aa1c1e0710bb8264ef17b56768 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Tx2OutMergeProbability | |
---------------------- | |
pick a random 2-out tx from the blockchain during month of July 2020 | |
search for direct or indirect merges | |
repeat n times, report how many of the pairs had >=1 merges detected | |
result: | |
[1, 72, 100] of 100 iterations | |
meaning: | |
direct merges: 1 of 100 | |
1 churn merges: 72 of 100 | |
2 churn merges: 100 of 100 | |
experiment repeated, this time with 2 entirely random outputs chosen from month of July 2020 | |
result: | |
merges: [0, 30, 100] of 100 iterations | |
MergeAnonymitySetSize | |
--------------------- | |
key question: if you send me two poisoned outputs, and I intend to merge them (i.e. spend them together in the same transaction), | |
how many other ways will the blockchain also report that they might have been merged by chance? | |
procedure: | |
pick two random outputs on the blockchain created during month of July 2020 | |
count the number of direct or indirect merges observed | |
repeat for several pairs of two random poisoned outputs | |
result: | |
(churn window means: for each output, the observation window during which all successive churns of that ouput collectively occur) | |
(direct means spent together directly in a transaction, level 1 means each output churned at most once prior to merge tx. | |
level 1 can thus include situations where the first output was never churned at all, but the second output was churned once) | |
==================================================== | |
Possible merges of 2 random outputs, detected with churn window = 2 hours | |
==================================================== | |
Direct | Level 1 | Level 2 | Level 3 | Level 4 | |
--------|----------|----------|----------|---------- | |
0 | 0 | 0 | 0 | 0 | |
0 | 0 | 0 | 0 | 0 | |
0 | 0 | 0 | 1 | 3 | |
0 | 0 | 1 | 1 | 1 | |
0 | 0 | 0 | 0 | 0 | |
==================================================== | |
==================================================== | |
Possible merges of 2 random outputs, detected with churn window = 4 hours | |
==================================================== | |
Direct | Level 1 | Level 2 | Level 3 | Level 4 | |
--------|----------|----------|----------|---------- | |
0 | 0 | 2 | 8 | 25 | |
0 | 0 | 0 | 0 | 4 | |
0 | 0 | 0 | 0 | 4 | |
0 | 0 | 0 | 1 | 1 | |
0 | 0 | 1 | 9 | 42 | |
==================================================== | |
==================================================== | |
Possible merges of 2 random outputs, detected with churn window = 24 hours | |
==================================================== | |
Direct | Level 1 | Level 2 | Level 3 | Level 4 | |
--------|----------|----------|----------|---------- | |
0 | 0 | 0 | 27 | 358 | |
0 | 0 | 0 | 69 | 562 | |
0 | 0 | 2 | 51 | 267 | |
0 | 0 | 6 | 80 | 642 | |
0 | 1 | 5 | 378 | 2730 | |
==================================================== | |
==================================================== | |
Possible merges of 2 random outputs, detected with churn window = 48 hours | |
==================================================== | |
Direct | Level 1 | Level 2 | Level 3 | Level 4 | |
--------|----------|----------|----------|---------- | |
0 | 0 | 90 | 1902 | 13584 | |
0 | 0 | 42 | 1036 | 6775 | |
0 | 0 | 1 | 76 | 1191 | |
0 | 0 | 5 | 294 | 2740 | |
0 | 0 | 1 | 111 | 1110 | |
=================================================== | |
==================================================== | |
Possible merges of 2 random outputs, detected with churn window = 96 hours | |
==================================================== | |
Direct | Level 1 | Level 2 | Level 3 | Level 4 | |
--------|----------|----------|----------|---------- | |
0 | 0 | 6 | 192 | 2776 | |
0 | 0 | 29 | 1256 | 11102 | |
0 | 0 | 5 | 257 | 3314 | |
0 | 0 | 7 | 420 | 3465 | |
0 | 0 | 64 | 2987 | 24700 | |
==================================================== | |
Conclusion: Churn incoming inputs at least 3 times, and do not merge churned outputs within 24 hours of receipt |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment