-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathindex.html
797 lines (778 loc) · 48.5 KB
/
index.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
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width">
<meta name="description" content="Oyster enables websites to silently generate traffic revenue as visitors perform Proof of Work for a decentralized storage ledger.">
<link rel="apple-touch-icon" sizes="57x57" href="icon/apple-icon-57x57.png">
<link rel="apple-touch-icon" sizes="60x60" href="icon/apple-icon-60x60.png">
<link rel="apple-touch-icon" sizes="72x72" href="icon/apple-icon-72x72.png">
<link rel="apple-touch-icon" sizes="76x76" href="icon/apple-icon-76x76.png">
<link rel="apple-touch-icon" sizes="114x114" href="icon/apple-icon-114x114.png">
<link rel="apple-touch-icon" sizes="120x120" href="icon/apple-icon-120x120.png">
<link rel="apple-touch-icon" sizes="144x144" href="icon/apple-icon-144x144.png">
<link rel="apple-touch-icon" sizes="152x152" href="icon/apple-icon-152x152.png">
<link rel="apple-touch-icon" sizes="180x180" href="icon/apple-icon-180x180.png">
<link rel="icon" type="image/png" sizes="192x192" href="icon/android-icon-192x192.png">
<link rel="icon" type="image/png" sizes="32x32" href="icon/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="96x96" href="icon/favicon-96x96.png">
<link rel="icon" type="image/png" sizes="16x16" href="icon/favicon-16x16.png">
<link rel="manifest" href="icon/manifest.json">
<meta name="msapplication-TileColor" content="#ffffff">
<meta name="msapplication-TileImage" content="/ms-icon-144x144.png">
<meta name="theme-color" content="#ffffff">
<title>Oyster - Web Storage</title>
<base target="_blank">
<link rel="stylesheet" type="text/css" href="oy_style.css?87"/>
<script>
var _prum = [['id', '59c735d0fbb0e6c1867b23c6'],
['mark', 'firstbyte', (new Date()).getTime()]];
(function () {
var s = document.getElementsByTagName('script')[0]
, p = document.createElement('script');
p.async = 'async';
p.src = '//rum-static.pingdom.net/prum.min.js';
s.parentNode.insertBefore(p, s);
})();
</script>
</head>
<body>
<script type="text/javascript" src="jquery.js"></script>
<span id="github_ribbon" class="oy_fade five"><a href="https://github.com/oysterprotocol" target="_blank">Review me on GitHub</a></span>
<div id="front" class="slide scroll" style="height:100%;background-color:#fff">
<div class="oy_fade one shell_cont_img" style="transform:translateX(-50%) scale(0.82);">
<img class="shell_img" src="oy_logo_shell.png"/>
<div class="shadow">
<div style="position:relative;width:100%;height:100%;background: rgba(48, 48, 48, 0.20);border-radius:50%;filter: blur(8px);">
<div style="position:absolute;left:50%;top:50%;transform: translateX(-50%) translateY(-50%);width:75%;height:50%;background: rgba(70, 70, 70, 0.40);border-radius:50%;z-index:20"></div>
</div>
</div>
</div>
<div class="logo_text">
<div class="oy_fade two" style="position:relative;">
<img class="logo_text_sub" src="oy_logo_text.png"/>
</div>
</div>
<div class="front_video oy_fade four">
<iframe style="position:absolute;top:0;left:0;width:100%;height:100%;" src="https://player.vimeo.com/video/239320938" frameborder="0"></iframe>
</div>
<div class="press oy_fade five">
<div class="press_lead">Featured on</div>
<div>
<a href="https://www.huffingtonpost.com/entry/cloud-storages-not-so-silver-linings-issues-surrounding_us_59e6187ae4b08c75593ce697"><img class="press_img" src="oy_press1.png" /></a>
<a href="https://blog.icoalert.com/ico-alert-report-oyster-ffda53924db6"><img class="press_img" src="oy_press2.png" /></a>
<a href="http://www.newsbtc.com/2017/10/21/anonymous-storage-ledger-disrupt-ad-industry/"><img class="press_img" src="oy_press3.png" /></a>
<a href="https://www.cryptocoinsnews.com/solving-advertisement-cloud-concerns-unified-solution/"><img class="press_img" src="oy_press4.png" /></a>
</div>
<div>
<a href="https://www.coinspeaker.com/2017/10/26/disruptive-blockchain-technology-targets-cloud-advertisement-industries/"><img class="press_img" src="oy_press8.png" /></a>
<a href="http://www.thedrum.com/profile/news/274738/online-advertising-problems-and-how-fix-them"><img class="press_img" src="oy_press5.png" /></a>
<a href="https://article.wn.com/view/2017/10/26/The_Data_on_the_internet_is_not_Protected/"><img class="press_img" src="oy_press6.png" /></a>
<a href="http://www.tgdaily.com/technology/data-storage-issues"><img class="press_img" src="oy_press7.png" /></a>
<a href="http://bitguru.co.uk/take-a-look-at-oyster-powered-by-the-iota-tangle/"><img class="press_img" src="oy_press9.png" /></a>
</div>
</div>
<div id="front_nav_sign" class="front_nav oy_fade five">
<div style="position:absolute;height:100%;width:50%;right:0;">
<div style="position:absolute;top:0;right:0"><a style="text-decoration:none" href="https://github.com/oysterprotocol">GitHub</a></div>
<div style="position:absolute;top:20%;right:0"><a style="text-decoration:none" href="https://oyster.ws/OysterWhitepaper.pdf">Whitepaper</a></div>
<div style="position:absolute;top:40%;right:0"><a style="text-decoration:none" href="https://t.me/oysterprotocol">Telegram</a></div>
<div style="position:absolute;top:60%;right:0"><a style="text-decoration:none" href="https://medium.com/oysterprotocol">Oyster Blog</a></div>
<div style="position:absolute;top:80%;right:0"><a style="text-decoration:none" href="https://twitter.com/OysterProtocol">@OysterProtocol</a></div>
<div style="position:absolute;top:100%;right:0"><a style="text-decoration:none" href="mailto:[email protected]">[email protected]</a></div>
<div style="position:absolute;top:120%;right:0;font-weight:bold;" onmouseover="this.style.cursor = 'pointer'" onclick="oy_scroll(1)">scroll down for more info</div>
</div>
</div>
</div>
<div id="problem" class="slide" style="background-color:#42BDE9;">
<div id="problem_img" class="pop_up oy_problem_pos">
<div class="feature_cont_img oy_problem"><img class="feature_img oy_problem" src="oy_problem.png?1"/></div>
</div>
<div id="problem_text" class="feature oy_problem_pos">
<div class="feature_title">The Problem: Advertisements</div>
<div class="feature_content">
Creative content publishers are suffering due to the advent of ad blockers and a general disregard to what advertisements have to offer. Advertisements have always been a fundamentally
weak proposition. They are intrusive, tangential, privacy invasive, and distract from the cleanliness of a website.
</div>
</div>
</div>
<div id="solution" class="slide" style="background-color:#fff;">
<div id="solution_img" class="fade_up oy_solution_pos">
<div class="feature_cont_img oy_solution">
<div class="shell_cont_img">
<img class="shell_img" src="oy_logo_shell.png"/>
<div class="shadow">
<div style="position:relative;width:100%;height:100%;background: rgba(48, 48, 48, 0.20);border-radius:50%;filter: blur(8px);">
<div style="position:absolute;left:50%;top:50%;transform: translateX(-50%) translateY(-50%);width:75%;height:50%;background: rgba(70, 70, 70, 0.40);border-radius:50%;z-index:20"></div>
</div>
</div>
</div>
</div>
</div>
<div id="solution_text" class="feature oy_solution_pos">
<div class="feature_title">The Solution: Oyster</div>
<div class="feature_content">
Oyster is the radical new solution that grants a parallel revenue stream to websites by adding one line of code:<br><br>
<div class="code_demo"><span style="color:#925a00"><script</span> <span style="color:#d0b900">id</span><span style="color:#828282">=</span><span
style="color:#83AC6F">"o.ws"</span> <span style="color:#d0b900">payout</span><span style="color:#828282">=</span><span style="color:#83AC6F">"ETH_ADDRESS"</span> <span
style="color:#d0b900">src</span><span style="color:#828282">=</span><span style="color:#83AC6F">"https://oyster.ws/webnode.js"</span><span
style="color:#925a00">></script></span></div>
<br>
Website visitors contribute a portion of their CPU and GPU power to enable users' files to be stored on a decentralized and anonymous ledger. In return, such users indirectly pay the
website owners for maintaining the storage of their data.
</div>
</div>
</div>
<div id="features" class="slide feature_slide" style="background-color:#42BDE9;">
<div class="feature" style="top:10%">
<div class="feature_cont_img"><img class="feature_img" src="oy_feat_1.png"/></div>
<div class="feature_title">Robust, Redundant Data Storage</div>
<div class="feature_content">Files uploaded via Oyster are stored on the <a
href="http://iota.org">IOTA Tangle</a>.
This means that an excess of redundant duplicates are stored throughout the network topology
of the Tangle, therefore mitigating the threat of data loss. Nodes running the Oyster Protocol perform Proof of Work to guarantee that the Tangle retains the data.
</div>
</div>
<div class="feature" style="top:25%">
<div class="feature_cont_img"><img class="feature_img" src="oy_feat_3.png"/></div>
<div class="feature_title">Dual Ledger Integration</div>
<div class="feature_content">The <a href="http://iota.org">IOTA Tangle</a> (<a
href="https://en.wikipedia.org/wiki/Directed_acyclic_graph">Directed Acyclic Graph</a>)
is used for data retention and
Proof of Work negotiation between Nodes. The Smart Contract technology of the <a href="https://ethereum.org">Ethereum
Blockchain</a> is used to produce Oyster Pearls (the token), therefore activating the unique token
attributes that enables Oyster operation.
</div>
</div>
<div class="feature" style="top:40%">
<div class="feature_cont_img"><img class="feature_img" src="oy_feat_4.png"/></div>
<div class="feature_title">Treasure Hunting Algorithm</div>
<div class="feature_content">Oyster Web Nodes perform Proof of Work to search for embedded Pearls on the Tangle, which inadvertently commits the user uploaded data to the Tangle. It's like how a bee tries to get the sweet nectar of a flower, so it inadvertently pollinates the flower with the pollen on it's body. All activity across the Oyster network is economically motivated, no aspect of the Protocol relies on
altruistic actors.
</div>
</div>
<div class="feature" style="top:55%">
<div class="feature_cont_img"><img class="feature_img" src="oy_feat_2.png"/></div>
<div class="feature_title">Zero Knowledge, Anonymous Storage</div>
<div class="feature_content">No personal information, usernames, nor passwords are ever used. Each
uploaded file is assigned a unique handle, which acts like a private seed key. Anyone that has
the handle can retrieve the data from the Tangle, even if they were to use their own
custom-built script and Tangle Node. Mixer contracts on the <a href="https://ethereum.org">Ethereum
Blockchain</a> can conceal who paid for the storage.
</div>
</div>
<div class="feature" style="top:70%">
<div class="feature_cont_img"><img class="feature_img" src="oy_feat_6.png"/></div>
<div class="feature_title">Open Source, Extendable, & Auditable</div>
<div class="feature_content">The Oyster Protocol is developed in a community driven
model without any single point of failure. Extension projects can be built on top of the
mesh-net topology and protocol API. This enables a whole class of truly decentralized
applications to be built; such as decentralized telephone calling. Anyone is able to develop
clients or extensions without permission from a central figurehead.
</div>
</div>
<div class="feature" style="top:85%">
<div class="feature_cont_img"><img class="feature_img" src="oy_feat_5.png?1"/></div>
<div class="feature_title">Intrinsic Storage-Pegged Value</div>
<div class="feature_content">Oyster Pearls are the bridge between the motivation of a user to spend
money on reliably storing data and the motivation of a website owner to cleanly monetize their
web content. The Pearl Token (PRL) is unlike any other coin, it is intrinsically pegged to the market value of storage prices without requiring a reserve to back it up. Overtime PRL's peg to storage increases.
</div>
</div>
</div>
<div id="roadmap" class="slide" style="height:auto;background-color:#fff;">
<section class="timeline">
<ul>
<li>
<div>
<time>Early 2015 - Protocol Conception</time>
The initial concept of silent traffic revenue generation via Javascript/HTML5 <a href="https://www.w3schools.com/html/html5_webstorage.asp">localstorage</a> is devised.
</div>
</li>
<li>
<div>
<time>Late 2016 - FrozenJar Development</time>
FrozenJar was the centralized predecessor to Oyster that enabled silent traffic revenue generation. Source code <a href="https://github.com/oysterprotocol/frozenjar">available on
github</a>.
</div>
</li>
<li>
<div>
<time>July 2017 - Tangle Research</time>
The IOTA Tangle is studied, including discussions with it's developers. Arrangements to convert FrozenJar to use the Tangle are made.
</div>
</li>
<li>
<div>
<time>September 18 - Protocol Published</time>
The full and final specifications of the Oyster Protocol are released via the published whitepaper. The whitepaper becomes the benchmark for the open source development of the
Oyster Protocol.
</div>
</li>
<li>
<div>
<time>October 5 - Oyster Contract Review</time>
The Oyster Contract, which mints the Pearl PRL Token, is audited and reviewed extensively.
</div>
</li>
<li>
<div>
<time>October 21 - PRL Token Crowdsale</time>
PRL Tokens are minted and sold for the first and last time in the crowdsale. Value attributed to the PRL tokens later enables the Oyster Network, as Website Owners and Broker Nodes
are paid in PRL.
</div>
</li>
<li>
<div>
<time>January 2018 - Testnet Release A</time>
Protocol logic concerning Broker Node operation is released in Alpha status, therefore enabling half of the network.
</div>
</li>
<li>
<div>
<time>February 2018 - Testnet Release B</time>
Protocol logic concerning Web Node operation is released in Alpha status, therefore completing the testnet and causing uploads to be functional for the first time.
</div>
</li>
<li>
<div>
<time>April 2018 - Mainnet Release</time>
Refinement of the software, the addition of the Distributed Reputation System, and integration with the Oyster Contract causes Oyster to become fully functioning and available for
use.
</div>
</li>
<li>
<div>
<time>2018 - 2019 Decentralized Oyster Applications</time>
After the web node mesh net has matured, Decentralized JavaScript applications can be easily written and executed on the Oyster network.
</div>
</li>
</ul>
</section>
</div>
<div id="dapp" class="slide" style="background-color:#42bde9;">
<div class="fade_up oy_project_pos" id="dapp_img">
<div class="feature_cont_img oy_project"><img class="feature_img oy_project" src="oy_dapp.png?1"/></div>
</div>
<div id="dapp_text" class="feature oy_project_pos">
<div class="feature_title">Accessible Decentralization</div>
<div class="feature_content">
Oyster lays the foundations for the next decentralized web. Web Nodes (website visitors) gradually peer with each other as they hunt for Oyster Pearls (PRL). Because they favour low-latency connections with nearby neighbors, the Oyster network becomes a performance-optimized mesh-net. Since web nodes operate fully on JavaScript, Oyster offers developers with access to a decentralized network via an accessible programming language.
</div>
</div>
</div>
<div id="team" class="slide" style="background-color:#fff;">
<div class="core_team center_hor">
<div class="core_team_lead center_hor hide_generic">Core Team</div>
<div class="core_team_unit hide_generic" style="left:50%;transform: translateX(-50%);top:15%;">
<div class="core_team_name">Bruno Block</div>
<div class="core_team_contact">
<div><a href="mailto:[email protected]" style="color:#2a2a2a">[email protected]</a></div>
<div><a href="https://github.com/brunoblock" style="color:#2a2a2a">GitHub</a> | <a href="https://t.me/brunoblock" style="color:#2a2a2a">Telegram</a></div>
</div>
<div>Protocol Designer & Lead Developer</div>
<hr>
<div class="core_team_text">Bruno is a self-taught programmer that has been developing software for 10 years. His experience puts an emphasis on data mining, machine learning,
cybersecurity and artificial intelligence. He fully developed the predecessor to Oyster, FrozenJar, and used to design schematics for software patents before working on Oyster.
</div>
</div>
<div class="core_team_unit hide_generic" style="left:5%;bottom:0;">
<div class="core_team_name">Taylor French</div>
<div class="core_team_contact">
<div><a href="mailto:[email protected]" style="color:#2a2a2a">[email protected]</a></div>
<div><a href="https://github.com/tfrench93" style="color:#2a2a2a">GitHub</a> | <a href="https://linkedin.com/in/taylorfrench93" style="color:#2a2a2a">LinkedIn</a></div>
</div>
<div>Senior Software Engineer & Design Director</div>
<hr>
<div class="core_team_text">Taylor completed a bachelor’s degree in psychology at Memorial University, and a master’s degree in experimental psychology at McGill University. This
background in psychology/neuroscience is what fueled his interest in UI/UX design, which led to an interest in front-end design methodologies and frameworks. He is a self-taught
computer programmer, and recently worked as an Amazon Web Services (AWS) developer intern for a prominent Fintech company.
</div>
</div>
<div class="core_team_unit hide_generic" style="right:5%;bottom:0;">
<div class="core_team_name">Ian Seyer</div>
<div class="core_team_contact">
<div><a href="https://github.com/ianseyer" style="color:#2a2a2a">GitHub</a> | <a href="https://www.linkedin.com/in/ian-seyer-96a6907" style="color:#2a2a2a">LinkedIn</a></div>
</div>
<div>Software Architect & Engineer</div>
<hr>
<div class="core_team_text">Ian Seyer is a software and devops engineer with a background in API design and paradigms of scale. He has worked in distributed computing and large scale
messaging systems, as well as data processing and machine learning. He entered the crypto space 1.5 years ago as an investor.
</div>
</div>
</div>
</div>
<div id="project" class="slide" style="background-color:#42bde9;">
<div class="fade_up oy_project_pos" id="project_img">
<div id="container" class="feature_cont_img oy_project"><img class="feature_img oy_project" src="oy_dev.png"/></div>
</div>
<div id="project_text" class="feature oy_project_pos">
<div class="feature_title">Protocol-Centric Development</div>
<div class="feature_content">
When projects are people-centric, they're prone to having a bad day when the people do. Oyster distinguishes itself from other projects by having a fully specified protocol definition in
the whitepaper. Oyster engages development within the ethics of decentralization, therefore progress can be made by anyone if it conforms with protocol specifications.
</div>
</div>
<div class="el_container">
<div class="el_discussion hide_generic">
<a href="https://t.me/oysterprotocol" style="color:#FFF;text-decoration:none;"><img src="oy_telegram.png" class="feature_img el_logo" style="position:absolute;top:0;left:0;transform:translate(-110%, 4%)"/>
<div>Join the<br>Discussion</div>
</a>
</div>
<div class="el_whitepaper hide_generic">
<a href="https://oyster.ws/OysterWhitepaper.pdf" style="color:#FFF;text-decoration:none;"><img src="oy_whitepaper.png" class="feature_img el_logo" style="position:absolute;top:0;left:0;transform:translate(-124%, -8%)"/>
<div>Download<br>Whitepaper</div>
</a>
</div>
<div class="el_team hide_generic">
<a href="https://trello.com/oysterprotocol" style="color:#FFF;text-decoration:none;"><img src="oy_team.png?2" class="feature_img el_logo" style="position:absolute;top:0;left:0;transform:translate(-124%, -8%)"/>
<div>Track Team<br>Progress</div>
</a>
</div>
</div>
</div>
<div id="protocol" class="slide" style="background-color:#fff;">
<div class="protocol_overview hide_generic">Protocol Overview</div>
<div class="protocol_nav hide_generic">
<div><span id="nav_pr1" class="protocol_link" onclick="oy_protocol_switch(this.id)" style="background-color: rgba(66, 189, 233, 0.5);">Storage User</span> | <span id="nav_pr2" class="protocol_link" onclick="oy_protocol_switch(this.id)">Broker Node</span> | <span
id="nav_pr3" class="protocol_link" onclick="oy_protocol_switch(this.id)">Web Node</span></div>
<div><span id="nav_pr4" class="protocol_link" onclick="oy_protocol_switch(this.id)">Website Owner</span> | <span id="nav_pr5" class="protocol_link"
onclick="oy_protocol_switch(this.id)">Tangle</span> | <span
id="nav_pr6" class="protocol_link" onclick="oy_protocol_switch(this.id)">Blockchain</span></div>
</div>
<div class="protocol_box_first pr1_height" id="pr1">
<div class="protocol_title hide_fixed pr1">
<div> Storage User
</div>
<div class="protocol_caption">A user that spends Oyster Pearls to upload a file</div>
</div>
<div class="protocol_content">
<div class="protocol_head hide pr1" style="transition-delay: 0.05s">Responsibilities</div>
<div class="hide pr1" style="transition-delay: 0.1s">• Pay the correct amount of Oyster <span class="flare_pink">Pearls</span> to two Broker Nodes.
</div>
<div class="hide pr1" style="transition-delay: 0.15s">• Despite automation, has final discretion in choosing which two Broker Nodes to use.
</div>
<div class="hide pr1" style="transition-delay: 0.2s">• Encrypt and split file locally in browser before sending parts to chosen Broker Nodes.
</div>
<div class="hide pr1" style="transition-delay: 0.25s">• Verify the integrity of the Data Map installed by Broker Nodes.
</div>
<div class="hide pr1" style="transition-delay: 0.3s">• Share Broker Node contracts via the Distributed Reputation System.
</div>
<div class="hide pr1" style="transition-delay: 0.35s">• Securely store the Oyster Handle to retrieve the file from the Tangle at a later time.
</div>
<div class="protocol_head hide pr1" style="transition-delay: 0.45s">Reward</div>
<div class="hide pr1" style="transition-delay: 0.4s">• Their file is securely, reliably, and anonymously stored.
</div>
</div>
</div>
<div class="protocol_box hidden pr2_height" id="pr2">
<div class="protocol_title hide_fixed pr2">
<div> Broker Node
</div>
<div class="protocol_caption">A network device with access to the Tangle and Blockchain</div>
</div>
<div class="protocol_content">
<div class="protocol_head hide pr2" style="transition-delay: 0.05s">Responsibilities</div>
<div class="hide pr2" style="transition-delay: 0.1s">• Maintain connectivity to the Tangle via mutual neighboring Nodes.
</div>
<div class="hide pr2" style="transition-delay: 0.15s">• Provide Web Nodes and Storage Users with access to the Tangle.
</div>
<div class="hide pr2" style="transition-delay: 0.2s">• Perform Proof of Work for new file uploads where applicable.
</div>
<div class="hide pr2" style="transition-delay: 0.25s">• Submit the Storage User's Pearls to a buried state in the Oyster Contract.
</div>
<div class="hide pr2" style="transition-delay: 0.3s">• Unlock discovered treasure if it's Proof of Work was performed.
</div>
<div class="hide pr2" style="transition-delay: 0.35s">• Maintain a positive balance of ETH to unlock discovered treasure.
</div>
<div class="hide pr2" style="transition-delay: 0.4s">• Build a reputation score on the Distributed Reputation System.
</div>
<div class="hide pr2" style="transition-delay: 0.45s">• Broker peer-to-peer connection initiations between Web Nodes.
</div>
<div class="hide pr2" style="transition-delay: 0.5s">• Send new Treasure Maps to Web Nodes that perform Proof of Work.
</div>
<div class="protocol_head hide pr2" style="transition-delay: 0.55s">Reward</div>
<div class="hide pr2" style="transition-delay: 0.6s">• Earn Oyster Pearls by collecting leftovers from newly buried treasure.
</div>
<div class="hide pr2" style="transition-delay: 0.65s">• Earn Oyster Pearls by collecting fees from newly discovered treasure.
</div>
<div class="hide pr2" style="transition-delay: 0.7s">• Pass on Proof of Work burden to Web Nodes where applicable.
</div>
</div>
</div>
<div class="protocol_box hidden pr3_height" id="pr3">
<div class="protocol_title hide_fixed pr3">
<div> Web Node
</div>
<div class="protocol_caption">A web browser that is visiting a web site</div>
</div>
<div class="protocol_content">
<div class="protocol_head hide pr3" style="transition-delay: 0.05s">Responsibilities</div>
<div class="hide pr3" style="transition-delay: 0.1s">• Search through Treasure Maps via <span class="flare_red">Proof of Work</span> to discover embedded Oyster Pearls.
</div>
<div class="hide pr3" style="transition-delay: 0.15s">• Submit discovered Treasure to a Broker Node for claiming on behalf of the corresponding Website Owner.
</div>
<div class="hide pr3" style="transition-delay: 0.2s">• Perform Proof of Work for Broker Nodes to get Web Node identities and new Treasure Maps.
</div>
<div class="hide pr3" style="transition-delay: 0.25s">• Perform Proof of Work for Web Nodes to get Web Node identities and old Treasure Maps.
</div>
<div class="hide pr3" style="transition-delay: 0.3s">• Send Web Node identities and old Treasure Maps to Web Nodes that have performed the adequate Proof of Work.
</div>
<div class="hide pr3" style="transition-delay: 0.35s">• Share Broker Node contracts via the Distributed Reputation System.
</div>
<div class="protocol_head hide pr3" style="transition-delay: 0.4s">Reward</div>
<div class="hide pr3" style="transition-delay: 0.45s">• Granted access to content/goods/services from the Website Owner.
</div>
<div class="hide pr3" style="transition-delay: 0.5s">• Pass on Proof of Work burden to other Web Nodes where applicable.
</div>
</div>
</div>
<div class="protocol_box hidden pr4_height" id="pr4">
<div class="protocol_title hide_fixed pr4">
<div> Website Owner
</div>
<div class="protocol_caption">An organization or individual that runs a website</div>
</div>
<div class="protocol_content">
<div class="protocol_head hide pr4" style="transition-delay: 0.05s">Responsibilities</div>
<div class="hide pr4" style="transition-delay: 0.1s">• Provide content/goods/services to Web Nodes.
</div>
<div class="hide pr4" style="transition-delay: 0.15s">• Add the Oyster Protocol script to their website HTML.
</div>
<div class="protocol_head hide pr4" style="transition-delay: 0.2s">Reward</div>
<div class="hide pr4" style="transition-delay: 0.25s">• Get paid in Oyster Pearls that have been discovered by Web Nodes.
</div>
</div>
</div>
<div class="protocol_box hidden pr5_height" id="pr5">
<div class="protocol_title hide_fixed pr5">
<div> IOTA Tangle
</div>
<div class="protocol_caption">A distributed ledger known as a Directed Acyclic Graph</div>
</div>
<div class="protocol_content">
<div class="protocol_head hide pr5" style="transition-delay: 0.05s">Responsibilities</div>
<div class="hide pr5" style="transition-delay: 0.1s">• Retain data for which the Proof of Work has been performed.
</div>
<div class="hide pr5" style="transition-delay: 0.15s">• Geographically distribute redundant copies of data.
</div>
<div class="hide pr5" style="transition-delay: 0.2s">• Load balance storage burden, such as with Swarm Intelligence.
</div>
<div class="protocol_head hide pr5" style="transition-delay: 0.25s">Reward</div>
<div class="hide pr5" style="transition-delay: 0.3s">• Network experiences increased resistance against attack vectors.
</div>
<div class="hide pr5" style="transition-delay: 0.35s">• Faster average confirmation time for transactions.
</div>
</div>
</div>
<div class="protocol_box hidden pr6_height" id="pr6">
<div class="protocol_title hide_fixed pr6">
<div> Ethereum Blockchain
</div>
<div class="protocol_caption">A distributed ledger with Smart Contract capabilities</div>
</div>
<div class="protocol_content">
<div class="protocol_head hide pr6" style="transition-delay: 0.05s">Responsibilities</div>
<div class="hide pr6" style="transition-delay: 0.1s">• Provide Smart Contract Framework that produces the properties inherent in Oyster Pearls (as tokens).
</div>
<div class="protocol_head hide pr6" style="transition-delay: 0.15s">Reward</div>
<div class="hide pr6" style="transition-delay: 0.2s">• Blockchain miners receive fees paid in ETH from the Broker Nodes.
</div>
</div>
</div>
</div>
<div id="iphone" class="slide" style="background-color:#42BDE9;">
<div style="position:absolute;height:100%;width:50%;left:0;">
<div id="iphone_text" class="iphone_text iphone_slide">
<div class="iphone_title">
Accessible. Anywhere.
</div>
<div>Oyster is a protocol for storing data on the IOTA Tangle. All someone needs to retrieve their data is connectivity to the Tangle and any software client that conforms with the Oyster Protocol. Connectivity to the Tangle does not require any centralized portal or gateway; therefore Oyster is fully decentralized with very low counterparty risk.
</div>
</div>
</div>
<div style="position:absolute;height:100%;width:50%;right:0;">
<img id="iphone_img" class="iphone_img iphone_slide" src="oy_iphone.png"/>
</div>
</div>
<div id="launch" class="slide" style="height:100vh;background-color:#f7f7f7;">
<div class="launch_lead hide_generic" style="transition-duration: 0.4s;z-index:1000">Oyster Unlocks the Dormant Revenue Potential of Millions of Websites</div>
<div class="launch_text hide_final" style="transition-delay: 0.4s;z-index:1000">
PRL is the economic bridge between content publishers, content consumers, storage providers, and storage consumers.
</div>
<div class="extra_notice hide_final" style="transition-delay: 1s;z-index:1000">
<div style="position:absolute;left:0;">
Do Not Send From Exchanges
</div>
<div style="position:absolute;right:0;">
Set Gas Limit to 200,000
</div>
</div>
<div>
<div class="extra_note hide_final" style="transition-delay: 1s;z-index:1000">SALE IS CLOSED
<a href="https://etherscan.io/address/0x1844b21593262668B7248d0f57a220CaaBA46ab9#code"><img class="launch_checksum" src="oy_checksum.png" /></a>
</div>
</div>
<div id="launch_address" class="launch_address hide_final" style="transition-delay: 1.2s;z-index:99999;">0x1844b21593262668B7248d0f57a220CaaBA46ab9</div>
<div class="market_cmc" style="z-index:9999999">
<script type="text/javascript" src="https://files.coinmarketcap.com/static/widget/currency.js"></script><div class="coinmarketcap-currency-widget" data-currency="oyster-pearl" data-base="USD" data-secondary="" data-ticker="true" data-rank="true" data-marketcap="true" data-volume="true" data-stats="USD" data-statsticker="true"></div>
</div>
<div class="market_exchanges" style="z-index:99999999">
<div class="press_lead">Available on Exchanges:</div>
<br>
<div>
<a href="https://www.kucoin.com/#/trade.pro/PRL-BTC"><img class="exchange_img" src="oy_exchange2.png" /></a>
<a href="https://etherdelta.com/#PRL-ETH"><img class="exchange_img" src="oy_exchange1.png" /></a>
</div>
</div>
<div class="launch_directory hide_final" style="transition-delay: 1.6s;z-index:1000">
<div style="position:absolute;height:100%;width:50%;left:0;">
<div class="launch_img oy_solution">
<div class="shell_cont_img">
<img class="shell_img" src="oy_logo_shell.png"/>
<div class="shadow">
<div style="position:relative;width:100%;height:100%;background: rgba(48, 48, 48, 0.20);border-radius:50%;filter: blur(8px);">
<div style="position:absolute;left:50%;top:50%;transform: translateX(-50%) translateY(-50%);width:75%;height:50%;background: rgba(70, 70, 70, 0.40);border-radius:50%;z-index:20"></div>
</div>
</div>
</div>
</div>
</div>
<div style="position:absolute;height:100%;width:50%;right:0;">
<div style="position:absolute;top:0;"><a href="https://github.com/oysterprotocol">GitHub</a></div>
<div style="position:absolute;top:20%;"><a href="https://oyster.ws/OysterWhitepaper.pdf">Whitepaper</a></div>
<div style="position:absolute;top:40%;"><a href="https://t.me/oysterprotocol">Telegram</a></div>
<div style="position:absolute;top:60%;"><a href="https://medium.com/oysterprotocol">Oyster Blog</a></div>
<div style="position:absolute;top:80%;"><a href="https://twitter.com/OysterProtocol">@OysterProtocol</a></div>
<div style="position:absolute;top:100%;"><a href="mailto:[email protected]">[email protected]</a></div>
</div>
</div>
<div class="scroll_text hide_final" style="transition-delay: 3.2s;position:absolute;bottom:0;left:50%;transform:translateX(-50%)" onmouseover="this.style.cursor = 'pointer'" onclick="oy_scroll(2)">scroll to top</div>
</div>
<div id="oy_extra_space"></div>
<script type="text/javascript">
function oy_access(oy_code, oy_noscroll) {
if (typeof oy_noscroll === 'undefined') oy_noscroll = false;
$.post("https://oyster.ws/tokeninternal/oy_access.php", {oy_code: oy_code},
function (data, status) {
if (status === "success" && data !== "oy_reject") {
document.getElementById('oy_extra_space').innerHTML = data;
document.getElementById('access_go_button').style.backgroundColor = "#46599A";
oy_scroll(4);
//document.getElementById('front_extra_sign').innerHTML = "AIRDROP SALE";
}
else {
document.getElementById('access_go_button').style.backgroundColor = "#e61000";
setTimeout(function () {
document.getElementById('access_go_button').style.backgroundColor = "#14a2cc";
}, 1000)
}
});
}
function oy_scroll(scroll_type) {
if (scroll_type === 1) {
var h = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);
var scroll_offset = Math.round(h / 15);
$('html,body').animate({scrollTop: $("#problem").offset().top - scroll_offset}, 1500);
}
else if (scroll_type === 2) {
$('html,body').animate({scrollTop: 0}, 2500);
}
else if (scroll_type === 3) {
$('html, body').animate({
scrollTop: $(document).height() - $(window).height()
}, 2000
);
}
else if (scroll_type === 4) {
$('html, body').animate({
scrollTop: $(document).height() - $(window).height()
}, 1600
);
}
}
function oy_countdown(oy_label, oy_timestamp) {
var countDownDate = new Date(oy_timestamp).getTime();
oy_countdown_sub(oy_label, countDownDate);
var x = setInterval(function () {
oy_countdown_sub(oy_label, countDownDate);
}, 1000);
function oy_countdown_sub(oy_label, countDownDate) {
var now = new Date().getTime();
var distance = countDownDate - now;
var days = Math.floor(distance / (1000 * 60 * 60 * 24));
var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
var seconds = Math.floor((distance % (1000 * 60)) / 1000);
document.getElementById(oy_label + "_day").innerHTML = days + "<br><span class='" + oy_label + "_label'>day" + (days === 1 ? '' : 's') + "</span>";
document.getElementById(oy_label + "_hour").innerHTML = hours + "<br><span class='" + oy_label + "_label'>hour" + (hours === 1 ? '' : 's') + "</span>";
document.getElementById(oy_label + "_minute").innerHTML = minutes + "<br><span class='" + oy_label + "_label'>minute" + (minutes === 1 ? '' : 's') + "</span>";
document.getElementById(oy_label + "_second").innerHTML = seconds + "<br><span class='" + oy_label + "_label'>second" + (seconds === 1 ? '' : 's') + "</span>";
// If the count down is finished, write some text
if (distance < 0) {
clearInterval(x);
document.getElementById(oy_label).innerHTML = "<div style='font-size:3vh'>REFRESH THIS PAGE</div><div style='font-size:1.5vh'>If this message still shows, then <a href='https://oyster.ws/index.html?2' target='_self'>click here</a>.</div>";
}
}
}
function isElementInViewport(el) {
var rect = el.getBoundingClientRect();
return (
rect.top >= 0 &&
rect.bottom <= (window.innerHeight || document.documentElement.clientHeight)
);
}
window.OY_PRO_CURR = "pr1";
function oy_protocol_switch(oy_id) {
if (window.OY_PRO_CURR !== oy_id) {
document.getElementById("nav_" + window.OY_PRO_CURR).style.backgroundColor = "transparent";
document.getElementById(oy_id).style.backgroundColor = "rgba(66, 189, 233, 0.5)";
$("#" + window.OY_PRO_CURR).fadeOut(200, function () {
var j;
var target_sub;
var target = document.getElementById(window.OY_PRO_CURR);
target.classList.add("load_view_fixed");
target_sub = document.querySelectorAll('.' + target.id);
for (j = 0; j < target_sub.length; j++) {
if (isElementInViewport(target_sub[j])) {
target_sub[j].classList.remove("show");
}
}
$("#" + oy_id.replace("nav_", "")).fadeIn(100, function () {
var j;
var target_sub;
var target = document.getElementById(oy_id.replace("nav_", ""));
target_sub = document.querySelectorAll('.' + target.id);
for (j = 0; j < target_sub.length; j++) {
if (isElementInViewport(target_sub[j])) {
target_sub[j].classList.add("show");
}
}
});
});
window.OY_PRO_CURR = oy_id.replace("nav_", "");
}
}
(function () {
var split = location.search.replace('?', '').split('=');
if (split[0]==="sale"&&split[1].length>4) {
document.getElementById("access_input").value = split[1];
oy_access(split[1], true);
}
var items0 = document.querySelectorAll(".hide_generic");
var items1 = document.querySelectorAll(".timeline li");
var items2 = document.querySelectorAll(".feature");
var items3 = document.querySelectorAll(".pop_up");
var items4 = document.querySelectorAll(".fade_up");
var items5 = document.querySelectorAll(".protocol_box_first");
var items7 = document.querySelectorAll(".iphone_slide");
var items8 = document.querySelectorAll(".hide_final");
function scroll_effect(target, base, extra, scroll_pos) {
var scroll_react = 32;
var scroll_offset_img = ((scroll_pos - base) * scroll_react);
var scroll_offset_text = ((base - scroll_pos) * scroll_react);
var scroll_act = scroll_react / 10;
var target_img = document.getElementById(target + '_img');
var target_text = document.getElementById(target + '_text');
if (scroll_offset_img < scroll_act && scroll_offset_img > (scroll_act * -1) && window.getComputedStyle(target_img).opacity === '1' && window.getComputedStyle(target_text).opacity === '1') {
if (window.innerHeight > window.innerWidth) {
target_img.style.transform = extra + "translateY(-50%) translateY(" + scroll_offset_img + "vw)";
target_text.style.transform = extra + "translateY(-50%) translateY(" + scroll_offset_text + "vw)";
}
else {
target_img.style.transform = extra + "translateY(-50%) translateY(" + scroll_offset_img + "vh)";
target_text.style.transform = extra + "translateY(-50%) translateY(" + scroll_offset_text + "vh)";
}
setTimeout(function () {
target_img.style.transition = "all 0.12s linear";
target_text.style.transition = "all 0.12s linear";
}, 500);
}
}
function callbackFunc() {
var scroll_pos = $(window).scrollTop() / $(document).height();
console.log(scroll_pos);
scroll_effect('problem', 0.073, "translateX(-50%) ", scroll_pos);
scroll_effect('solution', 0.145, "translateX(-50%) ", scroll_pos);
scroll_effect('dapp', 0.565, "translateX(-50%) ", scroll_pos);
scroll_effect('project', 0.704, "translateX(-50%) ", scroll_pos);
scroll_effect('iphone', 0.818, "", scroll_pos);
var i;
for (i = 0; i < items0.length; i++) {
if (isElementInViewport(items0[i])) {
items0[i].classList.add("show_generic");
}
}
for (i = 0; i < items1.length; i++) {
if (isElementInViewport(items1[i])) {
items1[i].classList.add("in-view");
}
}
for (i = 0; i < items2.length; i++) {
if (isElementInViewport(items2[i])) {
items2[i].classList.add("load_view");
}
}
for (i = 0; i < items3.length; i++) {
if (isElementInViewport(items3[i])) {
items3[i].classList.add("load_view");
}
}
for (i = 0; i < items4.length; i++) {
if (isElementInViewport(items4[i])) {
items4[i].classList.add("load_view");
}
}
var j;
var items6;
for (i = 0; i < items5.length; i++) {
if (isElementInViewport(items5[i])) {
items5[i].classList.add("load_view_fixed");
items6 = document.querySelectorAll('.' + items5[i].id);
for (j = 0; j < items6.length; j++) {
if (isElementInViewport(items6[j])) {
items6[j].classList.add("show");
}
}
}
}
for (i = 0; i < items7.length; i++) {
if (isElementInViewport(items7[i])) {
items7[i].classList.add("load_view_semi");
}
}
var final_skip = false;
for (i = 0; i < items8.length; i++) {
if (final_skip === true || isElementInViewport(items8[i])) {
if (items8[i].id === "launch_address") final_skip = true;
items8[i].classList.add("show_generic");
}
}
}
window.addEventListener("load", callbackFunc);
window.addEventListener("resize", callbackFunc);
window.addEventListener("scroll", callbackFunc);
})();
</script>
<!-- Start of StatCounter Code for Default Guide -->
<script type="text/javascript">
var sc_project = 11448740;
var sc_invisible = 1;
var sc_security = "692df40d";
var sc_https = 1;
var scJsHost = (("https:" == document.location.protocol) ?
"https://secure." : "http://www.");
document.write("<sc" + "ript type='text/javascript' src='" +
scJsHost +
"statcounter.com/counter/counter.js'></" + "script>");
</script>
<noscript>
<div class="statcounter"><a title="site stats"
href="http://statcounter.com/" target="_blank"><img
class="statcounter"
src="//c.statcounter.com/11448740/0/692df40d/1/" alt="site
stats"></a></div>
</noscript>
<!-- End of StatCounter Code for Default Guide -->
</body>
</html>