|
|
|
@ -53,8 +53,6 @@ type SumRewardData struct { |
|
|
|
Offset int64 `json:"offset"` |
|
|
|
Offset int64 `json:"offset"` |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
type RewardData struct { |
|
|
|
type RewardData struct { |
|
|
|
Height int64 `json:"blockheight"` |
|
|
|
Height int64 `json:"blockheight"` |
|
|
|
Timestamp int64 `json:"timestamp"` |
|
|
|
Timestamp int64 `json:"timestamp"` |
|
|
|
@ -203,7 +201,11 @@ func convertPoolChartsResults(raw *redis.ZSliceCmd) []*PoolCharts { |
|
|
|
pc.PoolHash, _ = strconv.ParseInt(str[strings.LastIndex(str, ":")+1:], 10, 64) |
|
|
|
pc.PoolHash, _ = strconv.ParseInt(str[strings.LastIndex(str, ":")+1:], 10, 64) |
|
|
|
result = append(result, &pc) |
|
|
|
result = append(result, &pc) |
|
|
|
} |
|
|
|
} |
|
|
|
return result |
|
|
|
var reverse []*PoolCharts |
|
|
|
|
|
|
|
for i := len(result) - 1; i >= 0; i-- { |
|
|
|
|
|
|
|
reverse = append(reverse, result[i]) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
return reverse |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
func convertMinerChartsResults(raw *redis.ZSliceCmd) []*MinerCharts { |
|
|
|
func convertMinerChartsResults(raw *redis.ZSliceCmd) []*MinerCharts { |
|
|
|
@ -219,7 +221,11 @@ func convertMinerChartsResults(raw *redis.ZSliceCmd) []*MinerCharts { |
|
|
|
mc.WorkerOnline = strings.Split(str, ":")[4] |
|
|
|
mc.WorkerOnline = strings.Split(str, ":")[4] |
|
|
|
result = append(result, &mc) |
|
|
|
result = append(result, &mc) |
|
|
|
} |
|
|
|
} |
|
|
|
return result |
|
|
|
var reverse []*MinerCharts |
|
|
|
|
|
|
|
for i := len(result) - 1; i >= 0; i-- { |
|
|
|
|
|
|
|
reverse = append(reverse, result[i]) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
return reverse |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
func (r *RedisClient) GetAllMinerAccount() (account []string, err error) { |
|
|
|
func (r *RedisClient) GetAllMinerAccount() (account []string, err error) { |
|
|
|
@ -379,7 +385,7 @@ func (r *RedisClient) WriteBlock(login, id string, params []string, diff, roundD |
|
|
|
return false, err |
|
|
|
return false, err |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
|
|
|
|
|
|
|
|
shares := cmds[len(cmds) - 1].(*redis.StringSliceCmd).Val() |
|
|
|
shares := cmds[len(cmds)-1].(*redis.StringSliceCmd).Val() |
|
|
|
|
|
|
|
|
|
|
|
tx2 := r.client.Multi() |
|
|
|
tx2 := r.client.Multi() |
|
|
|
defer tx2.Close() |
|
|
|
defer tx2.Close() |
|
|
|
@ -399,7 +405,7 @@ func (r *RedisClient) WriteBlock(login, id string, params []string, diff, roundD |
|
|
|
return false, err |
|
|
|
return false, err |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
sharesMap, _ := cmds[len(cmds) - 3].(*redis.StringStringMapCmd).Result() |
|
|
|
sharesMap, _ := cmds[len(cmds)-3].(*redis.StringStringMapCmd).Result() |
|
|
|
totalShares := int64(0) |
|
|
|
totalShares := int64(0) |
|
|
|
for _, v := range sharesMap { |
|
|
|
for _, v := range sharesMap { |
|
|
|
n, _ := strconv.ParseInt(v, 10, 64) |
|
|
|
n, _ := strconv.ParseInt(v, 10, 64) |
|
|
|
@ -664,7 +670,7 @@ func (r *RedisClient) WritePayment(login, txHash string, amount int64) error { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
func (r *RedisClient) WriteReward(login string, amount int64, percent *big.Rat, immature bool, block *BlockData) error { |
|
|
|
func (r *RedisClient) WriteReward(login string, amount int64, percent *big.Rat, immature bool, block *BlockData) error { |
|
|
|
if (amount <= 0) { |
|
|
|
if amount <= 0 { |
|
|
|
return nil |
|
|
|
return nil |
|
|
|
} |
|
|
|
} |
|
|
|
tx := r.client.Multi() |
|
|
|
tx := r.client.Multi() |
|
|
|
@ -672,12 +678,12 @@ func (r *RedisClient) WriteReward(login string, amount int64, percent *big.Rat, |
|
|
|
|
|
|
|
|
|
|
|
addStr := join(amount, percent, immature, block.Hash, block.Height, block.Timestamp) |
|
|
|
addStr := join(amount, percent, immature, block.Hash, block.Height, block.Timestamp) |
|
|
|
remStr := join(amount, percent, !immature, block.Hash, block.Height, block.Timestamp) |
|
|
|
remStr := join(amount, percent, !immature, block.Hash, block.Height, block.Timestamp) |
|
|
|
remscore := block.Timestamp - 3600 * 24 * 40 // Store the last 40 Days
|
|
|
|
remscore := block.Timestamp - 3600*24*40 // Store the last 40 Days
|
|
|
|
|
|
|
|
|
|
|
|
_, err := tx.Exec(func() error { |
|
|
|
_, err := tx.Exec(func() error { |
|
|
|
tx.ZAdd(r.formatKey("rewards", login), redis.Z{Score: float64(block.Timestamp), Member: addStr}) |
|
|
|
tx.ZAdd(r.formatKey("rewards", login), redis.Z{Score: float64(block.Timestamp), Member: addStr}) |
|
|
|
tx.ZRem(r.formatKey("rewards", login), remStr) |
|
|
|
tx.ZRem(r.formatKey("rewards", login), remStr) |
|
|
|
tx.ZRemRangeByScore(r.formatKey("rewards", login), "-inf", "(" + strconv.FormatInt(remscore, 10)) |
|
|
|
tx.ZRemRangeByScore(r.formatKey("rewards", login), "-inf", "("+strconv.FormatInt(remscore, 10)) |
|
|
|
|
|
|
|
|
|
|
|
return nil |
|
|
|
return nil |
|
|
|
}) |
|
|
|
}) |
|
|
|
@ -741,7 +747,7 @@ func (r *RedisClient) WriteMaturedBlock(block *BlockData, roundRewards map[strin |
|
|
|
tx.HSet(r.formatKey("finances"), "lastCreditHeight", strconv.FormatInt(block.Height, 10)) |
|
|
|
tx.HSet(r.formatKey("finances"), "lastCreditHeight", strconv.FormatInt(block.Height, 10)) |
|
|
|
tx.HSet(r.formatKey("finances"), "lastCreditHash", block.Hash) |
|
|
|
tx.HSet(r.formatKey("finances"), "lastCreditHash", block.Hash) |
|
|
|
tx.HIncrBy(r.formatKey("finances"), "totalMined", block.RewardInShannon()) |
|
|
|
tx.HIncrBy(r.formatKey("finances"), "totalMined", block.RewardInShannon()) |
|
|
|
tx.Expire(r.formatKey("credits", block.Height, block.Hash), 604800 * time.Second) |
|
|
|
tx.Expire(r.formatKey("credits", block.Height, block.Hash), 604800*time.Second) |
|
|
|
return nil |
|
|
|
return nil |
|
|
|
}) |
|
|
|
}) |
|
|
|
return err |
|
|
|
return err |
|
|
|
@ -1017,20 +1023,18 @@ func (r *RedisClient) CollectWorkersStats(sWindow, lWindow time.Duration, login |
|
|
|
stats["rewards"] = convertRewardResults(cmds[2].(*redis.ZSliceCmd)) // last 40
|
|
|
|
stats["rewards"] = convertRewardResults(cmds[2].(*redis.ZSliceCmd)) // last 40
|
|
|
|
rewards := convertRewardResults(cmds[3].(*redis.ZSliceCmd)) // all
|
|
|
|
rewards := convertRewardResults(cmds[3].(*redis.ZSliceCmd)) // all
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var dorew []*SumRewardData |
|
|
|
var dorew []*SumRewardData |
|
|
|
dorew = append(dorew, &SumRewardData{ Name: "Last 60 minutes", Interval: 3600, Offset: 0 }) |
|
|
|
dorew = append(dorew, &SumRewardData{Name: "Last 60 minutes", Interval: 3600, Offset: 0}) |
|
|
|
dorew = append(dorew, &SumRewardData{ Name: "Last 12 hours", Interval: 3600 * 12, Offset: 0 }) |
|
|
|
dorew = append(dorew, &SumRewardData{Name: "Last 12 hours", Interval: 3600 * 12, Offset: 0}) |
|
|
|
dorew = append(dorew, &SumRewardData{ Name: "Last 24 hours", Interval: 3600 * 24, Offset: 0 }) |
|
|
|
dorew = append(dorew, &SumRewardData{Name: "Last 24 hours", Interval: 3600 * 24, Offset: 0}) |
|
|
|
dorew = append(dorew, &SumRewardData{ Name: "Last 7 days", Interval: 3600 * 24 * 7, Offset: 0 }) |
|
|
|
dorew = append(dorew, &SumRewardData{Name: "Last 7 days", Interval: 3600 * 24 * 7, Offset: 0}) |
|
|
|
dorew = append(dorew, &SumRewardData{ Name: "Last 30 days", Interval: 3600 * 24 * 30, Offset: 0 }) |
|
|
|
dorew = append(dorew, &SumRewardData{Name: "Last 30 days", Interval: 3600 * 24 * 30, Offset: 0}) |
|
|
|
|
|
|
|
|
|
|
|
for _, reward := range rewards { |
|
|
|
for _, reward := range rewards { |
|
|
|
|
|
|
|
|
|
|
|
for _,dore := range dorew { |
|
|
|
for _, dore := range dorew { |
|
|
|
dore.Reward += 0 |
|
|
|
dore.Reward += 0 |
|
|
|
if reward.Timestamp > now - dore.Interval { |
|
|
|
if reward.Timestamp > now-dore.Interval { |
|
|
|
dore.Reward += reward.Reward |
|
|
|
dore.Reward += reward.Reward |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
@ -1253,6 +1257,10 @@ func convertPaymentsResults(raw *redis.ZSliceCmd) []map[string]interface{} { |
|
|
|
} |
|
|
|
} |
|
|
|
result = append(result, tx) |
|
|
|
result = append(result, tx) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
var reverse []map[string]interface{} |
|
|
|
|
|
|
|
for i := len(result) - 1; i >= 0; i-- { |
|
|
|
|
|
|
|
reverse = append(reverse, result[i]) |
|
|
|
|
|
|
|
} |
|
|
|
return result |
|
|
|
return result |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@ -1284,5 +1292,9 @@ func convertPaymentChartsResults(raw *redis.ZSliceCmd) []*PaymentCharts { |
|
|
|
result = append(result, &pc) |
|
|
|
result = append(result, &pc) |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
return result |
|
|
|
var reverse []*PaymentCharts |
|
|
|
|
|
|
|
for i := len(result) - 1; i >= 0; i-- { |
|
|
|
|
|
|
|
reverse = append(reverse, result[i]) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
return reverse |
|
|
|
} |
|
|
|
} |