-
Notifications
You must be signed in to change notification settings - Fork 0
/
security.html
245 lines (131 loc) · 8.2 KB
/
security.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
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
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
<!DOCTYPE html>
<html lang="en-us">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=Edge">
<title>Multiprizer Docs</title>
<link rel="stylesheet" href="https://docs.multiprizer.io/assets/css/just-the-docs.css">
<link rel="shortcut icon" href="/favicons/favicon.ico" />
<link rel="manifest" href="/manifest.json" />
<link rel="apple-touch-icon" sizes="180x180" href="/favicons/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="/favicons/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/favicons/favicon-16x16.png">
<link rel="mask-icon" href="/favicons/safari-pinned-tab.svg" color="#d5cb5b">
<meta name="msapplication-TileColor" content="#ffdb0d">
<meta name="msapplication-config" content="/favicons/browserconfig.xml" />
<script type="text/javascript" src="https://docs.multiprizer.io/assets/js/vendor/lunr.min.js"></script>
<script type="text/javascript" src="https://docs.multiprizer.io/assets/js/just-the-docs.js"></script>
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<div class="page-wrap">
<div class="side-bar">
<a href="https://docs.multiprizer.io" class="site-title fs-6 lh-tight">Multiprizer Docs</a>
<span class="fs-3"><button class="js-main-nav-trigger navigation-list-toggle btn btn-outline" type="button" data-text-toggle="Hide">Menu</button></span>
<div class="navigation main-nav js-main-nav">
<nav role="navigation" aria-label="Main navigation">
<ul class="navigation-list">
<li class="navigation-list-item active">
<a href="https://docs.multiprizer.io/404/" class="navigation-list-link"></a>
</li>
<li class="navigation-list-item">
<a href="https://docs.multiprizer.io/" class="navigation-list-link">Introduction</a>
</li>
<li class="navigation-list-item">
<a href="https://docs.multiprizer.io/quick-start" class="navigation-list-link">Quick Start</a>
</li>
<li class="navigation-list-item">
<a href="https://docs.multiprizer.io/directplay" class="navigation-list-link">DirectPlay</a>
</li>
<li class="navigation-list-item">
<a href="https://docs.multiprizer.io/features" class="navigation-list-link">Features</a>
</li>
<li class="navigation-list-item">
<a href="https://docs.multiprizer.io/how-to-play" class="navigation-list-link">How to Play (Detailed)</a>
</li>
<li class="navigation-list-item">
<a href="https://docs.multiprizer.io/megaprize" class="navigation-list-link">MegaPrize</a>
</li>
<li class="navigation-list-item active">
<a href="https://docs.multiprizer.io/security" class="navigation-list-link active">Security</a>
</li>
<li class="navigation-list-item">
<a href="https://docs.multiprizer.io/decentralization" class="navigation-list-link">Decentralization</a>
</li>
<li class="navigation-list-item">
<a href="https://docs.multiprizer.io/strategy-over-luck" class="navigation-list-link">Strategy Over Luck</a>
</li>
<li class="navigation-list-item">
<a href="https://docs.multiprizer.io/whitepaper" class="navigation-list-link">Whitepaper</a>
</li>
</ul>
</nav>
</div>
<footer role="contentinfo" class="site-footer">
<p class="text-small text-grey-dk-000 mb-0">Multiprizer Copyright (2019)</p>
</footer>
</div>
<div class="main-content-wrap js-main-content" tabindex="0">
<div class="page-header">
<div class="main-content">
<div class="search js-search">
<div class="search-input-wrap">
<input type="text" class="js-search-input search-input" tabindex="0" placeholder="Search Multiprizer Docs" aria-label="Search Multiprizer Docs" autocomplete="off">
<svg width="14" height="14" viewBox="0 0 28 28" xmlns="http://www.w3.org/2000/svg" class="search-icon"><title>Search</title><g fill-rule="nonzero"><path d="M17.332 20.735c-5.537 0-10-4.6-10-10.247 0-5.646 4.463-10.247 10-10.247 5.536 0 10 4.601 10 10.247s-4.464 10.247-10 10.247zm0-4c3.3 0 6-2.783 6-6.247 0-3.463-2.7-6.247-6-6.247s-6 2.784-6 6.247c0 3.464 2.7 6.247 6 6.247z"/><path d="M11.672 13.791L.192 25.271 3.02 28.1 14.5 16.62z"/></g></svg>
</div>
<div class="js-search-results search-results-wrap"></div>
</div>
<ul class="list-style-none text-small mt-md-1 mb-md-1 pb-4 pb-md-0 js-aux-nav aux-nav">
<li class="d-inline-block my-0"><a href="https://multiprizer.io">Multiprizer HomeSite</a></li>
</ul>
</div>
</div>
<div class="main-content">
<div id="main-content" class="page-content" role="main">
<h1 id="security">Security</h1>
<p>Multiprizer DApp has been created using the state-of-the-art blockchain secure design principles, and by integrating best practices formulated by several top sources such as Consensys and OpenZeppelin. The ‘Provable Random’ which is used to decide on the winner is derived from the most powerful and credible method of random number generation currently possible in blockchain – Ledger based Random with on-chain proof verification, of Oraclize.</p>
<p>This means that we are implementing random created by Ledger hardware devices and also deriving hardware & software based proof certificates, which is then verified inside the Smart Contract code itself! This makes sure that an insecure random cannot be generated or influenced by any of the party in blockchain, be it malicious player, or a rogue miner(s), or even the admin/creator of the game.</p>
<p>It is even possible for anyone to manually verify the proofs if they want to. This would require subscribing to the event generated by the <strong>Multiprizer Oraclize</strong> contract:</p>
<p><code class="highlighter-rouge">Ethereum Mainnet: 0x8E19A78146c50810da3FA93C3Adf237f8de70306</code></p>
<p><code class="highlighter-rouge">Ethereum Ropsten (testnet): 0xCb061C64c6Cfa3DC923a6a620A6E7BEFf0A0D16d</code></p>
<p>One could analyze the event arguments of the event object emitted from the above mentioned Multiprizer Oraclize Contract, and verify the Oraclize Proof manually as described in the article <a href="https://docs.oraclize.it/#security-deepdive-authenticity-proofs-types">here</a>. The complete event object is:</p>
<p><code class="highlighter-rouge">OraclizeValues(Oraclize_ID, isProofValid, Oraclize_Proof, bytes(RandomValue))</code></p>
<table>
<thead>
<tr>
<th>Event Variable Name</th>
<th>Variable Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>OraclizeValues:</td>
<td>Name of the Event Log</td>
</tr>
<tr>
<td>Oraclize_ID:</td>
<td>Oraclize ID generated by Oraclize API</td>
</tr>
<tr>
<td>isProofValid:</td>
<td>true (1) if positively validated, false (0) otherwise</td>
</tr>
<tr>
<td>Oraclize_Proof:</td>
<td>The proof data created by Ledger Hardware</td>
</tr>
<tr>
<td>bytes(RandomValue):</td>
<td>The string with random value - ‘RandomValue’, converted in bytes format</td>
</tr>
</tbody>
</table>
<hr />
<p>Next:
<a href="/decentralization">Decentralization</a></p>
</div>
</div>
</div>
</div>
</body>
</html>