pool-stats/models/share_log.go
pk d836830f45 refactor-code-modules (#1)
Co-authored-by: openhands <openhands@all-hands.dev>
Co-authored-by: Pijus Kamandulis <pkpjuklas@gmail.com>
Reviewed-on: #1
2025-05-27 19:30:11 +01:00

47 lines
1.8 KiB
Go

package models
import (
"fmt"
"time"
)
type ShareLog struct {
WorkInfoID uint64 `json:"workinfoid"` // ID of the associated work unit
ClientID int `json:"clientid"` // ID of the client/miner connection
Enonce1 string `json:"enonce1"` // Extra nonce 1 (assigned by pool)
Nonce2 string `json:"nonce2"` // Extra nonce 2 (sent by miner)
Nonce string `json:"nonce"` // Nonce used to generate the solution
NTime string `json:"ntime"` // Network time used in the block
Diff float64 `json:"diff"` // Target difficulty for the share
SDiff float64 `json:"sdiff"` // Share difficulty achieved
Hash string `json:"hash"` // Resulting hash from the share
Result bool `json:"result"` // Was this share a valid result
Errn int `json:"errn"` // Error code (0 = no error)
CreateDate string `json:"createdate"` // Timestamp: "seconds,nanoseconds"
CreateBy string `json:"createby"` // Origin of share creation ("code")
CreateCode string `json:"createcode"` // Component that created this entry
CreateInet string `json:"createinet"` // IP + port of submit origin
WorkerName string `json:"workername"` // Full worker name (username.worker)
Username string `json:"username"` // User's Bitcoin address
Address string `json:"address"` // IP address of the worker
Agent string `json:"agent"` // Miner agent string (e.g., bitaxe/BM1370)
}
type ShareStat struct {
Label string
Diff string
Time string
}
// ParseCreateDate can be used to convert ShareLog.CreateDate to time.Time
func (s *ShareLog) ParseCreateDate() (time.Time, error) {
var sec, nsec int64
_, err := fmt.Sscanf(s.CreateDate, "%d,%d", &sec, &nsec)
if err != nil {
return time.Time{}, err
}
return time.Unix(sec, nsec), nil
}