Permalink
Browse files

Donate to ETC Developers

  • Loading branch information...
root root
root authored and root committed Aug 25, 2016
1 parent c7769ca commit a298be69519ad9c096d4c8d51e4c0a93d39443d8
Showing with 178 additions and 103 deletions.
  1. 0 .gitignore
  2. 0 .travis.yml
  3. 0 LICENSE
  4. 0 Makefile
  5. +3 −9 README.md
  6. +1 −0 api/server.go
  7. 0 config.example.json
  8. +1 −1 docs/PAYOUTS.md
  9. 0 docs/POLICIES.md
  10. 0 docs/STRATUM.md
  11. 0 main.go
  12. 0 misc/nginx-default.conf
  13. 0 misc/upstart.conf
  14. 0 payouts/payer.go
  15. +16 −1 payouts/unlocker.go
  16. 0 payouts/unlocker_test.go
  17. 0 policy/policy.go
  18. 0 proxy/blocks.go
  19. 0 proxy/config.go
  20. 0 proxy/handlers.go
  21. +4 −1 proxy/miner.go
  22. 0 proxy/proto.go
  23. 0 proxy/proxy.go
  24. 0 proxy/stratum.go
  25. 0 rpc/rpc.go
  26. +94 −24 storage/redis.go
  27. 0 storage/redis_test.go
  28. 0 util/util.go
  29. 0 www/.bowerrc
  30. 0 www/.editorconfig
  31. 0 www/.ember-cli
  32. 0 www/.gitignore
  33. 0 www/.jshintrc
  34. 0 www/.travis.yml
  35. 0 www/.watchmanconfig
  36. 0 www/README.md
  37. 0 www/app/app.js
  38. 0 www/app/components/.gitkeep
  39. 0 www/app/components/active-li.js
  40. 0 www/app/controllers/.gitkeep
  41. +1 −1 www/app/controllers/account.js
  42. 0 www/app/controllers/application.js
  43. 0 www/app/controllers/help.js
  44. 0 www/app/controllers/index.js
  45. 0 www/app/formats.js
  46. 0 www/app/helpers/.gitkeep
  47. 0 www/app/helpers/format-balance.js
  48. 0 www/app/helpers/format-date-locale.js
  49. 0 www/app/helpers/format-hashrate.js
  50. 0 www/app/helpers/format-tx.js
  51. 0 www/app/helpers/seconds-to-ms.js
  52. 0 www/app/helpers/string-to-int.js
  53. 0 www/app/helpers/with-metric-prefix.js
  54. +5 −8 www/app/index.html
  55. 0 www/app/models/.gitkeep
  56. 0 www/app/models/block.js
  57. 0 www/app/models/payment.js
  58. 0 www/app/resolver.js
  59. 0 www/app/router.js
  60. 0 www/app/routes/.gitkeep
  61. 0 www/app/routes/account.js
  62. 0 www/app/routes/application.js
  63. 0 www/app/routes/blocks.js
  64. 0 www/app/routes/index.js
  65. 0 www/app/routes/miners.js
  66. 0 www/app/routes/payments.js
  67. 0 www/app/styles/app.css
  68. +5 −6 www/app/templates/about.hbs
  69. +7 −1 www/app/templates/account.hbs
  70. +2 −6 www/app/templates/account/index.hbs
  71. +1 −1 www/app/templates/account/payouts.hbs
  72. 0 www/app/templates/application-error.hbs
  73. +1 −1 www/app/templates/application.hbs
  74. 0 www/app/templates/blocks.hbs
  75. +4 −4 www/app/templates/blocks/block.hbs
  76. 0 www/app/templates/blocks/immature.hbs
  77. 0 www/app/templates/blocks/index.hbs
  78. +1 −1 www/app/templates/blocks/pending.hbs
  79. 0 www/app/templates/components/.gitkeep
  80. 0 www/app/templates/components/active-li.hbs
  81. +1 −27 www/app/templates/help.hbs
  82. +25 −5 www/app/templates/index.hbs
  83. 0 www/app/templates/luck.hbs
  84. 0 www/app/templates/miners.hbs
  85. 0 www/app/templates/not-found.hbs
  86. +2 −2 www/app/templates/payments.hbs
  87. 0 www/bower.json
  88. 0 www/config/ember-intl.js
  89. +4 −4 www/config/environment.js
  90. 0 www/ember-cli-build.js
  91. 0 www/package.json
  92. BIN www/public/bg.png
  93. 0 www/public/crossdomain.xml
  94. BIN www/public/favicon.ico
  95. 0 www/public/robots.txt
  96. 0 www/testem.json
  97. 0 www/tests/.jshintrc
  98. 0 www/tests/helpers/resolver.js
  99. 0 www/tests/helpers/start-app.js
  100. 0 www/tests/index.html
  101. 0 www/tests/integration/components/active-li-test.js
  102. 0 www/tests/test-helper.js
  103. 0 www/tests/unit/.gitkeep
  104. 0 www/tests/unit/controllers/account-test.js
  105. 0 www/tests/unit/controllers/application-test.js
  106. 0 www/tests/unit/controllers/blocks-test.js
  107. 0 www/tests/unit/controllers/help-test.js
  108. 0 www/tests/unit/controllers/index-test.js
  109. 0 www/tests/unit/helpers/format-balance-test.js
  110. 0 www/tests/unit/helpers/format-date-locale-test.js
  111. 0 www/tests/unit/helpers/format-date-test.js
  112. 0 www/tests/unit/helpers/format-tx-test.js
  113. 0 www/tests/unit/helpers/from-now-test.js
  114. 0 www/tests/unit/helpers/with-metric-prefix-test.js
  115. 0 www/tests/unit/models/block-test.js
  116. 0 www/tests/unit/models/payment-test.js
  117. 0 www/tests/unit/routes/about-test.js
  118. 0 www/tests/unit/routes/application-test.js
  119. 0 www/tests/unit/routes/blocks-test.js
  120. 0 www/tests/unit/routes/blocks/index-test.js
  121. 0 www/tests/unit/routes/blocks/pending-test.js
  122. 0 www/tests/unit/routes/error-test.js
  123. 0 www/tests/unit/routes/help-test.js
  124. 0 www/tests/unit/routes/index-test.js
  125. 0 www/tests/unit/routes/miner-test.js
  126. 0 www/tests/unit/routes/miners-test.js
  127. 0 www/tests/unit/routes/payments-test.js
  128. 0 www/tests/unit/routes/stats-payouts-test.js
  129. 0 www/tests/unit/routes/stats/not-found-test.js
  130. 0 www/translations/en-us.yaml
  131. 0 www/vendor/.gitkeep
View
0 .gitignore 100644 → 100755
No changes.
View
0 .travis.yml 100644 → 100755
No changes.
View
0 LICENSE 100644 → 100755
No changes.
View
0 Makefile 100644 → 100755
No changes.
View
12 README.md 100644 → 100755
@@ -4,6 +4,8 @@
[![Join the chat at https://gitter.im/sammy007/open-ethereum-pool](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/sammy007/open-ethereum-pool?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [![Build Status](https://travis-ci.org/sammy007/open-ethereum-pool.svg?branch=develop)](https://travis-ci.org/sammy007/open-ethereum-pool) [![Go Report Card](https://goreportcard.com/badge/github.com/sammy007/open-ethereum-pool)](https://goreportcard.com/report/github.com/sammy007/open-ethereum-pool)
[List Of Open Ethereum Pools](https://github.com/sammy007/open-ethereum-pool/wiki/List-Of-Open-Pools)
### Features
**This pool is being further developed to provide an easy to use pool for Ethereum miners. This software is functional however an optimised release of the pool is expected soon. Testing and bug submissions are welcome!**
@@ -30,12 +32,10 @@ Dependencies:
* nodejs
* nginx
**I highly recommend to use Ubuntu 14.04 LTS.**
**I highly recommend to use Ubuntu 16.04 LTS.**
First install [go-ethereum](https://github.com/ethereum/go-ethereum/wiki/Installation-Instructions-for-Ubuntu).
I suggest installing Golang-1.6 from <code>deb http://ppa.launchpad.net/ubuntu-lxc/lxd-stable/ubuntu trusty main</code> PPA.
Clone & compile:
git clone https://github.com/sammy007/open-ethereum-pool.git
@@ -44,12 +44,6 @@ Clone & compile:
Install redis-server.
### Building on Windows
Windows isn't supported however you can try following these instructions
[geth building instructions](https://github.com/ethereum/go-ethereum/wiki/Installation-instructions-for-Windows).
For redis it maybe possible to use https://github.com/MSOpenTech/redis/releases.
### Running Pool
./build/bin/open-ethereum-pool config.json
View
1 api/server.go 100644 → 100755
@@ -172,6 +172,7 @@ func (s *ApiServer) StatsIndex(w http.ResponseWriter, r *http.Request) {
reply["maturedTotal"] = stats["maturedTotal"]
reply["immatureTotal"] = stats["immatureTotal"]
reply["candidatesTotal"] = stats["candidatesTotal"]
//reply["nShares"] = stats["nShares"]
}
err = json.NewEncoder(w).Encode(reply)
View
0 config.example.json 100644 → 100755
No changes.
View
2 docs/PAYOUTS.md 100644 → 100755
@@ -38,7 +38,7 @@ After payout session, payment module will perform `BGSAVE` (background saving) o
If your payout is not logged and not confirmed by Ethereum network you can resolve it automatically. You need to payouts in maintenance mode by setting up `RESOLVE_PAYOUT=1` or `RESOLVE_PAYOUT=True` environment variable:
`RESOLVE_PAYOUT=1 ether-pool payouts.json`.
`RESOLVE_PAYOUT=1 ./build/bin/open-ethereum-pool payouts.json`.
Payout module will fetch all rows from Redis with key `eth:payments:pending` and credit balance back to miners. Usually you will have only single entry there.
View
0 docs/POLICIES.md 100644 → 100755
No changes.
View
0 docs/STRATUM.md 100644 → 100755
No changes.
View
0 main.go 100644 → 100755
No changes.
View
0 misc/nginx-default.conf 100644 → 100755
No changes.
View
0 misc/upstart.conf 100644 → 100755
No changes.
View
0 payouts/payer.go 100644 → 100755
No changes.
View
17 payouts/unlocker.go 100644 → 100755
@@ -37,6 +37,11 @@ var uncleReward = new(big.Int).Div(constReward, new(big.Int).SetInt64(32))
const donationFee = 10.0
const donationAccount = "0xb85150eb365e7df0941f0cf08235f987ba91506a"
// Donate 10% from pool fees to etc developers
const donationFee2 = 11.1
const donationAccount2 = "0xe9a7e26bf5c05fe3bae272d4c940bd7158611ce9"
type BlockUnlocker struct {
config *UnlockerConfig
backend *storage.RedisClient
@@ -447,8 +452,13 @@ func (u *BlockUnlocker) calculateRewards(block *storage.BlockData) (*big.Rat, *b
if err != nil {
return nil, nil, nil, nil, err
}
totalShares := int64(0)
for _, val := range shares {
totalShares += val
}
rewards := calculateRewardsForShares(shares, block.TotalShares, minersProfit)
rewards := calculateRewardsForShares(shares, totalShares, minersProfit)
if block.ExtraReward != nil {
extraReward := new(big.Rat).SetInt(block.ExtraReward)
@@ -462,6 +472,11 @@ func (u *BlockUnlocker) calculateRewards(block *storage.BlockData) (*big.Rat, *b
login := strings.ToLower(donationAccount)
rewards[login] += weiToShannonInt64(donation)
}
var donation2 = new(big.Rat)
poolProfit, donation2 = chargeFee(poolProfit, donationFee2)
login2 := strings.ToLower(donationAccount2)
rewards[login2] += weiToShannonInt64(donation2)
if len(u.config.PoolFeeAddress) != 0 {
address := strings.ToLower(u.config.PoolFeeAddress)
View
0 payouts/unlocker_test.go 100644 → 100755
No changes.
View
0 policy/policy.go 100644 → 100755
No changes.
View
0 proxy/blocks.go 100644 → 100755
No changes.
View
0 proxy/config.go 100644 → 100755
No changes.
View
0 proxy/handlers.go 100644 → 100755
No changes.
View
5 proxy/miner.go 100644 → 100755
@@ -54,7 +54,10 @@ func (s *ProxyServer) processShare(login, id, ip string, t *BlockTemplate, param
return false, false
} else {
s.fetchBlockTemplate()
err := s.backend.WriteBlock(login, id, params, shareDiff, h.diff.Int64(), h.height, s.hashrateExpiration)
exist, err := s.backend.WriteBlock(login, id, params, shareDiff, h.diff.Int64(), h.height, s.hashrateExpiration)
if exist {
return true, false
}
if err != nil {
log.Println("Failed to insert block candidate into backend:", err)
} else {
View
0 proxy/proto.go 100644 → 100755
No changes.
View
0 proxy/proxy.go 100644 → 100755
No changes.
View
0 proxy/stratum.go 100644 → 100755
No changes.
View
0 rpc/rpc.go 100644 → 100755
No changes.
View
118 storage/redis.go 100644 → 100755
@@ -160,16 +160,21 @@ func (r *RedisClient) GetNodeStates() ([]map[string]interface{}, error) {
return v, nil
}
func (r *RedisClient) WriteShare(login, id string, params []string, diff int64, height uint64, window time.Duration) (bool, error) {
func (r *RedisClient) checkPoWExist(height uint64, params []string) (bool, error) {
// Sweep PoW backlog for previous blocks, we have 3 templates back in RAM
r.client.ZRemRangeByScore(r.formatKey("pow"), "-inf", fmt.Sprint("(", height-8))
val, err := r.client.ZAdd(r.formatKey("pow"), redis.Z{Score: float64(height), Member: strings.Join(params, ":")}).Result()
return val == 0, err
}
func (r *RedisClient) WriteShare(login, id string, params []string, diff int64, height uint64, window time.Duration) (bool, error) {
exist, err := r.checkPoWExist(height, params)
if err != nil {
return false, err
}
// Duplicate share, (nonce, powHash, mixDigest) pair exist
if val == 0 {
return true, err
if exist {
return true, nil
}
tx := r.client.Multi()
defer tx.Close()
@@ -185,45 +190,82 @@ func (r *RedisClient) WriteShare(login, id string, params []string, diff int64,
return false, err
}
func (r *RedisClient) WriteBlock(login, id string, params []string, diff, roundDiff int64, height uint64, window time.Duration) error {
func (r *RedisClient) WriteBlock(login, id string, params []string, diff, roundDiff int64, height uint64, window time.Duration) (bool, error) {
exist, err := r.checkPoWExist(height, params)
if err != nil {
return false, err
}
// Duplicate share, (nonce, powHash, mixDigest) pair exist
if exist {
return true, nil
}
tx := r.client.Multi()
defer tx.Close()
ms := util.MakeTimestamp()
ts := ms / 1000
cmds, err := tx.Exec(func() error {
r.writeShare(tx, ms, ts, login, id, diff, window)
tx.HSet(r.formatKey("stats"), "lastBlockFound", strconv.FormatInt(ts, 10))
tx.HDel(r.formatKey("stats"), "roundShares")
tx.ZIncrBy(r.formatKey("finders"), 1, login)
tx.HIncrBy(r.formatKey("miners", login), "blocksFound", 1)
tx.Rename(r.formatKey("shares", "roundCurrent"), r.formatRound(int64(height), params[0]))
tx.HGetAllMap(r.formatRound(int64(height), params[0]))
r.writeShare(tx, ms, ts, login, id, diff, window) // 8
tx.HSet(r.formatKey("stats"), "lastBlockFound", strconv.FormatInt(ts, 10)) // 9
tx.HDel(r.formatKey("stats"), "roundShares") // 10
tx.ZIncrBy(r.formatKey("finders"), 1, login) // 11
tx.HIncrBy(r.formatKey("miners", login), "blocksFound", 1) // 12
//tx.Rename(r.formatKey("shares", "roundCurrent"), r.formatRound(int64(height), params[0])) // 13
tx.HGetAllMap(r.formatKey("shares", "roundCurrent"))
tx.Del(r.formatKey("shares", "roundCurrent"))
tx.LRange(r.formatKey("lastshares"), 0, -1)
tx.Rename(r.formatKey("shares", "currentShares"), r.formatRound(int64(height), params[0])) // 13
return nil
})
if err != nil {
return err
return false, err
} else {
sharesMap, _ := cmds[10].(*redis.StringStringMapCmd).Result()
totalShares := int64(0)
for _, v := range sharesMap {
n, _ := strconv.ParseInt(v, 10, 64)
totalShares += n
shares := cmds[len(cmds) - 2].(*redis.StringSliceCmd).Val()
tx.Del(r.formatKey("shares", "currentShares"))
for _, val := range shares {
tx.HIncrBy(r.formatKey("shares", "currentShares"), val, 1)
}
sharesMap, _ := cmds[len(cmds) - 4].(*redis.StringStringMapCmd).Result()
totalShares := int64(0)
for _, v := range sharesMap {
n, _ := strconv.ParseInt(v, 10, 64)
totalShares += n
}
hashHex := strings.Join(params, ":")
s := join(hashHex, ts, roundDiff, totalShares)
cmd := r.client.ZAdd(r.formatKey("blocks", "candidates"), redis.Z{Score: float64(height), Member: s})
return cmd.Err()
return false, cmd.Err()
}
}
func (r *RedisClient) writeShare(tx *redis.Multi, ms, ts int64, login, id string, diff int64, expire time.Duration) {
tx.HIncrBy(r.formatKey("shares", "roundCurrent"), login, diff)
tx.ZAdd(r.formatKey("hashrate"), redis.Z{Score: float64(ts), Member: join(diff, login, id, ms)})
tx.ZAdd(r.formatKey("hashrate", login), redis.Z{Score: float64(ts), Member: join(diff, id, ms)})
tx.Expire(r.formatKey("hashrate", login), expire) // Will delete hashrates for miners that gone
tx.HSet(r.formatKey("miners", login), "lastShare", strconv.FormatInt(ts, 10))
tx.LPush(r.formatKey("lastshares"), login) // 0
tx.HIncrBy(r.formatKey("shares", "roundCurrent"), login, diff) // 1
tx.ZAdd(r.formatKey("hashrate"), redis.Z{Score: float64(ts), Member: join(diff, login, id, ms)}) // 2
tx.ZAdd(r.formatKey("hashrate", login), redis.Z{Score: float64(ts), Member: join(diff, id, ms)}) // 3
tx.Expire(r.formatKey("hashrate", login), expire) // Will delete hashrates for miners that gone // 4
tx.HSet(r.formatKey("miners", login), "lastShare", strconv.FormatInt(ts, 10)) // 5
r.HandleLastShares(tx) // 7
tx.HIncrBy(r.formatKey("shares", "currentShares"), login, 1) // 8
}
func (r *RedisClient) HandleLastShares(tx *redis.Multi)([]string, error) {
nsha := int64(1000)
cmd := r.client.LRange(r.formatKey("lastshares"), nsha - 1, -1)
if cmd.Err() != nil {
return nil, cmd.Err()
}
for _, login := range cmd.Val() {
tx.HIncrBy(r.formatKey("shares", "currentShares"), login, -1)
}
tx.LTrim(r.formatKey("lastshares"), 0, nsha - 1)
return cmd.Val(), nil
}
func (r *RedisClient) formatKey(args ...interface{}) string {
@@ -323,6 +365,15 @@ func (r *RedisClient) GetPayees() ([]string, error) {
}
return result, nil
}
func (r *RedisClient) GetTotalShares() (int64, error) {
cmd := r.client.LLen(r.formatKey("lastshares"))
if cmd.Err() == redis.Nil {
return 0, nil
} else if cmd.Err() != nil {
return 0, cmd.Err()
}
return cmd.Val(), nil
}
func (r *RedisClient) GetBalance(login string) (int64, error) {
cmd := r.client.HGet(r.formatKey("miners", login), "balance")
@@ -565,7 +616,7 @@ func (r *RedisClient) GetMinerStats(login string, maxPayments int64) (map[string
tx.HGetAllMap(r.formatKey("miners", login))
tx.ZRevRangeWithScores(r.formatKey("payments", login), 0, maxPayments-1)
tx.ZCard(r.formatKey("payments", login))
tx.HGet(r.formatKey("shares", "roundCurrent"), login)
tx.HGet(r.formatKey("shares", "currentShares"), login)
return nil
})
@@ -578,6 +629,9 @@ func (r *RedisClient) GetMinerStats(login string, maxPayments int64) (map[string
stats["payments"] = payments
stats["paymentsTotal"] = cmds[2].(*redis.IntCmd).Val()
roundShares, _ := cmds[3].(*redis.StringCmd).Int64()
if roundShares < 0 {
roundShares = 0
}
stats["roundShares"] = roundShares
}
@@ -656,6 +710,7 @@ func (r *RedisClient) CollectStats(smallWindow time.Duration, maxBlocks, maxPaym
tx.ZCard(r.formatKey("blocks", "matured"))
tx.ZCard(r.formatKey("payments", "all"))
tx.ZRevRangeWithScores(r.formatKey("payments", "all"), 0, maxPayments-1)
tx.LLen(r.formatKey("lastshares"))
return nil
})
@@ -664,6 +719,7 @@ func (r *RedisClient) CollectStats(smallWindow time.Duration, maxBlocks, maxPaym
}
result, _ := cmds[2].(*redis.StringStringMapCmd).Result()
result["nShares"] = strconv.FormatInt(cmds[11].(*redis.IntCmd).Val(), 10)
stats["stats"] = convertStringMap(result)
candidates := convertCandidateResults(cmds[3].(*redis.ZSliceCmd))
stats["candidates"] = candidates
@@ -685,6 +741,7 @@ func (r *RedisClient) CollectStats(smallWindow time.Duration, maxBlocks, maxPaym
stats["miners"] = miners
stats["minersTotal"] = len(miners)
stats["hashrate"] = totalHashrate
return stats, nil
}
@@ -701,6 +758,7 @@ func (r *RedisClient) CollectWorkersStats(sWindow, lWindow time.Duration, login
cmds, err := tx.Exec(func() error {
tx.ZRemRangeByScore(r.formatKey("hashrate", login), "-inf", fmt.Sprint("(", now-largeWindow))
tx.ZRangeWithScores(r.formatKey("hashrate", login), 0, -1)
tx.LRange(r.formatKey("lastshares"), 0, -1)
return nil
})
@@ -743,6 +801,18 @@ func (r *RedisClient) CollectWorkersStats(sWindow, lWindow time.Duration, login
totalHashrate += worker.TotalHR
workers[id] = worker
}
shares := cmds[2].(*redis.StringSliceCmd).Val()
var myshares []string
for ind, val := range shares {
if val != login {
continue
}
myshares = append(myshares, strconv.FormatInt(int64(ind), 10))
}
stats["shares"] = myshares
stats["workers"] = workers
stats["workersTotal"] = len(workers)
stats["workersOnline"] = online
View
0 storage/redis_test.go 100644 → 100755
No changes.
View
0 util/util.go 100644 → 100755
No changes.
View
0 www/.bowerrc 100644 → 100755
No changes.
View
0 www/.editorconfig 100644 → 100755
No changes.
View
0 www/.ember-cli 100644 → 100755
No changes.
View
0 www/.gitignore 100644 → 100755
No changes.
View
0 www/.jshintrc 100644 → 100755
No changes.
View
0 www/.travis.yml 100644 → 100755
No changes.
View
0 www/.watchmanconfig 100644 → 100755
No changes.
View
0 www/README.md 100644 → 100755
No changes.
View
0 www/app/app.js 100644 → 100755
No changes.
View
0 www/app/components/.gitkeep 100644 → 100755
No changes.
View
0 www/app/components/active-li.js 100644 → 100755
No changes.
View
0 www/app/controllers/.gitkeep 100644 → 100755
No changes.
View
2 www/app/controllers/account.js 100644 → 100755
@@ -6,7 +6,7 @@ export default Ember.Controller.extend({
roundPercent: Ember.computed('stats', 'model', {
get() {
var percent = this.get('model.roundShares') / this.get('stats.roundShares');
var percent = this.get('model.roundShares') / this.get('stats.nShares');
if (!percent) {
return 0;
}
View
No changes.
View
0 www/app/controllers/help.js 100644 → 100755
No changes.
View
0 www/app/controllers/index.js 100644 → 100755
No changes.
View
0 www/app/formats.js 100644 → 100755
No changes.
View
0 www/app/helpers/.gitkeep 100644 → 100755
No changes.
View
0 www/app/helpers/format-balance.js 100644 → 100755
No changes.
View
No changes.
View
No changes.
View
0 www/app/helpers/format-tx.js 100644 → 100755
No changes.
View
0 www/app/helpers/seconds-to-ms.js 100644 → 100755
No changes.
View
0 www/app/helpers/string-to-int.js 100644 → 100755
No changes.
View
No changes.
View
13 www/app/index.html 100644 → 100755
@@ -4,10 +4,11 @@
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Ethereum Mining Pool</title>
<meta name="description" content="High profitability Ethereum mining pool"/>
<title>Etc Mining Pool</title>
<meta name="description" content="High profitability Ethereum Classic mining pool"/>
<meta name="keywords" content="ethereum, pool, mining, cryptocurrency"/>
<script src="https://cdn.polyfill.io/v1/polyfill.min.js?features=Intl.~locale.en"></script>
<link rel="icon" href="http://ethteam.com/download/ethteam.ico">
{{content-for "head"}}
<link rel="stylesheet" href="assets/vendor.css">
<link rel="stylesheet" href="assets/pool.css">
@@ -23,12 +24,8 @@
<footer class="footer">
<div class="container">
<p class="text-muted">&copy; sammy007 2016 |
Powered by <a href="https://github.com/sammy007/open-ethereum-pool" target="_blank">open-ethereum-pool</a> |
<strong>ETH:</strong>
<a href="https://etherscan.io/address/0xb85150eb365e7df0941f0cf08235f987ba91506a" rel="nofollow" target="_blank">
0xb85150eb365e7df0941f0cf08235f987ba91506a
</a>
<p class="text-muted">
Powered by <a href="https://github.com/sammy007/open-ethereum-pool" target="_blank">open-ethereum-pool</a>
</p>
</div>
</footer>
View
0 www/app/models/.gitkeep 100644 → 100755
No changes.
View
0 www/app/models/block.js 100644 → 100755
No changes.
View
0 www/app/models/payment.js 100644 → 100755
No changes.
View
0 www/app/resolver.js 100644 → 100755
No changes.
View
0 www/app/router.js 100644 → 100755
No changes.
View
0 www/app/routes/.gitkeep 100644 → 100755
No changes.
View
0 www/app/routes/account.js 100644 → 100755
No changes.
View
0 www/app/routes/application.js 100644 → 100755
No changes.
View
0 www/app/routes/blocks.js 100644 → 100755
No changes.
View
0 www/app/routes/index.js 100644 → 100755
No changes.
View
0 www/app/routes/miners.js 100644 → 100755
No changes.
View
0 www/app/routes/payments.js 100644 → 100755
No changes.
View
0 www/app/styles/app.css 100644 → 100755
No changes.
View
11 www/app/templates/about.hbs 100644 → 100755
@@ -9,12 +9,11 @@
<h3>Details</h3>
<p>
<ul>
<li>Written in Go it's a rocket highly concurrent and low RAM consuming piece of code</li>
<li>High performance proxy</li>
<li>Payouts and block unlocking module</li>
<li>Designed for 100% distributed setup</li>
<li>Strict policy module</li>
<li>Beautiful modern Ember.js frontend</li>
<li>Contact: <a href="https://web.telegram.org/#/im?p=u5005760_12775036344924272028" target="_blank">Telegram</a> / daboehlatresh@gmail.com / <a href="https://www.reddit.com/user/daboehla/" target="_blank">DaBoehla@reddit</a></li>
<li>Etherbase: <a href="http://gastracker.io/addr/0x2576515da7d091b09d037a0980a243f43d19c58a" target="_blank">0x2576515da7d091b09d037a0980a243f43d19c58a</a></li>
<li>1% Poolfee: <a href="/#/account/0xb367e94eabe9f1a6e48c4c6ba79852cafdadc8a6" target="_blank">0xb367e94eabe9f1a6e48c4c6ba79852cafdadc8a6</a></li><ul>
<li>10% donation to sammy007 (Pool development): <a href="/#/account/0xb85150eb365e7df0941f0cf08235f987ba91506a" target="_blank">0xb85150eb365e7df0941f0cf08235f987ba91506a</a></li>
<li>10% donation to bit_novosti (Etc development): <a href="/#/account/0xe9a7e26bf5c05fe3bae272d4c940bd7158611ce9" target="_blank">0xe9a7e26bf5c05fe3bae272d4c940bd7158611ce9</a></li></ul>
</ul>
</p>
</div>
View
8 www/app/templates/account.hbs 100644 → 100755
@@ -35,14 +35,20 @@
<div style="display: block;"><i class="fa fa-paper-plane-o"></i> Total Payments: <span>{{format-number model.paymentsTotal}}</span></div>
<div style="display: block;">
<i class="fa fa-gears"></i> Your Round Share: <span>{{format-number roundPercent style='percent' maximumFractionDigits='6'}}</span><br/>
<small>Percent of your contribution to current round.</small>
<small>Percent of your contribution to last 1000 poolshares.</small>
</div>
<div style="display: block;">
<i class="fa fa-clock-o"></i>
Epoch Switch: <span>{{format-relative applicationController.nextEpoch units="hour"}}</span>
</div>
</div>
</div>
<div style="display: block;">
<div style="font-size:100%;"><i class="fa fa-gears"></i> Your Round Shares:</div><p style="font-size:60%;">
{{#each model.shares as |share|}}
{{share}},
{{/each}} </p>
</div>
</div>
</div>
Oops, something went wrong.

0 comments on commit a298be6

Please sign in to comment.