Last active
March 28, 2019 15:44
-
-
Save priestc/fde03624e32b17c86741068735f7df3c 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
from hashlib import sha256 | |
import random | |
def duplicates_for_shortid(txidsize, mempoolsize_mb=32, mempoolsize_kb=None): | |
if mempoolsize_kb: | |
n = int(mempoolsize_kb * 1024.0 / 266) | |
else: | |
n = int(mempoolsize_mb * 1024.0 * 1024.0 / 266) | |
txids = set() | |
for i in xrange(n): | |
txid = sha256(str(random.random())).hexdigest() | |
txids.add(txid[:txidsize]) | |
dup_count = n - len(txids) | |
return dup_count | |
def simulate_decode_failures(txidsize, iterations=100, mempoolsize_mb=32, mempoolsize_kb=None): | |
failures = 0 | |
for i in xrange(iterations): | |
if duplicates_for_shortid(txidsize, mempoolsize_mb, mempoolsize_kb): | |
failures += 1 | |
return "%d failures out of %d blocks (%.3f%%)" % ( | |
failures, iterations, 100.0 * failures / iterations | |
) | |
""" | |
In [2]: simulate_decode_failures(8, mempoolsize_mb=8) | |
Out[2]: '9 failures out of 100 blocks (9.000%)' | |
In [3]: simulate_decode_failures(8, mempoolsize_mb=32) | |
Out[3]: '87 failures out of 100 blocks (87.000%)' | |
In [4]: simulate_decode_failures(2, mempoolsize_mb=32) | |
Out[4]: '100 failures out of 100 blocks (100.000%)' | |
In [5]: simulate_decode_failures(2, mempoolsize_mb=1) | |
Out[5]: '100 failures out of 100 blocks (100.000%)' | |
In [6]: simulate_decode_failures(2, mempoolsize_kb=500) | |
Out[6]: '100 failures out of 100 blocks (100.000%)' | |
In [7]: simulate_decode_failures(2, mempoolsize_kb=100) | |
Out[7]: '100 failures out of 100 blocks (100.000%)' | |
In [8]: simulate_decode_failures(2, mempoolsize_kb=50) | |
Out[8]: '100 failures out of 100 blocks (100.000%)' | |
In [9]: simulate_decode_failures(2, mempoolsize_kb=10) | |
Out[9]: '92 failures out of 100 blocks (92.000%)' | |
In [10]: simulate_decode_failures(2, mempoolsize_kb=5) | |
Out[10]: '47 failures out of 100 blocks (47.000%)' | |
In [11]: simulate_decode_failures(2, mempoolsize_kb=1) | |
Out[11]: '1 failures out of 100 blocks (1.000%)' | |
""" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment