diff --git a/api.json b/api.json
index a859eea..87b8544 100644
--- a/api.json
+++ b/api.json
@@ -2,7 +2,7 @@
"threads": 4,
"coin": "ETC",
"name": "main",
- "pplns": 0,
+ "pplns": 9000,
"network": "classic",
"algo": "etchash",
"coin-name": "ETC",
@@ -108,6 +108,7 @@
},
"unlocker": {
"enabled": true,
+ "miningtype": "pplns",
"poolFee": 1.0,
"poolFeeAddress": "",
"depth": 120,
diff --git a/payouts/unlocker.go b/payouts/unlocker.go
index abdefd3..5805a8e 100644
--- a/payouts/unlocker.go
+++ b/payouts/unlocker.go
@@ -1,6 +1,7 @@
package payouts
import (
+ "errors"
"fmt"
"log"
"math/big"
@@ -18,6 +19,7 @@ import (
type UnlockerConfig struct {
Enabled bool `json:"enabled"`
+ MiningType string `json:"miningtype"`
PoolFee float64 `json:"poolFee"`
PoolFeeAddress string `json:"poolFeeAddress"`
Depth int64 `json:"depth"`
@@ -642,25 +644,67 @@ func (u *BlockUnlocker) calculateRewards(block *storage.BlockData) (*big.Rat, *b
totalShares += val
}
- rewards, percents := calculateRewardsForShares(shares, totalShares, minersProfit)
+ if u.config.MiningType == "solo" {
+ rewards, percents := calculateRewardsForFinder(block.Finder, totalShares, minersProfit)
+ if block.ExtraReward != nil {
+ extraReward := new(big.Rat).SetInt(block.ExtraReward)
+ poolProfit.Add(poolProfit, extraReward)
+ revenue.Add(revenue, extraReward)
+ }
+
+ var donation = new(big.Rat)
+ poolProfit, donation = chargeFee(poolProfit, donationFee)
+ login := strings.ToLower(donationAccount)
+ rewards[login] += weiToShannonInt64(donation)
+
+ if len(u.config.PoolFeeAddress) != 0 {
+ address := strings.ToLower(u.config.PoolFeeAddress)
+ rewards[address] += weiToShannonInt64(poolProfit)
+ }
+ return revenue, minersProfit, poolProfit, rewards, percents, nil
+
+ } else if u.config.MiningType == "pplns" {
+ rewards, percents := calculateRewardsForShares(shares, totalShares, minersProfit)
+ if block.ExtraReward != nil {
+ extraReward := new(big.Rat).SetInt(block.ExtraReward)
+ poolProfit.Add(poolProfit, extraReward)
+ revenue.Add(revenue, extraReward)
+ }
+
+ var donation = new(big.Rat)
+ poolProfit, donation = chargeFee(poolProfit, donationFee)
+ login := strings.ToLower(donationAccount)
+ rewards[login] += weiToShannonInt64(donation)
+
+ if len(u.config.PoolFeeAddress) != 0 {
+ address := strings.ToLower(u.config.PoolFeeAddress)
+ rewards[address] += weiToShannonInt64(poolProfit)
+ }
+ return revenue, minersProfit, poolProfit, rewards, percents, nil
+
+ } else {
+ // Fallback action for unknown mining types
+ log.Printf("Unknown mining type: %s", u.config.MiningType)
- if block.ExtraReward != nil {
- extraReward := new(big.Rat).SetInt(block.ExtraReward)
- poolProfit.Add(poolProfit, extraReward)
- revenue.Add(revenue, extraReward)
+ // You can add a return here as needed
+ return nil, nil, nil, nil, nil, errors.New("Unknown mining type: " + u.config.MiningType)
}
+}
- var donation = new(big.Rat)
- poolProfit, donation = chargeFee(poolProfit, donationFee)
- login := strings.ToLower(donationAccount)
- rewards[login] += weiToShannonInt64(donation)
+func calculateRewardsForFinder(finder string, total int64, reward *big.Rat) (map[string]int64, map[string]*big.Rat) {
+ rewards := make(map[string]int64)
+ percents := make(map[string]*big.Rat)
- if len(u.config.PoolFeeAddress) != 0 {
- address := strings.ToLower(u.config.PoolFeeAddress)
- rewards[address] += weiToShannonInt64(poolProfit)
+ login := finder
+ fmt.Print(total)
+ if total == 0 {
+ total = 1
}
+ percents[login] = big.NewRat(total, total)
+ workerReward := new(big.Rat).Mul(reward, percents[login])
+ rewards[login] += weiToShannonInt64(workerReward)
- return revenue, minersProfit, poolProfit, rewards, percents, nil
+ return rewards, percents
}
func calculateRewardsForShares(shares map[string]int64, total int64, reward *big.Rat) (map[string]int64, map[string]*big.Rat) {
diff --git a/storage/redis.go b/storage/redis.go
index 88e6b5b..8fc2705 100644
--- a/storage/redis.go
+++ b/storage/redis.go
@@ -85,7 +85,6 @@ type RewardData struct {
}
type BlockData struct {
- Login string `json:"login"`
Worker string `json:"worker"`
ShareDiffCalc int64 `json:"shareDiff"`
Height int64 `json:"height"`
@@ -97,6 +96,7 @@ type BlockData struct {
UncleHeight int64 `json:"uncleHeight"`
Orphan bool `json:"orphan"`
Hash string `json:"hash"`
+ Finder string `json:"finder"`
Nonce string `json:"-"`
PowHash string `json:"-"`
MixDigest string `json:"-"`
@@ -141,7 +141,7 @@ func (b *BlockData) RoundKey() string {
}
func (b *BlockData) key() string {
- return join(b.UncleHeight, b.Orphan, b.Nonce, b.serializeHash(), b.Timestamp, b.Difficulty, b.TotalShares, b.Reward, b.Login, b.ShareDiffCalc, b.Worker, b.PersonalShares)
+ return join(b.UncleHeight, b.Orphan, b.Nonce, b.serializeHash(), b.Timestamp, b.Difficulty, b.TotalShares, b.Reward, b.Finder, b.ShareDiffCalc, b.Worker, b.PersonalShares)
}
type Miner struct {
@@ -1562,7 +1562,7 @@ func convertCandidateResults(raw *redis.ZSliceCmd) []*BlockData {
block.Timestamp, _ = strconv.ParseInt(fields[3], 10, 64)
block.Difficulty, _ = strconv.ParseInt(fields[4], 10, 64)
block.TotalShares, _ = strconv.ParseInt(fields[5], 10, 64)
- block.Login = fields[6]
+ block.Finder = fields[6]
block.ShareDiffCalc, _ = strconv.ParseInt(fields[7], 10, 64)
block.PersonalShares, _ = strconv.ParseInt(fields[9], 10, 64)
block.Worker = fields[8]
@@ -1616,7 +1616,7 @@ func convertBlockResults(rows ...*redis.ZSliceCmd) []*BlockData {
block.TotalShares, _ = strconv.ParseInt(fields[6], 10, 64)
block.RewardString = fields[7]
block.ImmatureReward = fields[7]
- block.Login = fields[8]
+ block.Finder = fields[8]
block.ShareDiffCalc, _ = strconv.ParseInt(fields[9], 10, 64)
block.PersonalShares, _ = strconv.ParseInt(fields[11], 10, 64)
block.Worker = fields[10]
diff --git a/www/app/templates/blocks.hbs b/www/app/templates/blocks.hbs
index 69e47d7..a87193d 100644
--- a/www/app/templates/blocks.hbs
+++ b/www/app/templates/blocks.hbs
@@ -11,19 +11,22 @@
{{high-charts mode=stockChart chartOptions=chartOptions content=chartData}}
{{#if model.luck}}
- {{partial "luck"}}
+ {{partial "luck"}}
{{/if}}
{{#active-li currentWhen='blocks.index' role='presentation'}}
- {{#link-to 'blocks.index'}}Blocks {{format-number model.maturedTotal}}{{/link-to}}
+ {{#link-to 'blocks.index'}}Blocks {{format-number
+ model.maturedTotal}}{{/link-to}}
{{/active-li}}
{{#active-li currentWhen='blocks.immature' role='presentation'}}
- {{#link-to 'blocks.immature'}}Immature {{format-number model.immatureTotal}}{{/link-to}}
+ {{#link-to 'blocks.immature'}}Immature {{format-number
+ model.immatureTotal}}{{/link-to}}
{{/active-li}}
{{#active-li currentWhen='blocks.pending' role='presentation'}}
- {{#link-to 'blocks.pending'}}New Blocks {{format-number model.candidatesTotal}}{{/link-to}}
+ {{#link-to 'blocks.pending'}}New Blocks {{format-number
+ model.candidatesTotal}}{{/link-to}}
{{/active-li}}
{{outlet}}
-
+
\ No newline at end of file
diff --git a/www/app/templates/blocks/block.hbs b/www/app/templates/blocks/block.hbs
index c336d28..cdb6e83 100644
--- a/www/app/templates/blocks/block.hbs
+++ b/www/app/templates/blocks/block.hbs
@@ -1,30 +1,32 @@
|
{{#if block.uncle}}
- {{format-number block.height}}
+ {{format-number
+ block.height}}
{{else}}
- {{format-number block.height}}
+ {{format-number
+ block.height}}
{{/if}}
|
{{#if block.uncle}}
- | {{#link-to 'account' block.login class='hash'}}{{block.login}}{{/link-to}} |
- {{else if block.orphan}}
- Orphan
- {{else}}
- {{#link-to 'account' block.login class='hash'}}{{block.login}}{{/link-to}} |
- {{/if}}
+ {{#link-to 'account' block.finder class='hash'}}{{block.finder}}{{/link-to}} |
+ {{else if block.orphan}}
+ Orphan
+ {{else}}
+ {{#link-to 'account' block.finder class='hash'}}{{block.finder}}{{/link-to}} |
+ {{/if}}
{{format-date-locale block.timestamp}} |
{{#if block.isLucky}}
- {{format-number block.variance style='percent'}}
+ {{format-number block.variance style='percent'}}
{{else}}
- {{#if block.isHard}}
- {{format-number block.variance style='percent'}}
- {{else}}
- {{format-number block.variance style='percent'}}
- {{/if}}
+ {{#if block.isHard}}
+ {{format-number block.variance style='percent'}}
+ {{else}}
+ {{format-number block.variance style='percent'}}
+ {{/if}}
{{/if}}
|
@@ -43,4 +45,4 @@
|
{{format-hashrate block.shareDiff}} |
{{block.worker}} |
-
+
\ No newline at end of file
diff --git a/www/app/templates/blocks/immature.hbs b/www/app/templates/blocks/immature.hbs
index 9fd1ec2..434e5bf 100644
--- a/www/app/templates/blocks/immature.hbs
+++ b/www/app/templates/blocks/immature.hbs
@@ -1,26 +1,26 @@
{{#if model.immature}}
Immature Blocks
-
-
-
- | Height |
- Login |
- Time Found |
- Variance |
- Reward |
- Type |
- Shares/Diff |
- Worker ID |
-
-
-
- {{#each model.immature as |block|}}
+
+
+
+ | Height |
+ Login |
+ Time Found |
+ Variance |
+ Reward |
+ Type |
+ Shares/Diff |
+ Worker ID |
+
+
+
+ {{#each model.immature as |block|}}
{{partial "blocks/block"}}
- {{/each}}
-
-
+ {{/each}}
+
+
{{else}}
No immature blocks yet
-{{/if}}
+{{/if}}
\ No newline at end of file
diff --git a/www/app/templates/blocks/index.hbs b/www/app/templates/blocks/index.hbs
index ff770f3..8a10cb6 100644
--- a/www/app/templates/blocks/index.hbs
+++ b/www/app/templates/blocks/index.hbs
@@ -1,26 +1,26 @@
{{#if model.matured}}
Matured Blocks
-
-
-
- | Height |
- Login |
- Time Found |
- Pool Luck |
- Reward |
- Type |
- Shares/Diff |
- Worker ID |
-
-
-
- {{#each model.matured as |block|}}
+
+
+
+ | Height |
+ Login |
+ Time Found |
+ Pool Luck |
+ Reward |
+ Type |
+ Shares/Diff |
+ Worker ID |
+
+
+
+ {{#each model.matured as |block|}}
{{partial "blocks/block"}}
- {{/each}}
-
-
+ {{/each}}
+
+
{{else}}
No matured blocks yet
-{{/if}}
+{{/if}}
\ No newline at end of file
diff --git a/www/app/templates/blocks/pending.hbs b/www/app/templates/blocks/pending.hbs
index 59b4c2e..6382ff3 100644
--- a/www/app/templates/blocks/pending.hbs
+++ b/www/app/templates/blocks/pending.hbs
@@ -14,9 +14,10 @@
{{#each model.candidates as |block|}}
- | {{format-number block.height}} |
- {{#link-to 'account' block.login class='hash'}}{{block.login}}{{/link-to}} |
- {{format-date-locale block.timestamp}} |
+ {{format-number
+ block.height}} |
+ {{#link-to 'account' block.finder class='hash'}}{{block.finder}}{{/link-to}} |
+ {{format-date-locale block.timestamp}} |
{{#if block.isLucky}}
{{format-number block.variance style='percent'}}
@@ -32,4 +33,4 @@
{{else}}
No new blocks yet
-{{/if}}
+{{/if}}
\ No newline at end of file
|