-
Notifications
You must be signed in to change notification settings - Fork 4
/
report.html
165 lines (137 loc) · 9.34 KB
/
report.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!-- This file was created with the aha Ansi HTML Adapter. https://github.com/theZiz/aha -->
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="application/xml+xhtml; charset=UTF-8" />
<title>stdin</title>
</head>
<body style="color:white; background-color:black">
<pre>
<span style="filter: contrast(70%) brightness(190%);color:fuchsia;">Whisper theoretical model. Attempts to encode characteristics of it.</span>
Goals:
1. Ensure network scales by being user or usage bound, as opposed to bandwidth growing in proportion to network size.
2. Staying with in a reasonable bandwidth limit for limited data plans.
3. Do the above without materially impacting existing nodes.
<span style="filter: contrast(70%) brightness(190%);color:fuchsia;">Case 1. Only receiving messages meant for you [naive case]</span>
Assumptions:
- A1. Envelope size (static): 1024kb
- A2. Envelopes / message (static): 10
- A3. Received messages / day (static): 100
- A4. Only receiving messages meant for you.
<span style="filter: contrast(70%) brightness(190%);color:#3333FF;">For 100 users, receiving bandwidth is 1000.0KB/day</span>
<span style="filter: contrast(70%) brightness(190%);color:#3333FF;">For 10k users, receiving bandwidth is 1000.0KB/day</span>
<span style="filter: contrast(70%) brightness(190%);color:#3333FF;">For 1m users, receiving bandwidth is 1000.0KB/day</span>
------------------------------------------------------------
<span style="filter: contrast(70%) brightness(190%);color:fuchsia;">Case 2. Receiving messages for everyone [naive case]</span>
Assumptions:
- A1. Envelope size (static): 1024kb
- A2. Envelopes / message (static): 10
- A3. Received messages / day (static): 100
- A5. Received messages for everyone.
<span style="filter: contrast(70%) brightness(190%);color:red;">For 100 users, receiving bandwidth is 97.7MB/day</span>
<span style="filter: contrast(70%) brightness(190%);color:red;">For 10k users, receiving bandwidth is 9.5GB/day</span>
<span style="filter: contrast(70%) brightness(190%);color:red;">For 1m users, receiving bandwidth is 953.7GB/day</span>
------------------------------------------------------------
<span style="filter: contrast(70%) brightness(190%);color:fuchsia;">Case 3. All private messages go over one discovery topic</span>
Assumptions:
- A1. Envelope size (static): 1024kb
- A2. Envelopes / message (static): 10
- A3. Received messages / day (static): 100
- A6. Proportion of private messages (static): 0.5
- A7. Public messages only received by relevant recipients (static).
- A8. All private messages are received by everyone (same topic) (static).
<span style="filter: contrast(70%) brightness(190%);color:yellow;">For 100 users, receiving bandwidth is 49.3MB/day</span>
<span style="filter: contrast(70%) brightness(190%);color:red;">For 10k users, receiving bandwidth is 4.8GB/day</span>
<span style="filter: contrast(70%) brightness(190%);color:red;">For 1m users, receiving bandwidth is 476.8GB/day</span>
------------------------------------------------------------
<span style="filter: contrast(70%) brightness(190%);color:fuchsia;">Case 4. All private messages are partitioned into shards [naive case]</span>
Assumptions:
- A1. Envelope size (static): 1024kb
- A2. Envelopes / message (static): 10
- A3. Received messages / day (static): 100
- A6. Proportion of private messages (static): 0.5
- A7. Public messages only received by relevant recipients (static).
- A9. Private messages are partitioned evenly across partition shards (static), n=5000
<span style="filter: contrast(70%) brightness(190%);color:#3333FF;">For 100 users, receiving bandwidth is 1000.0KB/day</span>
<span style="filter: contrast(70%) brightness(190%);color:#3333FF;">For 10k users, receiving bandwidth is 1.5MB/day</span>
<span style="filter: contrast(70%) brightness(190%);color:red;">For 1m users, receiving bandwidth is 98.1MB/day</span>
------------------------------------------------------------
<span style="filter: contrast(70%) brightness(190%);color:fuchsia;">Case 5. Case 4 + All messages are passed through bloom filter with false positive rate</span>
Assumptions:
- A1. Envelope size (static): 1024kb
- A2. Envelopes / message (static): 10
- A3. Received messages / day (static): 100
- A6. Proportion of private messages (static): 0.5
- A7. Public messages only received by relevant recipients (static).
- A9. Private messages are partitioned evenly across partition shards (static), n=5000
- A10. Bloom filter size (m) (static): 512
- A11. Bloom filter hash functions (k) (static): 3
- A12. Bloom filter elements, i.e. topics, (n) (static): 100
- A13. Bloom filter assuming optimal k choice (sensitive to m, n).
- A14. Bloom filter false positive proportion of full traffic, p=0.1
<span style="filter: contrast(70%) brightness(190%);color:lime;">For 100 users, receiving bandwidth is 10.7MB/day</span>
<span style="filter: contrast(70%) brightness(190%);color:red;">For 10k users, receiving bandwidth is 978.0MB/day</span>
<span style="filter: contrast(70%) brightness(190%);color:red;">For 1m users, receiving bandwidth is 95.5GB/day</span>
NOTE: Traffic extremely sensitive to bloom false positives
This completely dominates network traffic at scale.
With p=1% we get 10k users ~100MB/day and 1m users ~10gb/day)
------------------------------------------------------------
<span style="filter: contrast(70%) brightness(190%);color:fuchsia;">Case 6. Case 5 + Benign duplicate receives</span>
Assumptions:
- A1. Envelope size (static): 1024kb
- A2. Envelopes / message (static): 10
- A3. Received messages / day (static): 100
- A6. Proportion of private messages (static): 0.5
- A7. Public messages only received by relevant recipients (static).
- A9. Private messages are partitioned evenly across partition shards (static), n=5000
- A10. Bloom filter size (m) (static): 512
- A11. Bloom filter hash functions (k) (static): 3
- A12. Bloom filter elements, i.e. topics, (n) (static): 100
- A13. Bloom filter assuming optimal k choice (sensitive to m, n).
- A14. Bloom filter false positive proportion of full traffic, p=0.1
- A15. Benign duplicate receives factor (static): 2
- A16. No bad envelopes, bad PoW, expired, etc (static).
<span style="filter: contrast(70%) brightness(190%);color:lime;">For 100 users, receiving bandwidth is 21.5MB/day</span>
<span style="filter: contrast(70%) brightness(190%);color:red;">For 10k users, receiving bandwidth is 1.9GB/day</span>
<span style="filter: contrast(70%) brightness(190%);color:red;">For 1m users, receiving bandwidth is 190.9GB/day</span>
------------------------------------------------------------
<span style="filter: contrast(70%) brightness(190%);color:fuchsia;">Case 7. Case 6 + Mailserver case under good conditions with smaller bloom false positive and mostly offline</span>
Assumptions:
- A1. Envelope size (static): 1024kb
- A2. Envelopes / message (static): 10
- A3. Received messages / day (static): 100
- A6. Proportion of private messages (static): 0.5
- A7. Public messages only received by relevant recipients (static).
- A9. Private messages are partitioned evenly across partition shards (static), n=5000
- A10. Bloom filter size (m) (static): 512
- A11. Bloom filter hash functions (k) (static): 3
- A12. Bloom filter elements, i.e. topics, (n) (static): 100
- A13. Bloom filter assuming optimal k choice (sensitive to m, n).
- A14. Bloom filter false positive proportion of full traffic, p=0.1
- A15. Benign duplicate receives factor (static): 2
- A16. No bad envelopes, bad PoW, expired, etc (static).
- A17. User is offline p% of the time (static) p=0.9
- A18. No bad request, duplicate messages for mailservers, and overlap/retires are perfect (static).
- A19. Mailserver requests can change false positive rate to be p=0.01
<span style="filter: contrast(70%) brightness(190%);color:#3333FF;">For 100 users, receiving bandwidth is 3.9MB/day</span>
<span style="filter: contrast(70%) brightness(190%);color:red;">For 10k users, receiving bandwidth is 284.8MB/day</span>
<span style="filter: contrast(70%) brightness(190%);color:red;">For 1m users, receiving bandwidth is 27.8GB/day</span>
------------------------------------------------------------
<span style="filter: contrast(70%) brightness(190%);color:fuchsia;">Case 8. Waka mode - no metadata protection with bloom filter and one node connected; still static shard</span>
Next step up is to either only use contact code, or shard more aggressively.
Note that this requires change of other nodes behavior, not just local node.
Assumptions:
- A1. Envelope size (static): 1024kb
- A2. Envelopes / message (static): 10
- A3. Received messages / day (static): 100
- A6. Proportion of private messages (static): 0.5
- A7. Public messages only received by relevant recipients (static).
- A9. Private messages are partitioned evenly across partition shards (static), n=5000
<span style="filter: contrast(70%) brightness(190%);color:#3333FF;">For 100 users, receiving bandwidth is 1000.0KB/day</span>
<span style="filter: contrast(70%) brightness(190%);color:#3333FF;">For 10k users, receiving bandwidth is 1.5MB/day</span>
<span style="filter: contrast(70%) brightness(190%);color:red;">For 1m users, receiving bandwidth is 98.1MB/day</span>
------------------------------------------------------------
</pre>
</body>
</html>