-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy pathindex.slim
More file actions
395 lines (382 loc) · 26.4 KB
/
index.slim
File metadata and controls
395 lines (382 loc) · 26.4 KB
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
// configurable variables
- brand_description = "Efficient Decentralized Mining Pools for Existing Cryptocurrencies Based on Ethereum Smart Contracts"
- public_node = "https://mainnet.infura.io/0BRKxQ0SFvAxGL72cbXi"
- smart_pool_address = "0x98F62d8aD5a884C8bbcf262591DFF55DAb263B80"
- smart_pool_abi_url = 'https://api.etherscan.io/api?module=contract&action=getabi&address=' + smart_pool_address + '&apikey=DS24ZMNDG8CGKNU1QAU32WFS4DZKJ3PE3J'
- feature_decentralized_title = "Decentralized"
- feature_decentralized_body = "No centralized operators managing the pool."
- feature_secure_title = "Secure"
- feature_secure_body = "Secure against both malicious and cheating miners, fully protected from DDoS attacks."
- feature_efficient_title = "Efficient & Scalable"
- feature_efficient_body = "Even more efficient than centralized pools.|Can handle thousands of miners."
- feature_open_source_title = "Open Source and Non-Profit"
- feature_open_source_body = "All source code is open. Run by the community, built for the community."
- problem_centralized_title = "Mining in Cryptocurrencies is Highly Centralized"
- problem_centralized_body = "More than 80% of mining power in Ethereum emanates from 5 mining pools. Similarly, the main 8 pools control the same fraction of mining power in Bitcoin."
- problem_censorship_title = "Transaction Censorship and Single Point of Failure"
- problem_censorship_body = "Pools dictate the transaction sets in new blocks, not miners.|Pools are subject to continuous DDoS attacks. If a big pool goes down, the security of the network is significantly compromised."
- problem_solo_title = "Mining Solo is Difficult for Small Miners"
- problem_solo_body = "High variance of returns, hard for users to plan economically. Decentralized mining pools for Bitcoin (e.g., P2Pool) exist, but are inefficient and not applicable to Ethereum."
- problem_fee_title = "Centralized Pools Take High Fees"
- problem_fee_body = "to cover for their operation costs and gain profits."
- solution_decentralized_title = "Decentralize Pools by Leveraging Smart Contracts"
- solution_decentralized_body = "We essentially replace the centralized pool operators by smart contracts, which is run and managed in a decentralized way on the blockchain."
- solution_censorship_title = "Mitigate Transaction Censorship Threat"
- solution_censorship_body = "Miners can propose their own sets of transactions."
- solution_variance_title = "Guarantee Low Variance"
- solution_variance_body = "Although being decentralized, our pools can guarantee the same variance in payments as centralized pools."
- solution_fee_title = "Low Fees"
- solution_fee_body = "The decentralized formation of SmartPool does not require any infrastructure to operate the pool.|SmartPool may take negligible to almost zero fees to maintain the pool front-end and to develop new features."
- how_it_works = "We use Ethereum smart contracts to build a decentralized pooled mining protocol called SmartPool. Our solution implicitly replaces the centralized pool operator by network participants who run the Ethereum network.|SmartPool includes several novel data structures and design choices which make its protocol secure and efficient. Specifically, we devise a new mechanism to verify and record miners' contributions to the pool without centralized operators. SmartPool's efficient probabilistic verification drastically reduces both the number of messages and the costs to run the pool for miners. Using a novel data structure called the augmented Merkle tree, SmartPool's batched share submission and efficient payment scheme remove any incentive for submitting invalid batches."
- copy_right = "Copyright © 2017. All Right Reserved"
- faqs = []
- faqs << ["What is SmartPool?", 'An efficient and decentralized mining protocol for existing cryptocurrencies based on Ethereum smart contracts.']
- faqs << ["How is it different from (or better than) normal pools?", 'Normal centralized pools are not ideal because of: centralization in mining (obviously), transaction censorship (e.g. mining empty blocks, black-listing transactions), and high fees.|SmartPool enables an efficient way to mine blocks in a decentralized manner between miners. Everyone can propose their own transactions in a block, thus eliminating the censorship on transactions. SmartPool requires negligible to no fees from miners.']
- faqs << ["Ethereum is moving to Proof-of-stake, how does SmartPool benefit Ethereum?", 'We are excited about Proof of stake as much as anyone else, but it will take roughly <a href="https://twitter.com/VladZamfir/status/814907702833016833">one more year</a> for PoS to come. Until PoS is officially rolled out, SmartPool is still relevant and makes mining in Ethereum much more decentralized.|The adoption of Ethereum based decentralized pools for other cryptocurrencies would increase Ether volume usage (as ZCash and Bitcoin miners would have to interact with the corresponding Ethereum contracts) and directly benefit Ethereum miners.']
- faqs << ["What are the supported cryptocurrencies?", "Ethereum first, ZCash and Bitcoin will be supported later if funding allows. We would also provide a generic interface to allow porting to almost all cryptocurrencies."]
- faqs << ["Everyone is doing an ICO for their project. Will SmartPool have one too?", "No. We have considered this option, and decided against it. SmartPool is a community project, not for profit. SmartPool will be run for-and-by the community.| We feel that having a separate token or currency associated with it may ultimately limit its adoption. SmartPool's goal is decentralization, and the best way to get there is to scale without creating auxiliary incentive structures around it.| We will still issue tokens for each donation though. The tokens are only to recognize donors' contributions to SmartPool, thus may or may not have financial values in the future."]
- faqs << ["How does one participate then?", "If you are a miner, it is pretty straightforward. You just need to install an update to your miner software (which we provide) to interact with the contracts. More details will be released later on.|If you are not a miner but a cryptocurrency advocate, please consider donating to support the SmartPool development. SmartPool is a non-profit open source project."]
- faqs << ["Can't we just port Bitcoin's P2Pool solution to Ethereum?", 'No. It is <a href="http://ethereum.stackexchange.com/questions/570/is-there-p2pool-mining-available-for-ethereum" rel="nofollow">technically impossible</a> to use P2Pool solution for Ethereum. Moreover, our solution also performs better than P2Pool for other currencies.']
- faqs << ["Decentralized Bitcoin pools haven't gained adoption. What differentiates SmartPool?", "<ol><li>SmartPool leverages the security of Ethereum blockchain for its operation. Previous decentralized Bitcoin pools (e.g. P2Pool) used a separate side-chain which doesn't have as strong a backing infrastructure as Ethereum today.</li><li>SmartPool's design scales ad-infinitum. In contrast, previous decentralized Bitcoin pools have a scalability bottleneck at even 1% of the Bitcoin mining scale.</li><li> SmartPool is a versatile concept. It can support mining for more than one cryptocurrency. It is appealing both for Bitcoin (which has dominated by large mining farms) as well as for other cryptocurrencies like Monero and ZCash (which have many more solo miners).</li></ol>"]
- faqs << ["Is it just a proof of concept?", "We already have a proof of concept for a SmartPool-based mining pool for Bitcoin. We aim to build production-ready and compatible system so everyone can use and launch their own decentralized pools.|Depending on our funding, we plan to launch and maintain SmartPool-based pools for Ethereum and other cryptocurrencies too."]
- faqs << ["What is the development timeline?", "<ol><li>Public crowdfund: 14 Jan 2017 (we ask for donations from the public).</li><li>First beta pool for Ethereum (on testnet): late April 2017.</li><li>First working pool for Ethereum: late May 2017.</li><li>Other's pools: from June 2017 (depending on the funding status).</li></ol>"]
- faqs << ["How is the project funded?", "The SmartPool project is funded by the community and run by the community. Thus, we will do a crowdfund and ask for donations from the public. We are also applying for some dev grants like Ethereum Dev Grants or Wanxiang Blockchain Labs. We will keep updating our funding status."]
- faqs << ["How much money are we looking for from the crowdfund? What are the deliverables?", "Depending on how much we get, our promised deliverables vary as follows.<ol><li>Less than 5,000 ETH: Implement SmartPool for Ethereum and release all software as open source (i.e. under MIT license).</li><li>5,000 to 10,000 ETH: In addition to what we have promised, we will launch a decentralized pool for Ethereum and maintain it until Ethereum moves to proof of stake.</li><li>More than 10,000 ETH: In addition to what we have promised, we implement SmartPool protocol for other cryptocurrencies (Bitcoin, ZCash and/or Monero) and possibly launch and maintain real pools for these cryptocurrencies.</li></ol>"]
- faqs << ["How will the money be spent?", "<ol><li>Pay to the devs (please check out our team).</li><li>Equipment and other expenses: GPU renting, basic infrastructure, social media promotion, etc.</li><li>Miners' subsidies. For example, we may give 5% bonus on shares until the pool attracts at least 10% mining power.</li></ol>"]
- faqs << ["What are the benefits for donors?", "There is no financial benefit at the moment. Although we issue tokens for each donation, the tokens are only to represent contributions to SmartPool. Our first priority is to promote decentralized mining and have a running pool with significant hash power. Compensating token holders will be considered, but will not be our main focus."]
// actual HTML structuring
doctype 5
html lang="en"
head
meta charset="utf-8"
// SEO metas
// ---------
meta name="viewport" content="width=device-width, initial-scale=1.0"
meta name="description" content="#{brand_description}"
meta name="keywords" content="blockchain, mining pool, ethereum, bitcoin, decentralize, free"
meta name="robots" content="index, follow"
// Open graph
meta property="og:title" content="SmartPool"
meta property="og:type" content="article"
meta property="og:url" content="http://smartpool.io"
meta property="og:image" content="http://smartpool.io/images/logo.png"
// Twitter card
meta name="twitter:card" content="#{brand_description}"
meta name="twitter:site" content="@SmartPool_Prj"
meta name="twitter:title" content="SmartPool"
meta name="twitter:description" content="#{brand_description}"
link rel="icon" type="image/x-icon" sizes="16x16" href="images/logo.png"
link rel="shortcut icon" type="image/png" href="images/logo.png"
link rel="stylesheet" media="screen" href="stylesheets/styles.css"
link rel="stylesheet" media="screen" href="stylesheets/odometer-theme-minimal.css"
title Smart Pool
body
header
div.background
nav.row.expanded
div.row
// section.columns.medium-2
section#menu.columns.large-8.small-centered
div#logo
div#menu-wrapper
a.menu.beginning href="/"
img src="images/logo.svg"
a.menu href="#problem" Problem
a.menu href="#solution" Solution
a.menu.hide-for-small-only href="#how-it-works" How It Works
a.menu href="#team" Team
a.menu href="#faq" FAQs
a.menu href="https://medium.com/smartpool" Blog
// section#action.columns.medium-2
// a.action href="" Join The Pool
section#brand
h1#brand-name Smart Pool
img#separator src="images/separator.svg"
div.row
div.small-12.medium-6.medium-centered
p#brand-description #{brand_description}
section#feature
div.section-content
div.show-for-small-only
div.row.section-point.extended.columns
div.point-image
img src="images/centralized-structure.svg"
div.point-content
h3.point-title #{feature_decentralized_title}
p.point-body
== feature_decentralized_body.split('|').join('<br/>')
div.row.section-point.extended.columns
div.point-image
img src="images/shield.svg"
div.point-content
h3.point-title #{feature_secure_title}
p.point-body
== feature_secure_body.split('|').join('<br/>')
div.row.section-point.extended.columns
div.point-image
img src="images/efficiency.svg"
div.point-content
h3.point-title #{feature_efficient_title}
p.point-body
== feature_efficient_body.split('|').join('<br/>')
div.row.section-point.extended.columns
div.point-image
img src="images/open-sign.svg"
div.point-content
h3.point-title #{feature_open_source_title}
p.point-body
== feature_open_source_body.split('|').join('<br/>')
div.hide-for-small-only
div.row
div.columns.small-12.medium-centered
div.row
div.section-point.columns.small-12.medium-6.left-point
div.row
div.columns.large-3.medium-1
div.columns.large-7.medium-8
div.point-content
h3.point-title #{feature_decentralized_title}
p.point-body
== feature_decentralized_body.split('|').join('<br/>')
div.columns.large-2.medium-3.point-image
img src="images/centralized-structure.svg"
div.section-point.columns.small-12.medium-6.right-point
div.row
div.column.large-2.medium-3.point-image
img src="images/shield.svg"
div.column.large-7.medium-8
div.point-content
h3.point-title #{feature_secure_title}
p.point-body
== feature_secure_body.split('|').join('<br/>')
div.columns.large-3.medium-1
div.row
div.columns.small-12.medium-centered
div.row
div.section-point.columns.small-12.medium-6.left-point
div.row
div.columns.large-3.medium-1
div.columns.large-7.medium-8
div.point-content
h3.point-title #{feature_efficient_title}
p.point-body
== feature_efficient_body.split('|').join('<br/>')
div.columns.large-2.medium-3.point-image
img src="images/efficiency.svg"
div.section-point.columns.small-12.medium-6.right-point
div.row
div.columns.large-2.medium-3.point-image
img src="images/open-sign.svg"
div.columns.large-7.medium-8
div.point-content
h3.point-title #{feature_open_source_title}
p.point-body
== feature_open_source_body.split('|').join('<br/>')
div.columns.large-3.medium-1
main
section#problem
h2.section-title The Problem
div.section-content
div.row
div.section-point.column.small-12.medium-6
span.bullet
h3.point-title #{problem_centralized_title}
p.point-body
== problem_centralized_body.split('|').join('<br/>')
div.section-point.column.small-12.medium-6
span.bullet
h3.point-title #{problem_censorship_title}
p.point-body
== problem_censorship_body.split('|').join('<br/>')
div.row
div.section-point.column.small-12.medium-6
span.bullet
h3.point-title #{problem_solo_title}
p.point-body
== problem_solo_body.split('|').join('<br/>')
div.section-point.column.small-12.medium-6
span.bullet
h3.point-title #{problem_fee_title}
p.point-body
== problem_fee_body.split('|').join('<br/>')
section#solution
section#solution-points
h2.section-title The Solution
div.section-content
div.row
div.section-point.columns.small-12.medium-6
div.point-image
img src="images/centralized-structure.svg"
div.point-content
h3.point-title #{solution_decentralized_title}
p.point-body
== solution_decentralized_body.split('|').join('<br/>')
div.section-point.columns.small-12.medium-6
div.point-image
img src="images/padlock.svg"
div.point-content
h3.point-title #{solution_censorship_title}
p.point-body
== solution_censorship_body.split('|').join('<br/>')
div.row
div.section-point.columns.small-12.medium-6
div.point-image
img src="images/guarantee.svg"
div.point-content
h3.point-title #{solution_variance_title}
p.point-body
== solution_variance_body.split('|').join('<br/>')
div.section-point.columns.small-12.medium-6
div.point-image
img src="images/stack-of-dollars-on-two-hands.svg"
div.point-content
h3.point-title #{solution_fee_title}
p.point-body
== solution_fee_body.split('|').join('<br/>')
section#how-it-works
h2.section-title How It Works
div.row
div.column.small-12.medium-10.medium-centered.section-content
- how_it_works.split('|').each do |point|
p.point-body
== point
p.point-body
| Want to learn more? Read our
a#white-paper href="docs/smartpool.pdf" technical paper
| .
section#team
h2.section-title Meet The Team
div.section-content.row
div.member-container.column.small-12.medium-4
div.avatar
img.member-image src="images/LoiLuu.png"
div.name
p.member-name Loi Luu
div.position
p.member-position Co-Founder and Developer
div.bio
input type="checkbox" class="read-more-state" id="loi-bio" /
p.member-bio.read-more-wrap
| Loi Luu is a PhD candidate at National University of Singapore. His research is on cryptocurrencies, smart contract security and distributed consensus algorithms. He is a lead developer of Oyente, the first security analyzer for smart contracts, which is now <a href="https://github.com/ethereum/oyente">open-source</a>. His research publications
span.read-more-target
| are available <a href="https://www.comp.nus.edu.sg/~loiluu/">online</a>, and he is a regular invited speaker at Bitcoin and Ethereum workshops such as DevCon2, EdCon.io, Scaling Bitcoin.
label.read-more-trigger for="loi-bio"
div.member-container.column.small-12.medium-4
div.avatar
img.member-image src="images/Yaron.png"
div.name
p.member-name Yaron Velner
div.position
p.member-position Co-Founder and Developer
div.bio
input#yaron-bio type="checkbox" class="read-more-state" /
p.member-bio.read-more-wrap
| Yaron Velner is a postdoctoral researcher in the Hebrew University of Jerusalem. His research is focused on aspects of game theory incentives in blockchain protocols and formal verification of smart contracts. He holds a Phd in computer science from Tel Aviv University. In his Phd thesis he
span.read-more-target
| investigated applications of game theory techniques to formal verification of computer programs and systems.
br
| Yaron is also an experienced software developer with over 10 years of experience as a senior software engineer and a technical leader at EZchip semi-conductors (recently acquired by Mellanox technologies). At EZchip he was a member in the data structure and algorithm team, which developed novel data structures for IP routing.
label.read-more-trigger for="yaron-bio"
div.member-container.column.small-12.medium-4
div.avatar
img.member-image src="images/victor.png"
div.name
p.member-name Victor Tran
div.position
p.member-position Developer
div.bio
input#victor-bio type="checkbox" class="read-more-state" /
p.member-bio.read-more-wrap
| Victor Tran is a senior backend engineer and Linux system administrator. He has experience in developing and building infrastructure for multiple social marketing platforms and advertising networks. He is interested in building high performance multi-platform applications. In his leisure time,
span.read-more-target
| he enjoys developing tools in Ruby and Golang for his team to improve the team's productivity.
br
| Victor co-founded and was CTO of several startups in social marketing. He built and maintained platforms which handled millions of monthly active users. One of his platform was in Alexa top 20 in the US for several months.
label.read-more-trigger for="victor-bio"
div.row
div.member-container.column.small-12.medium-5
div.avatar
img.member-image src="images/vitalik-buterin.jpg"
div.name
p.member-name Vitalik Buterin
div.position
p.member-position Advisor
div.bio
p.member-bio.read-more-wrap
| Vitalik is the Founder and Chief Scientist of Ethereum. He is also both the Founder and a writer for Bitcoin Magazine, a venture that marked the beginning of his career in crypto in 2011. He is interested in creating secure, efficient, and trustworthy systems and advises a number of projects in the crypto space.
div.member-container.column.small-12.medium-5
div.avatar
img.member-image src="images/prateek.jpg"
div.name
p.member-name Prateek Saxena
div.position
p.member-position Advisor
div.bio
p.member-bio.read-more-wrap
| Prateek Saxena is a research professor in computer science at National University of Singapore. He <a href="https://www.comp.nus.edu.sg/~prateeks/">works</a> on blockchains and computer security, and his research has influenced the design of browser platforms, web standards and app stores widely used today. He has received several premier awards such as the MIT TR35 Asia.
section#faq
h2.section-title Frequently Asked Questions
div.row
- faqs.each_with_index do |faq, index|
div.column.small-12.medium-12
div.faq
input.hide.show-answer type="checkbox" id="mark_q_#{index}"
h3.question
label for="mark_q_#{index}"
| #{index + 1}.
== faq[0]
div.answer
- faq[1].split('|').each do |p|
p.answer
== p
footer#contact
div.row.show-for-small-only
div.footer-container.column.small-12
div.logo-backing
span.center-helper
img.footer-logo src="images/logo.svg"
p.footer-brand-name Smart Pool
div.footer-container.column.small-12
div.row
div.contact-container
a href="mailto:loiluu@comp.nus.edu.sg"
img.contact-item#email src="images/email.svg"
a href="https://gitter.im/SmartPool/Lobby"
img.contact-item#gitter src="images/gitter1.svg"
a href="https://github.com/SmartPool"
img.contact-item#github src="images/github.svg"
a href="https://twitter.com/SmartpoolPrj"
img.contact-item#twitter src="images/twitter.svg"
div.footer-container.column.small-12
div.copy-right
p
== copy_right
div.row.hide-for-small-only.desktop-footer
div.footer-container.column.medium-4
div.logo-backing
span.center-helper
img.footer-logo src="images/logo.svg"
p.footer-brand-name Smart Pool
div.footer-container.column.medium-4
div.copy-right
p
== copy_right
div.footer-container.column.medium-4
div.contact-container
a href="https://twitter.com/SmartPool_Prj"
img.contact-item#twitter src="images/twitter.svg"
a href="https://github.com/SmartPool"
img.contact-item#github src="images/github.svg"
a href="https://gitter.im/SmartPool/Lobby"
img.contact-item#gitter src="images/gitter1.svg"
a href="mailto:loiluu@comp.nus.edu.sg"
img.contact-item#email src="images/email.svg"
section#app-variables.hide
p#public-node #{public_node}
p#smart-pool-address #{smart_pool_address}
p#smart-pool-abi-url #{smart_pool_abi_url}
script src="javascripts/ga.js"
script src="javascripts/jquery.min.js"
script src="javascripts/odometer.min.js"
script src="javascripts/web3.min.js"
script src="javascripts/smartpool.js"