-
Notifications
You must be signed in to change notification settings - Fork 1
/
verify-user.drawio
195 lines (195 loc) · 21.5 KB
/
verify-user.drawio
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
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
<mxfile host="app.diagrams.net" modified="2022-07-17T00:40:49.691Z" agent="5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36" etag="Lq9dWdUQ_Wt2wFGDoXsa" version="20.1.1" type="github">
<diagram id="frotmppnRAkI8_DNOgKx" name="Page-1">
<mxGraphModel dx="1234" dy="736" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="CW7KyH0B0hUuFeBV_yyw-3" value="<h1><span style="background-color: initial;">Verify User<br></span><span style="font-size: 12px; font-weight: 400;">Be able to verify that an address and Twitter account are associated without storing linkable information. Be able to retrieve username/userID from this address pairing so that the app using this sign-in flow can indicate the user is a 'real user', has a real Twitter + ETH address without revealing what address or Twitter. Store these hashes in a public repository while still ensuring anonyminity.</span></h1>" style="text;html=1;strokeColor=none;fillColor=none;spacing=5;spacingTop=-20;whiteSpace=wrap;overflow=hidden;rounded=0;" parent="1" vertex="1">
<mxGeometry x="20" y="20" width="810" height="120" as="geometry" />
</mxCell>
<mxCell id="CW7KyH0B0hUuFeBV_yyw-6" value="<b><font style="font-size: 21px;">User Flow</font></b>" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
<mxGeometry x="20" y="150" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="CW7KyH0B0hUuFeBV_yyw-10" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;fontSize=21;" parent="1" source="CW7KyH0B0hUuFeBV_yyw-7" target="CW7KyH0B0hUuFeBV_yyw-8" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="CW7KyH0B0hUuFeBV_yyw-11" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fontSize=21;" parent="1" source="CW7KyH0B0hUuFeBV_yyw-7" target="CW7KyH0B0hUuFeBV_yyw-9" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="CW7KyH0B0hUuFeBV_yyw-7" value="<font style="font-size: 15px;">User opens app + connects wallet</font>" style="rounded=0;whiteSpace=wrap;html=1;fontSize=21;" parent="1" vertex="1">
<mxGeometry x="120" y="1700" width="130" height="60" as="geometry" />
</mxCell>
<mxCell id="CW7KyH0B0hUuFeBV_yyw-24" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.439;entryY=0.023;entryDx=0;entryDy=0;entryPerimeter=0;fontSize=15;" parent="1" source="CW7KyH0B0hUuFeBV_yyw-8" target="CW7KyH0B0hUuFeBV_yyw-13" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="CW7KyH0B0hUuFeBV_yyw-8" value="<font style="font-size: 15px;">New user</font>" style="rounded=0;whiteSpace=wrap;html=1;fontSize=21;" parent="1" vertex="1">
<mxGeometry x="127.5" y="1792" width="115" height="30" as="geometry" />
</mxCell>
<mxCell id="CW7KyH0B0hUuFeBV_yyw-28" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;fontSize=15;" parent="1" source="CW7KyH0B0hUuFeBV_yyw-9" target="CW7KyH0B0hUuFeBV_yyw-17" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="CW7KyH0B0hUuFeBV_yyw-9" value="<font style="font-size: 15px;">Returning User</font>" style="rounded=0;whiteSpace=wrap;html=1;fontSize=21;" parent="1" vertex="1">
<mxGeometry x="350" y="1782" width="180" height="40" as="geometry" />
</mxCell>
<mxCell id="CW7KyH0B0hUuFeBV_yyw-25" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;fontSize=15;" parent="1" source="CW7KyH0B0hUuFeBV_yyw-13" target="CW7KyH0B0hUuFeBV_yyw-14" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="CW7KyH0B0hUuFeBV_yyw-13" value="<font style="font-size: 15px;">Provide twitter handle + display name</font>" style="rounded=0;whiteSpace=wrap;html=1;fontSize=21;" parent="1" vertex="1">
<mxGeometry x="118.75" y="1852" width="150" height="60" as="geometry" />
</mxCell>
<mxCell id="CW7KyH0B0hUuFeBV_yyw-26" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.522;entryY=-0.009;entryDx=0;entryDy=0;entryPerimeter=0;fontSize=15;" parent="1" source="CW7KyH0B0hUuFeBV_yyw-14" target="CW7KyH0B0hUuFeBV_yyw-22" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="CW7KyH0B0hUuFeBV_yyw-14" value="<font style="font-size: 11px;">Sign message - Hello, @userID (twitter API get id)...</font>" style="rounded=0;whiteSpace=wrap;html=1;fontSize=21;" parent="1" vertex="1">
<mxGeometry x="120" y="1932" width="147.5" height="60" as="geometry" />
</mxCell>
<mxCell id="CW7KyH0B0hUuFeBV_yyw-16" value="<span style="font-size: 15px;">after verifying that the right account tweeted it with twitter API (verificationHash)<br><br>save only<br>sha256(signed message) -&gt; in-app username<br></span>" style="rounded=0;whiteSpace=wrap;html=1;fontSize=11;" parent="1" vertex="1">
<mxGeometry x="112" y="2142" width="198" height="200" as="geometry" />
</mxCell>
<mxCell id="CW7KyH0B0hUuFeBV_yyw-29" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;fontSize=15;" parent="1" source="CW7KyH0B0hUuFeBV_yyw-17" target="CW7KyH0B0hUuFeBV_yyw-21" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="CW7KyH0B0hUuFeBV_yyw-17" value="<font style="font-size: 15px;">Provide twitter handle</font>" style="rounded=0;whiteSpace=wrap;html=1;fontSize=21;" parent="1" vertex="1">
<mxGeometry x="350" y="1852" width="180" height="60" as="geometry" />
</mxCell>
<mxCell id="CW7KyH0B0hUuFeBV_yyw-31" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;fontSize=15;" parent="1" source="CW7KyH0B0hUuFeBV_yyw-18" target="CW7KyH0B0hUuFeBV_yyw-19" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="CW7KyH0B0hUuFeBV_yyw-18" value="<font style="font-size: 15px;">find that we've previously verified this user using hash of the signature</font>" style="rounded=0;whiteSpace=wrap;html=1;fontSize=21;" parent="1" vertex="1">
<mxGeometry x="350" y="1992" width="180" height="100" as="geometry" />
</mxCell>
<mxCell id="CW7KyH0B0hUuFeBV_yyw-19" value="<font style="font-size: 15px;">username/userID is associated with this pair that can be used to identify user on the app</font>" style="rounded=0;whiteSpace=wrap;html=1;fontSize=21;" parent="1" vertex="1">
<mxGeometry x="350" y="2132" width="180" height="120" as="geometry" />
</mxCell>
<mxCell id="CW7KyH0B0hUuFeBV_yyw-20" value="We only store:&nbsp;<br><br>Hash(signed message) -&gt; username" style="rounded=1;whiteSpace=wrap;html=1;fontSize=15;strokeWidth=0;align=center;" parent="1" vertex="1">
<mxGeometry x="560" y="150" width="260" height="110" as="geometry" />
</mxCell>
<mxCell id="CW7KyH0B0hUuFeBV_yyw-30" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;fontSize=15;" parent="1" source="CW7KyH0B0hUuFeBV_yyw-21" target="CW7KyH0B0hUuFeBV_yyw-18" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="CW7KyH0B0hUuFeBV_yyw-21" value="<span style="font-size: 11px;">Sign message - Hello, @userID...</span>" style="rounded=0;whiteSpace=wrap;html=1;fontSize=21;" parent="1" vertex="1">
<mxGeometry x="350" y="1932" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="CW7KyH0B0hUuFeBV_yyw-27" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.39;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;fontSize=15;" parent="1" source="CW7KyH0B0hUuFeBV_yyw-22" target="CW7KyH0B0hUuFeBV_yyw-16" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="CW7KyH0B0hUuFeBV_yyw-22" value="<font style="font-size: 11px;">generate some sha256(sig) to post on twitter</font>" style="rounded=0;whiteSpace=wrap;html=1;fontSize=21;" parent="1" vertex="1">
<mxGeometry x="112.5" y="2022" width="156.5" height="90" as="geometry" />
</mxCell>
<mxCell id="CW7KyH0B0hUuFeBV_yyw-32" value="Notes:<br><br><br>Using Twitter account's userID over handle because users may change their handle over time but the id remains the same. ID can be retrieved via Twitter API" style="whiteSpace=wrap;html=1;fontSize=11;strokeWidth=0;align=left;" parent="1" vertex="1">
<mxGeometry x="560" y="270" width="260" height="130" as="geometry" />
</mxCell>
<mxCell id="iwYcbWCkDC_1uITeM5Qb-36" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="iwYcbWCkDC_1uITeM5Qb-11" target="iwYcbWCkDC_1uITeM5Qb-31" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="iwYcbWCkDC_1uITeM5Qb-11" value="<span style="font-size: 15px;">after verifying that the right account tweeted it with twitter API (verificationHash)<br><br></span>" style="rounded=0;whiteSpace=wrap;html=1;fontSize=11;" parent="1" vertex="1">
<mxGeometry x="520" y="530" width="195" height="100" as="geometry" />
</mxCell>
<mxCell id="iwYcbWCkDC_1uITeM5Qb-24" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="iwYcbWCkDC_1uITeM5Qb-13" target="iwYcbWCkDC_1uITeM5Qb-18" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="iwYcbWCkDC_1uITeM5Qb-13" value="<font style="font-size: 15px;">Provide twitter handle</font>" style="rounded=0;whiteSpace=wrap;html=1;fontSize=21;" parent="1" vertex="1">
<mxGeometry x="56.5" y="310" width="180" height="60" as="geometry" />
</mxCell>
<mxCell id="iwYcbWCkDC_1uITeM5Qb-29" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="iwYcbWCkDC_1uITeM5Qb-15" target="iwYcbWCkDC_1uITeM5Qb-28" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="iwYcbWCkDC_1uITeM5Qb-30" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="iwYcbWCkDC_1uITeM5Qb-15" target="iwYcbWCkDC_1uITeM5Qb-26" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="iwYcbWCkDC_1uITeM5Qb-15" value="<font style="font-size: 15px;">find that we've previously verified this user using hash of the signature</font>" style="rounded=0;whiteSpace=wrap;html=1;fontSize=21;" parent="1" vertex="1">
<mxGeometry x="170" y="480" width="180" height="80" as="geometry" />
</mxCell>
<mxCell id="iwYcbWCkDC_1uITeM5Qb-16" value="<font style="font-size: 15px;">username/userID is already associated with this pair that can be used to identify user on the app</font>" style="rounded=0;whiteSpace=wrap;html=1;fontSize=21;" parent="1" vertex="1">
<mxGeometry x="20" y="760" width="180" height="120" as="geometry" />
</mxCell>
<mxCell id="iwYcbWCkDC_1uITeM5Qb-25" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="iwYcbWCkDC_1uITeM5Qb-18" target="iwYcbWCkDC_1uITeM5Qb-15" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="iwYcbWCkDC_1uITeM5Qb-18" value="<span style="font-size: 11px;">Sign message - Hello, @userID...</span>" style="rounded=0;whiteSpace=wrap;html=1;fontSize=21;" parent="1" vertex="1">
<mxGeometry x="131.5" y="410" width="180" height="30" as="geometry" />
</mxCell>
<mxCell id="iwYcbWCkDC_1uITeM5Qb-35" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="iwYcbWCkDC_1uITeM5Qb-20" target="iwYcbWCkDC_1uITeM5Qb-11" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="570" y="765" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="iwYcbWCkDC_1uITeM5Qb-20" value="<font style="font-size: 11px;">generate the verificationHash to post on twitter</font>" style="rounded=0;whiteSpace=wrap;html=1;fontSize=21;" parent="1" vertex="1">
<mxGeometry x="335" y="720" width="156.5" height="90" as="geometry" />
</mxCell>
<mxCell id="iwYcbWCkDC_1uITeM5Qb-44" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="iwYcbWCkDC_1uITeM5Qb-21" target="iwYcbWCkDC_1uITeM5Qb-42" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="iwYcbWCkDC_1uITeM5Qb-21" value="<font style="font-size: 15px;">User opens app + connects wallet</font>" style="rounded=0;whiteSpace=wrap;html=1;fontSize=21;" parent="1" vertex="1">
<mxGeometry x="64" y="200" width="140" height="50" as="geometry" />
</mxCell>
<mxCell id="iwYcbWCkDC_1uITeM5Qb-33" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="iwYcbWCkDC_1uITeM5Qb-26" target="iwYcbWCkDC_1uITeM5Qb-20" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="iwYcbWCkDC_1uITeM5Qb-26" value="No (this is a new user)" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="335" y="630" width="120" height="40" as="geometry" />
</mxCell>
<mxCell id="iwYcbWCkDC_1uITeM5Qb-34" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="iwYcbWCkDC_1uITeM5Qb-28" target="iwYcbWCkDC_1uITeM5Qb-16" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="iwYcbWCkDC_1uITeM5Qb-28" value="Yes" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="60" y="630" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="iwYcbWCkDC_1uITeM5Qb-37" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="iwYcbWCkDC_1uITeM5Qb-31" target="iwYcbWCkDC_1uITeM5Qb-32" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="iwYcbWCkDC_1uITeM5Qb-31" value="Ask for a display name (tell user this will be saved) - we won't save your address/ENS" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="547.5" y="790" width="235" height="60" as="geometry" />
</mxCell>
<mxCell id="iwYcbWCkDC_1uITeM5Qb-32" value="<meta charset="utf-8"><span style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: 15px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: center; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(248, 249, 250); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; float: none; display: inline !important;">save only</span><br style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: 15px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: center; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(248, 249, 250); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;"><span style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: 15px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: center; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(248, 249, 250); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; float: none; display: inline !important;">sha256(signed message) -&gt; in-app username</span>" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="550" y="880" width="230" height="110" as="geometry" />
</mxCell>
<mxCell id="iwYcbWCkDC_1uITeM5Qb-38" value="Explain why we aren't saving their address/ENS.<br><br>we want to make this anon friendly&nbsp;" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="310" y="1450" width="170" height="220" as="geometry" />
</mxCell>
<mxCell id="iwYcbWCkDC_1uITeM5Qb-40" value="let them choose if they want to be anon<br><br><ul><li>prefill their ENS or twitter handle</li></ul>" style="ellipse;shape=cloud;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="500" y="1510" width="320" height="190" as="geometry" />
</mxCell>
<mxCell id="iwYcbWCkDC_1uITeM5Qb-41" value="<b><font style="font-size: 21px;">Old flow</font></b>" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
<mxGeometry x="113.75" y="1635" width="160" height="30" as="geometry" />
</mxCell>
<mxCell id="iwYcbWCkDC_1uITeM5Qb-46" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="iwYcbWCkDC_1uITeM5Qb-42" target="iwYcbWCkDC_1uITeM5Qb-13" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="147" y="280" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="iwYcbWCkDC_1uITeM5Qb-48" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1.017;entryY=0.656;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="iwYcbWCkDC_1uITeM5Qb-42" target="iwYcbWCkDC_1uITeM5Qb-15" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="385" y="405" />
<mxPoint x="460" y="405" />
<mxPoint x="460" y="543" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="iwYcbWCkDC_1uITeM5Qb-42" value="Check cache:&nbsp;<br>1. cache twitter handle - would have to sign every time<br><b>2. cache hash(signature) - no req to sign every time</b>" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="335" y="190" width="170" height="120" as="geometry" />
</mxCell>
<mxCell id="iwYcbWCkDC_1uITeM5Qb-47" value="DB:<br>&nbsp;using Arweave" style="ellipse;shape=cloud;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="620" y="420" width="120" height="80" as="geometry" />
</mxCell>
<mxCell id="iwYcbWCkDC_1uITeM5Qb-49" value="Yes" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
<mxGeometry x="371.5" y="325" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="iwYcbWCkDC_1uITeM5Qb-50" value="No" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
<mxGeometry x="251.5" y="280" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="iwYcbWCkDC_1uITeM5Qb-51" value="Yay logged in" style="shape=umlActor;verticalLabelPosition=bottom;verticalAlign=top;html=1;outlineConnect=0;" parent="1" vertex="1">
<mxGeometry x="85" y="900" width="30" height="60" as="geometry" />
</mxCell>
<mxCell id="iwYcbWCkDC_1uITeM5Qb-52" value="Yay logged in" style="shape=umlActor;verticalLabelPosition=bottom;verticalAlign=top;html=1;outlineConnect=0;" parent="1" vertex="1">
<mxGeometry x="650" y="1000" width="30" height="60" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>