Co-authored-by: openhands <openhands@all-hands.dev> Co-authored-by: Pijus Kamandulis <pkpjuklas@gmail.com> Reviewed-on: #1
47 lines
1.8 KiB
Go
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
|
|
}
|