Compare commits
4 Commits
61ef650960
...
eb446c13f6
Author | SHA1 | Date |
---|---|---|
|
eb446c13f6 | |
|
c16f231a58 | |
|
e6211c73d8 | |
|
cf1310f65e |
|
@ -0,0 +1,18 @@
|
|||
// alph.h
|
||||
|
||||
#ifndef BLAKE3_H
|
||||
#define BLAKE3_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stddef.h>
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
void alph_hash(unsigned char *output, const unsigned char *input);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif // BLAKE3_H
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,34 @@
|
|||
{
|
||||
"db": {
|
||||
"ip": "127.0.0.1",
|
||||
"port": 3306,
|
||||
"username":"m2pool",
|
||||
"password":"pMJzgwrg@Frt8aDXkQAsTGhG!zy!H8Jd",
|
||||
"dbname":"m2pooldb"
|
||||
},
|
||||
"shares": {
|
||||
"ip": "127.0.0.1",
|
||||
"port": 3306,
|
||||
"username":"m2pool",
|
||||
"password":"pMJzgwrg@Frt8aDXkQAsTGhG!zy!H8Jd",
|
||||
"dbname":"sharesdb"
|
||||
},
|
||||
"zap": {
|
||||
"level": "debug",
|
||||
"encoding": "json",
|
||||
"outputPaths": ["stdout", "./logs/db.log"],
|
||||
"errorOutputPaths": ["stderr"],
|
||||
"initialFields": {"server": "server"},
|
||||
"encoderConfig": {
|
||||
"messageKey": "message",
|
||||
"levelKey": "level",
|
||||
"levelEncoder": "lowercase"
|
||||
}
|
||||
},
|
||||
"logrotate": {
|
||||
"maxsize": 10,
|
||||
"maxbackups": 100,
|
||||
"maxage": 31,
|
||||
"compress": true
|
||||
}
|
||||
}
|
Binary file not shown.
|
@ -0,0 +1,49 @@
|
|||
{
|
||||
"coin": "alph",
|
||||
"alph": {
|
||||
"addr": "m2pool"
|
||||
},
|
||||
"rpc": {
|
||||
"host": "18.141.161.129",
|
||||
"port": "10973",
|
||||
"apiHost": "18.141.161.129",
|
||||
"apiPort": "12973",
|
||||
"apiKey": "0x09e220e226f2feb7a971a2b6f958e7d4b1c187c8",
|
||||
"testnet": "127.0.0.1:7229",
|
||||
"type": "mainnet",
|
||||
"user": "test",
|
||||
"pass": "test",
|
||||
"zmqsub": "tcp://127.0.0.1:21212",
|
||||
"timeout": 10000
|
||||
},
|
||||
"zmq": {
|
||||
"pub": "tcp://127.0.0.1:21213",
|
||||
"sub": "tcp://127.0.0.1:21214"
|
||||
},
|
||||
"redis": {
|
||||
"addr": "127.0.0.1:6379",
|
||||
"password": "",
|
||||
"db": 9
|
||||
},
|
||||
"profit": {
|
||||
"push": "tcp://127.0.0.1:21215"
|
||||
},
|
||||
"zap": {
|
||||
"level": "debug",
|
||||
"encoding": "json",
|
||||
"outputPaths": ["stdout", "/dev/null"],
|
||||
"errorOutputPaths": ["stdout"],
|
||||
"initialFields": {"gbt": "gbt"},
|
||||
"encoderConfig": {
|
||||
"messageKey": "message",
|
||||
"levelKey": "level",
|
||||
"levelEncoder": "lowercase"
|
||||
}
|
||||
},
|
||||
"logrotate": {
|
||||
"maxsize": 10,
|
||||
"maxbackups": 100,
|
||||
"maxage": 31,
|
||||
"compress": true
|
||||
}
|
||||
}
|
|
@ -0,0 +1,33 @@
|
|||
// gbt.go
|
||||
package main
|
||||
|
||||
import (
|
||||
"os"
|
||||
"pool/internal/db"
|
||||
"pool/internal/gbt"
|
||||
"pool/internal/utility"
|
||||
)
|
||||
|
||||
func start(coin string, DbCtx *db.DbContext) {
|
||||
|
||||
gbt.Start(coin, DbCtx)
|
||||
|
||||
}
|
||||
|
||||
func stop(coin string) {
|
||||
|
||||
gbt.Stop(coin)
|
||||
|
||||
}
|
||||
|
||||
func main() {
|
||||
coin := utility.GetCoin("gbt.conf")
|
||||
dbctx := db.InitDb(coin, "gbt")
|
||||
start(coin, dbctx)
|
||||
|
||||
stop(coin)
|
||||
|
||||
db.StopDb(coin, "gbt")
|
||||
|
||||
os.Exit(0)
|
||||
}
|
|
@ -0,0 +1,778 @@
|
|||
{"level":"error","ts":"2025-01-17T13:58:57.294+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-01-17T13:58:57.294+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-01-17T14:02:38.453+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-01-17T14:02:38.453+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-01-17T14:23:37.928+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-01-17T14:23:37.929+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-01-17T14:24:57.722+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-01-17T14:24:57.722+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-01-17T14:26:34.307+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-01-17T14:26:34.307+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-01-17T14:28:30.053+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-01-17T14:28:30.053+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-01-17T14:40:15.652+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-01-17T14:40:15.652+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-01-17T14:41:35.011+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-01-17T14:41:35.011+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-01-17T14:42:06.149+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-01-17T14:42:06.149+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-01-17T14:43:15.088+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-01-17T14:43:15.089+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-01-17T14:43:55.106+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:26\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-01-17T14:43:55.107+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:26\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-01-17T14:43:56.315+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:26\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-01-17T14:43:56.315+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:26\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-01-17T14:44:57.530+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:26\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-01-17T14:44:57.530+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:26\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-01-17T14:44:58.738+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:26\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-01-17T14:44:58.738+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:26\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-01-17T14:45:33.950+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:26\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-01-17T14:45:33.951+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:26\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-01-17T14:45:35.160+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:26\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-01-17T14:45:35.160+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:26\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-01-17T14:46:42.474+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:26\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-01-17T14:46:42.474+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:26\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-01-17T14:46:43.682+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:26\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-01-17T14:46:43.682+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:26\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-01-17T14:55:28.157+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:26\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-01-17T14:55:28.157+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:26\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-01-17T14:55:29.365+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:26\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-01-17T14:55:29.366+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:26\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-01-17T14:55:30.692+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.GetAddressFromTable\n\t/home/lizixuan/桌面/core/internal/db/db.go:2422\npool/internal/gbt.Start\n\t/home/lizixuan/桌面/core/internal/gbt/gbt.go:263\nmain.start\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:14\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:28\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-01-17T14:55:30.692+0800","caller":"db/db.go:2424","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.GetAddressFromTable\n\t/home/lizixuan/桌面/core/internal/db/db.go:2424\npool/internal/gbt.Start\n\t/home/lizixuan/桌面/core/internal/gbt/gbt.go:263\nmain.start\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:14\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:28\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-01-17T14:56:24.370+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:26\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-01-17T14:56:24.370+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:26\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-01-17T14:56:25.579+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:26\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-01-17T14:56:25.579+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:26\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-01-17T14:56:26.909+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.GetAddressFromTable\n\t/home/lizixuan/桌面/core/internal/db/db.go:2422\npool/internal/gbt.Start\n\t/home/lizixuan/桌面/core/internal/gbt/gbt.go:263\nmain.start\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:14\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:28\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-01-17T14:56:26.909+0800","caller":"db/db.go:2424","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.GetAddressFromTable\n\t/home/lizixuan/桌面/core/internal/db/db.go:2424\npool/internal/gbt.Start\n\t/home/lizixuan/桌面/core/internal/gbt/gbt.go:263\nmain.start\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:14\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:28\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-01-17T14:59:54.242+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-01-17T14:59:54.242+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-01-17T14:59:55.452+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-01-17T14:59:55.452+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-01-17T14:59:56.776+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.GetAddressFromTable\n\t/home/lizixuan/桌面/core/internal/db/db.go:2422\npool/internal/gbt.Start\n\t/home/lizixuan/桌面/core/internal/gbt/gbt.go:263\nmain.start\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:13\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:26\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-01-17T14:59:56.776+0800","caller":"db/db.go:2424","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.GetAddressFromTable\n\t/home/lizixuan/桌面/core/internal/db/db.go:2424\npool/internal/gbt.Start\n\t/home/lizixuan/桌面/core/internal/gbt/gbt.go:263\nmain.start\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:13\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:26\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-01-17T15:01:29.836+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-01-17T15:01:29.837+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-01-17T15:01:31.046+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-01-17T15:01:31.046+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-01-17T15:01:32.373+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.GetAddressFromTable\n\t/home/lizixuan/桌面/core/internal/db/db.go:2422\npool/internal/gbt.Start\n\t/home/lizixuan/桌面/core/internal/gbt/gbt.go:263\nmain.start\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:13\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:26\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-01-17T15:01:32.374+0800","caller":"db/db.go:2424","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.GetAddressFromTable\n\t/home/lizixuan/桌面/core/internal/db/db.go:2424\npool/internal/gbt.Start\n\t/home/lizixuan/桌面/core/internal/gbt/gbt.go:263\nmain.start\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:13\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:26\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-01-17T15:37:16.840+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-01-17T15:37:16.840+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-01-17T15:37:18.049+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-01-17T15:37:18.049+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-01-17T15:37:19.377+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.GetAddressFromTable\n\t/home/lizixuan/桌面/core/internal/db/db.go:2422\npool/internal/gbt.Start\n\t/home/lizixuan/桌面/core/internal/gbt/gbt.go:263\nmain.start\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:13\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:26\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-01-17T15:37:19.378+0800","caller":"db/db.go:2424","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.GetAddressFromTable\n\t/home/lizixuan/桌面/core/internal/db/db.go:2424\npool/internal/gbt.Start\n\t/home/lizixuan/桌面/core/internal/gbt/gbt.go:263\nmain.start\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:13\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:26\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-05T14:13:53.267+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-05T14:13:53.269+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-05T14:13:54.479+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-05T14:13:54.479+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-05T14:20:52.668+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-05T14:20:52.668+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-05T14:20:53.878+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-05T14:20:53.878+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-05T14:23:10.824+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-05T14:23:10.824+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-05T14:23:12.034+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-05T14:23:12.034+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-05T14:26:41.203+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-05T14:26:41.203+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-05T14:26:42.413+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-05T14:26:42.413+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-05T14:29:13.975+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-05T14:29:13.975+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-05T14:29:15.184+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-05T14:29:15.184+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-05T14:36:45.524+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-05T14:36:45.524+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-05T14:36:46.727+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-05T14:36:46.727+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-05T14:47:45.134+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:27\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-05T14:47:45.138+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:27\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-05T14:47:46.346+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:27\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-05T14:47:46.346+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:27\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-05T15:03:27.324+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:27\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-05T15:03:27.324+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:27\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-05T15:03:28.532+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:27\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-05T15:03:28.532+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:27\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-05T15:05:24.229+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-05T15:05:24.230+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-05T15:05:25.440+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-05T15:05:25.440+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-05T15:05:38.303+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-05T15:05:38.303+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-05T15:05:39.513+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-05T15:05:39.513+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-05T15:06:54.264+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-05T15:06:54.265+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-05T15:06:55.473+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-05T15:06:55.473+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-05T15:12:23.143+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-05T15:12:23.143+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-05T15:12:24.352+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-05T15:12:24.352+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-05T15:15:34.466+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-05T15:15:34.466+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-05T15:15:35.675+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-05T15:15:35.675+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-05T15:21:33.311+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-05T15:21:33.311+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-05T15:21:34.519+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-05T15:21:34.519+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-05T15:21:52.724+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-05T15:21:52.724+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-05T15:21:53.935+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-05T15:21:53.936+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-05T15:22:04.152+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-05T15:22:04.152+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-05T15:22:05.360+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-05T15:22:05.360+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-05T16:22:54.641+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-05T16:22:54.641+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-05T16:22:55.850+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-05T16:22:55.850+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-06T18:23:23.212+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-06T18:23:23.213+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-06T18:23:24.417+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-06T18:23:24.417+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-06T18:24:30.275+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-06T18:24:30.275+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-06T18:24:31.481+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-06T18:24:31.481+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-07T14:14:09.040+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-07T14:14:09.041+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-07T14:14:10.250+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-07T14:14:10.250+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-07T14:22:21.414+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-07T14:22:21.414+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-07T14:22:22.623+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-07T14:22:22.623+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-07T14:24:25.693+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-07T14:24:25.693+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-07T14:24:26.902+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-07T14:24:26.902+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-07T14:27:49.778+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-07T14:27:49.779+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-07T14:27:50.989+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-07T14:27:50.989+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-07T14:33:48.157+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-07T14:33:48.157+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-07T14:33:49.368+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-07T14:33:49.369+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-07T14:56:22.811+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-07T14:56:22.811+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-07T14:56:24.022+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-07T14:56:24.022+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-07T15:05:34.719+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-07T15:05:34.719+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-07T15:05:35.930+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-07T15:05:35.930+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-07T15:13:08.100+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-07T15:13:08.100+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-07T15:13:09.309+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-07T15:13:09.309+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-07T15:15:47.460+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-07T15:15:47.460+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-07T15:15:48.672+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-07T15:15:48.672+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-07T17:50:15.125+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-07T17:50:15.125+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-07T17:50:16.335+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-07T17:50:16.335+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-07T18:00:51.992+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-07T18:00:51.992+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-07T18:00:53.202+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-07T18:00:53.202+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-07T18:14:56.509+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-07T18:14:56.509+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-07T18:14:57.720+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-07T18:14:57.720+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-07T18:17:01.858+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-07T18:17:01.858+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-07T18:17:03.067+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-07T18:17:03.067+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-07T18:19:04.350+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-07T18:19:04.350+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-07T18:19:05.560+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-07T18:19:05.560+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-07T18:37:58.008+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-07T18:37:58.008+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-07T18:37:59.217+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-07T18:37:59.217+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-07T18:43:39.524+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-07T18:43:39.524+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-07T18:43:40.734+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-07T18:43:40.734+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-08T14:07:28.266+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-08T14:07:28.279+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-08T14:07:29.487+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-08T14:07:29.487+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-08T14:11:13.454+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-08T14:11:13.454+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-08T14:11:14.663+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-08T14:11:14.663+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-08T14:32:01.017+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-08T14:32:01.017+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-08T14:32:02.227+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-08T14:32:02.227+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-08T14:34:27.213+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-08T14:34:27.213+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-08T14:34:28.421+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-08T14:34:28.421+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-08T16:14:30.320+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-08T16:14:30.322+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-08T16:14:31.531+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-08T16:14:31.531+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T12:11:10.335+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T12:11:10.336+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T12:11:11.540+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T12:11:11.540+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T12:15:11.565+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T12:15:11.566+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T12:15:12.771+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T12:15:12.771+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T12:28:10.858+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T12:28:10.858+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T12:28:12.065+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T12:28:12.065+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T13:51:39.697+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T13:51:39.697+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T13:51:40.902+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T13:51:40.902+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T14:04:24.557+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T14:04:24.557+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T14:04:25.762+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T14:04:25.762+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T14:07:03.230+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T14:07:03.230+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T14:07:04.437+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T14:07:04.437+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T14:29:01.105+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T14:29:01.105+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T14:29:02.312+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T14:29:02.312+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T14:29:59.256+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T14:29:59.256+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T14:30:00.462+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T14:30:00.462+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T14:30:28.155+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T14:30:28.155+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T14:30:29.361+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T14:30:29.361+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T14:31:50.458+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T14:31:50.459+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T14:31:51.665+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T14:31:51.665+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T14:32:05.792+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T14:32:05.793+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T14:32:06.998+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T14:32:06.998+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T14:34:16.974+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T14:34:16.974+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T14:34:18.180+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T14:34:18.180+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T14:34:48.319+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T14:34:48.319+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T14:34:49.525+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T14:34:49.525+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T14:35:43.020+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T14:35:43.020+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T14:35:44.225+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T14:35:44.225+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T14:36:13.024+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T14:36:13.024+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T14:36:14.229+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T14:36:14.229+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T14:39:51.176+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T14:39:51.176+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T14:39:52.381+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T14:39:52.381+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T14:54:05.227+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T14:54:05.227+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T14:54:06.431+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T14:54:06.431+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T15:03:19.443+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T15:03:19.443+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T15:03:20.650+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T15:03:20.650+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T15:04:41.552+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T15:04:41.552+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T15:04:42.757+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T15:04:42.757+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T15:05:38.620+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T15:05:38.620+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T15:05:39.827+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T15:05:39.827+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T15:27:04.538+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T15:27:04.539+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T15:27:05.745+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T15:27:05.745+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T15:28:16.037+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T15:28:16.037+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T15:28:17.243+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T15:28:17.243+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T15:32:29.331+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T15:32:29.331+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T15:32:30.537+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T15:32:30.537+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T15:33:00.171+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T15:33:00.171+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T15:33:01.377+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T15:33:01.377+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T16:04:12.459+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T16:04:12.459+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T16:04:13.664+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T16:04:13.664+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T16:05:35.871+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T16:05:35.871+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T16:05:37.075+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T16:05:37.075+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T16:54:21.848+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T16:54:21.849+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T16:54:23.056+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T16:54:23.056+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T17:49:34.439+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T17:49:34.439+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T17:49:35.643+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T17:49:35.643+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T18:01:21.712+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T18:01:21.713+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T18:01:22.917+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-10T18:01:22.917+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-11T10:48:40.338+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-11T10:48:40.339+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-11T10:48:41.548+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-11T10:48:41.548+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-11T10:54:15.790+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-11T10:54:15.790+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-11T10:54:17.000+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-11T10:54:17.000+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-11T11:13:40.389+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-11T11:13:40.389+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-11T11:13:41.597+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-11T11:13:41.597+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-11T11:14:37.877+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-11T11:14:37.877+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-11T11:14:39.086+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-11T11:14:39.086+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-11T11:20:09.420+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-11T11:20:09.421+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-11T11:20:10.631+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-11T11:20:10.631+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-11T12:04:11.309+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-11T12:04:11.310+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-11T12:04:12.522+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-11T12:04:12.522+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-11T12:08:10.265+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-11T12:08:10.265+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-11T12:08:11.475+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-11T12:08:11.475+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-11T14:24:19.466+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-11T14:24:19.476+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-11T14:24:20.692+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-11T14:24:20.693+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-11T14:32:54.537+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-11T14:32:54.550+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-11T14:32:55.761+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-11T14:32:55.761+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-11T14:40:10.738+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-11T14:40:10.738+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-11T14:40:11.953+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-11T14:40:11.953+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-11T14:44:05.485+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-11T14:44:05.486+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-11T14:44:06.698+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-11T14:44:06.698+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-11T15:00:51.280+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-11T15:00:51.281+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-11T15:00:52.496+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-11T15:00:52.496+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-11T15:07:48.101+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-11T15:07:48.101+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-11T15:07:49.311+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-11T15:07:49.311+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-11T15:29:29.145+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-11T15:29:29.145+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-11T15:38:57.151+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-11T15:38:57.151+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-11T15:38:58.361+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-11T15:38:58.361+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-11T15:39:57.676+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-11T15:39:57.676+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-11T17:43:15.900+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-11T17:43:15.900+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-11T17:43:17.110+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-11T17:43:17.110+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-11T17:43:37.048+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-11T17:43:37.048+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T11:08:51.599+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T11:08:51.601+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T11:08:52.807+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T11:08:52.807+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T11:09:30.992+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T11:09:30.992+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T11:36:34.515+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T11:36:34.515+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T11:36:35.721+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T11:36:35.721+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T11:37:06.814+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T11:37:06.814+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T11:45:49.541+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T11:45:49.542+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T11:45:50.751+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T11:45:50.751+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T11:46:06.100+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T11:46:06.100+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T11:47:12.631+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T11:47:12.631+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T11:47:13.837+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T11:47:13.837+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T11:47:49.883+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T11:47:49.883+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T13:34:44.410+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T13:34:44.410+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T13:34:45.615+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T13:34:45.615+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T13:35:15.549+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T13:35:15.549+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T13:56:44.754+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T13:56:44.755+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T13:56:45.960+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T13:56:45.960+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T13:57:02.408+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T13:57:02.408+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T14:01:54.543+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T14:01:54.543+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T14:01:55.748+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T14:01:55.748+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T14:02:21.986+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T14:02:21.986+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T14:18:52.699+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T14:18:52.700+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T14:18:53.905+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T14:18:53.905+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T14:20:06.153+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T14:20:06.153+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T14:20:07.359+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T14:20:07.359+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T14:20:33.076+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T14:20:33.076+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T14:22:39.325+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T14:22:39.325+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T14:40:21.497+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T14:40:21.497+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T14:40:22.703+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T14:40:22.703+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T14:41:26.907+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T14:41:26.907+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T14:41:28.114+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T14:41:28.114+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T14:41:47.719+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T14:41:47.720+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T14:41:53.687+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T14:41:53.688+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T14:42:05.126+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T14:42:05.126+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T15:01:48.816+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T15:01:48.817+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T15:01:50.021+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T15:01:50.022+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T15:09:14.662+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T15:09:14.662+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T15:09:16.773+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T15:09:16.774+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T15:09:18.835+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T15:09:18.836+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T15:09:27.180+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T15:09:27.180+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T15:10:50.076+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T15:10:50.076+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T15:10:51.281+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T15:10:51.281+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T15:11:30.570+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T15:11:30.570+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T15:11:32.669+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T15:11:32.669+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T15:12:35.549+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T15:12:35.550+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T15:12:36.757+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T15:12:36.757+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T15:13:13.121+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T15:13:13.122+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T15:13:30.550+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T15:13:30.550+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T15:14:04.870+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T15:14:04.870+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T15:24:15.384+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T15:24:15.384+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T15:24:16.592+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T15:24:16.592+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T15:25:01.657+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T15:25:01.657+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T15:25:04.855+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T15:25:04.855+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T15:36:04.990+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T15:36:04.990+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T15:36:06.199+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T15:36:06.199+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T15:36:30.683+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T15:36:30.684+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T15:36:42.000+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T15:36:42.003+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T15:38:32.202+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T15:38:32.202+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T15:40:46.753+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T15:40:46.766+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T15:40:47.972+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T15:40:47.973+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T15:41:50.104+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T15:41:50.116+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T15:44:42.597+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T15:44:42.597+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T15:44:43.801+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T15:44:43.801+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T15:45:17.471+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T15:45:17.471+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T16:06:00.231+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T16:06:00.232+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T16:06:01.437+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T16:06:01.437+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T16:06:18.906+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T16:06:18.907+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T16:06:22.674+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T16:06:22.675+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T16:06:58.181+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T16:06:58.181+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T16:29:01.743+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T16:29:01.744+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T16:29:02.949+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T16:29:02.949+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T16:29:55.714+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T16:29:55.714+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T16:40:14.310+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T16:40:14.310+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T16:40:15.514+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T16:40:15.514+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T16:40:56.372+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T16:40:56.372+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T16:46:48.487+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T16:46:48.488+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T16:46:49.693+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T16:46:49.693+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T16:47:09.017+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T16:47:09.017+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T16:47:13.729+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T16:47:13.730+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T16:51:05.097+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T16:51:05.097+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T16:58:31.325+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T16:58:31.326+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T16:59:43.735+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T16:59:43.735+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T17:00:56.477+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T17:00:56.477+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T17:06:43.218+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T17:06:43.218+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T17:08:33.586+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T17:08:33.586+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T17:08:58.664+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T17:08:58.664+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T17:12:58.003+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T17:12:58.003+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T17:22:02.774+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T17:22:02.774+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T17:22:03.981+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T17:22:03.981+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T17:22:36.206+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T17:22:36.206+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T17:22:45.654+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T17:22:45.654+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T17:22:46.858+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T17:22:46.858+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T17:23:12.077+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T17:23:12.077+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T17:23:56.272+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T17:23:56.272+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T17:24:07.986+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T17:24:07.986+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T17:24:54.230+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T17:24:54.230+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T17:25:00.810+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T17:25:00.810+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T17:25:02.465+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T17:25:02.465+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T17:25:15.381+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T17:25:15.381+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T17:26:21.040+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T17:26:21.041+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T17:26:47.961+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T17:26:47.961+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T17:26:52.537+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T17:26:52.537+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T17:27:16.355+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T17:27:16.356+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T17:27:29.923+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T17:27:29.923+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T17:27:44.325+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T17:27:44.326+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T17:27:53.376+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T17:27:53.376+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T17:27:57.757+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T17:27:57.757+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T17:28:08.220+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T17:28:08.220+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T17:28:34.549+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T17:28:34.550+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T17:28:39.036+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T17:28:39.036+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T17:29:23.465+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T17:29:23.465+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T17:30:12.788+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T17:30:12.789+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T17:30:26.031+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T17:30:26.031+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T17:30:35.685+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T17:30:35.686+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T17:30:37.423+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T17:30:37.423+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T17:31:00.468+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T17:31:00.468+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T17:31:13.595+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T17:31:13.595+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T17:31:38.186+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T17:31:38.186+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T17:31:41.189+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T17:31:41.189+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T17:31:50.672+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T17:31:50.673+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T17:32:40.886+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T17:32:40.886+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T17:41:28.881+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2594\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T17:41:28.882+0800","caller":"db/db.go:2596","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2596\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T17:41:30.087+0800","caller":"db/db.go:2763","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckSharesDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2763\npool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2598\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T17:41:30.087+0800","caller":"db/db.go:2600","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.InitDbData\n\t/home/lizixuan/桌面/core/internal/db/db.go:2600\npool/internal/db.InitDb\n\t/home/lizixuan/桌面/core/internal/db/db.go:2659\nmain.main\n\t/home/lizixuan/桌面/core/cmd/gbt/gbt.go:25\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:272"}
|
||||
{"level":"error","ts":"2025-02-12T17:48:38.427+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T17:48:38.427+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T17:48:47.441+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T17:48:47.442+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T17:48:58.631+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T17:48:58.632+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T17:49:15.102+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T17:49:15.102+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T17:49:20.973+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T17:49:20.973+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T17:49:28.217+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T17:49:28.217+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T17:49:57.411+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T17:49:57.412+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T17:50:04.273+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T17:50:04.273+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T17:50:06.336+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T17:50:06.336+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T17:50:09.255+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T17:50:09.256+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T17:50:49.174+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T17:50:49.174+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T17:50:53.836+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T17:50:53.836+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T17:51:18.918+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T17:51:18.918+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T17:51:57.860+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T17:51:57.860+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T17:51:59.600+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T17:51:59.600+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T17:52:15.887+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T17:52:15.887+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T17:52:23.493+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T17:52:23.493+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T17:52:34.773+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T17:52:34.773+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T17:53:21.173+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T17:53:21.174+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T17:53:36.110+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T17:53:36.110+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T17:53:37.675+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T17:53:37.675+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T17:53:44.371+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T17:53:44.371+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T17:54:08.736+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T17:54:08.738+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T17:56:02.648+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T17:56:02.649+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T17:56:04.479+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T17:56:04.479+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T17:56:14.470+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T17:56:14.470+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T17:56:15.758+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T17:56:15.758+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T17:57:19.862+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T17:57:19.863+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T17:57:25.547+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T17:57:25.547+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T17:57:28.022+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T17:57:28.022+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T17:57:33.431+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T17:57:33.432+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T17:57:35.399+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T17:57:35.399+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T17:58:18.012+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T17:58:18.012+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T17:58:39.450+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T17:58:39.450+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T17:59:30.775+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T17:59:30.775+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T17:59:49.581+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T17:59:49.581+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T18:00:26.851+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T18:00:26.852+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T18:00:55.826+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T18:00:55.826+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T18:00:59.217+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T18:00:59.218+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T18:01:10.581+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T18:01:10.581+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T18:01:51.418+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T18:01:51.419+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T18:02:17.392+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T18:02:17.392+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T18:02:18.687+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T18:02:18.687+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T18:02:41.104+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T18:02:41.104+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T18:02:54.797+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T18:02:54.797+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T18:03:17.565+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T18:03:17.566+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T18:03:25.668+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T18:03:25.668+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T18:03:39.967+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T18:03:39.968+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T18:03:48.702+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T18:03:48.702+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T18:04:05.141+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T18:04:05.142+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T18:04:19.346+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T18:04:19.346+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T18:04:36.011+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T18:04:36.011+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T18:04:56.178+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T18:04:56.178+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T18:05:09.546+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T18:05:09.546+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T18:05:17.504+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T18:05:17.504+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T18:05:24.361+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T18:05:24.361+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T18:05:27.310+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T18:05:27.310+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T18:05:38.469+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T18:05:38.469+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T18:05:48.056+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T18:05:48.057+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T18:06:04.605+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T18:06:04.606+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T18:06:30.137+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T18:06:30.137+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
||||
{"level":"error","ts":"2025-02-12T18:06:42.132+0800","caller":"db/db.go:2736","msg":"[db]","reconnect ping db":"failed","stacktrace":"pool/internal/db.CheckPoolDbAlive\n\t/home/lizixuan/桌面/core/internal/db/db.go:2736\npool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2080"}
|
||||
{"level":"error","ts":"2025-02-12T18:06:42.133+0800","caller":"db/db.go:2082","msg":"[db]","Pool db ":"disconnected","stacktrace":"pool/internal/db.do_handle_pool_blkstats\n\t/home/lizixuan/桌面/core/internal/db/db.go:2082"}
|
File diff suppressed because it is too large
Load Diff
Binary file not shown.
|
@ -0,0 +1,34 @@
|
|||
{
|
||||
"db": {
|
||||
"ip": "127.0.0.1",
|
||||
"port": 3306,
|
||||
"username":"root",
|
||||
"password":"Lzx2021@!",
|
||||
"dbname":"m2pooldb"
|
||||
},
|
||||
"shares": {
|
||||
"ip": "127.0.0.1",
|
||||
"port": 3306,
|
||||
"username":"m2pool",
|
||||
"password":"Lzx2021@!",
|
||||
"dbname":"sharesdb"
|
||||
},
|
||||
"zap": {
|
||||
"level": "debug",
|
||||
"encoding": "json",
|
||||
"outputPaths": ["stdout", "./logs/db.log"],
|
||||
"errorOutputPaths": ["stderr"],
|
||||
"initialFields": {"server": "server"},
|
||||
"encoderConfig": {
|
||||
"messageKey": "message",
|
||||
"levelKey": "level",
|
||||
"levelEncoder": "lowercase"
|
||||
}
|
||||
},
|
||||
"logrotate": {
|
||||
"maxsize": 10,
|
||||
"maxbackups": 100,
|
||||
"maxage": 31,
|
||||
"compress": true
|
||||
}
|
||||
}
|
|
@ -0,0 +1,18 @@
|
|||
{"level":"info","time":"2025-02-07T18:40:04+08:00","message":"{\"id\":3,\"method\":\"mining.authorize\",\"params\":[\"alphtest.1x1\"]}"}
|
||||
{"level":"info","time":"2025-02-07T18:40:04+08:00","message":"{\"result\":true,\"id\":3,\"error\":null}\n"}
|
||||
{"level":"info","time":"2025-02-07T18:40:04+08:00","message":"{\"id\":null,\"method\":\"mining.set_difficulty\",\"params\":[1]}\n"}
|
||||
{"level":"info","time":"2025-02-07T18:40:04+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":{\"job_id\":\"\",\"fromGroup\":0,\"toGroup\":0,\"headerBlob\":\"000700000003e5f554b730e9adf11ee47a8022684841586d777619f64878cfa71005000000008e7b7b385b727d6bedfc7b9fa8b76f39a2ef318b406a522007b56faa000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000003178d4a043a964da8afea94bb315711a29ab70532e69f0a51c77501200000000030d339eadb0ce263f5ee49a356dd967a7f23152b6453ab57671d550100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3446b0d40f1f22eb47dc4df7c9f2a849fa2c2f5ed5c50d626360be988b92244aae40a37ad2f03f01268fa342294e5cc033c0ded557e1221c99161ce9cb61c0e8500000194dffeca2a1df79d79\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00f79d790000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\"}}\n"}
|
||||
{"level":"info","time":"2025-02-07T18:40:04+08:00","message":"{\"id\":9,\"method\":\"alph_submitHashrate\",\"jsonrpc\":\"2.0\",\"worker\":\"alphtest\",\"workerName\":\"1x1\",\"params\":[\"0\",\"917c58e4366567e27c60da87f3550a1db931d4d9124e7ef9abd93920f935c7e4\"]}"}
|
||||
{"level":"info","time":"2025-02-07T18:40:19+08:00","message":"miner disconnect prepare alphtest.1x1"}
|
||||
{"level":"info","time":"2025-02-07T18:41:34+08:00","message":"{\"id\":3,\"method\":\"mining.authorize\",\"params\":[\"alphtest.1x1\"]}"}
|
||||
{"level":"info","time":"2025-02-07T18:41:34+08:00","message":"{\"result\":true,\"id\":3,\"error\":null}\n"}
|
||||
{"level":"info","time":"2025-02-07T18:41:34+08:00","message":"{\"id\":null,\"method\":\"mining.set_difficulty\",\"params\":[1]}\n"}
|
||||
{"level":"info","time":"2025-02-07T18:41:34+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":{\"job_id\":\"\",\"fromGroup\":0,\"toGroup\":0,\"headerBlob\":\"000700000003e5f554b730e9adf11ee47a8022684841586d777619f64878cfa71005000000008e7b7b385b727d6bedfc7b9fa8b76f39a2ef318b406a522007b56faa000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000003178d4a043a964da8afea94bb315711a29ab70532e69f0a51c77501200000000030d339eadb0ce263f5ee49a356dd967a7f23152b6453ab57671d550100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3446b0d40f1f22eb47dc4df7c9f2a849fa2c2f5ed5c50d626360be988b92244aafca8eb462e3013468df4432dffb962b19826901638a7feb586b4e2467e49d92f00000194e000255a1df79d79\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00f79d790000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\"}}\n"}
|
||||
{"level":"info","time":"2025-02-07T18:41:34+08:00","message":"{\"id\":9,\"method\":\"alph_submitHashrate\",\"jsonrpc\":\"2.0\",\"worker\":\"alphtest\",\"workerName\":\"1x1\",\"params\":[\"0\",\"779ca096155324a41413e6d341bc4874ac856888fc23d62520d7308da9e2776e\"]}"}
|
||||
{"level":"info","time":"2025-02-07T18:41:49+08:00","message":"miner disconnect prepare alphtest.1x1"}
|
||||
{"level":"info","time":"2025-02-07T18:43:55+08:00","message":"{\"id\":3,\"method\":\"mining.authorize\",\"params\":[\"alphtest.1x1\"]}"}
|
||||
{"level":"info","time":"2025-02-07T18:43:55+08:00","message":"{\"result\":true,\"id\":3,\"error\":null}\n"}
|
||||
{"level":"info","time":"2025-02-07T18:43:55+08:00","message":"{\"id\":null,\"method\":\"mining.set_difficulty\",\"params\":[1]}\n"}
|
||||
{"level":"info","time":"2025-02-07T18:43:55+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":{\"job_id\":\"\",\"fromGroup\":0,\"toGroup\":0,\"headerBlob\":\"000700000003e5f554b730e9adf11ee47a8022684841586d777619f64878cfa71005000000008e7b7b385b727d6bedfc7b9fa8b76f39a2ef318b406a522007b56faa000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000003178d4a043a964da8afea94bb315711a29ab70532e69f0a51c77501200000000030d339eadb0ce263f5ee49a356dd967a7f23152b6453ab57671d550100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3446b0d40f1f22eb47dc4df7c9f2a849fa2c2f5ed5c50d626360be988b92244aa3802a005a39c9e88a545f7414a0622f30b7fab1e209e2c00cc867496c64785e600000194e002465a1df79d79\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00f79d790000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\"}}\n"}
|
||||
{"level":"info","time":"2025-02-07T18:43:55+08:00","message":"{\"id\":9,\"method\":\"alph_submitHashrate\",\"jsonrpc\":\"2.0\",\"worker\":\"alphtest\",\"workerName\":\"1x1\",\"params\":[\"0\",\"86a7d5d20123a9d8bca0c35c74d24585fb44da9944c1341cb5b409c7e46f2339\"]}"}
|
||||
{"level":"info","time":"2025-02-07T18:44:11+08:00","message":"miner disconnect prepare alphtest.1x1"}
|
Binary file not shown.
|
@ -0,0 +1,678 @@
|
|||
{"level":"info","time":"2025-02-12T16:59:56+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"188\",\"fromGroup\":2,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e2017719feec26e53b325e43d432ec92109523c6d909f3e7e2ae06d7173949d9bad7a00000194f962e9a81de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T16:59:58+08:00","message":"{\"id\":296,\"method\":\"mining.submit\",\"params\":{\"jobId\":\"188\",\"fromGroup\":2,\"toGroup\":2,\"nonce\":\"01521b8a739d000101521b8a739d00018749805600000000\",\"worker\":\"alphtest\",\"workerName\":\"1x2\"}}"}
|
||||
{"level":"info","time":"2025-02-12T16:59:58+08:00","message":"{\"result\":true,\"id\":296,\"error\":null}\n"}
|
||||
{"level":"info","time":"2025-02-12T16:59:58+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"189\",\"fromGroup\":1,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba600000001c1d734605f9a7f7bf6f6cb0809fc69d35dbb709d0b979857633acf379fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431aed1d23f0c95b5a41460218ce20f811ee360aee34add7c858f876a4e36e895afe00000194f962f18b1dff0b28\",\"txsBlob\":\"00\",\"height\":6,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:00:00+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"18a\",\"fromGroup\":0,\"toGroup\":3,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885df9fd0447cff8223bd125b0c8c561804b986b768704a90b4f26aefe8cb80f09d600000194f962f96e1dff0b28\",\"txsBlob\":\"00\",\"height\":7,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:00:02+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"18b\",\"fromGroup\":1,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba600000001c1d734605f9a7f7bf6f6cb0809fc69d35dbb709d0b979857633acf379fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431ae0767d346b0f287f955be18470a740c5b15896bc0ab733c19683b9242a5e791600000194f96301531de3b7ad\",\"txsBlob\":\"00\",\"height\":15,\"targetBlob\":\"00e3b7ad0000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:00:04+08:00","message":"{\"id\":296,\"method\":\"mining.submit\",\"params\":{\"jobId\":\"18b\",\"fromGroup\":1,\"toGroup\":2,\"nonce\":\"01521b8a73a0000101521b8a73a0000125e4983f00000000\",\"worker\":\"alphtest\",\"workerName\":\"1x2\"}}"}
|
||||
{"level":"info","time":"2025-02-12T17:00:04+08:00","message":"{\"result\":true,\"id\":296,\"error\":null}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:00:04+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"18c\",\"fromGroup\":1,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba600000001c1d734605f9a7f7bf6f6cb0809fc69d35dbb709d0b979857633acf379fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431aa7f4d19a10fe53bb82b8aec5223264ca8e9e6f46a04fe3bb224e11faefeaebeb00000194f96309371de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:00:06+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"18d\",\"fromGroup\":2,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e20173bcdd3074ed80585d8706e328202583a84a01ca784a7659dc482a1802010af9100000194f963111c1de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:00:08+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"18e\",\"fromGroup\":1,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba600000001c1d734605f9a7f7bf6f6cb0809fc69d35dbb709d0b979857633acf379fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a0183c2593630c71f394107e991b8495b5e181ae2b70a55a15d0cc902abe2cdea00000194f96318fe1de3b7ad\",\"txsBlob\":\"00\",\"height\":15,\"targetBlob\":\"00e3b7ad0000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:00:10+08:00","message":"{\"method\":\"mining.pong\",\"id\":38}"}
|
||||
{"level":"info","time":"2025-02-12T17:00:10+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"18f\",\"fromGroup\":1,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba600000001c1d734605f9a7f7bf6f6cb0809fc69d35dbb709d0b979857633acf379fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431abb907aecb3dc38ab9dd1c8d9da5795b6eb462268a9f06967c7a502cfc60f38fc00000194f96320e41de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:00:12+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"190\",\"fromGroup\":3,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d62677588a6cc35a247999e4bb7da466b65f2828fe593b6acad79a807218333da96bb8300000194f96328c81dff0b28\",\"txsBlob\":\"00\",\"height\":8,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:00:14+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"191\",\"fromGroup\":2,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e2017d184c4d7828135b6f69e7de62eb77cdfba82cee0951a2202fb8ce4cd52b0601000000194f96330ab1df79d79\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00f79d790000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:00:17+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"192\",\"fromGroup\":3,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d62677543d7682a4f5d665eafe5e1539e805be5b9b6f83a1e76f9c4b52ced1982fad9b100000194f96338901dff0b28\",\"txsBlob\":\"00\",\"height\":10,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:00:19+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"193\",\"fromGroup\":2,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e2017905e0cb8d04dfde96d60660a5219ecc5995c94b7b2cd520cac18f089075b715500000194f96340731df79d79\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00f79d790000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:00:21+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"194\",\"fromGroup\":3,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d626775f1e1004f8d030cd225523c908dad341c7468dab74244e75608d50999b6b0a5c100000194f96348581dff0b28\",\"txsBlob\":\"00\",\"height\":8,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:00:23+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"195\",\"fromGroup\":1,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba600000001c1d734605f9a7f7bf6f6cb0809fc69d35dbb709d0b979857633acf379fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a1fcfa3ac9447cd36d68e2f447b5800dd46e399e83bc71f3ff1744b67b24e796500000194f963503b1de3b7ad\",\"txsBlob\":\"00\",\"height\":15,\"targetBlob\":\"00e3b7ad0000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:00:25+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"196\",\"fromGroup\":1,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba600000001c1d734605f9a7f7bf6f6cb0809fc69d35dbb709d0b979857633acf379fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a23f1bf198641942884d6c8e6f59c9f33d3e501d2daae90d6cd996bdd0e8ac9f600000194f963581f1dff0b28\",\"txsBlob\":\"00\",\"height\":6,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:00:27+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"197\",\"fromGroup\":1,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba600000001c1d734605f9a7f7bf6f6cb0809fc69d35dbb709d0b979857633acf379fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a1ad88b0e79fa13048e8325122d3f0767e57f0feb302d034010655e1aae4ddad400000194f96360031dff0b28\",\"txsBlob\":\"00\",\"height\":6,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:00:29+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"198\",\"fromGroup\":3,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d6267750e1188bb6de874f2b125911679f524602c7fe44eb7f8d13f9fe3ea627d58835b00000194f96367e81dff0b28\",\"txsBlob\":\"00\",\"height\":10,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:00:30+08:00","message":"{\"method\":\"mining.pong\",\"id\":39}"}
|
||||
{"level":"info","time":"2025-02-12T17:00:31+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"199\",\"fromGroup\":2,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e2017fe7a437e350d6711c12fad506a81f6ac06ad4ca0b004134aa85bc1f4351a40d500000194f9636fcb1df79d79\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00f79d790000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:00:33+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"19a\",\"fromGroup\":0,\"toGroup\":2,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885dddc4f86bcd328db854baefcf3ece699610043cf62b33b37248be4914b80416ef00000194f96377af1de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:00:35+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"19b\",\"fromGroup\":3,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d62677523dae15c09086317e18611706286ed95bdbd85c7a74ad925d1487e973c0cf6f400000194f9637f941dff0b28\",\"txsBlob\":\"00\",\"height\":10,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:00:37+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"19c\",\"fromGroup\":2,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e20172c6eb827ac75fdbc469cbed48c6876810400942c370a568e079302fb805d078600000194f96387771df79d79\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00f79d790000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:00:39+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"19d\",\"fromGroup\":0,\"toGroup\":2,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885d59a81bd100a4a35247689b57ddc0d7e9c8b052ca6676f4ee0a23cec3fc3c513600000194f9638f5b1de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:00:41+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"19e\",\"fromGroup\":1,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba600000001c1d734605f9a7f7bf6f6cb0809fc69d35dbb709d0b979857633acf379fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a46bf3b1bc84c9a14a8707f32235d6547316531510756bb6055238fcf43d4bc3200000194f963973f1de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:00:43+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"19f\",\"fromGroup\":0,\"toGroup\":0,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885dc0a465eeaae89ef9cc3b57a3d14d4b287c694cf52bad8d4428f2fe1b37e0e59b00000194f9639f221df09b6e\",\"txsBlob\":\"00\",\"height\":12,\"targetBlob\":\"00f09b6e0000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:00:44+08:00","message":"{\"id\":296,\"method\":\"mining.submit\",\"params\":{\"jobId\":\"19f\",\"fromGroup\":0,\"toGroup\":0,\"nonce\":\"01521b8a73b4000101521b8a73b400016a85834e00000000\",\"worker\":\"alphtest\",\"workerName\":\"1x2\"}}"}
|
||||
{"level":"info","time":"2025-02-12T17:00:44+08:00","message":"{\"result\":true,\"id\":296,\"error\":null}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:00:45+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1a0\",\"fromGroup\":0,\"toGroup\":1,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885d0d17933520f83f9452cb25cd0e79a866f1359a17ca0a1edc2d3fccd4de1b397100000194f963a7061dff0b28\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:00:47+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1a1\",\"fromGroup\":2,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e2017e705317c7bf87e655d813f6c182e95d468abd3ec4122c3902275e02ef21a089f00000194f963aeec1df79d79\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00f79d790000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:00:49+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1a2\",\"fromGroup\":1,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba600000001c1d734605f9a7f7bf6f6cb0809fc69d35dbb709d0b979857633acf379fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a929fa6543b604bfce31bb9c31e01a68d61bf9f076e045a6a2eb08a7305e1e9e800000194f963b6cf1dafe462\",\"txsBlob\":\"00\",\"height\":25,\"targetBlob\":\"00afe4620000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:00:50+08:00","message":"{\"method\":\"mining.pong\",\"id\":40}"}
|
||||
{"level":"info","time":"2025-02-12T17:00:51+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1a3\",\"fromGroup\":2,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e20175cafe6ad0095cd8e09feccd9cd3579ec0d6fae722f9675c161931007d7c3f48100000194f963beb41df79d79\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00f79d790000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:00:53+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1a4\",\"fromGroup\":1,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba600000001c1d734605f9a7f7bf6f6cb0809fc69d35dbb709d0b979857633acf379fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a08a25db3c274f5214cc8fb97825b3e90059c10ff58b16b56aaf3a741830af0d400000194f963c6971dafe462\",\"txsBlob\":\"00\",\"height\":25,\"targetBlob\":\"00afe4620000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:00:55+08:00","message":"{\"id\":296,\"method\":\"mining.submit\",\"params\":{\"jobId\":\"1a4\",\"fromGroup\":1,\"toGroup\":3,\"nonce\":\"01521b8a73b9000101521b8a73b9000133d76a7300000000\",\"worker\":\"alphtest\",\"workerName\":\"1x2\"}}"}
|
||||
{"level":"info","time":"2025-02-12T17:00:55+08:00","message":"{\"result\":true,\"id\":296,\"error\":null}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:00:55+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1a5\",\"fromGroup\":2,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e2017d8055d478ad9bb09a6a6cc192b921c47483e9b82b0b099c82c6339762f08aec200000194f963ce7c1dff0b28\",\"txsBlob\":\"00\",\"height\":5,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:00:55+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1a6\",\"fromGroup\":1,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba600000001c1d734605f9a7f7bf6f6cb0809fc69d35dbb709d0b979857633acf379fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431aec3211211b255a820b62f8cac2a183cfb58d586833767844af76df62d6b4e85f00000194f963ce931dff0b28\",\"txsBlob\":\"00\",\"height\":6,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:00:57+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1a7\",\"fromGroup\":3,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d62677514fbdbc3def3814d514270d3785892cd73c616c2acb6b3be73f4eb80986a256b00000194f963d6741dff0b28\",\"txsBlob\":\"00\",\"height\":10,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:00:58+08:00","message":"{\"id\":296,\"method\":\"mining.submit\",\"params\":{\"jobId\":\"1a7\",\"fromGroup\":3,\"toGroup\":3,\"nonce\":\"01521b8a73bc000101521b8a73bc0001e675063c00000000\",\"worker\":\"alphtest\",\"workerName\":\"1x2\"}}"}
|
||||
{"level":"info","time":"2025-02-12T17:00:58+08:00","message":"{\"result\":true,\"id\":296,\"error\":null}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:00:59+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1a8\",\"fromGroup\":2,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e2017d5ef0675f78bceae61d3e5c787249f28263a3fb47c42ba219278ee02e0e297aa00000194f963de571de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:01:01+08:00","message":"{\"id\":9,\"method\":\"alph_submitHashrate\",\"jsonrpc\":\"2.0\",\"worker\":\"alphtest\",\"workerName\":\"1x2\",\"params\":[\"41bf5800\",\"c48c782b0641a6b40b11444668d6a8d2d60c4345184cd66eaffb9e2c9f27f253\"]}"}
|
||||
{"level":"info","time":"2025-02-12T17:01:01+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1a9\",\"fromGroup\":2,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e20173b711a748e3df7baae1c30e499a03a7f53437ab571d081c34245f63e300e0b0f00000194f963e63c1df79d79\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00f79d790000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:01:03+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1aa\",\"fromGroup\":1,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba6000000009faed3a9e08ff864500b2eb21cb8c3a22d7ea83b8c8f76db329706a79fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a7a249392259c7ff6f0e008018b218f9cbc900a0a8588cf4954bf33423b1b3c0800000194f963ee1f1de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:01:04+08:00","message":"{\"id\":296,\"method\":\"mining.submit\",\"params\":{\"jobId\":\"1aa\",\"fromGroup\":1,\"toGroup\":1,\"nonce\":\"01521b8a73bf000101521b8a73bf0001b08f7c2900000000\",\"worker\":\"alphtest\",\"workerName\":\"1x2\"}}"}
|
||||
{"level":"info","time":"2025-02-12T17:01:04+08:00","message":"{\"result\":true,\"id\":296,\"error\":null}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:01:05+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1ab\",\"fromGroup\":3,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d626775587f86664d6882b294c214b1d3760172fdc2dbd68cf5cb6c23c4225cc53df78800000194f963f6041dff0b28\",\"txsBlob\":\"00\",\"height\":8,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:01:07+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1ac\",\"fromGroup\":0,\"toGroup\":2,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885de017266ea6371f66c7995b5c2968ffeaedf9b54771206e52cfd461e82f36e0e700000194f963fde71de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:01:09+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1ad\",\"fromGroup\":0,\"toGroup\":2,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885d95346741cae00e343c6ab1d827b89665758520f14d52fd6395b449b15730418900000194f96405ca1de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:01:10+08:00","message":"{\"method\":\"mining.pong\",\"id\":41}"}
|
||||
{"level":"info","time":"2025-02-12T17:01:11+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1ae\",\"fromGroup\":1,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba6000000009faed3a9e08ff864500b2eb21cb8c3a22d7ea83b8c8f76db329706a79fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a17247a00b273d333cf0778e459b33a533d13b0aab84766095c37418fc0cfe97000000194f9640daf1dff0b28\",\"txsBlob\":\"00\",\"height\":6,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:01:13+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1af\",\"fromGroup\":2,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e20171d8e58c1755a2bb7294b74ce159d26397f2a995e27b9db22869f66e11e6c328800000194f96415931df79d79\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00f79d790000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:01:15+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1b0\",\"fromGroup\":1,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba6000000009faed3a9e08ff864500b2eb21cb8c3a22d7ea83b8c8f76db329706a79fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a28c47a0fec4cf066ced064371821e697140954304cf17a3a14aa9cd071916f5900000194f9641d771dff0b28\",\"txsBlob\":\"00\",\"height\":6,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:01:17+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1b1\",\"fromGroup\":2,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e20173f0a62efffe329f0358beaab95c7d6ad97a6170fb243fe90731fec2306baa4e100000194f964255b1de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:01:19+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1b2\",\"fromGroup\":1,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba6000000009faed3a9e08ff864500b2eb21cb8c3a22d7ea83b8c8f76db329706a79fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a1e77a1cbc8ff72a1d3d3b0a389460ea028115d0baa7847a40066635908cd6c0f00000194f9642d3f1de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:01:21+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1b3\",\"fromGroup\":3,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d626775aab0ff16022efe366f8a6adc597d3c36e3e0df61f395ff584d6eb8dffd45ed3f00000194f96435241dff0b28\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:01:23+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1b4\",\"fromGroup\":3,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d626775dd1d5ff3457e3c25856f70e697158884c0edba6f5b16b1c92c50e6ef0fb43cf800000194f9643d081dff0b28\",\"txsBlob\":\"00\",\"height\":10,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:01:24+08:00","message":"{\"id\":296,\"method\":\"mining.submit\",\"params\":{\"jobId\":\"1b4\",\"fromGroup\":3,\"toGroup\":2,\"nonce\":\"01521b8a73c9000101521b8a73c9000129b0540b00000000\",\"worker\":\"alphtest\",\"workerName\":\"1x2\"}}"}
|
||||
{"level":"info","time":"2025-02-12T17:01:24+08:00","message":"{\"result\":true,\"id\":296,\"error\":null}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:01:25+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1b5\",\"fromGroup\":0,\"toGroup\":2,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885d0433138100b4673f473c0b1d2cbbcb5c6f0ff9ceb4b4bffc710e9a9c91fa494900000194f96444ea1de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:01:27+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1b6\",\"fromGroup\":1,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba6000000009faed3a9e08ff864500b2eb21cb8c3a22d7ea83b8c8f76db329706a79fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431ab3fc16414bd6f934cf956e760224eab8729e2b9c2a6908d18559a57344545aef00000194f9644ccf1de3b7ad\",\"txsBlob\":\"00\",\"height\":15,\"targetBlob\":\"00e3b7ad0000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:01:29+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1b7\",\"fromGroup\":1,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba6000000009faed3a9e08ff864500b2eb21cb8c3a22d7ea83b8c8f76db329706a79fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a124fe4842c92892f2a4a8730d8217fed5b82e643ec75558ff3cf5bd81764162500000194f96454b41dac53a5\",\"txsBlob\":\"00\",\"height\":26,\"targetBlob\":\"00ac53a50000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:01:30+08:00","message":"{\"method\":\"mining.pong\",\"id\":42}"}
|
||||
{"level":"info","time":"2025-02-12T17:01:31+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1b8\",\"fromGroup\":2,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e2017513bec467b3ce6a049af2a9fe67abe1b946eb825af2954018ddaba073276768500000194f9645c971df79d79\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00f79d790000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:01:33+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1b9\",\"fromGroup\":0,\"toGroup\":0,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885d84365185d18c76868321cf5c86e16c1c49baad430802c7b2cea869ce7cfb9e6a00000194f964647a1df09b6e\",\"txsBlob\":\"00\",\"height\":12,\"targetBlob\":\"00f09b6e0000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:01:35+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1ba\",\"fromGroup\":2,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e20179bed98ec330991b8eeed4fa0093b90d7f88e4fde39239c741e10cd5e631de6eb00000194f9646c5f1de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:01:37+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1bb\",\"fromGroup\":2,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e201704affa435b3501f2d674caed0969491614be5854e10f6ed86ab6f57d01df90a200000194f96474431de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:01:39+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1bc\",\"fromGroup\":1,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba6000000009faed3a9e08ff864500b2eb21cb8c3a22d7ea83b8c8f76db329706a79fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a5eef49fab1b5906aaf284102b235d5f02802b2679ccda99c967db89ed762579000000194f9647c261de3b7ad\",\"txsBlob\":\"00\",\"height\":15,\"targetBlob\":\"00e3b7ad0000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:01:41+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1bd\",\"fromGroup\":2,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e2017b0bfb462d22682ce40cdb639ee41dead97a3d2b1d083e3b400e7863ed2c9d4c100000194f964840c1dff0b28\",\"txsBlob\":\"00\",\"height\":5,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:01:43+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1be\",\"fromGroup\":2,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e201788108a6052be879d7b31d9846790b7173be405c4d570fe0986b6a765d8d474a600000194f9648bef1dff0b28\",\"txsBlob\":\"00\",\"height\":5,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:01:45+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1bf\",\"fromGroup\":1,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba6000000009faed3a9e08ff864500b2eb21cb8c3a22d7ea83b8c8f76db329706a79fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431af38a88e6a89359f08be771d9348e29558d6ec2e06091f866735270a3212080cf00000194f96493d31dac53a5\",\"txsBlob\":\"00\",\"height\":26,\"targetBlob\":\"00ac53a50000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:01:47+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1c0\",\"fromGroup\":1,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba6000000009faed3a9e08ff864500b2eb21cb8c3a22d7ea83b8c8f76db329706a79fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a465bd18b18fbe4250d7b05cecda9e90347be62fa624966897a37d718dae36a1200000194f9649bb71de3b7ad\",\"txsBlob\":\"00\",\"height\":15,\"targetBlob\":\"00e3b7ad0000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:01:49+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1c1\",\"fromGroup\":1,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba6000000009faed3a9e08ff864500b2eb21cb8c3a22d7ea83b8c8f76db329706a79fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a8c36dc2e6fc2ee2037350be720f0991091d46df8c263a572a75daee776bfbfa600000194f964a39a1de3b7ad\",\"txsBlob\":\"00\",\"height\":15,\"targetBlob\":\"00e3b7ad0000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:01:50+08:00","message":"{\"method\":\"mining.pong\",\"id\":43}"}
|
||||
{"level":"info","time":"2025-02-12T17:01:51+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1c2\",\"fromGroup\":3,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d626775b426c51cffff01b2af577d8d7e007240dfa75545a45471704ea3ea685296991900000194f964ab801dff0b28\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:01:53+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1c3\",\"fromGroup\":3,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d626775061f86e222be77f43bb0ec9f6729c966146e7d1e957d47a793c82e894d7861ec00000194f964b3641dff0b28\",\"txsBlob\":\"00\",\"height\":10,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:01:56+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1c4\",\"fromGroup\":1,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba6000000009faed3a9e08ff864500b2eb21cb8c3a22d7ea83b8c8f76db329706a79fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a76044895ae60f90db447f5959b653fb773ecbfffa71b318e841dd8b85735aa5c00000194f964bb471dff0b28\",\"txsBlob\":\"00\",\"height\":6,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:01:58+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1c5\",\"fromGroup\":2,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e20174557b012411586b44fe83e4bef5c3a72e792f683d736c65fad9ad804999f9a3000000194f964c32d1de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:02:00+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1c6\",\"fromGroup\":1,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba6000000009faed3a9e08ff864500b2eb21cb8c3a22d7ea83b8c8f76db329706a79fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a802aa4c1b302268d4617721be5b5480be725c84b1bd54695828400649caa44cf00000194f964cb0f1dac53a5\",\"txsBlob\":\"00\",\"height\":26,\"targetBlob\":\"00ac53a50000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:02:02+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1c7\",\"fromGroup\":1,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba6000000009faed3a9e08ff864500b2eb21cb8c3a22d7ea83b8c8f76db329706a79fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a3511f428aa58545937b77c8ef9efe18215fe5982e5e92918703027df2b75b24d00000194f964d2f31dac53a5\",\"txsBlob\":\"00\",\"height\":26,\"targetBlob\":\"00ac53a50000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:02:04+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1c8\",\"fromGroup\":2,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e2017b4b069c87dc6d29999365ac1f1401dce6c1e45310fde620f5e9363a28686112500000194f964dad71df79d79\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00f79d790000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:02:06+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1c9\",\"fromGroup\":1,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba6000000009faed3a9e08ff864500b2eb21cb8c3a22d7ea83b8c8f76db329706a79fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a3b9430a896c32d9bcaf412c9ab4988e4360dd003eecabf8b9e084f27617e907800000194f964e2bb1dac53a5\",\"txsBlob\":\"00\",\"height\":26,\"targetBlob\":\"00ac53a50000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:02:08+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1ca\",\"fromGroup\":1,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba6000000009faed3a9e08ff864500b2eb21cb8c3a22d7ea83b8c8f76db329706a79fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431afd7c526a030041fd96c1ef6c87d91388ff6ce3727d136ed9ad9b23d370626f6d00000194f964ea9f1dac53a5\",\"txsBlob\":\"00\",\"height\":26,\"targetBlob\":\"00ac53a50000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:02:10+08:00","message":"{\"method\":\"mining.pong\",\"id\":44}"}
|
||||
{"level":"info","time":"2025-02-12T17:02:10+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1cb\",\"fromGroup\":0,\"toGroup\":1,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885d4d1dff36467de9083f756009ff4ad3a9cb3f90beb4445ef4437b490265172fbd00000194f964f2821dff0b28\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:02:12+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1cc\",\"fromGroup\":0,\"toGroup\":0,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885d9f4caa8936678b7c48df6bb9b88e854e68b11c326a40255b5b2294bdf086a3f700000194f964fa661df09b6e\",\"txsBlob\":\"00\",\"height\":12,\"targetBlob\":\"00f09b6e0000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:02:14+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1cd\",\"fromGroup\":0,\"toGroup\":2,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885dbae7edc2ac0f90d5b9ba30ec29901cc17f4ccc8aa3da0f131f548b230d456f0600000194f965024a1de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:02:15+08:00","message":"{\"id\":296,\"method\":\"mining.submit\",\"params\":{\"jobId\":\"1cd\",\"fromGroup\":0,\"toGroup\":2,\"nonce\":\"01521b8a73e2000101521b8a73e20001d5fb555300000000\",\"worker\":\"alphtest\",\"workerName\":\"1x2\"}}"}
|
||||
{"level":"info","time":"2025-02-12T17:02:15+08:00","message":"{\"result\":true,\"id\":296,\"error\":null}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:02:16+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1ce\",\"fromGroup\":0,\"toGroup\":0,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885dbb7ff01866efc377b151d740bb0dd7324ccfc7c0e54bfef000cbb7a446a11dbb00000194f9650a2e1df09b6e\",\"txsBlob\":\"00\",\"height\":12,\"targetBlob\":\"00f09b6e0000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:02:18+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1cf\",\"fromGroup\":1,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba6000000009faed3a9e08ff864500b2eb21cb8c3a22d7ea83b8c8f76db329706a79fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a9b58248357208ddcf1ccd34f424a97b18a6d1f60af9d69bcf117e59a962412dd00000194f96512121de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:02:20+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1d0\",\"fromGroup\":3,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d626775bb95f4cc5e67e340ec8fcc4a2051049b8082f65e1635179ee4b30ee2953f763400000194f96519f81dff0b28\",\"txsBlob\":\"00\",\"height\":10,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:02:22+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1d1\",\"fromGroup\":0,\"toGroup\":3,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885deaefeb135168a0b7e39b59d70673953392e6dbcd91f3340d6d1e363cd6bb019700000194f96521db1dff0b28\",\"txsBlob\":\"00\",\"height\":7,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:02:24+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1d2\",\"fromGroup\":3,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d6267753683de4e19e01575f01ff1fb3c243c0a2c086e4069a603d99ab809eb53386f3a00000194f96529c01dff0b28\",\"txsBlob\":\"00\",\"height\":10,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:02:25+08:00","message":"{\"id\":296,\"method\":\"mining.submit\",\"params\":{\"jobId\":\"1d2\",\"fromGroup\":3,\"toGroup\":3,\"nonce\":\"01521b8a73e7000101521b8a73e70001bad5525e00000000\",\"worker\":\"alphtest\",\"workerName\":\"1x2\"}}"}
|
||||
{"level":"info","time":"2025-02-12T17:02:25+08:00","message":"{\"result\":true,\"id\":296,\"error\":null}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:02:26+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1d3\",\"fromGroup\":1,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba6000000009faed3a9e08ff864500b2eb21cb8c3a22d7ea83b8c8f76db329706a79fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a64efb9f64f0c99b7ea9eea6d96c306880b307533a0b2aa4fbf1ef4353012659400000194f96531a31dff0b28\",\"txsBlob\":\"00\",\"height\":6,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:02:28+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1d4\",\"fromGroup\":3,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d6267754509e45dc11a8326ad5eac010ba0b8001b7e35b237ac469427ced9fb4693647300000194f96539881dff0b28\",\"txsBlob\":\"00\",\"height\":8,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:02:30+08:00","message":"{\"method\":\"mining.pong\",\"id\":45}"}
|
||||
{"level":"info","time":"2025-02-12T17:02:30+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1d5\",\"fromGroup\":0,\"toGroup\":2,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885d92224a6d2d9cfb3a65f042d164032b5ad321c10e3a28f0cd47f36d387570f77d00000194f965416a1de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:02:32+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1d6\",\"fromGroup\":0,\"toGroup\":3,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885d1dbba1fe43c54aa8432d09ef140928a4f7aececcee29a0c3067f8a2983354ce200000194f965494e1dff0b28\",\"txsBlob\":\"00\",\"height\":7,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:02:34+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1d7\",\"fromGroup\":2,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e20172c2df7605f0f3445c8c59d197e0c70736f6d0a59afe36e858b47ef98f5c959b600000194f96551331dff0b28\",\"txsBlob\":\"00\",\"height\":5,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:02:36+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1d8\",\"fromGroup\":3,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d626775f30f80cf4ae589fe88357581a7abf216f8dec94207673b70d09474dab9d7365700000194f96559181dff0b28\",\"txsBlob\":\"00\",\"height\":10,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:02:38+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1d9\",\"fromGroup\":0,\"toGroup\":1,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885d87f321f4f7cab6a7748b0a3ec4faef86621af608e08da39c9291e475a008dfbe00000194f96560fa1dff0b28\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:02:40+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1da\",\"fromGroup\":0,\"toGroup\":2,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885d757774de39e3513c94e84400b346d7ad6f06bc41c55b34cf85bbad688388a78100000194f96568df1de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:02:42+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1db\",\"fromGroup\":0,\"toGroup\":0,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885daed8241b860bd45badb9f572b9784b2575fc3e1dabdf14b0853124fcc9fa411600000194f96570c21df09b6e\",\"txsBlob\":\"00\",\"height\":12,\"targetBlob\":\"00f09b6e0000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:02:44+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1dc\",\"fromGroup\":3,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d62677597f54a5ed8f18d9330b01bc43ee60a86339a3109f818cde9cf21f0ca40b21eeb00000194f96578a81dff0b28\",\"txsBlob\":\"00\",\"height\":8,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:02:46+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1dd\",\"fromGroup\":2,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e20178d18b6848d9bfba7a4ddaca0b64541e5222c113d813c5aa59ff389e2da11b8d100000194f965808c1de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:02:48+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1de\",\"fromGroup\":3,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d6267758c04651e90249391ce5a2e1523e0adf8380c4d44254aa6f5df93d2fba3ba58f100000194f96588701dff0b28\",\"txsBlob\":\"00\",\"height\":10,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:02:49+08:00","message":"{\"id\":296,\"method\":\"mining.submit\",\"params\":{\"jobId\":\"1de\",\"fromGroup\":3,\"toGroup\":2,\"nonce\":\"01521b8a73f3000101521b8a73f300017f25384400000000\",\"worker\":\"alphtest\",\"workerName\":\"1x2\"}}"}
|
||||
{"level":"info","time":"2025-02-12T17:02:49+08:00","message":"{\"result\":true,\"id\":296,\"error\":null}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:02:50+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1df\",\"fromGroup\":1,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba6000000009faed3a9e08ff864500b2eb21cb8c3a22d7ea83b8c8f76db329706a79fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a97c1302332c78bf8b9720c4c155c9bffdca73844bfb73bee3935dd1523f68db500000194f96590531dac53a5\",\"txsBlob\":\"00\",\"height\":26,\"targetBlob\":\"00ac53a50000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:02:50+08:00","message":"{\"method\":\"mining.pong\",\"id\":46}"}
|
||||
{"level":"info","time":"2025-02-12T17:02:52+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1e0\",\"fromGroup\":2,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e20178a1dbca865a8b23a85f2e307b19968ae9f122f0dfed491f8b0c2a029baccfe4a00000194f96598371df79d79\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00f79d790000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:02:54+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1e1\",\"fromGroup\":1,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba6000000009faed3a9e08ff864500b2eb21cb8c3a22d7ea83b8c8f76db329706a79fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431ade2360aa0b97d375e8a1d609f89863cda4c9f9035ab1ca4248ca3b9ac1dd503400000194f965a01a1dff0b28\",\"txsBlob\":\"00\",\"height\":6,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:02:56+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1e2\",\"fromGroup\":0,\"toGroup\":1,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885dd5d7ad4d8cef116b8e87ad2d6ade940d3b592824e2a64e42ffb9b170a356cbc200000194f965a7fe1dff0b28\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:02:58+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1e3\",\"fromGroup\":1,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba6000000009faed3a9e08ff864500b2eb21cb8c3a22d7ea83b8c8f76db329706a79fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a3e7e78cd93095bc810747bbc65e145194718134c5a22d2a8ebf723c059dcb7d000000194f965afe41dac53a5\",\"txsBlob\":\"00\",\"height\":26,\"targetBlob\":\"00ac53a50000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:03:00+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1e4\",\"fromGroup\":0,\"toGroup\":3,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885d5d381a899cf9432c0cb16d9995a02ace9f0a6eed18714e861f82d93abb88aa4500000194f965b7c71dff0b28\",\"txsBlob\":\"00\",\"height\":7,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:03:01+08:00","message":"{\"id\":9,\"method\":\"alph_submitHashrate\",\"jsonrpc\":\"2.0\",\"worker\":\"alphtest\",\"workerName\":\"1x2\",\"params\":[\"41b5e300\",\"c48c782b0641a6b40b11444668d6a8d2d60c4345184cd66eaffb9e2c9f27f253\"]}"}
|
||||
{"level":"info","time":"2025-02-12T17:03:02+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1e5\",\"fromGroup\":3,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d6267753cc0fefe5ece511c51abd8822a2c336c7640edea8e8e900b38afe7e304c0c89c00000194f965bfab1dff0b28\",\"txsBlob\":\"00\",\"height\":10,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:03:04+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1e6\",\"fromGroup\":2,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e201733558c4dfcb7c9af33f15a12fbe83dfa37331db0554ffc923f9a358bb58fed1b00000194f965c78f1dff0b28\",\"txsBlob\":\"00\",\"height\":5,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:03:06+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1e7\",\"fromGroup\":1,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba6000000009faed3a9e08ff864500b2eb21cb8c3a22d7ea83b8c8f76db329706a79fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a17f76ffc57fb2b40193ee7bb9b7c4f28ba6b1621b3e60c1e09d4f95f8db406da00000194f965cf731dac53a5\",\"txsBlob\":\"00\",\"height\":26,\"targetBlob\":\"00ac53a50000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:03:08+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1e8\",\"fromGroup\":3,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d6267750f1211e1ef26b8a5d39a777df1e5f551d3cd7fdacd473d88450bf7d145971edb00000194f965d7581dff0b28\",\"txsBlob\":\"00\",\"height\":8,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:03:10+08:00","message":"{\"method\":\"mining.pong\",\"id\":47}"}
|
||||
{"level":"info","time":"2025-02-12T17:03:10+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1e9\",\"fromGroup\":1,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba6000000009faed3a9e08ff864500b2eb21cb8c3a22d7ea83b8c8f76db329706a79fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431ac5044eeb8f0c97fc4b81892b7a1cb25d6bed82b758753a6e0b1d8d5a4b10416700000194f965df3b1dac53a5\",\"txsBlob\":\"00\",\"height\":26,\"targetBlob\":\"00ac53a50000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:03:12+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1ea\",\"fromGroup\":2,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e20177f92af56c0791696baf5347c308307eecae4e11190323411d2597df028fab23f00000194f965e7201df79d79\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00f79d790000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:03:14+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1eb\",\"fromGroup\":3,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d626775e086c86458fc24f026e562f77ad37b423b311b8b3010ab218ea26505ebd0dca400000194f965ef031dff0b28\",\"txsBlob\":\"00\",\"height\":8,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:03:16+08:00","message":"{\"id\":296,\"method\":\"mining.submit\",\"params\":{\"jobId\":\"1eb\",\"fromGroup\":3,\"toGroup\":1,\"nonce\":\"01521b8a7400000101521b8a74000001c7f8115000000000\",\"worker\":\"alphtest\",\"workerName\":\"1x2\"}}"}
|
||||
{"level":"info","time":"2025-02-12T17:03:16+08:00","message":"{\"result\":true,\"id\":296,\"error\":null}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:03:16+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1ec\",\"fromGroup\":0,\"toGroup\":0,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885dc230b970716e688f4acbadcb5ae2ee224e7f7ad9b7209cfec9e482b613e6630f00000194f965f6e61df09b6e\",\"txsBlob\":\"00\",\"height\":12,\"targetBlob\":\"00f09b6e0000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:03:18+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1ed\",\"fromGroup\":2,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e20173186cef7cc8e875edd4331cfdac45f085759bba324b97927ce27da981326d9b400000194f965fecb1dff0b28\",\"txsBlob\":\"00\",\"height\":5,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:03:20+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1ee\",\"fromGroup\":1,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba6000000009faed3a9e08ff864500b2eb21cb8c3a22d7ea83b8c8f76db329706a79fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431abcd3cc05a9eb4bcf4e21abdec6ec95f65317c26cbef26586998ce26d79c7287200000194f96606ae1dac53a5\",\"txsBlob\":\"00\",\"height\":26,\"targetBlob\":\"00ac53a50000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:03:22+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1ef\",\"fromGroup\":1,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba6000000009faed3a9e08ff864500b2eb21cb8c3a22d7ea83b8c8f76db329706a79fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a23949780b65d470a4e884a7401cc4e4f34d5971b483b2a72d7751977e814802d00000194f9660e921dac53a5\",\"txsBlob\":\"00\",\"height\":26,\"targetBlob\":\"00ac53a50000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:03:24+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1f0\",\"fromGroup\":2,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e2017608e07216b40c275bd02c52766ea251d18473b72eebfaafeb9ab387af3df87b300000194f96616771dff0b28\",\"txsBlob\":\"00\",\"height\":5,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:03:26+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1f1\",\"fromGroup\":1,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba6000000009faed3a9e08ff864500b2eb21cb8c3a22d7ea83b8c8f76db329706a79fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a78fb8d053871ee82226d5636b248f43492ce9006d8e240b299e7c340a670ea3c00000194f9661e5b1de3b7ad\",\"txsBlob\":\"00\",\"height\":15,\"targetBlob\":\"00e3b7ad0000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:03:28+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1f2\",\"fromGroup\":3,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d62677523104f3d45ba371bfda23f77a5c3eb5315dcf486efc97ab4009505eaf1b1ff8300000194f96626401dff0b28\",\"txsBlob\":\"00\",\"height\":10,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:03:30+08:00","message":"{\"method\":\"mining.pong\",\"id\":48}"}
|
||||
{"level":"info","time":"2025-02-12T17:03:30+08:00","message":"{\"id\":296,\"method\":\"mining.submit\",\"params\":{\"jobId\":\"1f2\",\"fromGroup\":3,\"toGroup\":3,\"nonce\":\"01521b8a7407000101521b8a74070001edff7c7100000000\",\"worker\":\"alphtest\",\"workerName\":\"1x2\"}}"}
|
||||
{"level":"info","time":"2025-02-12T17:03:30+08:00","message":"{\"result\":true,\"id\":296,\"error\":null}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:03:30+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1f3\",\"fromGroup\":1,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba6000000009faed3a9e08ff864500b2eb21cb8c3a22d7ea83b8c8f76db329706a79fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a9f834ceb26066ebf4a745946d60369b78ac6a7a094ec888ad48ad3cfff18459c00000194f9662e231dac53a5\",\"txsBlob\":\"00\",\"height\":26,\"targetBlob\":\"00ac53a50000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:03:32+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1f4\",\"fromGroup\":3,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d62677551fe130cca871f7f9adba8b093fda2031c4ab33306c9df18d6eb473469d380a700000194f96636071dff0b28\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:03:34+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1f5\",\"fromGroup\":2,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e20172f45e978bb6293805c39a87b905b821df4c19c592248f265a91d6c0b3ec4454400000194f9663deb1df79d79\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00f79d790000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:03:36+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1f6\",\"fromGroup\":0,\"toGroup\":0,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885d9fa1dce865864c5357be2c6e878d3548ca79a1992173f5974c8c7186e33ba7f300000194f96645ce1df09b6e\",\"txsBlob\":\"00\",\"height\":12,\"targetBlob\":\"00f09b6e0000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:03:39+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1f7\",\"fromGroup\":0,\"toGroup\":0,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885d05c3662c2bb3278adad64b1ef5868a0973774cb60810cdf83b1f6afa0bb619a700000194f9664db21df09b6e\",\"txsBlob\":\"00\",\"height\":12,\"targetBlob\":\"00f09b6e0000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:03:41+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1f8\",\"fromGroup\":1,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba6000000009faed3a9e08ff864500b2eb21cb8c3a22d7ea83b8c8f76db329706a79fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a4b4b3ab2b92f9facdfd2de0f963c00b65f4837e64b6770b1dc678df0c313db3300000194f96655961de3b7ad\",\"txsBlob\":\"00\",\"height\":15,\"targetBlob\":\"00e3b7ad0000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:03:43+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1f9\",\"fromGroup\":2,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e2017d97b18157cd60faed56861848389e096bdf9914d444a89e1a498c30bc9b1fdf700000194f9665d7c1de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:03:45+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1fa\",\"fromGroup\":0,\"toGroup\":3,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885d945661ccbc24628ac287f66e94a9095ab91a53d061980977ee03c36855f9ec6600000194f966655e1dff0b28\",\"txsBlob\":\"00\",\"height\":7,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:03:47+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1fb\",\"fromGroup\":2,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e2017f548d0f49c2fc9e6c8aaf0e664faf6e56cc09f42b2e3bfd39c25c5aaee6a485900000194f9666d441dff0b28\",\"txsBlob\":\"00\",\"height\":5,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:03:49+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1fc\",\"fromGroup\":1,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba6000000009faed3a9e08ff864500b2eb21cb8c3a22d7ea83b8c8f76db329706a79fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a3b9bf1cbba0417b551815fed60488427176ec4ed49dbfe0e636903d56e45119b00000194f96675271dac53a5\",\"txsBlob\":\"00\",\"height\":26,\"targetBlob\":\"00ac53a50000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:03:50+08:00","message":"{\"method\":\"mining.pong\",\"id\":49}"}
|
||||
{"level":"info","time":"2025-02-12T17:03:51+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1fd\",\"fromGroup\":0,\"toGroup\":2,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885d8490cab85a21c890d255e70471f622cb4050c8ac6ea8f10f0bea2759e73ed45d00000194f9667d0b1de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:03:53+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1fe\",\"fromGroup\":2,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e2017760d000c0e7268eece6ab45083259f0e8a3c2c0d51b09f1b9d652ffb14e8758500000194f96684f01df79d79\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00f79d790000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:03:55+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"1ff\",\"fromGroup\":1,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba6000000009faed3a9e08ff864500b2eb21cb8c3a22d7ea83b8c8f76db329706a79fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a2eaf40ee3304894c2c8023f76584491d6a4fa3030b354d22ceda5ae6c82763bf00000194f9668cd31de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:03:57+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"200\",\"fromGroup\":1,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba6000000009faed3a9e08ff864500b2eb21cb8c3a22d7ea83b8c8f76db329706a79fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431ab40df99ede49326196c6eb1b26d40afa5efb8bda5b292ba15b8cd905d853e7ad00000194f96694b71dff0b28\",\"txsBlob\":\"00\",\"height\":6,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:03:59+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"201\",\"fromGroup\":2,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e2017b92e51c99558efd61dd0c7800336a44de988b6bda1a3a01c78578360b5c6f40500000194f9669c9c1dff0b28\",\"txsBlob\":\"00\",\"height\":5,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:04:01+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"202\",\"fromGroup\":1,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba6000000009faed3a9e08ff864500b2eb21cb8c3a22d7ea83b8c8f76db329706a79fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431aa5d0d30c22d60561b5d93e2ec79dcb00b04a7ebe9f415df653e057c6813c8b2300000194f966a47f1de3b7ad\",\"txsBlob\":\"00\",\"height\":15,\"targetBlob\":\"00e3b7ad0000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:04:03+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"203\",\"fromGroup\":2,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e2017e2f14f67245d09571118e7e00623a255fd3ed8bf6e81b6e269286a0ccb0a174300000194f966ac631df79d79\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00f79d790000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:04:05+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"204\",\"fromGroup\":0,\"toGroup\":3,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885ded0ecab1bad068d4e10b52d46eeaeac073a847ca351a47afd1bde016a686062700000194f966b4461dff0b28\",\"txsBlob\":\"00\",\"height\":7,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:04:06+08:00","message":"{\"id\":296,\"method\":\"mining.submit\",\"params\":{\"jobId\":\"204\",\"fromGroup\":0,\"toGroup\":3,\"nonce\":\"01521b8a7419000101521b8a74190001a78e1d3800000000\",\"worker\":\"alphtest\",\"workerName\":\"1x2\"}}"}
|
||||
{"level":"info","time":"2025-02-12T17:04:06+08:00","message":"{\"result\":true,\"id\":296,\"error\":null}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:04:07+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"205\",\"fromGroup\":3,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d6267751ca25478a8e3c8064b3b1ef258a641fb251d1db695994c22ada91730d580693500000194f966bc2c1dff0b28\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:04:07+08:00","message":"{\"id\":296,\"method\":\"mining.submit\",\"params\":{\"jobId\":\"204\",\"fromGroup\":0,\"toGroup\":3,\"nonce\":\"01521b8a7419000101521b8a741900017a3ced6c00000000\",\"worker\":\"alphtest\",\"workerName\":\"1x2\"}}"}
|
||||
{"level":"info","time":"2025-02-12T17:04:07+08:00","message":"{\"id\":296,\"result\":null,\"error\":[34,\"Job staled\",null]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:04:09+08:00","message":"{\"id\":296,\"method\":\"mining.submit\",\"params\":{\"jobId\":\"205\",\"fromGroup\":3,\"toGroup\":0,\"nonce\":\"01521b8a741a000101521b8a741a00012504187900000000\",\"worker\":\"alphtest\",\"workerName\":\"1x2\"}}"}
|
||||
{"level":"info","time":"2025-02-12T17:04:09+08:00","message":"{\"result\":true,\"id\":296,\"error\":null}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:04:09+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"206\",\"fromGroup\":2,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e201704c46bcf5b993d35c79f1f588a6d66807f1f8d8a6a78e3208dbcefe224628e7400000194f966c4101de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:04:10+08:00","message":"{\"method\":\"mining.pong\",\"id\":50}"}
|
||||
{"level":"info","time":"2025-02-12T17:04:10+08:00","message":"{\"id\":296,\"method\":\"mining.submit\",\"params\":{\"jobId\":\"206\",\"fromGroup\":2,\"toGroup\":2,\"nonce\":\"01521b8a741b000101521b8a741b0001c08e0c3700000000\",\"worker\":\"alphtest\",\"workerName\":\"1x2\"}}"}
|
||||
{"level":"info","time":"2025-02-12T17:04:10+08:00","message":"{\"result\":true,\"id\":296,\"error\":null}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:04:11+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"207\",\"fromGroup\":3,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d626775269b35ab72efff96911c5984beb741b914bad9b6566c218690c2b0418734d2b800000194f966cbf31dff0b28\",\"txsBlob\":\"00\",\"height\":10,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:04:13+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"208\",\"fromGroup\":2,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e20175df04eeb47a0d5c66ae499111621ba1fc8a61a4b46f7dccba4f6c7e01fd22a8100000194f966d3d81de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:04:15+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"209\",\"fromGroup\":1,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba6000000009faed3a9e08ff864500b2eb21cb8c3a22d7ea83b8c8f76db329706a79fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a5ac43cba78b2dbaa3c58355a86fd7894b1e584665032dab94568e146f9c6a61000000194f966dbbb1de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:04:17+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"20a\",\"fromGroup\":1,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba6000000009faed3a9e08ff864500b2eb21cb8c3a22d7ea83b8c8f76db329706a79fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a0b03f7a3751ec26312cf8542ddd9a4a57e200973afa980f7af03c0a95de94abe00000194f966e3a21de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:04:19+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"20b\",\"fromGroup\":2,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e20171ffe3b66a8d48da2b918bb7962a151d13e44652ddb33f76f00bb3960cc67cb4b00000194f966eb831de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:04:21+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"20c\",\"fromGroup\":0,\"toGroup\":1,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885da1bff27d5e883c043ffeedb2efe6860abed9eda8c1b08dbe3fe8ac4a67d66b8200000194f966f3671dff0b28\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:04:23+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"20d\",\"fromGroup\":1,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba6000000009faed3a9e08ff864500b2eb21cb8c3a22d7ea83b8c8f76db329706a79fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a52c7ad636bdb24681545818c15bd2159b6506676f278a28e795d048d87af38ae00000194f966fb4b1dac53a5\",\"txsBlob\":\"00\",\"height\":26,\"targetBlob\":\"00ac53a50000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:04:25+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"20e\",\"fromGroup\":1,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba6000000009faed3a9e08ff864500b2eb21cb8c3a22d7ea83b8c8f76db329706a79fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a5f658df80f94f97ba6d93827d18bab3ccd3aed5eaea56ada5427d90ef739a93e00000194f96703301dac53a5\",\"txsBlob\":\"00\",\"height\":26,\"targetBlob\":\"00ac53a50000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:04:27+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"20f\",\"fromGroup\":2,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e2017b377f98694b465aad697f6b6ddffc5ce0976342eab6b816d8377cdb50fd32b8600000194f9670b141df79d79\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00f79d790000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:04:29+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"210\",\"fromGroup\":1,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba6000000009faed3a9e08ff864500b2eb21cb8c3a22d7ea83b8c8f76db329706a79fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a0b7f73ad4808fea3cfa28302e39983cc43d69d07af37b8904eae892d0b5d5dda00000194f96712f71de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:04:30+08:00","message":"{\"method\":\"mining.pong\",\"id\":51}"}
|
||||
{"level":"info","time":"2025-02-12T17:04:31+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"211\",\"fromGroup\":3,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d62677567d0b1cfd229c72c9c1bd28a8dc77753898b60103e7fd688619c786c17ac82f600000194f9671ade1dff0b28\",\"txsBlob\":\"00\",\"height\":10,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:04:33+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"212\",\"fromGroup\":3,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d626775931e74ecdeceed3e517fae93ca9cf96dc796c4fa2e902ab6e4db15ab38bc0c7000000194f96722c01dff0b28\",\"txsBlob\":\"00\",\"height\":8,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:04:35+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"213\",\"fromGroup\":3,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d626775294629c6808711f423a5c630a551d5a3ddb3922175d11e64f0ae1c28fc22434200000194f9672aa41dff0b28\",\"txsBlob\":\"00\",\"height\":8,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:04:37+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"214\",\"fromGroup\":2,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e20172020114b69162f75113eba5d1a95fb1a561acbe06f42f521528f444d0740b7ac00000194f96732871df79d79\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00f79d790000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:04:39+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"215\",\"fromGroup\":0,\"toGroup\":3,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885d5230439f2d42e861e002025df3f6f5a1f49444421adcc8a82c9077c09517d22f00000194f9673a6a1dff0b28\",\"txsBlob\":\"00\",\"height\":7,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:04:41+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"216\",\"fromGroup\":0,\"toGroup\":0,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885d24d916d052f63c2c9d14a340d0a2bf1ecb2735c05b056d1d7cb5bf59764087b400000194f967424f1df09b6e\",\"txsBlob\":\"00\",\"height\":12,\"targetBlob\":\"00f09b6e0000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:04:43+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"217\",\"fromGroup\":3,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d626775b7d78de77ecbd98bd9538b3893fee1c2faa0fd6d3dca364956ae52437d74062b00000194f9674a341dff0b28\",\"txsBlob\":\"00\",\"height\":10,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:04:45+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"218\",\"fromGroup\":0,\"toGroup\":3,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885d9d3df66fe35a51b17f101fb1ed8d2f39113da2a62a1226f49e10eeccb6d0ab6a00000194f96752171dff0b28\",\"txsBlob\":\"00\",\"height\":7,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:04:47+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"219\",\"fromGroup\":1,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba6000000009faed3a9e08ff864500b2eb21cb8c3a22d7ea83b8c8f76db329706a79fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a1632daf6791ac129caacb7e345ff36bbdb3677ce2b6e82ccfe0a6ba8bcd80e3b00000194f96759fb1dac53a5\",\"txsBlob\":\"00\",\"height\":26,\"targetBlob\":\"00ac53a50000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:04:49+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"21a\",\"fromGroup\":0,\"toGroup\":3,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885df8f4fcb9e4188d9926f0530c60bb5d5c8b914510f0622ada2474cf8de13298fb00000194f96761df1dff0b28\",\"txsBlob\":\"00\",\"height\":7,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:04:50+08:00","message":"{\"method\":\"mining.pong\",\"id\":52}"}
|
||||
{"level":"info","time":"2025-02-12T17:04:51+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"21b\",\"fromGroup\":1,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba6000000009faed3a9e08ff864500b2eb21cb8c3a22d7ea83b8c8f76db329706a79fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431ad5345ba45ad38f9b20324b692a4d864e9aab511488e2697fccc18cfa737268ca00000194f96769c31de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:04:53+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"21c\",\"fromGroup\":3,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d62677541c0948f32e7e91976ebbc525602a14385abdea91b2587f2fd46144fc430adf900000194f96771a71dff0b28\",\"txsBlob\":\"00\",\"height\":8,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:04:55+08:00","message":"{\"id\":296,\"method\":\"mining.submit\",\"params\":{\"jobId\":\"21c\",\"fromGroup\":3,\"toGroup\":1,\"nonce\":\"01521b8a7431000101521b8a74310001f7a7817400000000\",\"worker\":\"alphtest\",\"workerName\":\"1x2\"}}"}
|
||||
{"level":"info","time":"2025-02-12T17:04:55+08:00","message":"{\"result\":true,\"id\":296,\"error\":null}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:04:55+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"21d\",\"fromGroup\":2,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e2017e2a2ca8bca46342e0b98c98ebb9b0a57f263e8325bbbcb068d9f712fe2b8c0e100000194f967798b1dff0b28\",\"txsBlob\":\"00\",\"height\":5,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:04:57+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"21e\",\"fromGroup\":1,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba6000000009faed3a9e08ff864500b2eb21cb8c3a22d7ea83b8c8f76db329706a79fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a4cb3b625fd64a7468c783661b8fe774f731f63d286ccf5b2b8f15f0adfe42a9500000194f967816f1de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:04:59+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"21f\",\"fromGroup\":1,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba6000000009faed3a9e08ff864500b2eb21cb8c3a22d7ea83b8c8f76db329706a79fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431aff78d6758d8d031a2021333a227662cbfac6c980b7b620550eb00d1b89cdd2d100000194f96789531de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:05:01+08:00","message":"{\"id\":9,\"method\":\"alph_submitHashrate\",\"jsonrpc\":\"2.0\",\"worker\":\"alphtest\",\"workerName\":\"1x2\",\"params\":[\"41903d80\",\"c48c782b0641a6b40b11444668d6a8d2d60c4345184cd66eaffb9e2c9f27f253\"]}"}
|
||||
{"level":"info","time":"2025-02-12T17:05:01+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"220\",\"fromGroup\":3,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d6267754ad16df69845bd848ac44e36d263ee6955e411170b7bc244a0f56c349fef497000000194f96791381dff0b28\",\"txsBlob\":\"00\",\"height\":10,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:05:02+08:00","message":"{\"id\":296,\"method\":\"mining.submit\",\"params\":{\"jobId\":\"220\",\"fromGroup\":3,\"toGroup\":3,\"nonce\":\"01521b8a7435000101521b8a7435000106c1af3b00000000\",\"worker\":\"alphtest\",\"workerName\":\"1x2\"}}"}
|
||||
{"level":"info","time":"2025-02-12T17:05:02+08:00","message":"{\"result\":true,\"id\":296,\"error\":null}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:05:03+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"221\",\"fromGroup\":1,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba6000000009faed3a9e08ff864500b2eb21cb8c3a22d7ea83b8c8f76db329706a79fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a8d50c5143f80d172a4f8a2cb5c241363bfdd628f01ac817189437789bca0b40200000194f967991a1de3b7ad\",\"txsBlob\":\"00\",\"height\":15,\"targetBlob\":\"00e3b7ad0000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:05:05+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"222\",\"fromGroup\":0,\"toGroup\":3,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885d93a6efd2d5c73363c0ef057f7a807400c8a39def03fcb330bda87b7e5beebc2e00000194f967a0fe1dff0b28\",\"txsBlob\":\"00\",\"height\":7,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:05:07+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"223\",\"fromGroup\":1,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba6000000009faed3a9e08ff864500b2eb21cb8c3a22d7ea83b8c8f76db329706a79fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a3a80908bc5f1a4f00e8d7c67fc1e10f94a5f591219ebd2f5869c0e63ca83aba600000194f967a8e31dac53a5\",\"txsBlob\":\"00\",\"height\":26,\"targetBlob\":\"00ac53a50000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:05:09+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"224\",\"fromGroup\":0,\"toGroup\":0,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885daa9cfb338fd7a2dd629d818f7de7f5cc10b1a9b6b29551282cc9cfa9e178bfc000000194f967b0c61df09b6e\",\"txsBlob\":\"00\",\"height\":12,\"targetBlob\":\"00f09b6e0000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:05:10+08:00","message":"{\"method\":\"mining.pong\",\"id\":53}"}
|
||||
{"level":"info","time":"2025-02-12T17:05:10+08:00","message":"{\"id\":296,\"method\":\"mining.submit\",\"params\":{\"jobId\":\"224\",\"fromGroup\":0,\"toGroup\":0,\"nonce\":\"01521b8a7439000101521b8a743900017ff1563100000000\",\"worker\":\"alphtest\",\"workerName\":\"1x2\"}}"}
|
||||
{"level":"info","time":"2025-02-12T17:05:10+08:00","message":"{\"result\":true,\"id\":296,\"error\":null}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:05:11+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"225\",\"fromGroup\":2,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e20171fd71bb4224e154941137d016c637308c772502ff293dda1ebe4a0a57273305d00000194f967b8ac1dff0b28\",\"txsBlob\":\"00\",\"height\":5,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:05:14+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"226\",\"fromGroup\":2,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e20172a1683ce377bd56a3184584cc3bc1d602661afb35c097af72b0dddc07d82bcae00000194f967c08f1dff0b28\",\"txsBlob\":\"00\",\"height\":5,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:05:15+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"227\",\"fromGroup\":1,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba6000000009faed3a9e08ff864500b2eb21cb8c3a22d7ea83b8c8f76db329706a79fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a88730dae27c597d4ef976ef618c84cb9fd77d70077b3dc37257061b5791ba81300000194f967c8741dac53a5\",\"txsBlob\":\"00\",\"height\":26,\"targetBlob\":\"00ac53a50000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:05:17+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"228\",\"fromGroup\":1,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba6000000009faed3a9e08ff864500b2eb21cb8c3a22d7ea83b8c8f76db329706a79fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a93f069b758dec17aab123f717c14cf19b3a217df21a31ad74ee55607970afaa200000194f967d0571dff0b28\",\"txsBlob\":\"00\",\"height\":6,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:05:20+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"229\",\"fromGroup\":2,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e20176e2fe9dcb823c2056ee6cbbc6e4b0350e6fc6cf93130fb6d36f0772396f0d27e00000194f967d83c1df79d79\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00f79d790000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:05:22+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"22a\",\"fromGroup\":2,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e20171de52fb038348feadea6400847c4f119aac0231134567f7e4d4c6f3bec882c1800000194f967e01f1de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:05:24+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"22b\",\"fromGroup\":1,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba6000000009faed3a9e08ff864500b2eb21cb8c3a22d7ea83b8c8f76db329706a79fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a6347951525bf0c04fd9fe4eda03b2dd9bcd811ca158059d85cb25036e49e797e00000194f967e8031dff0b28\",\"txsBlob\":\"00\",\"height\":6,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:05:26+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"22c\",\"fromGroup\":2,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e2017917fdc05a7e14043a84797101e291461b5cd92bc77b9400ba65549eae024ad6f00000194f967efe71df79d79\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00f79d790000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:05:28+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"22d\",\"fromGroup\":1,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba6000000009faed3a9e08ff864500b2eb21cb8c3a22d7ea83b8c8f76db329706a79fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a814a9d6b2d8137880fd6574a74dec4f3568fb50d55423f392abd31b85c56a63700000194f967f7ca1de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:05:29+08:00","message":"{\"id\":296,\"method\":\"mining.submit\",\"params\":{\"jobId\":\"22d\",\"fromGroup\":1,\"toGroup\":1,\"nonce\":\"01521b8a7442000101521b8a7442000107ad217200000000\",\"worker\":\"alphtest\",\"workerName\":\"1x2\"}}"}
|
||||
{"level":"info","time":"2025-02-12T17:05:29+08:00","message":"{\"result\":true,\"id\":296,\"error\":null}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:05:30+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"22e\",\"fromGroup\":0,\"toGroup\":1,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885d48b1ec721f050ee5df66e6e4db39873d2db6da2b1e1510027679132c64332bc200000194f967ffae1dff0b28\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:05:31+08:00","message":"{\"method\":\"mining.pong\",\"id\":54}"}
|
||||
{"level":"info","time":"2025-02-12T17:05:32+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"22f\",\"fromGroup\":2,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e2017b50bc9a78b858d87841334e8f73fa9a3e240e6b05a9f5ea38f5311f3585966f400000194f96807941dff0b28\",\"txsBlob\":\"00\",\"height\":5,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:05:33+08:00","message":"{\"id\":296,\"method\":\"mining.submit\",\"params\":{\"jobId\":\"22f\",\"fromGroup\":2,\"toGroup\":3,\"nonce\":\"01521b8a7444000101521b8a74440001c0096b4500000000\",\"worker\":\"alphtest\",\"workerName\":\"1x2\"}}"}
|
||||
{"level":"info","time":"2025-02-12T17:05:33+08:00","message":"{\"result\":true,\"id\":296,\"error\":null}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:05:34+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"230\",\"fromGroup\":2,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e2017c7b5b651abe26cccd49fe74598009c8816ac63051a9b77b35d29383bae9d97ae00000194f9680f771df79d79\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00f79d790000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:05:34+08:00","message":"{\"id\":296,\"method\":\"mining.submit\",\"params\":{\"jobId\":\"230\",\"fromGroup\":2,\"toGroup\":1,\"nonce\":\"01521b8a7445000101521b8a74450001a1084a0b00000000\",\"worker\":\"alphtest\",\"workerName\":\"1x2\"}}"}
|
||||
{"level":"info","time":"2025-02-12T17:05:34+08:00","message":"{\"result\":true,\"id\":296,\"error\":null}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:05:36+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"231\",\"fromGroup\":2,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e20173b197dd1dd6ef8dad673fa8d05d35b017146a86c570680f8cab0f3b5e95ce59b00000194f968175b1de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:05:36+08:00","message":"{\"id\":296,\"method\":\"mining.submit\",\"params\":{\"jobId\":\"231\",\"fromGroup\":2,\"toGroup\":2,\"nonce\":\"01521b8a7446000101521b8a74460001d4a17a0800000000\",\"worker\":\"alphtest\",\"workerName\":\"1x2\"}}"}
|
||||
{"level":"info","time":"2025-02-12T17:05:36+08:00","message":"{\"result\":true,\"id\":296,\"error\":null}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:05:38+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"232\",\"fromGroup\":0,\"toGroup\":1,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885d11ef94fca04296493cf13bfcae003545da72e2f99b7069cf7f626eadc024f3bc00000194f9681f3e1dff0b28\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:05:40+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"233\",\"fromGroup\":0,\"toGroup\":1,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885dfe6e7262eeec58a634c65392a46f843c224d14f51a77673ecf9ed4a15e4a9f7600000194f96827221dff0b28\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:05:42+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"234\",\"fromGroup\":3,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d6267757ec902afe39175b4c1e167372af14e86f6894064a4ddd6a3ca9c20ea56961d2000000194f9682f081dff0b28\",\"txsBlob\":\"00\",\"height\":8,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:05:44+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"235\",\"fromGroup\":3,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d6267759629efb3a5448ee6f841f222271fb2af207c9f63f7414d607ec96ac3e9d7609c00000194f96836eb1dff0b28\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:05:46+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"236\",\"fromGroup\":0,\"toGroup\":1,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885d1113be76a9f42de760d0d9976b5e4927de70a7a949919879f7ac63d3b7b02bfe00000194f9683ece1dff0b28\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:05:48+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"237\",\"fromGroup\":1,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba6000000009faed3a9e08ff864500b2eb21cb8c3a22d7ea83b8c8f76db329706a79fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a7808413a86413ebf1d2859183bf73fedcf475d141da1a84a3f6e1cdaa28228fd00000194f96846b31dac53a5\",\"txsBlob\":\"00\",\"height\":26,\"targetBlob\":\"00ac53a50000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:05:50+08:00","message":"{\"method\":\"mining.pong\",\"id\":55}"}
|
||||
{"level":"info","time":"2025-02-12T17:05:50+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"238\",\"fromGroup\":1,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba6000000009faed3a9e08ff864500b2eb21cb8c3a22d7ea83b8c8f76db329706a79fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431ad58ea7e8bb4c0bcf6fbb814dd2550f8ba070981e11a46854619bddbcc249dd4900000194f9684e971dff0b28\",\"txsBlob\":\"00\",\"height\":6,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:05:52+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"239\",\"fromGroup\":2,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e201786f7437778f71c3c8e3fd98624fc65401bc53d9150356021d1be70159d13d50300000194f968567c1dff0b28\",\"txsBlob\":\"00\",\"height\":5,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:05:54+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"23a\",\"fromGroup\":2,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e2017d0f037516f3ca713499f50c929c47239bb33ff796661b6c968a6c5d0e1a2033200000194f9685e601dff0b28\",\"txsBlob\":\"00\",\"height\":5,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:05:56+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"23b\",\"fromGroup\":2,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e201777a94f70e0059e3239552352bb0c51682b77dcac1bbe4f1f4d39b80f6d7c515000000194f96866441df79d79\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00f79d790000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:05:58+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"23c\",\"fromGroup\":1,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba6000000009faed3a9e08ff864500b2eb21cb8c3a22d7ea83b8c8f76db329706a79fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a4c68f207189a3e3a9f6a954e9252fd69833931852c72a27a349e4931389d095c00000194f9686e261de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:06:00+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"23d\",\"fromGroup\":2,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e201791f7857dda612d0d6cf25229b90db60b4c2992b470cd510c3952089e414ea5e600000194f968760b1de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:06:02+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"23e\",\"fromGroup\":3,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d626775e25cdca4c7a0f24d913f442d9bde8020dfa1db2b51e5274e0e95d94c5a1f3c8500000194f9687df01dff0b28\",\"txsBlob\":\"00\",\"height\":8,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:06:04+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"23f\",\"fromGroup\":1,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba6000000009faed3a9e08ff864500b2eb21cb8c3a22d7ea83b8c8f76db329706a79fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a9f624b271e5c5ec63c20d150c930f8399bf9c0d443cecfae2648e11233bbf72d00000194f96885d31dff0b28\",\"txsBlob\":\"00\",\"height\":6,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:06:06+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"240\",\"fromGroup\":3,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d626775eb01b1b29f57c24faae6327c5c51dc2a9ff41f792337d0cefcf48371ef69b3aa00000194f9688db91dff0b28\",\"txsBlob\":\"00\",\"height\":10,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:06:08+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"241\",\"fromGroup\":0,\"toGroup\":2,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885d0a9c9726a2d22bb6abdb71b8d2a1bd6a40e97a49b299b1cb3ca4e3a12938301500000194f968959a1de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:06:10+08:00","message":"{\"method\":\"mining.pong\",\"id\":56}"}
|
||||
{"level":"info","time":"2025-02-12T17:06:10+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"242\",\"fromGroup\":2,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e20170d5af2c8d33e2b01de9029a19af6e0fb73285c632d5cc8d0ff061e89c52be5e200000194f9689d7f1df79d79\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00f79d790000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:06:12+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"243\",\"fromGroup\":3,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d62677582155ecc672e571652f1703b5938a5f06202a19fb53c85466b1ad903ed63d58800000194f968a5651dff0b28\",\"txsBlob\":\"00\",\"height\":10,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:06:14+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"244\",\"fromGroup\":2,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e2017600fa6c81f86e0f4eeb1d42c52f346a82390f2c21ddf01ed56545b8fe894ba7400000194f968ad471de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:06:16+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"245\",\"fromGroup\":1,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba6000000009faed3a9e08ff864500b2eb21cb8c3a22d7ea83b8c8f76db329706a79fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431ae12b240d2b260a61bf7c2b1c5efb9cec3186832c74b05b88b5310d05ce8f3be200000194f968b52b1de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:06:18+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"246\",\"fromGroup\":0,\"toGroup\":1,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885dd102b76085dd12fb083289148bec3d715d3e4259dc7d6ae23de9b42694b3dfe800000194f968bd0e1dff0b28\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:06:20+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"247\",\"fromGroup\":1,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba6000000009faed3a9e08ff864500b2eb21cb8c3a22d7ea83b8c8f76db329706a79fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431ae0d5882a6aa44a0069f2a2147619ffc1b570141668e59bc1d7b0e7be9de2e5b100000194f968c4f21de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:06:22+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"248\",\"fromGroup\":0,\"toGroup\":2,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885dc8077c83420ed8a7f96d87b67685d2216a8a08648acf10d83928ed09c4730dcf00000194f968ccd61de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:06:24+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"249\",\"fromGroup\":3,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d6267751f65c1afd01df861817210f1de73980c231104f292f2c807535aa3a3dcfbd50800000194f968d4bc1dff0b28\",\"txsBlob\":\"00\",\"height\":10,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:06:26+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"24a\",\"fromGroup\":2,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e20175ecb01af0c3be8e53c243728a6135ecf4bd383543afc441f016a0018fda42e8700000194f968dc9f1df79d79\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00f79d790000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:06:28+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"24b\",\"fromGroup\":0,\"toGroup\":0,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885df102a0b1cfec83c14a106e43130bcaaf7ae52bdc1699243a3f4c039a491b9cda00000194f968e4821df09b6e\",\"txsBlob\":\"00\",\"height\":12,\"targetBlob\":\"00f09b6e0000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:06:30+08:00","message":"{\"method\":\"mining.pong\",\"id\":57}"}
|
||||
{"level":"info","time":"2025-02-12T17:06:30+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"24c\",\"fromGroup\":3,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d62677547423944773aedf5f4343edc896d9606a6b88e483f722cb42b1269d53275e7eb00000194f968ec671dff0b28\",\"txsBlob\":\"00\",\"height\":10,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:06:32+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"24d\",\"fromGroup\":2,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e201757e8a32c600d5b00604c46d7d5c64bb66452a0aa590f1bd32e19c2f5017c915800000194f968f44d1dff0b28\",\"txsBlob\":\"00\",\"height\":5,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:06:34+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"24e\",\"fromGroup\":3,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d62677599d9b0180a6fbb0a6a2171f91f341fde9f156a6d11b86af00b7816e053932e2d00000194f968fc2f1dff0b28\",\"txsBlob\":\"00\",\"height\":10,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:06:36+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"24f\",\"fromGroup\":2,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e201700b568c8d5dfedcbaddd07358d66d8f5089e9c0edd1007636f553a1cbd7c3f2500000194f96904131df79d79\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00f79d790000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:06:38+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"250\",\"fromGroup\":0,\"toGroup\":1,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885da417bc557dfa1920acd89ffc6f4817c1849e10f66147f44a15b4e0b773a377bc00000194f9690bf61dff0b28\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:06:40+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"251\",\"fromGroup\":1,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba6000000009faed3a9e08ff864500b2eb21cb8c3a22d7ea83b8c8f76db329706a79fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431ad052ece5f3fd4f9213705d49f3d0dabb2603adbcd433349101f698bf1b79993100000194f96913db1dac53a5\",\"txsBlob\":\"00\",\"height\":26,\"targetBlob\":\"00ac53a50000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:06:42+08:00","message":"{\"id\":296,\"method\":\"mining.submit\",\"params\":{\"jobId\":\"251\",\"fromGroup\":1,\"toGroup\":3,\"nonce\":\"01521b8a7466000101521b8a74660001d513a14d00000000\",\"worker\":\"alphtest\",\"workerName\":\"1x2\"}}"}
|
||||
{"level":"info","time":"2025-02-12T17:06:42+08:00","message":"{\"result\":true,\"id\":296,\"error\":null}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:06:42+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"252\",\"fromGroup\":3,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d626775ad33921052539477e56de368e30ae4febc053480037f0665477eb17f13bfa30600000194f96919161dff0b28\",\"txsBlob\":\"00\",\"height\":10,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:06:44+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"253\",\"fromGroup\":1,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba6000000030e1deb3c375df52b56d0eca7c9e117b2ba1e89e2115394b1cd757e879fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431ad7b8e19aba8bd1a7495e3249271d2696932f3a9b38af71cb127074e560573cb900000194f96920fb1da8e72d\",\"txsBlob\":\"00\",\"height\":27,\"targetBlob\":\"00a8e72d0000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:06:46+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"254\",\"fromGroup\":1,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba6000000009faed3a9e08ff864500b2eb21cb8c3a22d7ea83b8c8f76db329706a79fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a6c158896f97036698f22b8b8328f49e469f41237755a77e70cde48940b32564c00000194f96928de1de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:06:48+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"255\",\"fromGroup\":3,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d626775ab5c4fcde4c8cada10a33ef874128599f27e1f5e0043c1c468c8ce115d234e6300000194f96930c41dff0b28\",\"txsBlob\":\"00\",\"height\":8,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:06:50+08:00","message":"{\"method\":\"mining.pong\",\"id\":58}"}
|
||||
{"level":"info","time":"2025-02-12T17:06:50+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"256\",\"fromGroup\":3,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d6267750b5ad54e526d5a57f3e1e7e61a4c62fd1e2573c1d48758f099f90af4b247d6f800000194f96938a81dff0b28\",\"txsBlob\":\"00\",\"height\":8,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:06:52+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"257\",\"fromGroup\":3,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d6267757a6ed04c616da933753562c1fb0d55da01d1edf02c9b353edf74af8b4b3e84af00000194f969408b1dff0b28\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:06:54+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"258\",\"fromGroup\":1,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba6000000030e1deb3c375df52b56d0eca7c9e117b2ba1e89e2115394b1cd757e879fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a416b65734d525bdcfa0bc66d2bffcd6c3c15524afcd47d59023bfbdec888855200000194f969486e1dff0b28\",\"txsBlob\":\"00\",\"height\":6,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:06:55+08:00","message":"{\"id\":296,\"method\":\"mining.submit\",\"params\":{\"jobId\":\"258\",\"fromGroup\":1,\"toGroup\":0,\"nonce\":\"01521b8a746d000101521b8a746d0001cfb14a6600000000\",\"worker\":\"alphtest\",\"workerName\":\"1x2\"}}"}
|
||||
{"level":"info","time":"2025-02-12T17:06:55+08:00","message":"{\"result\":true,\"id\":296,\"error\":null}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:06:56+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"259\",\"fromGroup\":0,\"toGroup\":3,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885d0d64cb56fdfa2faef9b2d23685b75f01e42a2d56787c00f7dd96efc19095de5100000194f96950531dff0b28\",\"txsBlob\":\"00\",\"height\":7,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:06:58+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"25a\",\"fromGroup\":3,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d62677568400c033e21813b8a4deaac1bf629f415ddc264db71ea96f6f175a469710ef800000194f96958381dff0b28\",\"txsBlob\":\"00\",\"height\":8,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:07:00+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"25b\",\"fromGroup\":3,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d626775dbfb7da2573b7e203a4c252fa84c076c319d4dcdba9109b4a591822985bb47dd00000194f969601c1dff0b28\",\"txsBlob\":\"00\",\"height\":10,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:07:01+08:00","message":"{\"id\":9,\"method\":\"alph_submitHashrate\",\"jsonrpc\":\"2.0\",\"worker\":\"alphtest\",\"workerName\":\"1x2\",\"params\":[\"41a7f980\",\"c48c782b0641a6b40b11444668d6a8d2d60c4345184cd66eaffb9e2c9f27f253\"]}"}
|
||||
{"level":"info","time":"2025-02-12T17:07:02+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"25c\",\"fromGroup\":2,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e201788f3644331dbed33f833ae0bce64edb423a8e326a6eda58e73b51ef55ad23b6d00000194f96968011de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:07:02+08:00","message":"{\"id\":296,\"method\":\"mining.submit\",\"params\":{\"jobId\":\"25c\",\"fromGroup\":2,\"toGroup\":2,\"nonce\":\"01521b8a7471000101521b8a74710001fb3be70700000000\",\"worker\":\"alphtest\",\"workerName\":\"1x2\"}}"}
|
||||
{"level":"info","time":"2025-02-12T17:07:02+08:00","message":"{\"result\":true,\"id\":296,\"error\":null}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:07:04+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"25d\",\"fromGroup\":3,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d626775d38e93fd34e82b43119d7ce986b3704de3430130f46c7370a3e22f4f3ff977dd00000194f9696fe41dff0b28\",\"txsBlob\":\"00\",\"height\":10,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:07:06+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"25e\",\"fromGroup\":3,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d626775d1104e4db09eccf2dbaa5a9386ca9e9c89fcf5ec69d22cf5072318d26533739b00000194f96977c81dff0b28\",\"txsBlob\":\"00\",\"height\":8,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:07:08+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"25f\",\"fromGroup\":0,\"toGroup\":3,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885dfcdfdc5405e1bbfe6b29b5ccdb6cc64b8df6155023624359f6dad2d78ed1def200000194f9697faa1dff0b28\",\"txsBlob\":\"00\",\"height\":7,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:07:10+08:00","message":"{\"method\":\"mining.pong\",\"id\":59}"}
|
||||
{"level":"info","time":"2025-02-12T17:07:10+08:00","message":"{\"id\":296,\"method\":\"mining.submit\",\"params\":{\"jobId\":\"25f\",\"fromGroup\":0,\"toGroup\":3,\"nonce\":\"01521b8a7474000101521b8a747400011524277000000000\",\"worker\":\"alphtest\",\"workerName\":\"1x2\"}}"}
|
||||
{"level":"info","time":"2025-02-12T17:07:10+08:00","message":"{\"result\":true,\"id\":296,\"error\":null}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:07:10+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"260\",\"fromGroup\":1,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba6000000030e1deb3c375df52b56d0eca7c9e117b2ba1e89e2115394b1cd757e879fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431ac67827988f6aa516a2e0cd4d13f82251a4f4cdeab61e658147bfc761bfc1549500000194f969878f1da8e72d\",\"txsBlob\":\"00\",\"height\":27,\"targetBlob\":\"00a8e72d0000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:07:12+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"261\",\"fromGroup\":1,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba6000000030e1deb3c375df52b56d0eca7c9e117b2ba1e89e2115394b1cd757e879fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431ac5ff88fe7090418f0610bb216decc430b1658afab49116647fe8484f37f4061000000194f9698f731de3b7ad\",\"txsBlob\":\"00\",\"height\":15,\"targetBlob\":\"00e3b7ad0000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:07:14+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"262\",\"fromGroup\":2,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e20174d6f117c27b09dcfa6d1e0aa5b2f3398ce79e2e39389c80b27b5853bf42041ce00000194f96997581df79d79\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00f79d790000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:07:16+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"263\",\"fromGroup\":3,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d6267756d1f891c531bf1b05b5f1415af0d91ff84a5443a6ce2945d2cf54912ddce563000000194f9699f3c1dff0b28\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:07:18+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"264\",\"fromGroup\":1,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba6000000030e1deb3c375df52b56d0eca7c9e117b2ba1e89e2115394b1cd757e879fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a629a6e2a984bafe46607cd7a7fc6aba9fe2063a9063715bafb1f76d46c31303100000194f969a71f1dff0b28\",\"txsBlob\":\"00\",\"height\":6,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:07:20+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"265\",\"fromGroup\":0,\"toGroup\":0,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885dad75290fbb8f56d8895c9845598b27d51785299776a9b5ef240d42d47f2a8c8900000194f969af021df09b6e\",\"txsBlob\":\"00\",\"height\":12,\"targetBlob\":\"00f09b6e0000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:07:22+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"266\",\"fromGroup\":3,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d6267754e003525eb7ad41fe01b19f3c5a1c7c7b9c4a16c48a2df68ca4859dc426bec7500000194f969b6e81dff0b28\",\"txsBlob\":\"00\",\"height\":10,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:07:24+08:00","message":"{\"id\":296,\"method\":\"mining.submit\",\"params\":{\"jobId\":\"266\",\"fromGroup\":3,\"toGroup\":3,\"nonce\":\"01521b8a747b000101521b8a747b0001c650345f00000000\",\"worker\":\"alphtest\",\"workerName\":\"1x2\"}}"}
|
||||
{"level":"info","time":"2025-02-12T17:07:24+08:00","message":"{\"result\":true,\"id\":296,\"error\":null}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:07:24+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"267\",\"fromGroup\":0,\"toGroup\":1,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885db3f3fa2378fc8ab0a09c9846306e17faddd773246d80aab659b4d2496d3bce2a00000194f969becb1dff0b28\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:07:26+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"268\",\"fromGroup\":0,\"toGroup\":2,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885d889d634c87ec12c8f9547915800daa1a50b686c29e63fd4eb87de611b11c378c00000194f969c6af1de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:07:28+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"269\",\"fromGroup\":1,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba6000000030e1deb3c375df52b56d0eca7c9e117b2ba1e89e2115394b1cd757e879fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a8f7c9d8c3644f97ac599f8b2d1d3e46b77d961a1bbf2f004faa9d65cd1ccc03c00000194f969ce931de3b7ad\",\"txsBlob\":\"00\",\"height\":15,\"targetBlob\":\"00e3b7ad0000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:07:30+08:00","message":"{\"method\":\"mining.pong\",\"id\":60}"}
|
||||
{"level":"info","time":"2025-02-12T17:07:30+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"26a\",\"fromGroup\":2,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e2017c4065dd387045fc6949934911dfaa1ef4052ebb7ebe9be821d99676cbb47fbca00000194f969d6771df79d79\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00f79d790000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:07:32+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"26b\",\"fromGroup\":1,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba6000000030e1deb3c375df52b56d0eca7c9e117b2ba1e89e2115394b1cd757e879fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a8fcb5f96cd313be966e54b6dfac0d47d8cfd958eba3c59c8b053506c310ba28100000194f969de5b1da8e72d\",\"txsBlob\":\"00\",\"height\":27,\"targetBlob\":\"00a8e72d0000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:07:34+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"26c\",\"fromGroup\":1,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba6000000030e1deb3c375df52b56d0eca7c9e117b2ba1e89e2115394b1cd757e879fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a157df0b584e23a2e2891184a2ca53ec85f2cd9033c079fd168fba576baded94600000194f969e63f1da8e72d\",\"txsBlob\":\"00\",\"height\":27,\"targetBlob\":\"00a8e72d0000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:07:36+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"26d\",\"fromGroup\":2,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e20174db4abe3c3d8128ff8909d57f193cb37459ee553781f792801dc6a18dcf6831600000194f969ee231dff0b28\",\"txsBlob\":\"00\",\"height\":5,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:07:38+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"26e\",\"fromGroup\":0,\"toGroup\":0,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885d4505b8e9f05bd2a69fd921e06e2da4532bd1e18e137c32af9b722b08a868d23a00000194f969f6061df09b6e\",\"txsBlob\":\"00\",\"height\":12,\"targetBlob\":\"00f09b6e0000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:07:40+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"26f\",\"fromGroup\":3,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d626775df3f972a3c4258fb85ebf0c57892c99993271699886d67e8672fcccefb23146300000194f969fdec1dff0b28\",\"txsBlob\":\"00\",\"height\":10,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:07:42+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"270\",\"fromGroup\":1,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba6000000030e1deb3c375df52b56d0eca7c9e117b2ba1e89e2115394b1cd757e879fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431afcc65a30234e4764a44536553012b56b9d545be0c42231f5fe23215e5898c90900000194f96a05cf1de3b7ad\",\"txsBlob\":\"00\",\"height\":15,\"targetBlob\":\"00e3b7ad0000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:07:44+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"271\",\"fromGroup\":3,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d62677553ee1621b57db039ed7b75e130fbc50aa3fc15fdde8034f45a5e2c6400e59bee00000194f96a0db41dff0b28\",\"txsBlob\":\"00\",\"height\":10,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:07:46+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"272\",\"fromGroup\":3,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d6267753f864fc2c1a990a58514f72e4e2d899d0a57147d20cf1525841f4b1bbc7bc51d00000194f96a15971dff0b28\",\"txsBlob\":\"00\",\"height\":10,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:07:48+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"273\",\"fromGroup\":2,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e2017136092c148b2638de645953113cbbf01d61544b891e1ee3cc0eb4e2e53f352db00000194f96a1d7c1df79d79\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00f79d790000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:07:49+08:00","message":"{\"id\":296,\"method\":\"mining.submit\",\"params\":{\"jobId\":\"273\",\"fromGroup\":2,\"toGroup\":1,\"nonce\":\"01521b8a7488000101521b8a74880001bcd1223700000000\",\"worker\":\"alphtest\",\"workerName\":\"1x2\"}}"}
|
||||
{"level":"info","time":"2025-02-12T17:07:49+08:00","message":"{\"result\":true,\"id\":296,\"error\":null}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:07:50+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"274\",\"fromGroup\":3,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d626775d9304df2f2a594b72e75b4b2defacb2cc317eab9b23f42a8c2a6b0ab07ddcc1500000194f96a255f1dff0b28\",\"txsBlob\":\"00\",\"height\":10,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:07:50+08:00","message":"{\"method\":\"mining.pong\",\"id\":61}"}
|
||||
{"level":"info","time":"2025-02-12T17:07:52+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"275\",\"fromGroup\":1,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba6000000030e1deb3c375df52b56d0eca7c9e117b2ba1e89e2115394b1cd757e879fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a866b64393ee222647af23c6efbfed2dababdb979b8a7108129cff3480a11eb0800000194f96a2d431de3b7ad\",\"txsBlob\":\"00\",\"height\":15,\"targetBlob\":\"00e3b7ad0000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:07:54+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"276\",\"fromGroup\":0,\"toGroup\":0,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885da230f201845a584e6c7386b410b72afcc250aa4e74e78b0998215eddbb480f4300000194f96a35261df09b6e\",\"txsBlob\":\"00\",\"height\":12,\"targetBlob\":\"00f09b6e0000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:07:56+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"277\",\"fromGroup\":2,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e20173e855276e519de9bce62a8e4a6cf4a82400bae3b4ddd6d32225668c91f35283900000194f96a3d0c1de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:07:58+08:00","message":"{\"id\":296,\"method\":\"mining.submit\",\"params\":{\"jobId\":\"277\",\"fromGroup\":2,\"toGroup\":2,\"nonce\":\"01521b8a748c000101521b8a748c0001b0ba186e00000000\",\"worker\":\"alphtest\",\"workerName\":\"1x2\"}}"}
|
||||
{"level":"info","time":"2025-02-12T17:07:58+08:00","message":"{\"result\":true,\"id\":296,\"error\":null}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:07:58+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"278\",\"fromGroup\":1,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba6000000030e1deb3c375df52b56d0eca7c9e117b2ba1e89e2115394b1cd757e879fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a1978fc9c27a2de2dac8f9b1c28d2461d8c227e81727b09e17c9944e156add10400000194f96a44ef1dff0b28\",\"txsBlob\":\"00\",\"height\":6,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:08:00+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"279\",\"fromGroup\":3,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d626775831dcbcef5f117b44c6ff8cf1a4b735b18966a30867de29e471c4d75ffccfd5c00000194f96a4cd41dff0b28\",\"txsBlob\":\"00\",\"height\":10,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:08:02+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"27a\",\"fromGroup\":3,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d626775caa6ff250b6889a1cb495aed380c497a58dec56fd4c337682d462210feb71ba600000194f96a54b81dff0b28\",\"txsBlob\":\"00\",\"height\":10,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:08:03+08:00","message":"{\"id\":296,\"method\":\"mining.submit\",\"params\":{\"jobId\":\"27a\",\"fromGroup\":3,\"toGroup\":2,\"nonce\":\"01521b8a748f000101521b8a748f0001cf9bf33200000000\",\"worker\":\"alphtest\",\"workerName\":\"1x2\"}}"}
|
||||
{"level":"info","time":"2025-02-12T17:08:03+08:00","message":"{\"result\":true,\"id\":296,\"error\":null}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:08:04+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"27b\",\"fromGroup\":1,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba6000000030e1deb3c375df52b56d0eca7c9e117b2ba1e89e2115394b1cd757e879fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a741de061eef3b10303ca0053b018767192803b929f464c72199b6b33c5d1e8ba00000194f96a5c9a1de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:08:06+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"27c\",\"fromGroup\":2,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e201750ac62506002c24bd53b555f67caa87ec1d057ee775e7b627fcfc247d6a1719500000194f96a647f1dff0b28\",\"txsBlob\":\"00\",\"height\":5,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:08:09+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"27d\",\"fromGroup\":3,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d626775aa0c5dfd8d2657261034bdfe63242144fc6794bef6b13f1f5aa16298b0f6ba1600000194f96a6c641dff0b28\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:08:10+08:00","message":"{\"method\":\"mining.pong\",\"id\":62}"}
|
||||
{"level":"info","time":"2025-02-12T17:08:11+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"27e\",\"fromGroup\":0,\"toGroup\":3,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885d3ead1c9d38bbfe01e34adf77fc513e29bc16388e242119f5cf1a00d6fca420fe00000194f96a74461dff0b28\",\"txsBlob\":\"00\",\"height\":7,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:08:13+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"27f\",\"fromGroup\":2,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e201716eff2529ced14bd728a28ea2b8ecbb1e37aa09447434cc3a7386691b85e240800000194f96a7c2b1df79d79\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00f79d790000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:08:15+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"280\",\"fromGroup\":0,\"toGroup\":1,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885d92db00866daa15b4c734e2a4bfa35a50adfb808fe80d0f84f606173f1d47e18d00000194f96a840e1dff0b28\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:08:17+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"281\",\"fromGroup\":3,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d6267752579c894895fbdd0b98aef9f1ec2c22856e01e226405afc7b4021a10fe04412e00000194f96a8bf31dff0b28\",\"txsBlob\":\"00\",\"height\":10,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:08:19+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"282\",\"fromGroup\":1,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba6000000030e1deb3c375df52b56d0eca7c9e117b2ba1e89e2115394b1cd757e879fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431aba58e04c2b050a82df8be2192ce709ea4f8eb34e2406e99eb9c0b8fa4f1b1fbc00000194f96a93d71da8e72d\",\"txsBlob\":\"00\",\"height\":27,\"targetBlob\":\"00a8e72d0000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:08:21+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"283\",\"fromGroup\":1,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba6000000030e1deb3c375df52b56d0eca7c9e117b2ba1e89e2115394b1cd757e879fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a668c02a4eb2c34f67920be8e15f094787b7692b2ca7c313d6c664b0f44d2256600000194f96a9bbb1de3b7ad\",\"txsBlob\":\"00\",\"height\":15,\"targetBlob\":\"00e3b7ad0000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:08:23+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"284\",\"fromGroup\":2,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e2017300b84106aea28bc9cfcfeeaa19b39ce23a6c74708771a98cf087a4cf8366a8500000194f96aa39f1df79d79\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00f79d790000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:08:25+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"285\",\"fromGroup\":2,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e20172ee6a60e307a78dc7d676f0335a2b0ea825e7f5825c8c33ca35a8bf2cf24429200000194f96aab831df79d79\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00f79d790000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:08:27+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"286\",\"fromGroup\":1,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba6000000030e1deb3c375df52b56d0eca7c9e117b2ba1e89e2115394b1cd757e879fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431aa1e208a31b539a6e4294a2bf55c00977f485bfbceaa0456abcfa6bd328e2632800000194f96ab3671de3b7ad\",\"txsBlob\":\"00\",\"height\":15,\"targetBlob\":\"00e3b7ad0000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:08:29+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"287\",\"fromGroup\":1,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba6000000030e1deb3c375df52b56d0eca7c9e117b2ba1e89e2115394b1cd757e879fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431aab2e38819e0bb5c4b56b64dc8f4281adc768df649809d6f43cd3892c21b551e500000194f96abb4b1de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:08:30+08:00","message":"{\"method\":\"mining.pong\",\"id\":63}"}
|
||||
{"level":"info","time":"2025-02-12T17:08:31+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"288\",\"fromGroup\":1,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba6000000030e1deb3c375df52b56d0eca7c9e117b2ba1e89e2115394b1cd757e879fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a2b0faf179a69f2ac72dd8b89146ac0fa317e27c2d1f1cd1c727f3d8eaca02dd300000194f96ac32f1da8e72d\",\"txsBlob\":\"00\",\"height\":27,\"targetBlob\":\"00a8e72d0000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:08:32+08:00","message":"{\"id\":296,\"method\":\"mining.submit\",\"params\":{\"jobId\":\"288\",\"fromGroup\":1,\"toGroup\":3,\"nonce\":\"01521b8a749d000101521b8a749d000117737b4500000000\",\"worker\":\"alphtest\",\"workerName\":\"1x2\"}}"}
|
||||
{"level":"info","time":"2025-02-12T17:08:32+08:00","message":"{\"result\":true,\"id\":296,\"error\":null}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:08:32+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"289\",\"fromGroup\":1,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba6000000003cb1894842cdfde9038a30bd173f68c31b268d1e9b97931bb78572379fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a9e69dfac2c6bfb53a4dfe103152739c6dd2a152660b00a8ca76860aa93b2fee400000194f96ac8361da59cdb\",\"txsBlob\":\"00\",\"height\":28,\"targetBlob\":\"00a59cdb0000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:08:34+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"28a\",\"fromGroup\":0,\"toGroup\":0,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885d38b67dee63d7e2d901f2f3bd16ebeea1f20e6f840f94fb1035dcdbe1a5392e5b00000194f96ad0121df09b6e\",\"txsBlob\":\"00\",\"height\":12,\"targetBlob\":\"00f09b6e0000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:08:36+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"28b\",\"fromGroup\":2,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e20170573fa3fba5b0265647cf2f27f072274c78d9feb71060d86d3e38ed960b8726800000194f96ad7f81dff0b28\",\"txsBlob\":\"00\",\"height\":5,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:08:38+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"28c\",\"fromGroup\":2,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e201796e271b51df9ebbb191e3bb3595f821728235f98f1a2a90ff8bc00926aee639800000194f96adfdb1dff0b28\",\"txsBlob\":\"00\",\"height\":5,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:08:40+08:00","message":"{\"id\":296,\"method\":\"mining.submit\",\"params\":{\"jobId\":\"28c\",\"fromGroup\":2,\"toGroup\":3,\"nonce\":\"01521b8a74a1000101521b8a74a1000174a9686800000000\",\"worker\":\"alphtest\",\"workerName\":\"1x2\"}}"}
|
||||
{"level":"info","time":"2025-02-12T17:08:40+08:00","message":"{\"result\":true,\"id\":296,\"error\":null}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:08:40+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"28d\",\"fromGroup\":0,\"toGroup\":2,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885daad82736782f79e06ea43a6dfd1a478e4dca78e9a0534b2797432fa5dc1e5e7a00000194f96ae7bf1de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:08:42+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"28e\",\"fromGroup\":1,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba6000000003cb1894842cdfde9038a30bd173f68c31b268d1e9b97931bb78572379fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a02ad96c930992925ec34b0baef5020ea075c1a3b955861ed6b88eb57c9b73adc00000194f96aefa31de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:08:44+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"28f\",\"fromGroup\":0,\"toGroup\":2,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885d953673114b70e7d6992e920fa3509c816dae8d3a867b9ddb33dcafaab655e67400000194f96af7861de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:08:46+08:00","message":"{\"id\":296,\"method\":\"mining.submit\",\"params\":{\"jobId\":\"28f\",\"fromGroup\":0,\"toGroup\":2,\"nonce\":\"01521b8a74a4000101521b8a74a40001eb21c77c00000000\",\"worker\":\"alphtest\",\"workerName\":\"1x2\"}}"}
|
||||
{"level":"info","time":"2025-02-12T17:08:46+08:00","message":"{\"result\":true,\"id\":296,\"error\":null}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:08:46+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"290\",\"fromGroup\":2,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e2017fc88cb25c3bf2011a8f7aa89e136807744649a5a7dd029e6534a57a3a4ec9b3a00000194f96aff6c1df79d79\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00f79d790000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:08:48+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"291\",\"fromGroup\":3,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d626775e051b1c57245b4ff728ecf70b053ede046f1fcc91d864baef7b229692f96f12300000194f96b07501dff0b28\",\"txsBlob\":\"00\",\"height\":8,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:08:50+08:00","message":"{\"method\":\"mining.pong\",\"id\":64}"}
|
||||
{"level":"info","time":"2025-02-12T17:08:50+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"292\",\"fromGroup\":1,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba6000000003cb1894842cdfde9038a30bd173f68c31b268d1e9b97931bb78572379fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431aa417cce93e41fd00537fd4185255fa4c3a0184c1eaf0f514f21c67154724556600000194f96b0f331da59cdb\",\"txsBlob\":\"00\",\"height\":28,\"targetBlob\":\"00a59cdb0000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:08:52+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"293\",\"fromGroup\":0,\"toGroup\":1,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885d24a17e3891876a7d5294a8271e576fb8f34180f469f896235bc680c7ef10d82c00000194f96b17161dff0b28\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:08:53+08:00","message":"{\"id\":296,\"method\":\"mining.submit\",\"params\":{\"jobId\":\"293\",\"fromGroup\":0,\"toGroup\":1,\"nonce\":\"01521b8a74a8000101521b8a74a80001a90e264300000000\",\"worker\":\"alphtest\",\"workerName\":\"1x2\"}}"}
|
||||
{"level":"info","time":"2025-02-12T17:08:53+08:00","message":"{\"result\":true,\"id\":296,\"error\":null}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:08:54+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"294\",\"fromGroup\":3,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d6267759ba8411a851c8811c5898a31317c3e61a29158563b8c0dca75bdbf4bc662942800000194f96b1efc1dff0b28\",\"txsBlob\":\"00\",\"height\":8,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:08:56+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"295\",\"fromGroup\":1,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba6000000003cb1894842cdfde9038a30bd173f68c31b268d1e9b97931bb78572379fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a4061ac1eefd0763acf257bd9e009895cd578409c1d03cec20952e8984cea0c5900000194f96b26df1da59cdb\",\"txsBlob\":\"00\",\"height\":28,\"targetBlob\":\"00a59cdb0000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:08:57+08:00","message":"{\"id\":296,\"method\":\"mining.submit\",\"params\":{\"jobId\":\"295\",\"fromGroup\":1,\"toGroup\":3,\"nonce\":\"01521b8a74aa000101521b8a74aa000167ce742a00000000\",\"worker\":\"alphtest\",\"workerName\":\"1x2\"}}"}
|
||||
{"level":"info","time":"2025-02-12T17:08:57+08:00","message":"{\"result\":true,\"id\":296,\"error\":null}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:08:57+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"296\",\"fromGroup\":3,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d626775f5bd656803329a0a69fcd7d887a4f8b71fae14fa072441e064d394d4e1b1e96f00000194f96b2a2f1dff0b28\",\"txsBlob\":\"00\",\"height\":8,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:08:59+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"297\",\"fromGroup\":0,\"toGroup\":0,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885d719a29afe892068976ee17d08c660086b7e423f863afe00f130cc625a19e88aa00000194f96b320a1df09b6e\",\"txsBlob\":\"00\",\"height\":12,\"targetBlob\":\"00f09b6e0000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:09:01+08:00","message":"{\"id\":9,\"method\":\"alph_submitHashrate\",\"jsonrpc\":\"2.0\",\"worker\":\"alphtest\",\"workerName\":\"1x2\",\"params\":[\"41ac8280\",\"c48c782b0641a6b40b11444668d6a8d2d60c4345184cd66eaffb9e2c9f27f253\"]}"}
|
||||
{"level":"info","time":"2025-02-12T17:09:01+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"298\",\"fromGroup\":2,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e2017608e37b8fa2ffd0c56669e82c7471f8a3199d6c15e8d0c60df4ff55a855a50d700000194f96b39ef1de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:09:03+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"299\",\"fromGroup\":2,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e20176cf3cacdd5c8f436f218e8192d49e48949802780c3c164189116caa9aff4675a00000194f96b41d41df79d79\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00f79d790000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:09:05+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"29a\",\"fromGroup\":2,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e201799d5d61264456fd175406c46f8107fd28babeedc52bac8fd64af6a1b2711fc0700000194f96b49b91df79d79\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00f79d790000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:09:07+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"29b\",\"fromGroup\":1,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba600000000920bef7d9de99a2ac55f37df5a38b494473fb198320f015034baaf779fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a7b304cf79c74fe861c78b5ab340ecf8b4e9e540077a8b7bf356ca03207ac0d5b00000194f96b519b1da272b9\",\"txsBlob\":\"00\",\"height\":29,\"targetBlob\":\"00a272b90000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:09:09+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"29c\",\"fromGroup\":0,\"toGroup\":2,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885dafd48cc305bd72d148f36033b257c3cd6dd6f80d1e1a10da43f6a83768988cc100000194f96b597e1de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:09:10+08:00","message":"{\"method\":\"mining.pong\",\"id\":65}"}
|
||||
{"level":"info","time":"2025-02-12T17:09:11+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"29d\",\"fromGroup\":0,\"toGroup\":3,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885de068d534f4856c9bf988c73505326b8b55d028c6e3a15e4d4580562f1ecdf37a00000194f96b61631dff0b28\",\"txsBlob\":\"00\",\"height\":7,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:09:12+08:00","message":"{\"id\":296,\"method\":\"mining.submit\",\"params\":{\"jobId\":\"29d\",\"fromGroup\":0,\"toGroup\":3,\"nonce\":\"01521b8a74b2000101521b8a74b20001ccd7d50b00000000\",\"worker\":\"alphtest\",\"workerName\":\"1x2\"}}"}
|
||||
{"level":"info","time":"2025-02-12T17:09:12+08:00","message":"{\"result\":true,\"id\":296,\"error\":null}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:09:13+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"29e\",\"fromGroup\":3,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d6267752b980d3bedb81db3f1d6a60d89ca5f2af0f19829a25230cb79622be3672cd18700000194f96b693e1dff0b28\",\"txsBlob\":\"00\",\"height\":10,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:09:15+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"29f\",\"fromGroup\":0,\"toGroup\":3,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885d8c833b876777f8d47e7ad010a6a8762bb9d7c002805ff24e9acd0ffc21abff5000000194f96b71211dff0b28\",\"txsBlob\":\"00\",\"height\":7,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:09:17+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2a0\",\"fromGroup\":1,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba600000000920bef7d9de99a2ac55f37df5a38b494473fb198320f015034baaf779fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a18214c958bbe32cbc2d00e38eeb8e051f0fbc5d4270749da437fbdb412685f8600000194f96b79051de3b7ad\",\"txsBlob\":\"00\",\"height\":15,\"targetBlob\":\"00e3b7ad0000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:09:19+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2a1\",\"fromGroup\":0,\"toGroup\":0,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885d5aabd3008a0fcd7498730412c2a8ef2a1ab42d6223ad3bfa8c861d9283709a3000000194f96b80e81df09b6e\",\"txsBlob\":\"00\",\"height\":12,\"targetBlob\":\"00f09b6e0000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:09:21+08:00","message":"{\"id\":296,\"method\":\"mining.submit\",\"params\":{\"jobId\":\"2a1\",\"fromGroup\":0,\"toGroup\":0,\"nonce\":\"01521b8a74b6000101521b8a74b6000188d5af4000000000\",\"worker\":\"alphtest\",\"workerName\":\"1x2\"}}"}
|
||||
{"level":"info","time":"2025-02-12T17:09:21+08:00","message":"{\"result\":true,\"id\":296,\"error\":null}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:09:21+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2a2\",\"fromGroup\":1,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba600000000920bef7d9de99a2ac55f37df5a38b494473fb198320f015034baaf779fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431af24eaa56533e11f6c3366efca2ec61ca765fbb041f46f932ef451dffaea6f54800000194f96b88cd1da272b9\",\"txsBlob\":\"00\",\"height\":29,\"targetBlob\":\"00a272b90000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:09:23+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2a3\",\"fromGroup\":2,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e2017fa9cef717d3cd9fd46077ef6465936b68795f72a0d6fffa3ad3698bfdaf93eae00000194f96b90b11df79d79\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00f79d790000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:09:25+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2a4\",\"fromGroup\":3,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d626775758376f736d0e9f0d512c561ff5982c704fd6a92c68717cbce4d0dd6c6a5fa9c00000194f96b98961dff0b28\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:09:27+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2a5\",\"fromGroup\":2,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e2017db1cb81a0007ac68fd710cdfe25c1cb8991979e0ffff192cee0db0afcc4cdfb100000194f96ba0791dff0b28\",\"txsBlob\":\"00\",\"height\":5,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:09:29+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2a6\",\"fromGroup\":3,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d626775d0364c7a0d26a313061566d1574c55ac97edb026051abcec2aac699df88e8a3700000194f96ba85e1dff0b28\",\"txsBlob\":\"00\",\"height\":10,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:09:30+08:00","message":"{\"method\":\"mining.pong\",\"id\":66}"}
|
||||
{"level":"info","time":"2025-02-12T17:09:31+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2a7\",\"fromGroup\":2,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e2017ccd8ca2b1cbe7a89953d0c7770b53e2a13b097c48b43caecf2f4ecff2edce0c300000194f96bb0421df79d79\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00f79d790000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:09:33+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2a8\",\"fromGroup\":3,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d626775a242f724ac8de5054b090c3c16a03499758ef32bb48267d7f6a7db7889b1cdd400000194f96bb8261dff0b28\",\"txsBlob\":\"00\",\"height\":8,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:09:35+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2a9\",\"fromGroup\":2,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e20173d3b492d7c2f036257998065713ad09a54ae26d13799feacd001c31b703c5f7300000194f96bc00a1de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:09:37+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2aa\",\"fromGroup\":0,\"toGroup\":2,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885de46bf9bfc182cb384dc70d41e26c4752fd28677f9b9c8eb00e0acb6067e9ca4800000194f96bc7ec1de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:09:39+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2ab\",\"fromGroup\":0,\"toGroup\":1,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885d1cf33918a2980ec1d189e8a57d81a847bcad985e9ad7838afd905fdf90192cdc00000194f96bcfd01dff0b28\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:09:41+08:00","message":"{\"id\":296,\"method\":\"mining.submit\",\"params\":{\"jobId\":\"2ab\",\"fromGroup\":0,\"toGroup\":1,\"nonce\":\"01521b8a74c0000101521b8a74c00001852eb23d00000000\",\"worker\":\"alphtest\",\"workerName\":\"1x2\"}}"}
|
||||
{"level":"info","time":"2025-02-12T17:09:41+08:00","message":"{\"result\":true,\"id\":296,\"error\":null}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:09:42+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2ac\",\"fromGroup\":2,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e2017b9c26c162240218585158df556f0e189bfafac3ce75c3968b97ff38ea135321600000194f96bd7b51df79d79\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00f79d790000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:09:42+08:00","message":"{\"id\":296,\"method\":\"mining.submit\",\"params\":{\"jobId\":\"2ac\",\"fromGroup\":2,\"toGroup\":0,\"nonce\":\"01521b8a74c1000101521b8a74c100011ce45c0b00000000\",\"worker\":\"alphtest\",\"workerName\":\"1x2\"}}"}
|
||||
{"level":"info","time":"2025-02-12T17:09:42+08:00","message":"{\"result\":true,\"id\":296,\"error\":null}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:09:43+08:00","message":"{\"id\":296,\"method\":\"mining.submit\",\"params\":{\"jobId\":\"2ac\",\"fromGroup\":2,\"toGroup\":0,\"nonce\":\"01521b8a74c1000101521b8a74c1000143c8f81600000000\",\"worker\":\"alphtest\",\"workerName\":\"1x2\"}}"}
|
||||
{"level":"info","time":"2025-02-12T17:09:43+08:00","message":"{\"result\":true,\"id\":296,\"error\":null}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:09:44+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2ad\",\"fromGroup\":0,\"toGroup\":1,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885debac97f2724e08a3c39f4c0434aecf135a8f718fded7073434064696c4ae4cb400000194f96bdf981dff0b28\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:09:46+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2ae\",\"fromGroup\":1,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba600000000920bef7d9de99a2ac55f37df5a38b494473fb198320f015034baaf779fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431ac0dfea982f6e022b0efd8cebe47a3bfeafc670272cabee9224d17287474e7e1800000194f96be77d1de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:09:48+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2af\",\"fromGroup\":3,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d6267754b28607eb77694e454b53838560449d4dd4a9f2a700ae17de344bd6f2a512b7800000194f96bef631dff0b28\",\"txsBlob\":\"00\",\"height\":10,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:09:50+08:00","message":"{\"method\":\"mining.pong\",\"id\":67}"}
|
||||
{"level":"info","time":"2025-02-12T17:09:50+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2b0\",\"fromGroup\":2,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e2017adbe62155f995ab476e30baf74d40b508155eff63a8e29085436a3188648d21200000194f96bf7451de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:09:52+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2b1\",\"fromGroup\":2,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e201716abff365624443b926c6502b1a42491077dbc981260ad5aa48612f1a1e9655200000194f96bff2a1dff0b28\",\"txsBlob\":\"00\",\"height\":5,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:09:54+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2b2\",\"fromGroup\":0,\"toGroup\":1,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885d4c4d3d197b557c33519f30aec54783b2c609d18f1f9e353c443b8ca73bc26b7c00000194f96c070d1dff0b28\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:09:56+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2b3\",\"fromGroup\":2,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e20172df866f5e4f3b2d7f49f2d6d1c0cd4732d9553d68b17313cc5e653b2022c66a400000194f96c0ef11de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:09:58+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2b4\",\"fromGroup\":2,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e20178f6b04fd951fe89e75f21c48c0c996b70cb32666a47bdb4e45cfbb19ac8a79cb00000194f96c16d51df79d79\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00f79d790000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:10:00+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2b5\",\"fromGroup\":0,\"toGroup\":3,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885d889c1059183146f8895700191765ea6018844560e4620318d094385a735a860a00000194f96c1eb91dff0b28\",\"txsBlob\":\"00\",\"height\":7,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:10:02+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2b6\",\"fromGroup\":2,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e201718351331c227c66edefbef45b62bd52d95eb2a33c29589c91895cc2a2ec985a200000194f96c269e1df79d79\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00f79d790000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:10:04+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2b7\",\"fromGroup\":2,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e2017884129a65a55777a450f7074561cb0c89f24eccbb6cd9205d27205e5aef4f92900000194f96c2e811df79d79\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00f79d790000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:10:06+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2b8\",\"fromGroup\":1,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba600000000920bef7d9de99a2ac55f37df5a38b494473fb198320f015034baaf779fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a9ea85e12b81789f6f2321dc4209e789fe6968dff58e7b6e045d1d17e4f6441aa00000194f96c36651da272b9\",\"txsBlob\":\"00\",\"height\":29,\"targetBlob\":\"00a272b90000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:10:08+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2b9\",\"fromGroup\":2,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e20179a5ff4b6e99a9ddea7200f8da860bf1babd9bb6787df1f1147c0c3cd255e99f300000194f96c3e491de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:10:10+08:00","message":"{\"method\":\"mining.pong\",\"id\":68}"}
|
||||
{"level":"info","time":"2025-02-12T17:10:10+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2ba\",\"fromGroup\":2,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e2017adbd8a69b2e4e63183003df0b1596edaf0d290ea5f612dece692d5b92f4c463700000194f96c462d1de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:10:12+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2bb\",\"fromGroup\":1,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba600000000920bef7d9de99a2ac55f37df5a38b494473fb198320f015034baaf779fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a06d129456be9e8c6987084123684062d47da31bd961585aaa7d88e4c9c4391d600000194f96c4e111de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:10:14+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2bc\",\"fromGroup\":0,\"toGroup\":2,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885d289623444ec8bcbfa7a476ef23a57b3b25b706db7ed2d76f1175a16e17e0d5be00000194f96c55f51de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:10:16+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2bd\",\"fromGroup\":0,\"toGroup\":3,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885d9ea77a9b75ee58a4a4bc6317567d420aea8abe7c813fb05b667cf9ae1239625a00000194f96c5dd81dff0b28\",\"txsBlob\":\"00\",\"height\":7,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:10:18+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2be\",\"fromGroup\":0,\"toGroup\":2,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885d9ddbcbd979dd7e9951cc9a1e8176b1f4f8702bafb969a3767d0d10bcf60b52e100000194f96c65bc1de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:10:20+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2bf\",\"fromGroup\":1,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba600000000920bef7d9de99a2ac55f37df5a38b494473fb198320f015034baaf779fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a3aae541ba8b46f50d2a9bb7c7f79d3e9709214339500a0e09f1c44a7b3c0ead400000194f96c6da21da272b9\",\"txsBlob\":\"00\",\"height\":29,\"targetBlob\":\"00a272b90000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:10:22+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2c0\",\"fromGroup\":3,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d62677576237182f5ac1e874717c351b17561e796f2a9335d3f83072d065198ed4935cf00000194f96c75861dff0b28\",\"txsBlob\":\"00\",\"height\":10,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:10:24+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2c1\",\"fromGroup\":1,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba600000000920bef7d9de99a2ac55f37df5a38b494473fb198320f015034baaf779fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a61a6f2e9b9cf50dca6729ecb274815c5275512877a1e3742cf0fa38e28eadc6e00000194f96c7d681dff0b28\",\"txsBlob\":\"00\",\"height\":6,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:10:26+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2c2\",\"fromGroup\":0,\"toGroup\":3,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885dc1784967247295cf560bab24c18c43b2011ee472b287d1d0679d32f86704c5b600000194f96c854d1dff0b28\",\"txsBlob\":\"00\",\"height\":7,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:10:26+08:00","message":"{\"id\":296,\"method\":\"mining.submit\",\"params\":{\"jobId\":\"2c2\",\"fromGroup\":0,\"toGroup\":3,\"nonce\":\"01521b8a74d7000101521b8a74d7000186ad8d0900000000\",\"worker\":\"alphtest\",\"workerName\":\"1x2\"}}"}
|
||||
{"level":"info","time":"2025-02-12T17:10:26+08:00","message":"{\"result\":true,\"id\":296,\"error\":null}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:10:28+08:00","message":"{\"id\":296,\"method\":\"mining.submit\",\"params\":{\"jobId\":\"2c2\",\"fromGroup\":0,\"toGroup\":3,\"nonce\":\"01521b8a74d7000101521b8a74d70001ac18ee2f00000000\",\"worker\":\"alphtest\",\"workerName\":\"1x2\"}}"}
|
||||
{"level":"info","time":"2025-02-12T17:10:28+08:00","message":"{\"result\":true,\"id\":296,\"error\":null}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:10:28+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2c3\",\"fromGroup\":0,\"toGroup\":1,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885d97655e6ec5b55cd7dbd5b230ea0db43ed59df16168dbbd1d4d6ca7ea3e345bfe00000194f96c8d301dff0b28\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:10:30+08:00","message":"{\"method\":\"mining.pong\",\"id\":69}"}
|
||||
{"level":"info","time":"2025-02-12T17:10:30+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2c4\",\"fromGroup\":3,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d626775c8dca3f2807a1d181803195667a151843d6dc7e95e94b803511239e948c8253e00000194f96c95161dff0b28\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:10:32+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2c5\",\"fromGroup\":2,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e20172ce2a73d5d5c863ba7191f1487ee23d90a7afd638a0d1c98538404d2557691c900000194f96c9cf91dff0b28\",\"txsBlob\":\"00\",\"height\":5,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:10:34+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2c6\",\"fromGroup\":2,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e20177b512e07311b2dedd37fde61387383c710aa759a15f65a0755bd9bdca0a2b86e00000194f96ca4dd1df79d79\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00f79d790000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:10:36+08:00","message":"{\"id\":296,\"method\":\"mining.submit\",\"params\":{\"jobId\":\"2c6\",\"fromGroup\":2,\"toGroup\":1,\"nonce\":\"01521b8a74db000101521b8a74db0001d9bd926800000000\",\"worker\":\"alphtest\",\"workerName\":\"1x2\"}}"}
|
||||
{"level":"info","time":"2025-02-12T17:10:36+08:00","message":"{\"result\":true,\"id\":296,\"error\":null}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:10:36+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2c7\",\"fromGroup\":3,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d6267758ed6debc0ddc52816f1b0e2f58e5454246421d1572451170f35191b71b9da20600000194f96cacc11dff0b28\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:10:37+08:00","message":"{\"id\":296,\"method\":\"mining.submit\",\"params\":{\"jobId\":\"2c6\",\"fromGroup\":2,\"toGroup\":1,\"nonce\":\"01521b8a74db000101521b8a74db0001fac4847d00000000\",\"worker\":\"alphtest\",\"workerName\":\"1x2\"}}"}
|
||||
{"level":"info","time":"2025-02-12T17:10:37+08:00","message":"{\"result\":true,\"id\":296,\"error\":null}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:10:38+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2c8\",\"fromGroup\":2,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e20170ef6d32686b4ce114b652764af37ff412a98f4f9109a76af4f507c05f1ee0cd100000194f96cb4a51dff0b28\",\"txsBlob\":\"00\",\"height\":5,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:10:40+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2c9\",\"fromGroup\":0,\"toGroup\":2,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885d546f96cf12feeefe206f2d9cc4cb104cc96d50cc522fed1336be364bfe59fb4a00000194f96cbc881de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:10:42+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2ca\",\"fromGroup\":0,\"toGroup\":1,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885d4bebcaf887d26f1d660c50dc6e8d17f26d09831459e4da6bce3331ce909530ec00000194f96cc46c1dff0b28\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:10:44+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2cb\",\"fromGroup\":2,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e201729077e5c4ed790957a84b27d5a7e8535238a461fe7a9f6b2e69f92e11a210b1d00000194f96ccc511de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:10:46+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2cc\",\"fromGroup\":3,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d6267757ef72818d506e13b80648980f0071dfc6f5dd3a171a04d6aa3c1e0c0728b156000000194f96cd4361dff0b28\",\"txsBlob\":\"00\",\"height\":8,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:10:48+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2cd\",\"fromGroup\":3,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d6267759b4c5459432d62eaf6b1f4846557285ce2d2fe351915739d8f17ad4f9036209700000194f96cdc1b1dff0b28\",\"txsBlob\":\"00\",\"height\":10,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:10:50+08:00","message":"{\"method\":\"mining.pong\",\"id\":70}"}
|
||||
{"level":"info","time":"2025-02-12T17:10:50+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2ce\",\"fromGroup\":3,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d6267753ee21cc9a45b40a26675cb197668cc01119d8a52e184e24caee7714833f8a27b00000194f96ce3fe1dff0b28\",\"txsBlob\":\"00\",\"height\":10,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:10:52+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2cf\",\"fromGroup\":3,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d626775606643999144a7f7b3c2900a6e8cdf9d83c97857884473b19e88d8a5ff077d3200000194f96cebe21dff0b28\",\"txsBlob\":\"00\",\"height\":8,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:10:54+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2d0\",\"fromGroup\":2,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e2017163d748bea67141c5c4b202467272d85f0e6f2729afc010bca8c491afb61b9c000000194f96cf3c61dff0b28\",\"txsBlob\":\"00\",\"height\":5,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:10:56+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2d1\",\"fromGroup\":3,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d626775a9483e3675b18db5e59f2de9c708716265fd502047308ea7ecdf2c30832291a000000194f96cfbaa1dff0b28\",\"txsBlob\":\"00\",\"height\":10,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:10:58+08:00","message":"{\"id\":296,\"method\":\"mining.submit\",\"params\":{\"jobId\":\"2d1\",\"fromGroup\":3,\"toGroup\":3,\"nonce\":\"01521b8a74e6000101521b8a74e600016483ea6800000000\",\"worker\":\"alphtest\",\"workerName\":\"1x2\"}}"}
|
||||
{"level":"info","time":"2025-02-12T17:10:58+08:00","message":"{\"result\":true,\"id\":296,\"error\":null}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:10:58+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2d2\",\"fromGroup\":1,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba600000000920bef7d9de99a2ac55f37df5a38b494473fb198320f015034baaf779fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a4f32cb280119e9ad8d2e930ab3653380055b2f3d167f87f937e9413a9cb1584200000194f96d038c1dff0b28\",\"txsBlob\":\"00\",\"height\":6,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:11:00+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2d3\",\"fromGroup\":1,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba600000000920bef7d9de99a2ac55f37df5a38b494473fb198320f015034baaf779fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a87c2eb25109bb957bc3956a756523fbab21d01401c9674d6b7affcb7d5363fad00000194f96d0b711da272b9\",\"txsBlob\":\"00\",\"height\":29,\"targetBlob\":\"00a272b90000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:11:01+08:00","message":"{\"id\":9,\"method\":\"alph_submitHashrate\",\"jsonrpc\":\"2.0\",\"worker\":\"alphtest\",\"workerName\":\"1x2\",\"params\":[\"41968000\",\"c48c782b0641a6b40b11444668d6a8d2d60c4345184cd66eaffb9e2c9f27f253\"]}"}
|
||||
{"level":"info","time":"2025-02-12T17:11:02+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2d4\",\"fromGroup\":2,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e20178c9bd3cca0808b6316d426684d3670ff741ae363fb58adf5ccbed486d63d474b00000194f96d13581df79d79\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00f79d790000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:11:04+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2d5\",\"fromGroup\":0,\"toGroup\":2,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885dc576639e1c82ef0967c0806d151598b6e89005baaab8c549d39f601efc7cf46600000194f96d1b381de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:11:06+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2d6\",\"fromGroup\":1,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba600000000920bef7d9de99a2ac55f37df5a38b494473fb198320f015034baaf779fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a7716ce458e9b8f0dd04fe2435d2ced1f8497a34a762bd6ee8fa84bcd23b2d15b00000194f96d231e1da272b9\",\"txsBlob\":\"00\",\"height\":29,\"targetBlob\":\"00a272b90000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:11:08+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2d7\",\"fromGroup\":2,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e20171e5e5e6b910ae2641ec5897617e6821504a1fd20e5a69482bb8ad8121de2a05600000194f96d2b011df79d79\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00f79d790000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:11:10+08:00","message":"{\"method\":\"mining.pong\",\"id\":71}"}
|
||||
{"level":"info","time":"2025-02-12T17:11:10+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2d8\",\"fromGroup\":2,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e20174e25b42b47f4b7f440772dff36507658e688c990e5790cd321aa149510420c8400000194f96d32e51de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:11:12+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2d9\",\"fromGroup\":0,\"toGroup\":3,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885d34a9747d1a445abebbd778f18892f00f9b7899d7004fe26e3163032e313aabc100000194f96d3ac81dff0b28\",\"txsBlob\":\"00\",\"height\":7,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:11:14+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2da\",\"fromGroup\":2,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e20177d32503e4880544045b5e342432ee5f3897785fa667216886482b4b71806712000000194f96d42ae1df79d79\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00f79d790000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:11:16+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2db\",\"fromGroup\":1,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba600000000920bef7d9de99a2ac55f37df5a38b494473fb198320f015034baaf779fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a8ce346cb76c5c21420b1284ea5d796577b4b08659ed77b09b402014a62c81a0a00000194f96d4a911de3b7ad\",\"txsBlob\":\"00\",\"height\":15,\"targetBlob\":\"00e3b7ad0000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:11:18+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2dc\",\"fromGroup\":2,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e2017f4168198a01c57f67fce04e88cc2f8d39fd0df844485329e106ba7d38192e98300000194f96d52761df79d79\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00f79d790000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:11:19+08:00","message":"{\"id\":296,\"method\":\"mining.submit\",\"params\":{\"jobId\":\"2dc\",\"fromGroup\":2,\"toGroup\":0,\"nonce\":\"01521b8a74f1000101521b8a74f10001b10c922f00000000\",\"worker\":\"alphtest\",\"workerName\":\"1x2\"}}"}
|
||||
{"level":"info","time":"2025-02-12T17:11:19+08:00","message":"{\"result\":true,\"id\":296,\"error\":null}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:11:20+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2dd\",\"fromGroup\":2,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e2017be54507878f891942f7714caa55fb9693b5bffc8ae4d4044126d65de6c842a7100000194f96d5a5a1df79d79\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00f79d790000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:11:23+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2de\",\"fromGroup\":0,\"toGroup\":1,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885d996bc1054f2ad575a3eb6a948825f059aa8710e74868fc2dba6c1e8dd969675400000194f96d623d1dff0b28\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:11:25+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2df\",\"fromGroup\":3,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d626775a52e0c7427b314101597d34efd5beb717e47922c45b02934bbee0d90db45c52000000194f96d6a211dff0b28\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:11:27+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2e0\",\"fromGroup\":0,\"toGroup\":3,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885d127f3e3ed73a63f5d9f1a1c80c6cc09b7ca41e86f4c7464b7cb38bba11011ba500000194f96d72041dff0b28\",\"txsBlob\":\"00\",\"height\":7,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:11:29+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2e1\",\"fromGroup\":2,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e2017e0c5a1836266bd86862a3b3b6d661e3771f74fd6c44d0c51d141cb225e60e71400000194f96d79e91df79d79\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00f79d790000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:11:30+08:00","message":"{\"method\":\"mining.pong\",\"id\":72}"}
|
||||
{"level":"info","time":"2025-02-12T17:11:31+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2e2\",\"fromGroup\":2,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e2017208964faeb1762da21b5380bd9f67cc6a3195934212d51e5b0b198bdd461685300000194f96d81cd1de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:11:33+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2e3\",\"fromGroup\":1,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba600000000920bef7d9de99a2ac55f37df5a38b494473fb198320f015034baaf779fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a283a1aee350336a5766ae7c88780fc8cad95c7449f2db07579abebafea722e3300000194f96d89b11da272b9\",\"txsBlob\":\"00\",\"height\":29,\"targetBlob\":\"00a272b90000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:11:35+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2e4\",\"fromGroup\":1,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba600000000920bef7d9de99a2ac55f37df5a38b494473fb198320f015034baaf779fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a32719b31873b8c0e52320273eb391912d49592f0db529217578264334c04da8000000194f96d91941de3b7ad\",\"txsBlob\":\"00\",\"height\":15,\"targetBlob\":\"00e3b7ad0000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:11:37+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2e5\",\"fromGroup\":3,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d626775362c57434b7fb8eaad50750d8f69d2a4ede18ddad6f7afdfbceaf2ec14fd1acf00000194f96d997a1dff0b28\",\"txsBlob\":\"00\",\"height\":10,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:11:39+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2e6\",\"fromGroup\":0,\"toGroup\":0,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885d54ae901484dd5b4a6f02a301798c28322c5dd50ea7fef95828e5f610454752d800000194f96da15c1df09b6e\",\"txsBlob\":\"00\",\"height\":12,\"targetBlob\":\"00f09b6e0000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:11:41+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2e7\",\"fromGroup\":1,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba600000000920bef7d9de99a2ac55f37df5a38b494473fb198320f015034baaf779fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431aae4b91ae6abfd1af381e25d41b99f7a256f01cd2e8b8ca1a9a612d7d961d427500000194f96da9401dff0b28\",\"txsBlob\":\"00\",\"height\":6,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:11:43+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2e8\",\"fromGroup\":3,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d6267759cdc1534f8b8b2054f7d0131b87b8a947d2a20f1b4ff62a1537905db7e39dc2000000194f96db1261dff0b28\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:11:45+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2e9\",\"fromGroup\":0,\"toGroup\":0,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885d0db92237be43116eb42e480235949c89ab488f3541edd1e226c5194bd495367500000194f96db9081df09b6e\",\"txsBlob\":\"00\",\"height\":12,\"targetBlob\":\"00f09b6e0000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:11:47+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2ea\",\"fromGroup\":2,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e201709c5215d44ecb6f7f0775fadf540a40a2b8449717d073648cb3d61b96f194fc800000194f96dc0ed1df79d79\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00f79d790000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:11:49+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2eb\",\"fromGroup\":3,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d626775587da0399fa40b3f95a79487f28b892e8bdf5859424a16661851f32e5877450300000194f96dc8d31dff0b28\",\"txsBlob\":\"00\",\"height\":10,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:11:50+08:00","message":"{\"method\":\"mining.pong\",\"id\":73}"}
|
||||
{"level":"info","time":"2025-02-12T17:11:51+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2ec\",\"fromGroup\":0,\"toGroup\":3,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885d4de40928ec6d07f59ab3c13cb54aef54f16422d0aedf15b79a1c30d3e4468c4400000194f96dd0b51dff0b28\",\"txsBlob\":\"00\",\"height\":7,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:11:53+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2ed\",\"fromGroup\":0,\"toGroup\":2,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885d94be28262f8c0cd1b5f88aad6560e3774a81ea31f65fb10ead38afe51123e68a00000194f96dd8981de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:11:55+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2ee\",\"fromGroup\":0,\"toGroup\":2,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885d8bb2d65a11b3d6de4c44ddc2702b73e8884c7524e355a8d6820082389c6e611000000194f96de07c1de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:11:57+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2ef\",\"fromGroup\":3,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d6267755bb1932b5e034b8cbbae8ad318db99c266114f4bcfa679a74beb6193d524acff00000194f96de8621dff0b28\",\"txsBlob\":\"00\",\"height\":8,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:11:58+08:00","message":"{\"id\":296,\"method\":\"mining.submit\",\"params\":{\"jobId\":\"2ef\",\"fromGroup\":3,\"toGroup\":1,\"nonce\":\"01521b8a7504000101521b8a75040001b7cea63500000000\",\"worker\":\"alphtest\",\"workerName\":\"1x2\"}}"}
|
||||
{"level":"info","time":"2025-02-12T17:11:58+08:00","message":"{\"result\":true,\"id\":296,\"error\":null}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:11:59+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2f0\",\"fromGroup\":1,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba600000000920bef7d9de99a2ac55f37df5a38b494473fb198320f015034baaf779fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431ad47ebbceec30ec91135e70e1a85cc9ddff76fdadeae04a3a19a15195f5bf978500000194f96df0451de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:12:01+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2f1\",\"fromGroup\":2,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e2017847f81e862324a58146a7396772efb33f84060c08ec11a918e04627866ce50f900000194f96df82a1df79d79\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00f79d790000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:12:03+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2f2\",\"fromGroup\":0,\"toGroup\":0,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885d00a46de848a7e99cafaccbd4d362771c7cbda8e492070278fd42f638206a8fe900000194f96e000c1df09b6e\",\"txsBlob\":\"00\",\"height\":12,\"targetBlob\":\"00f09b6e0000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:12:05+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2f3\",\"fromGroup\":3,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d626775751c88f4fd009f2281977cd564cd274d76e3a18ec74a2b2f4fc7b8d03d8e9ea200000194f96e07f31dff0b28\",\"txsBlob\":\"00\",\"height\":10,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:12:07+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2f4\",\"fromGroup\":3,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d62677553f9e9356958a184b36acaf8f0a3c7467915e4eaacef400f0f570bdfbbf561b400000194f96e0fd51dff0b28\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:12:09+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2f5\",\"fromGroup\":2,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e2017b02af5e5fc4427d793ab95a37cdb637e8efb0a4aa437ef9b5e9df8c08d963e5200000194f96e17bb1de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:12:10+08:00","message":"{\"method\":\"mining.pong\",\"id\":74}"}
|
||||
{"level":"info","time":"2025-02-12T17:12:11+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2f6\",\"fromGroup\":1,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba600000000920bef7d9de99a2ac55f37df5a38b494473fb198320f015034baaf779fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431aa9260a135fab71e1c898c2618953c934e2c8189d1912cf05f4bfe8b18a89000200000194f96e1f9e1dff0b28\",\"txsBlob\":\"00\",\"height\":6,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:12:13+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2f7\",\"fromGroup\":3,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d6267752e3d82f5d3c2259da1f69049e98c87a6ba7f70c74f410543120507346dcc35dd00000194f96e27821dff0b28\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:12:15+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2f8\",\"fromGroup\":2,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e201701d444f691f2e7d266d043cb11800525623594f31ff18b6d6caa94f626884e4100000194f96e2f651de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:12:17+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2f9\",\"fromGroup\":0,\"toGroup\":0,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885d73525c17a8c2a98f945045312f83e9bf82512cc4d87ae125c3f8b23547f4a59800000194f96e37481df09b6e\",\"txsBlob\":\"00\",\"height\":12,\"targetBlob\":\"00f09b6e0000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:12:19+08:00","message":"{\"id\":296,\"method\":\"mining.submit\",\"params\":{\"jobId\":\"2f9\",\"fromGroup\":0,\"toGroup\":0,\"nonce\":\"01521b8a750e000101521b8a750e0001959be65d00000000\",\"worker\":\"alphtest\",\"workerName\":\"1x2\"}}"}
|
||||
{"level":"info","time":"2025-02-12T17:12:19+08:00","message":"{\"result\":true,\"id\":296,\"error\":null}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:12:19+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2fa\",\"fromGroup\":2,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e2017753741e0938d63df44ad572be80d561f41ee3119eb16e16a426143431643ec2900000194f96e3f2d1df79d79\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00f79d790000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:12:20+08:00","message":"{\"id\":296,\"method\":\"mining.submit\",\"params\":{\"jobId\":\"2fa\",\"fromGroup\":2,\"toGroup\":1,\"nonce\":\"01521b8a750f000101521b8a750f00010fb1d50500000000\",\"worker\":\"alphtest\",\"workerName\":\"1x2\"}}"}
|
||||
{"level":"info","time":"2025-02-12T17:12:20+08:00","message":"{\"result\":true,\"id\":296,\"error\":null}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:12:21+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2fb\",\"fromGroup\":0,\"toGroup\":2,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885dec305417aa8174fbc83e260f7629160ea64952db2a2c06b90d924965adc3c9c100000194f96e47111de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:12:23+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2fc\",\"fromGroup\":2,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e201758601bfb828d63daca84510772bb3dc077e38737d08a1144df92877067c446e400000194f96e4ef51dff0b28\",\"txsBlob\":\"00\",\"height\":5,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:12:25+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2fd\",\"fromGroup\":1,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba600000000920bef7d9de99a2ac55f37df5a38b494473fb198320f015034baaf779fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a75c78399f0c51a789b547aaa97b6f35aa1595ce6f18785fdb09ce6344a8596e400000194f96e56d91de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:12:27+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2fe\",\"fromGroup\":3,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d626775c9e97353921fcec93477c3c64d09fc639368e3316bb2ce2a083f49f1751a010900000194f96e5ebe1dff0b28\",\"txsBlob\":\"00\",\"height\":8,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:12:27+08:00","message":"{\"id\":296,\"method\":\"mining.submit\",\"params\":{\"jobId\":\"2fd\",\"fromGroup\":1,\"toGroup\":1,\"nonce\":\"01521b8a7512000101521b8a75120001a0b74f8500000000\",\"worker\":\"alphtest\",\"workerName\":\"1x2\"}}"}
|
||||
{"level":"info","time":"2025-02-12T17:12:27+08:00","message":"{\"result\":true,\"id\":296,\"error\":null}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:12:28+08:00","message":"{\"id\":296,\"method\":\"mining.submit\",\"params\":{\"jobId\":\"2fe\",\"fromGroup\":3,\"toGroup\":1,\"nonce\":\"01521b8a7513000101521b8a7513000155dc531400000000\",\"worker\":\"alphtest\",\"workerName\":\"1x2\"}}"}
|
||||
{"level":"info","time":"2025-02-12T17:12:28+08:00","message":"{\"result\":true,\"id\":296,\"error\":null}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:12:29+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"2ff\",\"fromGroup\":3,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d626775dbc986a94aade77a701108613b226e3ec1e958a83997bfdbf076fa2a78fbe5bb00000194f96e66a11dff0b28\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:12:30+08:00","message":"{\"method\":\"mining.pong\",\"id\":75}"}
|
||||
{"level":"info","time":"2025-02-12T17:12:31+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"300\",\"fromGroup\":3,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d62677585484b907507b941146e102f9521bfbdaeab9cab8ce32b7b6bcff5fe18a57af300000194f96e6e871dff0b28\",\"txsBlob\":\"00\",\"height\":10,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:12:33+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"301\",\"fromGroup\":1,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba600000000920bef7d9de99a2ac55f37df5a38b494473fb198320f015034baaf779fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a95501874f9bc09f0e6e7295d238506e95efab0f2a2cd8dc5ef5ca5d3257186eb00000194f96e76691dff0b28\",\"txsBlob\":\"00\",\"height\":6,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:12:35+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"302\",\"fromGroup\":1,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba600000000920bef7d9de99a2ac55f37df5a38b494473fb198320f015034baaf779fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431ad528e604b288f4192dbac41dfcd93da8d5890f4f59ad60a625a949d739fd056900000194f96e7e4e1de3b7ad\",\"txsBlob\":\"00\",\"height\":15,\"targetBlob\":\"00e3b7ad0000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:12:37+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"303\",\"fromGroup\":1,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba600000000920bef7d9de99a2ac55f37df5a38b494473fb198320f015034baaf779fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a03a56cc55f11303f6a1f88fc4682a2222306b38ef821140e1abe2866cc5bff7500000194f96e86311dff0b28\",\"txsBlob\":\"00\",\"height\":6,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:12:39+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"304\",\"fromGroup\":3,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d626775ad7595005f0c8cd73b4a8cda9bae0288ac2154fa3e2ed568f2247707aa28f23600000194f96e8e161dff0b28\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:12:41+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"305\",\"fromGroup\":3,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d62677545661bf722b0fafcbf94ff1e9ecea272aeaf659b7600df5bc7f430b992ba5bc000000194f96e95fa1dff0b28\",\"txsBlob\":\"00\",\"height\":10,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:12:43+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"306\",\"fromGroup\":0,\"toGroup\":0,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885d3f289f64a4859af4e399131cb3833dc7e5f4cde2c0b3f32b94127538b58c948200000194f96e9ddc1df09b6e\",\"txsBlob\":\"00\",\"height\":12,\"targetBlob\":\"00f09b6e0000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:12:45+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"307\",\"fromGroup\":3,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d6267756ffc187fc5541866f38c7f2d04854ef332c6572f4d156dfeec470fe9faad2f1700000194f96ea5c21dff0b28\",\"txsBlob\":\"00\",\"height\":10,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:12:47+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"308\",\"fromGroup\":0,\"toGroup\":2,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885dc7feb59f9a25d57725f90fd330c50411ab287fcd9bfd41dfdf23a2e8bd63ab5100000194f96eada51de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:12:49+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"309\",\"fromGroup\":2,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e2017025c307b1d218a483c268e666d59b9d3edeb00040d0cb5c40480586edb0c5bd800000194f96eb5891de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:12:50+08:00","message":"{\"method\":\"mining.pong\",\"id\":76}"}
|
||||
{"level":"info","time":"2025-02-12T17:12:51+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"30a\",\"fromGroup\":3,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d626775e26758e06d8276b1d94d62b2873e38cd19385e5692f6a072881d09dabee549f000000194f96ebd6d1dff0b28\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:12:53+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"30b\",\"fromGroup\":0,\"toGroup\":2,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885d1b8952efb359061e7facbebbecb6d2026d37ab2b3074f2740b6fd19748e0c2dc00000194f96ec5501de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:12:55+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"30c\",\"fromGroup\":1,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba600000000920bef7d9de99a2ac55f37df5a38b494473fb198320f015034baaf779fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a5238d4d628c64108bdf85ae0c4d50e636b8ae49d413b5c1707a570db77eeca7300000194f96ecd351da272b9\",\"txsBlob\":\"00\",\"height\":29,\"targetBlob\":\"00a272b90000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:12:56+08:00","message":"{\"id\":296,\"method\":\"mining.submit\",\"params\":{\"jobId\":\"30c\",\"fromGroup\":1,\"toGroup\":3,\"nonce\":\"01521b8a7521000101521b8a752100016808443300000000\",\"worker\":\"alphtest\",\"workerName\":\"1x2\"}}"}
|
||||
{"level":"info","time":"2025-02-12T17:12:56+08:00","message":"{\"result\":true,\"id\":296,\"error\":null}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:12:56+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"30d\",\"fromGroup\":3,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d626775e00fdb1223016fb3f62021f7cce6dcc69d94bacb8c6b6078912beacc9eec14c800000194f96ed1241dff0b28\",\"txsBlob\":\"00\",\"height\":10,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:12:58+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"30e\",\"fromGroup\":3,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d626775492ae2ff3dc07268ed5862cc8b10aca9803d734c19062e9af0755d2af6b047cc00000194f96ed9021dff0b28\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:13:00+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"30f\",\"fromGroup\":2,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e2017149f9d8ebdeedeae351d6bec573e1fc8acf433e5983f88b9d06edaceced17c9c00000194f96ee0e51df79d79\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00f79d790000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:13:01+08:00","message":"{\"id\":9,\"method\":\"alph_submitHashrate\",\"jsonrpc\":\"2.0\",\"worker\":\"alphtest\",\"workerName\":\"1x2\",\"params\":[\"416db800\",\"c48c782b0641a6b40b11444668d6a8d2d60c4345184cd66eaffb9e2c9f27f253\"]}"}
|
||||
{"level":"info","time":"2025-02-12T17:13:02+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"310\",\"fromGroup\":0,\"toGroup\":0,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885d48d8a55b427f9c76bf8559f747b7df506f404fb7f55ae88d62238b1a90109c2c00000194f96ee8c81df09b6e\",\"txsBlob\":\"00\",\"height\":12,\"targetBlob\":\"00f09b6e0000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:13:05+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"311\",\"fromGroup\":2,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e20178ed2f8ec8827fbe8b27cb3ef626960748b3aa534fc448c00175e9c71790d8b2b00000194f96ef0ae1df79d79\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00f79d790000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:13:07+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"312\",\"fromGroup\":1,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba600000002b75c2d560218b6c3edf9a67f11078a1717c49145bcd06390315821f79fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a693cf0ce8c35d6655e7b496728215b14c8529673af7052f46e6bd42b5b7cd9e900000194f96ef8901de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:13:09+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"313\",\"fromGroup\":0,\"toGroup\":0,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885d7de61013e5a5ecad1817f90b6a3f9961dcf7c5399cab84b6d916237de9f3eeed00000194f96f00731df09b6e\",\"txsBlob\":\"00\",\"height\":12,\"targetBlob\":\"00f09b6e0000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:13:10+08:00","message":"{\"method\":\"mining.pong\",\"id\":77}"}
|
||||
{"level":"info","time":"2025-02-12T17:13:11+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"314\",\"fromGroup\":0,\"toGroup\":3,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885d8d0f652d7c3f164da49de81251bc29ecbe1bb4060d23aeb3b7827922bfbc4f4100000194f96f08581dff0b28\",\"txsBlob\":\"00\",\"height\":7,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:13:13+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"315\",\"fromGroup\":0,\"toGroup\":1,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885d775e1821f26c78c73c0c57c681b8057771578a54cc8d4f693621fc60304f410300000194f96f103c1dff0b28\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:13:15+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"316\",\"fromGroup\":0,\"toGroup\":2,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885d258dbc1563ebaf30db4120f71fa2a2e09782f86f97507999f9f672c8677fc7c700000194f96f18211de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:13:17+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"317\",\"fromGroup\":1,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba600000002b75c2d560218b6c3edf9a67f11078a1717c49145bcd06390315821f79fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a6a1c8e7e8b0df945b98fa471574f2ebcd3ea3005be5717e41fb394bb9fab9b0200000194f96f20051d9f66f9\",\"txsBlob\":\"00\",\"height\":30,\"targetBlob\":\"009f66f90000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:13:19+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"318\",\"fromGroup\":0,\"toGroup\":0,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885d5675d6422b51b96bedc09503d00d212222d1034fe6d62731d35e81a95e288f0600000194f96f27e81df09b6e\",\"txsBlob\":\"00\",\"height\":12,\"targetBlob\":\"00f09b6e0000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:13:21+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"319\",\"fromGroup\":2,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e201761ba8c791598999b4ca5ac6cb3a90d7b72f07b98377286bb931003906e054d4500000194f96f2fce1de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:13:23+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"31a\",\"fromGroup\":1,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba600000002b75c2d560218b6c3edf9a67f11078a1717c49145bcd06390315821f79fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a40731a4cbc9550d97d091516ce76e5bafa008e0a3d2ebe75e4ebe014ab8a6e1500000194f96f37b11de3b7ad\",\"txsBlob\":\"00\",\"height\":15,\"targetBlob\":\"00e3b7ad0000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:13:25+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"31b\",\"fromGroup\":0,\"toGroup\":1,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885d1dcbe2beaeb3bca90da4115dfa25fc1bb1741e1bb4d601343bfbfddd692a3d7400000194f96f3f941dff0b28\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:13:27+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"31c\",\"fromGroup\":3,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d626775a03612c817cc1646cf3b43a59f4743cb78a7b41d5a99332876a64363c83ca52600000194f96f477a1dff0b28\",\"txsBlob\":\"00\",\"height\":10,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:13:29+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"31d\",\"fromGroup\":3,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d626775d9a322cd215802ea151189ae6db36dcd36b9d1e7a09465be29920b25fc0680e000000194f96f4f5d1dff0b28\",\"txsBlob\":\"00\",\"height\":10,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:13:30+08:00","message":"{\"method\":\"mining.pong\",\"id\":78}"}
|
||||
{"level":"info","time":"2025-02-12T17:13:31+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"31e\",\"fromGroup\":1,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba600000002b75c2d560218b6c3edf9a67f11078a1717c49145bcd06390315821f79fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431ab9f789e971a1422e66d0375d6bd20dd2312c3b7d939b8ea11c4fb3377165bf5600000194f96f57401de3b7ad\",\"txsBlob\":\"00\",\"height\":15,\"targetBlob\":\"00e3b7ad0000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:13:33+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"31f\",\"fromGroup\":1,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba600000002b75c2d560218b6c3edf9a67f11078a1717c49145bcd06390315821f79fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a44eb197705c7bde5a9bb4805f6f8d4b54e9f784302b7cbfe1a614cefbc5811ef00000194f96f5f241de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:13:35+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"320\",\"fromGroup\":2,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e2017736e7a5539fe459167e783b4ecdbfb728f789bfe1dfc2f7b054220ccd269a84a00000194f96f670a1dff0b28\",\"txsBlob\":\"00\",\"height\":5,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:13:37+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"321\",\"fromGroup\":1,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba600000002b75c2d560218b6c3edf9a67f11078a1717c49145bcd06390315821f79fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a2e8869ce93ad44d0c05400320d9adcda21b039e8888b681b63e68f7d54c019a000000194f96f6eec1dff0b28\",\"txsBlob\":\"00\",\"height\":6,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:13:39+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"322\",\"fromGroup\":1,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba600000002b75c2d560218b6c3edf9a67f11078a1717c49145bcd06390315821f79fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a69812c58ac1aa39a7c2809be297bc8007d16fa7dd2ac109546a0e49cf9ef826700000194f96f76d11d9f66f9\",\"txsBlob\":\"00\",\"height\":30,\"targetBlob\":\"009f66f90000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:13:41+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"323\",\"fromGroup\":3,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d626775bb64b8ddce1f3c9f0efd4c6c285724d5fa9769c54b47993ae26cfbd1f803eaf400000194f96f7eb61dff0b28\",\"txsBlob\":\"00\",\"height\":10,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:13:43+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"324\",\"fromGroup\":3,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d6267758dfef71cdcd298945f58486f0c7c551d708c1bb72c714697ab55fafb7c3f08e100000194f96f869a1dff0b28\",\"txsBlob\":\"00\",\"height\":10,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:13:45+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"325\",\"fromGroup\":3,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d626775f9570dabc31b7c73283b401b8940c44ed1b0772a4eafbe7385dfffc32c43b63700000194f96f8e7e1dff0b28\",\"txsBlob\":\"00\",\"height\":8,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:13:47+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"326\",\"fromGroup\":0,\"toGroup\":2,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885d6cbd24d9466b19215225e854bf993d1e80734c1f77b8b6e9c59ada4ea6c2f3ad00000194f96f96611de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:13:49+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"327\",\"fromGroup\":3,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d6267757dbb095d68947335fa7878b16696e02d24c89a698723dca5efc89c3882c28d0500000194f96f9e461dff0b28\",\"txsBlob\":\"00\",\"height\":8,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:13:50+08:00","message":"{\"method\":\"mining.pong\",\"id\":79}"}
|
||||
{"level":"info","time":"2025-02-12T17:13:51+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"328\",\"fromGroup\":2,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e2017041b9dbbae926e4b71b038af1824de76421d75a2e4e6203be518f162a4ee5c2d00000194f96fa6291de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:13:53+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"329\",\"fromGroup\":3,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d626775d7328d93f847909064d0f8046572be51922f0975b4d50da255ebf404a396ef4d00000194f96fae101dff0b28\",\"txsBlob\":\"00\",\"height\":10,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:13:55+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"32a\",\"fromGroup\":1,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba600000002b75c2d560218b6c3edf9a67f11078a1717c49145bcd06390315821f79fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a008f5c336f60141a80e276642f6dd226ab8b97b9adf6d728f17099db4ca8577e00000194f96fb5f11de3b7ad\",\"txsBlob\":\"00\",\"height\":15,\"targetBlob\":\"00e3b7ad0000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:13:56+08:00","message":"{\"id\":296,\"method\":\"mining.submit\",\"params\":{\"jobId\":\"32a\",\"fromGroup\":1,\"toGroup\":2,\"nonce\":\"01521b8a753f000101521b8a753f00010c7d274900000000\",\"worker\":\"alphtest\",\"workerName\":\"1x2\"}}"}
|
||||
{"level":"info","time":"2025-02-12T17:13:56+08:00","message":"{\"result\":true,\"id\":296,\"error\":null}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:13:57+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"32b\",\"fromGroup\":2,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e2017fb73149e18dbae407c6a6ab6338f8532f6f5d1042845c38ee096dcb894b24ecf00000194f96fbdd71df79d79\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00f79d790000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:13:59+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"32c\",\"fromGroup\":1,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba600000002b75c2d560218b6c3edf9a67f11078a1717c49145bcd06390315821f79fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431accfe9cf0e77239f342d71fef49ac0c3d5a3cf2e32a092d0ed24e6fef0bfb8b2200000194f96fc5b91d9f66f9\",\"txsBlob\":\"00\",\"height\":30,\"targetBlob\":\"009f66f90000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:14:01+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"32d\",\"fromGroup\":0,\"toGroup\":3,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885dcae06347dd733ab29862a5961621b54f99b04b223f42114a30685aabc21c4cd600000194f96fcd9d1dff0b28\",\"txsBlob\":\"00\",\"height\":7,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:14:03+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"32e\",\"fromGroup\":2,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e2017ddb5290c5692302598dd6ab4b5b32d24f9012ef20aedc87131ba3897d3672ba600000194f96fd5821dff0b28\",\"txsBlob\":\"00\",\"height\":5,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:14:05+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"32f\",\"fromGroup\":3,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d626775d2c66d7e844561d730d9143b803ed14eacfa1af854a443b62a9d906c6a32a6f200000194f96fdd661dff0b28\",\"txsBlob\":\"00\",\"height\":10,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:14:07+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"330\",\"fromGroup\":2,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e201737ca87377f245d54423eb71f09fb3bbfd32f08928051fb3970bfe6d6acdf254900000194f96fe54a1de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:14:09+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"331\",\"fromGroup\":2,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e2017394f70b4214ba4da370fb4a41628ea28067bb6f75625cec53472ee07d5631f1100000194f96fed2e1de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:14:10+08:00","message":"{\"method\":\"mining.pong\",\"id\":80}"}
|
||||
{"level":"info","time":"2025-02-12T17:14:11+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"332\",\"fromGroup\":1,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba600000002b75c2d560218b6c3edf9a67f11078a1717c49145bcd06390315821f79fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431acc8fe0e7f79a872eea2e2942e91f0c15a134aeaef11fac20d956a76591dec1f600000194f96ff5121dff0b28\",\"txsBlob\":\"00\",\"height\":6,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:14:13+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"333\",\"fromGroup\":3,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d626775c3e78f6669b9576c71ece5e15f2d9324de2440febe2250f0c9b546d90f5e3bb000000194f96ffcf51dff0b28\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:14:15+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"334\",\"fromGroup\":2,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e201710c0f0a7632cb5aaa2ca8e71bd50ec0570763f38e2897b52a23c5f4a5d3d359600000194f97004da1dff0b28\",\"txsBlob\":\"00\",\"height\":5,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:14:17+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"335\",\"fromGroup\":2,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e2017f35ea8639c867246825e62a55ce7f21856fd800e320c769812c4a5f6b8b2ceb000000194f9700cbe1df79d79\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00f79d790000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:14:19+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"336\",\"fromGroup\":3,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d626775062f2247196bdcc072a566411a5e614dfb09c5473aed470c5d5033533154525700000194f97014a21dff0b28\",\"txsBlob\":\"00\",\"height\":10,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:14:21+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"337\",\"fromGroup\":0,\"toGroup\":1,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885d59b8df6c11560233d85a8b89326287200a0a1eb1030dad984643469b7fbf873b00000194f9701c851dff0b28\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:14:23+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"338\",\"fromGroup\":3,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d626775c2ef5429dd48e02c8a5dc1757214726de2cdebc0a4941c5a07b82d5da52c887d00000194f970246a1dff0b28\",\"txsBlob\":\"00\",\"height\":8,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:14:25+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"339\",\"fromGroup\":3,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d6267750168f47ec973ab821e6ac225bc7be8e5863a0234ec5a3b5ddb7f0c586cfad84900000194f9702c4e1dff0b28\",\"txsBlob\":\"00\",\"height\":10,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:14:27+08:00","message":"{\"id\":296,\"method\":\"mining.submit\",\"params\":{\"jobId\":\"339\",\"fromGroup\":3,\"toGroup\":2,\"nonce\":\"01521b8a754e000101521b8a754e00014ac9297b00000000\",\"worker\":\"alphtest\",\"workerName\":\"1x2\"}}"}
|
||||
{"level":"info","time":"2025-02-12T17:14:27+08:00","message":"{\"result\":true,\"id\":296,\"error\":null}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:14:27+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"33a\",\"fromGroup\":0,\"toGroup\":1,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885dd5a2a60132b454ba5728247450c975f4cb22d5dd2555670a45fa99568efe745700000194f97034301dff0b28\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:14:29+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"33b\",\"fromGroup\":0,\"toGroup\":3,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885dd4628e645694332d3cc08750453435b1a2b5cc01eac07246631a8da265be467400000194f9703c151dff0b28\",\"txsBlob\":\"00\",\"height\":7,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:14:30+08:00","message":"{\"method\":\"mining.pong\",\"id\":81}"}
|
||||
{"level":"info","time":"2025-02-12T17:14:31+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"33c\",\"fromGroup\":1,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba600000002b75c2d560218b6c3edf9a67f11078a1717c49145bcd06390315821f79fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a39e61fa5849d97b694d65dc4279556e13ed7223639967db8a03072c1d972cc2100000194f97043f91dff0b28\",\"txsBlob\":\"00\",\"height\":6,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:14:33+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"33d\",\"fromGroup\":3,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d626775a4e1ec46d5cb952b370791af943976e862fb1fbdfdf066275a1d32a3cc3aa35d00000194f9704bdf1dff0b28\",\"txsBlob\":\"00\",\"height\":10,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:14:35+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"33e\",\"fromGroup\":0,\"toGroup\":0,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885d211a5c7bc558590c6a94028e7bee55b38ed85e63b3a36a7c69f30746f177f9e100000194f97053c01df09b6e\",\"txsBlob\":\"00\",\"height\":12,\"targetBlob\":\"00f09b6e0000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:14:37+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"33f\",\"fromGroup\":1,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba600000002b75c2d560218b6c3edf9a67f11078a1717c49145bcd06390315821f79fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431acd8778a52c0f2ed80de9bfbd236dc7610d00fce2fe5bc4fd9b8e52e38f1e7f0000000194f9705ba41de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:14:39+08:00","message":"{\"id\":296,\"method\":\"mining.submit\",\"params\":{\"jobId\":\"33f\",\"fromGroup\":1,\"toGroup\":1,\"nonce\":\"01521b8a7554000101521b8a75540001e145af6000000000\",\"worker\":\"alphtest\",\"workerName\":\"1x2\"}}"}
|
||||
{"level":"info","time":"2025-02-12T17:14:39+08:00","message":"{\"result\":true,\"id\":296,\"error\":null}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:14:39+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"340\",\"fromGroup\":1,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba600000002b75c2d560218b6c3edf9a67f11078a1717c49145bcd06390315821f79fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431af796f3f65ebf5b9bea6de50fa5184e7ae4efae03646b6300aed9005f5e5945db00000194f970638a1d9f66f9\",\"txsBlob\":\"00\",\"height\":30,\"targetBlob\":\"009f66f90000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:14:41+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"341\",\"fromGroup\":1,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba600000002b75c2d560218b6c3edf9a67f11078a1717c49145bcd06390315821f79fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a56fdbfad46a62863287e0c6817ec315dca7f32fdbcd2a9b37a2bce18e46c622600000194f9706b6d1de3b7ad\",\"txsBlob\":\"00\",\"height\":15,\"targetBlob\":\"00e3b7ad0000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:14:43+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"342\",\"fromGroup\":0,\"toGroup\":0,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885dcde2575ab856255d651d12231222320a9fbd20d90b5b1faad14f2b7ced5b917300000194f97073501df09b6e\",\"txsBlob\":\"00\",\"height\":12,\"targetBlob\":\"00f09b6e0000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:14:46+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"343\",\"fromGroup\":1,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba600000002b75c2d560218b6c3edf9a67f11078a1717c49145bcd06390315821f79fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a5f25cea980bd08f4321f128e1a96ad409fd26af27c3f3bca1532fde1d5c9f53500000194f9707b351dff0b28\",\"txsBlob\":\"00\",\"height\":6,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:14:48+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"344\",\"fromGroup\":3,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d62677533e2e59a706bf263b559573c033626a35c39ddd14a53780bff7e5e21b8a8416400000194f970831a1dff0b28\",\"txsBlob\":\"00\",\"height\":10,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:14:50+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"345\",\"fromGroup\":2,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e2017bb27938a67a284c49e722fabcc484617eb82eb037e82dc4cb8c27f6f772ff32f00000194f9708afe1de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:14:50+08:00","message":"{\"method\":\"mining.pong\",\"id\":82}"}
|
||||
{"level":"info","time":"2025-02-12T17:14:52+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"346\",\"fromGroup\":0,\"toGroup\":0,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885dde033922ef08dbff4e507faa9c51802835ec32cfba6f2c97b4dcde7822d361bb00000194f97092e01df09b6e\",\"txsBlob\":\"00\",\"height\":12,\"targetBlob\":\"00f09b6e0000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:14:54+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"347\",\"fromGroup\":1,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba600000002b75c2d560218b6c3edf9a67f11078a1717c49145bcd06390315821f79fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a6d4b66d72aeead727bfebcac086ba2917d1a174813780a8e00563180e40f011300000194f9709ac51de3b7ad\",\"txsBlob\":\"00\",\"height\":15,\"targetBlob\":\"00e3b7ad0000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:14:56+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"348\",\"fromGroup\":2,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e2017a862e92e606d76cb87c6631bd3df4a6b37fc68183c39e2e323d95f918dad535500000194f970a2aa1df79d79\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00f79d790000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:14:58+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"349\",\"fromGroup\":3,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d6267755cc8d45602ab30f4857b3a63a5039e49bb999e80555288776e07b8c14f3b21c100000194f970aa8e1dff0b28\",\"txsBlob\":\"00\",\"height\":8,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:15:00+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"34a\",\"fromGroup\":2,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e2017c50d74cfa566a22ec5eaaa3253996e69f68966046f1451c966f56c284d955e8c00000194f970b2761dff0b28\",\"txsBlob\":\"00\",\"height\":5,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:15:01+08:00","message":"{\"id\":9,\"method\":\"alph_submitHashrate\",\"jsonrpc\":\"2.0\",\"worker\":\"alphtest\",\"workerName\":\"1x2\",\"params\":[\"418e9900\",\"c48c782b0641a6b40b11444668d6a8d2d60c4345184cd66eaffb9e2c9f27f253\"]}"}
|
||||
{"level":"info","time":"2025-02-12T17:15:02+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"34b\",\"fromGroup\":3,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d6267757ab3dbbd2286a688a5c299b39bb71401956f17e257458526291b770d55141fd000000194f970ba551dff0b28\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:15:04+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"34c\",\"fromGroup\":2,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e2017b4c2a27ba8791ba3d76f6de4a7c2c33a3841c39f0ffb93fff1ed0707e9838ca800000194f970c2391df79d79\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00f79d790000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:15:06+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"34d\",\"fromGroup\":2,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e2017a036d86a58bd884209b188fee9bcdaa232c3c9a5e2e38f8bdf355bc11f92f57600000194f970ca1d1df79d79\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00f79d790000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:15:08+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"34e\",\"fromGroup\":2,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e20173e07bb43a86b7e648fdcc27775cd08ec9221f15316f42fc74d1eb7bc1f6dd53700000194f970d2021df79d79\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00f79d790000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:15:10+08:00","message":"{\"method\":\"mining.pong\",\"id\":83}"}
|
||||
{"level":"info","time":"2025-02-12T17:15:10+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"34f\",\"fromGroup\":0,\"toGroup\":1,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885d603ae57eeb3d9d0efea3e763f02526f6d766b136d8130ab94ece75ca1819b16800000194f970d9e61dff0b28\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:15:11+08:00","message":"{\"id\":296,\"method\":\"mining.submit\",\"params\":{\"jobId\":\"34f\",\"fromGroup\":0,\"toGroup\":1,\"nonce\":\"01521b8a7564000101521b8a75640001658d3f4600000000\",\"worker\":\"alphtest\",\"workerName\":\"1x2\"}}"}
|
||||
{"level":"info","time":"2025-02-12T17:15:11+08:00","message":"{\"result\":true,\"id\":296,\"error\":null}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:15:12+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"350\",\"fromGroup\":0,\"toGroup\":0,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885dd4cfb9d03b5b08e0b70c2550333db62a9b61c0d5a04acabe02d0061252766cf200000194f970e1c81df09b6e\",\"txsBlob\":\"00\",\"height\":12,\"targetBlob\":\"00f09b6e0000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:15:13+08:00","message":"{\"id\":296,\"method\":\"mining.submit\",\"params\":{\"jobId\":\"350\",\"fromGroup\":0,\"toGroup\":0,\"nonce\":\"01521b8a7565000101521b8a75650001c7325e3a00000000\",\"worker\":\"alphtest\",\"workerName\":\"1x2\"}}"}
|
||||
{"level":"info","time":"2025-02-12T17:15:13+08:00","message":"{\"result\":true,\"id\":296,\"error\":null}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:15:14+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"351\",\"fromGroup\":2,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e2017c6bcd960b6e1c2cbf856fe70d792bec227c5e3f792d544bf71fa6c0d3b8120b200000194f970e9ae1de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:15:16+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"352\",\"fromGroup\":1,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba600000002b75c2d560218b6c3edf9a67f11078a1717c49145bcd06390315821f79fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431abf5fb5e9a5c1941e40ab8839652c3488cde0f90d1b69c9eb2c02e03f1e5eeb3700000194f970f1901dff0b28\",\"txsBlob\":\"00\",\"height\":6,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:15:18+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"353\",\"fromGroup\":1,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba600000002b75c2d560218b6c3edf9a67f11078a1717c49145bcd06390315821f79fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a115b3e0911f111f1f9ba8d161f8c8c8df26fa8b09c8e635ce5826771963ddb1600000194f970f9751d9f66f9\",\"txsBlob\":\"00\",\"height\":30,\"targetBlob\":\"009f66f90000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:15:20+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"354\",\"fromGroup\":1,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba600000002b75c2d560218b6c3edf9a67f11078a1717c49145bcd06390315821f79fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a92e57ddb72694ba1ce23cc08cd7a506a317b4ccf6ed4e65d26458420433f2e5500000194f97101591d9f66f9\",\"txsBlob\":\"00\",\"height\":30,\"targetBlob\":\"009f66f90000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:15:22+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"355\",\"fromGroup\":0,\"toGroup\":3,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885ddd8c478d4e52ab695cd47b7b5fd7b181c7dd3f3a8a8ebc3c21d14b0bfd8dbda700000194f971093c1dff0b28\",\"txsBlob\":\"00\",\"height\":7,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:15:24+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"356\",\"fromGroup\":3,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d62677513acdc5cb771885b695a00550da57f7c5cab975f8b11740e9b1d8483e572dbdb00000194f97111221dff0b28\",\"txsBlob\":\"00\",\"height\":8,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:15:26+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"357\",\"fromGroup\":3,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d62677557b6f7cf2f2dad98a4705a8c2dfdf85e88c0f2b92e3b0b7fa9e49abb92bb077c00000194f97119061dff0b28\",\"txsBlob\":\"00\",\"height\":10,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:15:28+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"358\",\"fromGroup\":3,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d626775cf8bb83cc06bb663e9c879a46a79a71a2a106f24516f36a4cf28dcc033926d0300000194f97120ea1dff0b28\",\"txsBlob\":\"00\",\"height\":8,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:15:30+08:00","message":"{\"method\":\"mining.pong\",\"id\":84}"}
|
||||
{"level":"info","time":"2025-02-12T17:15:30+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"359\",\"fromGroup\":1,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba600000002b75c2d560218b6c3edf9a67f11078a1717c49145bcd06390315821f79fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431ac9eee76a8220a566dec883f0343ed6bfa63698e255598fc8bd76d7878e7cca9a00000194f97128cd1dff0b28\",\"txsBlob\":\"00\",\"height\":6,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:15:32+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"35a\",\"fromGroup\":2,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e201768c31231f29a397739fef9e07ca36b02a493db1ceae88b0e8d36f57cbbc8e40600000194f97130b11dff0b28\",\"txsBlob\":\"00\",\"height\":5,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:15:34+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"35b\",\"fromGroup\":0,\"toGroup\":0,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885d8aead5c7375a48c704bd9e838785bd74a8bf59e54e31b1e249efdf5b840c0f2500000194f97138941df09b6e\",\"txsBlob\":\"00\",\"height\":12,\"targetBlob\":\"00f09b6e0000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:15:38+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"35c\",\"fromGroup\":0,\"toGroup\":1,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885d4ab7de36b4e447e89e5d1722332f233e1d95fe20f48adf39cf59919c7e88e03200000194f97140781dff0b28\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:15:50+08:00","message":"{\"method\":\"mining.pong\",\"id\":85}"}
|
||||
{"level":"info","time":"2025-02-12T17:15:51+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"35d\",\"fromGroup\":3,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d626775b9222683fb1180e903f3eafbb5118ee6f2888f9310bc4078cf4db23b1165761500000194f971485e1dff0b28\",\"txsBlob\":\"00\",\"height\":10,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:15:51+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"35e\",\"fromGroup\":2,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e201787263832b9156986f9c0ba4815b8e897663aa6275c80dac13759de6ca7a79a9300000194f97150411dff0b28\",\"txsBlob\":\"00\",\"height\":5,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:15:55+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"35f\",\"fromGroup\":3,\"toGroup\":3,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d626775694d5f003ca4a2628908b8afa46b525abea2958f84e8214126268907c5e6ea2400000194f97158261dff0b28\",\"txsBlob\":\"00\",\"height\":10,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:15:56+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"360\",\"fromGroup\":3,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d626775376f744fff8259e10a8da2d2743805fcb48992bb8296e0e2ec6d4205c17b910500000194f971600a1dff0b28\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:15:56+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"361\",\"fromGroup\":0,\"toGroup\":3,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885d177ba6a9b6e03c8c5d638f81b7100a811f2d107e77ebb5f3ddc41d667735942f00000194f97167ed1dff0b28\",\"txsBlob\":\"00\",\"height\":7,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:16:00+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"362\",\"fromGroup\":3,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d626775758a842799368362d956627faa941d2a65f4f46b30c3233914c4efb4deaedb2700000194f9716fd21dff0b28\",\"txsBlob\":\"00\",\"height\":8,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:16:05+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"363\",\"fromGroup\":2,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e20173247cae736395ccfaf17bc4144c0196a09148b286941ba801c61ac07d8ed22b100000194f97177b51df79d79\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00f79d790000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:16:10+08:00","message":"{\"method\":\"mining.pong\",\"id\":86}"}
|
||||
{"level":"info","time":"2025-02-12T17:16:14+08:00","message":"{\"id\":296,\"method\":\"mining.submit\",\"params\":{\"jobId\":\"363\",\"fromGroup\":2,\"toGroup\":0,\"nonce\":\"01521b8a7578000101521b8a7578000166a6a85402000000\",\"worker\":\"alphtest\",\"workerName\":\"1x2\"}}"}
|
||||
{"level":"info","time":"2025-02-12T17:16:14+08:00","message":"{\"result\":true,\"id\":296,\"error\":null}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:16:19+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"364\",\"fromGroup\":1,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba600000002b75c2d560218b6c3edf9a67f11078a1717c49145bcd06390315821f79fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a83132545aff00b4a24c583dda846f2dd3c083b24bd8391ebfe7e137cac99f86200000194f9717f991dff0b28\",\"txsBlob\":\"00\",\"height\":6,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:16:23+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"365\",\"fromGroup\":2,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e2017225760a14f3de761134d862d577b2fe2ae080eafbec0e2a7e8a2e009a86d294700000194f971877d1df79d79\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00f79d790000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:16:30+08:00","message":"{\"method\":\"mining.pong\",\"id\":87}"}
|
||||
{"level":"info","time":"2025-02-12T17:16:50+08:00","message":"{\"method\":\"mining.pong\",\"id\":88}"}
|
||||
{"level":"info","time":"2025-02-12T17:16:51+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"366\",\"fromGroup\":2,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e201786f7a22ab7d76a7ac39fc9ee2109688dc4f4142d6be5cf05cef100930774a2b900000194f9718f621df79d79\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00f79d790000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:16:51+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"367\",\"fromGroup\":0,\"toGroup\":1,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885d57bf6efa3981883b57f208e8d1fa4a750fca876d20b1d3870bd2fe8d78ffaaf300000194f97197451dff0b28\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:16:55+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"368\",\"fromGroup\":1,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba600000002b75c2d560218b6c3edf9a67f11078a1717c49145bcd06390315821f79fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a855b94f067173c2ac583aa2eb9ce1ad1f2bfe4dc033f3aa70a4d229c6389430400000194f9719f291dff0b28\",\"txsBlob\":\"00\",\"height\":6,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:16:55+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"369\",\"fromGroup\":0,\"toGroup\":1,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885d67303b4d8080a97a280f9dfaef2ff214e1c3c08d30fab6b2b52a2831d62ed6d300000194f971a70c1dff0b28\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:16:59+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"36a\",\"fromGroup\":0,\"toGroup\":3,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885d1babd2e666d31d846270789c2fce7f7b25a4ae301c3fce028b4afeb0eee31c3f00000194f971aef01dff0b28\",\"txsBlob\":\"00\",\"height\":7,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:16:59+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"36b\",\"fromGroup\":2,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e2017d549ce790eecb6d7113250c07a76af3ce1c9112a5dcf6d0935bae9f7e1804a0e00000194f971b6d51df79d79\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00f79d790000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:17:01+08:00","message":"{\"id\":9,\"method\":\"alph_submitHashrate\",\"jsonrpc\":\"2.0\",\"worker\":\"alphtest\",\"workerName\":\"1x2\",\"params\":[\"419b9c00\",\"c48c782b0641a6b40b11444668d6a8d2d60c4345184cd66eaffb9e2c9f27f253\"]}"}
|
||||
{"level":"info","time":"2025-02-12T17:17:05+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"36c\",\"fromGroup\":3,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d626775b06d3eb7f686300535cf083a5d45f1e5fa86edb3386666dd2d0f2ba8b96e6d8000000194f971bebb1dff0b28\",\"txsBlob\":\"00\",\"height\":8,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:17:05+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"36d\",\"fromGroup\":2,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e2017361a4af222ccfe905f6149e2c4e5e87e671b19ea785110ffb24468e0b3ce800400000194f971c69d1df79d79\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00f79d790000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:17:06+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"36e\",\"fromGroup\":3,\"toGroup\":0,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d62677566357cb99c49235fe801908b7c4e8df1f4bc69996b7a9620797c0eb253b546d700000194f971ce821dff0b28\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:17:09+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"36f\",\"fromGroup\":1,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba600000002b75c2d560218b6c3edf9a67f11078a1717c49145bcd06390315821f79fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a99de248914506b6a0376bcf92d85286d766a17e8f24f292e1f96e909e037413700000194f971d6651de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:17:10+08:00","message":"{\"method\":\"mining.pong\",\"id\":89}"}
|
||||
{"level":"info","time":"2025-02-12T17:17:10+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"370\",\"fromGroup\":1,\"toGroup\":2,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba600000002b75c2d560218b6c3edf9a67f11078a1717c49145bcd06390315821f79fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431a64e5eca0eea1ab8a5a726bc5140c3a08c26205ac5bbe1553fc05bc44711d320c00000194f971de4c1de3b7ad\",\"txsBlob\":\"00\",\"height\":15,\"targetBlob\":\"00e3b7ad0000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:17:10+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"371\",\"fromGroup\":2,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000007ffe0838a6748e6ac84b87ec3e645d1ecd7f773f3aa3888905ce02c800000003f99e3ba603c657f102ebb3fc4948e886da17cd12ffaa8f07b1a484e9000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000000684aadfcbfbbf6dd69e239e885c519def71ddcdac2ac078c4ea516bb6b411698e4c2ca527ab13b516cee4357649e5d64adbea49c5a9e4d7a6b9e2017dd3d82826b4dfdeb1c0ad31e6a376027afd8f87385e1472d5f393315ec23a50300000194f971de4c1df79d79\",\"txsBlob\":\"00\",\"height\":11,\"targetBlob\":\"00f79d790000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:17:12+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"372\",\"fromGroup\":1,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f000000019a1eb3f66fddce778b4091fc3f77842fccaabd9eda2f427d77d04a640000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000031b002ae52ba0b341f4e3a0f47861bc87e65079cc891623777e806ba600000002b75c2d560218b6c3edf9a67f11078a1717c49145bcd06390315821f79fc6879dc65c4271dd61c8fde7906dd78a60e11da1b0c1eacfa1f1bca9d9431ade2fb30f078df6cfb36cc187a6e636671e8bc90b595b1b312295ab50609f96c700000194f971e62d1de9fc25\",\"txsBlob\":\"00\",\"height\":13,\"targetBlob\":\"00e9fc250000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:17:16+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"373\",\"fromGroup\":0,\"toGroup\":0,\"headerBlob\":\"00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f350000000001856a418c6edb482273ed41ada0b6ae87df9c775c2221d924ee5a0d100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3749ed77be1b05e0bb6bb1302078132ee1ae4a6349985cdb6e29babffaabf885db88bbfa84a16e53d738fabd00808ac12a25f5cf7f2d891dfc0fc462eb557aa5900000194f971e62c1df09b6e\",\"txsBlob\":\"00\",\"height\":12,\"targetBlob\":\"00f09b6e0000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:17:19+08:00","message":"{\"id\":296,\"method\":\"mining.submit\",\"params\":{\"jobId\":\"373\",\"fromGroup\":0,\"toGroup\":0,\"nonce\":\"01521b8a7588000101521b8a758800019806679a00000000\",\"worker\":\"alphtest\",\"workerName\":\"1x2\"}}"}
|
||||
{"level":"info","time":"2025-02-12T17:17:19+08:00","message":"{\"result\":true,\"id\":296,\"error\":null}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:17:24+08:00","message":"{\"id\":296,\"method\":\"mining.submit\",\"params\":{\"jobId\":\"373\",\"fromGroup\":0,\"toGroup\":0,\"nonce\":\"01521b8a7588000101521b8a758800015936110002000000\",\"worker\":\"alphtest\",\"workerName\":\"1x2\"}}"}
|
||||
{"level":"info","time":"2025-02-12T17:17:24+08:00","message":"{\"result\":true,\"id\":296,\"error\":null}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:17:30+08:00","message":"{\"method\":\"mining.pong\",\"id\":90}"}
|
||||
{"level":"info","time":"2025-02-12T17:17:32+08:00","message":"{\"id\":null,\"method\":\"mining.notify\",\"params\":[{\"jobId\":\"374\",\"fromGroup\":3,\"toGroup\":1,\"headerBlob\":\"000700000000cca98c3f384ba1662ddda68689794f930ba9e5ec850ee25634e1f3500000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000023f40b1b8bb096cdf50bb69e59a7edef61000690a57f5ee675ebd91ea00000001ab2eb744ab162c21750a9d9364e0b04f32c4207e9b95c0930ced492c00000000cbe36c03bb2c5b699046aacf5f29d029ca9755b4a67f6a0ae70374bd000000009c16926a8f74aaa7d763af2514d796e9eeddce8919b6dfe223200ede000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f300a5dcb8852c7b8ff7120245b8f55d63fe0851367b14df95ae6b4f41d626775a2973aab68adaa4676cca263773dd3a238a02005e59c72d6cc507f62d0d8b4b300000194f971ee111dff0b28\",\"txsBlob\":\"00\",\"height\":8,\"targetBlob\":\"00ff0b280000000000000000000000000000000000000000000000000000\",\"diff\":0,\"nonce\":\"\",\"extranonce1\":\"\"}]}\n"}
|
||||
{"level":"info","time":"2025-02-12T17:17:32+08:00","message":"miner disconnect prepare alphtest.1x2"}
|
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,44 @@
|
|||
{
|
||||
"coin": "alph",
|
||||
"host": {
|
||||
"listen": "0.0.0.0:21233",
|
||||
"auth": false
|
||||
},
|
||||
"diff": {
|
||||
"start_diff": 50,
|
||||
"diff_min":1,
|
||||
"diff_max":1048576,
|
||||
"diff_adjust_interval": 5,
|
||||
"diff_adjust_percentage": 0.2,
|
||||
"diff_adjust_time":600,
|
||||
"filter": "kalman",
|
||||
"dbg": false
|
||||
},
|
||||
"zmq": {
|
||||
"pub":"tcp://127.0.0.1:21214",
|
||||
"sub":"tcp://127.0.0.1:21213"
|
||||
},
|
||||
"redis": {
|
||||
"addr": "127.0.0.1:6379",
|
||||
"password": "",
|
||||
"db": 2
|
||||
},
|
||||
"zap": {
|
||||
"level": "debug",
|
||||
"encoding": "json",
|
||||
"outputPaths": ["stdout", "/dev/null"],
|
||||
"errorOutputPaths": ["stdout"],
|
||||
"initialFields": {"server": "server"},
|
||||
"encoderConfig": {
|
||||
"messageKey": "message",
|
||||
"levelKey": "level",
|
||||
"levelEncoder": "lowercase"
|
||||
}
|
||||
},
|
||||
"logrotate": {
|
||||
"maxsize": 10,
|
||||
"maxbackups": 100,
|
||||
"maxage": 31,
|
||||
"compress": true
|
||||
}
|
||||
}
|
|
@ -0,0 +1,31 @@
|
|||
// server.go
|
||||
package main
|
||||
|
||||
import (
|
||||
"os"
|
||||
"pool/internal/db"
|
||||
"pool/internal/server"
|
||||
|
||||
"pool/internal/utility"
|
||||
)
|
||||
|
||||
func start(coin string, DbCtx *db.DbContext) {
|
||||
server.Start(coin, DbCtx)
|
||||
}
|
||||
|
||||
func stop() {
|
||||
server.Stop()
|
||||
}
|
||||
|
||||
func main() {
|
||||
coin := utility.GetCoin("server.conf")
|
||||
dbctx := db.InitDb(coin, "server")
|
||||
|
||||
start(coin, dbctx)
|
||||
|
||||
stop()
|
||||
|
||||
db.StopDb(coin, "server")
|
||||
|
||||
os.Exit(0)
|
||||
}
|
Binary file not shown.
|
@ -0,0 +1,92 @@
|
|||
// set_addr.go
|
||||
package main
|
||||
|
||||
import (
|
||||
"crypto/md5"
|
||||
"database/sql"
|
||||
"encoding/hex"
|
||||
"flag"
|
||||
"fmt"
|
||||
"log"
|
||||
"time"
|
||||
|
||||
_ "github.com/go-sql-driver/mysql"
|
||||
)
|
||||
|
||||
func main() {
|
||||
paddr := flag.String("addr", "", "The mining address (string)")
|
||||
pserver := flag.String("server", "", "The db host and port (string)")
|
||||
pcoin := flag.String("coin", "", "The coin name (string)")
|
||||
puser := flag.String("user", "", "The db user (string)")
|
||||
ppassword := flag.String("password", "", "The db user's password (string)")
|
||||
pdbn := flag.String("db", "", "The db name (string)")
|
||||
|
||||
flag.Parse()
|
||||
|
||||
if len(*paddr) <= 0 /* || len(*pdb) <= 0 || len(*puser) <= 0 || len(*ppassword) <= 0*/ {
|
||||
log.Fatalf("Failed to param")
|
||||
return
|
||||
}
|
||||
|
||||
addr := *paddr
|
||||
user := *puser
|
||||
password := *ppassword
|
||||
dbserver := *pserver
|
||||
coin := *pcoin
|
||||
dbn := *pdbn
|
||||
if len(user) <= 0 {
|
||||
user = "m2pool"
|
||||
}
|
||||
if len(password) <= 0 {
|
||||
password = "pMJzgwrg@Frt8aDXkQAsTGhG!zy!H8Jd"
|
||||
}
|
||||
if len(dbserver) <= 0 {
|
||||
dbserver = "127.0.0.1:3306"
|
||||
}
|
||||
if len(coin) <= 0 {
|
||||
coin = "nexa"
|
||||
}
|
||||
if len(dbn) <= 0 {
|
||||
dbn = "m2pooldb"
|
||||
}
|
||||
|
||||
dsn := fmt.Sprintf("%s:%s@tcp(%s)/%s", user, password, dbserver, dbn)
|
||||
//log.Println("dsn", dsn)
|
||||
|
||||
db, err := sql.Open("mysql", dsn)
|
||||
if err != nil {
|
||||
log.Fatalf("Error opening database: %v", err)
|
||||
return
|
||||
}
|
||||
defer db.Close()
|
||||
|
||||
table_name := coin + "_address"
|
||||
|
||||
var count int
|
||||
querySQL := fmt.Sprintf("SELECT COUNT(*) FROM %s WHERE addr = ?", table_name)
|
||||
err = db.QueryRow(querySQL, addr).Scan(&count)
|
||||
if err != nil {
|
||||
log.Fatalf("Error checking if address exists: %v", err)
|
||||
return
|
||||
}
|
||||
|
||||
hash := md5.Sum([]byte(addr + "m2pool_alias"))
|
||||
alias := hex.EncodeToString(hash[:])
|
||||
|
||||
if count > 0 {
|
||||
updateSQL := fmt.Sprintf("UPDATE %s SET date =?, addr = ?, alias= ?, valid = 1 WHERE addr = ?", table_name)
|
||||
_, err := db.Exec(updateSQL, time.Now().Format("2006-01-02 15:04:05"), addr, alias, addr)
|
||||
if err != nil {
|
||||
log.Fatalf("Error updating address: %v", err)
|
||||
return
|
||||
}
|
||||
fmt.Printf("Address updated: %s\n", addr)
|
||||
} else {
|
||||
insertSQL := fmt.Sprintf("INSERT INTO %s (date, addr, alias, valid) VALUES (?, ?, ?, ?)", table_name)
|
||||
_, err := db.Exec(insertSQL, time.Now().Format("2006-01-02 15:04:05"), addr, alias, 1)
|
||||
if err != nil {
|
||||
log.Fatalf("Error inserting address: %v", err)
|
||||
}
|
||||
fmt.Printf("Address inserted: %s\n", addr)
|
||||
}
|
||||
}
|
|
@ -0,0 +1,34 @@
|
|||
{
|
||||
"db": {
|
||||
"ip": "127.0.0.1",
|
||||
"port": 3306,
|
||||
"username":"root",
|
||||
"password":"Lzx2021@!",
|
||||
"dbname":"m2pooldb"
|
||||
},
|
||||
"shares": {
|
||||
"ip": "127.0.0.1",
|
||||
"port": 3306,
|
||||
"username":"m2pool",
|
||||
"password":"Lzx2021@!",
|
||||
"dbname":"sharesdb"
|
||||
},
|
||||
"zap": {
|
||||
"level": "debug",
|
||||
"encoding": "json",
|
||||
"outputPaths": ["stdout", "./logs/db.log"],
|
||||
"errorOutputPaths": ["stderr"],
|
||||
"initialFields": {"server": "server"},
|
||||
"encoderConfig": {
|
||||
"messageKey": "message",
|
||||
"levelKey": "level",
|
||||
"levelEncoder": "lowercase"
|
||||
}
|
||||
},
|
||||
"logrotate": {
|
||||
"maxsize": 10,
|
||||
"maxbackups": 100,
|
||||
"maxage": 31,
|
||||
"compress": true
|
||||
}
|
||||
}
|
|
@ -0,0 +1,46 @@
|
|||
{
|
||||
"coin": "alph",
|
||||
"alph": {
|
||||
"addr": "m2pool"
|
||||
},
|
||||
"rpc": {
|
||||
"host": "10.168.1.162",
|
||||
"port": "18110",
|
||||
"testnet": "10.168.1.162:18210",
|
||||
"type": "mainnet",
|
||||
"user": "test",
|
||||
"pass": "test",
|
||||
"zmqsub": "tcp://127.0.0.1:39001",
|
||||
"timeout": 10000
|
||||
},
|
||||
"zmq": {
|
||||
"pub": "tcp://127.0.0.1:39000",
|
||||
"sub": "tcp://127.0.0.1:39100"
|
||||
},
|
||||
"redis": {
|
||||
"addr": "127.0.0.1:6379",
|
||||
"password": "",
|
||||
"db": 9
|
||||
},
|
||||
"profit": {
|
||||
"push": "tcp://127.0.0.1:39200"
|
||||
},
|
||||
"zap": {
|
||||
"level": "debug",
|
||||
"encoding": "json",
|
||||
"outputPaths": ["stdout", "/dev/null"],
|
||||
"errorOutputPaths": ["stdout"],
|
||||
"initialFields": {"gbt": "gbt"},
|
||||
"encoderConfig": {
|
||||
"messageKey": "message",
|
||||
"levelKey": "level",
|
||||
"levelEncoder": "lowercase"
|
||||
}
|
||||
},
|
||||
"logrotate": {
|
||||
"maxsize": 10,
|
||||
"maxbackups": 100,
|
||||
"maxage": 31,
|
||||
"compress": true
|
||||
}
|
||||
}
|
|
@ -0,0 +1,44 @@
|
|||
{
|
||||
"coin": "alph",
|
||||
"host": {
|
||||
"listen": "0.0.0.0:39500",
|
||||
"auth": false
|
||||
},
|
||||
"diff": {
|
||||
"start_diff": 1,
|
||||
"diff_min":1,
|
||||
"diff_max":1048576,
|
||||
"diff_adjust_interval": 5,
|
||||
"diff_adjust_percentage": 0.2,
|
||||
"diff_adjust_time":600,
|
||||
"filter": "kalman",
|
||||
"dbg": false
|
||||
},
|
||||
"zmq": {
|
||||
"pub":"tcp://127.0.0.1:39101",
|
||||
"sub":"tcp://127.0.0.1:39102"
|
||||
},
|
||||
"redis": {
|
||||
"addr": "127.0.0.1:6379",
|
||||
"password": "",
|
||||
"db": 2
|
||||
},
|
||||
"zap": {
|
||||
"level": "debug",
|
||||
"encoding": "json",
|
||||
"outputPaths": ["stdout", "/dev/null"],
|
||||
"errorOutputPaths": ["stdout"],
|
||||
"initialFields": {"server": "server"},
|
||||
"encoderConfig": {
|
||||
"messageKey": "message",
|
||||
"levelKey": "level",
|
||||
"levelEncoder": "lowercase"
|
||||
}
|
||||
},
|
||||
"logrotate": {
|
||||
"maxsize": 10,
|
||||
"maxbackups": 100,
|
||||
"maxage": 31,
|
||||
"compress": true
|
||||
}
|
||||
}
|
|
@ -0,0 +1,34 @@
|
|||
{
|
||||
"db": {
|
||||
"ip": "127.0.0.1",
|
||||
"port": 3306,
|
||||
"username":"root",
|
||||
"password":"Lzx2021@!",
|
||||
"dbname":"m2pooldb"
|
||||
},
|
||||
"shares": {
|
||||
"ip": "127.0.0.1",
|
||||
"port": 3306,
|
||||
"username":"m2pool",
|
||||
"password":"Lzx2021@!",
|
||||
"dbname":"sharesdb"
|
||||
},
|
||||
"zap": {
|
||||
"level": "debug",
|
||||
"encoding": "json",
|
||||
"outputPaths": ["stdout", "./logs/db.log"],
|
||||
"errorOutputPaths": ["stderr"],
|
||||
"initialFields": {"server": "server"},
|
||||
"encoderConfig": {
|
||||
"messageKey": "message",
|
||||
"levelKey": "level",
|
||||
"levelEncoder": "lowercase"
|
||||
}
|
||||
},
|
||||
"logrotate": {
|
||||
"maxsize": 10,
|
||||
"maxbackups": 100,
|
||||
"maxage": 31,
|
||||
"compress": true
|
||||
}
|
||||
}
|
|
@ -0,0 +1,46 @@
|
|||
{
|
||||
"coin": "alph",
|
||||
"alph": {
|
||||
"addr": "m2pool"
|
||||
},
|
||||
"rpc": {
|
||||
"host": "18.141.161.129",
|
||||
"port": "10973",
|
||||
"testnet": "127.0.0.1:7229",
|
||||
"type": "mainnet",
|
||||
"user": "test",
|
||||
"pass": "test",
|
||||
"zmqsub": "tcp://127.0.0.1:21212",
|
||||
"timeout": 10000
|
||||
},
|
||||
"zmq": {
|
||||
"pub": "tcp://127.0.0.1:21213",
|
||||
"sub": "tcp://127.0.0.1:21214"
|
||||
},
|
||||
"redis": {
|
||||
"addr": "127.0.0.1:6379",
|
||||
"password": "",
|
||||
"db": 9
|
||||
},
|
||||
"profit": {
|
||||
"push": "tcp://127.0.0.1:21215"
|
||||
},
|
||||
"zap": {
|
||||
"level": "debug",
|
||||
"encoding": "json",
|
||||
"outputPaths": ["stdout", "/dev/null"],
|
||||
"errorOutputPaths": ["stdout"],
|
||||
"initialFields": {"gbt": "gbt"},
|
||||
"encoderConfig": {
|
||||
"messageKey": "message",
|
||||
"levelKey": "level",
|
||||
"levelEncoder": "lowercase"
|
||||
}
|
||||
},
|
||||
"logrotate": {
|
||||
"maxsize": 10,
|
||||
"maxbackups": 100,
|
||||
"maxage": 31,
|
||||
"compress": true
|
||||
}
|
||||
}
|
|
@ -0,0 +1,44 @@
|
|||
{
|
||||
"coin": "alph",
|
||||
"host": {
|
||||
"listen": "0.0.0.0:21233",
|
||||
"auth": false
|
||||
},
|
||||
"diff": {
|
||||
"start_diff": 1,
|
||||
"diff_min":1,
|
||||
"diff_max":1048576,
|
||||
"diff_adjust_interval": 5,
|
||||
"diff_adjust_percentage": 0.2,
|
||||
"diff_adjust_time":600,
|
||||
"filter": "kalman",
|
||||
"dbg": false
|
||||
},
|
||||
"zmq": {
|
||||
"pub":"tcp://127.0.0.1:21214",
|
||||
"sub":"tcp://127.0.0.1:21213"
|
||||
},
|
||||
"redis": {
|
||||
"addr": "127.0.0.1:6379",
|
||||
"password": "",
|
||||
"db": 2
|
||||
},
|
||||
"zap": {
|
||||
"level": "debug",
|
||||
"encoding": "json",
|
||||
"outputPaths": ["stdout", "/dev/null"],
|
||||
"errorOutputPaths": ["stdout"],
|
||||
"initialFields": {"server": "server"},
|
||||
"encoderConfig": {
|
||||
"messageKey": "message",
|
||||
"levelKey": "level",
|
||||
"levelEncoder": "lowercase"
|
||||
}
|
||||
},
|
||||
"logrotate": {
|
||||
"maxsize": 10,
|
||||
"maxbackups": 100,
|
||||
"maxage": 31,
|
||||
"compress": true
|
||||
}
|
||||
}
|
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,51 @@
|
|||
module pool
|
||||
|
||||
go 1.23.0
|
||||
|
||||
toolchain go1.23.1
|
||||
|
||||
require (
|
||||
github.com/btcsuite/btcd v0.24.2
|
||||
github.com/btcsuite/btcd/chaincfg/chainhash v1.1.0
|
||||
github.com/btcsuite/btcutil v1.0.2
|
||||
github.com/decred/dcrd/chaincfg/chainhash v1.0.4
|
||||
github.com/go-sql-driver/mysql v1.8.1
|
||||
github.com/mattn/go-sqlite3 v1.14.22
|
||||
github.com/redis/go-redis/v9 v9.5.4
|
||||
github.com/rs/zerolog v1.33.0
|
||||
github.com/zeromq/goczmq v4.1.0+incompatible
|
||||
go.uber.org/zap v1.27.0
|
||||
gopkg.in/natefinch/lumberjack.v2 v2.2.1
|
||||
)
|
||||
|
||||
require (
|
||||
github.com/davecgh/go-spew v1.1.1 // indirect
|
||||
github.com/golang/protobuf v1.5.4 // indirect
|
||||
github.com/jrick/logrotate v1.0.0 // indirect
|
||||
github.com/pkg/errors v0.9.1 // indirect
|
||||
golang.org/x/net v0.30.0 // indirect
|
||||
golang.org/x/text v0.23.0 // indirect
|
||||
google.golang.org/genproto v0.0.0-20210604141403-392c879c8b08 // indirect
|
||||
google.golang.org/grpc v1.69.2 // indirect
|
||||
google.golang.org/protobuf v1.35.1 // indirect
|
||||
)
|
||||
|
||||
require (
|
||||
filippo.io/edwards25519 v1.1.0 // indirect
|
||||
github.com/btcsuite/btcd/btcec/v2 v2.1.3 // indirect
|
||||
github.com/btcsuite/btcd/btcutil v1.1.5 // indirect
|
||||
github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f // indirect
|
||||
github.com/btcsuite/go-socks v0.0.0-20170105172521-4720035b7bfd // indirect
|
||||
github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792 // indirect
|
||||
github.com/cespare/xxhash/v2 v2.3.0 // indirect
|
||||
github.com/decred/dcrd/crypto/blake256 v1.0.1 // indirect
|
||||
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1 // indirect
|
||||
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect
|
||||
github.com/gorilla/websocket v1.5.3
|
||||
github.com/kaspanet/kaspad v0.12.20
|
||||
github.com/mattn/go-colorable v0.1.13 // indirect
|
||||
github.com/mattn/go-isatty v0.0.19 // indirect
|
||||
go.uber.org/multierr v1.10.0 // indirect
|
||||
golang.org/x/crypto v0.36.0 // indirect
|
||||
golang.org/x/sys v0.31.0 // indirect
|
||||
)
|
|
@ -0,0 +1,257 @@
|
|||
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
|
||||
filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA=
|
||||
filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4=
|
||||
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
|
||||
github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBAUSII=
|
||||
github.com/bsm/ginkgo/v2 v2.12.0 h1:Ny8MWAHyOepLGlLKYmXG4IEkioBysk6GpaRTLC8zwWs=
|
||||
github.com/bsm/ginkgo/v2 v2.12.0/go.mod h1:SwYbGRRDovPVboqFv0tPTcG1sN61LM1Z4ARdbAV9g4c=
|
||||
github.com/bsm/gomega v1.27.10 h1:yeMWxP2pV2fG3FgAODIY8EiRE3dy0aeFYt4l7wh6yKA=
|
||||
github.com/bsm/gomega v1.27.10/go.mod h1:JyEr/xRbxbtgWNi8tIEVPUYZ5Dzef52k01W3YH0H+O0=
|
||||
github.com/btcsuite/btcd v0.20.1-beta/go.mod h1:wVuoA8VJLEcwgqHBwHmzLRazpKxTv13Px/pDuV7OomQ=
|
||||
github.com/btcsuite/btcd v0.22.0-beta.0.20220111032746-97732e52810c/go.mod h1:tjmYdS6MLJ5/s0Fj4DbLgSbDHbEqLJrtnHecBFkdz5M=
|
||||
github.com/btcsuite/btcd v0.23.5-0.20231215221805-96c9fd8078fd/go.mod h1:nm3Bko6zh6bWP60UxwoT5LzdGJsQJaPo6HjduXq9p6A=
|
||||
github.com/btcsuite/btcd v0.24.2 h1:aLmxPguqxza+4ag8R1I2nnJjSu2iFn/kqtHTIImswcY=
|
||||
github.com/btcsuite/btcd v0.24.2/go.mod h1:5C8ChTkl5ejr3WHj8tkQSCmydiMEPB0ZhQhehpq7Dgg=
|
||||
github.com/btcsuite/btcd/btcec/v2 v2.1.0/go.mod h1:2VzYrv4Gm4apmbVVsSq5bqf1Ec8v56E48Vt0Y/umPgA=
|
||||
github.com/btcsuite/btcd/btcec/v2 v2.1.3 h1:xM/n3yIhHAhHy04z4i43C8p4ehixJZMsnrVJkgl+MTE=
|
||||
github.com/btcsuite/btcd/btcec/v2 v2.1.3/go.mod h1:ctjw4H1kknNJmRN4iP1R7bTQ+v3GJkZBd6mui8ZsAZE=
|
||||
github.com/btcsuite/btcd/btcutil v1.0.0/go.mod h1:Uoxwv0pqYWhD//tfTiipkxNfdhG9UrLwaeswfjfdF0A=
|
||||
github.com/btcsuite/btcd/btcutil v1.1.0/go.mod h1:5OapHB7A2hBBWLm48mmw4MOHNJCcUBTwmWH/0Jn8VHE=
|
||||
github.com/btcsuite/btcd/btcutil v1.1.5 h1:+wER79R5670vs/ZusMTF1yTcRYE5GUsFbdjdisflzM8=
|
||||
github.com/btcsuite/btcd/btcutil v1.1.5/go.mod h1:PSZZ4UitpLBWzxGd5VGOrLnmOjtPP/a6HaFo12zMs00=
|
||||
github.com/btcsuite/btcd/chaincfg/chainhash v1.0.0/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc=
|
||||
github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc=
|
||||
github.com/btcsuite/btcd/chaincfg/chainhash v1.1.0 h1:59Kx4K6lzOW5w6nFlA0v5+lk/6sjybR934QNHSJZPTQ=
|
||||
github.com/btcsuite/btcd/chaincfg/chainhash v1.1.0/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc=
|
||||
github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f h1:bAs4lUbRJpnnkd9VhRV3jjAVU7DJVjMaK+IsvSeZvFo=
|
||||
github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f/go.mod h1:TdznJufoqS23FtqVCzL0ZqgP5MqXbb4fg/WgDys70nA=
|
||||
github.com/btcsuite/btcutil v0.0.0-20190425235716-9e5f4b9a998d h1:yJzD/yFppdVCf6ApMkVy8cUxV0XrxdP9rVf6D87/Mng=
|
||||
github.com/btcsuite/btcutil v0.0.0-20190425235716-9e5f4b9a998d/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg=
|
||||
github.com/btcsuite/btcutil v1.0.2/go.mod h1:j9HUFwoQRsZL3V4n+qG+CUnEGHOarIxfC3Le2Yhbcts=
|
||||
github.com/btcsuite/go-socks v0.0.0-20170105172521-4720035b7bfd h1:R/opQEbFEy9JGkIguV40SvRY1uliPX8ifOvi6ICsFCw=
|
||||
github.com/btcsuite/go-socks v0.0.0-20170105172521-4720035b7bfd/go.mod h1:HHNXQzUsZCxOoE+CPiyCTO6x34Zs86zZUiwtpXoGdtg=
|
||||
github.com/btcsuite/goleveldb v0.0.0-20160330041536-7834afc9e8cd/go.mod h1:F+uVaaLLH7j4eDXPRvw78tMflu7Ie2bzYOH4Y8rRKBY=
|
||||
github.com/btcsuite/goleveldb v1.0.0/go.mod h1:QiK9vBlgftBg6rWQIj6wFzbPfRjiykIEhBH4obrXJ/I=
|
||||
github.com/btcsuite/snappy-go v0.0.0-20151229074030-0bdef8d06723/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc=
|
||||
github.com/btcsuite/snappy-go v1.0.0/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc=
|
||||
github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792 h1:R8vQdOQdZ9Y3SkEwmHoWBmX1DNXhXZqlTpq6s4tyJGc=
|
||||
github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792/go.mod h1:ghJtEyQwv5/p4Mg4C0fgbePVuGr935/5ddU9Z3TmDRY=
|
||||
github.com/btcsuite/winsvc v1.0.0/go.mod h1:jsenWakMcC0zFBFurPLEAyrnc/teJEM1O46fmI40EZs=
|
||||
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
|
||||
github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44=
|
||||
github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
|
||||
github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
|
||||
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
|
||||
github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
|
||||
github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
|
||||
github.com/davecgh/go-spew v0.0.0-20171005155431-ecdeabc65495/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/decred/dcrd/chaincfg/chainhash v1.0.4 h1:zRCv6tdncLfLTKYqu7hrXvs7hW+8FO/NvwoFvGsrluU=
|
||||
github.com/decred/dcrd/chaincfg/chainhash v1.0.4/go.mod h1:hA86XxlBWwHivMvxzXTSD0ZCG/LoYsFdWnCekkTMCqY=
|
||||
github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc=
|
||||
github.com/decred/dcrd/crypto/blake256 v1.0.1 h1:7PltbUIQB7u/FfZ39+DGa/ShuMyJ5ilcvdfma9wOH6Y=
|
||||
github.com/decred/dcrd/crypto/blake256 v1.0.1/go.mod h1:2OfgNZ5wDpcsFmHmCK5gZTPcCXqlm2ArzUIkw9czNJo=
|
||||
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1 h1:YLtO71vCjJRCBcrPMtQ9nqBsqpA1m5sE92cU+pd5Mcc=
|
||||
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1/go.mod h1:hyedUtir6IdtD/7lIxGeCxkaw7y45JueMRL4DIyJDKs=
|
||||
github.com/decred/dcrd/lru v1.0.0/go.mod h1:mxKOwFd7lFjN2GZYsiz/ecgqR6kkYAl+0pz0tEMk218=
|
||||
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78=
|
||||
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc=
|
||||
github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
|
||||
github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
|
||||
github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk=
|
||||
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
|
||||
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
|
||||
github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
|
||||
github.com/go-sql-driver/mysql v1.8.1 h1:LedoTUt/eveggdHS9qUFC1EFSa8bU2+1pZjSRpvNJ1Y=
|
||||
github.com/go-sql-driver/mysql v1.8.1/go.mod h1:wEBSXgmK//2ZFJyE+qWnIsVGmvmEKlqwuVSjsCm7DZg=
|
||||
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
|
||||
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
|
||||
github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
|
||||
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||
github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||
github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
|
||||
github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
|
||||
github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=
|
||||
github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=
|
||||
github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=
|
||||
github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8=
|
||||
github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
|
||||
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
|
||||
github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
|
||||
github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
|
||||
github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
|
||||
github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
|
||||
github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
|
||||
github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
|
||||
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
|
||||
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||
github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc=
|
||||
github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
|
||||
github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg=
|
||||
github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
|
||||
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
|
||||
github.com/jessevdk/go-flags v0.0.0-20141203071132-1679536dcc89/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI=
|
||||
github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI=
|
||||
github.com/jrick/logrotate v1.0.0 h1:lQ1bL/n9mBNeIXoTUoYRlK4dHuNJVofX9oWqBtPnSzI=
|
||||
github.com/jrick/logrotate v1.0.0/go.mod h1:LNinyqDIJnpAur+b8yyulnQw/wDuN1+BYKlTRt3OuAQ=
|
||||
github.com/kaspanet/kaspad v0.12.20 h1:DOAB9iXTH66uZJ8710WdnbmUYGaeSvLztmmiylgPk3Y=
|
||||
github.com/kaspanet/kaspad v0.12.20/go.mod h1:yu3Bciz4cRVItIcBcDKMuLHg5/FOMzd7EaXxNHMXgSY=
|
||||
github.com/kkdai/bstream v0.0.0-20161212061736-f391b8402d23/go.mod h1:J+Gs4SYgM6CZQHDETBtE9HaSEkGmuNXF86RwHhHUvq4=
|
||||
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
|
||||
github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
|
||||
github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
|
||||
github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA=
|
||||
github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
|
||||
github.com/mattn/go-sqlite3 v1.14.22 h1:2gZY6PC6kBnID23Tichd1K+Z0oS6nE/XwU+Vz/5o4kU=
|
||||
github.com/mattn/go-sqlite3 v1.14.22/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y=
|
||||
github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A=
|
||||
github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
|
||||
github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
|
||||
github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk=
|
||||
github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY=
|
||||
github.com/onsi/gomega v1.4.1/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA=
|
||||
github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
|
||||
github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY=
|
||||
github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo=
|
||||
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
|
||||
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
|
||||
github.com/redis/go-redis/v9 v9.5.4 h1:vOFYDKKVgrI5u++QvnMT7DksSMYg7Aw/Np4vLJLKLwY=
|
||||
github.com/redis/go-redis/v9 v9.5.4/go.mod h1:hdY0cQFCN4fnSYT6TkisLufl/4W5UIXyv0b/CLO2V2M=
|
||||
github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=
|
||||
github.com/rs/zerolog v1.33.0 h1:1cU2KZkvPxNyfgEmhHAz/1A9Bz+llsdYzklWFzgp0r8=
|
||||
github.com/rs/zerolog v1.33.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss=
|
||||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
|
||||
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||
github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
|
||||
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
|
||||
github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7/go.mod h1:q4W45IWZaF22tdD+VEXcAWRA037jwmWEB5VWYORlTpc=
|
||||
github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
|
||||
github.com/zeromq/goczmq v4.1.0+incompatible h1:cGVQaU6kIwwrGso0Pgbl84tzAz/h7FJ3wYQjSonjFFc=
|
||||
github.com/zeromq/goczmq v4.1.0+incompatible/go.mod h1:1uZybAJoSRCvZMH2rZxEwWBSmC4T7CB/xQOfChwPEzg=
|
||||
go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
|
||||
go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=
|
||||
go.uber.org/multierr v1.10.0 h1:S0h4aNzvfcFsC3dRF1jLoaov7oRaKqRGC/pUEJ2yvPQ=
|
||||
go.uber.org/multierr v1.10.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
|
||||
go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8=
|
||||
go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E=
|
||||
golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||
golang.org/x/crypto v0.0.0-20200115085410-6d4e4cb37c7d/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 h1:psW17arqaxU48Z5kZ0CQnkZWQJsqcURM6tKiBApRjXI=
|
||||
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||
golang.org/x/crypto v0.36.0 h1:AnAEvhDddvBdpY+uR+MyHmuZzzNqXSe/GvuDeob5L34=
|
||||
golang.org/x/crypto v0.36.0/go.mod h1:Y4J0ReaxCR1IMaabaSMugxJES1EpwhBHhv2bDHklZvc=
|
||||
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
|
||||
golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
|
||||
golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
|
||||
golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
|
||||
golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
|
||||
golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||
golang.org/x/net v0.0.0-20180719180050-a680a1efc54d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
|
||||
golang.org/x/net v0.0.0-20200813134508-3edf25e44fcc/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
|
||||
golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
|
||||
golang.org/x/net v0.30.0 h1:AcW1SDZMkb8IpzCdQUaIq2sP4sZ4zw+55h6ynffypl4=
|
||||
golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU=
|
||||
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
||||
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200814200057-3d37ad5750ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.12.0 h1:CM0HF96J0hcLAwsHPJZjfdNzs0gftsLfgKt57wWHJ0o=
|
||||
golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik=
|
||||
golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
|
||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
|
||||
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY=
|
||||
golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4=
|
||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||
golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||
golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
|
||||
golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
|
||||
golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
|
||||
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||
golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
||||
golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
|
||||
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
|
||||
google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
|
||||
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
|
||||
google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
|
||||
google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
|
||||
google.golang.org/genproto v0.0.0-20210604141403-392c879c8b08 h1:pc16UedxnxXXtGxHCSUhafAoVHQZ0yXl8ZelMH4EETc=
|
||||
google.golang.org/genproto v0.0.0-20210604141403-392c879c8b08/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0=
|
||||
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
|
||||
google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
|
||||
google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=
|
||||
google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
|
||||
google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM=
|
||||
google.golang.org/grpc v1.69.2 h1:U3S9QEtbXC0bYNvRtcoklF3xGtLViumSYxWykJS+7AU=
|
||||
google.golang.org/grpc v1.69.2/go.mod h1:vyjdE6jLBI76dgpDojsFGNaHlxdjXN9ghpnd2o7JGZ4=
|
||||
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
|
||||
google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
|
||||
google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
|
||||
google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=
|
||||
google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=
|
||||
google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
|
||||
google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
|
||||
google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
|
||||
google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
|
||||
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
|
||||
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
|
||||
google.golang.org/protobuf v1.35.1 h1:m3LfL6/Ca+fqnjnlqQXNpFPABW1UD7mjh8KO2mKFytA=
|
||||
google.golang.org/protobuf v1.35.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
|
||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
|
||||
gopkg.in/natefinch/lumberjack.v2 v2.2.1 h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc=
|
||||
gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc=
|
||||
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
|
||||
gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
||||
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
||||
honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
|
@ -0,0 +1,545 @@
|
|||
// cache.go
|
||||
package cache
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"log"
|
||||
"strconv"
|
||||
"time"
|
||||
|
||||
"github.com/redis/go-redis/v9"
|
||||
)
|
||||
|
||||
// reference, do not delete that
|
||||
/*type CacheServer struct {
|
||||
Submits int64 `json:"submits"`
|
||||
Blocks int64 `json:"blocks"`
|
||||
|
||||
Accepts float64 `json:"accepts"`
|
||||
Rejects int64 `json:"rejects"`
|
||||
Shares int64 `json:"shares"`
|
||||
|
||||
Rewards float64 `json:"reward"`
|
||||
Fees float64 `json:"fee"`
|
||||
|
||||
RefDiff float64 `json:"refdiff"`
|
||||
|
||||
//LastSubmit int64 `json:"lastsubmit"`
|
||||
}
|
||||
|
||||
type CacheUser struct {
|
||||
Submits int64 `json:"submits"`
|
||||
Blocks int64 `json:"blocks"`
|
||||
|
||||
Accepts float64 `json:"accepts"`
|
||||
Rejects int64 `json:"rejects"`
|
||||
Shares int64 `json:"shares"`
|
||||
|
||||
Rewards float64 `json:"reward"`
|
||||
Fees float64 `json:"fee"`
|
||||
|
||||
User string `json:"user"`
|
||||
}
|
||||
|
||||
type CacheMhs struct {
|
||||
User string `json:"user"`
|
||||
Miner string `json:"miner"`
|
||||
Index string `json:"index"`
|
||||
|
||||
Accepts []CacheMhsItem `json:"accepts"`
|
||||
Rejects []CacheMhsItem `json:"rejects"`
|
||||
|
||||
StartDayTime string `json:"startday"`
|
||||
}
|
||||
|
||||
type CacheMiner struct {
|
||||
Submits int64 `json:"submits"`
|
||||
Blocks int64 `json:"blocks"`
|
||||
|
||||
Accepts float64 `json:"accepts"`
|
||||
Rejects int64 `json:"rejects"`
|
||||
Shares int64 `json:"shares"`
|
||||
|
||||
LastDiff float64 `json:"diff"`
|
||||
|
||||
Rewards float64 `json:"reward"`
|
||||
Fees float64 `json:"fee"`
|
||||
|
||||
Retry int `json:"retry"`
|
||||
|
||||
LastSubmit int64 `json:"lastsubmit"`
|
||||
|
||||
User string `json:"user"`
|
||||
Miner string `json:"miner"`
|
||||
Index string `json:"index"`
|
||||
|
||||
ErrStaleds int64 `json:"staleds"`
|
||||
ErrLowDiffs int64 `json:"lowdiffs"`
|
||||
ErrDuplicates int64 `json:"duplicates"`
|
||||
ErrFormats int64 `json:"formats"`
|
||||
ErrOthers int64 `json:"others"`
|
||||
}*/
|
||||
|
||||
// need used
|
||||
type CacheMhsItem struct {
|
||||
Tt string `json:"Tt"`
|
||||
Diff float64 `json:"diff"`
|
||||
}
|
||||
|
||||
/*
|
||||
type CacheMinerItem struct {
|
||||
User string `json:"user"`
|
||||
Miner string `json:"miner"`
|
||||
Index string `json:"index"`
|
||||
}*/
|
||||
|
||||
func LoadIntCache(client *redis.Client, key_int string) int64 {
|
||||
val, err := client.Get(context.Background(), key_int).Result()
|
||||
if err != nil {
|
||||
log.Printf("[LoadIntCache]Error retrieving data from Redis: %s, %v\n", key_int, err)
|
||||
return 0
|
||||
}
|
||||
val_int, err := strconv.ParseInt(val, 10, 64)
|
||||
if err != nil {
|
||||
log.Printf("[LoadIntCache]Error parsing integer from string: %v\n", err)
|
||||
return 0
|
||||
}
|
||||
return val_int
|
||||
}
|
||||
|
||||
func StoreIntCache(client *redis.Client, key string, intNumber int64) bool {
|
||||
numberStr := strconv.FormatInt(intNumber, 10)
|
||||
expiration := 7 * 24 * time.Hour
|
||||
err := client.Set(context.Background(), key, numberStr, expiration).Err()
|
||||
if err != nil {
|
||||
log.Printf("[StoreIntCache]Error storing data in Redis: %s, %v\n", key, err)
|
||||
return false
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
func LoadFloatCache(client *redis.Client, key_float string) float64 {
|
||||
val, err := client.Get(context.Background(), key_float).Result()
|
||||
if err != nil {
|
||||
log.Printf("[LoadFloatCache]Error retrieving data from Redis: %s, %v\n", key_float, err)
|
||||
return 0
|
||||
}
|
||||
val_f, err := strconv.ParseFloat(val, 64)
|
||||
if err != nil {
|
||||
log.Printf("[LoadFloatCache]Error parsing float from string: %v\n", err)
|
||||
return 0
|
||||
}
|
||||
return val_f
|
||||
}
|
||||
|
||||
func StoreFloatCache(client *redis.Client, key string, floatNumber float64) bool {
|
||||
numberStr := strconv.FormatFloat(floatNumber, 'f', -1, 64)
|
||||
expiration := 7 * 24 * time.Hour
|
||||
err := client.Set(context.Background(), key, numberStr, expiration).Err()
|
||||
if err != nil {
|
||||
log.Printf("[StoreFloatCache]Error storing data in Redis: %s, %v\n", key, err)
|
||||
return false
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
func LoadStringCache(client *redis.Client, keyStr string) string {
|
||||
val, err := client.Get(context.Background(), keyStr).Result()
|
||||
if err != nil {
|
||||
log.Printf("[LoadStringCache]Error retrieving data from Redis: %s, %v\n", keyStr, err)
|
||||
return ""
|
||||
}
|
||||
return val
|
||||
}
|
||||
|
||||
func StoreStringCache(client *redis.Client, key string, strValue string) bool {
|
||||
expiration := 7 * 24 * time.Hour
|
||||
err := client.Set(context.Background(), key, strValue, expiration).Err()
|
||||
if err != nil {
|
||||
log.Printf("[StoreStringCache]Error storing data in Redis: %s, %v\n", key, err)
|
||||
return false
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
func LoadTimeCache(client *redis.Client, keyTime string) (time.Time, bool) {
|
||||
val, err := client.Get(context.Background(), keyTime).Result()
|
||||
if err != nil {
|
||||
log.Printf("[LoadTimeCache]Error retrieving data from Redis: %s, %v\n", keyTime, err)
|
||||
return time.Time{}, false
|
||||
}
|
||||
|
||||
t, err := time.Parse(time.RFC3339, val)
|
||||
if err != nil {
|
||||
log.Printf("[LoadTimeCache]Error parsing time from string: %v\n", err)
|
||||
return time.Time{}, false
|
||||
}
|
||||
|
||||
return t, true
|
||||
}
|
||||
|
||||
func StoreTimeCache(client *redis.Client, key string, timeValue time.Time) bool {
|
||||
numberStr := timeValue.Format(time.RFC3339)
|
||||
expiration := 7 * 24 * time.Hour
|
||||
err := client.Set(context.Background(), key, numberStr, expiration).Err()
|
||||
if err != nil {
|
||||
log.Printf("[StoreTimeCache]Error storing data in Redis: %s, %v\n", key, err)
|
||||
return false
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
func LoadPoolCache(client *redis.Client, coin string, pool_key string) interface{} {
|
||||
k := "pool_" + coin + "_" + pool_key
|
||||
switch pool_key {
|
||||
case "submits", "blocks", "rejects":
|
||||
return LoadIntCache(client, k)
|
||||
case "accepts", "rewards", "fee", "refdiff":
|
||||
return LoadFloatCache(client, k)
|
||||
default:
|
||||
log.Printf("[LoadPoolCache]Unknown pool_key: %s\n", pool_key)
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
func StorePoolCache(client *redis.Client, coin string, pool_key string, val interface{}) bool {
|
||||
k := "pool_" + coin + "_" + pool_key
|
||||
|
||||
switch pool_key {
|
||||
case "submits", "blocks", "rejects":
|
||||
if pool_key == "rejects" {
|
||||
if intVal, ok := val.(float64); ok {
|
||||
return StoreIntCache(client, k, int64(intVal))
|
||||
}
|
||||
} else {
|
||||
if intVal, ok := val.(int64); ok {
|
||||
return StoreIntCache(client, k, intVal)
|
||||
}
|
||||
}
|
||||
log.Printf("[StorePoolCache]Invalid type for key %s: expected int64, got %T\n", pool_key, val)
|
||||
return false
|
||||
case "accepts", "rewards", "fee", "refdiff":
|
||||
if floatVal, ok := val.(float64); ok {
|
||||
return StoreFloatCache(client, k, floatVal)
|
||||
}
|
||||
log.Printf("[StorePoolCache]Invalid type for key %s: expected float64, got %T\n", pool_key, val)
|
||||
return false
|
||||
default:
|
||||
log.Printf("[StorePoolCache]Unknown pool_key: %s\n", pool_key)
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
func LoadUserCache(client *redis.Client, coin string, user string, pool_key string) interface{} {
|
||||
k := "pool_" + coin + "_" + user + "_" + pool_key
|
||||
switch pool_key {
|
||||
case "submits", "blocks", "rejects":
|
||||
return LoadIntCache(client, k)
|
||||
case "accepts", "rewards", "fee":
|
||||
return LoadFloatCache(client, k)
|
||||
default:
|
||||
log.Printf("Unknown pool_key: %s\n", pool_key)
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
func StoreUserCache(client *redis.Client, coin string, user string, pool_key string, val interface{}) bool {
|
||||
k := "pool_" + coin + "_" + user + "_" + pool_key
|
||||
|
||||
switch pool_key {
|
||||
case "submits", "blocks", "rejects":
|
||||
if intVal, ok := val.(int64); ok {
|
||||
return StoreIntCache(client, k, intVal)
|
||||
}
|
||||
log.Printf("Invalid type for key %s: expected int64, got %T\n", pool_key, val)
|
||||
return false
|
||||
case "accepts", "rewards", "fee":
|
||||
if floatVal, ok := val.(float64); ok {
|
||||
return StoreFloatCache(client, k, floatVal)
|
||||
}
|
||||
log.Printf("Invalid type for key %s: expected float64, got %T\n", pool_key, val)
|
||||
return false
|
||||
default:
|
||||
log.Printf("Unknown pool_key: %s\n", pool_key)
|
||||
return false
|
||||
}
|
||||
}*/
|
||||
|
||||
func LoadMinerCache(client *redis.Client, coin string, user string, miner string, index string, pool_key string) interface{} {
|
||||
k := "pool_" + coin + "_" + user + "_" + miner + "_" + index + "_" + pool_key
|
||||
switch pool_key {
|
||||
case "submits", "blocks", "rejects", "retry", "staleds", "lowdiffs", "duplicates", "formats", "others":
|
||||
return LoadIntCache(client, k)
|
||||
case "accepts", "rewards", "fee", "diff":
|
||||
return LoadFloatCache(client, k)
|
||||
case "lastsubmit", "startsubmit":
|
||||
tT, ok := LoadTimeCache(client, k)
|
||||
if ok {
|
||||
return tT
|
||||
}
|
||||
return nil
|
||||
default:
|
||||
log.Printf("[LoadMinerCache]Unknown pool_key: %s\n", pool_key)
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
func StoreMinerCache(client *redis.Client, coin string, user string, miner string, index string, pool_key string, val interface{}) bool {
|
||||
k := "pool_" + coin + "_" + user + "_" + miner + "_" + index + "_" + pool_key
|
||||
|
||||
switch pool_key {
|
||||
case "submits", "blocks", "rejects", "retry", "staleds", "lowdiffs", "duplicates", "formats", "others":
|
||||
if intVal, ok := val.(int64); ok {
|
||||
return StoreIntCache(client, k, intVal)
|
||||
}
|
||||
log.Printf("[StoreMinerCache]Invalid type for %s: expected int64, got %T\n", pool_key, val)
|
||||
return false
|
||||
|
||||
case "accepts", "rewards", "fee", "diff":
|
||||
if floatVal, ok := val.(float64); ok {
|
||||
return StoreFloatCache(client, k, floatVal)
|
||||
}
|
||||
log.Printf("[StoreMinerCache]Invalid type for %s: expected float64, got %T\n", pool_key, val)
|
||||
return false
|
||||
|
||||
case "lastsubmit", "startsubmit":
|
||||
if timeVal, ok := val.(time.Time); ok {
|
||||
return StoreTimeCache(client, k, timeVal)
|
||||
}
|
||||
log.Printf("[StoreMinerCache]Invalid type for %s: expected time.Time, got %T\n", pool_key, val)
|
||||
return false
|
||||
|
||||
default:
|
||||
log.Printf("[StoreMinerCache]Unknown pool_key: %s\n", pool_key)
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
func StoreCacheMhsItem(client *redis.Client, key string, item CacheMhsItem) bool {
|
||||
data, err := json.Marshal(item)
|
||||
if err != nil {
|
||||
log.Printf("[StoreCacheMhsItem]Error marshalling CacheMhsItem to JSON: %v\n", err)
|
||||
return false
|
||||
}
|
||||
|
||||
err = client.RPush(context.Background(), key, data).Err()
|
||||
if err != nil {
|
||||
log.Printf("[StoreCacheMhsItem]Error pushing data to Redis list: %v\n", err)
|
||||
return false
|
||||
}
|
||||
|
||||
expiration := 7 * 24 * time.Hour
|
||||
err = client.Expire(context.Background(), key, expiration).Err()
|
||||
if err != nil {
|
||||
log.Printf("[StoreCacheMhsItem] Error setting expiration for Redis key: %v\n", err)
|
||||
return false
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
func PopCacheMhsItem(client *redis.Client, key string) (*CacheMhsItem, bool) {
|
||||
data, err := client.LPop(context.Background(), key).Result()
|
||||
if err != nil {
|
||||
log.Printf("[PopCacheMhsItem]Error retrieving data from Redis list: %v\n", err)
|
||||
return nil, false
|
||||
}
|
||||
|
||||
var item CacheMhsItem
|
||||
if err = json.Unmarshal([]byte(data), &item); err != nil {
|
||||
log.Printf("[PopCacheMhsItem]Error unmarshalling JSON to CacheMhsItem: %v\n", err)
|
||||
return nil, false
|
||||
}
|
||||
|
||||
return &item, true
|
||||
}
|
||||
|
||||
func RemoveMhsCache(client *redis.Client, coin string, user string, miner string, index string, key string) bool {
|
||||
k := "mhs_" + coin + "_" + user + "_" + miner + "_" + index + "_" + key
|
||||
switch key {
|
||||
case "accepts", "rejects":
|
||||
PopCacheMhsItem(client, k)
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func LoadMhsCache(client *redis.Client, coin string, user string, miner string, index string, key string) interface{} {
|
||||
k := "mhs_" + coin + "_" + user + "_" + miner + "_" + index + "_" + key
|
||||
switch key {
|
||||
case "starttime":
|
||||
tT, ok := LoadTimeCache(client, k)
|
||||
if ok {
|
||||
return tT
|
||||
}
|
||||
return nil
|
||||
case "accepts", "rejects":
|
||||
/*listLength, err := client.LLen(context.Background(), k).Result()
|
||||
if err != nil {
|
||||
log.Printf("Error getting list length: %v\n", err)
|
||||
return nil
|
||||
}*/
|
||||
values, err := client.LRange(context.Background(), k, 0, -1).Result()
|
||||
if err != nil {
|
||||
log.Printf("[LoadMhsCache]Error getting list values: %v\n", err)
|
||||
}
|
||||
var items []CacheMhsItem
|
||||
for _, value := range values {
|
||||
var item CacheMhsItem
|
||||
if err = json.Unmarshal([]byte(value), &item); err != nil {
|
||||
continue
|
||||
}
|
||||
items = append(items, item)
|
||||
}
|
||||
return &items
|
||||
default:
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
func StoreMhsCache(client *redis.Client, coin string, user string, miner string, index string, key string, val interface{}) bool {
|
||||
k := "mhs_" + coin + "_" + user + "_" + miner + "_" + index + "_" + key
|
||||
switch key {
|
||||
case "starttime":
|
||||
if t, ok := val.(time.Time); ok {
|
||||
return StoreTimeCache(client, k, t)
|
||||
}
|
||||
log.Printf("[StoreMhsCache]Invalid type for starttime: expected time.Time, got %T\n", val)
|
||||
return false
|
||||
case "accepts", "rejects":
|
||||
if item, ok := val.(CacheMhsItem); ok {
|
||||
return StoreCacheMhsItem(client, k, item)
|
||||
}
|
||||
log.Printf("[StoreMhsCache]Invalid type for CacheMhsItem: expected CacheMhsItem, got %T\n", val)
|
||||
return false
|
||||
default:
|
||||
log.Printf("[StoreMhsCache]Unknown key: %s\n", key)
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
func StoreStringToSet(client *redis.Client, setKey string, value string) bool {
|
||||
err := client.SAdd(context.Background(), setKey, value).Err()
|
||||
if err != nil {
|
||||
log.Printf("Error adding value to Redis set: %v\n", err)
|
||||
return false
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
func LoadStringsFromSet(client *redis.Client, setKey string) ([]string, bool) {
|
||||
members, err := client.SMembers(context.Background(), setKey).Result()
|
||||
if err != nil {
|
||||
log.Printf("Error retrieving data from Redis set: %v\n", err)
|
||||
return nil, false
|
||||
}
|
||||
return members, true
|
||||
}
|
||||
|
||||
func RemoveStringFromSet(client *redis.Client, setKey string, value string) bool {
|
||||
err := client.SRem(context.Background(), setKey, value).Err()
|
||||
if err != nil {
|
||||
log.Printf("Error removing value from Redis set: %v\n", err)
|
||||
return false
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
func LoadUsersCache(client *redis.Client, coin string) []string {
|
||||
k := "pool_" + coin + "_users"
|
||||
users, ok := LoadStringsFromSet(client, k)
|
||||
if !ok {
|
||||
log.Printf("Error loading users slice from Redis for coin: %s\n", coin)
|
||||
return []string{}
|
||||
}
|
||||
return users
|
||||
}
|
||||
|
||||
func StoreUsersCache(client *redis.Client, coin string, user string) bool {
|
||||
k := "pool_" + coin + "_users"
|
||||
ok := StoreStringToSet(client, k, user)
|
||||
if !ok {
|
||||
log.Printf("Error storing users slice to Redis for coin: %s\n", coin)
|
||||
return false
|
||||
}
|
||||
return true
|
||||
}
|
||||
*/
|
||||
/*
|
||||
func StoreCacheMinerItem(client *redis.Client, setKey string, item CacheMinerItem) bool {
|
||||
data, err := json.Marshal(item)
|
||||
if err != nil {
|
||||
log.Printf("Error marshalling CacheMinerItem to JSON: %v\n", err)
|
||||
return false
|
||||
}
|
||||
|
||||
err = client.SAdd(context.Background(), setKey, data).Err()
|
||||
if err != nil {
|
||||
log.Printf("Error adding data to Redis set: %v\n", err)
|
||||
return false
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
func LoadCacheMinerItems(client *redis.Client, setKey string) ([]CacheMinerItem, bool) {
|
||||
data, err := client.SMembers(context.Background(), setKey).Result()
|
||||
if err != nil {
|
||||
log.Printf("Error retrieving data from Redis set: %v\n", err)
|
||||
return nil, false
|
||||
}
|
||||
|
||||
var items []CacheMinerItem
|
||||
for _, itemData := range data {
|
||||
var item CacheMinerItem
|
||||
err := json.Unmarshal([]byte(itemData), &item)
|
||||
if err != nil {
|
||||
log.Printf("Error unmarshalling JSON to CacheMinerItem: %v\n", err)
|
||||
return nil, false
|
||||
}
|
||||
items = append(items, item)
|
||||
}
|
||||
|
||||
return items, true
|
||||
}
|
||||
|
||||
func RemoveCacheMinerItem(client *redis.Client, setKey string, item CacheMinerItem) bool {
|
||||
|
||||
data, err := json.Marshal(item)
|
||||
if err != nil {
|
||||
log.Printf("Error marshalling CacheMinerItem to JSON: %v\n", err)
|
||||
return false
|
||||
}
|
||||
|
||||
err = client.SRem(context.Background(), setKey, data).Err()
|
||||
if err != nil {
|
||||
log.Printf("Error removing data from Redis set: %v\n", err)
|
||||
return false
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
func LoadMinersCache(client *redis.Client, coin string) []CacheMinerItem {
|
||||
k := "pool_" + coin + "_miners"
|
||||
miners, ok := LoadCacheMinerItems(client, k)
|
||||
if !ok {
|
||||
log.Printf("Error loading miners set from Redis for coin: %s\n", coin)
|
||||
return []CacheMinerItem{}
|
||||
}
|
||||
return miners
|
||||
}
|
||||
|
||||
func StoreMinersCache(client *redis.Client, coin string, miner CacheMinerItem) bool {
|
||||
k := "pool_" + coin + "_miners"
|
||||
ok := StoreCacheMinerItem(client, k, miner)
|
||||
if !ok {
|
||||
log.Printf("Error storing miners slice to Redis for coin: %s\n", coin)
|
||||
return false
|
||||
}
|
||||
return true
|
||||
}
|
||||
*/
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,808 @@
|
|||
package alph
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"database/sql"
|
||||
"encoding/binary"
|
||||
"encoding/hex"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io"
|
||||
"io/ioutil"
|
||||
"log"
|
||||
"math"
|
||||
"net"
|
||||
"strconv"
|
||||
"sync"
|
||||
"sync/atomic"
|
||||
|
||||
//"pool/internal/cache"
|
||||
"pool/internal/db"
|
||||
"pool/internal/gbt/alph/constants"
|
||||
"pool/internal/gbt/coin"
|
||||
"pool/internal/gbt/dbif"
|
||||
"pool/internal/msg"
|
||||
"pool/internal/utility"
|
||||
"time"
|
||||
|
||||
//"github.com/btcsuite/btcd/rpcclient"
|
||||
_ "github.com/mattn/go-sqlite3"
|
||||
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
const GBT_ALPH_VERSION = "alph v1.0"
|
||||
const headerSize = 4
|
||||
|
||||
type AlphAddrConfig struct {
|
||||
Addr string `json:"addr"`
|
||||
}
|
||||
|
||||
type AlphConfig struct {
|
||||
Alph AlphAddrConfig `json:"alph"`
|
||||
}
|
||||
|
||||
type GbtAlphContext struct {
|
||||
Config AlphConfig
|
||||
GbtCtx *coin.GbtContext
|
||||
|
||||
last_time time.Time
|
||||
last_gbt BlockAlphMsg
|
||||
last_blockhash string
|
||||
|
||||
last_height uint32
|
||||
|
||||
Submits float64
|
||||
|
||||
addressIndex int
|
||||
|
||||
Target []byte
|
||||
Header []byte
|
||||
last_body string
|
||||
ChainIndex int // 分片
|
||||
new_block_chan chan int
|
||||
new_block_index int
|
||||
}
|
||||
|
||||
type BlockAlphMsg struct {
|
||||
Jobs []AlphBlockMsg
|
||||
}
|
||||
|
||||
type AlphBlockMsg struct {
|
||||
JobId string
|
||||
FromGroup uint32
|
||||
ToGroup uint32
|
||||
Height uint32
|
||||
HeaderBlob string
|
||||
TargetBlob string
|
||||
TxsBlob string
|
||||
}
|
||||
|
||||
type ReceiveJob struct {
|
||||
FromGroup uint32
|
||||
ToGroup uint32
|
||||
HeaderBlobLength uint32
|
||||
HeaderBlob []byte
|
||||
TxsBlobLength uint32
|
||||
TxsBlob []byte
|
||||
TargetLength uint32
|
||||
TargetBlob []byte
|
||||
Height uint32
|
||||
DataLength uint32
|
||||
}
|
||||
|
||||
type JobCounter struct {
|
||||
counter uint64
|
||||
mu sync.Mutex
|
||||
}
|
||||
|
||||
var logg *zap.Logger
|
||||
var GbtAlphCtx GbtAlphContext
|
||||
|
||||
type GbtAlphMsg struct {
|
||||
Id uint64 `json:"id"`
|
||||
HeaderCommitment string `json:"headerCommitment"` // 获取到的任务的区块头
|
||||
NBits string `json:"nBits"`
|
||||
}
|
||||
|
||||
type GetBlockHeaderMsg struct {
|
||||
Height int `json:"height"`
|
||||
Nonce string `json:"nonce"`
|
||||
Confirmations int `json:"confirmations"`
|
||||
}
|
||||
|
||||
type GetBlockStatsMsg struct {
|
||||
Height int `json:"height"`
|
||||
Subsidy float64 `json:"subsidy"`
|
||||
Totalfee float64 `json:"totalfee"`
|
||||
}
|
||||
|
||||
type BlockCheckData struct {
|
||||
FromGroup uint32
|
||||
ToGroup uint32
|
||||
Height int
|
||||
Nonce string
|
||||
User string
|
||||
Miner string
|
||||
MinerId string
|
||||
Hash string
|
||||
SubIdx int
|
||||
}
|
||||
|
||||
type PushBlkNewMsg struct {
|
||||
Coin string `json:"coin"`
|
||||
Height int `json:"height"`
|
||||
Nonce string `json:"nonce"`
|
||||
}
|
||||
|
||||
var addr = []string{
|
||||
"1CYKPymfTVex9KZ2i48S3v5cAE7xT6hERG1P6GJiHgWJu",
|
||||
"14eEDF5SvnYcz12Cmkn9UJHLiiTKcqvaP2JgbsSevc38H",
|
||||
"1HLvickKHvsFziGqmZt7hcithAtRkgueUBHXRHBvMSp98",
|
||||
"1JBHWv4XPbagWxnC9HXimz67MY85KoKz3h16uvk3cJcAS",
|
||||
}
|
||||
|
||||
func stringToFloat64(str string) float64 {
|
||||
floatValue, err := strconv.ParseFloat(str, 64)
|
||||
if err != nil {
|
||||
fmt.Println("转换失败:", err)
|
||||
return 0
|
||||
}
|
||||
return floatValue
|
||||
}
|
||||
|
||||
func savePoint4(num float64) float64 {
|
||||
result := fmt.Sprintf("%.4f", num)
|
||||
return stringToFloat64(result)
|
||||
}
|
||||
func update_block_confirm(gbt *GbtAlphContext) {
|
||||
// 1,每次报块都调用本函数
|
||||
// 2,先查出报块时的上两个块,然后查询这些快是否在主链上(通过区块的hash传入CheckBlk函数)
|
||||
// 3,通过查询区块信息,确定区块的nonce、height、奖励,通过链信息,查询出当前链高度
|
||||
db, err := sql.Open("sqlite3", "./blocks.db")
|
||||
if err != nil {
|
||||
//log.Printf("Error opening database: %v", err)
|
||||
logg.Error("[gbt]", zap.String("Error opening database", err.Error()))
|
||||
return
|
||||
}
|
||||
defer db.Close()
|
||||
|
||||
query := "SELECT fromgroup, togroup, user, miner, minerid, height, nonce, hash, subidx FROM blocks WHERE checked=0 AND created_at >= datetime('now', '-30 minutes') order by id desc limit 1"
|
||||
rows, err := db.Query(query)
|
||||
if err != nil {
|
||||
//log.Printf("Error executing query from blocks: %v", err)
|
||||
logg.Error("[gbt]", zap.String("Error executing query from blocks:", err.Error()))
|
||||
return
|
||||
}
|
||||
defer rows.Close()
|
||||
|
||||
var blocks []BlockCheckData
|
||||
for rows.Next() {
|
||||
var fromGroup uint32
|
||||
var toGroup uint32
|
||||
var height int
|
||||
var user string
|
||||
var miner string
|
||||
var minerid string
|
||||
var hash string
|
||||
var subidx int
|
||||
var nonce string
|
||||
if err := rows.Scan(&fromGroup, &toGroup, &user, &miner, &minerid, &height, &nonce, &hash, &subidx); err != nil {
|
||||
//log.Printf("Error scanning row in blocks: %v", err)
|
||||
logg.Error("[gbt]", zap.String("Error scanning row in blocks:", err.Error()))
|
||||
return
|
||||
}
|
||||
var blockdata BlockCheckData
|
||||
blockdata.FromGroup = fromGroup
|
||||
blockdata.ToGroup = toGroup
|
||||
blockdata.Height = height
|
||||
blockdata.User = user
|
||||
blockdata.Miner = miner
|
||||
blockdata.MinerId = minerid
|
||||
blockdata.Hash = hash
|
||||
blockdata.SubIdx = subidx
|
||||
blockdata.Nonce = nonce
|
||||
blocks = append(blocks, blockdata)
|
||||
}
|
||||
fmt.Println("blocks:", blocks)
|
||||
for _, block := range blocks {
|
||||
blockHash, err := gbt.GbtCtx.ClientAlphApi.GetBlockHash(block.FromGroup, block.ToGroup, uint32(block.Height))
|
||||
if err != nil {
|
||||
logg.Info("[gbt]", zap.String("GetBlockHash ", err.Error()))
|
||||
continue
|
||||
}
|
||||
if blockHash == block.Hash {
|
||||
checkResult := gbt.GbtCtx.ClientAlphApi.CheckBlk(blockHash)
|
||||
if checkResult {
|
||||
blockInfo := gbt.GbtCtx.ClientAlphApi.GetBlcokInfo(blockHash)
|
||||
var total_amount float64 = 0
|
||||
fromGroup, toGroup, nonce, height, input, output := blockInfo.ChainFrom, blockInfo.ChainTo, blockInfo.Nonce, blockInfo.Height, blockInfo.Transactions[len(blockInfo.Transactions)-1].Unsigned.Inputs, blockInfo.Transactions[len(blockInfo.Transactions)-1].Unsigned.FixedOutputs
|
||||
if len(input) == 0 {
|
||||
for v := range output {
|
||||
address, amount := output[v].Address, output[v].AttoAlphAmount
|
||||
if address == addr[fromGroup] && nonce == block.Nonce {
|
||||
total_amount += savePoint4(stringToFloat64(amount) / math.Pow(10, 18))
|
||||
fmt.Println(fromGroup, "->", toGroup, "(", height, "):", total_amount, ",", nonce, " ", blockHash, " ", address, " 报块成功")
|
||||
} else {
|
||||
fmt.Println(fromGroup, "->", toGroup, "(", height, "):", total_amount, ",", nonce, "不是报块,实际报块地址为:", address)
|
||||
}
|
||||
}
|
||||
}
|
||||
block_height := int64(block.Height)
|
||||
dbif.AlphNotifyPoolBlkStatsSuccess(gbt.GbtCtx, uint32(fromGroup), uint32(toGroup), block_height, "", block.Nonce, int64(block.SubIdx), total_amount, 0)
|
||||
dbif.NotifyAlphBlkDetailSuccess(gbt.GbtCtx, uint32(fromGroup), uint32(toGroup), block_height, "", block.Nonce, int64(block.SubIdx))
|
||||
dbif.NotifyAlphBlkNewDb(gbt.GbtCtx, uint32(fromGroup), uint32(toGroup), block_height, block.Hash, true, block.Nonce, int64(block.SubIdx))
|
||||
|
||||
updateSQL := `UPDATE blocks SET checked = 1 WHERE height = ? AND nonce = ? AND checked = 0`
|
||||
_, err = db.Exec(updateSQL, block.Height, block.Nonce)
|
||||
if err != nil {
|
||||
logg.Error("[gbt]", zap.String("Error updating blk_new:", err.Error()))
|
||||
continue
|
||||
}
|
||||
logg.Warn("[gbt]", zap.String("update block success:", fmt.Sprint(block.Height)+" "+block.Nonce))
|
||||
}
|
||||
} else {
|
||||
logg.Info("[gbt]", zap.String("GetBlockHash ", "区块hash不在主链上"))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func NewAlphPool(host string, port string) (*net.Conn, error) {
|
||||
conn, err := net.Dial("tcp", fmt.Sprintf("%s:%s", host, port))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to connect to mining pool: %w", err)
|
||||
}
|
||||
return &conn, nil
|
||||
}
|
||||
|
||||
func processJob(data []byte) (*ReceiveJob, error) {
|
||||
reader := bytes.NewReader(data)
|
||||
var job ReceiveJob
|
||||
|
||||
// Read fixed fields
|
||||
fields := []interface{}{
|
||||
&job.FromGroup, &job.ToGroup, &job.HeaderBlobLength,
|
||||
}
|
||||
for _, field := range fields {
|
||||
if err := binary.Read(reader, binary.BigEndian, field); err != nil {
|
||||
return nil, fmt.Errorf("failed to read fixed field: %w", err)
|
||||
}
|
||||
}
|
||||
|
||||
// Read variable-length fields
|
||||
job.HeaderBlob = make([]byte, job.HeaderBlobLength)
|
||||
if _, err := io.ReadFull(reader, job.HeaderBlob); err != nil {
|
||||
return nil, fmt.Errorf("failed to read HeaderBlob: %w", err)
|
||||
}
|
||||
|
||||
fields = []interface{}{
|
||||
&job.TxsBlobLength,
|
||||
}
|
||||
for _, field := range fields {
|
||||
if err := binary.Read(reader, binary.BigEndian, field); err != nil {
|
||||
return nil, fmt.Errorf("failed to read fixed field: %w", err)
|
||||
}
|
||||
}
|
||||
|
||||
job.TxsBlob = make([]byte, job.TxsBlobLength)
|
||||
if _, err := io.ReadFull(reader, job.TxsBlob); err != nil {
|
||||
return nil, fmt.Errorf("failed to read TxsBlob: %w", err)
|
||||
}
|
||||
|
||||
fields = []interface{}{
|
||||
&job.TargetLength,
|
||||
}
|
||||
for _, field := range fields {
|
||||
if err := binary.Read(reader, binary.BigEndian, field); err != nil {
|
||||
return nil, fmt.Errorf("failed to read fixed field: %w", err)
|
||||
}
|
||||
}
|
||||
|
||||
job.TargetBlob = make([]byte, job.TargetLength)
|
||||
if _, err := io.ReadFull(reader, job.TargetBlob); err != nil {
|
||||
return nil, fmt.Errorf("failed to read TargetBlob: %w", err)
|
||||
}
|
||||
|
||||
if err := binary.Read(reader, binary.BigEndian, &job.Height); err != nil {
|
||||
return nil, fmt.Errorf("failed to read Height: %w", err)
|
||||
}
|
||||
|
||||
job.DataLength = uint32(len(data) - reader.Len())
|
||||
return &job, nil
|
||||
}
|
||||
|
||||
func _parseJobs(message []byte) ([]ReceiveJob, error) {
|
||||
jobCount := binary.BigEndian.Uint32(message[:4])
|
||||
var jobs []ReceiveJob
|
||||
offset := 4
|
||||
for i := uint32(0); i < jobCount; i++ {
|
||||
if offset >= len(message) {
|
||||
return nil, fmt.Errorf("insufficient data for job parsing")
|
||||
}
|
||||
job, err := processJob(message[offset:])
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("error processing job: %w", err)
|
||||
}
|
||||
jobs = append(jobs, *job)
|
||||
offset += int(job.DataLength)
|
||||
}
|
||||
return jobs, nil
|
||||
}
|
||||
|
||||
type SubmitResult struct {
|
||||
FromGroup uint32
|
||||
ToGroup uint32
|
||||
BlockHash []byte
|
||||
Successed bool
|
||||
}
|
||||
|
||||
func _parseSubmitResult(buffer []byte) (SubmitResult, error) {
|
||||
if len(buffer) < 41 {
|
||||
return SubmitResult{}, fmt.Errorf("buffer length is too short: %d", len(buffer))
|
||||
}
|
||||
|
||||
fromGroup := binary.BigEndian.Uint32(buffer[0:4])
|
||||
toGroup := binary.BigEndian.Uint32(buffer[4:8])
|
||||
blockHash := buffer[8:40]
|
||||
successed := buffer[40] == 1
|
||||
new_block_notify := successed
|
||||
if new_block_notify {
|
||||
update_block_confirm(&GbtAlphCtx)
|
||||
}
|
||||
// fmt.Println("节点返回的hash:", blockHash)
|
||||
// fmt.Println("节点返回的结果:", successed)
|
||||
return SubmitResult{
|
||||
FromGroup: fromGroup,
|
||||
ToGroup: toGroup,
|
||||
BlockHash: blockHash,
|
||||
Successed: successed,
|
||||
}, nil
|
||||
}
|
||||
|
||||
func ParseJobs(data []byte) (interface{}, error) {
|
||||
if len(data) < headerSize+1 {
|
||||
return nil, fmt.Errorf("data too short to contain a valid job")
|
||||
}
|
||||
|
||||
reader := bytes.NewReader(data)
|
||||
var bodyLength uint32
|
||||
if err := binary.Read(reader, binary.BigEndian, &bodyLength); err != nil {
|
||||
return nil, fmt.Errorf("failed to read body length: %w", err)
|
||||
}
|
||||
|
||||
version := uint8(data[headerSize])
|
||||
if version != constants.MiningProtocolVersion {
|
||||
return nil, fmt.Errorf("通信协议版本号错误!")
|
||||
}
|
||||
messageType := uint8(data[headerSize+1])
|
||||
// statOffset := headerSize + 2
|
||||
// endOffset := headerSize + bodyLength
|
||||
message := data[headerSize+2 : headerSize+bodyLength] // startOffset : endOffset
|
||||
if len(message) < 4 {
|
||||
return nil, fmt.Errorf("message too short to parse job size")
|
||||
}
|
||||
var result interface{}
|
||||
var err error
|
||||
if messageType == constants.JobsMessageType {
|
||||
result, err = _parseJobs(message)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("解析任务失败: %w", err)
|
||||
}
|
||||
return result.([]ReceiveJob), nil
|
||||
} else if messageType == constants.SubmitResultMessageType {
|
||||
result, err = _parseSubmitResult(message)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("解析提交结果失败: %w", err)
|
||||
}
|
||||
return result.(SubmitResult), nil
|
||||
} else {
|
||||
return nil, fmt.Errorf("未知消息类型: %d", messageType)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func NewJobCounter() *JobCounter {
|
||||
return &JobCounter{}
|
||||
}
|
||||
|
||||
// JobCounter 增加计数器并返回当前计数器值的十六进制表示
|
||||
func (jc *JobCounter) Next() string {
|
||||
jc.mu.Lock()
|
||||
defer jc.mu.Unlock()
|
||||
|
||||
// 增加计数器
|
||||
jc.counter++
|
||||
|
||||
// 当计数器达到 65535 时重置为 1
|
||||
if jc.counter >= 0xFFFF {
|
||||
jc.counter = 1
|
||||
}
|
||||
|
||||
return jc.Current()
|
||||
}
|
||||
|
||||
// 返回当前计数器值的十六进制表示
|
||||
func (jc *JobCounter) Current() string {
|
||||
return fmt.Sprintf("%x", jc.counter)
|
||||
}
|
||||
|
||||
var jobCounter = NewJobCounter() // 创建一个全局唯一的JobCounter实例
|
||||
|
||||
func gbt_running(gbt *GbtAlphContext) {
|
||||
fmt.Println("gbt_running started")
|
||||
var lastBuffer []byte
|
||||
var buffer = make([]byte, 5800)
|
||||
for {
|
||||
if !gbt.GbtCtx.Started {
|
||||
break
|
||||
}
|
||||
n, err := (*gbt.GbtCtx.ClientAlph).Read(buffer)
|
||||
if err != nil {
|
||||
logg.Error("Error reading message", zap.Error(err))
|
||||
break
|
||||
}
|
||||
message := append(lastBuffer, buffer[:n]...)
|
||||
|
||||
for len(message) >= headerSize {
|
||||
if len(message) < headerSize {
|
||||
break
|
||||
}
|
||||
bodyLength := binary.BigEndian.Uint32(message[:headerSize])
|
||||
totalLength := headerSize + int(bodyLength)
|
||||
if len(message) < totalLength {
|
||||
break
|
||||
}
|
||||
completeMessage := message[:totalLength]
|
||||
processMessage(completeMessage, gbt)
|
||||
message = message[totalLength:]
|
||||
}
|
||||
lastBuffer = message
|
||||
}
|
||||
}
|
||||
func get_gbt_msg(gbt *GbtAlphContext, gbtmsg []byte) {
|
||||
if !gbt.GbtCtx.Started {
|
||||
return
|
||||
}
|
||||
// new_block_notify := false
|
||||
|
||||
if gbtmsg != nil {
|
||||
//check_preblock(gbt, DbCtx)
|
||||
if gbt.GbtCtx.PubCh == nil {
|
||||
gbt.GbtCtx.PubCh = utility.InitZmqPub(gbt.GbtCtx.Config.Zmq.Pub)
|
||||
}
|
||||
if gbt.GbtCtx.PubCh != nil {
|
||||
for trycnt := 0; trycnt < 3; trycnt++ {
|
||||
err := gbt.GbtCtx.PubCh.SendMessage([][]byte{[]byte("jobalph"), gbtmsg})
|
||||
if err != nil {
|
||||
logg.Warn("[gbt]", zap.String("job ", err.Error()))
|
||||
continue
|
||||
} else {
|
||||
//gbt.GbtCtx.PubCh.SendChan <- [][]byte{[]byte("jobnexa"), gbtmsg}
|
||||
logg.Warn("[gbt]", zap.String("job ", "sent"))
|
||||
break
|
||||
}
|
||||
}
|
||||
//gbt.GbtCtx.AlivingChan <- true
|
||||
atomic.StoreInt32(&(gbt.GbtCtx.FlagAliving), 1)
|
||||
} else {
|
||||
logg.Warn("[gbt]", zap.String("job ", "sent failed! PubCh nil"))
|
||||
}
|
||||
} else {
|
||||
atomic.StoreInt32(&(gbt.GbtCtx.FlagAliving), 1)
|
||||
}
|
||||
|
||||
// if new_block_notify {
|
||||
// update_block_confirm(gbt)
|
||||
// }
|
||||
// }
|
||||
}
|
||||
|
||||
// 重置定时器
|
||||
// func resetTimer(timer *time.Timer, timeout int) {
|
||||
// if !timer.Stop() {
|
||||
// <-timer.C
|
||||
// }
|
||||
// timer.Reset(time.Duration(timeout) * time.Millisecond)
|
||||
// }
|
||||
|
||||
// 处理接收到的完整消息
|
||||
func processMessage(message []byte, gbt *GbtAlphContext) {
|
||||
jobs, err := ParseJobs(message)
|
||||
if err != nil {
|
||||
logg.Error("Error parsing jobs", zap.Error(err))
|
||||
return
|
||||
}
|
||||
|
||||
switch job := jobs.(type) {
|
||||
case []ReceiveJob:
|
||||
handleReceiveJobs(job, gbt)
|
||||
case SubmitResult:
|
||||
fmt.Println("job type:", job.Successed)
|
||||
handleSubmitResult(job)
|
||||
default:
|
||||
logg.Warn("Unexpected message type")
|
||||
}
|
||||
}
|
||||
|
||||
// var jobIndex int = 0
|
||||
|
||||
// 处理接收到的任务
|
||||
func handleReceiveJobs(jobs []ReceiveJob, gbt *GbtAlphContext) {
|
||||
// for _, job := range jobs {
|
||||
jobId := jobCounter.Next()
|
||||
// block := AlphBlockMsg{
|
||||
// JobId: jobId,
|
||||
// FromGroup: job.FromGroup,
|
||||
// ToGroup: job.ToGroup,
|
||||
// Height: job.Height,
|
||||
// Header: fmt.Sprintf("%x", job.HeaderBlob),
|
||||
// Target: fmt.Sprintf("%x", job.TargetBlob),
|
||||
// Txs: fmt.Sprintf("%x", job.TxsBlob),
|
||||
// }
|
||||
// alphJobs.Jobs = append(alphJobs.Jobs, block)
|
||||
// }
|
||||
// index := rand.Intn(16)
|
||||
// 0-0 0-1 0-2 0-3 | 0 1 2 3
|
||||
// 1-0 1-1 1-2 1-3 | 4 5 6 7
|
||||
// 2-0 2-1 2-2 2-3 | 8 9 10 11
|
||||
// 3-0 3-1 3-2 3-3 | 12 13 14 15
|
||||
index := 0
|
||||
jobId, FromGroup, ToGroup, Height, Header, Target, Txs := jobId, jobs[index].FromGroup, jobs[index].ToGroup, jobs[index].Height, jobs[index].HeaderBlob, jobs[index].TargetBlob, jobs[index].TxsBlob
|
||||
job := AlphBlockMsg{
|
||||
JobId: jobId,
|
||||
FromGroup: FromGroup,
|
||||
ToGroup: ToGroup,
|
||||
Height: Height,
|
||||
HeaderBlob: fmt.Sprintf("%x", Header),
|
||||
TargetBlob: fmt.Sprintf("%x", Target),
|
||||
TxsBlob: fmt.Sprintf("%x", Txs),
|
||||
}
|
||||
// fmt.Println("接到新任务:", job.JobId, job.TargetBlob)
|
||||
data, err := json.Marshal(job)
|
||||
if err != nil {
|
||||
logg.Error("Error marshaling job", zap.Error(err))
|
||||
return
|
||||
}
|
||||
// jobIndex += 1
|
||||
// fmt.Println("gbt获取任务时间:", time.Now(), "\t", "gbt获取任务序号:", jobIndex)
|
||||
get_gbt_msg(gbt, data)
|
||||
// }
|
||||
}
|
||||
|
||||
// 处理提交区块的结果
|
||||
func handleSubmitResult(result SubmitResult) {
|
||||
fromGroup, toGroup := result.FromGroup, result.ToGroup
|
||||
hash := utility.BytesToHexStr(result.BlockHash)
|
||||
chainIndex := utility.ChainIndexStr(fromGroup, toGroup)
|
||||
// fmt.Println("报块上链:", chainIndex, ":", hash)
|
||||
if result.Successed {
|
||||
logg.Info("Block submitted successfully", zap.String("hash", hash), zap.String("chainIndex", chainIndex))
|
||||
} else {
|
||||
logg.Error("Block submission failed", zap.String("hash", hash), zap.String("chainIndex", chainIndex))
|
||||
}
|
||||
}
|
||||
|
||||
func gbt_notify_running(gbt *GbtAlphContext) {
|
||||
for {
|
||||
if !gbt.GbtCtx.Started {
|
||||
break
|
||||
}
|
||||
|
||||
if gbt.GbtCtx.NodeSubCh == nil {
|
||||
gbt.GbtCtx.NodeSubCh = utility.InitZmqSub(gbt.GbtCtx.Config.Rpc.ZmqSub, utility.BITCOIND_ZMQ_HASHBLOCK)
|
||||
}
|
||||
if gbt.GbtCtx.NodeSubCh != nil {
|
||||
cmsg_sub, err := gbt.GbtCtx.NodeSubCh.RecvMessage()
|
||||
|
||||
if err != nil {
|
||||
if !gbt.GbtCtx.Started {
|
||||
break
|
||||
}
|
||||
gbt.GbtCtx.NodeSubCh.SetSubscribe(utility.BITCOIND_ZMQ_HASHBLOCK)
|
||||
gbt.GbtCtx.NodeSubCh.Connect(gbt.GbtCtx.Config.Rpc.ZmqSub)
|
||||
continue
|
||||
}
|
||||
if len(cmsg_sub) >= 2 {
|
||||
if string(cmsg_sub[0]) == "hashblock" {
|
||||
GbtAlphCtx.new_block_index = GbtAlphCtx.new_block_index + 1
|
||||
gbt.new_block_chan <- GbtAlphCtx.new_block_index
|
||||
|
||||
}
|
||||
}
|
||||
} else {
|
||||
logg.Error("[gbt]", zap.String("notify", "NodeSubCh fail!"))
|
||||
time.Sleep(time.Duration(1) * time.Second)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func alphInit(config *AlphConfig) {
|
||||
data, err := ioutil.ReadFile("gbt.conf")
|
||||
if err != nil {
|
||||
panic(err.Error())
|
||||
}
|
||||
if err = json.Unmarshal(data, &config); err != nil {
|
||||
panic(err.Error())
|
||||
}
|
||||
}
|
||||
func Init(GbtCtx *coin.GbtContext, DbCtx *db.DbContext) {
|
||||
GbtAlphCtx.GbtCtx = GbtCtx
|
||||
|
||||
GbtAlphCtx.last_height = 0
|
||||
|
||||
alphInit(&GbtAlphCtx.Config)
|
||||
|
||||
GbtAlphCtx.Target = make([]byte, 32)
|
||||
GbtAlphCtx.Header = make([]byte, 49)
|
||||
GbtAlphCtx.last_time = time.Now()
|
||||
logg = GbtCtx.Log
|
||||
GbtAlphCtx.new_block_chan = make(chan int, 256)
|
||||
GbtAlphCtx.new_block_index = 0
|
||||
}
|
||||
|
||||
func Start() {
|
||||
go gbt_running(&GbtAlphCtx)
|
||||
// go gbt_notify_running(&GbtAlphCtx)
|
||||
go submit_block_running(&GbtAlphCtx)
|
||||
}
|
||||
|
||||
func Stop() {
|
||||
defer close(GbtAlphCtx.new_block_chan)
|
||||
}
|
||||
|
||||
func new_block_into_db(block *GbtAlphContext, user string, miner string, minerid string, fromGroup int, toGroup int, height int64, nonce string, hash string, subidx int64) bool {
|
||||
db, err := sql.Open("sqlite3", "./blocks.db")
|
||||
if err != nil {
|
||||
log.Printf("Error opening database: %v", err)
|
||||
return false
|
||||
}
|
||||
defer db.Close()
|
||||
|
||||
createTableSQL := `
|
||||
CREATE TABLE IF NOT EXISTS blocks (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
user TEXT NOT NULL,
|
||||
miner TEXT NOT NULL,
|
||||
minerid TEXT NOT NULL,
|
||||
fromGroup INTEGER NOT NULL,
|
||||
toGroup INTEGER NOT NULL,
|
||||
height INTEGER,
|
||||
nonce TEXT NOT NULL,
|
||||
hash TEXT NOT NULL,
|
||||
subidx INTEGER,
|
||||
checked INTEGER,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||
);`
|
||||
_, err = db.Exec(createTableSQL)
|
||||
if err != nil {
|
||||
log.Printf("Error creating table: %v", err)
|
||||
return false
|
||||
}
|
||||
|
||||
insertSQL := `INSERT INTO blocks (user, miner, minerid, fromGroup, toGroup, height, nonce, hash, checked, subidx) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`
|
||||
_, err = db.Exec(insertSQL, user, miner, minerid, fromGroup, toGroup, height, nonce, hash, 0, subidx)
|
||||
if err != nil {
|
||||
log.Printf("Error inserting data from blocks %s: %v", fmt.Sprint(height), err)
|
||||
return false
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
func submitToChain(gbt *GbtAlphContext, block []byte) error {
|
||||
blockSize := len(block)
|
||||
msgPrefixSize := 1 + 1 + 4
|
||||
msgSize := msgPrefixSize + blockSize
|
||||
msgHeader := make([]byte, 10)
|
||||
binary.BigEndian.PutUint32(msgHeader[0:4], uint32(msgSize))
|
||||
msgHeader[4] = constants.MiningProtocolVersion
|
||||
msgHeader[5] = constants.SubmitBlockMessageType
|
||||
binary.BigEndian.PutUint32(msgHeader[6:10], uint32(blockSize))
|
||||
|
||||
data := bytes.Join([][]byte{msgHeader, block}, nil)
|
||||
_, err := (*gbt.GbtCtx.ClientAlph).Write(data)
|
||||
return err
|
||||
}
|
||||
|
||||
func submit_block_running(block *GbtAlphContext) {
|
||||
logg.Info("[block]", zap.String("submit_block_running", "Start."))
|
||||
for {
|
||||
if !block.GbtCtx.Started {
|
||||
break
|
||||
}
|
||||
if block.GbtCtx.SubCh == nil {
|
||||
block.GbtCtx.SubCh = utility.InitZmqSub(block.GbtCtx.Config.Zmq.Sub, "blk"+block.GbtCtx.Coin)
|
||||
}
|
||||
if block.GbtCtx.SubCh != nil {
|
||||
cmsg_sub, err := block.GbtCtx.SubCh.RecvMessage() // [ []byte("topic"), []byte("message") ]
|
||||
if err != nil {
|
||||
if !block.GbtCtx.Started {
|
||||
break
|
||||
}
|
||||
time.Sleep(time.Duration(1) * time.Second)
|
||||
|
||||
block.GbtCtx.SubCh.SetSubscribe("blk" + block.GbtCtx.Coin)
|
||||
block.GbtCtx.SubCh.Connect(block.GbtCtx.Config.Zmq.Sub)
|
||||
continue
|
||||
}
|
||||
|
||||
if len(cmsg_sub) >= 2 {
|
||||
if string(cmsg_sub[0]) == "blkalph" {
|
||||
cmsg := cmsg_sub[1] // [(区块结构, xbyte), (heightBlob, 8byte), (indexB, 8byte)]
|
||||
// [(0 - cmsg长度-16), (最后16 - 8 byte), (最后 7-0 byte)]
|
||||
|
||||
//block data
|
||||
msgb := make([]byte, len(cmsg)-16)
|
||||
copy(msgb, cmsg)
|
||||
|
||||
//height
|
||||
heightb, err := hex.DecodeString(string(cmsg[len(msgb) : len(msgb)+8])) // heightb 8bytes
|
||||
if err != nil {
|
||||
|
||||
logg.Error("[block]", zap.String("failed to decode height", err.Error()))
|
||||
continue
|
||||
}
|
||||
var height uint32 = utility.ByteToUint32(heightb)
|
||||
logg.Warn("[block]", zap.Uint32("height", height))
|
||||
|
||||
if height <= block.last_height {
|
||||
continue
|
||||
}
|
||||
block.last_height = height
|
||||
|
||||
//index
|
||||
indexb, err1 := hex.DecodeString(string(cmsg[len(msgb)+8:])) // indexb 8bytes
|
||||
if err1 != nil {
|
||||
//block.Consumer.MarkOffset(cmsg, "")
|
||||
logg.Error("[block]", zap.String("failed to decode index", err1.Error()))
|
||||
continue
|
||||
}
|
||||
//copy(indexb, cmsg.Value[len(msgb)+4:])
|
||||
var index uint32 = utility.ByteToUint32(indexb)
|
||||
logg.Warn("[block]", zap.Uint32("index", index))
|
||||
logg.Debug("[block]", zap.String("msg", string(cmsg)), zap.String("blk", string(msgb)))
|
||||
|
||||
var alphblock msg.BlockAlphMsg
|
||||
|
||||
if err := json.Unmarshal(msgb, &alphblock); err != nil {
|
||||
//block.Consumer.MarkOffset(cmsg, "")
|
||||
logg.Error("[block]", zap.String("failed to Unmarshal job", err.Error()))
|
||||
continue
|
||||
}
|
||||
var nonceBytes, headerBytes, txsBytes []byte
|
||||
if alphblock.Txs != "" {
|
||||
nonceBytes, headerBytes, txsBytes = utility.HexStrToBytes(alphblock.Nonce), utility.HexStrToBytes(alphblock.Header), utility.HexStrToBytes(alphblock.Txs)
|
||||
} else {
|
||||
nonceBytes, headerBytes, txsBytes = utility.HexStrToBytes(alphblock.Nonce), utility.HexStrToBytes(alphblock.Header), []byte{0x00}
|
||||
}
|
||||
|
||||
blk := bytes.Join([][]byte{nonceBytes, headerBytes, txsBytes}, nil) // blk:= nonceBytes + headerBytes + txsBytes
|
||||
// rawmsgs := make([]json.RawMessage, 1)
|
||||
logg.Info("[block]", zap.String("blk", fmt.Sprintf("%x", blk)))
|
||||
|
||||
err2 := submitToChain(block, blk) // 将报块提交到链上
|
||||
if err2 != nil {
|
||||
logg.Error("[block]", zap.String("提交报块失败:", err2.Error()))
|
||||
}
|
||||
|
||||
// result, err := block.GbtCtx.Client.RawRequest("submitminingsolution", rawmsgs)
|
||||
// if err != nil {
|
||||
// logg.Error("[block]", zap.String("submitminingsolution", err.Error()))
|
||||
// } else {
|
||||
// //last_result = result
|
||||
// }
|
||||
|
||||
dbif.NotifyAlphPoolBlkStatsSubmitResult(block.GbtCtx, alphblock.FromGroup, alphblock.ToGroup, int64(height), alphblock.Hash, alphblock.Nonce, alphblock.SubIdx)
|
||||
|
||||
block.Submits += 1
|
||||
|
||||
logg.Warn("[block]", zap.Float64("total submits", block.Submits), zap.Int64("SubIdx", alphblock.SubIdx))
|
||||
|
||||
new_block_into_db(block, alphblock.User, alphblock.Miner, alphblock.Index, int(alphblock.FromGroup), int(alphblock.ToGroup), int64(height), alphblock.Nonce, alphblock.Hash, alphblock.SubIdx)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
logg.Error("[block]", zap.String("block", "SubCh failed! retry"))
|
||||
time.Sleep(time.Duration(1) * time.Second)
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
package constants
|
||||
|
||||
const (
|
||||
MiningProtocolVersion = 0x01
|
||||
JobsMessageType = 0x00
|
||||
SubmitResultMessageType = 0x01
|
||||
SubmitBlockMessageType = 0x00
|
||||
GroupSize = 4
|
||||
NonceLength = 24
|
||||
NumZeroAtLeastInHash = 37
|
||||
HashLength = 32
|
||||
)
|
|
@ -0,0 +1,308 @@
|
|||
package http
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"net/http"
|
||||
)
|
||||
|
||||
type HttpClient struct {
|
||||
host string
|
||||
port string
|
||||
apiKey string
|
||||
}
|
||||
|
||||
func NewHttpClient(host, port, apiKey string) *HttpClient {
|
||||
return &HttpClient{
|
||||
host: host,
|
||||
port: port,
|
||||
apiKey: apiKey,
|
||||
}
|
||||
}
|
||||
|
||||
func (client *HttpClient) parseJson(resp *http.Response, data []byte) (map[string]interface{}, error) {
|
||||
// 尝试解析为 JSON 对象
|
||||
var dataJson map[string]interface{}
|
||||
if err := json.Unmarshal(data, &dataJson); err != nil {
|
||||
// 如果解析为 JSON 对象失败,检查是否是布尔值
|
||||
var booleanValue bool
|
||||
if err := json.Unmarshal(data, &booleanValue); err == nil {
|
||||
// 如果是布尔值,包装成一个 map 返回
|
||||
return map[string]interface{}{"success": booleanValue}, nil
|
||||
}
|
||||
// 如果既不是 JSON 对象也不是布尔值,返回错误
|
||||
return nil, fmt.Errorf("invalid JSON response: %s", string(data))
|
||||
}
|
||||
|
||||
// 检查 HTTP 状态码
|
||||
if resp.StatusCode != http.StatusOK {
|
||||
errMessage, _ := dataJson["detail"].(string) // 如果没有 "detail",默认为空字符串
|
||||
dataJson["statusCode"] = resp.StatusCode
|
||||
dataJson["error"] = errMessage
|
||||
return dataJson, fmt.Errorf("HTTP error: %d - %s", resp.StatusCode, errMessage)
|
||||
}
|
||||
|
||||
return dataJson, nil
|
||||
}
|
||||
|
||||
func (client *HttpClient) httpRequest(method, path string, headers map[string]string, requestData []byte) (map[string]interface{}, error) {
|
||||
var url string
|
||||
if client.port == "" {
|
||||
url = "http://" + client.host + path
|
||||
} else {
|
||||
url = fmt.Sprintf("%s://%s:%s%s", "http", client.host, client.port, path)
|
||||
}
|
||||
|
||||
req, err := http.NewRequest(method, url, bytes.NewBuffer(requestData))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
for key, value := range headers {
|
||||
req.Header.Set(key, value)
|
||||
}
|
||||
|
||||
clientResponse, err := http.DefaultClient.Do(req)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer clientResponse.Body.Close()
|
||||
|
||||
body, err := ioutil.ReadAll(clientResponse.Body)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return client.parseJson(clientResponse, body)
|
||||
}
|
||||
|
||||
func (client *HttpClient) Get(path string) (map[string]interface{}, error) {
|
||||
headers := map[string]string{
|
||||
"Accept": "application/json",
|
||||
}
|
||||
if client.apiKey != "" {
|
||||
headers["X-API-KEY"] = client.apiKey
|
||||
}
|
||||
return client.httpRequest("GET", path, headers, nil)
|
||||
}
|
||||
|
||||
func (client *HttpClient) Post(path string, data interface{}) (map[string]interface{}, error) {
|
||||
headers := map[string]string{
|
||||
"Content-Type": "application/json",
|
||||
}
|
||||
if client.apiKey != "" {
|
||||
headers["X-API-KEY"] = client.apiKey
|
||||
}
|
||||
|
||||
jsonData, err := json.Marshal(data)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
fmt.Println("POST 请求的数据:", string(jsonData))
|
||||
|
||||
response, err := client.httpRequest("POST", path, headers, jsonData)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
fmt.Println("POST 响应的数据:", response)
|
||||
return response, nil
|
||||
}
|
||||
func (client *HttpClient) WalletStatus(walletName string) (map[string]interface{}, error) {
|
||||
path := fmt.Sprintf("/wallets/%s", walletName)
|
||||
return client.Get(path)
|
||||
}
|
||||
|
||||
func (client *HttpClient) UnlockWallet(walletName, password, mnemonicPassphrase string) (map[string]interface{}, error) {
|
||||
path := fmt.Sprintf("/wallets/%s/unlock", walletName)
|
||||
data := map[string]string{"password": password}
|
||||
if mnemonicPassphrase != "" {
|
||||
data["mnemonicPassphrase"] = mnemonicPassphrase
|
||||
}
|
||||
return client.Post(path, data)
|
||||
}
|
||||
|
||||
func (client *HttpClient) BuildUnsignedTx(fromPubKey string, destinations []interface{}) (map[string]interface{}, error) {
|
||||
path := "/transactions/build"
|
||||
data := map[string]interface{}{
|
||||
"fromPublicKey": fromPubKey,
|
||||
"destinations": destinations,
|
||||
}
|
||||
return client.Post(path, data)
|
||||
}
|
||||
|
||||
func (client *HttpClient) SelfClique() (map[string]interface{}, error) {
|
||||
path := "/infos/self-clique"
|
||||
return client.Get(path)
|
||||
}
|
||||
|
||||
func (client *HttpClient) GetBlockHash(fromGroup uint32, toGroup uint32, height uint32) (string, error) {
|
||||
// 构建请求路径
|
||||
path := fmt.Sprintf("/blockflow/hashes?fromGroup=%d&toGroup=%d&height=%d", fromGroup, toGroup, height)
|
||||
|
||||
// 调用客户端的 Get 方法
|
||||
result, err := client.Get(path)
|
||||
if err != nil {
|
||||
fmt.Println("获取hash失败:", err)
|
||||
return "", err
|
||||
}
|
||||
|
||||
// 断言 result 是 map[string]interface{}
|
||||
data := result
|
||||
|
||||
// 获取 headers 字段并断言为 []interface{}
|
||||
headers, ok := data["headers"].([]interface{})
|
||||
if !ok {
|
||||
fmt.Println("headers 字段格式不正确")
|
||||
return "", errors.New("headers 字段格式不正确")
|
||||
}
|
||||
|
||||
// 转换为字符串切片
|
||||
var headerStrings []string
|
||||
for _, header := range headers {
|
||||
if str, ok := header.(string); ok {
|
||||
headerStrings = append(headerStrings, str)
|
||||
} else {
|
||||
fmt.Println("headers 中存在非字符串类型数据")
|
||||
return "", errors.New("headers 中存在非字符串类型数据")
|
||||
}
|
||||
}
|
||||
|
||||
// 如果只需要第一个字符串,返回它
|
||||
if len(headerStrings) > 0 {
|
||||
return headerStrings[0], nil
|
||||
}
|
||||
|
||||
// 如果 headers 是空的,返回空字符串
|
||||
return "", nil
|
||||
}
|
||||
|
||||
func (client *HttpClient) CheckBlk(hash string) bool {
|
||||
path := fmt.Sprintf("/blockflow/is-block-in-main-chain?blockHash=%s", hash)
|
||||
result, err := client.Get(path)
|
||||
if err != nil {
|
||||
fmt.Println("获取hash失败:", err)
|
||||
return false
|
||||
}
|
||||
// 从返回结果中提取布尔值
|
||||
if success, ok := result["success"].(bool); ok {
|
||||
return success
|
||||
}
|
||||
// 如果结果不包含布尔值或格式不对
|
||||
fmt.Println("返回的结果格式不正确:", result)
|
||||
return false
|
||||
}
|
||||
|
||||
type Block struct {
|
||||
ChainFrom int `json:"chainFrom"`
|
||||
ChainTo int `json:"chainTo"`
|
||||
DepStateHash string `json:"depStateHash"`
|
||||
Deps []string `json:"deps"`
|
||||
GhostUncles interface{} `json:"ghostUncles"`
|
||||
Hash string `json:"hash"`
|
||||
Height int64 `json:"height"`
|
||||
Nonce string `json:"nonce"`
|
||||
Target string `json:"target"`
|
||||
Timestamp float64 `json:"timestamp"`
|
||||
Transactions []TxDetail `json:"transactions"`
|
||||
TxsHash string `json:"txsHash"`
|
||||
Version int `json:"version"`
|
||||
}
|
||||
|
||||
type TxDetail struct {
|
||||
Unsigned UnsignedTx `json:"unsigned"`
|
||||
}
|
||||
|
||||
type UnsignedTx struct {
|
||||
Inputs []Input `json:"inputs"`
|
||||
FixedOutputs []FixedOutput `json:"fixedOutputs"`
|
||||
}
|
||||
type Input struct {
|
||||
}
|
||||
type FixedOutput struct {
|
||||
Address string `json:"address"`
|
||||
AttoAlphAmount string `json:"attoAlphAmount"`
|
||||
Hint float64 `json:"hint"`
|
||||
Key string `json:"key"`
|
||||
LockTime int64 `json:"lockTime"`
|
||||
}
|
||||
|
||||
func (client *HttpClient) GetBlcokInfo(hash string) Block {
|
||||
path := fmt.Sprintf("/blockflow/blocks/%s", hash)
|
||||
result, err := client.Get(path)
|
||||
if err != nil {
|
||||
fmt.Println("获取区块信息失败:", err)
|
||||
return Block{}
|
||||
} // 将 map[string]interface{} 转换为 JSON 字符串
|
||||
jsonData, err := json.Marshal(result)
|
||||
if err != nil {
|
||||
fmt.Println("转换为 JSON 字符串失败:", err)
|
||||
return Block{}
|
||||
}
|
||||
|
||||
var blockInfo Block
|
||||
err = json.Unmarshal(jsonData, &blockInfo)
|
||||
if err != nil {
|
||||
fmt.Println("解析失败:", err)
|
||||
return Block{}
|
||||
}
|
||||
return blockInfo
|
||||
}
|
||||
|
||||
// func (client *HttpClient) GetBlockCount(fromGroup uint32, toGroup uint32) (int, error) {
|
||||
|
||||
// }
|
||||
|
||||
func (client *HttpClient) ChangeActiveAddress(walletName string, address string) (map[string]interface{}, error) {
|
||||
path := fmt.Sprintf("/wallets/%s/change-active-address", walletName)
|
||||
data := map[string]interface{}{
|
||||
"address": address,
|
||||
}
|
||||
return client.Post(path, data)
|
||||
}
|
||||
|
||||
func (client *HttpClient) SignTx(walletName string, txId string) (map[string]interface{}, error) {
|
||||
path := fmt.Sprintf("/wallets/%s/sign", walletName)
|
||||
data := map[string]interface{}{
|
||||
"data": txId,
|
||||
}
|
||||
return client.Post(path, data)
|
||||
}
|
||||
|
||||
func (client *HttpClient) GetAddressInfo(walletName string, address string) (map[string]interface{}, error) {
|
||||
path := fmt.Sprintf("/wallets/%s/addresses/%s", walletName, address)
|
||||
return client.Get(path)
|
||||
}
|
||||
|
||||
func (client *HttpClient) SweepActiveAddress(walletName string, toAddress string) (map[string]interface{}, error) {
|
||||
path := fmt.Sprintf("/wallets/%s/sweep-active-address", walletName)
|
||||
data := map[string]interface{}{
|
||||
"toAddress": toAddress,
|
||||
}
|
||||
return client.Post(path, data)
|
||||
}
|
||||
|
||||
func (client *HttpClient) CheckAccount(coin string, account string) bool {
|
||||
path := "/api/pool/checkAccount"
|
||||
data := map[string]interface{}{
|
||||
"coin": coin,
|
||||
"ma": account,
|
||||
}
|
||||
result, err := client.Post(path, data)
|
||||
if err != nil {
|
||||
fmt.Println("校验挖矿账号失败:", err)
|
||||
return false
|
||||
}
|
||||
|
||||
// 检查返回值中的 "success" 字段
|
||||
success, ok := result["success"].(bool)
|
||||
if !ok {
|
||||
fmt.Println("响应格式错误或 success 字段不存在:", result)
|
||||
return false
|
||||
}
|
||||
return success
|
||||
}
|
|
@ -0,0 +1,89 @@
|
|||
// coin.go
|
||||
package coin
|
||||
|
||||
import (
|
||||
"net"
|
||||
"pool/internal/db"
|
||||
|
||||
"pool/internal/gbt/alph/http"
|
||||
"pool/internal/utility"
|
||||
|
||||
"github.com/btcsuite/btcd/rpcclient"
|
||||
kaspad "github.com/kaspanet/kaspad/infrastructure/network/rpcclient"
|
||||
"github.com/redis/go-redis/v9"
|
||||
"github.com/zeromq/goczmq"
|
||||
"go.uber.org/zap"
|
||||
"gopkg.in/natefinch/lumberjack.v2"
|
||||
)
|
||||
|
||||
type RpcConfig struct {
|
||||
Host string `json:"host"`
|
||||
Port string `json:"port"`
|
||||
ApiHost string `json:"apiHost"`
|
||||
ApiPort string `json:"apiPort"`
|
||||
ApiKey string `json:"apiKey"`
|
||||
Testnet string `json:"testnet"`
|
||||
Type string `json:"type"`
|
||||
User string `json:"user"`
|
||||
Pass string `json:"pass"`
|
||||
ZmqSub string `json:"zmqsub"`
|
||||
Timeout int `json:"timeout"`
|
||||
}
|
||||
|
||||
type ZmqConfig struct {
|
||||
Pub string `json:"pub"`
|
||||
Sub string `json:"sub"`
|
||||
}
|
||||
|
||||
type ProfitConfig struct {
|
||||
Push string `json:"push"`
|
||||
}
|
||||
|
||||
type GbtConfig struct {
|
||||
Rpc RpcConfig `json:"rpc"`
|
||||
Zmq ZmqConfig `json:"zmq"`
|
||||
Redis utility.RedisConfig `json:"redis"`
|
||||
Profit ProfitConfig `json:"profit"`
|
||||
Zaplog zap.Config `json:"zap"`
|
||||
Logrotae utility.LogRotateConfig `json:"logrotate"`
|
||||
}
|
||||
|
||||
type GbtContext struct {
|
||||
DbCtx *db.DbContext
|
||||
|
||||
NodeSubCh *goczmq.Sock
|
||||
|
||||
PubCh *goczmq.Sock
|
||||
SubCh *goczmq.Sock
|
||||
|
||||
PushCh *goczmq.Sock
|
||||
|
||||
Started bool
|
||||
Config GbtConfig
|
||||
Client *rpcclient.Client
|
||||
ClientAlph *net.Conn
|
||||
ClientAlphApi *http.HttpClient
|
||||
ClientEnx *kaspad.RPCClient
|
||||
ExitNotifyChan chan bool
|
||||
ExitGbtChan chan bool
|
||||
ExitBlockChan chan bool
|
||||
|
||||
//AlivingChan chan bool
|
||||
FlagAliving int32
|
||||
FlagAlivingExit int32
|
||||
|
||||
Log *zap.Logger
|
||||
LogR *lumberjack.Logger
|
||||
|
||||
RedisClient *redis.Client
|
||||
|
||||
Coin string
|
||||
|
||||
MinerAddrs []string
|
||||
MinerAddrIndex int
|
||||
|
||||
/*Blocks int64
|
||||
|
||||
Reward float64
|
||||
Fee float64*/
|
||||
}
|
|
@ -0,0 +1,273 @@
|
|||
// dbif.go
|
||||
package dbif
|
||||
|
||||
import (
|
||||
"pool/internal/db"
|
||||
"pool/internal/gbt/coin"
|
||||
"time"
|
||||
)
|
||||
|
||||
func NotifyBlkDetailSuccess(gbt *coin.GbtContext, height int64, hash string, nonce string, subidx int64) {
|
||||
var msg db.BlkDetail_db_msg
|
||||
msg.Id = 0
|
||||
msg.Msg = "blk_detail"
|
||||
msg.Date = time.Now()
|
||||
msg.MinerType = gbt.Coin
|
||||
msg.Height = height
|
||||
msg.Hash = hash
|
||||
msg.Success = 1
|
||||
msg.Nonce = nonce
|
||||
msg.SubIdx = subidx
|
||||
|
||||
//gbt.DbCtx.BlkDetail_ch <- msg
|
||||
db.Save_blk_detail(gbt.DbCtx, &msg)
|
||||
}
|
||||
|
||||
func NotifyAlphBlkDetailSuccess(gbt *coin.GbtContext, fromGroup uint32, toGroup uint32, height int64, hash string, nonce string, subidx int64) {
|
||||
var msg db.BlkDetail_db_msg
|
||||
msg.Id = 0
|
||||
msg.Msg = "blk_detail"
|
||||
msg.Date = time.Now()
|
||||
msg.MinerType = gbt.Coin
|
||||
msg.FromGroup = fromGroup
|
||||
msg.ToGroup = toGroup
|
||||
msg.Height = height
|
||||
msg.Hash = hash
|
||||
msg.Success = 1
|
||||
msg.Nonce = nonce
|
||||
msg.SubIdx = subidx
|
||||
|
||||
//gbt.DbCtx.BlkDetail_ch <- msg
|
||||
db.Save_blk_detail(gbt.DbCtx, &msg)
|
||||
}
|
||||
|
||||
/*func NotifyMinerSuccess(gbt *coin.GbtContext, user string, miner string, minerid string, height int64, hash string, nonce string, subidx int64, reward float64, fee float64) {
|
||||
var msg db.Miner_db_msg
|
||||
msg.Id = 0
|
||||
msg.Msg = "miner"
|
||||
msg.Date = time.Now()
|
||||
msg.MinerType = gbt.Coin
|
||||
|
||||
msg.User = user
|
||||
msg.Miner = miner
|
||||
msg.Index = minerid
|
||||
|
||||
msg.Height = height
|
||||
msg.Hash = hash
|
||||
msg.Success = 1
|
||||
msg.Nonce = nonce
|
||||
msg.SubIdx = subidx
|
||||
|
||||
msg.Reward = reward
|
||||
msg.Fee = fee
|
||||
|
||||
gbt.DbCtx.Miner_ch <- msg
|
||||
}*/
|
||||
|
||||
/*func NotifyUsersBlkStatsSuccess(gbt *coin.GbtContext, user string, height int64, hash string, nonce string, subidx int64, reward float64, fee float64) {
|
||||
var msg db.UsersBlkStats_db_msg
|
||||
msg.Id = 0
|
||||
msg.Msg = "users_blkstats"
|
||||
msg.Date = time.Now()
|
||||
msg.MinerType = gbt.Coin
|
||||
|
||||
msg.User = user
|
||||
|
||||
msg.Height = height
|
||||
msg.Hash = hash
|
||||
msg.Success = 1
|
||||
msg.Nonce = nonce
|
||||
msg.SubIdx = subidx
|
||||
|
||||
msg.Reward = reward
|
||||
msg.Fee = fee
|
||||
|
||||
gbt.DbCtx.UsersBlkStats_ch <- msg
|
||||
}*/
|
||||
|
||||
func NotifyPoolBlkStatsSuccess(gbt *coin.GbtContext, height int64, hash string, nonce string, subidx int64, reward float64, fee float64) {
|
||||
var msg db.PoolBlkStats_db_msg
|
||||
msg.Id = 0
|
||||
msg.Msg = "pool_blkstats"
|
||||
msg.Date = time.Now()
|
||||
msg.MinerType = gbt.Coin
|
||||
|
||||
msg.Height = height
|
||||
msg.Hash = hash
|
||||
msg.Success = 1
|
||||
msg.Nonce = nonce
|
||||
msg.SubIdx = subidx
|
||||
msg.Submit = ""
|
||||
|
||||
msg.Reward = reward
|
||||
msg.Fee = fee
|
||||
|
||||
gbt.DbCtx.PoolBlkStats_ch <- msg
|
||||
}
|
||||
|
||||
func AlphNotifyPoolBlkStatsSuccess(gbt *coin.GbtContext, fromGroup uint32, toGroup uint32, height int64, hash string, nonce string, subidx int64, reward float64, fee float64) {
|
||||
var msg db.PoolBlkStats_db_msg
|
||||
msg.Id = 0
|
||||
msg.Msg = "pool_blkstats"
|
||||
msg.Date = time.Now()
|
||||
msg.MinerType = gbt.Coin
|
||||
msg.FromGroup = fromGroup
|
||||
msg.ToGroup = toGroup
|
||||
msg.Height = height
|
||||
msg.Hash = hash
|
||||
msg.Success = 1
|
||||
msg.Nonce = nonce
|
||||
msg.SubIdx = subidx
|
||||
msg.Submit = ""
|
||||
|
||||
msg.Reward = reward
|
||||
msg.Fee = fee
|
||||
|
||||
gbt.DbCtx.PoolBlkStats_ch <- msg
|
||||
}
|
||||
|
||||
/*func NotifyMinerSubmitResult(gbt *coin.GbtContext, user string, miner string, minerid string, height int64, hash string, result string, nonce string, subidx int64) {
|
||||
var msg db.Miner_db_msg
|
||||
msg.Id = 0
|
||||
msg.Msg = "miner"
|
||||
msg.Date = time.Now()
|
||||
msg.MinerType = gbt.Coin
|
||||
|
||||
msg.User = user
|
||||
msg.Miner = miner
|
||||
msg.Index = minerid
|
||||
|
||||
msg.Height = height
|
||||
msg.Hash = hash
|
||||
msg.Submit = result
|
||||
msg.Nonce = nonce
|
||||
msg.SubIdx = subidx
|
||||
|
||||
gbt.DbCtx.Miner_ch <- msg
|
||||
}*/
|
||||
|
||||
/*func NotifyUsersBlkStatsSubmitResult(gbt *coin.GbtContext, user string, height int64, hash string, result string, nonce string, subidx int64) {
|
||||
var msg db.UsersBlkStats_db_msg
|
||||
msg.Id = 0
|
||||
msg.Msg = "users_blkstats"
|
||||
msg.Date = time.Now()
|
||||
msg.MinerType = gbt.Coin
|
||||
|
||||
msg.User = user
|
||||
|
||||
msg.Height = height
|
||||
msg.Hash = hash
|
||||
msg.Submit = result
|
||||
msg.Nonce = nonce
|
||||
msg.SubIdx = subidx
|
||||
|
||||
gbt.DbCtx.UsersBlkStats_ch <- msg
|
||||
}*/
|
||||
|
||||
func NotifyPoolBlkStatsSubmitResult(gbt *coin.GbtContext, height int64, hash string, result string, nonce string, subidx int64) {
|
||||
var msg db.PoolBlkStats_db_msg
|
||||
msg.Id = 0
|
||||
msg.Msg = "pool_blkstats"
|
||||
msg.Date = time.Now()
|
||||
msg.MinerType = gbt.Coin
|
||||
|
||||
msg.Height = height
|
||||
msg.Hash = hash
|
||||
msg.Submit = result
|
||||
msg.Nonce = nonce
|
||||
msg.SubIdx = subidx
|
||||
|
||||
gbt.DbCtx.PoolBlkStats_ch <- msg
|
||||
}
|
||||
|
||||
func NotifyAlphPoolBlkStatsSubmitResult(gbt *coin.GbtContext, fromGrouop uint32, toGroup uint32, height int64, hash string, nonce string, subidx int64) {
|
||||
var msg db.PoolBlkStats_db_msg
|
||||
msg.Id = 0
|
||||
msg.Msg = "pool_blkstats"
|
||||
msg.Date = time.Now()
|
||||
msg.MinerType = gbt.Coin
|
||||
msg.FromGroup = fromGrouop
|
||||
msg.ToGroup = toGroup
|
||||
msg.Height = height
|
||||
msg.Hash = hash
|
||||
// msg.Submit = result
|
||||
msg.Nonce = nonce
|
||||
msg.SubIdx = subidx
|
||||
|
||||
gbt.DbCtx.PoolBlkStats_ch <- msg
|
||||
}
|
||||
|
||||
func NotifyBlkNewDb(gbt *coin.GbtContext, height int64, hash string, success bool, nonce string, subidx int64) {
|
||||
var msg db.BlkNew_db_msg
|
||||
msg.Id = 0
|
||||
msg.Msg = "blk_new"
|
||||
msg.Date = time.Now()
|
||||
msg.MinerType = gbt.Coin
|
||||
msg.Height = height
|
||||
msg.Hash = hash
|
||||
if success {
|
||||
msg.Success = 1
|
||||
} else {
|
||||
msg.Success = 0
|
||||
}
|
||||
msg.Nonce = nonce
|
||||
msg.SubIdx = subidx
|
||||
|
||||
gbt.DbCtx.BlkNew_ch <- msg
|
||||
}
|
||||
|
||||
func NotifyAlphBlkNewDb(gbt *coin.GbtContext, fromGroup uint32, toGroup uint32, height int64, hash string, success bool, nonce string, subidx int64) {
|
||||
var msg db.BlkNew_db_msg
|
||||
msg.Id = 0
|
||||
msg.Msg = "blk_new"
|
||||
msg.Date = time.Now()
|
||||
msg.MinerType = gbt.Coin
|
||||
msg.FromGroup = fromGroup
|
||||
msg.ToGroup = toGroup
|
||||
msg.Height = height
|
||||
msg.Hash = hash
|
||||
if success {
|
||||
msg.Success = 1
|
||||
} else {
|
||||
msg.Success = 0
|
||||
}
|
||||
msg.Nonce = nonce
|
||||
msg.SubIdx = subidx
|
||||
|
||||
gbt.DbCtx.BlkNew_ch <- msg
|
||||
}
|
||||
|
||||
/*func NotifyBlockStat(gbt *coin.GbtContext, user string, miner string, minerid string, reward float64, fee float64) {
|
||||
var miners_msg db.Miners_db_msg
|
||||
miners_msg.Id = 0
|
||||
miners_msg.Msg = "miners"
|
||||
miners_msg.Date = time.Now()
|
||||
miners_msg.MinerType = gbt.Coin
|
||||
|
||||
miners_msg.User = user
|
||||
miners_msg.Miner = miner
|
||||
miners_msg.Index = minerid
|
||||
|
||||
gbt.DbCtx.Miners_ch <- miners_msg
|
||||
|
||||
var users_msg db.Users_db_msg
|
||||
users_msg.Id = 0
|
||||
users_msg.Msg = "users"
|
||||
users_msg.Date = time.Now()
|
||||
users_msg.MinerType = gbt.Coin
|
||||
|
||||
users_msg.User = user
|
||||
|
||||
gbt.DbCtx.Users_ch <- users_msg
|
||||
|
||||
var pool_msg db.Pool_db_msg
|
||||
pool_msg.Id = 0
|
||||
pool_msg.Msg = "pool"
|
||||
pool_msg.Date = time.Now()
|
||||
pool_msg.MinerType = gbt.Coin
|
||||
|
||||
pool_msg.Reward = reward
|
||||
pool_msg.Fee = fee
|
||||
|
||||
gbt.DbCtx.Pool_ch <- pool_msg
|
||||
}*/
|
|
@ -0,0 +1,867 @@
|
|||
// dgb.go
|
||||
package dgb
|
||||
|
||||
import (
|
||||
"encoding/binary"
|
||||
"encoding/hex"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"log"
|
||||
"math"
|
||||
"sync/atomic"
|
||||
|
||||
//"pool/internal/cache"
|
||||
"pool/internal/db"
|
||||
"pool/internal/gbt/coin"
|
||||
"pool/internal/gbt/dbif"
|
||||
"pool/internal/msg"
|
||||
"pool/internal/utility"
|
||||
"time"
|
||||
|
||||
"database/sql"
|
||||
|
||||
"github.com/btcsuite/btcd/chaincfg/chainhash"
|
||||
"github.com/btcsuite/btcutil/base58"
|
||||
|
||||
//"github.com/btcsuite/btcd/rpcclient"
|
||||
_ "github.com/mattn/go-sqlite3"
|
||||
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
const GBT_DGB_VERSION string = "dgb v3.0l"
|
||||
|
||||
type DgbAddrConfig struct {
|
||||
Addr string `json:"addr"`
|
||||
}
|
||||
|
||||
type DgbConfig struct {
|
||||
Dgb DgbAddrConfig `json:"dgb"`
|
||||
}
|
||||
|
||||
type GbtDgbContext struct {
|
||||
Config DgbConfig
|
||||
GbtCtx *coin.GbtContext
|
||||
|
||||
last_time time.Time
|
||||
last_gbt msg.GbtMsg
|
||||
|
||||
Submits float64
|
||||
|
||||
addressIndex int
|
||||
|
||||
new_block_chan chan int
|
||||
new_block_index int
|
||||
|
||||
last_height uint32
|
||||
}
|
||||
|
||||
var logg *zap.Logger
|
||||
var GbtDgbCtx GbtDgbContext
|
||||
|
||||
type BlockCheckData struct {
|
||||
Height int
|
||||
Nonce string
|
||||
User string
|
||||
Miner string
|
||||
MinerId string
|
||||
Hash string
|
||||
SubIdx int
|
||||
}
|
||||
|
||||
type PushBlkNewMsg struct {
|
||||
Coin string `json:"coin"`
|
||||
Height int `json:"height"`
|
||||
Nonce string `json:"nonce"`
|
||||
}
|
||||
|
||||
func update_block_confirm(gbt *GbtDgbContext) {
|
||||
db, err := sql.Open("sqlite3", "./blocks.db")
|
||||
if err != nil {
|
||||
//log.Printf("Error opening database: %v", err)
|
||||
logg.Error("[gbt]", zap.String("Error opening database", err.Error()))
|
||||
return
|
||||
}
|
||||
defer db.Close()
|
||||
|
||||
query := "SELECT user,miner,minerid,height,nonce,hash,subidx FROM blocks WHERE checked=0 AND created_at >= datetime('now', '-30 minutes') order by id desc limit 2"
|
||||
rows, err := db.Query(query)
|
||||
if err != nil {
|
||||
//log.Printf("Error executing query from blocks: %v", err)
|
||||
logg.Error("[gbt]", zap.String("Error executing query from blocks:", err.Error()))
|
||||
return
|
||||
}
|
||||
defer rows.Close()
|
||||
|
||||
var blocks []BlockCheckData
|
||||
for rows.Next() {
|
||||
var height int
|
||||
var nonce string
|
||||
var user string
|
||||
var miner string
|
||||
var minerid string
|
||||
var hash string
|
||||
var subidx int
|
||||
if err := rows.Scan(&user, &miner, &minerid, &height, &nonce, &hash, &subidx); err != nil {
|
||||
//log.Printf("Error scanning row in blocks: %v", err)
|
||||
logg.Error("[gbt]", zap.String("Error scanning row in blocks:", err.Error()))
|
||||
return
|
||||
}
|
||||
var blockdata BlockCheckData
|
||||
blockdata.Height = height
|
||||
blockdata.Nonce = nonce
|
||||
blockdata.User = user
|
||||
blockdata.Miner = miner
|
||||
blockdata.MinerId = minerid
|
||||
blockdata.Hash = hash
|
||||
blockdata.SubIdx = subidx
|
||||
|
||||
blocks = append(blocks, blockdata)
|
||||
//fmt.Printf("blocks - Height: %d, Nonce: %d\n", height, nonce)
|
||||
//log.Printf("update block height %d nonce %s, subidx %d, user %s", height, nonce, subidx, user+"."+miner+"_"+minerid)
|
||||
}
|
||||
for _, block := range blocks {
|
||||
block_hash, err := gbt.GbtCtx.Client.GetBlockHash(int64(block.Height))
|
||||
if err != nil {
|
||||
logg.Info("[gbt]", zap.String("GetBlockHash ", err.Error()))
|
||||
continue
|
||||
}
|
||||
rawmsgs := make([]json.RawMessage, 1)
|
||||
param_str := `"` + block_hash.String() + `"`
|
||||
rawmsgs[0] = json.RawMessage(param_str)
|
||||
result, err := gbt.GbtCtx.Client.RawRequest("getblockheader", rawmsgs)
|
||||
if err != nil {
|
||||
//log.Printf("getblockheader %s", err.Error())
|
||||
logg.Error("[gbt]", zap.String("getblockheader", err.Error()))
|
||||
continue
|
||||
}
|
||||
//log.Printf("getblockheader %d %s:%v", block.Height, block_hash, result)
|
||||
var blockHeader msg.GetBlockHeaderMsgInt
|
||||
err = json.Unmarshal(result, &blockHeader)
|
||||
if err != nil {
|
||||
//log.Printf("getblockheader Unmarshal %s", err.Error())
|
||||
logg.Error("[gbt]", zap.String("getblockheader Unmarshal ", fmt.Sprint(block.Height)+" "+err.Error()))
|
||||
continue
|
||||
}
|
||||
|
||||
rawmsgs_stats := make([]json.RawMessage, 1)
|
||||
rawmsgs_stats[0] = json.RawMessage(param_str)
|
||||
result_stats, err := gbt.GbtCtx.Client.RawRequest("getblockstats", rawmsgs_stats)
|
||||
if err != nil {
|
||||
//log.Printf("getblockstats %s", err.Error())
|
||||
logg.Error("[gbt]", zap.String("getblockstats", err.Error()))
|
||||
continue
|
||||
}
|
||||
//log.Printf("getblockheader %d %s:%v", block.Height, block_hash, result)
|
||||
var blockStats msg.GetBlockStatsMsg
|
||||
err = json.Unmarshal(result_stats, &blockStats)
|
||||
if err != nil {
|
||||
//log.Printf("getblockstats Unmarshal %s", err.Error())
|
||||
logg.Error("[gbt]", zap.String("getblockstats Unmarshal ", fmt.Sprint(block.Height)+" "+err.Error()))
|
||||
continue
|
||||
}
|
||||
|
||||
if blockHeader.Confirmations > 3 {
|
||||
//log.Printf("cmp block: %d %s vs %s %s", block.Height, block.Nonce, string(result), blockHeader.Nonce)
|
||||
//log.Printf("cmp block: %d %s %s_%s_%s vs %s\n", block.Height, block.Nonce, block.User, block.Miner, block.MinerId, blockHeader.Nonce)
|
||||
nonceb := utility.Uint32ToByteBig(blockHeader.Nonce)
|
||||
nonces := hex.EncodeToString(nonceb)
|
||||
if nonces == block.Nonce {
|
||||
|
||||
block_height := int64(block.Height)
|
||||
/*dbif.NotifyMinerSuccess(gbt.GbtCtx, block.User, block.Miner, block.MinerId, block_height, "", block.Nonce, int64(block.SubIdx), blockStats.Subsidy, blockStats.Totalfee)
|
||||
dbif.NotifyUsersBlkStatsSuccess(gbt.GbtCtx, block.User, block_height, "", block.Nonce, int64(block.SubIdx), blockStats.Subsidy, blockStats.Totalfee)*/
|
||||
dbif.NotifyPoolBlkStatsSuccess(gbt.GbtCtx, block_height, "", block.Nonce, int64(block.SubIdx), blockStats.Subsidy, blockStats.Totalfee)
|
||||
dbif.NotifyBlkDetailSuccess(gbt.GbtCtx, block_height, "", block.Nonce, int64(block.SubIdx))
|
||||
/*dbif.NotifyBlockStat(gbt.GbtCtx, block.User, block.Miner, block.MinerId, blockStats.Subsidy, blockStats.Totalfee)*/
|
||||
//dbif.NotifyBlkNewSuccess(gbt.GbtCtx, block_height, "", block.Nonce, -1)
|
||||
dbif.NotifyBlkNewDb(gbt.GbtCtx, block_height, block.Hash, true, block.Nonce, int64(block.SubIdx))
|
||||
|
||||
//gbt.GbtCtx.Blocks += 1
|
||||
//cache.StorePoolCache(gbt.GbtCtx.RedisClient, gbt.GbtCtx.Coin, "blocks", gbt.GbtCtx.Blocks)
|
||||
|
||||
//gbt.GbtCtx.Reward += blockStats.Subsidy
|
||||
//cache.StorePoolCache(gbt.GbtCtx.RedisClient, gbt.GbtCtx.Coin, "reward", gbt.GbtCtx.Reward)
|
||||
|
||||
//gbt.GbtCtx.Fee += blockStats.Totalfee
|
||||
//cache.StorePoolCache(gbt.GbtCtx.RedisClient, gbt.GbtCtx.Coin, "fee", gbt.GbtCtx.Fee)
|
||||
|
||||
/*var pushmsg PushBlkNewMsg
|
||||
pushmsg.Coin = gbt.GbtCtx.Coin
|
||||
pushmsg.Height = block.Height
|
||||
pushmsg.Nonce = block.Nonce
|
||||
|
||||
jsonData, err := json.Marshal(pushmsg)
|
||||
if err != nil {
|
||||
//log.Printf("Failed to marshal JSON: %v", err)
|
||||
logg.Error("[gbt]", zap.String("Failed to marshal JSON:", err.Error()))
|
||||
continue
|
||||
}
|
||||
if gbt.GbtCtx.PushCh == nil {
|
||||
gbt.GbtCtx.PushCh = utility.InitZmqPush(gbt.GbtCtx.Config.Profit.Push)
|
||||
}
|
||||
if gbt.GbtCtx.PushCh != nil {
|
||||
err = gbt.GbtCtx.PushCh.SendMessage([][]byte{[]byte("blk_new"), jsonData})
|
||||
if err != nil {
|
||||
//log.Printf("Failed to send data: %v", err)
|
||||
logg.Error("[gbt]", zap.String("Failed to SendMessage:", err.Error()))
|
||||
continue
|
||||
}
|
||||
}*/
|
||||
|
||||
updateSQL := `UPDATE blocks SET checked = 1 WHERE height = ? AND nonce = ? AND checked = 0`
|
||||
_, err = db.Exec(updateSQL, block.Height, block.Nonce)
|
||||
if err != nil {
|
||||
//log.Printf("Error updating blk_new: %v", err)
|
||||
logg.Error("[gbt]", zap.String("Error updating blk_new:", err.Error()))
|
||||
continue
|
||||
}
|
||||
//log.Printf("update block success: %d %s", block.Height, block.Nonce)
|
||||
logg.Warn("[gbt]", zap.String("update block success:", fmt.Sprint(block.Height)+" "+block.Nonce))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func get_gbt_msg(gbt *GbtDgbContext) []byte {
|
||||
rawmsgs := make([]json.RawMessage, 2)
|
||||
//rawmsgs[0] = json.RawMessage(`{"capabilities": ["coinbasetxn", "workid", "coinbase/append"],"rules":["segwit"]}`)
|
||||
rawmsgs[0] = json.RawMessage(`{"capabilities": ["coinbasetxn", "workid", "coinbase/append"]}`)
|
||||
param_str2 := `"` + "skein" + `"`
|
||||
if gbt.GbtCtx.Coin == "dgbq" {
|
||||
param_str2 = `"` + "qubit" + `"`
|
||||
} else if gbt.GbtCtx.Coin == "dgbo" {
|
||||
param_str2 = `"` + "odo" + `"`
|
||||
} else {
|
||||
}
|
||||
rawmsgs[1] = json.RawMessage(param_str2)
|
||||
result, err := gbt.GbtCtx.Client.RawRequest("getblocktemplate", rawmsgs)
|
||||
if err != nil {
|
||||
logg.Error("[gbt]", zap.String("getblocktemplate", err.Error()))
|
||||
return nil
|
||||
}
|
||||
|
||||
var rxmsg msg.GbtMsg
|
||||
err = json.Unmarshal(result, &rxmsg)
|
||||
if err != nil {
|
||||
logg.Error("[gbt]", zap.String("getblocktemplate", err.Error()))
|
||||
return nil
|
||||
}
|
||||
|
||||
for i := 0; i < len(*rxmsg.Transactions); i++ {
|
||||
var ts msg.GbtTransaction
|
||||
err = json.Unmarshal((*rxmsg.Transactions)[i], &ts)
|
||||
if err != nil {
|
||||
logg.Error("[gbt]", zap.String("Unmarshal Transactions", err.Error()))
|
||||
continue
|
||||
}
|
||||
if i >= 500 {
|
||||
rxmsg.Coinbasevalue = rxmsg.Coinbasevalue - uint64(ts.Fee)
|
||||
}
|
||||
//logg.Debug("[gbt]", zap.String("ts.Hash", ts.Hash))
|
||||
}
|
||||
if len(*rxmsg.Transactions) >= 500 {
|
||||
tss := (*rxmsg.Transactions)[:500]
|
||||
rxmsg.Transactions = &tss
|
||||
}
|
||||
|
||||
if rxmsg.Previousblockhash == gbt.last_gbt.Previousblockhash {
|
||||
if time.Now().Sub(gbt.last_time) < time.Duration(gbt.GbtCtx.Config.Rpc.Timeout)*time.Millisecond {
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
gbtstr := fmt.Sprintf("version %x, prev %s, coinbase %x, longpoolid %s, target %s time %x, bits %s, height %d", rxmsg.Version, rxmsg.Previousblockhash, rxmsg.Coinbasevalue, rxmsg.Longpollid, rxmsg.Target, rxmsg.Curtime, rxmsg.Bits, rxmsg.Height)
|
||||
logg.Debug("[gbt]", zap.String(" ", gbtstr))
|
||||
|
||||
body := new_job_from_gbt(gbt, &rxmsg)
|
||||
|
||||
gbt.last_gbt = rxmsg
|
||||
|
||||
gbt.last_time = time.Now()
|
||||
|
||||
return body
|
||||
}
|
||||
|
||||
func gbt_notify_running(gbt *GbtDgbContext) {
|
||||
for {
|
||||
if !gbt.GbtCtx.Started {
|
||||
break
|
||||
}
|
||||
if gbt.GbtCtx.NodeSubCh == nil {
|
||||
gbt.GbtCtx.NodeSubCh = utility.InitZmqSub(gbt.GbtCtx.Config.Rpc.ZmqSub, utility.BITCOIND_ZMQ_HASHBLOCK)
|
||||
}
|
||||
if gbt.GbtCtx.NodeSubCh != nil {
|
||||
cmsg_sub, err := gbt.GbtCtx.NodeSubCh.RecvMessage()
|
||||
if err != nil {
|
||||
if !gbt.GbtCtx.Started {
|
||||
break
|
||||
}
|
||||
gbt.GbtCtx.NodeSubCh.SetSubscribe(utility.BITCOIND_ZMQ_HASHBLOCK)
|
||||
gbt.GbtCtx.NodeSubCh.Connect(gbt.GbtCtx.Config.Rpc.ZmqSub)
|
||||
continue
|
||||
}
|
||||
if len(cmsg_sub) >= 2 {
|
||||
if string(cmsg_sub[0]) == "hashblock" {
|
||||
GbtDgbCtx.new_block_index = GbtDgbCtx.new_block_index + 1
|
||||
//log.Println("gbt_notify_running", hex.EncodeToString(cmsg_sub[1]), GbtDgbCtx.new_block_index)
|
||||
gbt.new_block_chan <- GbtDgbCtx.new_block_index
|
||||
|
||||
}
|
||||
}
|
||||
} else {
|
||||
logg.Error("[gbt]", zap.String("notify", "NodeSubCh fail!"))
|
||||
time.Sleep(time.Duration(1) * time.Second)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func gbt_running(gbt *GbtDgbContext) {
|
||||
jobtopic := "job" + gbt.GbtCtx.Coin
|
||||
gbtmsg := get_gbt_msg(gbt)
|
||||
if gbtmsg != nil {
|
||||
if gbt.GbtCtx.PubCh == nil {
|
||||
gbt.GbtCtx.PubCh = utility.InitZmqPub(gbt.GbtCtx.Config.Zmq.Pub)
|
||||
}
|
||||
if gbt.GbtCtx.PubCh != nil {
|
||||
for trycnt := 0; trycnt < 3; trycnt++ {
|
||||
err := gbt.GbtCtx.PubCh.SendMessage([][]byte{[]byte(jobtopic), gbtmsg})
|
||||
if err != nil {
|
||||
if !gbt.GbtCtx.Started {
|
||||
return
|
||||
}
|
||||
//gbt.GbtCtx.PubCh.Bind(gbt.GbtCtx.Config.Zmq.Pub)
|
||||
logg.Warn("[gbt]", zap.String("job ", err.Error()))
|
||||
} else {
|
||||
//gbt.GbtCtx.PubCh.SendChan <- [][]byte{[]byte("jobdgb"), gbtmsg}
|
||||
logg.Warn("[gbt]", zap.String("job ", "sent"))
|
||||
break
|
||||
}
|
||||
}
|
||||
//gbt.GbtCtx.AlivingChan <- true
|
||||
atomic.StoreInt32(&(gbt.GbtCtx.FlagAliving), 1)
|
||||
} else {
|
||||
logg.Warn("[gbt]", zap.String("job ", "sent failed! PubCh nil"))
|
||||
}
|
||||
} else {
|
||||
atomic.StoreInt32(&(gbt.GbtCtx.FlagAliving), 1)
|
||||
}
|
||||
|
||||
timer := time.NewTimer(time.Duration(gbt.GbtCtx.Config.Rpc.Timeout) * time.Millisecond)
|
||||
defer timer.Stop()
|
||||
|
||||
for {
|
||||
if !gbt.GbtCtx.Started {
|
||||
break
|
||||
}
|
||||
|
||||
new_block_notify := false
|
||||
|
||||
select {
|
||||
case blk_idx := <-gbt.new_block_chan:
|
||||
log.Println("new block chan", blk_idx)
|
||||
new_block_notify = true
|
||||
if !timer.Stop() {
|
||||
<-timer.C
|
||||
}
|
||||
timer.Reset(time.Duration(gbt.GbtCtx.Config.Rpc.Timeout) * time.Millisecond)
|
||||
case <-gbt.GbtCtx.ExitGbtChan:
|
||||
logg.Error("[gbt]", zap.String("gbt", "exit"))
|
||||
return
|
||||
case <-time.After(time.Duration(gbt.GbtCtx.Config.Rpc.Timeout) * time.Millisecond):
|
||||
log.Println("poll gbt timeout")
|
||||
timer.Reset(time.Duration(gbt.GbtCtx.Config.Rpc.Timeout) * time.Millisecond)
|
||||
}
|
||||
/*if check_bestblockhash(gbt) {*/
|
||||
gbtmsg := get_gbt_msg(gbt)
|
||||
if gbtmsg != nil {
|
||||
//check_preblock(gbt, DbCtx)
|
||||
if gbt.GbtCtx.PubCh == nil {
|
||||
gbt.GbtCtx.PubCh = utility.InitZmqPub(gbt.GbtCtx.Config.Zmq.Pub)
|
||||
}
|
||||
if gbt.GbtCtx.PubCh != nil {
|
||||
for trycnt := 0; trycnt < 3; trycnt++ {
|
||||
err := gbt.GbtCtx.PubCh.SendMessage([][]byte{[]byte(jobtopic), gbtmsg})
|
||||
if err != nil {
|
||||
logg.Warn("[gbt]", zap.String("job ", err.Error()))
|
||||
continue
|
||||
} else {
|
||||
//gbt.GbtCtx.PubCh.SendChan <- [][]byte{[]byte("jobdgb"), gbtmsg}
|
||||
logg.Warn("[gbt]", zap.String("job ", "sent"))
|
||||
break
|
||||
}
|
||||
}
|
||||
//gbt.GbtCtx.AlivingChan <- true
|
||||
atomic.StoreInt32(&(gbt.GbtCtx.FlagAliving), 1)
|
||||
} else {
|
||||
logg.Warn("[gbt]", zap.String("job ", "sent failed! PubCh nil"))
|
||||
}
|
||||
} else {
|
||||
atomic.StoreInt32(&(gbt.GbtCtx.FlagAliving), 1)
|
||||
}
|
||||
|
||||
if new_block_notify {
|
||||
update_block_confirm(gbt)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func dgbInit(config *DgbConfig) {
|
||||
data, err := ioutil.ReadFile("gbt.conf")
|
||||
if err != nil {
|
||||
panic(err.Error())
|
||||
}
|
||||
if err = json.Unmarshal(data, &config); err != nil {
|
||||
panic(err.Error())
|
||||
}
|
||||
}
|
||||
|
||||
func Init(GbtCtx *coin.GbtContext, DbCtx *db.DbContext) {
|
||||
GbtDgbCtx.GbtCtx = GbtCtx
|
||||
GbtDgbCtx.last_height = 0
|
||||
|
||||
dgbInit(&GbtDgbCtx.Config)
|
||||
|
||||
GbtDgbCtx.last_time = time.Now()
|
||||
logg = GbtCtx.Log
|
||||
GbtDgbCtx.new_block_chan = make(chan int, 256)
|
||||
GbtDgbCtx.new_block_index = 0
|
||||
logg.Info("[gbt]", zap.String("gbt_dgb_version", GBT_DGB_VERSION))
|
||||
}
|
||||
|
||||
func Start() {
|
||||
go gbt_running(&GbtDgbCtx)
|
||||
go gbt_notify_running(&GbtDgbCtx)
|
||||
go submit_block_running(&GbtDgbCtx)
|
||||
}
|
||||
|
||||
func Stop() {
|
||||
defer close(GbtDgbCtx.new_block_chan)
|
||||
}
|
||||
|
||||
func new_block_into_db(block *GbtDgbContext, user string, miner string, minerid string, height int64, nonce string, hash string, subidx int64) bool {
|
||||
db, err := sql.Open("sqlite3", "./blocks.db")
|
||||
if err != nil {
|
||||
log.Printf("Error opening database: %v", err)
|
||||
return false
|
||||
}
|
||||
defer db.Close()
|
||||
|
||||
createTableSQL := `
|
||||
CREATE TABLE IF NOT EXISTS blocks (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
user TEXT NOT NULL,
|
||||
miner TEXT NOT NULL,
|
||||
minerid TEXT NOT NULL,
|
||||
height INTEGER,
|
||||
nonce TEXT NOT NULL,
|
||||
hash TEXT NOT NULL,
|
||||
subidx INTEGER,
|
||||
checked INTEGER,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||
);`
|
||||
_, err = db.Exec(createTableSQL)
|
||||
if err != nil {
|
||||
log.Printf("Error creating table: %v", err)
|
||||
return false
|
||||
}
|
||||
|
||||
insertSQL := `INSERT INTO blocks (user, miner, minerid, height, nonce, checked, hash, subidx) VALUES (?, ?, ?, ?, ?, ?, ?, ?)`
|
||||
_, err = db.Exec(insertSQL, user, miner, minerid, height, nonce, 0, hash, subidx)
|
||||
if err != nil {
|
||||
log.Printf("Error inserting data from blocks %s: %v", fmt.Sprint(height), err)
|
||||
return false
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
func submit_block_running(block *GbtDgbContext) {
|
||||
logg.Info("[block]", zap.String("submit_block_running", "Start."))
|
||||
blktopic := "blk" + block.GbtCtx.Coin
|
||||
for {
|
||||
if !block.GbtCtx.Started {
|
||||
break
|
||||
}
|
||||
if block.GbtCtx.SubCh == nil {
|
||||
block.GbtCtx.SubCh = utility.InitZmqSub(block.GbtCtx.Config.Zmq.Sub, blktopic)
|
||||
}
|
||||
if block.GbtCtx.SubCh != nil {
|
||||
cmsg_sub, err := block.GbtCtx.SubCh.RecvMessage()
|
||||
if err != nil {
|
||||
if !block.GbtCtx.Started {
|
||||
break
|
||||
}
|
||||
/*block.GbtCtx.SubCh.Destroy()
|
||||
block.GbtCtx.SubCh = nil*/
|
||||
time.Sleep(time.Duration(1) * time.Second)
|
||||
block.GbtCtx.SubCh.SetSubscribe("blk" + block.GbtCtx.Coin)
|
||||
block.GbtCtx.SubCh.Connect(block.GbtCtx.Config.Zmq.Sub)
|
||||
//block.GbtCtx.SubCh.SetMaxmsgsize(1024 * 1024 * 8)
|
||||
continue
|
||||
}
|
||||
|
||||
//log.Println(cmsg_sub, len(cmsg_sub), block.GbtCtx.SubCh)
|
||||
if len(cmsg_sub) >= 2 {
|
||||
if string(cmsg_sub[0]) == blktopic {
|
||||
cmsg := cmsg_sub[1]
|
||||
//block data
|
||||
msgb := make([]byte, len(cmsg)-16)
|
||||
copy(msgb, cmsg)
|
||||
|
||||
//height
|
||||
//heightb := make([]byte, 4)
|
||||
heightb, err := hex.DecodeString(string(cmsg[len(msgb) : len(msgb)+8]))
|
||||
if err != nil {
|
||||
//block.Consumer.MarkOffset(cmsg, "")
|
||||
logg.Error("[block]", zap.String("failed to decode height", err.Error()))
|
||||
continue
|
||||
}
|
||||
var height uint32 = utility.ByteToUint32(heightb)
|
||||
logg.Warn("[block]", zap.Uint32("height", height))
|
||||
|
||||
if height <= block.last_height {
|
||||
continue
|
||||
}
|
||||
block.last_height = height
|
||||
|
||||
//index
|
||||
//indexb := make([]byte, 4)
|
||||
indexb, err1 := hex.DecodeString(string(cmsg[len(msgb)+8:]))
|
||||
if err1 != nil {
|
||||
//block.Consumer.MarkOffset(cmsg, "")
|
||||
logg.Error("[block]", zap.String("failed to decode index", err1.Error()))
|
||||
continue
|
||||
}
|
||||
//copy(indexb, cmsg.Value[len(msgb)+4:])
|
||||
var index uint32 = utility.ByteToUint32(indexb)
|
||||
logg.Warn("[block]", zap.Uint32("index", index))
|
||||
|
||||
logg.Debug("[block]", zap.String("msg", string(cmsg)), zap.String("blk", string(msgb)))
|
||||
var dgbblock msg.BlockGrsMsg
|
||||
if err := json.Unmarshal(msgb, &dgbblock); err != nil {
|
||||
//block.Consumer.MarkOffset(cmsg, "")
|
||||
logg.Error("[block]", zap.String("failed to Unmarshal job", err.Error()))
|
||||
continue
|
||||
}
|
||||
|
||||
blk := hex.EncodeToString(dgbblock.Data)
|
||||
rawmsgs := make([]json.RawMessage, 1)
|
||||
logg.Info("[block]", zap.String("blk", blk))
|
||||
rawmsgs[0] = json.RawMessage(`"` + blk + `"`)
|
||||
//var last_result json.RawMessage
|
||||
|
||||
result, err := block.GbtCtx.Client.RawRequest("submitblock", rawmsgs)
|
||||
if err != nil {
|
||||
logg.Error("[block]", zap.String("submitblock", err.Error()))
|
||||
} else {
|
||||
//last_result = result
|
||||
}
|
||||
logg.Info("[block]", zap.String("result", string(result)))
|
||||
|
||||
/*dbif.NotifyMinerSubmitResult(block.GbtCtx, dgbblock.User, dgbblock.Miner, dgbblock.Index, int64(height), dgbblock.Pow, string(result), dgbblock.Nonce, dgbblock.SubIdx)
|
||||
dbif.NotifyUsersBlkStatsSubmitResult(block.GbtCtx, dgbblock.User, int64(height), dgbblock.Pow, string(result), dgbblock.Nonce, dgbblock.SubIdx)*/
|
||||
dbif.NotifyPoolBlkStatsSubmitResult(block.GbtCtx, int64(height), dgbblock.Pow, string(result), dgbblock.Nonce, dgbblock.SubIdx)
|
||||
|
||||
block.Submits += 1
|
||||
//log.Printf("[block] height %d subidx %d nonce %s\n", height, dgbblock.SubIdx, dgbblock.Nonce)
|
||||
logg.Warn("[block]", zap.Float64("total submits", block.Submits), zap.Int64("SubIdx", dgbblock.SubIdx))
|
||||
if string(result) == "null" {
|
||||
new_block_into_db(block, dgbblock.User, dgbblock.Miner, dgbblock.Index, int64(height), dgbblock.Nonce, dgbblock.Pow, dgbblock.SubIdx)
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
logg.Error("[block]", zap.String("block", "SubCh failed! retry"))
|
||||
time.Sleep(time.Duration(1) * time.Second)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func new_job_from_gbt(gbt *GbtDgbContext, rxmsg *msg.GbtMsg) []byte {
|
||||
var sjob msg.StratumJob
|
||||
|
||||
sjob.Job_id = ""
|
||||
sjob.IsClean = false
|
||||
if rxmsg.Height != gbt.last_gbt.Height {
|
||||
sjob.IsClean = true
|
||||
}
|
||||
vb := make([]byte, 4)
|
||||
binary.LittleEndian.PutUint32(vb, uint32(rxmsg.Version))
|
||||
sjob.Version = int32(binary.BigEndian.Uint32(vb))
|
||||
sjob.PrevblockS = rxmsg.Previousblockhash
|
||||
pb, err := hex.DecodeString(rxmsg.Previousblockhash)
|
||||
sjob.PrevblockBig = hex.EncodeToString(utility.Reverse(utility.Convert_big_endian(pb)))
|
||||
bb, _ := hex.DecodeString(rxmsg.Bits)
|
||||
sjob.Bits = binary.LittleEndian.Uint32(bb)
|
||||
sjob.BitsS = rxmsg.Bits
|
||||
tb := make([]byte, 4)
|
||||
binary.BigEndian.PutUint32(tb, rxmsg.Curtime)
|
||||
t := binary.LittleEndian.Uint32(tb)
|
||||
sjob.Timestamp = time.Unix(int64(t), 0)
|
||||
sjob.Mintime = rxmsg.Mintime
|
||||
sjob.Extranonce2_size = 4
|
||||
sjob.Target = rxmsg.Target
|
||||
sjob.Height = rxmsg.Height
|
||||
sjob.Segwit = rxmsg.Segwit
|
||||
cbvalue := rxmsg.Coinbasevalue
|
||||
var nowit bool = false
|
||||
tslen_nowit := len(*rxmsg.Transactions)
|
||||
for i := 0; i < tslen_nowit; i++ {
|
||||
var ts msg.GbtTransaction
|
||||
err = json.Unmarshal((*rxmsg.Transactions)[i], &ts)
|
||||
if err != nil {
|
||||
logg.Error("[job]", zap.String("getblocktemplate", err.Error()))
|
||||
continue
|
||||
}
|
||||
//logg.Info("[job]", zap.String("transaction", ts.Hash))
|
||||
if ts.Hash == ts.Txid {
|
||||
} else {
|
||||
nowit = true
|
||||
}
|
||||
cbvalue -= uint64(ts.Fee)
|
||||
}
|
||||
if nowit {
|
||||
rxmsg.Coinbasevalue = cbvalue
|
||||
}
|
||||
|
||||
payaddr := gbt.Config.Dgb.Addr
|
||||
if len(gbt.GbtCtx.MinerAddrs) > 0 {
|
||||
payaddr = gbt.GbtCtx.MinerAddrs[gbt.GbtCtx.MinerAddrIndex]
|
||||
gbt.GbtCtx.MinerAddrIndex = gbt.GbtCtx.MinerAddrIndex + 1
|
||||
if gbt.GbtCtx.MinerAddrIndex >= len(gbt.GbtCtx.MinerAddrs) {
|
||||
gbt.GbtCtx.MinerAddrIndex = 0
|
||||
}
|
||||
}
|
||||
|
||||
c1, c2, err := build_coinbase(rxmsg, payaddr)
|
||||
|
||||
if err != nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
sjob.Coinbase1 = c1
|
||||
sjob.Coinbase2 = c2
|
||||
//log.Println("coinbase1", c1, "coinbase2", c2)
|
||||
tslen := len(*rxmsg.Transactions)
|
||||
if nowit {
|
||||
tslen = 0
|
||||
}
|
||||
|
||||
trans := make([]string, tslen)
|
||||
transdata := make([]string, tslen)
|
||||
for i := 0; i < tslen; i++ {
|
||||
var ts msg.GbtTransaction
|
||||
err = json.Unmarshal((*rxmsg.Transactions)[i], &ts)
|
||||
if err != nil {
|
||||
logg.Error("[job]", zap.String("getblocktemplate", err.Error()))
|
||||
continue
|
||||
}
|
||||
//logg.Info("[job]", zap.String("transaction", ts.Hash))
|
||||
if ts.Hash == ts.Txid {
|
||||
trans[i] = ts.Hash
|
||||
} else {
|
||||
trans[i] = ts.Txid
|
||||
}
|
||||
transdata[i] = ts.Data
|
||||
}
|
||||
if tslen > 1 {
|
||||
sjob.Transactions = BuildMerkleTreeStore(&trans)
|
||||
} else {
|
||||
if tslen == 1 {
|
||||
trans[0], err = utility.ReverseS(trans[0])
|
||||
}
|
||||
sjob.Transactions = &trans
|
||||
}
|
||||
sjob.TransData = &transdata
|
||||
|
||||
body, err := json.Marshal(sjob)
|
||||
if err != nil {
|
||||
logg.Error("[job]", zap.String("Marshal", err.Error()))
|
||||
return nil
|
||||
}
|
||||
return body
|
||||
|
||||
}
|
||||
|
||||
func address_to_pubkeytxn3(in string) string {
|
||||
//log.Println("[job]payee", in)
|
||||
decoded, _, err := base58.CheckDecode(in)
|
||||
if err != nil {
|
||||
logg.Info("[job]", zap.String("CheckDecode", err.Error()))
|
||||
}
|
||||
//log.Println("[job]base58", encoded)
|
||||
pubkeytxn := "76a914"
|
||||
pubkeytxn += hex.EncodeToString(decoded)
|
||||
pubkeytxn += "88ac"
|
||||
return pubkeytxn
|
||||
}
|
||||
|
||||
func build_coinbase(gbt *msg.GbtMsg, poolpayoutaddr string) (string, string, error) {
|
||||
|
||||
var coinbase1 string
|
||||
coinbase1 = "01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff"
|
||||
|
||||
signheader := "/m2pool.com/"
|
||||
var coinbase2 string = "0c" + hex.EncodeToString([]byte(signheader))
|
||||
|
||||
coinbase2 += "0000000001"
|
||||
|
||||
coinbase1 += "20"
|
||||
heightb := make([]byte, 4)
|
||||
binary.LittleEndian.PutUint32(heightb, gbt.Height)
|
||||
/*if gbt.Height < 0x100 {
|
||||
coinbase1 += "01"
|
||||
} else {
|
||||
if gbt.Height < 0x10000 {
|
||||
coinbase1 += "02"
|
||||
} else {
|
||||
if gbt.Height < 0x1000000 {
|
||||
coinbase1 += "03"
|
||||
} else {
|
||||
coinbase1 += "04"
|
||||
}
|
||||
}
|
||||
}*/
|
||||
coinbase1 += "04"
|
||||
|
||||
coinbase1 += hex.EncodeToString(heightb)[:8]
|
||||
timeb := make([]byte, 4)
|
||||
binary.LittleEndian.PutUint32(timeb, uint32(time.Now().Unix()))
|
||||
coinbase1 += "04"
|
||||
coinbase1 += hex.EncodeToString(timeb)
|
||||
coinbase1 += "08"
|
||||
|
||||
logg.Info("[job]", zap.String("coinbase1", coinbase1))
|
||||
|
||||
coinbasevalueb := make([]byte, 8)
|
||||
binary.LittleEndian.PutUint64(coinbasevalueb, gbt.Coinbasevalue)
|
||||
coinbase2 += hex.EncodeToString(coinbasevalueb)
|
||||
coinbase2 += "19"
|
||||
//coinbase2 += address_to_pubkeytxn22(poolpayoutaddr)
|
||||
//coinbase2 += address_to_pubkeytxn2(poolpayoutaddr)
|
||||
coinbase2 += address_to_pubkeytxn3(poolpayoutaddr)
|
||||
//coinbase2 += "0000000000000000"
|
||||
//witlen := fmt.Sprintf("%02x", len(gbt.Segwit)/2)
|
||||
//coinbase2 += witlen
|
||||
//coinbase2 += gbt.Segwit
|
||||
|
||||
coinbase2 += "00000000"
|
||||
logg.Info("[job]", zap.String("coinbase2", coinbase2))
|
||||
return coinbase1, coinbase2, nil
|
||||
}
|
||||
|
||||
func nextPowerOfTwo(n int) int {
|
||||
// Return the number if it's already a power of 2.
|
||||
if n&(n-1) == 0 {
|
||||
return int(math.Log2(float64(n)))
|
||||
}
|
||||
|
||||
// Figure out and return the next power of two.
|
||||
exponent := int(math.Log2(float64(n))) + 1
|
||||
return exponent // 2^exponent
|
||||
}
|
||||
|
||||
func HashMerkleBranches(left *chainhash.Hash, right *chainhash.Hash) *chainhash.Hash {
|
||||
// Check for nil parameters
|
||||
if left == nil || right == nil {
|
||||
return nil // or handle error as appropriate
|
||||
}
|
||||
// Concatenate the left and right nodes.
|
||||
var hash [chainhash.HashSize * 2]byte
|
||||
copy(hash[:chainhash.HashSize], left[:])
|
||||
copy(hash[chainhash.HashSize:], right[:])
|
||||
|
||||
newHash := chainhash.DoubleHashH(hash[:])
|
||||
return &newHash
|
||||
}
|
||||
|
||||
func BuildMerkleTreeStore(transactions *[]string) *[]string {
|
||||
// Calculate how many entries are required to hold the binary merkle
|
||||
// tree as a linear array and create an array of that size.
|
||||
ts_size := len(*transactions)
|
||||
if ts_size == 1 {
|
||||
ts_string := make([]string, 1)
|
||||
ts_string[0], _ = utility.ReverseS((*transactions)[0])
|
||||
return &ts_string
|
||||
}
|
||||
exp := nextPowerOfTwo(ts_size + 1)
|
||||
|
||||
var all_size int = 0
|
||||
var temp_size = ts_size - 1
|
||||
var size int = 0
|
||||
for i := 0; i < exp-1; i++ {
|
||||
size = 1 + i + temp_size/2 + temp_size%2
|
||||
|
||||
if size < exp {
|
||||
size = exp
|
||||
}
|
||||
|
||||
all_size += size
|
||||
temp_size = size - i - 2
|
||||
|
||||
}
|
||||
arraySize := ts_size + all_size
|
||||
|
||||
merkles := make([]*chainhash.Hash, arraySize)
|
||||
|
||||
// Create the base transaction hashes and populate the array with them.
|
||||
|
||||
for i := range *transactions {
|
||||
// If we're computing a witness merkle root, instead of the
|
||||
// regular txid, we use the modified wtxid which includes a
|
||||
// transaction's witness data within the digest. Additionally,
|
||||
// the coinbase's wtxid is all zeroes.
|
||||
|
||||
merkles[i], _ = chainhash.NewHashFromStr((*transactions)[i])
|
||||
}
|
||||
|
||||
// Start the array offset after the last transaction and adjusted to the
|
||||
// next power of two.
|
||||
offset := ts_size
|
||||
|
||||
all_size = ts_size
|
||||
size = ts_size
|
||||
var start int = 0
|
||||
|
||||
temp_size = ts_size - 1
|
||||
for i := 0; i < exp-1; i++ {
|
||||
for j := 0; j <= i; j++ {
|
||||
merkles[offset] = merkles[start]
|
||||
offset++
|
||||
start++
|
||||
}
|
||||
for ; start < all_size; start += 2 {
|
||||
if start+1 >= all_size {
|
||||
newHash := HashMerkleBranches(merkles[start], merkles[start])
|
||||
merkles[offset] = newHash
|
||||
offset++
|
||||
start++
|
||||
break
|
||||
} else {
|
||||
newHash := HashMerkleBranches(merkles[start], merkles[start+1])
|
||||
merkles[offset] = newHash
|
||||
offset++
|
||||
}
|
||||
}
|
||||
size = 1 + i + temp_size/2 + temp_size%2
|
||||
|
||||
if size <= exp {
|
||||
size = exp
|
||||
}
|
||||
all_size += size
|
||||
temp_size = size - i - 2
|
||||
|
||||
}
|
||||
|
||||
merkles_string := make([]string, exp)
|
||||
var j int = 0
|
||||
for i := offset - int(exp); i < offset; i++ {
|
||||
merkles_string[j], _ = utility.ReverseS(merkles[i].String())
|
||||
j++
|
||||
}
|
||||
|
||||
logg.Info("[job]", zap.Any("merkles bytes", merkles_string))
|
||||
return &merkles_string
|
||||
}
|
|
@ -0,0 +1,247 @@
|
|||
package enx
|
||||
|
||||
import (
|
||||
"encoding/hex"
|
||||
"fmt"
|
||||
"pool/internal/db"
|
||||
"pool/internal/gbt/coin"
|
||||
"pool/internal/gbt/enx/templatemanager"
|
||||
"pool/internal/msg"
|
||||
"sync"
|
||||
"sync/atomic"
|
||||
"time"
|
||||
|
||||
"github.com/kaspanet/kaspad/domain/consensus/model/externalapi"
|
||||
"github.com/kaspanet/kaspad/domain/consensus/utils/pow"
|
||||
"github.com/kaspanet/kaspad/util/difficulty"
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
const GBT_ENX_VERSION string = "enx v1.15.2"
|
||||
|
||||
type EnxAddrConfig struct {
|
||||
Addr string `json:"addr"`
|
||||
}
|
||||
|
||||
type EnxConfig struct {
|
||||
Enx EnxAddrConfig `json:"enx"`
|
||||
}
|
||||
|
||||
type GbtEnxContext struct {
|
||||
Config EnxConfig
|
||||
GbtCtx *coin.GbtContext
|
||||
|
||||
last_time time.Time
|
||||
last_gbt EnxGbtTemplate
|
||||
|
||||
Submits float64
|
||||
|
||||
addressIndex int
|
||||
|
||||
new_block_chan chan int
|
||||
new_block_index int
|
||||
|
||||
last_height uint32
|
||||
}
|
||||
|
||||
var logg *zap.Logger
|
||||
var GbtEnxCtx GbtEnxContext
|
||||
|
||||
// Kaspa GetBlockTemplate 结构体
|
||||
type EnxGbtTemplate struct {
|
||||
Block struct {
|
||||
Header struct {
|
||||
Version int `json:"version"`
|
||||
ParentsByLevel [][]string `json:"parents_by_level"`
|
||||
HashMerkleRoot string `json:"hash_merkle_root"`
|
||||
AcceptedIdMerkleRoot string `json:"accepted_id_merkle_root"`
|
||||
UtxoCommitment string `json:"utxo_commitment"`
|
||||
Timestamp uint64 `json:"timestamp"`
|
||||
Bits uint32 `json:"bits"`
|
||||
Nonce uint64 `json:"nonce"`
|
||||
DaaScore uint64 `json:"daa_score"`
|
||||
BlueWork [3]uint64 `json:"blue_work"` // 可改为 big.Int
|
||||
BlueScore uint64 `json:"blue_score"`
|
||||
PruningPoint string `json:"pruning_point"`
|
||||
} `json:"header"`
|
||||
|
||||
Transactions []struct {
|
||||
Version int `json:"version"`
|
||||
LockTime uint64 `json:"lock_time"`
|
||||
SubnetworkId string `json:"subnetwork_id"`
|
||||
Gas uint64 `json:"gas"`
|
||||
PayLoad string `json:"payload"`
|
||||
Mass uint64 `json:"mass"`
|
||||
|
||||
Inputs []struct{} `json:"inputs"`
|
||||
Outputs []struct{} `json:"outputs"`
|
||||
|
||||
VerboseData interface{} `json:"verbose_data"`
|
||||
} `json:"transactions"`
|
||||
} `json:"block"`
|
||||
|
||||
IsSync bool `json:"is_sync"`
|
||||
}
|
||||
|
||||
type BlockCheckData struct {
|
||||
Height int
|
||||
Nonce string
|
||||
User string
|
||||
Miner string
|
||||
MinerId string
|
||||
Hash string
|
||||
SubIdx int
|
||||
}
|
||||
|
||||
type PushBlkNewMsg struct {
|
||||
Coin string `json:"coin"`
|
||||
Height int `json:"height"`
|
||||
Nonce string `json:"nonce"`
|
||||
}
|
||||
|
||||
type EnxJob struct {
|
||||
JobID uint32
|
||||
Job *externalapi.DomainBlock
|
||||
State *pow.State
|
||||
}
|
||||
|
||||
type EnxContext struct {
|
||||
GbtCtx *coin.GbtContext
|
||||
|
||||
SLock sync.Mutex
|
||||
JobID uint32
|
||||
Jobs []EnxJob
|
||||
|
||||
LastHeight uint64
|
||||
|
||||
Submits float64
|
||||
}
|
||||
|
||||
var enxCtx EnxContext
|
||||
|
||||
func update_block_confirm(gbt *GbtEnxContext) {}
|
||||
|
||||
var hashesTried uint64
|
||||
|
||||
func get_blocktemplate(gbt *GbtEnxContext, mineWhenNotSynced bool) (*externalapi.DomainBlock, *pow.State) {
|
||||
tryCount := 0
|
||||
const sleepTime = 500 * time.Millisecond
|
||||
const sleepTimeWhenNotSynced = 5 * time.Second
|
||||
|
||||
for {
|
||||
tryCount++
|
||||
|
||||
shouldLog := (tryCount-1)%10 == 0
|
||||
template, state, isSynced := templatemanager.Get()
|
||||
if template == nil {
|
||||
if shouldLog {
|
||||
logg.Info("Waiting for the initial template")
|
||||
}
|
||||
time.Sleep(sleepTime)
|
||||
continue
|
||||
}
|
||||
if !isSynced && !mineWhenNotSynced {
|
||||
if shouldLog {
|
||||
logg.Warn("Kaspad is not synced. Skipping current block template")
|
||||
}
|
||||
time.Sleep(sleepTimeWhenNotSynced)
|
||||
continue
|
||||
}
|
||||
|
||||
return template, state
|
||||
}
|
||||
}
|
||||
|
||||
func get_gbt_msg(gbt *GbtEnxContext) []byte {
|
||||
// 这里从节点获取区块模版(block template)
|
||||
dagInfoMsg, err := gbt.GbtCtx.ClientEnx.GetBlockDAGInfo()
|
||||
if err != nil {
|
||||
logg.Info("[gbt]", zap.String("GetBlockDAGInfo ", err.Error()))
|
||||
return nil
|
||||
}
|
||||
height := dagInfoMsg.VirtualDAAScore
|
||||
if err != nil {
|
||||
logg.Info("[gbt]", zap.String("GetBlockCount ", err.Error()))
|
||||
return nil
|
||||
}
|
||||
height = height + 1
|
||||
block, state := getBlockForMining(mineWhenNotSynced)
|
||||
//state.Nonce = nonce
|
||||
state.Nonce = 0
|
||||
atomic.AddUint64(&hashesTried, 1)
|
||||
|
||||
var job msg.EnxStratumJob
|
||||
enxCtx.SLock.Lock()
|
||||
job.Job_id = 0
|
||||
job.Gbt_id = enxCtx.JobID
|
||||
enxCtx.SLock.Unlock()
|
||||
|
||||
job.CurTime = uint64(state.Timestamp)
|
||||
job.Target = hex.EncodeToString(state.Target.Bytes())
|
||||
job.Bits = difficulty.BigToCompact(&(state.Target))
|
||||
job.Nonce = ""
|
||||
job.Extranonce1 = ""
|
||||
job.Extranonce2_size = 6
|
||||
job.Extranonce2 = ""
|
||||
job.Data = hex.EncodeToString(state.GetPrePowHash())
|
||||
job.PrevBlockHash = fmt.Sprint("%s", block.Header.DirectParents())
|
||||
job.Height = block.Header.BlueScore()
|
||||
|
||||
return []byte{}
|
||||
}
|
||||
|
||||
func getBlockForMining(mineWhenNotSynced bool) (*externalapi.DomainBlock, *pow.State) {
|
||||
tryCount := 0
|
||||
|
||||
const sleepTime = 500 * time.Millisecond
|
||||
const sleepTimeWhenNotSynced = 5 * time.Second
|
||||
|
||||
for {
|
||||
tryCount++
|
||||
|
||||
shouldLog := (tryCount-1)%10 == 0
|
||||
template, state, isSynced := templatemanager.Get()
|
||||
if template == nil {
|
||||
if shouldLog {
|
||||
logg.Info("Waiting for the initial template")
|
||||
}
|
||||
time.Sleep(sleepTime)
|
||||
continue
|
||||
}
|
||||
if !isSynced && !mineWhenNotSynced {
|
||||
if shouldLog {
|
||||
logg.Warn("Kaspad is not synced. Skipping current block template")
|
||||
}
|
||||
time.Sleep(sleepTimeWhenNotSynced)
|
||||
continue
|
||||
}
|
||||
|
||||
return template, state
|
||||
}
|
||||
}
|
||||
|
||||
func gbt_notify_running(gbt *GbtEnxContext) {}
|
||||
|
||||
func gbt_running(gbt *GbtEnxContext) {}
|
||||
|
||||
func enxInit(config *EnxConfig) {}
|
||||
|
||||
func Init(GbtCtx *coin.GbtContext, DbCtx *db.DbContext) {}
|
||||
|
||||
func Start() {
|
||||
go gbt_running(&GbtEnxCtx)
|
||||
go gbt_notify_running(&GbtEnxCtx)
|
||||
go submit_block_running(&GbtEnxCtx)
|
||||
}
|
||||
|
||||
func Stop() {
|
||||
defer close(GbtEnxCtx.new_block_chan)
|
||||
}
|
||||
|
||||
func new_block_into_db(block *GbtEnxContext, user string, miner string, minerid string, height int64, nonce string, hash string, subidx int64) bool {
|
||||
return true
|
||||
}
|
||||
|
||||
func submit_block_running(block *GbtEnxContext) {}
|
||||
|
||||
func new_job_from_gbt(gbt *GbtEnxContext, rxmsg *msg.GbtMsg) []byte { return []byte{} }
|
|
@ -0,0 +1,49 @@
|
|||
package templatemanager
|
||||
|
||||
import (
|
||||
"sync"
|
||||
|
||||
"github.com/kaspanet/kaspad/app/appmessage"
|
||||
"github.com/kaspanet/kaspad/domain/consensus/model/externalapi"
|
||||
"github.com/kaspanet/kaspad/domain/consensus/utils/pow"
|
||||
)
|
||||
|
||||
var currentTemplate *externalapi.DomainBlock
|
||||
var currentState *pow.State
|
||||
var prevState *pow.State
|
||||
var isSynced bool
|
||||
var lock = &sync.Mutex{}
|
||||
|
||||
// Get returns the template to work on
|
||||
func Get() (*externalapi.DomainBlock, *pow.State, bool) {
|
||||
lock.Lock()
|
||||
defer lock.Unlock()
|
||||
// Shallow copy the block so when the user replaces the header it won't affect the template here.
|
||||
if currentTemplate == nil {
|
||||
return nil, nil, false
|
||||
}
|
||||
if prevState != nil {
|
||||
if currentState.Target.Cmp(&(prevState.Target)) == 0 {
|
||||
return nil, nil, false
|
||||
}
|
||||
}
|
||||
block := *currentTemplate
|
||||
state := *currentState
|
||||
prevState = currentState
|
||||
currentTemplate = nil
|
||||
return &block, &state, isSynced
|
||||
}
|
||||
|
||||
// Set sets the current template to work on
|
||||
func Set(template *appmessage.GetBlockTemplateResponseMessage) error {
|
||||
block, err := appmessage.RPCBlockToDomainBlock(template.Block)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
lock.Lock()
|
||||
defer lock.Unlock()
|
||||
currentTemplate = block
|
||||
currentState = pow.NewState(block.Header.ToMutable())
|
||||
isSynced = template.IsSynced
|
||||
return nil
|
||||
}
|
|
@ -0,0 +1,344 @@
|
|||
// gbt.go
|
||||
package gbt
|
||||
|
||||
/*
|
||||
#cgo LDFLAGS: -lzmq
|
||||
#include <zmq.h>
|
||||
|
||||
void set_max_msg_size(void *ctx, int size) {
|
||||
zmq_ctx_set(ctx, ZMQ_MAXMSGSIZE, size);
|
||||
}
|
||||
*/
|
||||
import "C"
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"log"
|
||||
|
||||
"io/ioutil"
|
||||
"pool/internal/db"
|
||||
"sync/atomic"
|
||||
|
||||
//"pool/internal/cache"
|
||||
"pool/internal/gbt/alph"
|
||||
"pool/internal/gbt/alph/http"
|
||||
"pool/internal/gbt/coin"
|
||||
"pool/internal/gbt/dgb"
|
||||
"pool/internal/gbt/enx"
|
||||
"pool/internal/gbt/grs"
|
||||
"pool/internal/gbt/mona"
|
||||
"pool/internal/gbt/nexa"
|
||||
"pool/internal/utility"
|
||||
|
||||
"os"
|
||||
"os/signal"
|
||||
"syscall"
|
||||
|
||||
"time"
|
||||
|
||||
"github.com/btcsuite/btcd/rpcclient"
|
||||
kaspad "github.com/kaspanet/kaspad/infrastructure/network/rpcclient"
|
||||
"github.com/redis/go-redis/v9"
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
var logg *zap.Logger
|
||||
var GbtCtx coin.GbtContext
|
||||
|
||||
func InitConfig(config *coin.GbtConfig) {
|
||||
data, err := ioutil.ReadFile("gbt.conf")
|
||||
if err != nil {
|
||||
panic(err.Error())
|
||||
}
|
||||
if err = json.Unmarshal(data, &config); err != nil {
|
||||
panic(err.Error())
|
||||
}
|
||||
}
|
||||
|
||||
func InitClient(gbt *coin.GbtContext) error {
|
||||
switch gbt.Coin {
|
||||
case "alph":
|
||||
// alph初始化逻辑
|
||||
host := gbt.Config.Rpc.Host
|
||||
port := gbt.Config.Rpc.Port
|
||||
apiHost := gbt.Config.Rpc.ApiHost
|
||||
apiPort := gbt.Config.Rpc.ApiPort
|
||||
apiKey := gbt.Config.Rpc.ApiKey
|
||||
client, err := alph.NewAlphPool(host, port)
|
||||
apiClient := http.NewHttpClient(apiHost, apiPort, apiKey)
|
||||
if err != nil {
|
||||
logg.Info("[gbt]", zap.String("rpcclient new ", err.Error()))
|
||||
return err
|
||||
}
|
||||
gbt.ClientAlph = client
|
||||
gbt.ClientAlphApi = apiClient
|
||||
// blockCount := apiClient.GetBlockCount()
|
||||
return nil
|
||||
case "enx":
|
||||
host := gbt.Config.Rpc.Host
|
||||
port := gbt.Config.Rpc.Port
|
||||
client, err := kaspad.NewRPCClient(host + ":" + port)
|
||||
if err != nil {
|
||||
logg.Info("[gbt]", zap.String("rpcclient new ", err.Error()))
|
||||
return err
|
||||
}
|
||||
gbt.ClientEnx = client
|
||||
dagInfoMsg, err := client.GetBlockDAGInfo()
|
||||
if err != nil {
|
||||
logg.Info("[gbt]", zap.String("GetBlockDAGInfo ", err.Error()))
|
||||
return err
|
||||
}
|
||||
blockCount := dagInfoMsg.VirtualDAAScore
|
||||
logg.Info("[gbt]", zap.Int64("Block count ", int64(blockCount)))
|
||||
return nil
|
||||
default:
|
||||
var config rpcclient.ConnConfig
|
||||
if gbt.Config.Rpc.Type == "testnet" {
|
||||
config.Host = gbt.Config.Rpc.Testnet
|
||||
} else {
|
||||
config.Host = gbt.Config.Rpc.Host
|
||||
}
|
||||
config.User = gbt.Config.Rpc.User
|
||||
config.Pass = gbt.Config.Rpc.Pass
|
||||
config.HTTPPostMode = true
|
||||
config.DisableTLS = true
|
||||
client, err := rpcclient.New(&config, nil)
|
||||
if err != nil {
|
||||
logg.Info("[gbt]", zap.String("rpcclient new ", err.Error()))
|
||||
return err
|
||||
}
|
||||
gbt.Client = client
|
||||
blockCount, err := client.GetBlockCount()
|
||||
if err != nil {
|
||||
logg.Info("[gbt]", zap.String("GetBlockCount ", err.Error()))
|
||||
return err
|
||||
}
|
||||
logg.Info("[gbt]", zap.Int64("Block count ", blockCount))
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
/*func GbtLivingHandler(gbt *coin.GbtContext) {
|
||||
timer := time.NewTimer(time.Duration(600) * time.Second)
|
||||
for {
|
||||
select {
|
||||
case aliving := <-gbt.AlivingChan:
|
||||
if !aliving {
|
||||
timer.Stop()
|
||||
//log.Println("gbt aliving", aliving)
|
||||
return
|
||||
} else {
|
||||
timer.Reset(time.Duration(600) * time.Second)
|
||||
}
|
||||
case <-time.After(time.Duration(600) * time.Second):
|
||||
gbt.ExitGbtChan <- true
|
||||
|
||||
return
|
||||
}
|
||||
}
|
||||
}*/
|
||||
|
||||
func GbtLivingHandler(gbt *coin.GbtContext) {
|
||||
var to_cnt int = 0
|
||||
for {
|
||||
flagAliving := atomic.LoadInt32(&(gbt.FlagAliving))
|
||||
flagExit := atomic.LoadInt32(&(gbt.FlagAlivingExit))
|
||||
|
||||
if flagExit == 1 {
|
||||
logg.Error("[server]", zap.String("GbtLivingHandler exited", "exit"))
|
||||
break
|
||||
}
|
||||
|
||||
if flagAliving == 0 {
|
||||
//if to_cnt > 240 {
|
||||
if to_cnt > gbt.Config.Rpc.Timeout*3/1000 {
|
||||
logg.Error("[server]", zap.String("GbtLivingHandler exited", "timer expired"))
|
||||
cmd := "killall gbt_" + gbt.Coin + " &"
|
||||
utility.ExecShellCmd(cmd)
|
||||
gbt.ExitGbtChan <- true
|
||||
break
|
||||
}
|
||||
to_cnt++
|
||||
} else {
|
||||
to_cnt = 0
|
||||
atomic.StoreInt32(&(gbt.FlagAliving), 0)
|
||||
}
|
||||
|
||||
time.Sleep(time.Second)
|
||||
}
|
||||
}
|
||||
|
||||
type coinobj struct {
|
||||
Coin string
|
||||
Init func(GbtCtx *coin.GbtContext, DbCtx *db.DbContext)
|
||||
Start func()
|
||||
Stop func()
|
||||
}
|
||||
|
||||
var coinobjs = []coinobj{
|
||||
{Coin: "nexa", Init: nexa.Init, Start: nexa.Start, Stop: nexa.Stop},
|
||||
{Coin: "grs", Init: grs.Init, Start: grs.Start, Stop: grs.Stop},
|
||||
{Coin: "mona", Init: mona.Init, Start: mona.Start, Stop: mona.Stop},
|
||||
{Coin: "dgbo", Init: dgb.Init, Start: dgb.Start, Stop: dgb.Stop},
|
||||
{Coin: "dgbq", Init: dgb.Init, Start: dgb.Start, Stop: dgb.Stop},
|
||||
{Coin: "dgbs", Init: dgb.Init, Start: dgb.Start, Stop: dgb.Stop},
|
||||
{Coin: "alph", Init: alph.Init, Start: alph.Start, Stop: alph.Stop},
|
||||
{Coin: "enx", Init: enx.Init, Start: enx.Start, Stop: enx.Stop},
|
||||
}
|
||||
|
||||
func register_signal(dbctx *db.DbContext) {
|
||||
signal_ch := make(chan os.Signal, 1)
|
||||
signal.Notify(signal_ch, syscall.SIGHUP, syscall.SIGINT, syscall.SIGTERM, syscall.SIGQUIT)
|
||||
go signal_handle(signal_ch, dbctx)
|
||||
}
|
||||
|
||||
func signal_handle(signal_ch chan os.Signal, dbctx *db.DbContext) {
|
||||
for s := range signal_ch {
|
||||
switch s {
|
||||
case syscall.SIGHUP, syscall.SIGINT, syscall.SIGTERM, syscall.SIGQUIT:
|
||||
log.Println("stop!")
|
||||
dbctx.AppExit <- true
|
||||
default:
|
||||
//fmt.Println("other signal", s)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*func LoadCache(gbt *coin.GbtContext) {
|
||||
val := cache.LoadPoolCache(gbt.RedisClient, gbt.Coin, "blocks")
|
||||
if val != nil {
|
||||
if intVal, ok := val.(int64); ok {
|
||||
gbt.Blocks = intVal
|
||||
}
|
||||
}
|
||||
|
||||
val_f := cache.LoadPoolCache(gbt.RedisClient, gbt.Coin, "rewards")
|
||||
if val_f != nil {
|
||||
if fVal, ok := val_f.(float64); ok {
|
||||
gbt.Reward = fVal
|
||||
}
|
||||
}
|
||||
|
||||
val_f = cache.LoadPoolCache(gbt.RedisClient, gbt.Coin, "fee")
|
||||
if val_f != nil {
|
||||
if fVal, ok := val_f.(float64); ok {
|
||||
gbt.Fee = fVal
|
||||
}
|
||||
}
|
||||
}*/
|
||||
|
||||
func Start(Coin string, DbCtx *db.DbContext) {
|
||||
/*zmqctx := C.zmq_ctx_new()
|
||||
defer C.zmq_ctx_term(zmqctx)
|
||||
C.set_max_msg_size(zmqctx, 1024*1024*8)*/
|
||||
|
||||
GbtCtx.DbCtx = DbCtx
|
||||
|
||||
GbtCtx.Coin = Coin
|
||||
|
||||
atomic.StoreInt32(&(GbtCtx.FlagAliving), 0)
|
||||
atomic.StoreInt32(&(GbtCtx.FlagAlivingExit), 0)
|
||||
|
||||
InitConfig(&GbtCtx.Config)
|
||||
l, lr, err := utility.InitLogg(&(GbtCtx.Config.Zaplog), &(GbtCtx.Config.Logrotae), Coin, "gbt")
|
||||
logg = l
|
||||
|
||||
//defer logg.Sync()
|
||||
|
||||
GbtCtx.Log = l
|
||||
GbtCtx.LogR = lr
|
||||
|
||||
GbtCtx.RedisClient = redis.NewClient(&redis.Options{
|
||||
Addr: GbtCtx.Config.Redis.Addr,
|
||||
Password: GbtCtx.Config.Redis.Password,
|
||||
DB: GbtCtx.Config.Redis.DB,
|
||||
})
|
||||
|
||||
register_signal(DbCtx)
|
||||
|
||||
GbtCtx.PubCh = utility.InitZmqPub(GbtCtx.Config.Zmq.Pub)
|
||||
|
||||
GbtCtx.SubCh = utility.InitZmqSub(GbtCtx.Config.Zmq.Sub, "blk"+Coin)
|
||||
|
||||
//GbtCtx.PushCh = utility.InitZmqPush(GbtCtx.Config.Profit.Push)
|
||||
|
||||
for {
|
||||
err = InitClient(&GbtCtx)
|
||||
if err != nil {
|
||||
logg.Error("[gbt]", zap.String("InitClient", err.Error()))
|
||||
time.Sleep(time.Duration(5) * time.Second)
|
||||
continue
|
||||
}
|
||||
break
|
||||
}
|
||||
|
||||
// if len(GbtCtx.Config.Rpc.ZmqSub) > 0 {
|
||||
// GbtCtx.NodeSubCh = utility.InitZmqSub(GbtCtx.Config.Rpc.ZmqSub, utility.BITCOIND_ZMQ_HASHBLOCK)
|
||||
// }
|
||||
|
||||
GbtCtx.Started = true
|
||||
|
||||
GbtCtx.ExitGbtChan = make(chan bool, 256)
|
||||
|
||||
//GbtCtx.AlivingChan = make(chan bool, 256)
|
||||
|
||||
GbtCtx.MinerAddrs = db.GetAddressFromTable(DbCtx)
|
||||
// GbtCtx.MinerAddrs = make([]string, 4)
|
||||
// GbtCtx.MinerAddrs[0] = "1EjmgB5GzbvVpu63a3GxLPjk4DNedhpjNZvVz5oCMpHg5"
|
||||
// GbtCtx.MinerAddrs[1] = "1BHkVwr7VNW2ViqphAR2wy3QdmAm29jYaTVt4w62kH9V1"
|
||||
// GbtCtx.MinerAddrs[2] = "15aeh8ugDpDjWRWhVHeLhyz3KTKSqKaoydTdMFxjD99BJ"
|
||||
// GbtCtx.MinerAddrs[3] = "17sEVHyyfHiwFXDH3onX9MxsbP6kh2B8hrtPd7mk3Qa6r"
|
||||
// GbtCtx.MinerAddrIndex = 0
|
||||
|
||||
//LoadCache(&GbtCtx)
|
||||
|
||||
for _, coinobj := range coinobjs {
|
||||
if coinobj.Coin == Coin {
|
||||
coinobj.Init(&GbtCtx, DbCtx)
|
||||
go coinobj.Start()
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
go GbtLivingHandler(&GbtCtx)
|
||||
|
||||
<-DbCtx.AppExit
|
||||
}
|
||||
|
||||
func Stop(Coin string) {
|
||||
fmt.Println("gbt退出了")
|
||||
GbtCtx.Started = false
|
||||
|
||||
GbtCtx.ExitGbtChan <- true
|
||||
|
||||
//GbtCtx.AlivingChan <- false
|
||||
atomic.StoreInt32(&(GbtCtx.FlagAlivingExit), 1)
|
||||
|
||||
for _, coinobj := range coinobjs {
|
||||
if coinobj.Coin == Coin {
|
||||
coinobj.Stop()
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
//time.Sleep(1 * time.Second)
|
||||
|
||||
defer close(GbtCtx.ExitGbtChan)
|
||||
|
||||
//defer close(GbtCtx.AlivingChan)
|
||||
|
||||
if GbtCtx.NodeSubCh != nil {
|
||||
defer GbtCtx.NodeSubCh.Destroy()
|
||||
}
|
||||
if GbtCtx.PubCh != nil {
|
||||
defer GbtCtx.PubCh.Destroy()
|
||||
}
|
||||
if GbtCtx.SubCh != nil {
|
||||
defer GbtCtx.SubCh.Destroy()
|
||||
}
|
||||
/*if GbtCtx.PushCh != nil {
|
||||
defer GbtCtx.PushCh.Destroy()
|
||||
}*/
|
||||
defer GbtCtx.RedisClient.Close()
|
||||
defer logg.Sync()
|
||||
}
|
|
@ -0,0 +1,848 @@
|
|||
// grs.go
|
||||
package grs
|
||||
|
||||
import (
|
||||
"encoding/binary"
|
||||
"encoding/hex"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"log"
|
||||
"math"
|
||||
"sync/atomic"
|
||||
|
||||
//"pool/internal/cache"
|
||||
"pool/internal/db"
|
||||
"pool/internal/gbt/coin"
|
||||
"pool/internal/gbt/dbif"
|
||||
"pool/internal/msg"
|
||||
"pool/internal/utility"
|
||||
"time"
|
||||
|
||||
"database/sql"
|
||||
|
||||
"github.com/btcsuite/btcd/chaincfg/chainhash"
|
||||
"github.com/btcsuite/btcutil/base58"
|
||||
|
||||
//"github.com/btcsuite/btcd/rpcclient"
|
||||
_ "github.com/mattn/go-sqlite3"
|
||||
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
const GBT_GRS_VERSION string = "grs v3.0l"
|
||||
|
||||
type GrsAddrConfig struct {
|
||||
Addr string `json:"addr"`
|
||||
}
|
||||
|
||||
type GrsConfig struct {
|
||||
Grs GrsAddrConfig `json:"grs"`
|
||||
}
|
||||
|
||||
type GbtGrsContext struct {
|
||||
Config GrsConfig
|
||||
GbtCtx *coin.GbtContext
|
||||
|
||||
last_time time.Time
|
||||
last_gbt msg.GbtMsg
|
||||
|
||||
Submits float64
|
||||
|
||||
addressIndex int
|
||||
|
||||
new_block_chan chan int
|
||||
new_block_index int
|
||||
|
||||
last_height uint32
|
||||
}
|
||||
|
||||
var logg *zap.Logger
|
||||
var GbtGrsCtx GbtGrsContext
|
||||
|
||||
type BlockCheckData struct {
|
||||
Height int
|
||||
Nonce string
|
||||
User string
|
||||
Miner string
|
||||
MinerId string
|
||||
Hash string
|
||||
SubIdx int
|
||||
}
|
||||
|
||||
type PushBlkNewMsg struct {
|
||||
Coin string `json:"coin"`
|
||||
Height int `json:"height"`
|
||||
Nonce string `json:"nonce"`
|
||||
}
|
||||
|
||||
func update_block_confirm(gbt *GbtGrsContext) {
|
||||
db, err := sql.Open("sqlite3", "./blocks.db")
|
||||
if err != nil {
|
||||
//log.Printf("Error opening database: %v", err)
|
||||
logg.Error("[gbt]", zap.String("Error opening database", err.Error()))
|
||||
return
|
||||
}
|
||||
defer db.Close()
|
||||
|
||||
query := "SELECT user,miner,minerid,height,nonce,hash,subidx FROM blocks WHERE checked=0 AND created_at > = datetime('now', '-30 minutes') order by id desc limit 2"
|
||||
rows, err := db.Query(query)
|
||||
if err != nil {
|
||||
//log.Printf("Error executing query from blocks: %v", err)
|
||||
logg.Error("[gbt]", zap.String("Error executing query from blocks:", err.Error()))
|
||||
return
|
||||
}
|
||||
defer rows.Close()
|
||||
|
||||
var blocks []BlockCheckData
|
||||
for rows.Next() {
|
||||
var height int
|
||||
var nonce string
|
||||
var user string
|
||||
var miner string
|
||||
var minerid string
|
||||
var hash string
|
||||
var subidx int
|
||||
if err := rows.Scan(&user, &miner, &minerid, &height, &nonce, &hash, &subidx); err != nil {
|
||||
//log.Printf("Error scanning row in blocks: %v", err)
|
||||
logg.Error("[gbt]", zap.String("Error scanning row in blocks:", err.Error()))
|
||||
return
|
||||
}
|
||||
var blockdata BlockCheckData
|
||||
blockdata.Height = height
|
||||
blockdata.Nonce = nonce
|
||||
blockdata.User = user
|
||||
blockdata.Miner = miner
|
||||
blockdata.MinerId = minerid
|
||||
blockdata.Hash = hash
|
||||
blockdata.SubIdx = subidx
|
||||
|
||||
blocks = append(blocks, blockdata)
|
||||
//fmt.Printf("blocks - Height: %d, Nonce: %d\n", height, nonce)
|
||||
//log.Printf("update block height %d nonce %s, subidx %d, user %s", height, nonce, subidx, user+"."+miner+"_"+minerid)
|
||||
}
|
||||
for _, block := range blocks {
|
||||
block_hash, err := gbt.GbtCtx.Client.GetBlockHash(int64(block.Height))
|
||||
if err != nil {
|
||||
logg.Info("[gbt]", zap.String("GetBlockHash ", err.Error()))
|
||||
continue
|
||||
}
|
||||
rawmsgs := make([]json.RawMessage, 1)
|
||||
param_str := `"` + block_hash.String() + `"`
|
||||
rawmsgs[0] = json.RawMessage(param_str)
|
||||
result, err := gbt.GbtCtx.Client.RawRequest("getblockheader", rawmsgs)
|
||||
if err != nil {
|
||||
//log.Printf("getblockheader %s", err.Error())
|
||||
logg.Error("[gbt]", zap.String("getblockheader", err.Error()))
|
||||
continue
|
||||
}
|
||||
//log.Printf("getblockheader %d %s:%v", block.Height, block_hash, result)
|
||||
var blockHeader msg.GetBlockHeaderMsgInt
|
||||
err = json.Unmarshal(result, &blockHeader)
|
||||
if err != nil {
|
||||
//log.Printf("getblockheader Unmarshal %s", err.Error())
|
||||
logg.Error("[gbt]", zap.String("getblockheader Unmarshal ", fmt.Sprint(block.Height)+" "+err.Error()))
|
||||
continue
|
||||
}
|
||||
|
||||
rawmsgs_stats := make([]json.RawMessage, 1)
|
||||
rawmsgs_stats[0] = json.RawMessage(param_str)
|
||||
result_stats, err := gbt.GbtCtx.Client.RawRequest("getblockstats", rawmsgs_stats)
|
||||
if err != nil {
|
||||
//log.Printf("getblockstats %s", err.Error())
|
||||
logg.Error("[gbt]", zap.String("getblockstats", err.Error()))
|
||||
continue
|
||||
}
|
||||
//log.Printf("getblockheader %d %s:%v", block.Height, block_hash, result)
|
||||
var blockStats msg.GetBlockStatsMsg
|
||||
err = json.Unmarshal(result_stats, &blockStats)
|
||||
if err != nil {
|
||||
//log.Printf("getblockstats Unmarshal %s", err.Error())
|
||||
logg.Error("[gbt]", zap.String("getblockstats Unmarshal ", fmt.Sprint(block.Height)+" "+err.Error()))
|
||||
continue
|
||||
}
|
||||
|
||||
if blockHeader.Confirmations > 3 {
|
||||
//log.Printf("cmp block: %d %s vs %s %s", block.Height, block.Nonce, string(result), blockHeader.Nonce)
|
||||
//log.Printf("cmp block: %d %s %s_%s_%s vs %s\n", block.Height, block.Nonce, block.User, block.Miner, block.MinerId, blockHeader.Nonce)
|
||||
nonceb := utility.Uint32ToByteBig(blockHeader.Nonce)
|
||||
nonces := hex.EncodeToString(nonceb)
|
||||
if nonces == block.Nonce {
|
||||
|
||||
block_height := int64(block.Height)
|
||||
/*dbif.NotifyMinerSuccess(gbt.GbtCtx, block.User, block.Miner, block.MinerId, block_height, "", block.Nonce, int64(block.SubIdx), blockStats.Subsidy, blockStats.Totalfee)
|
||||
dbif.NotifyUsersBlkStatsSuccess(gbt.GbtCtx, block.User, block_height, "", block.Nonce, int64(block.SubIdx), blockStats.Subsidy, blockStats.Totalfee)*/
|
||||
dbif.NotifyPoolBlkStatsSuccess(gbt.GbtCtx, block_height, "", block.Nonce, int64(block.SubIdx), blockStats.Subsidy, blockStats.Totalfee)
|
||||
dbif.NotifyBlkDetailSuccess(gbt.GbtCtx, block_height, "", block.Nonce, int64(block.SubIdx))
|
||||
/*dbif.NotifyBlockStat(gbt.GbtCtx, block.User, block.Miner, block.MinerId, blockStats.Subsidy, blockStats.Totalfee)*/
|
||||
//dbif.NotifyBlkNewSuccess(gbt.GbtCtx, block_height, "", block.Nonce, -1)
|
||||
dbif.NotifyBlkNewDb(gbt.GbtCtx, block_height, block.Hash, true, block.Nonce, int64(block.SubIdx))
|
||||
|
||||
//gbt.GbtCtx.Blocks += 1
|
||||
//cache.StorePoolCache(gbt.GbtCtx.RedisClient, gbt.GbtCtx.Coin, "blocks", gbt.GbtCtx.Blocks)
|
||||
|
||||
//gbt.GbtCtx.Reward += blockStats.Subsidy
|
||||
//cache.StorePoolCache(gbt.GbtCtx.RedisClient, gbt.GbtCtx.Coin, "reward", gbt.GbtCtx.Reward)
|
||||
|
||||
//gbt.GbtCtx.Fee += blockStats.Totalfee
|
||||
//cache.StorePoolCache(gbt.GbtCtx.RedisClient, gbt.GbtCtx.Coin, "fee", gbt.GbtCtx.Fee)
|
||||
|
||||
/*var pushmsg PushBlkNewMsg
|
||||
pushmsg.Coin = gbt.GbtCtx.Coin
|
||||
pushmsg.Height = block.Height
|
||||
pushmsg.Nonce = block.Nonce
|
||||
|
||||
jsonData, err := json.Marshal(pushmsg)
|
||||
if err != nil {
|
||||
//log.Printf("Failed to marshal JSON: %v", err)
|
||||
logg.Error("[gbt]", zap.String("Failed to marshal JSON:", err.Error()))
|
||||
continue
|
||||
}
|
||||
if gbt.GbtCtx.PushCh == nil {
|
||||
gbt.GbtCtx.PushCh = utility.InitZmqPush(gbt.GbtCtx.Config.Profit.Push)
|
||||
}
|
||||
if gbt.GbtCtx.PushCh != nil {
|
||||
err = gbt.GbtCtx.PushCh.SendMessage([][]byte{[]byte("blk_new"), jsonData})
|
||||
if err != nil {
|
||||
//log.Printf("Failed to send data: %v", err)
|
||||
logg.Error("[gbt]", zap.String("Failed to SendMessage:", err.Error()))
|
||||
continue
|
||||
}
|
||||
}*/
|
||||
|
||||
updateSQL := `UPDATE blocks SET checked = 1 WHERE height = ? AND nonce = ? AND checked = 0`
|
||||
_, err = db.Exec(updateSQL, block.Height, block.Nonce)
|
||||
if err != nil {
|
||||
//log.Printf("Error updating blk_new: %v", err)
|
||||
logg.Error("[gbt]", zap.String("Error updating blk_new:", err.Error()))
|
||||
continue
|
||||
}
|
||||
//log.Printf("update block success: %d %s", block.Height, block.Nonce)
|
||||
logg.Warn("[gbt]", zap.String("update block success:", fmt.Sprint(block.Height)+" "+block.Nonce))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func get_gbt_msg(gbt *GbtGrsContext) []byte {
|
||||
rawmsgs := make([]json.RawMessage, 1)
|
||||
rawmsgs[0] = json.RawMessage(`{"capabilities": ["coinbasetxn", "workid", "coinbase/append"],"rules":["segwit"]}`)
|
||||
result, err := gbt.GbtCtx.Client.RawRequest("getblocktemplate", rawmsgs)
|
||||
if err != nil {
|
||||
logg.Error("[gbt]", zap.String("getblocktemplate", err.Error()))
|
||||
return nil
|
||||
}
|
||||
|
||||
var rxmsg msg.GbtMsg
|
||||
err = json.Unmarshal(result, &rxmsg)
|
||||
if err != nil {
|
||||
logg.Error("[gbt]", zap.String("getblocktemplate", err.Error()))
|
||||
return nil
|
||||
}
|
||||
|
||||
for i := 0; i < len(*rxmsg.Transactions); i++ {
|
||||
var ts msg.GbtTransaction
|
||||
err = json.Unmarshal((*rxmsg.Transactions)[i], &ts)
|
||||
if err != nil {
|
||||
logg.Error("[gbt]", zap.String("Unmarshal Transactions", err.Error()))
|
||||
continue
|
||||
}
|
||||
//logg.Debug("[gbt]", zap.String("ts.Hash", ts.Hash))
|
||||
}
|
||||
|
||||
if rxmsg.Previousblockhash == gbt.last_gbt.Previousblockhash {
|
||||
if time.Now().Sub(gbt.last_time) < time.Duration(gbt.GbtCtx.Config.Rpc.Timeout)*time.Millisecond {
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
gbtstr := fmt.Sprintf("version %x, prev %s, coinbase %x, longpoolid %s, target %s time %x, bits %s, height %d", rxmsg.Version, rxmsg.Previousblockhash, rxmsg.Coinbasevalue, rxmsg.Longpollid, rxmsg.Target, rxmsg.Curtime, rxmsg.Bits, rxmsg.Height)
|
||||
logg.Debug("[gbt]", zap.String(" ", gbtstr))
|
||||
|
||||
body := new_job_from_gbt(gbt, &rxmsg)
|
||||
|
||||
gbt.last_gbt = rxmsg
|
||||
|
||||
gbt.last_time = time.Now()
|
||||
|
||||
return body
|
||||
}
|
||||
|
||||
func gbt_notify_running(gbt *GbtGrsContext) {
|
||||
for {
|
||||
if !gbt.GbtCtx.Started {
|
||||
break
|
||||
}
|
||||
if gbt.GbtCtx.NodeSubCh == nil {
|
||||
gbt.GbtCtx.NodeSubCh = utility.InitZmqSub(gbt.GbtCtx.Config.Rpc.ZmqSub, utility.BITCOIND_ZMQ_HASHBLOCK)
|
||||
}
|
||||
if gbt.GbtCtx.NodeSubCh != nil {
|
||||
cmsg_sub, err := gbt.GbtCtx.NodeSubCh.RecvMessage()
|
||||
if err != nil {
|
||||
if !gbt.GbtCtx.Started {
|
||||
break
|
||||
}
|
||||
gbt.GbtCtx.NodeSubCh.SetSubscribe(utility.BITCOIND_ZMQ_HASHBLOCK)
|
||||
gbt.GbtCtx.NodeSubCh.Connect(gbt.GbtCtx.Config.Rpc.ZmqSub)
|
||||
continue
|
||||
}
|
||||
if len(cmsg_sub) >= 2 {
|
||||
if string(cmsg_sub[0]) == "hashblock" {
|
||||
GbtGrsCtx.new_block_index = GbtGrsCtx.new_block_index + 1
|
||||
//log.Println("gbt_notify_running", hex.EncodeToString(cmsg_sub[1]), GbtGrsCtx.new_block_index)
|
||||
gbt.new_block_chan <- GbtGrsCtx.new_block_index
|
||||
|
||||
}
|
||||
}
|
||||
} else {
|
||||
logg.Error("[gbt]", zap.String("notify", "NodeSubCh fail!"))
|
||||
time.Sleep(time.Duration(1) * time.Second)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func gbt_running(gbt *GbtGrsContext) {
|
||||
gbtmsg := get_gbt_msg(gbt)
|
||||
if gbtmsg != nil {
|
||||
if gbt.GbtCtx.PubCh == nil {
|
||||
gbt.GbtCtx.PubCh = utility.InitZmqPub(gbt.GbtCtx.Config.Zmq.Pub)
|
||||
}
|
||||
if gbt.GbtCtx.PubCh != nil {
|
||||
for trycnt := 0; trycnt < 3; trycnt++ {
|
||||
err := gbt.GbtCtx.PubCh.SendMessage([][]byte{[]byte("jobgrs"), gbtmsg})
|
||||
if err != nil {
|
||||
if !gbt.GbtCtx.Started {
|
||||
return
|
||||
}
|
||||
//gbt.GbtCtx.PubCh.Bind(gbt.GbtCtx.Config.Zmq.Pub)
|
||||
logg.Warn("[gbt]", zap.String("job ", err.Error()))
|
||||
} else {
|
||||
//gbt.GbtCtx.PubCh.SendChan <- [][]byte{[]byte("jobgrs"), gbtmsg}
|
||||
logg.Warn("[gbt]", zap.String("job ", "sent"))
|
||||
break
|
||||
}
|
||||
}
|
||||
//gbt.GbtCtx.AlivingChan <- true
|
||||
atomic.StoreInt32(&(gbt.GbtCtx.FlagAliving), 1)
|
||||
} else {
|
||||
logg.Warn("[gbt]", zap.String("job ", "sent failed! PubCh nil"))
|
||||
}
|
||||
} else {
|
||||
atomic.StoreInt32(&(gbt.GbtCtx.FlagAliving), 1)
|
||||
}
|
||||
|
||||
timer := time.NewTimer(time.Duration(gbt.GbtCtx.Config.Rpc.Timeout) * time.Millisecond)
|
||||
defer timer.Stop()
|
||||
|
||||
for {
|
||||
if !gbt.GbtCtx.Started {
|
||||
break
|
||||
}
|
||||
|
||||
new_block_notify := false
|
||||
|
||||
select {
|
||||
case blk_idx := <-gbt.new_block_chan:
|
||||
log.Println("new block chan", blk_idx)
|
||||
new_block_notify = true
|
||||
if !timer.Stop() {
|
||||
<-timer.C
|
||||
}
|
||||
timer.Reset(time.Duration(gbt.GbtCtx.Config.Rpc.Timeout) * time.Millisecond)
|
||||
case <-gbt.GbtCtx.ExitGbtChan:
|
||||
logg.Error("[gbt]", zap.String("gbt", "exit"))
|
||||
return
|
||||
case <-time.After(time.Duration(gbt.GbtCtx.Config.Rpc.Timeout) * time.Millisecond):
|
||||
log.Println("poll gbt timeout")
|
||||
timer.Reset(time.Duration(gbt.GbtCtx.Config.Rpc.Timeout) * time.Millisecond)
|
||||
}
|
||||
/*if check_bestblockhash(gbt) {*/
|
||||
gbtmsg := get_gbt_msg(gbt)
|
||||
if gbtmsg != nil {
|
||||
//check_preblock(gbt, DbCtx)
|
||||
if gbt.GbtCtx.PubCh == nil {
|
||||
gbt.GbtCtx.PubCh = utility.InitZmqPub(gbt.GbtCtx.Config.Zmq.Pub)
|
||||
}
|
||||
if gbt.GbtCtx.PubCh != nil {
|
||||
for trycnt := 0; trycnt < 3; trycnt++ {
|
||||
err := gbt.GbtCtx.PubCh.SendMessage([][]byte{[]byte("jobgrs"), gbtmsg})
|
||||
if err != nil {
|
||||
logg.Warn("[gbt]", zap.String("job ", err.Error()))
|
||||
continue
|
||||
} else {
|
||||
//gbt.GbtCtx.PubCh.SendChan <- [][]byte{[]byte("jobgrs"), gbtmsg}
|
||||
logg.Warn("[gbt]", zap.String("job ", "sent"))
|
||||
break
|
||||
}
|
||||
}
|
||||
//gbt.GbtCtx.AlivingChan <- true
|
||||
atomic.StoreInt32(&(gbt.GbtCtx.FlagAliving), 1)
|
||||
} else {
|
||||
logg.Warn("[gbt]", zap.String("job ", "sent failed! PubCh nil"))
|
||||
}
|
||||
} else {
|
||||
atomic.StoreInt32(&(gbt.GbtCtx.FlagAliving), 1)
|
||||
}
|
||||
|
||||
if new_block_notify {
|
||||
update_block_confirm(gbt)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func grsInit(config *GrsConfig) {
|
||||
data, err := ioutil.ReadFile("gbt.conf")
|
||||
if err != nil {
|
||||
panic(err.Error())
|
||||
}
|
||||
if err = json.Unmarshal(data, &config); err != nil {
|
||||
panic(err.Error())
|
||||
}
|
||||
}
|
||||
|
||||
func Init(GbtCtx *coin.GbtContext, DbCtx *db.DbContext) {
|
||||
GbtGrsCtx.GbtCtx = GbtCtx
|
||||
GbtGrsCtx.last_height = 0
|
||||
|
||||
grsInit(&GbtGrsCtx.Config)
|
||||
|
||||
GbtGrsCtx.last_time = time.Now()
|
||||
logg = GbtCtx.Log
|
||||
GbtGrsCtx.new_block_chan = make(chan int, 256)
|
||||
GbtGrsCtx.new_block_index = 0
|
||||
logg.Info("[gbt]", zap.String("gbt_grs_version", GBT_GRS_VERSION))
|
||||
}
|
||||
|
||||
func Start() {
|
||||
go gbt_running(&GbtGrsCtx)
|
||||
go gbt_notify_running(&GbtGrsCtx)
|
||||
go submit_block_running(&GbtGrsCtx)
|
||||
}
|
||||
|
||||
func Stop() {
|
||||
defer close(GbtGrsCtx.new_block_chan)
|
||||
}
|
||||
|
||||
func new_block_into_db(block *GbtGrsContext, user string, miner string, minerid string, height int64, nonce string, hash string, subidx int64) bool {
|
||||
db, err := sql.Open("sqlite3", "./blocks.db")
|
||||
if err != nil {
|
||||
log.Printf("Error opening database: %v", err)
|
||||
return false
|
||||
}
|
||||
defer db.Close()
|
||||
|
||||
createTableSQL := `
|
||||
CREATE TABLE IF NOT EXISTS blocks (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
user TEXT NOT NULL,
|
||||
miner TEXT NOT NULL,
|
||||
minerid TEXT NOT NULL,
|
||||
height INTEGER,
|
||||
nonce TEXT NOT NULL,
|
||||
hash TEXT NOT NULL,
|
||||
subidx INTEGER,
|
||||
checked INTEGER,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||
);`
|
||||
_, err = db.Exec(createTableSQL)
|
||||
if err != nil {
|
||||
log.Printf("Error creating table: %v", err)
|
||||
return false
|
||||
}
|
||||
|
||||
insertSQL := `INSERT INTO blocks (user, miner, minerid, height, nonce, checked, hash, subidx) VALUES (?, ?, ?, ?, ?, ?, ?, ?)`
|
||||
_, err = db.Exec(insertSQL, user, miner, minerid, height, nonce, 0, hash, subidx)
|
||||
if err != nil {
|
||||
log.Printf("Error inserting data from blocks %s: %v", fmt.Sprint(height), err)
|
||||
return false
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
func submit_block_running(block *GbtGrsContext) {
|
||||
logg.Info("[block]", zap.String("submit_block_running", "Start."))
|
||||
for {
|
||||
if !block.GbtCtx.Started {
|
||||
break
|
||||
}
|
||||
if block.GbtCtx.SubCh == nil {
|
||||
block.GbtCtx.SubCh = utility.InitZmqSub(block.GbtCtx.Config.Zmq.Sub, "blk"+block.GbtCtx.Coin)
|
||||
}
|
||||
if block.GbtCtx.SubCh != nil {
|
||||
cmsg_sub, err := block.GbtCtx.SubCh.RecvMessage()
|
||||
if err != nil {
|
||||
if !block.GbtCtx.Started {
|
||||
break
|
||||
}
|
||||
/*block.GbtCtx.SubCh.Destroy()
|
||||
block.GbtCtx.SubCh = nil*/
|
||||
time.Sleep(time.Duration(1) * time.Second)
|
||||
block.GbtCtx.SubCh.SetSubscribe("blk" + block.GbtCtx.Coin)
|
||||
block.GbtCtx.SubCh.Connect(block.GbtCtx.Config.Zmq.Sub)
|
||||
//block.GbtCtx.SubCh.SetMaxmsgsize(1024 * 1024 * 8)
|
||||
continue
|
||||
}
|
||||
|
||||
//log.Println(cmsg_sub, len(cmsg_sub), block.GbtCtx.SubCh)
|
||||
if len(cmsg_sub) >= 2 {
|
||||
if string(cmsg_sub[0]) == "blkgrs" {
|
||||
cmsg := cmsg_sub[1]
|
||||
//block data
|
||||
msgb := make([]byte, len(cmsg)-16)
|
||||
copy(msgb, cmsg)
|
||||
|
||||
//height
|
||||
//heightb := make([]byte, 4)
|
||||
heightb, err := hex.DecodeString(string(cmsg[len(msgb) : len(msgb)+8]))
|
||||
if err != nil {
|
||||
//block.Consumer.MarkOffset(cmsg, "")
|
||||
logg.Error("[block]", zap.String("failed to decode height", err.Error()))
|
||||
continue
|
||||
}
|
||||
var height uint32 = utility.ByteToUint32(heightb)
|
||||
logg.Warn("[block]", zap.Uint32("height", height))
|
||||
|
||||
if height <= block.last_height {
|
||||
continue
|
||||
}
|
||||
block.last_height = height
|
||||
|
||||
//index
|
||||
//indexb := make([]byte, 4)
|
||||
indexb, err1 := hex.DecodeString(string(cmsg[len(msgb)+8:]))
|
||||
if err1 != nil {
|
||||
//block.Consumer.MarkOffset(cmsg, "")
|
||||
logg.Error("[block]", zap.String("failed to decode index", err1.Error()))
|
||||
continue
|
||||
}
|
||||
//copy(indexb, cmsg.Value[len(msgb)+4:])
|
||||
var index uint32 = utility.ByteToUint32(indexb)
|
||||
logg.Warn("[block]", zap.Uint32("index", index))
|
||||
|
||||
logg.Debug("[block]", zap.String("msg", string(cmsg)), zap.String("blk", string(msgb)))
|
||||
var grsblock msg.BlockGrsMsg
|
||||
if err := json.Unmarshal(msgb, &grsblock); err != nil {
|
||||
//block.Consumer.MarkOffset(cmsg, "")
|
||||
logg.Error("[block]", zap.String("failed to Unmarshal job", err.Error()))
|
||||
continue
|
||||
}
|
||||
|
||||
blk := hex.EncodeToString(grsblock.Data)
|
||||
rawmsgs := make([]json.RawMessage, 1)
|
||||
logg.Info("[block]", zap.String("blk", blk))
|
||||
rawmsgs[0] = json.RawMessage(`"` + blk + `"`)
|
||||
//var last_result json.RawMessage
|
||||
|
||||
result, err := block.GbtCtx.Client.RawRequest("submitblock", rawmsgs)
|
||||
if err != nil {
|
||||
logg.Error("[block]", zap.String("submitblock", err.Error()))
|
||||
} else {
|
||||
//last_result = result
|
||||
}
|
||||
logg.Info("[block]", zap.String("result", string(result)))
|
||||
|
||||
/*dbif.NotifyMinerSubmitResult(block.GbtCtx, grsblock.User, grsblock.Miner, grsblock.Index, int64(height), grsblock.Pow, string(result), grsblock.Nonce, grsblock.SubIdx)
|
||||
dbif.NotifyUsersBlkStatsSubmitResult(block.GbtCtx, grsblock.User, int64(height), grsblock.Pow, string(result), grsblock.Nonce, grsblock.SubIdx)*/
|
||||
dbif.NotifyPoolBlkStatsSubmitResult(block.GbtCtx, int64(height), grsblock.Pow, string(result), grsblock.Nonce, grsblock.SubIdx)
|
||||
|
||||
block.Submits += 1
|
||||
//log.Printf("[block] height %d subidx %d nonce %s\n", height, grsblock.SubIdx, grsblock.Nonce)
|
||||
logg.Warn("[block]", zap.Float64("total submits", block.Submits), zap.Int64("SubIdx", grsblock.SubIdx))
|
||||
if string(result) == "null" {
|
||||
new_block_into_db(block, grsblock.User, grsblock.Miner, grsblock.Index, int64(height), grsblock.Nonce, grsblock.Pow, grsblock.SubIdx)
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
logg.Error("[block]", zap.String("block", "SubCh failed! retry"))
|
||||
time.Sleep(time.Duration(1) * time.Second)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func new_job_from_gbt(gbt *GbtGrsContext, rxmsg *msg.GbtMsg) []byte {
|
||||
var sjob msg.StratumJob
|
||||
|
||||
sjob.Job_id = ""
|
||||
sjob.IsClean = false
|
||||
if rxmsg.Height != gbt.last_gbt.Height {
|
||||
sjob.IsClean = true
|
||||
}
|
||||
vb := make([]byte, 4)
|
||||
binary.LittleEndian.PutUint32(vb, uint32(rxmsg.Version))
|
||||
sjob.Version = int32(binary.BigEndian.Uint32(vb))
|
||||
sjob.PrevblockS = rxmsg.Previousblockhash
|
||||
pb, err := hex.DecodeString(rxmsg.Previousblockhash)
|
||||
sjob.PrevblockBig = hex.EncodeToString(utility.Reverse(utility.Convert_big_endian(pb)))
|
||||
bb, _ := hex.DecodeString(rxmsg.Bits)
|
||||
sjob.Bits = binary.LittleEndian.Uint32(bb)
|
||||
sjob.BitsS = rxmsg.Bits
|
||||
tb := make([]byte, 4)
|
||||
binary.BigEndian.PutUint32(tb, rxmsg.Curtime)
|
||||
t := binary.LittleEndian.Uint32(tb)
|
||||
sjob.Timestamp = time.Unix(int64(t), 0)
|
||||
sjob.Mintime = rxmsg.Mintime
|
||||
sjob.Extranonce2_size = 4
|
||||
sjob.Target = rxmsg.Target
|
||||
sjob.Height = rxmsg.Height
|
||||
|
||||
var nowit bool = false
|
||||
tslen_nowit := len(*rxmsg.Transactions)
|
||||
for i := 0; i < tslen_nowit; i++ {
|
||||
var ts msg.GbtTransaction
|
||||
err = json.Unmarshal((*rxmsg.Transactions)[i], &ts)
|
||||
if err != nil {
|
||||
logg.Error("[job]", zap.String("getblocktemplate", err.Error()))
|
||||
continue
|
||||
}
|
||||
if ts.Hash == ts.Txid {
|
||||
} else {
|
||||
}
|
||||
}
|
||||
if nowit {
|
||||
rxmsg.Coinbasevalue = 1250000000
|
||||
logg.Info("[job]", zap.String("nowit", "1"))
|
||||
}
|
||||
|
||||
payaddr := gbt.Config.Grs.Addr
|
||||
if len(gbt.GbtCtx.MinerAddrs) > 0 {
|
||||
payaddr = gbt.GbtCtx.MinerAddrs[gbt.GbtCtx.MinerAddrIndex]
|
||||
gbt.GbtCtx.MinerAddrIndex = gbt.GbtCtx.MinerAddrIndex + 1
|
||||
if gbt.GbtCtx.MinerAddrIndex >= len(gbt.GbtCtx.MinerAddrs) {
|
||||
gbt.GbtCtx.MinerAddrIndex = 0
|
||||
}
|
||||
}
|
||||
|
||||
c1, c2, err := build_coinbase(rxmsg, payaddr)
|
||||
if err != nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
sjob.Coinbase1 = c1
|
||||
sjob.Coinbase2 = c2
|
||||
|
||||
tslen := len(*rxmsg.Transactions)
|
||||
|
||||
logg.Info("[job]", zap.Int("tslen", tslen))
|
||||
if nowit {
|
||||
tslen = 0
|
||||
logg.Info("[job]", zap.String("nowit", "1"))
|
||||
}
|
||||
|
||||
trans := make([]string, tslen)
|
||||
transdata := make([]string, tslen)
|
||||
for i := 0; i < tslen; i++ {
|
||||
var ts msg.GbtTransaction
|
||||
err = json.Unmarshal((*rxmsg.Transactions)[i], &ts)
|
||||
if err != nil {
|
||||
logg.Error("[job]", zap.String("getblocktemplate", err.Error()))
|
||||
continue
|
||||
}
|
||||
|
||||
if ts.Hash == ts.Txid {
|
||||
trans[i] = ts.Hash
|
||||
} else {
|
||||
trans[i] = ts.Txid
|
||||
}
|
||||
transdata[i] = ts.Data
|
||||
}
|
||||
if tslen > 1 {
|
||||
sjob.Transactions = BuildMerkleTreeStore(&trans)
|
||||
} else {
|
||||
if tslen == 1 {
|
||||
trans[0], err = utility.ReverseS(trans[0])
|
||||
}
|
||||
sjob.Transactions = &trans
|
||||
}
|
||||
sjob.TransData = &transdata
|
||||
|
||||
body, err := json.Marshal(sjob)
|
||||
if err != nil {
|
||||
logg.Error("[job]", zap.String("Marshal", err.Error()))
|
||||
return nil
|
||||
}
|
||||
return body
|
||||
}
|
||||
|
||||
func address_to_pubkeytxn22(in string) string {
|
||||
decoded := base58.Decode(in)
|
||||
logg.Info("[job]", zap.String("address", hex.EncodeToString(decoded)))
|
||||
pubkeytxn := "a914"
|
||||
var pubkeytxnb string
|
||||
if len(decoded) > 21 {
|
||||
var db []byte = decoded[1:21]
|
||||
pubkeytxnb = hex.EncodeToString(db)
|
||||
} else {
|
||||
var db []byte = decoded[1:]
|
||||
pubkeytxnb = hex.EncodeToString(db)
|
||||
}
|
||||
pubkeytxn += pubkeytxnb
|
||||
pubkeytxn += "87"
|
||||
return pubkeytxn
|
||||
}
|
||||
|
||||
func build_coinbase(gbt *msg.GbtMsg, poolpayoutaddr string) (string, string, error) {
|
||||
|
||||
var coinbase1 string
|
||||
coinbase1 = "01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff"
|
||||
|
||||
signheader := "/m2pool.com/"
|
||||
var coinbase2 string = "0c" + hex.EncodeToString([]byte(signheader))
|
||||
|
||||
coinbase2 += "0000000002"
|
||||
|
||||
coinbase1 += "1F"
|
||||
heightb := make([]byte, 4)
|
||||
binary.LittleEndian.PutUint32(heightb, gbt.Height)
|
||||
if gbt.Height < 0x100 {
|
||||
coinbase1 += "01"
|
||||
} else {
|
||||
if gbt.Height < 0x10000 {
|
||||
coinbase1 += "02"
|
||||
} else {
|
||||
if gbt.Height < 0x1000000 {
|
||||
coinbase1 += "03"
|
||||
} else {
|
||||
coinbase1 += "04"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
coinbase1 += hex.EncodeToString(heightb)[:6]
|
||||
timeb := make([]byte, 4)
|
||||
binary.LittleEndian.PutUint32(timeb, uint32(time.Now().Unix()))
|
||||
coinbase1 += "04"
|
||||
coinbase1 += hex.EncodeToString(timeb)
|
||||
coinbase1 += "08"
|
||||
|
||||
logg.Info("[job]", zap.String("coinbase1", coinbase1))
|
||||
|
||||
coinbasevalueb := make([]byte, 8)
|
||||
binary.LittleEndian.PutUint64(coinbasevalueb, gbt.Coinbasevalue)
|
||||
coinbase2 += hex.EncodeToString(coinbasevalueb)
|
||||
coinbase2 += "17"
|
||||
coinbase2 += address_to_pubkeytxn22(poolpayoutaddr)
|
||||
coinbase2 += "0000000000000000"
|
||||
witlen := fmt.Sprintf("%02x", len(gbt.Segwit)/2)
|
||||
coinbase2 += witlen
|
||||
coinbase2 += gbt.Segwit
|
||||
|
||||
coinbase2 += "00000000"
|
||||
logg.Info("[job]", zap.String("coinbase2", coinbase2))
|
||||
return coinbase1, coinbase2, nil
|
||||
}
|
||||
|
||||
func nextPowerOfTwo(n int) int {
|
||||
// Return the number if it's already a power of 2.
|
||||
if n&(n-1) == 0 {
|
||||
return int(math.Log2(float64(n)))
|
||||
}
|
||||
|
||||
// Figure out and return the next power of two.
|
||||
exponent := int(math.Log2(float64(n))) + 1
|
||||
return exponent // 2^exponent
|
||||
}
|
||||
|
||||
func HashMerkleBranches(left *chainhash.Hash, right *chainhash.Hash) *chainhash.Hash {
|
||||
// Check for nil parameters
|
||||
if left == nil || right == nil {
|
||||
return nil // or handle error as appropriate
|
||||
}
|
||||
// Concatenate the left and right nodes.
|
||||
var hash [chainhash.HashSize * 2]byte
|
||||
copy(hash[:chainhash.HashSize], left[:])
|
||||
copy(hash[chainhash.HashSize:], right[:])
|
||||
|
||||
newHash := chainhash.DoubleHashH(hash[:])
|
||||
return &newHash
|
||||
}
|
||||
|
||||
func BuildMerkleTreeStore(transactions *[]string) *[]string {
|
||||
// Calculate how many entries are required to hold the binary merkle
|
||||
// tree as a linear array and create an array of that size.
|
||||
ts_size := len(*transactions)
|
||||
if ts_size == 1 {
|
||||
ts_string := make([]string, 1)
|
||||
ts_string[0], _ = utility.ReverseS((*transactions)[0])
|
||||
return &ts_string
|
||||
}
|
||||
exp := nextPowerOfTwo(ts_size + 1)
|
||||
|
||||
var all_size int = 0
|
||||
var temp_size = ts_size - 1
|
||||
var size int = 0
|
||||
for i := 0; i < exp-1; i++ {
|
||||
size = 1 + i + temp_size/2 + temp_size%2
|
||||
|
||||
if size < exp {
|
||||
size = exp
|
||||
}
|
||||
|
||||
all_size += size
|
||||
temp_size = size - i - 2
|
||||
|
||||
}
|
||||
arraySize := ts_size + all_size
|
||||
|
||||
merkles := make([]*chainhash.Hash, arraySize)
|
||||
|
||||
// Create the base transaction hashes and populate the array with them.
|
||||
|
||||
for i := range *transactions {
|
||||
// If we're computing a witness merkle root, instead of the
|
||||
// regular txid, we use the modified wtxid which includes a
|
||||
// transaction's witness data within the digest. Additionally,
|
||||
// the coinbase's wtxid is all zeroes.
|
||||
|
||||
merkles[i], _ = chainhash.NewHashFromStr((*transactions)[i])
|
||||
}
|
||||
|
||||
// Start the array offset after the last transaction and adjusted to the
|
||||
// next power of two.
|
||||
offset := ts_size
|
||||
|
||||
all_size = ts_size
|
||||
size = ts_size
|
||||
var start int = 0
|
||||
|
||||
temp_size = ts_size - 1
|
||||
for i := 0; i < exp-1; i++ {
|
||||
for j := 0; j <= i; j++ {
|
||||
merkles[offset] = merkles[start]
|
||||
offset++
|
||||
start++
|
||||
}
|
||||
for ; start < all_size; start += 2 {
|
||||
if start+1 >= all_size {
|
||||
newHash := HashMerkleBranches(merkles[start], merkles[start])
|
||||
merkles[offset] = newHash
|
||||
offset++
|
||||
start++
|
||||
break
|
||||
} else {
|
||||
newHash := HashMerkleBranches(merkles[start], merkles[start+1])
|
||||
merkles[offset] = newHash
|
||||
offset++
|
||||
}
|
||||
}
|
||||
size = 1 + i + temp_size/2 + temp_size%2
|
||||
|
||||
if size <= exp {
|
||||
size = exp
|
||||
}
|
||||
all_size += size
|
||||
temp_size = size - i - 2
|
||||
|
||||
}
|
||||
|
||||
merkles_string := make([]string, exp)
|
||||
var j int = 0
|
||||
for i := offset - int(exp); i < offset; i++ {
|
||||
merkles_string[j], _ = utility.ReverseS(merkles[i].String())
|
||||
j++
|
||||
}
|
||||
|
||||
logg.Info("[job]", zap.Any("merkles bytes", merkles_string))
|
||||
return &merkles_string
|
||||
}
|
|
@ -0,0 +1,858 @@
|
|||
// mona.go
|
||||
package mona
|
||||
|
||||
import (
|
||||
"encoding/binary"
|
||||
"encoding/hex"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"log"
|
||||
"math"
|
||||
"sync/atomic"
|
||||
|
||||
//"pool/internal/cache"
|
||||
"pool/internal/db"
|
||||
"pool/internal/gbt/coin"
|
||||
"pool/internal/gbt/dbif"
|
||||
"pool/internal/msg"
|
||||
"pool/internal/utility"
|
||||
"time"
|
||||
|
||||
"database/sql"
|
||||
|
||||
"github.com/btcsuite/btcd/chaincfg/chainhash"
|
||||
"github.com/btcsuite/btcutil/base58"
|
||||
|
||||
//"github.com/btcsuite/btcd/rpcclient"
|
||||
_ "github.com/mattn/go-sqlite3"
|
||||
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
const GBT_MONA_VERSION string = "mona v3.0l"
|
||||
|
||||
type MonaAddrConfig struct {
|
||||
Addr string `json:"addr"`
|
||||
}
|
||||
|
||||
type MonaConfig struct {
|
||||
Mona MonaAddrConfig `json:"mona"`
|
||||
}
|
||||
|
||||
type GbtMonaContext struct {
|
||||
Config MonaConfig
|
||||
GbtCtx *coin.GbtContext
|
||||
|
||||
last_time time.Time
|
||||
last_gbt msg.GbtMsg
|
||||
|
||||
Submits float64
|
||||
|
||||
addressIndex int
|
||||
|
||||
new_block_chan chan int
|
||||
new_block_index int
|
||||
|
||||
last_height uint32
|
||||
}
|
||||
|
||||
var logg *zap.Logger
|
||||
var GbtMonaCtx GbtMonaContext
|
||||
|
||||
type BlockCheckData struct {
|
||||
Height int
|
||||
Nonce string
|
||||
User string
|
||||
Miner string
|
||||
MinerId string
|
||||
Hash string
|
||||
SubIdx int
|
||||
}
|
||||
|
||||
type PushBlkNewMsg struct {
|
||||
Coin string `json:"coin"`
|
||||
Height int `json:"height"`
|
||||
Nonce string `json:"nonce"`
|
||||
}
|
||||
|
||||
func update_block_confirm(gbt *GbtMonaContext) {
|
||||
db, err := sql.Open("sqlite3", "./blocks.db")
|
||||
if err != nil {
|
||||
//log.Printf("Error opening database: %v", err)
|
||||
logg.Error("[gbt]", zap.String("Error opening database", err.Error()))
|
||||
return
|
||||
}
|
||||
defer db.Close()
|
||||
|
||||
query := "SELECT user,miner,minerid,height,nonce,hash,subidx FROM blocks WHERE checked=0 AND created_at >= datetime('now', '-30 minutes') order by id desc limit 2"
|
||||
rows, err := db.Query(query)
|
||||
if err != nil {
|
||||
//log.Printf("Error executing query from blocks: %v", err)
|
||||
logg.Error("[gbt]", zap.String("Error executing query from blocks:", err.Error()))
|
||||
return
|
||||
}
|
||||
defer rows.Close()
|
||||
|
||||
var blocks []BlockCheckData
|
||||
for rows.Next() {
|
||||
var height int
|
||||
var nonce string
|
||||
var user string
|
||||
var miner string
|
||||
var minerid string
|
||||
var hash string
|
||||
var subidx int
|
||||
if err := rows.Scan(&user, &miner, &minerid, &height, &nonce, &hash, &subidx); err != nil {
|
||||
//log.Printf("Error scanning row in blocks: %v", err)
|
||||
logg.Error("[gbt]", zap.String("Error scanning row in blocks:", err.Error()))
|
||||
return
|
||||
}
|
||||
var blockdata BlockCheckData
|
||||
blockdata.Height = height
|
||||
blockdata.Nonce = nonce
|
||||
blockdata.User = user
|
||||
blockdata.Miner = miner
|
||||
blockdata.MinerId = minerid
|
||||
blockdata.Hash = hash
|
||||
blockdata.SubIdx = subidx
|
||||
|
||||
blocks = append(blocks, blockdata)
|
||||
//fmt.Printf("blocks - Height: %d, Nonce: %d\n", height, nonce)
|
||||
//log.Printf("update block height %d nonce %s, subidx %d, user %s", height, nonce, subidx, user+"."+miner+"_"+minerid)
|
||||
}
|
||||
for _, block := range blocks {
|
||||
block_hash, err := gbt.GbtCtx.Client.GetBlockHash(int64(block.Height))
|
||||
if err != nil {
|
||||
logg.Info("[gbt]", zap.String("GetBlockHash ", err.Error()))
|
||||
continue
|
||||
}
|
||||
rawmsgs := make([]json.RawMessage, 1)
|
||||
param_str := `"` + block_hash.String() + `"`
|
||||
rawmsgs[0] = json.RawMessage(param_str)
|
||||
result, err := gbt.GbtCtx.Client.RawRequest("getblockheader", rawmsgs)
|
||||
if err != nil {
|
||||
//log.Printf("getblockheader %s", err.Error())
|
||||
logg.Error("[gbt]", zap.String("getblockheader", err.Error()))
|
||||
continue
|
||||
}
|
||||
//log.Printf("getblockheader %d %s:%v", block.Height, block_hash, result)
|
||||
var blockHeader msg.GetBlockHeaderMsgInt
|
||||
err = json.Unmarshal(result, &blockHeader)
|
||||
if err != nil {
|
||||
//log.Printf("getblockheader Unmarshal %s", err.Error())
|
||||
logg.Error("[gbt]", zap.String("getblockheader Unmarshal ", fmt.Sprint(block.Height)+" "+err.Error()))
|
||||
continue
|
||||
}
|
||||
|
||||
rawmsgs_stats := make([]json.RawMessage, 1)
|
||||
rawmsgs_stats[0] = json.RawMessage(param_str)
|
||||
result_stats, err := gbt.GbtCtx.Client.RawRequest("getblockstats", rawmsgs_stats)
|
||||
if err != nil {
|
||||
//log.Printf("getblockstats %s", err.Error())
|
||||
logg.Error("[gbt]", zap.String("getblockstats", err.Error()))
|
||||
continue
|
||||
}
|
||||
//log.Printf("getblockheader %d %s:%v", block.Height, block_hash, result)
|
||||
var blockStats msg.GetBlockStatsMsg
|
||||
err = json.Unmarshal(result_stats, &blockStats)
|
||||
if err != nil {
|
||||
//log.Printf("getblockstats Unmarshal %s", err.Error())
|
||||
logg.Error("[gbt]", zap.String("getblockstats Unmarshal ", fmt.Sprint(block.Height)+" "+err.Error()))
|
||||
continue
|
||||
}
|
||||
|
||||
if blockHeader.Confirmations > 3 {
|
||||
//log.Printf("cmp block: %d %s vs %s %s", block.Height, block.Nonce, string(result), blockHeader.Nonce)
|
||||
//log.Printf("cmp block: %d %s %s_%s_%s vs %s\n", block.Height, block.Nonce, block.User, block.Miner, block.MinerId, blockHeader.Nonce)
|
||||
nonceb := utility.Uint32ToByteBig(blockHeader.Nonce)
|
||||
nonces := hex.EncodeToString(nonceb)
|
||||
if nonces == block.Nonce {
|
||||
|
||||
block_height := int64(block.Height)
|
||||
/*dbif.NotifyMinerSuccess(gbt.GbtCtx, block.User, block.Miner, block.MinerId, block_height, "", block.Nonce, int64(block.SubIdx), blockStats.Subsidy, blockStats.Totalfee)
|
||||
dbif.NotifyUsersBlkStatsSuccess(gbt.GbtCtx, block.User, block_height, "", block.Nonce, int64(block.SubIdx), blockStats.Subsidy, blockStats.Totalfee)*/
|
||||
dbif.NotifyPoolBlkStatsSuccess(gbt.GbtCtx, block_height, "", block.Nonce, int64(block.SubIdx), blockStats.Subsidy, blockStats.Totalfee)
|
||||
dbif.NotifyBlkDetailSuccess(gbt.GbtCtx, block_height, "", block.Nonce, int64(block.SubIdx))
|
||||
/*dbif.NotifyBlockStat(gbt.GbtCtx, block.User, block.Miner, block.MinerId, blockStats.Subsidy, blockStats.Totalfee)*/
|
||||
//dbif.NotifyBlkNewSuccess(gbt.GbtCtx, block_height, "", block.Nonce, -1)
|
||||
dbif.NotifyBlkNewDb(gbt.GbtCtx, block_height, block.Hash, true, block.Nonce, int64(block.SubIdx))
|
||||
|
||||
//gbt.GbtCtx.Blocks += 1
|
||||
//cache.StorePoolCache(gbt.GbtCtx.RedisClient, gbt.GbtCtx.Coin, "blocks", gbt.GbtCtx.Blocks)
|
||||
|
||||
//gbt.GbtCtx.Reward += blockStats.Subsidy
|
||||
//cache.StorePoolCache(gbt.GbtCtx.RedisClient, gbt.GbtCtx.Coin, "reward", gbt.GbtCtx.Reward)
|
||||
|
||||
//gbt.GbtCtx.Fee += blockStats.Totalfee
|
||||
//cache.StorePoolCache(gbt.GbtCtx.RedisClient, gbt.GbtCtx.Coin, "fee", gbt.GbtCtx.Fee)
|
||||
|
||||
/*var pushmsg PushBlkNewMsg
|
||||
pushmsg.Coin = gbt.GbtCtx.Coin
|
||||
pushmsg.Height = block.Height
|
||||
pushmsg.Nonce = block.Nonce
|
||||
|
||||
jsonData, err := json.Marshal(pushmsg)
|
||||
if err != nil {
|
||||
//log.Printf("Failed to marshal JSON: %v", err)
|
||||
logg.Error("[gbt]", zap.String("Failed to marshal JSON:", err.Error()))
|
||||
continue
|
||||
}
|
||||
if gbt.GbtCtx.PushCh == nil {
|
||||
gbt.GbtCtx.PushCh = utility.InitZmqPush(gbt.GbtCtx.Config.Profit.Push)
|
||||
}
|
||||
if gbt.GbtCtx.PushCh != nil {
|
||||
err = gbt.GbtCtx.PushCh.SendMessage([][]byte{[]byte("blk_new"), jsonData})
|
||||
if err != nil {
|
||||
//log.Printf("Failed to send data: %v", err)
|
||||
logg.Error("[gbt]", zap.String("Failed to SendMessage:", err.Error()))
|
||||
continue
|
||||
}
|
||||
}*/
|
||||
|
||||
updateSQL := `UPDATE blocks SET checked = 1 WHERE height = ? AND nonce = ? AND checked = 0`
|
||||
_, err = db.Exec(updateSQL, block.Height, block.Nonce)
|
||||
if err != nil {
|
||||
//log.Printf("Error updating blk_new: %v", err)
|
||||
logg.Error("[gbt]", zap.String("Error updating blk_new:", err.Error()))
|
||||
continue
|
||||
}
|
||||
//log.Printf("update block success: %d %s", block.Height, block.Nonce)
|
||||
logg.Warn("[gbt]", zap.String("update block success:", fmt.Sprint(block.Height)+" "+block.Nonce))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func get_gbt_msg(gbt *GbtMonaContext) []byte {
|
||||
rawmsgs := make([]json.RawMessage, 1)
|
||||
//rawmsgs[0] = json.RawMessage(`{"capabilities": ["coinbasetxn", "workid", "coinbase/append"],"rules":["segwit"]}`)
|
||||
rawmsgs[0] = json.RawMessage(`{"rules":["segwit"]}`)
|
||||
result, err := gbt.GbtCtx.Client.RawRequest("getblocktemplate", rawmsgs)
|
||||
if err != nil {
|
||||
logg.Error("[gbt]", zap.String("getblocktemplate", err.Error()))
|
||||
return nil
|
||||
}
|
||||
|
||||
var rxmsg msg.GbtMsg // 获取任务的结构
|
||||
err = json.Unmarshal(result, &rxmsg)
|
||||
if err != nil {
|
||||
logg.Error("[gbt]", zap.String("getblocktemplate", err.Error()))
|
||||
return nil
|
||||
}
|
||||
|
||||
for i := 0; i < len(*rxmsg.Transactions); i++ {
|
||||
var ts msg.GbtTransaction
|
||||
err = json.Unmarshal((*rxmsg.Transactions)[i], &ts)
|
||||
if err != nil {
|
||||
logg.Error("[gbt]", zap.String("Unmarshal Transactions", err.Error()))
|
||||
continue
|
||||
}
|
||||
//logg.Debug("[gbt]", zap.String("ts.Hash", ts.Hash))
|
||||
}
|
||||
|
||||
if rxmsg.Previousblockhash == gbt.last_gbt.Previousblockhash {
|
||||
if time.Now().Sub(gbt.last_time) < time.Duration(gbt.GbtCtx.Config.Rpc.Timeout)*time.Millisecond {
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
gbtstr := fmt.Sprintf("version %x, prev %s, coinbase %x, longpoolid %s, target %s time %x, bits %s, height %d", rxmsg.Version, rxmsg.Previousblockhash, rxmsg.Coinbasevalue, rxmsg.Longpollid, rxmsg.Target, rxmsg.Curtime, rxmsg.Bits, rxmsg.Height)
|
||||
logg.Debug("[gbt]", zap.String(" ", gbtstr))
|
||||
|
||||
body := new_job_from_gbt(gbt, &rxmsg)
|
||||
|
||||
gbt.last_gbt = rxmsg
|
||||
|
||||
gbt.last_time = time.Now()
|
||||
|
||||
return body
|
||||
}
|
||||
|
||||
func gbt_notify_running(gbt *GbtMonaContext) {
|
||||
for {
|
||||
if !gbt.GbtCtx.Started {
|
||||
break
|
||||
}
|
||||
if gbt.GbtCtx.NodeSubCh == nil {
|
||||
gbt.GbtCtx.NodeSubCh = utility.InitZmqSub(gbt.GbtCtx.Config.Rpc.ZmqSub, utility.BITCOIND_ZMQ_HASHBLOCK)
|
||||
}
|
||||
if gbt.GbtCtx.NodeSubCh != nil {
|
||||
cmsg_sub, err := gbt.GbtCtx.NodeSubCh.RecvMessage()
|
||||
if err != nil {
|
||||
if !gbt.GbtCtx.Started {
|
||||
break
|
||||
}
|
||||
gbt.GbtCtx.NodeSubCh.SetSubscribe(utility.BITCOIND_ZMQ_HASHBLOCK)
|
||||
gbt.GbtCtx.NodeSubCh.Connect(gbt.GbtCtx.Config.Rpc.ZmqSub)
|
||||
continue
|
||||
}
|
||||
if len(cmsg_sub) >= 2 {
|
||||
if string(cmsg_sub[0]) == "hashblock" {
|
||||
GbtMonaCtx.new_block_index = GbtMonaCtx.new_block_index + 1
|
||||
//log.Println("gbt_notify_running", hex.EncodeToString(cmsg_sub[1]), GbtMonaCtx.new_block_index)
|
||||
gbt.new_block_chan <- GbtMonaCtx.new_block_index
|
||||
|
||||
}
|
||||
}
|
||||
} else {
|
||||
logg.Error("[gbt]", zap.String("notify", "NodeSubCh fail!"))
|
||||
time.Sleep(time.Duration(1) * time.Second)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func gbt_running(gbt *GbtMonaContext) {
|
||||
gbtmsg := get_gbt_msg(gbt)
|
||||
if gbtmsg != nil {
|
||||
if gbt.GbtCtx.PubCh == nil {
|
||||
gbt.GbtCtx.PubCh = utility.InitZmqPub(gbt.GbtCtx.Config.Zmq.Pub)
|
||||
}
|
||||
if gbt.GbtCtx.PubCh != nil {
|
||||
for trycnt := 0; trycnt < 3; trycnt++ {
|
||||
err := gbt.GbtCtx.PubCh.SendMessage([][]byte{[]byte("jobmona"), gbtmsg})
|
||||
if err != nil {
|
||||
if !gbt.GbtCtx.Started {
|
||||
return
|
||||
}
|
||||
//gbt.GbtCtx.PubCh.Bind(gbt.GbtCtx.Config.Zmq.Pub)
|
||||
logg.Warn("[gbt]", zap.String("job ", err.Error()))
|
||||
} else {
|
||||
//gbt.GbtCtx.PubCh.SendChan <- [][]byte{[]byte("jobmona"), gbtmsg}
|
||||
logg.Warn("[gbt]", zap.String("job ", "sent"))
|
||||
break
|
||||
}
|
||||
}
|
||||
//gbt.GbtCtx.AlivingChan <- true
|
||||
atomic.StoreInt32(&(gbt.GbtCtx.FlagAliving), 1)
|
||||
} else {
|
||||
logg.Warn("[gbt]", zap.String("job ", "sent failed! PubCh nil"))
|
||||
}
|
||||
atomic.StoreInt32(&(gbt.GbtCtx.FlagAliving), 1)
|
||||
} else {
|
||||
atomic.StoreInt32(&(gbt.GbtCtx.FlagAliving), 1)
|
||||
}
|
||||
|
||||
timer := time.NewTimer(time.Duration(gbt.GbtCtx.Config.Rpc.Timeout) * time.Millisecond)
|
||||
defer timer.Stop()
|
||||
|
||||
for {
|
||||
if !gbt.GbtCtx.Started {
|
||||
break
|
||||
}
|
||||
|
||||
new_block_notify := false
|
||||
|
||||
select {
|
||||
case blk_idx := <-gbt.new_block_chan:
|
||||
log.Println("new block chan", blk_idx)
|
||||
new_block_notify = true
|
||||
if !timer.Stop() {
|
||||
<-timer.C
|
||||
}
|
||||
timer.Reset(time.Duration(gbt.GbtCtx.Config.Rpc.Timeout) * time.Millisecond)
|
||||
|
||||
case <-gbt.GbtCtx.ExitGbtChan:
|
||||
logg.Error("[gbt]", zap.String("gbt", "exit"))
|
||||
return
|
||||
case <-time.After(time.Duration(gbt.GbtCtx.Config.Rpc.Timeout) * time.Millisecond):
|
||||
log.Println("poll gbt timeout")
|
||||
timer.Reset(time.Duration(gbt.GbtCtx.Config.Rpc.Timeout) * time.Millisecond)
|
||||
}
|
||||
/*if check_bestblockhash(gbt) {*/
|
||||
gbtmsg := get_gbt_msg(gbt)
|
||||
if gbtmsg != nil {
|
||||
//check_preblock(gbt, DbCtx)
|
||||
if gbt.GbtCtx.PubCh == nil {
|
||||
gbt.GbtCtx.PubCh = utility.InitZmqPub(gbt.GbtCtx.Config.Zmq.Pub)
|
||||
}
|
||||
if gbt.GbtCtx.PubCh != nil {
|
||||
for trycnt := 0; trycnt < 3; trycnt++ {
|
||||
err := gbt.GbtCtx.PubCh.SendMessage([][]byte{[]byte("jobmona"), gbtmsg})
|
||||
if err != nil {
|
||||
logg.Warn("[gbt]", zap.String("job ", err.Error()))
|
||||
continue
|
||||
} else {
|
||||
//gbt.GbtCtx.PubCh.SendChan <- [][]byte{[]byte("jobmona"), gbtmsg}
|
||||
logg.Warn("[gbt]", zap.String("job ", "sent"))
|
||||
break
|
||||
}
|
||||
}
|
||||
//gbt.GbtCtx.AlivingChan <- true
|
||||
atomic.StoreInt32(&(gbt.GbtCtx.FlagAliving), 1)
|
||||
} else {
|
||||
logg.Warn("[gbt]", zap.String("job ", "sent failed! PubCh nil"))
|
||||
}
|
||||
} else {
|
||||
atomic.StoreInt32(&(gbt.GbtCtx.FlagAliving), 1)
|
||||
}
|
||||
|
||||
if new_block_notify {
|
||||
update_block_confirm(gbt)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func monaInit(config *MonaConfig) {
|
||||
data, err := ioutil.ReadFile("gbt.conf")
|
||||
if err != nil {
|
||||
panic(err.Error())
|
||||
}
|
||||
if err = json.Unmarshal(data, &config); err != nil {
|
||||
panic(err.Error())
|
||||
}
|
||||
}
|
||||
|
||||
func Init(GbtCtx *coin.GbtContext, DbCtx *db.DbContext) {
|
||||
GbtMonaCtx.GbtCtx = GbtCtx
|
||||
|
||||
GbtMonaCtx.last_height = 0
|
||||
|
||||
monaInit(&GbtMonaCtx.Config)
|
||||
|
||||
GbtMonaCtx.last_time = time.Now()
|
||||
logg = GbtCtx.Log
|
||||
GbtMonaCtx.new_block_chan = make(chan int, 256)
|
||||
GbtMonaCtx.new_block_index = 0
|
||||
logg.Info("[gbt]", zap.String("gbt_mona_version", GBT_MONA_VERSION))
|
||||
}
|
||||
|
||||
func Start() {
|
||||
go gbt_running(&GbtMonaCtx)
|
||||
go gbt_notify_running(&GbtMonaCtx)
|
||||
go submit_block_running(&GbtMonaCtx)
|
||||
}
|
||||
|
||||
func Stop() {
|
||||
defer close(GbtMonaCtx.new_block_chan)
|
||||
}
|
||||
|
||||
func new_block_into_db(block *GbtMonaContext, user string, miner string, minerid string, height int64, nonce string, hash string, subidx int64) bool {
|
||||
db, err := sql.Open("sqlite3", "./blocks.db")
|
||||
if err != nil {
|
||||
log.Printf("Error opening database: %v", err)
|
||||
return false
|
||||
}
|
||||
defer db.Close()
|
||||
|
||||
createTableSQL := `
|
||||
CREATE TABLE IF NOT EXISTS blocks (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
user TEXT NOT NULL,
|
||||
miner TEXT NOT NULL,
|
||||
minerid TEXT NOT NULL,
|
||||
height INTEGER,
|
||||
nonce TEXT NOT NULL,
|
||||
hash TEXT NOT NULL,
|
||||
subidx INTEGER,
|
||||
checked INTEGER,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||
);`
|
||||
_, err = db.Exec(createTableSQL)
|
||||
if err != nil {
|
||||
log.Printf("Error creating table: %v", err)
|
||||
return false
|
||||
}
|
||||
|
||||
insertSQL := `INSERT INTO blocks (user, miner, minerid, height, nonce, checked, hash, subidx) VALUES (?, ?, ?, ?, ?, ?, ?, ?)`
|
||||
_, err = db.Exec(insertSQL, user, miner, minerid, height, nonce, 0, hash, subidx)
|
||||
if err != nil {
|
||||
log.Printf("Error inserting data from blocks %s: %v", fmt.Sprint(height), err)
|
||||
return false
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
func submit_block_running(block *GbtMonaContext) {
|
||||
logg.Info("[block]", zap.String("submit_block_running", "Start."))
|
||||
for {
|
||||
if !block.GbtCtx.Started {
|
||||
break
|
||||
}
|
||||
if block.GbtCtx.SubCh == nil {
|
||||
block.GbtCtx.SubCh = utility.InitZmqSub(block.GbtCtx.Config.Zmq.Sub, "blk"+block.GbtCtx.Coin)
|
||||
}
|
||||
if block.GbtCtx.SubCh != nil {
|
||||
cmsg_sub, err := block.GbtCtx.SubCh.RecvMessage()
|
||||
if err != nil {
|
||||
if !block.GbtCtx.Started {
|
||||
break
|
||||
}
|
||||
/*block.GbtCtx.SubCh.Destroy()
|
||||
block.GbtCtx.SubCh = nil*/
|
||||
time.Sleep(time.Duration(1) * time.Second)
|
||||
block.GbtCtx.SubCh.SetSubscribe("blk" + block.GbtCtx.Coin)
|
||||
block.GbtCtx.SubCh.Connect(block.GbtCtx.Config.Zmq.Sub)
|
||||
//block.GbtCtx.SubCh.SetMaxmsgsize(1024 * 1024 * 8)
|
||||
continue
|
||||
}
|
||||
|
||||
//log.Println(cmsg_sub, len(cmsg_sub), block.GbtCtx.SubCh)
|
||||
if len(cmsg_sub) >= 2 {
|
||||
if string(cmsg_sub[0]) == "blkmona" {
|
||||
cmsg := cmsg_sub[1]
|
||||
//block data
|
||||
msgb := make([]byte, len(cmsg)-16)
|
||||
copy(msgb, cmsg)
|
||||
|
||||
//height
|
||||
//heightb := make([]byte, 4)
|
||||
heightb, err := hex.DecodeString(string(cmsg[len(msgb) : len(msgb)+8]))
|
||||
if err != nil {
|
||||
//block.Consumer.MarkOffset(cmsg, "")
|
||||
logg.Error("[block]", zap.String("failed to decode height", err.Error()))
|
||||
continue
|
||||
}
|
||||
var height uint32 = utility.ByteToUint32(heightb)
|
||||
logg.Warn("[block]", zap.Uint32("height", height))
|
||||
|
||||
if height <= block.last_height {
|
||||
continue
|
||||
}
|
||||
block.last_height = height
|
||||
|
||||
//index
|
||||
//indexb := make([]byte, 4)
|
||||
indexb, err1 := hex.DecodeString(string(cmsg[len(msgb)+8:]))
|
||||
if err1 != nil {
|
||||
//block.Consumer.MarkOffset(cmsg, "")
|
||||
logg.Error("[block]", zap.String("failed to decode index", err1.Error()))
|
||||
continue
|
||||
}
|
||||
//copy(indexb, cmsg.Value[len(msgb)+4:])
|
||||
var index uint32 = utility.ByteToUint32(indexb)
|
||||
logg.Warn("[block]", zap.Uint32("index", index))
|
||||
|
||||
logg.Debug("[block]", zap.String("msg", string(cmsg)), zap.String("blk", string(msgb)))
|
||||
var monablock msg.BlockGrsMsg
|
||||
if err := json.Unmarshal(msgb, &monablock); err != nil {
|
||||
//block.Consumer.MarkOffset(cmsg, "")
|
||||
logg.Error("[block]", zap.String("failed to Unmarshal job", err.Error()))
|
||||
continue
|
||||
}
|
||||
|
||||
blk := hex.EncodeToString(monablock.Data)
|
||||
rawmsgs := make([]json.RawMessage, 1)
|
||||
logg.Info("[block]", zap.String("blk", blk))
|
||||
rawmsgs[0] = json.RawMessage(`"` + blk + `"`)
|
||||
//var last_result json.RawMessage
|
||||
|
||||
result, err := block.GbtCtx.Client.RawRequest("submitblock", rawmsgs)
|
||||
if err != nil {
|
||||
logg.Error("[block]", zap.String("submitblock", err.Error()))
|
||||
} else {
|
||||
//last_result = result
|
||||
}
|
||||
logg.Info("[block]", zap.String("result", string(result)))
|
||||
|
||||
/*dbif.NotifyMinerSubmitResult(block.GbtCtx, monablock.User, monablock.Miner, monablock.Index, int64(height), monablock.Pow, string(result), monablock.Nonce, monablock.SubIdx)
|
||||
dbif.NotifyUsersBlkStatsSubmitResult(block.GbtCtx, monablock.User, int64(height), monablock.Pow, string(result), monablock.Nonce, monablock.SubIdx)*/
|
||||
dbif.NotifyPoolBlkStatsSubmitResult(block.GbtCtx, int64(height), monablock.Pow, string(result), monablock.Nonce, monablock.SubIdx)
|
||||
|
||||
block.Submits += 1
|
||||
//log.Printf("[block] height %d subidx %d nonce %s\n", height, monablock.SubIdx, monablock.Nonce)
|
||||
logg.Warn("[block]", zap.Float64("total submits", block.Submits), zap.Int64("SubIdx", monablock.SubIdx))
|
||||
if string(result) == "null" {
|
||||
new_block_into_db(block, monablock.User, monablock.Miner, monablock.Index, int64(height), monablock.Nonce, monablock.Pow, monablock.SubIdx)
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
logg.Error("[block]", zap.String("block", "SubCh failed! retry"))
|
||||
time.Sleep(time.Duration(1) * time.Second)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func new_job_from_gbt(gbt *GbtMonaContext, rxmsg *msg.GbtMsg) []byte {
|
||||
var sjob msg.StratumJob
|
||||
|
||||
sjob.Job_id = ""
|
||||
sjob.IsClean = false
|
||||
if rxmsg.Height != gbt.last_gbt.Height {
|
||||
sjob.IsClean = true
|
||||
}
|
||||
vb := make([]byte, 4)
|
||||
binary.LittleEndian.PutUint32(vb, uint32(rxmsg.Version))
|
||||
sjob.Version = int32(binary.BigEndian.Uint32(vb))
|
||||
sjob.PrevblockS = rxmsg.Previousblockhash
|
||||
pb, err := hex.DecodeString(rxmsg.Previousblockhash)
|
||||
sjob.PrevblockBig = hex.EncodeToString(utility.Reverse(utility.Convert_big_endian(pb)))
|
||||
bb, _ := hex.DecodeString(rxmsg.Bits)
|
||||
sjob.Bits = binary.LittleEndian.Uint32(bb)
|
||||
sjob.BitsS = rxmsg.Bits
|
||||
tb := make([]byte, 4)
|
||||
binary.BigEndian.PutUint32(tb, rxmsg.Curtime)
|
||||
t := binary.LittleEndian.Uint32(tb)
|
||||
sjob.Timestamp = time.Unix(int64(t), 0)
|
||||
sjob.Mintime = rxmsg.Mintime
|
||||
sjob.Extranonce2_size = 4
|
||||
sjob.Target = rxmsg.Target
|
||||
sjob.Height = rxmsg.Height
|
||||
|
||||
var nowit bool = false
|
||||
tslen_nowit := len(*rxmsg.Transactions)
|
||||
for i := 0; i < tslen_nowit; i++ {
|
||||
var ts msg.GbtTransaction
|
||||
err = json.Unmarshal((*rxmsg.Transactions)[i], &ts)
|
||||
if err != nil {
|
||||
logg.Error("[job]", zap.String("getblocktemplate", err.Error()))
|
||||
continue
|
||||
}
|
||||
if ts.Hash == ts.Txid {
|
||||
} else {
|
||||
}
|
||||
}
|
||||
if nowit {
|
||||
rxmsg.Coinbasevalue = 1250000000
|
||||
logg.Info("[job]", zap.String("nowit", "1"))
|
||||
}
|
||||
|
||||
payaddr := gbt.Config.Mona.Addr
|
||||
if len(gbt.GbtCtx.MinerAddrs) > 0 {
|
||||
payaddr = gbt.GbtCtx.MinerAddrs[gbt.GbtCtx.MinerAddrIndex]
|
||||
gbt.GbtCtx.MinerAddrIndex = gbt.GbtCtx.MinerAddrIndex + 1
|
||||
if gbt.GbtCtx.MinerAddrIndex >= len(gbt.GbtCtx.MinerAddrs) {
|
||||
gbt.GbtCtx.MinerAddrIndex = 0
|
||||
}
|
||||
}
|
||||
|
||||
c1, c2, err := build_coinbase(rxmsg, payaddr)
|
||||
if err != nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
sjob.Coinbase1 = c1
|
||||
sjob.Coinbase2 = c2
|
||||
|
||||
tslen := len(*rxmsg.Transactions)
|
||||
|
||||
logg.Info("[job]", zap.Int("tslen", tslen))
|
||||
if nowit {
|
||||
tslen = 0
|
||||
logg.Info("[job]", zap.String("nowit", "1"))
|
||||
}
|
||||
|
||||
trans := make([]string, tslen)
|
||||
transdata := make([]string, tslen)
|
||||
for i := 0; i < tslen; i++ {
|
||||
var ts msg.GbtTransaction
|
||||
err = json.Unmarshal((*rxmsg.Transactions)[i], &ts)
|
||||
if err != nil {
|
||||
logg.Error("[job]", zap.String("getblocktemplate", err.Error()))
|
||||
continue
|
||||
}
|
||||
|
||||
if ts.Hash == ts.Txid {
|
||||
trans[i] = ts.Hash
|
||||
} else {
|
||||
trans[i] = ts.Txid
|
||||
}
|
||||
transdata[i] = ts.Data
|
||||
}
|
||||
if tslen > 1 {
|
||||
sjob.Transactions = BuildMerkleTreeStore(&trans)
|
||||
} else {
|
||||
if tslen == 1 {
|
||||
trans[0], err = utility.ReverseS(trans[0])
|
||||
}
|
||||
sjob.Transactions = &trans
|
||||
}
|
||||
sjob.TransData = &transdata
|
||||
|
||||
body, err := json.Marshal(sjob)
|
||||
if err != nil {
|
||||
logg.Error("[job]", zap.String("Marshal", err.Error()))
|
||||
return nil
|
||||
}
|
||||
return body
|
||||
}
|
||||
|
||||
func address_to_pubkeytxn2(in string) string {
|
||||
//log.Println("[job]", in)
|
||||
decoded, _, err := base58.CheckDecode(in)
|
||||
if err != nil {
|
||||
logg.Info("[job]", zap.String("CheckDecode", err.Error()))
|
||||
}
|
||||
//log.Println("[job]base58", decoded)
|
||||
pubkeytxn := "a914"
|
||||
var pubkeytxnb string
|
||||
pubkeytxnb = hex.EncodeToString(decoded)
|
||||
/*if len(decoded) > 21 {
|
||||
var db []byte = decoded[1:21]
|
||||
pubkeytxnb = hex.EncodeToString(db)
|
||||
} else {
|
||||
var db []byte = decoded[1:]
|
||||
pubkeytxnb = hex.EncodeToString(db)
|
||||
}*/
|
||||
pubkeytxn += pubkeytxnb
|
||||
pubkeytxn += "87"
|
||||
return pubkeytxn
|
||||
}
|
||||
|
||||
func build_coinbase(gbt *msg.GbtMsg, poolpayoutaddr string) (string, string, error) {
|
||||
|
||||
var coinbase1 string
|
||||
coinbase1 = "01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff"
|
||||
|
||||
signheader := "/m2pool.com/"
|
||||
var coinbase2 string = "0c" + hex.EncodeToString([]byte(signheader))
|
||||
|
||||
coinbase2 += "0000000002"
|
||||
|
||||
coinbase1 += "1F"
|
||||
heightb := make([]byte, 4)
|
||||
binary.LittleEndian.PutUint32(heightb, gbt.Height)
|
||||
if gbt.Height < 0x100 {
|
||||
coinbase1 += "01"
|
||||
} else {
|
||||
if gbt.Height < 0x10000 {
|
||||
coinbase1 += "02"
|
||||
} else {
|
||||
if gbt.Height < 0x1000000 {
|
||||
coinbase1 += "03"
|
||||
} else {
|
||||
coinbase1 += "04"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
coinbase1 += hex.EncodeToString(heightb)[:6]
|
||||
timeb := make([]byte, 4)
|
||||
binary.LittleEndian.PutUint32(timeb, uint32(time.Now().Unix()))
|
||||
coinbase1 += "04"
|
||||
coinbase1 += hex.EncodeToString(timeb)
|
||||
coinbase1 += "08"
|
||||
|
||||
logg.Info("[job]", zap.String("coinbase1", coinbase1))
|
||||
|
||||
coinbasevalueb := make([]byte, 8)
|
||||
binary.LittleEndian.PutUint64(coinbasevalueb, gbt.Coinbasevalue)
|
||||
coinbase2 += hex.EncodeToString(coinbasevalueb)
|
||||
coinbase2 += "17"
|
||||
//coinbase2 += address_to_pubkeytxn22(poolpayoutaddr)
|
||||
coinbase2 += address_to_pubkeytxn2(poolpayoutaddr)
|
||||
coinbase2 += "0000000000000000"
|
||||
witlen := fmt.Sprintf("%02x", len(gbt.Segwit)/2)
|
||||
coinbase2 += witlen
|
||||
coinbase2 += gbt.Segwit
|
||||
|
||||
coinbase2 += "00000000"
|
||||
logg.Info("[job]", zap.String("coinbase2", coinbase2))
|
||||
return coinbase1, coinbase2, nil
|
||||
}
|
||||
|
||||
func nextPowerOfTwo(n int) int {
|
||||
// Return the number if it's already a power of 2.
|
||||
if n&(n-1) == 0 {
|
||||
return int(math.Log2(float64(n)))
|
||||
}
|
||||
|
||||
// Figure out and return the next power of two.
|
||||
exponent := int(math.Log2(float64(n))) + 1
|
||||
return exponent // 2^exponent
|
||||
}
|
||||
|
||||
func HashMerkleBranches(left *chainhash.Hash, right *chainhash.Hash) *chainhash.Hash {
|
||||
// Check for nil parameters
|
||||
if left == nil || right == nil {
|
||||
return nil // or handle error as appropriate
|
||||
}
|
||||
// Concatenate the left and right nodes.
|
||||
var hash [chainhash.HashSize * 2]byte
|
||||
copy(hash[:chainhash.HashSize], left[:])
|
||||
copy(hash[chainhash.HashSize:], right[:])
|
||||
|
||||
newHash := chainhash.DoubleHashH(hash[:])
|
||||
return &newHash
|
||||
}
|
||||
|
||||
func BuildMerkleTreeStore(transactions *[]string) *[]string {
|
||||
// Calculate how many entries are required to hold the binary merkle
|
||||
// tree as a linear array and create an array of that size.
|
||||
ts_size := len(*transactions)
|
||||
if ts_size == 1 {
|
||||
ts_string := make([]string, 1)
|
||||
ts_string[0], _ = utility.ReverseS((*transactions)[0])
|
||||
return &ts_string
|
||||
}
|
||||
exp := nextPowerOfTwo(ts_size + 1)
|
||||
|
||||
var all_size int = 0
|
||||
var temp_size = ts_size - 1
|
||||
var size int = 0
|
||||
for i := 0; i < exp-1; i++ {
|
||||
size = 1 + i + temp_size/2 + temp_size%2
|
||||
|
||||
if size < exp {
|
||||
size = exp
|
||||
}
|
||||
|
||||
all_size += size
|
||||
temp_size = size - i - 2
|
||||
|
||||
}
|
||||
arraySize := ts_size + all_size
|
||||
|
||||
merkles := make([]*chainhash.Hash, arraySize)
|
||||
|
||||
// Create the base transaction hashes and populate the array with them.
|
||||
|
||||
for i := range *transactions {
|
||||
// If we're computing a witness merkle root, instead of the
|
||||
// regular txid, we use the modified wtxid which includes a
|
||||
// transaction's witness data within the digest. Additionally,
|
||||
// the coinbase's wtxid is all zeroes.
|
||||
|
||||
merkles[i], _ = chainhash.NewHashFromStr((*transactions)[i])
|
||||
}
|
||||
|
||||
// Start the array offset after the last transaction and adjusted to the
|
||||
// next power of two.
|
||||
offset := ts_size
|
||||
|
||||
all_size = ts_size
|
||||
size = ts_size
|
||||
var start int = 0
|
||||
|
||||
temp_size = ts_size - 1
|
||||
for i := 0; i < exp-1; i++ {
|
||||
for j := 0; j <= i; j++ {
|
||||
merkles[offset] = merkles[start]
|
||||
offset++
|
||||
start++
|
||||
}
|
||||
for ; start < all_size; start += 2 {
|
||||
if start+1 >= all_size {
|
||||
newHash := HashMerkleBranches(merkles[start], merkles[start])
|
||||
merkles[offset] = newHash
|
||||
offset++
|
||||
start++
|
||||
break
|
||||
} else {
|
||||
newHash := HashMerkleBranches(merkles[start], merkles[start+1])
|
||||
merkles[offset] = newHash
|
||||
offset++
|
||||
}
|
||||
}
|
||||
size = 1 + i + temp_size/2 + temp_size%2
|
||||
|
||||
if size <= exp {
|
||||
size = exp
|
||||
}
|
||||
all_size += size
|
||||
temp_size = size - i - 2
|
||||
|
||||
}
|
||||
|
||||
merkles_string := make([]string, exp)
|
||||
var j int = 0
|
||||
for i := offset - int(exp); i < offset; i++ {
|
||||
merkles_string[j], _ = utility.ReverseS(merkles[i].String())
|
||||
j++
|
||||
}
|
||||
|
||||
logg.Info("[job]", zap.Any("merkles bytes", merkles_string))
|
||||
return &merkles_string
|
||||
}
|
|
@ -0,0 +1,625 @@
|
|||
// nexa.go
|
||||
package nexa
|
||||
|
||||
import (
|
||||
"encoding/binary"
|
||||
"encoding/hex"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"log"
|
||||
"sync/atomic"
|
||||
|
||||
//"pool/internal/cache"
|
||||
"pool/internal/db"
|
||||
"pool/internal/gbt/coin"
|
||||
"pool/internal/gbt/dbif"
|
||||
"pool/internal/msg"
|
||||
"pool/internal/utility"
|
||||
"time"
|
||||
|
||||
"database/sql"
|
||||
|
||||
//"github.com/btcsuite/btcd/rpcclient"
|
||||
_ "github.com/mattn/go-sqlite3"
|
||||
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
const GBT_NEXA_VERSION string = "nexa v2.0m"
|
||||
|
||||
type NexaAddrConfig struct {
|
||||
Addr string `json:"addr"`
|
||||
}
|
||||
|
||||
type NexaConfig struct {
|
||||
Nexa NexaAddrConfig `json:"nexa"`
|
||||
}
|
||||
|
||||
type GbtNexaContext struct {
|
||||
Config NexaConfig
|
||||
GbtCtx *coin.GbtContext
|
||||
|
||||
last_time time.Time
|
||||
last_gbt GbtNexaMsg
|
||||
last_blockhash string
|
||||
|
||||
last_height uint32
|
||||
|
||||
Submits float64
|
||||
|
||||
addressIndex int
|
||||
|
||||
Target []byte
|
||||
Header []byte
|
||||
last_body string
|
||||
|
||||
new_block_chan chan int
|
||||
new_block_index int
|
||||
}
|
||||
|
||||
var logg *zap.Logger
|
||||
var GbtNexaCtx GbtNexaContext
|
||||
|
||||
type GbtNexaMsg struct {
|
||||
Id uint64 `json:"id"`
|
||||
HeaderCommitment string `json:"headerCommitment"`
|
||||
NBits string `json:"nBits"`
|
||||
}
|
||||
|
||||
type GetBlockHeaderMsg struct {
|
||||
Height int `json:"height"`
|
||||
Nonce string `json:"nonce"`
|
||||
Confirmations int `json:"confirmations"`
|
||||
}
|
||||
|
||||
type GetBlockStatsMsg struct {
|
||||
Height int `json:"height"`
|
||||
Subsidy float64 `json:"subsidy"`
|
||||
Totalfee float64 `json:"totalfee"`
|
||||
}
|
||||
|
||||
type BlockCheckData struct {
|
||||
Height int
|
||||
Nonce string
|
||||
User string
|
||||
Miner string
|
||||
MinerId string
|
||||
Hash string
|
||||
SubIdx int
|
||||
}
|
||||
|
||||
/*type NewBlockMsg struct {
|
||||
Height int `json:"height"`
|
||||
Nonce int `json:"nonce"`
|
||||
}*/
|
||||
|
||||
type PushBlkNewMsg struct {
|
||||
Coin string `json:"coin"`
|
||||
Height int `json:"height"`
|
||||
Nonce string `json:"nonce"`
|
||||
}
|
||||
|
||||
func update_block_confirm(gbt *GbtNexaContext) {
|
||||
db, err := sql.Open("sqlite3", "./blocks.db")
|
||||
if err != nil {
|
||||
//log.Printf("Error opening database: %v", err)
|
||||
logg.Error("[gbt]", zap.String("Error opening database", err.Error()))
|
||||
return
|
||||
}
|
||||
defer db.Close()
|
||||
|
||||
query := "SELECT user,miner,minerid,height,nonce,hash,subidx FROM blocks WHERE checked=0 AND created_at >= datetime('now', '-30 minutes') order by id desc limit 2"
|
||||
rows, err := db.Query(query)
|
||||
if err != nil {
|
||||
//log.Printf("Error executing query from blocks: %v", err)
|
||||
logg.Error("[gbt]", zap.String("Error executing query from blocks:", err.Error()))
|
||||
return
|
||||
}
|
||||
defer rows.Close()
|
||||
|
||||
var blocks []BlockCheckData
|
||||
for rows.Next() {
|
||||
var height int
|
||||
var nonce string
|
||||
var user string
|
||||
var miner string
|
||||
var minerid string
|
||||
var hash string
|
||||
var subidx int
|
||||
if err := rows.Scan(&user, &miner, &minerid, &height, &nonce, &hash, &subidx); err != nil {
|
||||
//log.Printf("Error scanning row in blocks: %v", err)
|
||||
logg.Error("[gbt]", zap.String("Error scanning row in blocks:", err.Error()))
|
||||
return
|
||||
}
|
||||
var blockdata BlockCheckData
|
||||
blockdata.Height = height
|
||||
blockdata.Nonce = nonce
|
||||
blockdata.User = user
|
||||
blockdata.Miner = miner
|
||||
blockdata.MinerId = minerid
|
||||
blockdata.Hash = hash
|
||||
blockdata.SubIdx = subidx
|
||||
|
||||
blocks = append(blocks, blockdata)
|
||||
//fmt.Printf("blocks - Height: %d, Nonce: %d\n", height, nonce)
|
||||
//log.Printf("update block height %d nonce %s, subidx %d, user %s", height, nonce, subidx, user+"."+miner+"_"+minerid)
|
||||
}
|
||||
for _, block := range blocks {
|
||||
block_hash, err := gbt.GbtCtx.Client.GetBlockHash(int64(block.Height))
|
||||
if err != nil {
|
||||
logg.Info("[gbt]", zap.String("GetBlockHash ", err.Error()))
|
||||
continue
|
||||
}
|
||||
rawmsgs := make([]json.RawMessage, 1)
|
||||
param_str := `"` + block_hash.String() + `"`
|
||||
rawmsgs[0] = json.RawMessage(param_str)
|
||||
result, err := gbt.GbtCtx.Client.RawRequest("getblockheader", rawmsgs)
|
||||
if err != nil {
|
||||
//log.Printf("getblockheader %s", err.Error())
|
||||
logg.Error("[gbt]", zap.String("getblockheader", err.Error()))
|
||||
continue
|
||||
}
|
||||
//log.Printf("getblockheader %d %s:%v", block.Height, block_hash, result)
|
||||
var blockHeader msg.GetBlockHeaderMsg
|
||||
err = json.Unmarshal(result, &blockHeader)
|
||||
if err != nil {
|
||||
//log.Printf("getblockheader Unmarshal %s", err.Error())
|
||||
logg.Error("[gbt]", zap.String("getblockheader Unmarshal ", fmt.Sprint(block.Height)+" "+err.Error()))
|
||||
continue
|
||||
}
|
||||
|
||||
rawmsgs_stats := make([]json.RawMessage, 1)
|
||||
rawmsgs_stats[0] = json.RawMessage(param_str)
|
||||
result_stats, err := gbt.GbtCtx.Client.RawRequest("getblockstats", rawmsgs_stats)
|
||||
if err != nil {
|
||||
//log.Printf("getblockstats %s", err.Error())
|
||||
logg.Error("[gbt]", zap.String("getblockstats", err.Error()))
|
||||
continue
|
||||
}
|
||||
//log.Printf("getblockheader %d %s:%v", block.Height, block_hash, result)
|
||||
var blockStats msg.GetBlockStatsMsg
|
||||
err = json.Unmarshal(result_stats, &blockStats)
|
||||
if err != nil {
|
||||
//log.Printf("getblockstats Unmarshal %s", err.Error())
|
||||
logg.Error("[gbt]", zap.String("getblockstats Unmarshal ", fmt.Sprint(block.Height)+" "+err.Error()))
|
||||
continue
|
||||
}
|
||||
|
||||
if blockHeader.Confirmations > 3 {
|
||||
//log.Printf("cmp block: %d %s vs %s %s", block.Height, block.Nonce, string(result), blockHeader.Nonce)
|
||||
//log.Printf("cmp block: %d %s %s_%s_%s vs %s\n", block.Height, block.Nonce, block.User, block.Miner, block.MinerId, blockHeader.Nonce)
|
||||
if blockHeader.Nonce == block.Nonce {
|
||||
|
||||
block_height := int64(block.Height)
|
||||
/*dbif.NotifyMinerSuccess(gbt.GbtCtx, block.User, block.Miner, block.MinerId, block_height, "", block.Nonce, int64(block.SubIdx), blockStats.Subsidy, blockStats.Totalfee)
|
||||
dbif.NotifyUsersBlkStatsSuccess(gbt.GbtCtx, block.User, block_height, "", block.Nonce, int64(block.SubIdx), blockStats.Subsidy, blockStats.Totalfee)*/
|
||||
dbif.NotifyPoolBlkStatsSuccess(gbt.GbtCtx, block_height, "", block.Nonce, int64(block.SubIdx), blockStats.Subsidy, blockStats.Totalfee)
|
||||
dbif.NotifyBlkDetailSuccess(gbt.GbtCtx, block_height, "", block.Nonce, int64(block.SubIdx))
|
||||
/*dbif.NotifyBlockStat(gbt.GbtCtx, block.User, block.Miner, block.MinerId, blockStats.Subsidy, blockStats.Totalfee)*/
|
||||
//dbif.NotifyBlkNewSuccess(gbt.GbtCtx, block_height, "", block.Nonce, -1)
|
||||
dbif.NotifyBlkNewDb(gbt.GbtCtx, block_height, block.Hash, true, block.Nonce, int64(block.SubIdx))
|
||||
|
||||
//gbt.GbtCtx.Blocks += 1
|
||||
//cache.StorePoolCache(gbt.GbtCtx.RedisClient, gbt.GbtCtx.Coin, "blocks", gbt.GbtCtx.Blocks)
|
||||
|
||||
//gbt.GbtCtx.Reward += blockStats.Subsidy
|
||||
//cache.StorePoolCache(gbt.GbtCtx.RedisClient, gbt.GbtCtx.Coin, "reward", gbt.GbtCtx.Reward)
|
||||
|
||||
//gbt.GbtCtx.Fee += blockStats.Totalfee
|
||||
//cache.StorePoolCache(gbt.GbtCtx.RedisClient, gbt.GbtCtx.Coin, "fee", gbt.GbtCtx.Fee)
|
||||
|
||||
/*var pushmsg PushBlkNewMsg
|
||||
pushmsg.Coin = gbt.GbtCtx.Coin
|
||||
pushmsg.Height = block.Height
|
||||
pushmsg.Nonce = block.Nonce
|
||||
|
||||
jsonData, err := json.Marshal(pushmsg)
|
||||
if err != nil {
|
||||
//log.Printf("Failed to marshal JSON: %v", err)
|
||||
logg.Error("[gbt]", zap.String("Failed to marshal JSON:", err.Error()))
|
||||
continue
|
||||
}
|
||||
if gbt.GbtCtx.PushCh == nil {
|
||||
gbt.GbtCtx.PushCh = utility.InitZmqPush(gbt.GbtCtx.Config.Profit.Push)
|
||||
}
|
||||
if gbt.GbtCtx.PushCh != nil {
|
||||
err = gbt.GbtCtx.PushCh.SendMessage([][]byte{[]byte("blk_new"), jsonData})
|
||||
if err != nil {
|
||||
//log.Printf("Failed to send data: %v", err)
|
||||
logg.Error("[gbt]", zap.String("Failed to SendMessage:", err.Error()))
|
||||
continue
|
||||
}
|
||||
}*/
|
||||
|
||||
updateSQL := `UPDATE blocks SET checked = 1 WHERE height = ? AND nonce = ? AND checked = 0`
|
||||
_, err = db.Exec(updateSQL, block.Height, block.Nonce)
|
||||
if err != nil {
|
||||
//log.Printf("Error updating blk_new: %v", err)
|
||||
logg.Error("[gbt]", zap.String("Error updating blk_new:", err.Error()))
|
||||
continue
|
||||
}
|
||||
//log.Printf("update block success: %d %s", block.Height, block.Nonce)
|
||||
logg.Warn("[gbt]", zap.String("update block success:", fmt.Sprint(block.Height)+" "+block.Nonce))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func get_gbt_msg(gbt *GbtNexaContext) []byte {
|
||||
height, err := gbt.GbtCtx.Client.GetBlockCount()
|
||||
if err != nil {
|
||||
logg.Info("[gbt]", zap.String("GetBlockCount ", err.Error()))
|
||||
return nil
|
||||
}
|
||||
height = height + 1
|
||||
rawmsgs := make([]json.RawMessage, 3)
|
||||
param_str1 := `"` + "1000" + `"`
|
||||
param_str2 := `"` + gbt.Config.Nexa.Addr + `"`
|
||||
if len(gbt.GbtCtx.MinerAddrs) > 0 {
|
||||
param_str2 = `"` + gbt.GbtCtx.MinerAddrs[gbt.GbtCtx.MinerAddrIndex] + `"`
|
||||
gbt.GbtCtx.MinerAddrIndex = gbt.GbtCtx.MinerAddrIndex + 1
|
||||
if gbt.GbtCtx.MinerAddrIndex >= len(gbt.GbtCtx.MinerAddrs) {
|
||||
gbt.GbtCtx.MinerAddrIndex = 0
|
||||
}
|
||||
}
|
||||
param_str3 := `"` + " / m2pool.com / " + `"`
|
||||
//logg.Debug("[gbt]", zap.String("option", param_str))
|
||||
rawmsgs[0] = json.RawMessage(param_str1)
|
||||
rawmsgs[1] = json.RawMessage(param_str2)
|
||||
rawmsgs[2] = json.RawMessage(param_str3)
|
||||
result, err := gbt.GbtCtx.Client.RawRequest("getminingcandidate", rawmsgs) // 获得挖矿数据
|
||||
//log.Printf("[gbt] getminingcandidate %v %s\n", err, result)
|
||||
if err != nil {
|
||||
logg.Error("[gbt]", zap.String("getminingcandidate", err.Error()))
|
||||
return nil
|
||||
}
|
||||
|
||||
var rxmsg GbtNexaMsg // 获取任务的结构
|
||||
err = json.Unmarshal(result, &rxmsg)
|
||||
if err != nil {
|
||||
logg.Error("[gbt]", zap.String("getminingcandidate", err.Error()))
|
||||
return nil
|
||||
}
|
||||
|
||||
gbtstr := fmt.Sprintf("[gbt] height %d, id %d, header %s, nBits %s", height, rxmsg.Id, rxmsg.HeaderCommitment, rxmsg.NBits)
|
||||
//logg.Debug("[gbt]", zap.String(" ", gbtstr))
|
||||
|
||||
if rxmsg.Id == gbt.last_gbt.Id {
|
||||
return nil
|
||||
}
|
||||
|
||||
gbt.last_gbt = rxmsg
|
||||
|
||||
gbt.last_time = time.Now()
|
||||
|
||||
nbits_b, _ := hex.DecodeString(rxmsg.NBits)
|
||||
var nbits_i uint32 = binary.BigEndian.Uint32(nbits_b)
|
||||
bigdiff := utility.CompactToBig(nbits_i)
|
||||
targetdiff := fmt.Sprintf("%064x", bigdiff.Bytes())
|
||||
//logg.Debug("[gbt]", zap.String("target", targetdiff))
|
||||
logg.Debug("[gbt]", zap.String(" ", gbtstr), zap.String("target", targetdiff))
|
||||
|
||||
var job msg.NexaStratumJob
|
||||
job.Id = rxmsg.Id
|
||||
job.Header = utility.Reverse_string(rxmsg.HeaderCommitment)
|
||||
job.NBits = rxmsg.NBits
|
||||
job.CurTime = uint64(time.Now().Unix())
|
||||
job.Height = uint32(height)
|
||||
job.Nonce = ""
|
||||
job.Target = targetdiff
|
||||
job.Extranonce1 = ""
|
||||
job.Extranonce2_size = 8
|
||||
job.Extranonce2 = ""
|
||||
body, err := json.Marshal(job)
|
||||
if err != nil {
|
||||
logg.Error("[gbt]", zap.String("failed to Marshal jobmsg", err.Error()))
|
||||
return nil
|
||||
}
|
||||
return body
|
||||
}
|
||||
|
||||
func gbt_notify_running(gbt *GbtNexaContext) {
|
||||
for {
|
||||
if !gbt.GbtCtx.Started {
|
||||
break
|
||||
}
|
||||
if gbt.GbtCtx.NodeSubCh == nil {
|
||||
gbt.GbtCtx.NodeSubCh = utility.InitZmqSub(gbt.GbtCtx.Config.Rpc.ZmqSub, utility.BITCOIND_ZMQ_HASHBLOCK)
|
||||
}
|
||||
if gbt.GbtCtx.NodeSubCh != nil {
|
||||
cmsg_sub, err := gbt.GbtCtx.NodeSubCh.RecvMessage()
|
||||
if err != nil {
|
||||
if !gbt.GbtCtx.Started {
|
||||
break
|
||||
}
|
||||
gbt.GbtCtx.NodeSubCh.SetSubscribe(utility.BITCOIND_ZMQ_HASHBLOCK)
|
||||
gbt.GbtCtx.NodeSubCh.Connect(gbt.GbtCtx.Config.Rpc.ZmqSub)
|
||||
continue
|
||||
}
|
||||
if len(cmsg_sub) >= 2 {
|
||||
if string(cmsg_sub[0]) == "hashblock" {
|
||||
GbtNexaCtx.new_block_index = GbtNexaCtx.new_block_index + 1
|
||||
//log.Println("gbt_notify_running", hex.EncodeToString(cmsg_sub[1]), GbtNexaCtx.new_block_index)
|
||||
gbt.new_block_chan <- GbtNexaCtx.new_block_index
|
||||
|
||||
}
|
||||
}
|
||||
} else {
|
||||
logg.Error("[gbt]", zap.String("notify", "NodeSubCh fail!"))
|
||||
time.Sleep(time.Duration(1) * time.Second)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func gbt_running(gbt *GbtNexaContext) {
|
||||
gbtmsg := get_gbt_msg(gbt)
|
||||
if gbtmsg != nil {
|
||||
if gbt.GbtCtx.PubCh == nil {
|
||||
gbt.GbtCtx.PubCh = utility.InitZmqPub(gbt.GbtCtx.Config.Zmq.Pub)
|
||||
}
|
||||
if gbt.GbtCtx.PubCh != nil {
|
||||
for trycnt := 0; trycnt < 3; trycnt++ {
|
||||
err := gbt.GbtCtx.PubCh.SendMessage([][]byte{[]byte("jobnexa"), gbtmsg})
|
||||
if err != nil {
|
||||
if !gbt.GbtCtx.Started {
|
||||
return
|
||||
}
|
||||
//gbt.GbtCtx.PubCh.Bind(gbt.GbtCtx.Config.Zmq.Pub)
|
||||
logg.Warn("[gbt]", zap.String("job ", err.Error()))
|
||||
} else {
|
||||
//gbt.GbtCtx.PubCh.SendChan <- [][]byte{[]byte("jobnexa"), gbtmsg}
|
||||
logg.Warn("[gbt]", zap.String("job ", "sent"))
|
||||
break
|
||||
}
|
||||
}
|
||||
//gbt.GbtCtx.AlivingChan <- true
|
||||
atomic.StoreInt32(&(gbt.GbtCtx.FlagAliving), 1)
|
||||
} else {
|
||||
logg.Warn("[gbt]", zap.String("job ", "sent failed! PubCh nil"))
|
||||
}
|
||||
} else {
|
||||
atomic.StoreInt32(&(gbt.GbtCtx.FlagAliving), 1)
|
||||
}
|
||||
|
||||
timer := time.NewTimer(time.Duration(gbt.GbtCtx.Config.Rpc.Timeout) * time.Millisecond)
|
||||
defer timer.Stop()
|
||||
|
||||
for {
|
||||
if !gbt.GbtCtx.Started {
|
||||
break
|
||||
}
|
||||
|
||||
new_block_notify := false
|
||||
|
||||
select {
|
||||
case blk_idx := <-gbt.new_block_chan:
|
||||
log.Println("new block chan", blk_idx)
|
||||
new_block_notify = true
|
||||
if !timer.Stop() {
|
||||
<-timer.C
|
||||
}
|
||||
timer.Reset(time.Duration(gbt.GbtCtx.Config.Rpc.Timeout) * time.Millisecond)
|
||||
case <-gbt.GbtCtx.ExitGbtChan:
|
||||
logg.Error("[gbt]", zap.String("gbt", "exit"))
|
||||
return
|
||||
case <-time.After(time.Duration(gbt.GbtCtx.Config.Rpc.Timeout) * time.Millisecond):
|
||||
log.Println("poll gbt timeout")
|
||||
timer.Reset(time.Duration(gbt.GbtCtx.Config.Rpc.Timeout) * time.Millisecond)
|
||||
}
|
||||
/*if check_bestblockhash(gbt) {*/
|
||||
gbtmsg := get_gbt_msg(gbt)
|
||||
if gbtmsg != nil {
|
||||
//check_preblock(gbt, DbCtx)
|
||||
if gbt.GbtCtx.PubCh == nil {
|
||||
gbt.GbtCtx.PubCh = utility.InitZmqPub(gbt.GbtCtx.Config.Zmq.Pub)
|
||||
}
|
||||
if gbt.GbtCtx.PubCh != nil {
|
||||
for trycnt := 0; trycnt < 3; trycnt++ {
|
||||
err := gbt.GbtCtx.PubCh.SendMessage([][]byte{[]byte("jobnexa"), gbtmsg})
|
||||
if err != nil {
|
||||
logg.Warn("[gbt]", zap.String("job ", err.Error()))
|
||||
continue
|
||||
} else {
|
||||
//gbt.GbtCtx.PubCh.SendChan <- [][]byte{[]byte("jobnexa"), gbtmsg}
|
||||
logg.Warn("[gbt]", zap.String("job ", "sent"))
|
||||
break
|
||||
}
|
||||
}
|
||||
//gbt.GbtCtx.AlivingChan <- true
|
||||
atomic.StoreInt32(&(gbt.GbtCtx.FlagAliving), 1)
|
||||
} else {
|
||||
logg.Warn("[gbt]", zap.String("job ", "sent failed! PubCh nil"))
|
||||
}
|
||||
} else {
|
||||
atomic.StoreInt32(&(gbt.GbtCtx.FlagAliving), 1)
|
||||
}
|
||||
|
||||
if new_block_notify {
|
||||
update_block_confirm(gbt)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func nexaInit(config *NexaConfig) {
|
||||
data, err := ioutil.ReadFile("gbt.conf")
|
||||
if err != nil {
|
||||
panic(err.Error())
|
||||
}
|
||||
if err = json.Unmarshal(data, &config); err != nil {
|
||||
panic(err.Error())
|
||||
}
|
||||
}
|
||||
|
||||
func Init(GbtCtx *coin.GbtContext, DbCtx *db.DbContext) {
|
||||
GbtNexaCtx.GbtCtx = GbtCtx
|
||||
|
||||
GbtNexaCtx.last_height = 0
|
||||
|
||||
nexaInit(&GbtNexaCtx.Config)
|
||||
|
||||
GbtNexaCtx.Target = make([]byte, 32)
|
||||
GbtNexaCtx.Header = make([]byte, 49)
|
||||
GbtNexaCtx.last_time = time.Now()
|
||||
logg = GbtCtx.Log
|
||||
GbtNexaCtx.new_block_chan = make(chan int, 256)
|
||||
GbtNexaCtx.new_block_index = 0
|
||||
logg.Info("[gbt]", zap.String("gbt_nexa_version", GBT_NEXA_VERSION))
|
||||
|
||||
rawmsgs := make([]json.RawMessage, 1)
|
||||
pool_tag := " / m2pool.com / "
|
||||
param_str := `"` + pool_tag + `"`
|
||||
rawmsgs[0] = json.RawMessage(param_str)
|
||||
_, err := GbtNexaCtx.GbtCtx.Client.RawRequest("setminercomment", rawmsgs)
|
||||
if err != nil {
|
||||
//log.Printf("setminercomment %s", err.Error())
|
||||
logg.Error("[gbt]", zap.String("setminercomment", err.Error()))
|
||||
}
|
||||
}
|
||||
|
||||
func Start() {
|
||||
go gbt_running(&GbtNexaCtx)
|
||||
go gbt_notify_running(&GbtNexaCtx)
|
||||
go submit_block_running(&GbtNexaCtx)
|
||||
}
|
||||
|
||||
func Stop() {
|
||||
defer close(GbtNexaCtx.new_block_chan)
|
||||
}
|
||||
|
||||
func new_block_into_db(block *GbtNexaContext, user string, miner string, minerid string, height int64, nonce string, hash string, subidx int64) bool {
|
||||
db, err := sql.Open("sqlite3", "./blocks.db")
|
||||
if err != nil {
|
||||
log.Printf("Error opening database: %v", err)
|
||||
return false
|
||||
}
|
||||
defer db.Close()
|
||||
|
||||
createTableSQL := `
|
||||
CREATE TABLE IF NOT EXISTS blocks (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
user TEXT NOT NULL,
|
||||
miner TEXT NOT NULL,
|
||||
minerid TEXT NOT NULL,
|
||||
height INTEGER,
|
||||
nonce TEXT NOT NULL,
|
||||
hash TEXT NOT NULL,
|
||||
subidx INTEGER,
|
||||
checked INTEGER,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||
);`
|
||||
_, err = db.Exec(createTableSQL)
|
||||
if err != nil {
|
||||
log.Printf("Error creating table: %v", err)
|
||||
return false
|
||||
}
|
||||
|
||||
insertSQL := `INSERT INTO blocks (user, miner, minerid, height, nonce, checked, hash, subidx) VALUES (?, ?, ?, ?, ?, ?, ?, ?)`
|
||||
_, err = db.Exec(insertSQL, user, miner, minerid, height, nonce, 0, hash, subidx)
|
||||
if err != nil {
|
||||
log.Printf("Error inserting data from blocks %s: %v", fmt.Sprint(height), err)
|
||||
return false
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
func submit_block_running(block *GbtNexaContext) {
|
||||
logg.Info("[block]", zap.String("submit_block_running", "Start."))
|
||||
for {
|
||||
if !block.GbtCtx.Started {
|
||||
break
|
||||
}
|
||||
if block.GbtCtx.SubCh == nil {
|
||||
block.GbtCtx.SubCh = utility.InitZmqSub(block.GbtCtx.Config.Zmq.Sub, "blk"+block.GbtCtx.Coin)
|
||||
}
|
||||
if block.GbtCtx.SubCh != nil {
|
||||
cmsg_sub, err := block.GbtCtx.SubCh.RecvMessage()
|
||||
if err != nil {
|
||||
if !block.GbtCtx.Started {
|
||||
break
|
||||
}
|
||||
time.Sleep(time.Duration(1) * time.Second)
|
||||
/*block.GbtCtx.SubCh.Destroy()
|
||||
block.GbtCtx.SubCh = nil*/
|
||||
block.GbtCtx.SubCh.SetSubscribe("blk" + block.GbtCtx.Coin)
|
||||
block.GbtCtx.SubCh.Connect(block.GbtCtx.Config.Zmq.Sub)
|
||||
continue
|
||||
}
|
||||
|
||||
//log.Println(cmsg_sub, len(cmsg_sub), block.GbtCtx.SubCh)
|
||||
if len(cmsg_sub) >= 2 {
|
||||
if string(cmsg_sub[0]) == "blknexa" {
|
||||
cmsg := cmsg_sub[1]
|
||||
//block data
|
||||
msgb := make([]byte, len(cmsg)-16)
|
||||
copy(msgb, cmsg)
|
||||
|
||||
//height
|
||||
//heightb := make([]byte, 4)
|
||||
heightb, err := hex.DecodeString(string(cmsg[len(msgb) : len(msgb)+8]))
|
||||
if err != nil {
|
||||
//block.Consumer.MarkOffset(cmsg, "")
|
||||
logg.Error("[block]", zap.String("failed to decode height", err.Error()))
|
||||
continue
|
||||
}
|
||||
var height uint32 = utility.ByteToUint32(heightb)
|
||||
logg.Warn("[block]", zap.Uint32("height", height))
|
||||
|
||||
if height <= block.last_height {
|
||||
continue
|
||||
}
|
||||
block.last_height = height
|
||||
|
||||
//index
|
||||
//indexb := make([]byte, 4)
|
||||
indexb, err1 := hex.DecodeString(string(cmsg[len(msgb)+8:]))
|
||||
if err1 != nil {
|
||||
//block.Consumer.MarkOffset(cmsg, "")
|
||||
logg.Error("[block]", zap.String("failed to decode index", err1.Error()))
|
||||
continue
|
||||
}
|
||||
//copy(indexb, cmsg.Value[len(msgb)+4:])
|
||||
var index uint32 = utility.ByteToUint32(indexb)
|
||||
logg.Warn("[block]", zap.Uint32("index", index))
|
||||
|
||||
logg.Debug("[block]", zap.String("msg", string(cmsg)), zap.String("blk", string(msgb)))
|
||||
var nexablock msg.BlockNexaMsg
|
||||
if err := json.Unmarshal(msgb, &nexablock); err != nil {
|
||||
//block.Consumer.MarkOffset(cmsg, "")
|
||||
logg.Error("[block]", zap.String("failed to Unmarshal job", err.Error()))
|
||||
continue
|
||||
}
|
||||
|
||||
blk := fmt.Sprintf(`{"id":%d,"nonce":"%s"}`, nexablock.Id, nexablock.Nonce)
|
||||
rawmsgs := make([]json.RawMessage, 1)
|
||||
logg.Info("[block]", zap.String("blk", blk))
|
||||
rawmsgs[0] = json.RawMessage(blk)
|
||||
//var last_result json.RawMessage
|
||||
//for i := 0; i < len(block.Client); i++ {
|
||||
result, err := block.GbtCtx.Client.RawRequest("submitminingsolution", rawmsgs)
|
||||
if err != nil {
|
||||
logg.Error("[block]", zap.String("submitminingsolution", err.Error()))
|
||||
} else {
|
||||
//last_result = result
|
||||
}
|
||||
logg.Info("[block]", zap.String("result", string(result)))
|
||||
//}
|
||||
|
||||
/*dbif.NotifyMinerSubmitResult(block.GbtCtx, nexablock.User, nexablock.Miner, nexablock.Index, int64(height), nexablock.Pow, string(result), nexablock.Nonce, nexablock.SubIdx)
|
||||
dbif.NotifyUsersBlkStatsSubmitResult(block.GbtCtx, nexablock.User, int64(height), nexablock.Pow, string(result), nexablock.Nonce, nexablock.SubIdx)*/
|
||||
dbif.NotifyPoolBlkStatsSubmitResult(block.GbtCtx, int64(height), nexablock.Pow, string(result), nexablock.Nonce, nexablock.SubIdx)
|
||||
|
||||
block.Submits += 1
|
||||
//log.Printf("[block] height %d subidx %d nonce %s\n", height, nexablock.SubIdx, nexablock.Nonce)
|
||||
logg.Warn("[block]", zap.Float64("total submits", block.Submits), zap.Int64("SubIdx", nexablock.SubIdx))
|
||||
|
||||
new_block_into_db(block, nexablock.User, nexablock.Miner, nexablock.Index, int64(height), nexablock.Nonce, nexablock.Pow, nexablock.SubIdx)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
logg.Error("[block]", zap.String("block", "SubCh failed! retry"))
|
||||
time.Sleep(time.Duration(1) * time.Second)
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,183 @@
|
|||
// msg.go
|
||||
package msg
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"time"
|
||||
|
||||
"github.com/decred/dcrd/chaincfg/chainhash"
|
||||
)
|
||||
|
||||
type StratumJob struct {
|
||||
Job_id string `json:"job_id, omitemtpy"`
|
||||
Version int32 `json:"version, omitemtpy"`
|
||||
Prevblock chainhash.Hash `json:"prevblock, omitemtpy"`
|
||||
Coinbase1 string `json:"coinbase1, omitemtpy"`
|
||||
Coinbase2 string `json:"coinbase2, omitemtpy"`
|
||||
Bits uint32 `json:"bits, omitemtpy"`
|
||||
Timestamp time.Time `json:"ts, omitemtpy"`
|
||||
Extranonce1 string `json:"extranonce1, omitemtpy"`
|
||||
Extranonce2_size uint64 `json:"extranonce2_size, omitemtpy"`
|
||||
Extranonce2 string `json:"extranonce2, omitemtpy"`
|
||||
Nonce string `json:"nonce, omitemtpy`
|
||||
Target string `json:"target, omitemtpy"`
|
||||
Difficulty float64 `json:"difficulty, omitemtpy"`
|
||||
PrevblockS string `json:"prevblocks,omitempty"`
|
||||
PrevblockBig string `json:"prevblockbig,omitempty"`
|
||||
Transactions *[]string `json:"transactions,omitempty"`
|
||||
BitsS string `json:"bitss,omitempty"`
|
||||
Height uint32 `json:"height,omitempty"`
|
||||
TransData *[]string `json:"data,omitempty"`
|
||||
Payloadstart string `json:"payloadstart,omitempty"`
|
||||
TimestampS string `json:"timestamps, omitempty"`
|
||||
Segwit string `json:"default_witness_commitment, omitempty"`
|
||||
IsClean bool `json:"isclean, omitempty"`
|
||||
Mintime uint32 `json:"mintime, omitempty"`
|
||||
JobDifficulty float64 `json:"diff, omitemtpy"`
|
||||
}
|
||||
|
||||
type NexaStratumJob struct {
|
||||
Header string `json:"header, omitempty"`
|
||||
NBits string `json:"nBits, omitempty"`
|
||||
Id uint64 `json:"id, omitempty"`
|
||||
CurTime uint64 `json:"timestamp, omitemtpy"`
|
||||
Target string `json:"target, omitempty"`
|
||||
Height uint32 `json:"height, omitemtpy"`
|
||||
Nonce string `json:"nonce, omitemtpy"`
|
||||
Extranonce1 string `json:"extranonce1, omitemtpy"`
|
||||
Extranonce2_size uint64 `json:"extranonce2_size, omitemtpy"`
|
||||
Extranonce2 string `json:"extranonce2, omitemtpy"`
|
||||
JobDifficulty float64 `json:"diff, omitemtpy"`
|
||||
}
|
||||
|
||||
type EnxStratumJob struct {
|
||||
Job_id uint32 `json:"job_id, omitemtpy"`
|
||||
CurTime uint64 `json:"timestamp, omitemtpy"`
|
||||
PrevBlockHash string `json:"prev_hash, omitemtpy"`
|
||||
Target string `json:"target, omitempty"`
|
||||
Height uint64 `json:"height, omitemtpy"`
|
||||
Nonce string `json:"nonce, omitemtpy"`
|
||||
Extranonce1 string `json:"extranonce1, omitemtpy"`
|
||||
Extranonce2_size uint64 `json:"extranonce2_size, omitemtpy"`
|
||||
Extranonce2 string `json:"extranonce2, omitemtpy"`
|
||||
Bits uint32 `json:"bits, omitemtpy"`
|
||||
Data string `json:"data, omitemtpy"`
|
||||
Gbt_id uint32 `json:"gbt_id, omitemtpy"`
|
||||
}
|
||||
|
||||
type AlphStratumJob struct {
|
||||
JobId string `json:"jobId, omitempty"`
|
||||
FromGroup uint32 `json:"fromGroup, omitempty"`
|
||||
ToGroup uint32 `json:"toGroup, omitempty"`
|
||||
HeaderBlob string `json:"headerBlob, omitempty"`
|
||||
TxsBlob string `json:"txsBlob, omitempty"`
|
||||
Height uint32 `json:"height, omitempty"`
|
||||
TargetBlob string `json:"targetBlob, omitempty"`
|
||||
JobDifficulty float64 `json:"diff, omitemtpy"`
|
||||
Nonce string `json:"nonce, omitempty"`
|
||||
Extranonce1 string `json:"extranonce1, omitempty"`
|
||||
Extranonce2_size uint64 `json:"extranonce2_size, omitemtpy"`
|
||||
}
|
||||
|
||||
type BlockNexaMsg struct {
|
||||
Id uint64 `json:"id"`
|
||||
User string `json:"user"`
|
||||
Miner string `json:"miner"`
|
||||
Index string `json:"index"`
|
||||
Header string `json:"header"`
|
||||
Nonce string `json:"nonce"`
|
||||
Pow string `json:"pow"`
|
||||
SubIdx int64 `json:"subidx"`
|
||||
}
|
||||
|
||||
type BlockAlphMsg struct {
|
||||
Id string `json:"id"`
|
||||
User string `json:"user"`
|
||||
Miner string `json:"miner"`
|
||||
Index string `json:"index"`
|
||||
FromGroup uint32 `json:"fromGroup"`
|
||||
ToGroup uint32 `json:"toGroup"`
|
||||
Header string `json:"header"`
|
||||
Nonce string `json:"nonce"`
|
||||
Txs string `json:"txs"`
|
||||
Hash string `json:"hash"`
|
||||
SubIdx int64 `json:"subidx"`
|
||||
}
|
||||
|
||||
type BlockEnxMsg struct {
|
||||
Id uint64 `json:"id"`
|
||||
User string `json:"user"`
|
||||
Miner string `json:"miner"`
|
||||
Index string `json:"index"`
|
||||
Header string `json:"header"`
|
||||
Nonce string `json:"nonce"`
|
||||
Pow string `json:"pow"`
|
||||
SubIdx int64 `json:"subidx"`
|
||||
}
|
||||
|
||||
type GbtMsg struct {
|
||||
Capabilities []string `json:"capabilities"`
|
||||
Version int32 `json:"version"`
|
||||
Rules []string `json:"rules"`
|
||||
Vbavailable *json.RawMessage `json:"vbavailble"`
|
||||
Vbrequired int `json:"varequired"`
|
||||
Previousblockhash string `json:"previousblockhash"`
|
||||
Transactions *[]json.RawMessage `json:"transactions"`
|
||||
Coinbaseaux *json.RawMessage `json:"coinbaseaux"`
|
||||
Coinbasevalue uint64 `json:"coinbasevalue"`
|
||||
Coinbasetxn *json.RawMessage `json:"coinbasetxn"`
|
||||
Longpollid string `json:"longpollid"`
|
||||
Target string `json:"target"`
|
||||
Mintime uint32 `json:"mintime"`
|
||||
Mutable []string `json:"mutable"`
|
||||
Noncerange string `json:"noncerange"`
|
||||
sigoplimit uint32 `json:"sigolimit"`
|
||||
Sizelimit uint32 `json:"sizelimit"`
|
||||
Curtime uint32 `json:"curtime"`
|
||||
Bits string `json:"bits"`
|
||||
Height uint32 `json:"height"`
|
||||
//Masternode MasterNode `json:"masternode"`
|
||||
//Superblocks []SuperBlocks `json:"superblock"`
|
||||
Coinbase *json.RawMessage `json:"coinbase"`
|
||||
Segwit string `json:"default_witness_commitment"`
|
||||
PoolSource string `json:"poolsource"`
|
||||
}
|
||||
|
||||
type GbtTransaction struct {
|
||||
Data string `json:"data"`
|
||||
Hash string `json:"hash"`
|
||||
Depends *[]json.RawMessage `json:"depends"`
|
||||
Fee int `json:"fee"`
|
||||
Sigops int `json:"sigops"`
|
||||
Txid string `json:"txid"`
|
||||
}
|
||||
|
||||
type BlockGrsMsg struct {
|
||||
User string `json:"user"`
|
||||
Miner string `json:"miner"`
|
||||
Index string `json:"index"`
|
||||
Header string `json:"header"`
|
||||
Nonce string `json:"nonce"`
|
||||
Pow string `json:"pow"`
|
||||
SubIdx int64 `json:"subidx"`
|
||||
|
||||
Data []byte `json:"data"`
|
||||
}
|
||||
|
||||
type GetBlockHeaderMsg struct {
|
||||
Height int `json:"height"`
|
||||
Nonce string `json:"nonce"`
|
||||
Confirmations int `json:"confirmations"`
|
||||
}
|
||||
|
||||
type GetBlockHeaderMsgInt struct {
|
||||
Height int `json:"height"`
|
||||
Nonce uint32 `json:"nonce"`
|
||||
Confirmations int `json:"confirmations"`
|
||||
}
|
||||
|
||||
type GetBlockStatsMsg struct {
|
||||
Height int `json:"height"`
|
||||
Subsidy float64 `json:"subsidy"`
|
||||
Totalfee float64 `json:"totalfee"`
|
||||
}
|
|
@ -0,0 +1,634 @@
|
|||
package alph
|
||||
|
||||
import (
|
||||
//"database/sql"
|
||||
|
||||
"encoding/binary"
|
||||
"encoding/hex"
|
||||
"encoding/json"
|
||||
"strings"
|
||||
|
||||
//"log"
|
||||
//"math"
|
||||
"math/big"
|
||||
|
||||
"fmt"
|
||||
"pool/internal/msg"
|
||||
"pool/internal/server/coin"
|
||||
"pool/internal/server/dbif"
|
||||
"pool/internal/stratum"
|
||||
"pool/internal/utility"
|
||||
"time"
|
||||
|
||||
_ "github.com/mattn/go-sqlite3"
|
||||
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
const SERVER_ALPH_VERSION = "alph v1.0"
|
||||
|
||||
type ServerAlphContext struct {
|
||||
ServerCtx *coin.ServerContext
|
||||
logg *zap.Logger
|
||||
|
||||
AlphJob msg.AlphStratumJob
|
||||
}
|
||||
|
||||
var logg *zap.Logger
|
||||
var ServerAlphCtx ServerAlphContext
|
||||
|
||||
type Notify_msg_alph struct {
|
||||
ID interface{} `json:"id"`
|
||||
Method string `json:"method"`
|
||||
Params []msg.AlphStratumJob `json:"params"`
|
||||
}
|
||||
|
||||
func handle_submit(miner *coin.MinerObj, id float64, miner_user string, job_id string, nonce string) (bool, bool, bool) {
|
||||
var submit_item coin.BlockMsg
|
||||
/*var user_blk_item coin.UserBlockMsg*/
|
||||
var pool_blk_item coin.PoolBlkMsg
|
||||
|
||||
var blk_detail_height int64
|
||||
var blk_detail_hash string
|
||||
var blk_detail_success bool
|
||||
var blk_detail_miner_diff float64
|
||||
var blk_detail_pool_diff float64
|
||||
|
||||
if miner.Authorized != true {
|
||||
miner.ErrOthers = miner.ErrOthers + 1
|
||||
stratum.Handle_exception(miner, id, stratum.MINER_ERR_UNAUTH_WORKER)
|
||||
stratum.Send_reconnect_msg(miner)
|
||||
return false, false, false
|
||||
}
|
||||
var new_found bool = false
|
||||
var ack stratum.Submit_ack
|
||||
ack.ID = id
|
||||
ack.Result = true
|
||||
v, ok := miner.Jobs.Load(job_id)
|
||||
|
||||
if ok {
|
||||
job := v.(msg.AlphStratumJob)
|
||||
|
||||
if job.Height < miner.CurHeight-1 {
|
||||
ack.Result = false
|
||||
stratum.Handle_exception(miner, id, stratum.MINER_ERR_STALED_JOB)
|
||||
miner.ErrStaleds = miner.ErrStaleds + 1
|
||||
return false, false, false
|
||||
}
|
||||
|
||||
if (miner.LastNonce != nonce) || (miner.LastHeader != job.HeaderBlob) {
|
||||
miner.LastHeader = job.HeaderBlob
|
||||
miner.LastNonce = nonce
|
||||
job.Nonce = nonce
|
||||
logg.Debug("[server]", zap.Uint32("height", job.Height), zap.String("target", job.TargetBlob))
|
||||
|
||||
// ============== 对nonce+区块头进行double blake3 hash ==============
|
||||
phb, _ := hex.DecodeString(job.HeaderBlob) // 区块头 []byte
|
||||
nb, _ := hex.DecodeString(nonce) // nonce []byte
|
||||
|
||||
// Blake3 Hash Test Code
|
||||
// headerStr := "00070000000208dd35a4511b86c67d4559b94a09a64f7b35ad8d821b5bb0fb4e8c05000000008e7b7b385b727d6bedfc7b9fa8b76f39a2ef318b406a522007b56faa000000020901b382ec2b14149902d5e825d5785b41794f6dfe7a767fe5488e5f00000003178d4a043a964da8afea94bb315711a29ab70532e69f0a51c77501200000000030d339eadb0ce263f5ee49a356dd967a7f23152b6453ab57671d550100000001632ef4dab01759432e37b50d818d39f15cabab11ae0ad9949b2ca742000000000be91faa2a5b6c68762856350092244146fa5d03899ed8aecd8ef0d3446b0d40f1f22eb47dc4df7c9f2a849fa2c2f5ed5c50d626360be988b92244aa0c5dfbc04f756fc5de7f962edf62996f08ed373c51112bcb09637f9a64e6640e00000194f909ea901dff0b28"
|
||||
// nonceStr := "cd1359f22f500001cd1359f22f50000151956b6400000000"
|
||||
// _header, _ := hex.DecodeString(headerStr)
|
||||
// _nonce, _ := hex.DecodeString(nonceStr)
|
||||
// _hash := Hash(append(_nonce, _header...))
|
||||
// fmt.Println("测试用hash:", _hash)
|
||||
|
||||
// Hash Diff Test Code
|
||||
// _hash, _ := hex.DecodeString("0000000044b373be04ff72d317ec7f1e63b7d8eb8babbc6f33ab29bf640feee7")
|
||||
// diff := utility.AlphShareDiff(_hash)
|
||||
// fmt.Println("测试用diff:", diff)
|
||||
|
||||
// 计算hash, nonce + header
|
||||
var calc_hash []byte
|
||||
calc_hash = append(nb, phb...)
|
||||
calc_hash = Hash(calc_hash)
|
||||
logg.Debug("[server]", zap.String("hash in", submit_item.Header))
|
||||
logg.Debug("[server]", zap.String("calc_hash", hex.EncodeToString(calc_hash)))
|
||||
// ==================================================================
|
||||
|
||||
submit_target := new(big.Int)
|
||||
submit_target.SetBytes(calc_hash) // bignum.fromBuffer(hash);
|
||||
calc_diff := utility.AlphShareDiff(calc_hash) // 根据hash计算难度,shareDiff
|
||||
// fmt.Println("提交shares难度:", calc_diff)
|
||||
// fmt.Println("任务难度:", job.JobDifficulty)
|
||||
logg.Warn("[server]", zap.String("user", miner.User+"."+miner.Miner), zap.Float64("target diff", miner.Difficulty), zap.Float64("submit diff", calc_diff))
|
||||
|
||||
if calc_diff < job.JobDifficulty {
|
||||
ack.Result = false
|
||||
miner.ErrLowDiffs = miner.ErrLowDiffs + 1
|
||||
stratum.Handle_exception(miner, id, stratum.MINER_ERR_LOW_DIF_SHARE)
|
||||
return false, false, false
|
||||
}
|
||||
|
||||
var addZero string = ""
|
||||
if len(job.TargetBlob) < 64 {
|
||||
addZero = strings.Repeat("0", 64-len(job.TargetBlob))
|
||||
}
|
||||
stb, _ := hex.DecodeString(addZero + job.TargetBlob)
|
||||
// server_diff := utility.Target2Diff(utility.Reverse(stb))
|
||||
server_diff := utility.AlphShareDiff(utility.Reverse(stb))
|
||||
network_target := new(big.Int)
|
||||
network_target.SetBytes(stb)
|
||||
Net_target := hex.EncodeToString(network_target.Bytes()) // jobTarget
|
||||
|
||||
logg.Info("[server]", zap.Float64("calc_diff", calc_diff), zap.Float64("miner.Difficulty", miner.Difficulty), zap.Float64("server_diff", server_diff))
|
||||
logg.Debug("[server]", zap.String("submit_target", hex.EncodeToString(submit_target.Bytes())), zap.String("network_target", hex.EncodeToString(network_target.Bytes())), zap.String("target", hex.EncodeToString(miner.ServerTarget.Bytes())), zap.Int("cmp", network_target.Cmp(submit_target)))
|
||||
|
||||
submit_item.Hash = hex.EncodeToString(calc_hash)
|
||||
submit_item.Target = hex.EncodeToString(miner.Target.Bytes())
|
||||
submit_item.Submit_target = hex.EncodeToString(calc_hash)
|
||||
submit_item.Height = int64(job.Height)
|
||||
submit_item.Pow = hex.EncodeToString(calc_hash)
|
||||
submit_item.Net_target = strings.Repeat("0", 64-len(Net_target)) + Net_target
|
||||
|
||||
pool_blk_item.Height = int64(job.Height)
|
||||
pool_blk_item.Hash = hex.EncodeToString(calc_hash)
|
||||
pool_blk_item.Pow = hex.EncodeToString(calc_hash)
|
||||
pool_blk_item.Net_target = strings.Repeat("0", 64-len(Net_target)) + Net_target
|
||||
|
||||
blk_detail_height = int64(job.Height)
|
||||
blk_detail_hash = hex.EncodeToString(calc_hash)
|
||||
blk_detail_success = false
|
||||
// blk_detail_miner_diff = job.JobDifficulty
|
||||
blk_detail_miner_diff = miner.Difficulty
|
||||
blk_detail_pool_diff = miner.Server.RefDifficulty
|
||||
// fmt.Println("mienr.Diff:", miner.Difficulty)
|
||||
// fmt.Println("job.Diff:", job.JobDifficulty)
|
||||
// fmt.Println("提交任务:", "Hash:", submit_item.Hash, "\tTarget:", submit_item.Target, "\tNet_target:", submit_item.Net_target)
|
||||
// fmt.Println("submit_item:", submit_item)
|
||||
// fmt.Println("pool_blk_item:", pool_blk_item)
|
||||
// fmt.Println("blk_detail_height:", blk_detail_height)
|
||||
if ack.Result == true {
|
||||
if (calc_diff >= server_diff) || (network_target.Cmp(submit_target) >= 0) {
|
||||
miner.Server.SubIdx++
|
||||
Produce_block_submit(miner, &job, submit_item.Hash, miner.Server.SubIdx)
|
||||
miner.SubmitIndex++
|
||||
miner.Submits = miner.Submits + 1
|
||||
new_found = true
|
||||
}
|
||||
}
|
||||
} else {
|
||||
miner.LastHeader = job.HeaderBlob
|
||||
miner.LastNonce = nonce
|
||||
ack.Result = false
|
||||
stratum.Handle_exception(miner, id, stratum.MINER_ERR_DUP_SHARE)
|
||||
miner.ErrDuplicates = miner.ErrDuplicates + 1
|
||||
return false, false, false
|
||||
|
||||
}
|
||||
} else {
|
||||
ack.Result = false
|
||||
stratum.Handle_exception(miner, id, stratum.MINER_ERR_NOT_FOUND_JOB)
|
||||
miner.ErrStaleds = miner.ErrStaleds + 1
|
||||
return false, false, false
|
||||
}
|
||||
|
||||
miner.LastJobId = job_id
|
||||
|
||||
ack.Error = nil
|
||||
body, err := json.Marshal(ack)
|
||||
if err != nil {
|
||||
logg.Error("[server]", zap.String("Marshal", err.Error()))
|
||||
miner.ErrOthers = miner.ErrOthers + 1
|
||||
stratum.Handle_exception(miner, id, stratum.MINER_ERR_UNKNOWN)
|
||||
return false, false, false
|
||||
}
|
||||
|
||||
var body_string = string(body) + "\n"
|
||||
err = stratum.Conn_tx(miner.Conn, []byte(body_string))
|
||||
if err != nil {
|
||||
//miner.Server.Miners.Delete(miner.MinerId)
|
||||
}
|
||||
if miner.ZlogInit {
|
||||
miner.Zlog.Info().Msg(body_string)
|
||||
}
|
||||
logg.Debug("[server]", zap.String("tx", body_string))
|
||||
miner.TxLock.Lock()
|
||||
miner.Status = coin.MINER_STATUS_RUNNING
|
||||
miner.TxLock.Unlock()
|
||||
|
||||
if ack.Result {
|
||||
|
||||
miner.Accepts += miner.Difficulty
|
||||
miner.M5Accepts += miner.Difficulty
|
||||
|
||||
miner.VarDiffOpt.SubmitShares += miner.Difficulty
|
||||
|
||||
} else {
|
||||
miner.Rejects += miner.Difficulty
|
||||
|
||||
}
|
||||
now := time.Now()
|
||||
if miner.Server.Config.Diff.Filter == "kalman" {
|
||||
if ack.Result {
|
||||
share_interval := now.Sub(miner.LastSubmitime).Seconds()
|
||||
mhs := miner.Difficulty * share_interval
|
||||
diff_next, kalman_p := miner.DiffHandler.Handler(miner.Difficulty, share_interval)
|
||||
mhs_est := diff_next * miner.Server.Config.Diff.DiffAdjustInterval
|
||||
|
||||
ratio := diff_next / miner.Difficulty
|
||||
if ratio > 0 {
|
||||
if now.Sub(miner.StartSubmitTime).Seconds() > 180 {
|
||||
if ratio >= 2 {
|
||||
//miner.DifficultyNext = math.Ceil(diff_next*100) / 100
|
||||
miner.DifficultyNext = diff_next * 10000000 / 10000000
|
||||
} else if ratio <= 0.5 {
|
||||
//miner.DifficultyNext = math.Ceil(diff_next*100) / 100
|
||||
miner.DifficultyNext = diff_next * 10000000 / 10000000
|
||||
} else {
|
||||
}
|
||||
} else {
|
||||
//miner.DifficultyNext = math.Ceil(diff_next*100) / 100
|
||||
miner.DifficultyNext = diff_next * 10000000 / 10000000
|
||||
}
|
||||
}
|
||||
if miner.DifficultyNext > 0.0 {
|
||||
if miner.DifficultyNext < miner.VarDiffOpt.MinDiff {
|
||||
miner.DifficultyNext = miner.VarDiffOpt.MinDiff
|
||||
} else if miner.DifficultyNext > miner.VarDiffOpt.MaxDiff {
|
||||
miner.DifficultyNext = miner.VarDiffOpt.MaxDiff
|
||||
}
|
||||
}
|
||||
//miner.VarDiffOpt.LastCalcTime = now
|
||||
|
||||
if miner.Server.Config.Diff.Dbg {
|
||||
coin.New_diff_into_db(miner.User, miner.Miner, fmt.Sprint(miner.MinerIndex), miner.Difficulty, diff_next, kalman_p, share_interval, mhs, mhs_est)
|
||||
}
|
||||
|
||||
//log.Println("diff adjust", ratio, diff_next, miner.Difficulty, miner.DifficultyNext)
|
||||
}
|
||||
} else {
|
||||
// submit time < DiffAdjustInterval,then up adjust diff
|
||||
if now.Sub(miner.LastSubmitime).Seconds() < miner.Server.Config.Diff.DiffAdjustInterval {
|
||||
if ack.Result {
|
||||
if miner.VarDiffOpt.Uptimes++; miner.VarDiffOpt.Uptimes >= coin.DIFFICULTY_WAIT_TIMES {
|
||||
coin.VarAdjustDifficulty(miner, coin.UP_DIFF)
|
||||
miner.VarDiffOpt.LastCalcTime = now
|
||||
}
|
||||
}
|
||||
} else {
|
||||
miner.VarDiffOpt.Uptimes = 0
|
||||
}
|
||||
|
||||
// submit time > 2 * DiffAdjustInterval,then down adjust diff
|
||||
if now.Sub(miner.LastSubmitime).Seconds() > miner.Server.Config.Diff.DiffAdjustInterval*2 {
|
||||
if ack.Result {
|
||||
if miner.VarDiffOpt.Downtimes++; miner.VarDiffOpt.Downtimes >= coin.DIFFICULTY_WAIT_TIMES {
|
||||
coin.VarAdjustDifficulty(miner, coin.DOWN_DIFF)
|
||||
miner.VarDiffOpt.LastCalcTime = now
|
||||
}
|
||||
}
|
||||
} else {
|
||||
miner.VarDiffOpt.Downtimes = 0
|
||||
}
|
||||
}
|
||||
if ack.Result {
|
||||
miner.LastSubmitime = now
|
||||
miner.VarDiffOpt.LastSubmitTime = now
|
||||
}
|
||||
var duration float64 = float64(now.Sub(miner.StartSubmitTime)) / 1000000000
|
||||
|
||||
if duration < 1 {
|
||||
duration = 1
|
||||
}
|
||||
diffOneShareHashesAvg := uint64(0x00000000FFFFFFFF)
|
||||
miner.AverageHashrate = miner.Accepts * float64(diffOneShareHashesAvg) / duration / 1000000
|
||||
var m5_duration float64 = float64(now.Sub(miner.M5SubmitTime)) / 1000000000
|
||||
if m5_duration >= float64(time.Minute*5)/1000000000 {
|
||||
miner.M5SubmitTime = now
|
||||
miner.M5Hashrate = miner.M5Accepts * float64(diffOneShareHashesAvg) / m5_duration / 1000000
|
||||
logg.Info("[server]", zap.Float64("Accepts", miner.Accepts), zap.Float64("M5Accepts", miner.M5Accepts), zap.Float64("M5Hashrate(MH/S)", miner.M5Hashrate))
|
||||
miner.M5Accepts = 0
|
||||
}
|
||||
|
||||
logg.Warn("[server]", zap.Float64("M5Accepts", miner.M5Accepts), zap.Float64("M5Hashrate(MH/S)", miner.M5Hashrate))
|
||||
|
||||
if miner.Server.Config.Diff.Filter == "kalman" {
|
||||
} else {
|
||||
if float64(now.Sub(miner.VarDiffOpt.LastCalcTime))/1000000000 >= miner.VarDiffOpt.AdjustTime {
|
||||
coin.VarAdjustDifficulty(miner, coin.UPDATE_DIFF)
|
||||
miner.VarDiffOpt.LastCalcTime = now
|
||||
}
|
||||
}
|
||||
|
||||
if new_found {
|
||||
pool_blk_item.Submit = "y"
|
||||
pool_blk_item.Success = false
|
||||
pool_blk_item.Accepts = miner.Accepts
|
||||
pool_blk_item.Rejects = miner.Rejects
|
||||
pool_blk_item.Reward = 0
|
||||
pool_blk_item.Fee = 0
|
||||
pool_blk_item.Nonce = nonce
|
||||
pool_blk_item.SubIdx = miner.Server.SubIdx
|
||||
dbif.NotifyPoolBlkStatsDb2(miner.Server, &pool_blk_item)
|
||||
|
||||
}
|
||||
|
||||
if ack.Result {
|
||||
|
||||
submit_item.Success = false
|
||||
if new_found {
|
||||
submit_item.Submit = "y"
|
||||
submit_item.SubIdx = miner.Server.SubIdx
|
||||
} else {
|
||||
submit_item.Submit = "n"
|
||||
submit_item.SubIdx = -1
|
||||
}
|
||||
|
||||
submit_item.Accepts = miner.Accepts
|
||||
submit_item.Total_accepts = miner.Accepts
|
||||
submit_item.Rejects = miner.Rejects
|
||||
submit_item.Total_rejects = miner.Rejects
|
||||
submit_item.Reward = 0
|
||||
submit_item.Fee = 0
|
||||
submit_item.Nonce = nonce
|
||||
|
||||
dbif.NotifyBlkDetailDb(miner, blk_detail_height, blk_detail_hash, blk_detail_success, blk_detail_miner_diff, blk_detail_pool_diff, nonce, submit_item.SubIdx)
|
||||
return true, new_found, true
|
||||
}
|
||||
return false, false, true
|
||||
}
|
||||
|
||||
// 该方法和alph-gbt的768行代码相对应
|
||||
func Produce_block_submit(miner *coin.MinerObj, job *msg.AlphStratumJob, PowHash string, SubIdx int64) {
|
||||
var nm msg.BlockAlphMsg
|
||||
nm.Id = job.JobId
|
||||
nm.Header = job.HeaderBlob
|
||||
nm.Nonce = job.Nonce
|
||||
nm.FromGroup = job.FromGroup
|
||||
nm.ToGroup = job.ToGroup
|
||||
nm.SubIdx = SubIdx
|
||||
nm.User = miner.User
|
||||
nm.Miner = miner.Miner
|
||||
nm.Hash = PowHash
|
||||
nm.Index = fmt.Sprint(miner.MinerIndex)
|
||||
body, err := json.Marshal(nm)
|
||||
if err != nil {
|
||||
logg.Error("[server]", zap.String("failed to Marshal job", err.Error()))
|
||||
return
|
||||
}
|
||||
blk := string(body)
|
||||
//Add Height
|
||||
heightb := utility.Uint32ToByte(job.Height)
|
||||
heights := hex.EncodeToString(heightb)
|
||||
blk += heights
|
||||
var Height uint32 = utility.ByteToUint32(heightb)
|
||||
logg.Warn("[server]", zap.Uint32("Height", Height))
|
||||
|
||||
//Add SubmitIndex
|
||||
indexb := utility.Uint32ToByte(miner.SubmitIndex)
|
||||
indexs := hex.EncodeToString(indexb)
|
||||
blk += indexs
|
||||
var SubmitIndex uint32 = utility.ByteToUint32(indexb)
|
||||
logg.Info("[server]", zap.Uint32("SubmitIndex", SubmitIndex))
|
||||
logg.Info("[server]", zap.String("blk", blk))
|
||||
|
||||
if miner.Server.PubCh == nil {
|
||||
miner.Server.PubCh = utility.InitZmqPub(miner.Server.Config.Zmq.Pub)
|
||||
}
|
||||
if miner.Server.PubCh != nil {
|
||||
//miner.Server.PubCh.SendChan <- [][]byte{[]byte("blknexa"), []byte(blk)}
|
||||
err := miner.Server.PubCh.SendMessage([][]byte{[]byte("blkalph"), []byte(blk)})
|
||||
if err != nil {
|
||||
miner.Server.PubCh.Destroy()
|
||||
miner.Server.PubCh = nil
|
||||
logg.Info("[server]", zap.String("blk", err.Error()))
|
||||
} else {
|
||||
logg.Info("[server]", zap.String("blk", "sent"))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func alph_parse_miner_notify(miner *coin.MinerObj, msg msg.AlphStratumJob) int {
|
||||
if miner.AlphJob.Height != msg.Height {
|
||||
miner.Job.IsClean = true
|
||||
}
|
||||
miner.AlphJob = msg
|
||||
miner.AlphJob.Extranonce1 = miner.Job.Extranonce1
|
||||
miner.Job.Extranonce2_size = msg.Extranonce2_size
|
||||
|
||||
//miner.Server.Logg.Info("[server]", zap.Int32("miner.Version", miner.Version), zap.Int32("msg.Version", msg.Version))
|
||||
return 1
|
||||
}
|
||||
|
||||
func Init(server *coin.ServerContext) {
|
||||
ServerAlphCtx.ServerCtx = server
|
||||
logg = server.Logg
|
||||
logg.Info("[server]", zap.String("server_alph_version", SERVER_ALPH_VERSION))
|
||||
coin.Init_diff_db()
|
||||
}
|
||||
|
||||
func Start() {
|
||||
|
||||
}
|
||||
|
||||
func Stop() {
|
||||
coin.DiffStop()
|
||||
}
|
||||
|
||||
func InitMiner(miner *coin.MinerObj) {
|
||||
be1 := make([]byte, 8)
|
||||
binary.LittleEndian.PutUint64(be1, (miner.Server.Extranonce1 /* + 0x81000000*/))
|
||||
miner.Job.Extranonce1 = hex.EncodeToString(be1)
|
||||
miner.AlphJob.Extranonce1 = miner.Job.Extranonce1
|
||||
miner.Server.Extranonce1++
|
||||
// fmt.Println("miner.Server.Extranonce1:", miner.Server.Extranonce1)
|
||||
|
||||
target, err := utility.DiffToTarget(miner.Difficulty)
|
||||
if err != nil {
|
||||
logg.Error("[server]", zap.String("DiffToTarget", err.Error()))
|
||||
return
|
||||
}
|
||||
|
||||
miner.Target = target
|
||||
logg.Debug("[target]", zap.String("target", hex.EncodeToString(target.Bytes())), zap.Float64("diff", miner.Difficulty))
|
||||
|
||||
server_target := new(big.Int)
|
||||
t_bytes, err := hex.DecodeString(miner.AlphJob.TargetBlob)
|
||||
if err != nil {
|
||||
logg.Error("[server]", zap.String("DecodeString", err.Error()))
|
||||
return
|
||||
}
|
||||
//server_target.SetBytes(common.Reverse(t_bytes))
|
||||
server_target.SetBytes(t_bytes)
|
||||
miner.ServerTarget = server_target
|
||||
miner.ServerTargetS = miner.Server.SJob.Target
|
||||
|
||||
miner.AlphJob = miner.Server.AlphJob
|
||||
}
|
||||
func HandleMinerSubscribe(miner *coin.MinerObj, id float64, extranonce1 string, msg string) {
|
||||
|
||||
}
|
||||
|
||||
func HandleMinerAuth(miner *coin.MinerObj) {
|
||||
// randomNumber := rand.Intn(65536)
|
||||
// hexString := fmt.Sprintf("%04x", randomNumber)
|
||||
// method := "mining.set_extranonce"
|
||||
// params := []string{hexString}
|
||||
// setExtranonce_msg := stratum.AlphSetExtranonce{Method: method, ID: nil, Params: params}
|
||||
// fmt.Println("extranonce:", setExtranonce_msg)
|
||||
// ex_msg, err := json.Marshal(setExtranonce_msg)
|
||||
// if err != nil {
|
||||
// logg.Error("[server]", zap.String("Marshal", err.Error()))
|
||||
// return
|
||||
// }
|
||||
// stratum.Conn_tx(miner.Conn, ex_msg)
|
||||
}
|
||||
|
||||
func HandleMinerSubmit(miner *coin.MinerObj, id float64, miner_user string, job_id string, nonce2 string, ntime string, nonce string) (bool, bool, bool) {
|
||||
accept_ok, submit_ok, handle_ok := handle_submit(miner, id, miner_user, job_id, nonce)
|
||||
return accept_ok, submit_ok, handle_ok
|
||||
}
|
||||
|
||||
func SetDifficulty(miner *coin.MinerObj) {
|
||||
extra_msg := stratum.AlphSetExtranonce()
|
||||
err := stratum.Conn_tx(miner.Conn, extra_msg)
|
||||
if err != nil {
|
||||
fmt.Println("alph.set_extranonce发送消息失败:", err)
|
||||
}
|
||||
stratum.Set_difficulty(miner)
|
||||
}
|
||||
|
||||
func AlphNotify(miner *coin.MinerObj) {
|
||||
miner.TxLock.Lock()
|
||||
if !((miner.Status == coin.MINER_STATUS_AUTHORIZED) || (miner.Status == coin.MINER_STATUS_RUNNING)) {
|
||||
miner.TxLock.Unlock()
|
||||
return
|
||||
}
|
||||
miner.TxLock.Unlock()
|
||||
if miner.DifficultyNext > -1 {
|
||||
ratio := miner.DifficultyNext / miner.Difficulty
|
||||
if ratio > 1.1 || ratio < 0.9 {
|
||||
miner.Difficulty = miner.DifficultyNext
|
||||
miner.DifficultyNext = -1
|
||||
|
||||
stratum.Set_difficulty(miner)
|
||||
|
||||
logg.Info("[gbt]", zap.Float64("update Diff", miner.Difficulty))
|
||||
} else {
|
||||
miner.DifficultyNext = -1
|
||||
}
|
||||
}
|
||||
miner.TxLock.Lock()
|
||||
|
||||
var params msg.AlphStratumJob
|
||||
|
||||
target := utility.AlphDiffToTarget2(miner.Difficulty)
|
||||
|
||||
params.JobId = miner.AlphJob.JobId
|
||||
params.HeaderBlob = miner.AlphJob.HeaderBlob
|
||||
params.TargetBlob = target
|
||||
|
||||
params.Height = miner.AlphJob.Height
|
||||
params.FromGroup = miner.AlphJob.FromGroup
|
||||
params.ToGroup = miner.AlphJob.ToGroup
|
||||
params.TxsBlob = miner.AlphJob.TxsBlob
|
||||
miner.CurHeight = miner.AlphJob.Height
|
||||
miner.AlphJob.JobDifficulty = miner.Difficulty
|
||||
|
||||
miner.Jobs.LoadOrStore(miner.AlphJob.JobId, miner.AlphJob)
|
||||
|
||||
stratum.AddAndUpdateJob(miner)
|
||||
|
||||
stratum.UpdateJobs(miner)
|
||||
|
||||
miner.JobId++
|
||||
// 发送mining.notify消息
|
||||
var body []byte
|
||||
var err error
|
||||
var msg Notify_msg_alph
|
||||
msg.ID = nil
|
||||
msg.Method = "mining.notify"
|
||||
msg.Params = append(msg.Params, params)
|
||||
body, err = json.Marshal(msg)
|
||||
if err != nil {
|
||||
miner.Server.Logg.Error("[server]", zap.String("Marshal", err.Error()))
|
||||
miner.TxLock.Unlock()
|
||||
return
|
||||
}
|
||||
var body_string = string(body) + "\n"
|
||||
err = stratum.Conn_tx(miner.Conn, []byte(body_string))
|
||||
if err != nil {
|
||||
//delete(miner.Server.Miners, miner.MinerId)
|
||||
//miner.Server.Miners.Delete(miner.MinerId)
|
||||
}
|
||||
miner.Server.Logg.Debug("[server]", zap.String("tx", body_string))
|
||||
|
||||
miner.TxLock.Unlock()
|
||||
if miner.ZlogInit {
|
||||
miner.Zlog.Info().Msg(body_string)
|
||||
}
|
||||
}
|
||||
|
||||
func Notify(miner *coin.MinerObj) {
|
||||
AlphNotify(miner)
|
||||
}
|
||||
|
||||
func HandleJobMsg(server *coin.ServerContext, Msg []byte) {
|
||||
var result msg.AlphStratumJob
|
||||
server.Logg.Warn("[server]", zap.String("receive", "job"))
|
||||
|
||||
if err := json.Unmarshal(Msg, &result); err != nil {
|
||||
server.Logg.Error("[server]", zap.String("Unmarshal", err.Error()))
|
||||
return
|
||||
}
|
||||
|
||||
server.AlphJob = msg.AlphStratumJob(result)
|
||||
|
||||
logg.Debug("[gbt]", zap.String("Target", server.AlphJob.TargetBlob))
|
||||
|
||||
// server.NexaJob.Extranonce2_size = 8
|
||||
// server.SJob.Extranonce2_size = 8
|
||||
logg.Debug("[gbt]", zap.Uint32("Height", server.AlphJob.Height), zap.String("Target", server.AlphJob.TargetBlob), zap.String("Header", server.AlphJob.HeaderBlob) /*, zap.Uint64("Timastamp", server.NexaJob.CurTime)*/)
|
||||
// targetb, _ := hex.DecodeString(server.AlphJob.TargetBlob)
|
||||
|
||||
// jobIdInt, err := strconv.ParseInt(server.AlphJob.JobId, 16, 64)
|
||||
// if err != nil {
|
||||
// logg.Error("[server]", zap.String("Atoi", err.Error()))
|
||||
// return
|
||||
// }
|
||||
// uint64Id := uint64(jobIdInt)
|
||||
// logg.Debug("[gbt]", zap.Uint64("Id", uint64Id), zap.Float64("network diff", utility.Target2Diff(utility.Reverse(targetb))))
|
||||
|
||||
server.NetHight = uint64(server.AlphJob.Height)
|
||||
server.NetTarget = server.AlphJob.TargetBlob // 任务的target就是全网target
|
||||
server.Miners.Range(func(k, v interface{}) bool {
|
||||
m, ok := v.(*(coin.MinerObj))
|
||||
if ok {
|
||||
server.Logg.Info("[server]", zap.String("lock", "start"))
|
||||
m.TxLock.Lock()
|
||||
status := m.Status
|
||||
cmd := alph_parse_miner_notify(m, server.AlphJob)
|
||||
m.TxLock.Unlock()
|
||||
server.Logg.Info("[server]", zap.String("lock", "end"))
|
||||
var need_notify bool = true
|
||||
if time.Now().Sub(m.ConnSetupTime) >= time.Duration(coin.CONN_EXPIRED_TIME)*time.Second {
|
||||
if (status != coin.MINER_STATUS_RUNNING) && (status != coin.MINER_STATUS_AUTHORIZED) {
|
||||
//m.Conn.Close()
|
||||
need_notify = false
|
||||
}
|
||||
}
|
||||
if need_notify {
|
||||
switch cmd {
|
||||
case 0: //extranonce 1 and extranonce2 size
|
||||
//TODO
|
||||
case 1: //notify
|
||||
AlphNotify(m)
|
||||
}
|
||||
}
|
||||
}
|
||||
return true
|
||||
})
|
||||
}
|
||||
|
||||
func IsMhsLow(miner *coin.MinerObj) bool {
|
||||
if miner.Mhs5M < 1 {
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func GetBlockInterval() int {
|
||||
return 180
|
||||
}
|
|
@ -0,0 +1,28 @@
|
|||
package alph
|
||||
|
||||
/*
|
||||
#cgo CFLAGS : -I../include
|
||||
#cgo LDFLAGS: -L../lib -lalph
|
||||
|
||||
#include <stdlib.h>
|
||||
#include "../include/alph.h"
|
||||
*/
|
||||
import "C"
|
||||
import (
|
||||
"unsafe"
|
||||
)
|
||||
|
||||
// 计算哈希并返回错误(如果有)
|
||||
func computeHash(input []byte) []byte {
|
||||
output := make([]byte, 32) // 假设输出长度为 32 字节,根据你的实际情况调整
|
||||
|
||||
// 调用 C 函数 alph_hash
|
||||
C.alph_hash((*C.uchar)(unsafe.Pointer(&output[0])), (*C.uchar)(unsafe.Pointer(&input[0])))
|
||||
|
||||
return output
|
||||
}
|
||||
|
||||
// Hash 用于对外提供的哈希计算接口
|
||||
func Hash(input []byte) []byte {
|
||||
return computeHash(input)
|
||||
}
|
|
@ -0,0 +1,787 @@
|
|||
// coin.go
|
||||
package coin
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"container/list"
|
||||
"crypto/md5"
|
||||
"crypto/rand"
|
||||
"encoding/base64"
|
||||
|
||||
"database/sql"
|
||||
"encoding/binary"
|
||||
"encoding/hex"
|
||||
"strconv"
|
||||
|
||||
"io"
|
||||
"log"
|
||||
"math"
|
||||
"math/big"
|
||||
"net"
|
||||
|
||||
"fmt"
|
||||
"pool/internal/db"
|
||||
"pool/internal/msg"
|
||||
"pool/internal/server/diff"
|
||||
"pool/internal/utility"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"github.com/btcsuite/btcd/chaincfg/chainhash"
|
||||
"github.com/btcsuite/btcd/wire"
|
||||
|
||||
"github.com/rs/zerolog"
|
||||
|
||||
"github.com/redis/go-redis/v9"
|
||||
"github.com/zeromq/goczmq"
|
||||
"go.uber.org/zap"
|
||||
"gopkg.in/natefinch/lumberjack.v2"
|
||||
|
||||
_ "github.com/mattn/go-sqlite3"
|
||||
)
|
||||
|
||||
const JOB_EXPIRED_TIME uint32 = 60 //job expired time (second)
|
||||
const LOCAL_JOBS_EXPIRED_TIME uint32 = 300 //300 //local jobs expired time (second)
|
||||
const LOCAL_JOBS_TOTAL_SIZE uint32 = 300 //300 //total local jobs
|
||||
const CONN_EXPIRED_TIME uint32 = 600 //connection expired time
|
||||
|
||||
// miner status
|
||||
// const MINER_STATUS_OFFLINE string = "offline"
|
||||
const MINER_STATUS_CONNECTED string = "connected"
|
||||
const MINER_STATUS_SUBSCRIBED string = "subscribed"
|
||||
const MINER_STATUS_AUTHORIZED string = "authorized"
|
||||
const MINER_STATUS_RUNNING string = "online"
|
||||
const MINER_STATUS_DISCONNECTED string = "offline"
|
||||
const MINER_STATUS_DISABLED string = "disabled"
|
||||
|
||||
const MINER_DURATION_TIME time.Duration = 1
|
||||
const MINER_DIFFICULTY_ADJUST_DURATION time.Duration = 5
|
||||
|
||||
// vardiff
|
||||
const UP_DIFF int = 0
|
||||
const DOWN_DIFF int = 1
|
||||
const UPDATE_DIFF int = 2
|
||||
const DIFFICULTY_WAIT_TIMES int = 6
|
||||
|
||||
const (
|
||||
Low = 0
|
||||
Mid = 1
|
||||
Hign = 2
|
||||
)
|
||||
|
||||
type BindConfig struct {
|
||||
Listen string `json:"listen"`
|
||||
Auth bool `json:"auth"`
|
||||
}
|
||||
|
||||
type DiffConfig struct {
|
||||
StartDifficulty float64 `json:"start_diff"`
|
||||
DiffMin float64 `json:"diff_min"`
|
||||
DiffMax float64 `json:"diff_max"`
|
||||
DiffAdjustInterval float64 `json:"diff_adjust_interval"`
|
||||
DiffAdjustPercentage float64 `json:"diff_adjust_percentage"`
|
||||
DiffAdjustTime float64 `json:"diff_adjust_time"`
|
||||
Filter string `json:"filter"`
|
||||
Dbg bool `json:"dbg"`
|
||||
}
|
||||
|
||||
type ServerConfig struct {
|
||||
Coin string `json:"coin"`
|
||||
Host BindConfig `json:"host"`
|
||||
Diff DiffConfig `json:"diff"`
|
||||
Zmq utility.ZmqConfig `json:"zmq"`
|
||||
Redis utility.RedisConfig `json:"redis"`
|
||||
Zaplog zap.Config `json:"zap"`
|
||||
Logrotae utility.LogRotateConfig `json:"logrotate"`
|
||||
}
|
||||
|
||||
type CoinObj struct {
|
||||
Coin string
|
||||
Init func(server *ServerContext)
|
||||
Start func()
|
||||
Stop func()
|
||||
InitMiner func(miner *MinerObj)
|
||||
HandleMinerSubscribe func(miner *MinerObj, id float64, extranonce1 string, msg string)
|
||||
HandleMinerAuth func(miner *MinerObj)
|
||||
HandleMinerSubmit func(miner *MinerObj, id float64, miner_user string, job_id string, nonce2 string, ntime string, nonce string) (bool, bool, bool)
|
||||
SetDifficulty func(miner *MinerObj)
|
||||
Notify func(miner *MinerObj)
|
||||
HandleJobMsg func(server *ServerContext, Msg []byte)
|
||||
IsMhsLow func(miner *MinerObj) bool
|
||||
GetBlockInterval func() int
|
||||
}
|
||||
|
||||
type PoolBlkMsg struct {
|
||||
Height int64
|
||||
Hash string
|
||||
Pow string
|
||||
Net_target string
|
||||
Submit string
|
||||
Success bool
|
||||
Accepts float64
|
||||
Rejects float64
|
||||
Reward float64
|
||||
Fee float64
|
||||
Nonce string
|
||||
SubIdx int64
|
||||
}
|
||||
|
||||
type ServerContext struct {
|
||||
CoinCtx CoinObj
|
||||
DbCtx *db.DbContext
|
||||
|
||||
Config *ServerConfig
|
||||
|
||||
PubCh *goczmq.Sock
|
||||
SubCh *goczmq.Sock
|
||||
|
||||
Listener net.Listener
|
||||
|
||||
MinerType string
|
||||
|
||||
Extranonce1 uint64
|
||||
|
||||
Difficulty float64
|
||||
|
||||
RefDifficulty float64
|
||||
|
||||
Accepts float64
|
||||
Rejects float64
|
||||
AverageHashrate float64
|
||||
|
||||
Miners sync.Map
|
||||
|
||||
MMhs sync.Map
|
||||
|
||||
Started bool
|
||||
|
||||
SLock sync.Mutex
|
||||
ExitFlag bool
|
||||
|
||||
//AlivingChan chan bool
|
||||
//LiveingExpired bool
|
||||
FlagAliving int32
|
||||
FlagAlivingExit int32
|
||||
|
||||
ExitPingChan chan bool
|
||||
ExitJobChan chan bool
|
||||
|
||||
Logg *zap.Logger
|
||||
LogR *lumberjack.Logger
|
||||
|
||||
SJob msg.StratumJob
|
||||
|
||||
//UpdateMap sync.Map
|
||||
|
||||
SyncJobChan chan bool
|
||||
Synced bool
|
||||
|
||||
ExitDbMiners chan bool
|
||||
ExitDbMinersStats chan bool
|
||||
|
||||
ExitDbUser chan bool
|
||||
ExitDbUserStats chan bool
|
||||
|
||||
ExitDbPoolStats chan bool
|
||||
|
||||
NexaJob msg.NexaStratumJob
|
||||
AlphJob msg.AlphStratumJob
|
||||
|
||||
ExitDiffVar chan bool
|
||||
|
||||
RedisClient *redis.Client
|
||||
|
||||
Accepts5M float64
|
||||
Accepts15M float64
|
||||
Accepts30M float64
|
||||
Accepts1h float64
|
||||
Accepts3h float64
|
||||
Accepts6h float64
|
||||
Accepts12h float64
|
||||
Accepts24h float64
|
||||
Accepts48h float64
|
||||
|
||||
Rejects5M float64
|
||||
Rejects15M float64
|
||||
Rejects30M float64
|
||||
Rejects1h float64
|
||||
Rejects3h float64
|
||||
Rejects6h float64
|
||||
Rejects12h float64
|
||||
Rejects24h float64
|
||||
Rejects48h float64
|
||||
|
||||
Mhs5M float64
|
||||
Mhs15M float64
|
||||
Mhs30M float64
|
||||
Mhs1h float64
|
||||
Mhs3h float64
|
||||
Mhs6h float64
|
||||
Mhs12h float64
|
||||
Mhs24h float64
|
||||
Mhs48h float64
|
||||
|
||||
RejectRatio5M float64
|
||||
RejectRatio15M float64
|
||||
RejectRatio30M float64
|
||||
RejectRatio1h float64
|
||||
RejectRatio3h float64
|
||||
RejectRatio6h float64
|
||||
RejectRatio12h float64
|
||||
RejectRatio24h float64
|
||||
RejectRatio48h float64
|
||||
|
||||
TotalMiners int64
|
||||
Normal int64
|
||||
Abnormal int64
|
||||
Offline int64
|
||||
MhsZero int64
|
||||
MhsLow int64
|
||||
HighRejects int64
|
||||
Unstable int64
|
||||
|
||||
NetTarget string
|
||||
NetHight uint64
|
||||
|
||||
Submits int64
|
||||
Blocks int64
|
||||
Orphans int64
|
||||
|
||||
Reward float64
|
||||
Fee float64
|
||||
|
||||
/*Users sync.Map
|
||||
UsersSLock sync.Mutex*/
|
||||
|
||||
/*PoolSLock sync.Mutex*/
|
||||
|
||||
SubIdx int64
|
||||
|
||||
MinerIndex int64
|
||||
|
||||
//NotifyBlkDetailIdx int32
|
||||
}
|
||||
|
||||
type JobListEntry struct {
|
||||
Job_id string
|
||||
Ts time.Time
|
||||
}
|
||||
|
||||
type MhsItem struct {
|
||||
Tt time.Time
|
||||
Diff float64
|
||||
}
|
||||
|
||||
type MhsObj struct {
|
||||
MinerId string
|
||||
Name string
|
||||
Accepts []MhsItem
|
||||
Rejects []MhsItem
|
||||
StartSubmitTime time.Time
|
||||
|
||||
StartDayTime time.Time
|
||||
|
||||
User string
|
||||
Miner string
|
||||
Index string
|
||||
Status string
|
||||
Algo int
|
||||
}
|
||||
|
||||
type VarDiffOptions struct {
|
||||
VariancePercent float64
|
||||
AdjustTime float64
|
||||
AdjustInterval float64
|
||||
MinDiff float64
|
||||
MaxDiff float64
|
||||
MinShares float64
|
||||
MaxShares float64
|
||||
TargetShares float64
|
||||
SubmitShares float64
|
||||
SilenceCount float64
|
||||
LastCalcTime time.Time
|
||||
Uptimes int
|
||||
Downtimes int
|
||||
Level int
|
||||
LastSubmitTime time.Time
|
||||
}
|
||||
|
||||
type BlockMsg struct {
|
||||
Target string
|
||||
Submit_target string
|
||||
Height int64
|
||||
Success bool
|
||||
Pow string
|
||||
Net_target string
|
||||
Submit string
|
||||
Hash string
|
||||
Header string
|
||||
Accepts float64
|
||||
Total_accepts float64
|
||||
Rejects float64
|
||||
Total_rejects float64
|
||||
Reward float64
|
||||
Fee float64
|
||||
Nonce string
|
||||
SubIdx int64
|
||||
}
|
||||
|
||||
type MinerObj struct {
|
||||
Server *ServerContext
|
||||
Conn net.Conn
|
||||
Authorized bool
|
||||
|
||||
MinerId string
|
||||
JobId uint32
|
||||
Name string
|
||||
|
||||
Jobs sync.Map
|
||||
LockForJobs sync.Mutex
|
||||
JobList *list.List
|
||||
|
||||
Target *big.Int
|
||||
Difficulty float64
|
||||
DifficultyNext float64
|
||||
ServerDifficulty float64
|
||||
ServerTarget *big.Int
|
||||
ServerTargetS string
|
||||
Accepts float64
|
||||
Rejects float64
|
||||
StartSubmitTime time.Time
|
||||
LastSubmitime time.Time
|
||||
SubmitIndex uint32
|
||||
AverageHashrate float64
|
||||
M5Accepts float64
|
||||
M5Hashrate float64
|
||||
M5SubmitTime time.Time
|
||||
LastJobId string
|
||||
LastNonce string
|
||||
CurHeight uint32
|
||||
CurHeight64 uint64
|
||||
Reconnect bool
|
||||
|
||||
LastHeader string
|
||||
|
||||
VarDiffOpt VarDiffOptions
|
||||
|
||||
Version int32
|
||||
Job msg.StratumJob
|
||||
|
||||
User string
|
||||
PassWord string
|
||||
Miner string
|
||||
|
||||
Duration float64
|
||||
|
||||
Status string
|
||||
ConnSetupTime time.Time
|
||||
TxLock sync.Mutex
|
||||
|
||||
KeepliveCnt float64
|
||||
RecvedLiveAck bool
|
||||
PongFailCnt int
|
||||
PingCnt int
|
||||
|
||||
NexaJob msg.NexaStratumJob
|
||||
AlphJob msg.AlphStratumJob
|
||||
|
||||
//EndCh chan bool
|
||||
FromIP string
|
||||
|
||||
OnlineTime time.Time
|
||||
OfflineTime time.Time
|
||||
Retry int64
|
||||
DurationTime float64
|
||||
MinerIndex int64
|
||||
|
||||
Protocol string
|
||||
|
||||
ErrStaleds int64
|
||||
ErrLowDiffs int64
|
||||
ErrDuplicates int64
|
||||
ErrFormats int64
|
||||
ErrOthers int64
|
||||
|
||||
IsDisabled bool
|
||||
|
||||
Submits int64
|
||||
Blocks int64
|
||||
Orphans int64
|
||||
|
||||
Accepts5M float64
|
||||
Accepts15M float64
|
||||
Accepts30M float64
|
||||
Accepts1h float64
|
||||
Accepts3h float64
|
||||
Accepts6h float64
|
||||
Accepts12h float64
|
||||
Accepts24h float64
|
||||
Accepts48h float64
|
||||
|
||||
Rejects5M float64
|
||||
Rejects15M float64
|
||||
Rejects30M float64
|
||||
Rejects1h float64
|
||||
Rejects3h float64
|
||||
Rejects6h float64
|
||||
Rejects12h float64
|
||||
Rejects24h float64
|
||||
Rejects48h float64
|
||||
|
||||
Mhs5M float64
|
||||
Mhs15M float64
|
||||
Mhs30M float64
|
||||
Mhs1h float64
|
||||
Mhs3h float64
|
||||
Mhs6h float64
|
||||
Mhs12h float64
|
||||
Mhs24h float64
|
||||
Mhs48h float64
|
||||
|
||||
RejectRatio5M float64
|
||||
RejectRatio15M float64
|
||||
RejectRatio30M float64
|
||||
RejectRatio1h float64
|
||||
RejectRatio3h float64
|
||||
RejectRatio6h float64
|
||||
RejectRatio12h float64
|
||||
RejectRatio24h float64
|
||||
RejectRatio48h float64
|
||||
|
||||
Reward float64
|
||||
Fee float64
|
||||
|
||||
Zlog zerolog.Logger
|
||||
LogR *lumberjack.Logger
|
||||
ZlogInit bool
|
||||
|
||||
//EndCh chan bool
|
||||
|
||||
DiffHandler diff.KalmanVarDiff
|
||||
|
||||
NeedExit int32
|
||||
}
|
||||
|
||||
/*type UserBlockMsg struct {
|
||||
User string
|
||||
Miner string
|
||||
Index string
|
||||
Height int64
|
||||
Hash string
|
||||
Pow string
|
||||
Net_target string
|
||||
Submit string
|
||||
Success bool
|
||||
Accepts float64
|
||||
Rejects float64
|
||||
Reward float64
|
||||
Fee float64
|
||||
Nonce string
|
||||
SubIdx int64
|
||||
}*/
|
||||
/*
|
||||
type UserMinerContainer struct {
|
||||
Data map[string]string
|
||||
}*/
|
||||
|
||||
/*
|
||||
type UserObj struct {
|
||||
Server *ServerContext
|
||||
User string
|
||||
Name string
|
||||
|
||||
Normal int64
|
||||
Abnormal int64
|
||||
|
||||
Offline int64
|
||||
MhsZero int64
|
||||
MhsLow int64
|
||||
HighRejects int64
|
||||
Unstable int64
|
||||
|
||||
Submits int64
|
||||
Blocks int64
|
||||
Orphans int64
|
||||
|
||||
Reward float64
|
||||
Fee float64
|
||||
|
||||
Accepts5M float64
|
||||
Accepts15M float64
|
||||
Accepts30M float64
|
||||
Accepts1h float64
|
||||
Accepts3h float64
|
||||
Accepts6h float64
|
||||
Accepts12h float64
|
||||
Accepts24h float64
|
||||
Accepts48h float64
|
||||
|
||||
Rejects5M float64
|
||||
Rejects15M float64
|
||||
Rejects30M float64
|
||||
Rejects1h float64
|
||||
Rejects3h float64
|
||||
Rejects6h float64
|
||||
Rejects12h float64
|
||||
Rejects24h float64
|
||||
Rejects48h float64
|
||||
|
||||
Mhs5M float64
|
||||
Mhs15M float64
|
||||
Mhs30M float64
|
||||
Mhs1h float64
|
||||
Mhs3h float64
|
||||
Mhs6h float64
|
||||
Mhs12h float64
|
||||
Mhs24h float64
|
||||
Mhs48h float64
|
||||
|
||||
RejectRatio5M float64
|
||||
RejectRatio15M float64
|
||||
RejectRatio30M float64
|
||||
RejectRatio1h float64
|
||||
RejectRatio3h float64
|
||||
RejectRatio6h float64
|
||||
RejectRatio12h float64
|
||||
RejectRatio24h float64
|
||||
RejectRatio48h float64
|
||||
}*/
|
||||
|
||||
func md5md5(v string) string {
|
||||
md5Obj := md5.New()
|
||||
md5Obj.Write([]byte(v))
|
||||
char := md5Obj.Sum(nil)
|
||||
return hex.EncodeToString(char)
|
||||
}
|
||||
|
||||
func Guid() string {
|
||||
c := make([]byte, 32)
|
||||
if _, err := io.ReadFull(rand.Reader, c); err != nil {
|
||||
return ""
|
||||
}
|
||||
return md5md5(base64.URLEncoding.EncodeToString(c))
|
||||
}
|
||||
|
||||
func VarAdjustDifficulty(miner *MinerObj, adjust int) {
|
||||
if adjust != UP_DIFF && adjust != DOWN_DIFF && adjust != UPDATE_DIFF {
|
||||
miner.Server.Logg.Error("[server]", zap.Int("Not support adjust ", adjust))
|
||||
return
|
||||
}
|
||||
if adjust == UP_DIFF {
|
||||
miner.DifficultyNext = miner.Difficulty
|
||||
if miner.VarDiffOpt.Level == Mid {
|
||||
miner.DifficultyNext *= math.Pow(2, 1)
|
||||
miner.DifficultyNext = math.Round(miner.DifficultyNext*1000) / 1000
|
||||
} else if miner.VarDiffOpt.Level == Hign {
|
||||
miner.DifficultyNext *= math.Pow(2, 2)
|
||||
miner.DifficultyNext = math.Round(miner.DifficultyNext*1000) / 1000
|
||||
}
|
||||
} else if adjust == DOWN_DIFF {
|
||||
miner.DifficultyNext = miner.Difficulty
|
||||
if miner.VarDiffOpt.Level == Mid {
|
||||
miner.DifficultyNext /= math.Pow(2, 1)
|
||||
miner.DifficultyNext = math.Round(miner.DifficultyNext*1000) / 1000
|
||||
} else if miner.VarDiffOpt.Level == Hign {
|
||||
miner.DifficultyNext /= math.Pow(2, 2)
|
||||
miner.DifficultyNext = math.Round(miner.DifficultyNext*1000) / 1000
|
||||
}
|
||||
} else if adjust == UPDATE_DIFF {
|
||||
if miner.VarDiffOpt.SubmitShares > 0 {
|
||||
// re-target if outside bounds
|
||||
if miner.VarDiffOpt.SubmitShares < miner.VarDiffOpt.MinShares || miner.VarDiffOpt.SubmitShares > miner.VarDiffOpt.MaxShares {
|
||||
var change float64 = miner.VarDiffOpt.SubmitShares / miner.VarDiffOpt.TargetShares
|
||||
miner.DifficultyNext = miner.Difficulty
|
||||
miner.DifficultyNext *= change
|
||||
miner.DifficultyNext = math.Round(miner.DifficultyNext*1000) / 1000
|
||||
}
|
||||
miner.VarDiffOpt.SilenceCount = 0
|
||||
} else {
|
||||
// radical measures if there were no shares submitted
|
||||
miner.VarDiffOpt.SilenceCount++
|
||||
miner.DifficultyNext = miner.Difficulty / math.Pow(2, miner.VarDiffOpt.SilenceCount)
|
||||
miner.DifficultyNext = math.Round(miner.DifficultyNext*1000) / 1000
|
||||
}
|
||||
}
|
||||
|
||||
if miner.DifficultyNext < miner.VarDiffOpt.MinDiff {
|
||||
miner.DifficultyNext = miner.VarDiffOpt.MinDiff
|
||||
} else if miner.DifficultyNext > miner.VarDiffOpt.MaxDiff {
|
||||
miner.DifficultyNext = miner.VarDiffOpt.MaxDiff
|
||||
}
|
||||
miner.VarDiffOpt.TargetShares = miner.VarDiffOpt.AdjustTime / miner.VarDiffOpt.AdjustInterval * miner.DifficultyNext
|
||||
miner.VarDiffOpt.MinShares = miner.VarDiffOpt.AdjustTime / miner.VarDiffOpt.AdjustInterval * miner.DifficultyNext * (1 - miner.VarDiffOpt.VariancePercent)
|
||||
miner.VarDiffOpt.MaxShares = miner.VarDiffOpt.AdjustTime / miner.VarDiffOpt.AdjustInterval * miner.DifficultyNext * (1 + miner.VarDiffOpt.VariancePercent)
|
||||
miner.VarDiffOpt.SubmitShares = 0
|
||||
miner.VarDiffOpt.Uptimes = 0
|
||||
miner.VarDiffOpt.Downtimes = 0
|
||||
miner.Server.Logg.Info("[server]", zap.Float64("DifficultyNext", miner.DifficultyNext))
|
||||
miner.Server.Logg.Info("[server]", zap.Float64("TargetShares", miner.VarDiffOpt.TargetShares), zap.Float64("MinShares", miner.VarDiffOpt.MinShares), zap.Float64("MaxShares", miner.VarDiffOpt.MaxShares))
|
||||
|
||||
now := time.Now()
|
||||
share_interval := now.Sub(miner.LastSubmitime).Seconds()
|
||||
New_diff_into_db(miner.User, miner.Miner, fmt.Sprint(miner.MinerIndex), miner.Difficulty, miner.DifficultyNext, miner.VarDiffOpt.SubmitShares, share_interval, miner.VarDiffOpt.MinShares, miner.VarDiffOpt.MaxShares)
|
||||
}
|
||||
|
||||
var gdiff_db *sql.DB
|
||||
|
||||
func Init_diff_db() {
|
||||
db, err := sql.Open("sqlite3", "./diffs.db")
|
||||
if err != nil {
|
||||
log.Printf("Error opening database: %v", err)
|
||||
return
|
||||
}
|
||||
//defer db.Close()
|
||||
|
||||
gdiff_db = db
|
||||
|
||||
createTableSQL := `
|
||||
CREATE TABLE IF NOT EXISTS diffs (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
ts TEXT NOT NULL,
|
||||
user TEXT NOT NULL,
|
||||
miner TEXT NOT NULL,
|
||||
minerid TEXT NOT NULL,
|
||||
diff REAL NOT NULL,
|
||||
next REAL NOT NULL,
|
||||
kp REAL NOT NULL,
|
||||
interval REAL NOT NULL,
|
||||
mhs REAL NOT NULL,
|
||||
mhs_est REAL NOT NULL
|
||||
);`
|
||||
_, err = gdiff_db.Exec(createTableSQL)
|
||||
if err != nil {
|
||||
log.Printf("Error creating table: %v", err)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
func New_diff_into_db(user string, miner string, minerid string, diff float64, diff_next float64, kp float64, interval float64, mhs float64, mhs_est float64) {
|
||||
if gdiff_db != nil {
|
||||
insertSQL := `INSERT INTO diffs (ts, user, miner, minerid, diff, next, kp, interval, mhs, mhs_est) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`
|
||||
_, err := gdiff_db.Exec(insertSQL, time.Now().Format("2006-01-02 15:04:05"), user, miner, minerid, diff, diff_next, kp, interval, mhs, mhs_est)
|
||||
if err != nil {
|
||||
log.Printf("Error inserting data from diffs %s: %v", user+"."+miner+"_"+minerid, err)
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func DiffStop() {
|
||||
if gdiff_db != nil {
|
||||
defer gdiff_db.Close()
|
||||
}
|
||||
}
|
||||
|
||||
func Build_coinbase(coinbase1 string, extranonce1 string, extranonce2, coinbase2 string, doublehash bool) ([]byte, error) {
|
||||
var coinbase_string string = coinbase1 + extranonce1 + extranonce2 + coinbase2
|
||||
coinbase_bytes, err := hex.DecodeString(coinbase_string)
|
||||
if err != nil {
|
||||
//log.Println("[dash]failed to Build_coinbase", err)
|
||||
return nil, err
|
||||
}
|
||||
//fmt.Println("coinbase", coinbase_string, hex.EncodeToString(coinbase_bytes))
|
||||
var coinbase []byte
|
||||
if doublehash {
|
||||
coinbase = chainhash.DoubleHashB(coinbase_bytes)
|
||||
} else {
|
||||
coinbase = chainhash.HashB(coinbase_bytes)
|
||||
}
|
||||
//fmt.Println("coinbase_hash", hex.EncodeToString(coinbase))
|
||||
//fmt.Println("coinbase_hash", coinbase)
|
||||
return coinbase, nil
|
||||
}
|
||||
|
||||
// build merkel root hash value
|
||||
func Build_merkle_root(coinbase []byte, transaction_list *[]string) ([]byte, error) {
|
||||
var merkle_root []byte
|
||||
merkle_root = coinbase
|
||||
count := len(*transaction_list)
|
||||
var i int
|
||||
for i = 0; i < count; i++ {
|
||||
//fmt.Println("merkle_hash start", i, hex.EncodeToString(merkle_root))
|
||||
t_bytes, err := hex.DecodeString((*transaction_list)[i])
|
||||
if err != nil {
|
||||
//log.Println("[dash]failed to Build_merkle_root", err)
|
||||
return nil, err
|
||||
}
|
||||
for j := 0; j < len(t_bytes); j++ {
|
||||
merkle_root = append(merkle_root, t_bytes[j])
|
||||
}
|
||||
//fmt.Println("merkle_hash append", i, hex.EncodeToString(merkle_root))
|
||||
merkle := chainhash.DoubleHashB(merkle_root)
|
||||
//fmt.Println("merkle_hash", i, hex.EncodeToString(merkle))
|
||||
merkle_root = merkle
|
||||
}
|
||||
return merkle_root, nil
|
||||
}
|
||||
|
||||
func BuildBlockHash(job *msg.StratumJob, doublehash bool, pow func(h wire.BlockHeader) chainhash.Hash) ([]byte, wire.BlockHeader) {
|
||||
var bh wire.BlockHeader
|
||||
//log.Printf("[dash]c1 %s,e1 %s,e2 %s,c2 %s\n", job.Coinbase1, job.Extranonce1, job.Extranonce2, job.Coinbase2)
|
||||
coinbase, err := Build_coinbase(job.Coinbase1, job.Extranonce1, job.Extranonce2, job.Coinbase2, doublehash)
|
||||
if err != nil {
|
||||
return nil, bh
|
||||
}
|
||||
//log.Println("[dash]trans", job.Transactions)
|
||||
merkle_root, err := Build_merkle_root(coinbase, job.Transactions)
|
||||
if err != nil {
|
||||
return nil, bh
|
||||
}
|
||||
vb := make([]byte, 4)
|
||||
binary.LittleEndian.PutUint32(vb, uint32(job.Version))
|
||||
tb := make([]byte, 4)
|
||||
binary.LittleEndian.PutUint32(tb, uint32(job.Timestamp.Unix()))
|
||||
bh, err = Build_block_hash(hex.EncodeToString(vb), job.PrevblockBig, merkle_root, hex.EncodeToString(tb), job.BitsS, job.Nonce)
|
||||
if err != nil {
|
||||
return nil, bh
|
||||
}
|
||||
powhash := pow(bh)
|
||||
//log.Printf("POW hash:%s", powhash.String())
|
||||
return powhash.CloneBytes(), bh
|
||||
}
|
||||
|
||||
func Build_block_hash(block_version string, prev_hash string, merkle_root []byte, ntime string, nbits string, nonce string) (wire.BlockHeader, error) {
|
||||
var header wire.BlockHeader
|
||||
b, err := strconv.ParseUint(nbits, 16, 32)
|
||||
if err != nil {
|
||||
//log.Println("[dash]failed to Build_block_hash", err)
|
||||
return header, err
|
||||
}
|
||||
header.Bits = uint32(b)
|
||||
//log.Printf("Bits:%x", header.Bits)
|
||||
p_bytes, err := hex.DecodeString(prev_hash)
|
||||
if err != nil {
|
||||
log.Println("[dash]failed to Build_block_hash", err)
|
||||
return header, err
|
||||
}
|
||||
p, err := chainhash.NewHash(utility.Convert_big_endian(p_bytes))
|
||||
header.PrevBlock = *p
|
||||
//log.Printf("Prev Block:%s", hex.EncodeToString(header.PrevBlock.CloneBytes()))
|
||||
m, err := chainhash.NewHash(merkle_root)
|
||||
header.MerkleRoot = *m
|
||||
//log.Printf("MerkleRoot:%s", hex.EncodeToString(header.MerkleRoot.CloneBytes()))
|
||||
n, err := strconv.ParseUint(nonce, 16, 32)
|
||||
if err != nil {
|
||||
//log.Println("[dash]failed to Build_block_hash", err)
|
||||
return header, err
|
||||
}
|
||||
header.Nonce = uint32(n)
|
||||
//log.Printf("Nonce:%x", header.Nonce)
|
||||
v, err := hex.DecodeString(block_version)
|
||||
if err != nil {
|
||||
//log.Println("[dash]failed to Build_block_hash", err)
|
||||
return header, err
|
||||
}
|
||||
vBuffer := bytes.NewBuffer(v)
|
||||
binary.Read(vBuffer, binary.BigEndian, &(header.Version))
|
||||
//log.Printf("Version:%x", header.Version)
|
||||
t, err := strconv.ParseInt(ntime, 16, 64)
|
||||
if err != nil {
|
||||
//log.Println("[dash]failed to Build_block_hash", err)
|
||||
return header, err
|
||||
}
|
||||
header.Timestamp = time.Unix(t, 0)
|
||||
//log.Printf("nTime %v", header.Timestamp)
|
||||
|
||||
return header, nil
|
||||
}
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,741 @@
|
|||
// dgb.go
|
||||
package dgb
|
||||
|
||||
import (
|
||||
//"database/sql"
|
||||
"bytes"
|
||||
"encoding/binary"
|
||||
"encoding/hex"
|
||||
"encoding/json"
|
||||
|
||||
//"log"
|
||||
//"math"
|
||||
"math/big"
|
||||
"strings"
|
||||
|
||||
"fmt"
|
||||
"pool/internal/msg"
|
||||
"pool/internal/server/coin"
|
||||
"pool/internal/server/dbif"
|
||||
"pool/internal/stratum"
|
||||
"pool/internal/utility"
|
||||
"time"
|
||||
|
||||
"github.com/btcsuite/btcd/wire"
|
||||
|
||||
_ "github.com/mattn/go-sqlite3"
|
||||
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
const SERVER_DGB_VERSION string = "dgb v3.0j"
|
||||
|
||||
const DGB_BLOCK_VERSION_SKEIN int32 = 3
|
||||
const DGB_BLOCK_VERSION_QUBIT int32 = 4
|
||||
const DGB_BLOCK_VERSION_ODO int32 = 7
|
||||
|
||||
type ServerDgbContext struct {
|
||||
ServerCtx *coin.ServerContext
|
||||
logg *zap.Logger
|
||||
|
||||
Job msg.StratumJob
|
||||
}
|
||||
|
||||
var logg *zap.Logger
|
||||
var ServerDgbCtx ServerDgbContext
|
||||
|
||||
const truediffone float64 = 26959535291011309493156476344723991336010898738574164086137773096960.0
|
||||
const bits192 float64 = 6277101735386680763835789423207666416102355444464034512896.0
|
||||
const bits128 float64 = 340282366920938463463374607431768211456.0
|
||||
const bits64 float64 = 18446744073709551616.0
|
||||
|
||||
func target2float(target []byte) float64 {
|
||||
var b64 float64 = float64(binary.LittleEndian.Uint64(target[24:32])) * bits192
|
||||
b64 += (float64(binary.LittleEndian.Uint64(target[16:24])) * bits128)
|
||||
b64 += (float64(binary.LittleEndian.Uint64(target[8:16])) * bits64)
|
||||
b64 += (float64(binary.LittleEndian.Uint64(target[0:8])))
|
||||
return b64
|
||||
}
|
||||
|
||||
// convert target to difficulty
|
||||
func target2diff(target []byte, version int32) float64 {
|
||||
var f64 float64 = truediffone
|
||||
var fcut64 float64 = target2float(target)
|
||||
//log.Println("diff", f64, fcut64, f64/fcut64*65536)
|
||||
//return f64 / fcut64
|
||||
var diff float64 = f64 / fcut64
|
||||
algo := (version & DGB_BLOCK_VERSION_ALGO) >> 9
|
||||
switch algo {
|
||||
case DGB_BLOCK_VERSION_SKEIN:
|
||||
return diff * 1
|
||||
case DGB_BLOCK_VERSION_QUBIT:
|
||||
return diff * 1
|
||||
case DGB_BLOCK_VERSION_ODO:
|
||||
return diff * 1
|
||||
}
|
||||
return diff
|
||||
}
|
||||
|
||||
func handle_submit(miner *coin.MinerObj, id float64, miner_user string, job_id string, nonce2 string, ntime string, nonce string) (bool, bool, bool) {
|
||||
var submit_item coin.BlockMsg
|
||||
/*var user_blk_item coin.UserBlockMsg*/
|
||||
var pool_blk_item coin.PoolBlkMsg
|
||||
|
||||
var blk_detail_height int64
|
||||
var blk_detail_hash string
|
||||
var blk_detail_success bool
|
||||
var blk_detail_miner_diff float64
|
||||
var blk_detail_pool_diff float64
|
||||
|
||||
if miner.Authorized != true {
|
||||
miner.ErrOthers = miner.ErrOthers + 1
|
||||
stratum.Handle_exception(miner, id, stratum.MINER_ERR_UNAUTH_WORKER)
|
||||
stratum.Send_reconnect_msg(miner)
|
||||
return false, false, false
|
||||
}
|
||||
var new_found bool = false
|
||||
var ack stratum.Submit_ack
|
||||
ack.ID = id
|
||||
ack.Result = true
|
||||
//logg.Warn("[server]", zap.String("user", miner.User), zap.String("miner", miner.Miner))
|
||||
//logg.Debug("[server]", zap.Float64("id", id), zap.String("job_id", job_id))
|
||||
//logg.Debug("[server]", zap.String("nonce2", nonce2), zap.String("ntime", ntime), zap.String("nonce", nonce))
|
||||
//stratum.UpdateJobs(miner)
|
||||
v, ok := miner.Jobs.Load(job_id)
|
||||
if ok {
|
||||
job := v.(msg.StratumJob)
|
||||
|
||||
if job.Height < miner.CurHeight-1 {
|
||||
ack.Result = false
|
||||
stratum.Handle_exception(miner, id, stratum.MINER_ERR_STALED_JOB)
|
||||
miner.ErrStaleds = miner.ErrStaleds + 1
|
||||
return false, false, false
|
||||
}
|
||||
|
||||
//logg.Debug("[server]", zap.Uint64("ntime", nt), zap.Uint64("mintime", uint64(job.Mintime)), zap.Uint64("jobtime", jt_reverse))
|
||||
/*if nt < uint64(job.Mintime) {
|
||||
ack.Result = false
|
||||
util.Handle_exception(miner, id, util.MINER_ERR_TIME_TOO_OLD)
|
||||
} else if nt > jt_reverse+uint64(600) {
|
||||
ack.Result = false
|
||||
util.Handle_exception(miner, id, util.MINER_ERR_TIME_TOO_NEW)
|
||||
} else */{
|
||||
if miner.LastNonce != nonce {
|
||||
|
||||
miner.LastNonce = nonce
|
||||
//job.Nonce = nonce
|
||||
//job.Extranonce2 = nonce2
|
||||
//logg.Debug("[server]", zap.Uint32("height", job.Height), zap.String("target", job.Target))
|
||||
if miner.ZlogInit {
|
||||
miner.Zlog.Info().Msg("height " + fmt.Sprintf("%d", job.Height) + " target " + job.Target + " extra1 " + job.Extranonce1 + " size " + fmt.Sprintf("%d", job.Extranonce2_size) + " " + miner.User + "." + miner.Miner)
|
||||
}
|
||||
|
||||
//job := v.(msg.StratumJob)
|
||||
vb := make([]byte, 4)
|
||||
binary.LittleEndian.PutUint32(vb, uint32(job.Version))
|
||||
vBuffer := bytes.NewBuffer(vb)
|
||||
binary.Read(vBuffer, binary.BigEndian, &(miner.Version))
|
||||
|
||||
job.Nonce = nonce
|
||||
job.Extranonce2 = nonce2
|
||||
//logg.Debug("[server]", zap.Uint32("height", job.Height), zap.String("target", job.Target))
|
||||
var calc_hash []byte
|
||||
var header wire.BlockHeader
|
||||
|
||||
calc_hash, header = coin.BuildBlockHash(&(job), true, Build_DgbPowHash)
|
||||
|
||||
//logg.Debug("[server]", zap.String("hash in", submit_item.Header))
|
||||
//calc_hash, header := util.BuildBlockHash(&(job), true, Build_PowHash)
|
||||
//logg.Debug("[server]", zap.String("calc_hash", hex.EncodeToString(calc_hash)) /*, zap.String("merkle root", hex.EncodeToString(merkle_root))*/)
|
||||
if miner.ZlogInit {
|
||||
printbuf := bytes.NewBuffer(make([]byte, 0, wire.MaxBlockHeaderPayload))
|
||||
header.Serialize(printbuf)
|
||||
miner.Zlog.Info().Msg("hash in " + hex.EncodeToString(printbuf.Bytes()) + " calc_hash " + hex.EncodeToString(calc_hash) + " " + miner.User + "." + miner.Miner)
|
||||
}
|
||||
submit_target := new(big.Int)
|
||||
hashs, _ := utility.ReverseS(hex.EncodeToString(calc_hash))
|
||||
hashb, _ := hex.DecodeString(hashs)
|
||||
submit_target.SetBytes(hashb)
|
||||
calc_diff := target2diff(calc_hash, miner.Version)
|
||||
//log.Printf("diff,calc_diff:%f difficulty:%f ", calc_diff, miner.Difficulty)
|
||||
//logg.Warn("[server]", zap.String("user", miner.User+"."+miner.Miner), zap.Float64("target diff", miner.Difficulty), zap.Float64("submit diff", calc_diff))
|
||||
if miner.ZlogInit {
|
||||
miner.Zlog.Info().Msg(miner.User + "." + miner.Miner + " target diff " + fmt.Sprintf("%f", (job.JobDifficulty)) + " submit diff " + fmt.Sprintf("%f", (calc_diff)))
|
||||
}
|
||||
//logg.Debug("[server]", zap.String("target", miner.Target.String()), zap.Any("bytes", miner.Target.Bytes()))
|
||||
//logg.Info("[server]", zap.Float64("target diff", miner.Difficulty), zap.Float64("submit diff", calc_diff), zap.String("target", hex.EncodeToString(miner.Target.Bytes())))
|
||||
|
||||
//if calc_diff < miner.Difficulty {
|
||||
if calc_diff < job.JobDifficulty {
|
||||
//gpu protocol handler
|
||||
/*for i := 0; i < 8; i++ {
|
||||
temp_nonce := header.Nonce[8+i]
|
||||
header.Nonce[8+i] = header.Nonce[i]
|
||||
header.Nonce[i] = temp_nonce
|
||||
}
|
||||
submit_item.Header = hex.EncodeToString(DgbBlockHeaderToBytes(header))
|
||||
calc_hash = BuildPowHash(header)
|
||||
logg.Debug("[server]", zap.String("hash in", hex.EncodeToString(DgbBlockHeaderToBytes(header))))*/
|
||||
//logg.Debug("[server]", zap.String("calc_hash", hex.EncodeToString(calc_hash)) /*, zap.String("merkle root", hex.EncodeToString(merkle_root))*/)
|
||||
//submit_target = new(big.Int)
|
||||
/*submit_target.SetBytes(calc_hash)
|
||||
calc_diff = utility.Target2Diff(calc_hash)
|
||||
logg.Warn("[server]", zap.String("user", miner.User+"."+miner.Miner), zap.Float64("target diff", miner.Difficulty), zap.Float64("submit diff", calc_diff))
|
||||
if calc_diff < miner.Difficulty {
|
||||
*/
|
||||
ack.Result = false
|
||||
miner.ErrLowDiffs = miner.ErrLowDiffs + 1
|
||||
stratum.Handle_exception(miner, id, stratum.MINER_ERR_LOW_DIF_SHARE)
|
||||
return false, false, false
|
||||
//}
|
||||
|
||||
}
|
||||
//logg.Warn("[server]", zap.String("pow", hex.EncodeToString(submit_target.Bytes())), zap.String("target", hex.EncodeToString(miner.ServerTarget.Bytes())))
|
||||
//submit_target.Text(16)
|
||||
/*if submit_target.Cmp(miner.ServerTarget) <= 0 {*/
|
||||
//log.Println("[server]server_target", miner.ServerTargetS)
|
||||
//stb, _ := hex.DecodeString(miner.ServerTargetS)
|
||||
stb, _ := hex.DecodeString(job.Target)
|
||||
//logg.Info("[server]", zap.String("target", job.Target))
|
||||
//server_diff := Target2Diff(common.Reverse(stb))
|
||||
server_diff := target2diff(utility.Reverse(stb), miner.Version)
|
||||
//log.Printf("[server]server_diff %f", server_diff)
|
||||
//logg.Info("[server]", zap.Float64("calc_diff", calc_diff), zap.Float64("miner.Difficulty", miner.Difficulty), zap.Float64("server_diff", server_diff))
|
||||
//logg.Debug("[server]", zap.String("ServerTargetS", miner.ServerTargetS))
|
||||
network_target := new(big.Int)
|
||||
network_target.SetBytes(stb)
|
||||
//logg.Info("[server]", zap.Float64("calc_diff", calc_diff), zap.Float64("miner.Difficulty", miner.Difficulty), zap.Float64("server_diff", server_diff))
|
||||
//logg.Debug("[server]", zap.String("submit_target", hex.EncodeToString(submit_target.Bytes())), zap.String("network_target", hex.EncodeToString(network_target.Bytes())), zap.String("target", hex.EncodeToString(miner.ServerTarget.Bytes())), zap.Int("cmp", network_target.Cmp(submit_target)))
|
||||
if miner.ZlogInit {
|
||||
miner.Zlog.Info().Msg(miner.User + "." + miner.Miner + " calc_diff " + fmt.Sprintf("%f", (calc_diff)) + " miner.Difficulty " + fmt.Sprintf("%f", (miner.Difficulty)) + " server_diff " + fmt.Sprintf("%f", (server_diff)))
|
||||
miner.Zlog.Info().Msg(miner.User + "." + miner.Miner + " submit_target " + hex.EncodeToString(submit_target.Bytes()) + " network_target " + hex.EncodeToString(network_target.Bytes()) + " target " + hex.EncodeToString(miner.ServerTarget.Bytes()) + " cmp " + fmt.Sprintf("%d", (network_target.Cmp(submit_target))))
|
||||
}
|
||||
|
||||
submit_item.Hash = hex.EncodeToString(calc_hash)
|
||||
submit_item.Target = hex.EncodeToString(miner.Target.Bytes())
|
||||
submit_item.Submit_target = hex.EncodeToString(calc_hash)
|
||||
submit_item.Height = int64(job.Height)
|
||||
submit_item.Pow = hex.EncodeToString(calc_hash)
|
||||
submit_item.Net_target = hex.EncodeToString(network_target.Bytes())
|
||||
|
||||
/*user_blk_item.Height = int64(job.Height)
|
||||
user_blk_item.Hash = hex.EncodeToString(calc_hash)
|
||||
user_blk_item.Pow = hex.EncodeToString(calc_hash)
|
||||
user_blk_item.Net_target = hex.EncodeToString(network_target.Bytes())*/
|
||||
|
||||
pool_blk_item.Height = int64(job.Height)
|
||||
pool_blk_item.Hash = hex.EncodeToString(calc_hash)
|
||||
pool_blk_item.Pow = hex.EncodeToString(calc_hash)
|
||||
pool_blk_item.Net_target = hex.EncodeToString(network_target.Bytes())
|
||||
|
||||
blk_detail_height = int64(job.Height)
|
||||
blk_detail_hash = hex.EncodeToString(calc_hash)
|
||||
blk_detail_success = false
|
||||
blk_detail_miner_diff = miner.Difficulty
|
||||
blk_detail_pool_diff = miner.Server.RefDifficulty
|
||||
|
||||
if ack.Result == true {
|
||||
/*if miner.CurHeight != 0 && miner.CurHeight == job.Height {
|
||||
return
|
||||
}*/
|
||||
|
||||
//if true {
|
||||
if (calc_diff >= server_diff) || (network_target.Cmp(submit_target) >= 0) {
|
||||
miner.Server.SubIdx++
|
||||
|
||||
hdbuf := bytes.NewBuffer(make([]byte, 0, wire.MaxBlockHeaderPayload))
|
||||
err := header.Serialize(hdbuf)
|
||||
if err != nil {
|
||||
logg.Error("[server]", zap.String("header Serialize", err.Error()))
|
||||
} else {
|
||||
//pow := chainhash.DoubleHashB(hdbuf.Bytes())
|
||||
//blk_hash := hex.EncodeToString(pow)
|
||||
Produce_block_submit(miner, header, &job, submit_item.Hash, miner.Server.SubIdx)
|
||||
miner.SubmitIndex++
|
||||
miner.Submits = miner.Submits + 1
|
||||
//miner.CurHeight = job.Height
|
||||
new_found = true
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
||||
miner.LastNonce = nonce
|
||||
ack.Result = false
|
||||
stratum.Handle_exception(miner, id, stratum.MINER_ERR_DUP_SHARE)
|
||||
miner.ErrDuplicates = miner.ErrDuplicates + 1
|
||||
return false, false, false
|
||||
}
|
||||
}
|
||||
} else {
|
||||
ack.Result = false
|
||||
stratum.Handle_exception(miner, id, stratum.MINER_ERR_NOT_FOUND_JOB)
|
||||
miner.ErrStaleds = miner.ErrStaleds + 1
|
||||
return false, false, false
|
||||
}
|
||||
|
||||
miner.LastJobId = job_id
|
||||
|
||||
ack.Error = nil
|
||||
body, err := json.Marshal(ack)
|
||||
if err != nil {
|
||||
//logg.Error("[server]", zap.String("Marshal", err.Error()))
|
||||
if miner.ZlogInit {
|
||||
miner.Zlog.Info().Msg(miner.User + "." + miner.Miner + " handle_submit Marshal " + err.Error())
|
||||
}
|
||||
miner.ErrOthers = miner.ErrOthers + 1
|
||||
stratum.Handle_exception(miner, id, stratum.MINER_ERR_UNKNOWN)
|
||||
return false, false, false
|
||||
}
|
||||
|
||||
var body_string = string(body) + "\n"
|
||||
err = stratum.Conn_tx(miner.Conn, []byte(body_string))
|
||||
if err != nil {
|
||||
//miner.Server.Miners.Delete(miner.MinerId)
|
||||
}
|
||||
if miner.ZlogInit {
|
||||
miner.Zlog.Info().Msg(body_string)
|
||||
}
|
||||
//logg.Debug("[server]", zap.String("tx", body_string))
|
||||
miner.TxLock.Lock()
|
||||
miner.Status = coin.MINER_STATUS_RUNNING
|
||||
miner.TxLock.Unlock()
|
||||
|
||||
if ack.Result {
|
||||
|
||||
miner.Accepts += miner.Difficulty
|
||||
miner.M5Accepts += miner.Difficulty
|
||||
|
||||
miner.VarDiffOpt.SubmitShares += miner.Difficulty
|
||||
|
||||
} else {
|
||||
miner.Rejects += miner.Difficulty
|
||||
|
||||
}
|
||||
now := time.Now()
|
||||
if miner.Server.Config.Diff.Filter == "kalman" {
|
||||
if ack.Result {
|
||||
share_interval := now.Sub(miner.LastSubmitime).Seconds()
|
||||
mhs := miner.Difficulty * share_interval
|
||||
diff_next, kalman_p := miner.DiffHandler.Handler(miner.Difficulty, share_interval)
|
||||
mhs_est := diff_next * miner.Server.Config.Diff.DiffAdjustInterval
|
||||
|
||||
ratio := diff_next / miner.Difficulty
|
||||
if ratio > 0 {
|
||||
if now.Sub(miner.StartSubmitTime).Seconds() > 180 {
|
||||
if ratio >= 2 {
|
||||
//miner.DifficultyNext = math.Ceil(diff_next*100) / 100
|
||||
miner.DifficultyNext = diff_next * 10000000 / 10000000
|
||||
} else if ratio <= 0.5 {
|
||||
//miner.DifficultyNext = math.Ceil(diff_next*100) / 100
|
||||
miner.DifficultyNext = diff_next * 10000000 / 10000000
|
||||
} else {
|
||||
}
|
||||
} else {
|
||||
//miner.DifficultyNext = math.Ceil(diff_next*100) / 100
|
||||
miner.DifficultyNext = diff_next * 10000000 / 10000000
|
||||
/*if ratio >= 1.1 {
|
||||
miner.DifficultyNext = math.Ceil(diff_next*100) / 100
|
||||
} else if ratio <= 0.8 {
|
||||
miner.DifficultyNext = math.Ceil(diff_next*100) / 100
|
||||
} else {
|
||||
}*/
|
||||
}
|
||||
}
|
||||
if miner.DifficultyNext > 0.0 {
|
||||
if miner.DifficultyNext < miner.VarDiffOpt.MinDiff {
|
||||
miner.DifficultyNext = miner.VarDiffOpt.MinDiff
|
||||
} else if miner.DifficultyNext > miner.VarDiffOpt.MaxDiff {
|
||||
miner.DifficultyNext = miner.VarDiffOpt.MaxDiff
|
||||
}
|
||||
}
|
||||
//miner.VarDiffOpt.LastCalcTime = now
|
||||
|
||||
if miner.Server.Config.Diff.Dbg {
|
||||
coin.New_diff_into_db(miner.User, miner.Miner, fmt.Sprint(miner.MinerIndex), miner.Difficulty, diff_next, kalman_p, share_interval, mhs, mhs_est)
|
||||
}
|
||||
|
||||
//log.Println("diff adjust", ratio, diff_next, miner.Difficulty, miner.DifficultyNext)
|
||||
}
|
||||
} else {
|
||||
// submit time < DiffAdjustInterval,then up adjust diff
|
||||
if now.Sub(miner.LastSubmitime).Seconds() < miner.Server.Config.Diff.DiffAdjustInterval {
|
||||
if ack.Result {
|
||||
if miner.VarDiffOpt.Uptimes++; miner.VarDiffOpt.Uptimes >= coin.DIFFICULTY_WAIT_TIMES {
|
||||
coin.VarAdjustDifficulty(miner, coin.UP_DIFF)
|
||||
miner.VarDiffOpt.LastCalcTime = now
|
||||
}
|
||||
}
|
||||
} else {
|
||||
miner.VarDiffOpt.Uptimes = 0
|
||||
}
|
||||
|
||||
// submit time > 2 * DiffAdjustInterval,then down adjust diff
|
||||
if now.Sub(miner.LastSubmitime).Seconds() > miner.Server.Config.Diff.DiffAdjustInterval*2 {
|
||||
if ack.Result {
|
||||
if miner.VarDiffOpt.Downtimes++; miner.VarDiffOpt.Downtimes >= coin.DIFFICULTY_WAIT_TIMES {
|
||||
coin.VarAdjustDifficulty(miner, coin.DOWN_DIFF)
|
||||
miner.VarDiffOpt.LastCalcTime = now
|
||||
}
|
||||
}
|
||||
} else {
|
||||
miner.VarDiffOpt.Downtimes = 0
|
||||
}
|
||||
}
|
||||
if ack.Result {
|
||||
miner.LastSubmitime = now
|
||||
miner.VarDiffOpt.LastSubmitTime = now
|
||||
}
|
||||
var duration float64 = float64(now.Sub(miner.StartSubmitTime)) / 1000000000
|
||||
|
||||
if duration < 1 {
|
||||
duration = 1
|
||||
}
|
||||
diffOneShareHashesAvg := uint64(0x00000000FFFFFFFF)
|
||||
miner.AverageHashrate = miner.Accepts * float64(diffOneShareHashesAvg) / duration / 1000000
|
||||
var m5_duration float64 = float64(now.Sub(miner.M5SubmitTime)) / 1000000000
|
||||
if m5_duration >= float64(time.Minute*5)/1000000000 {
|
||||
miner.M5SubmitTime = now
|
||||
miner.M5Hashrate = miner.M5Accepts * float64(diffOneShareHashesAvg) / m5_duration / 1000000
|
||||
//logg.Info("[server]", zap.Float64("Accepts", miner.Accepts), zap.Float64("M5Accepts", miner.M5Accepts), zap.Float64("M5Hashrate(MH/S)", miner.M5Hashrate))
|
||||
miner.M5Accepts = 0
|
||||
}
|
||||
|
||||
//logg.Warn("[server]", zap.Float64("Accepts", miner.Accepts), zap.Float64("Rejects", miner.Rejects))
|
||||
//logg.Info("[server]", zap.Float64("TargetShares", miner.VarDiffOpt.TargetShares), zap.Float64("MinShares", miner.VarDiffOpt.MinShares), zap.Float64("MaxShares", miner.VarDiffOpt.MaxShares), zap.Float64("SubmitShares", miner.VarDiffOpt.SubmitShares))
|
||||
//logg.Warn("[server]", zap.Float64("reject rate", miner.Rejects/(miner.Accepts+miner.Rejects)), zap.Float64("Hashrate(MH/S)", miner.AverageHashrate))
|
||||
//logg.Warn("[server]", zap.Float64("M5Accepts", miner.M5Accepts), zap.Float64("M5Hashrate(MH/S)", miner.M5Hashrate))
|
||||
if miner.ZlogInit {
|
||||
miner.Zlog.Info().Msg(miner.User + "." + miner.Miner + " handle_submit M5Accepts " + fmt.Sprintf("%f", (miner.M5Accepts)) + " Hashrate(MH/S) " + fmt.Sprintf("%f", miner.AverageHashrate) + " M5Hashrate(MH/S) " + fmt.Sprintf("%f", miner.M5Hashrate))
|
||||
}
|
||||
|
||||
//logg.Info("[server]", zap.Float64("LastCalcTime", float64(now.Sub(miner.VarDiffOpt.LastCalcTime))/1000000000))
|
||||
//calc acutal submit shares period of time, then compare with target shares and adjust diff
|
||||
|
||||
if miner.Server.Config.Diff.Filter == "kalman" {
|
||||
} else {
|
||||
if float64(now.Sub(miner.VarDiffOpt.LastCalcTime))/1000000000 >= miner.VarDiffOpt.AdjustTime {
|
||||
coin.VarAdjustDifficulty(miner, coin.UPDATE_DIFF)
|
||||
miner.VarDiffOpt.LastCalcTime = now
|
||||
}
|
||||
}
|
||||
|
||||
if new_found {
|
||||
//util.StaleAllJobs(miner)
|
||||
|
||||
/*user_blk_item.User = miner.User
|
||||
user_blk_item.Miner = miner.Miner
|
||||
user_blk_item.Index = fmt.Sprint(miner.MinerIndex)
|
||||
|
||||
user_blk_item.Submit = "y"
|
||||
user_blk_item.Success = false
|
||||
user_blk_item.Accepts = miner.Accepts
|
||||
user_blk_item.Rejects = miner.Rejects
|
||||
user_blk_item.Reward = 0
|
||||
user_blk_item.Fee = 0
|
||||
user_blk_item.Nonce = nonce
|
||||
user_blk_item.SubIdx = miner.Server.SubIdx
|
||||
dbif.NotifyUsersBlkStatsDb2(miner, &user_blk_item)*/
|
||||
|
||||
pool_blk_item.Submit = "y"
|
||||
pool_blk_item.Success = false
|
||||
pool_blk_item.Accepts = miner.Accepts
|
||||
pool_blk_item.Rejects = miner.Rejects
|
||||
pool_blk_item.Reward = 0
|
||||
pool_blk_item.Fee = 0
|
||||
pool_blk_item.Nonce = nonce
|
||||
pool_blk_item.SubIdx = miner.Server.SubIdx
|
||||
dbif.NotifyPoolBlkStatsDb2(miner.Server, &pool_blk_item)
|
||||
|
||||
}
|
||||
|
||||
if ack.Result {
|
||||
|
||||
submit_item.Success = false
|
||||
if new_found {
|
||||
submit_item.Submit = "y"
|
||||
submit_item.SubIdx = miner.Server.SubIdx
|
||||
} else {
|
||||
submit_item.Submit = "n"
|
||||
submit_item.SubIdx = -1
|
||||
}
|
||||
|
||||
submit_item.Accepts = miner.Accepts
|
||||
submit_item.Total_accepts = miner.Accepts
|
||||
submit_item.Rejects = miner.Rejects
|
||||
submit_item.Total_rejects = miner.Rejects
|
||||
submit_item.Reward = 0
|
||||
submit_item.Fee = 0
|
||||
submit_item.Nonce = nonce
|
||||
|
||||
//dbif.NotifyMinerDb2(miner, &submit_item)
|
||||
|
||||
dbif.NotifyBlkDetailDb(miner, blk_detail_height, blk_detail_hash, blk_detail_success, blk_detail_miner_diff, blk_detail_pool_diff, nonce, submit_item.SubIdx)
|
||||
return true, new_found, true
|
||||
}
|
||||
return false, false, true
|
||||
}
|
||||
|
||||
func Produce_block_submit(miner *coin.MinerObj, header wire.BlockHeader, job *msg.StratumJob, PowHash string, SubIdx int64) {
|
||||
var nm msg.BlockGrsMsg
|
||||
|
||||
buf := bytes.NewBuffer(make([]byte, 0, wire.MaxBlockHeaderPayload))
|
||||
err := header.Serialize(buf)
|
||||
if err != nil {
|
||||
logg.Error("[server]", zap.String("Bytes", err.Error()))
|
||||
return
|
||||
}
|
||||
blk := hex.EncodeToString(buf.Bytes())
|
||||
txns := len(*job.TransData) + 1
|
||||
var txnss string
|
||||
if txns < 0xfd {
|
||||
//txnss = hex.EncodeToString([]byte(string(txns)))
|
||||
txnsb := make([]byte, 2)
|
||||
binary.LittleEndian.PutUint16(txnsb, uint16(txns))
|
||||
txnss = hex.EncodeToString(txnsb[:1])
|
||||
} else if txns < 0xffff {
|
||||
blk += "fd"
|
||||
txnsb := make([]byte, 2)
|
||||
binary.LittleEndian.PutUint16(txnsb, uint16(txns))
|
||||
txnss = hex.EncodeToString(txnsb)
|
||||
} else {
|
||||
blk += "fe"
|
||||
txnsb := make([]byte, 4)
|
||||
binary.LittleEndian.PutUint32(txnsb, uint32(txns))
|
||||
txnss = hex.EncodeToString(txnsb)
|
||||
}
|
||||
blk += txnss
|
||||
|
||||
blk += (job.Coinbase1 + job.Extranonce1 + job.Extranonce2 + job.Coinbase2)
|
||||
/*blk += job.Coinbase1[:8]
|
||||
blk += "0001"
|
||||
c2 := len(job.Coinbase2)
|
||||
blk += (job.Coinbase1[8:] + job.Extranonce1 + job.Extranonce2 + job.Coinbase2[:c2-8])
|
||||
blk += "01200000000000000000000000000000000000000000000000000000000000000000"
|
||||
blk += job.Coinbase2[c2-8:]*/
|
||||
|
||||
for i := range *job.TransData {
|
||||
blk += (*job.TransData)[i]
|
||||
}
|
||||
|
||||
bh, _ := hex.DecodeString(blk)
|
||||
nm.Data = bh
|
||||
|
||||
nm.Nonce = job.Nonce
|
||||
nm.Pow = PowHash
|
||||
nm.SubIdx = SubIdx
|
||||
nm.User = miner.User
|
||||
nm.Miner = miner.Miner
|
||||
nm.Index = fmt.Sprint(miner.MinerIndex)
|
||||
body, err := json.Marshal(nm)
|
||||
if err != nil {
|
||||
logg.Error("[server]", zap.String("failed to Marshal job", err.Error()))
|
||||
return
|
||||
}
|
||||
blk2 := string(body)
|
||||
|
||||
//Add Height
|
||||
heightb := utility.Uint32ToByte(job.Height)
|
||||
heights := hex.EncodeToString(heightb)
|
||||
blk2 += heights
|
||||
var Height uint32 = utility.ByteToUint32(heightb)
|
||||
logg.Warn("[server]", zap.Uint32("Height", Height))
|
||||
|
||||
//Add SubmitIndex
|
||||
indexb := utility.Uint32ToByte(miner.SubmitIndex)
|
||||
indexs := hex.EncodeToString(indexb)
|
||||
blk2 += indexs
|
||||
var SubmitIndex uint32 = utility.ByteToUint32(indexb)
|
||||
logg.Info("[server]", zap.Uint32("SubmitIndex", SubmitIndex))
|
||||
logg.Info("[server]", zap.String("blk", blk2))
|
||||
|
||||
if miner.Server.PubCh == nil {
|
||||
miner.Server.PubCh = utility.InitZmqPub(miner.Server.Config.Zmq.Pub)
|
||||
}
|
||||
if miner.Server.PubCh != nil {
|
||||
blktopic := "blk" + miner.Server.MinerType
|
||||
//miner.Server.PubCh.SendChan <- [][]byte{[]byte("blkdgb"), []byte(blk)}
|
||||
err := miner.Server.PubCh.SendMessage([][]byte{[]byte(blktopic), []byte(blk2)})
|
||||
if err != nil {
|
||||
miner.Server.PubCh.Destroy()
|
||||
miner.Server.PubCh = nil
|
||||
logg.Info("[server]", zap.String("blk", err.Error()))
|
||||
} else {
|
||||
logg.Info("[server]", zap.String("blk", "sent"))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// server-->miner
|
||||
func dgb_parse_miner_notify(miner *coin.MinerObj, msg msg.StratumJob) int {
|
||||
isJobChanged := miner.Job.Height != msg.Height
|
||||
extrannonce1 := miner.Job.Extranonce1
|
||||
miner.Job = msg
|
||||
if isJobChanged {
|
||||
miner.Job.IsClean = true
|
||||
}
|
||||
miner.Job.Extranonce1 = extrannonce1
|
||||
miner.Job.Extranonce2_size = msg.Extranonce2_size
|
||||
|
||||
//miner.Server.Logg.Info("[server]", zap.Int32("miner.Version", miner.Version), zap.Int32("msg.Version", msg.Version))
|
||||
return 1
|
||||
}
|
||||
|
||||
func Init(server *coin.ServerContext) {
|
||||
ServerDgbCtx.ServerCtx = server
|
||||
logg = server.Logg
|
||||
logg.Info("[server]", zap.String("server_dgb_version", SERVER_DGB_VERSION))
|
||||
coin.Init_diff_db()
|
||||
}
|
||||
|
||||
func Start() {
|
||||
|
||||
}
|
||||
|
||||
func Stop() {
|
||||
coin.DiffStop()
|
||||
}
|
||||
|
||||
func InitMiner(miner *coin.MinerObj) {
|
||||
be1 := make([]byte, 4)
|
||||
binary.LittleEndian.PutUint32(be1, (uint32(miner.Server.Extranonce1) + 0x81000000))
|
||||
miner.Job.Extranonce1 = hex.EncodeToString(be1)
|
||||
//miner.NexaJob.Extranonce1 = miner.Job.Extranonce1
|
||||
miner.Server.Extranonce1++
|
||||
|
||||
target, err := utility.DiffToTarget(miner.Difficulty)
|
||||
if err != nil {
|
||||
logg.Error("[server]", zap.String("DiffToTarget", err.Error()))
|
||||
return
|
||||
}
|
||||
miner.Target = target
|
||||
logg.Debug("[target]", zap.String("target", hex.EncodeToString(target.Bytes())), zap.Float64("diff", miner.Difficulty))
|
||||
|
||||
server_target := new(big.Int)
|
||||
t_bytes, err := hex.DecodeString(miner.Job.Target)
|
||||
if err != nil {
|
||||
logg.Error("[server]", zap.String("DecodeString", err.Error()))
|
||||
return
|
||||
}
|
||||
//server_target.SetBytes(common.Reverse(t_bytes))
|
||||
server_target.SetBytes(t_bytes)
|
||||
miner.ServerTarget = server_target
|
||||
miner.ServerTargetS = miner.Server.SJob.Target
|
||||
}
|
||||
|
||||
func Handle_subscribe_dgb(miner *coin.MinerObj, id float64, extranonce1 string) {
|
||||
stratum.Handle_subscribe(miner, id, extranonce1)
|
||||
}
|
||||
|
||||
func HandleMinerSubscribe(miner *coin.MinerObj, id float64, extranonce1 string, msg string) {
|
||||
if strings.Contains(msg, "YxMiner") {
|
||||
miner.Protocol = "yxminer"
|
||||
} else {
|
||||
miner.Protocol = "standard"
|
||||
}
|
||||
Handle_subscribe_dgb(miner, id, extranonce1)
|
||||
}
|
||||
|
||||
func HandleMinerAuth(miner *coin.MinerObj) {
|
||||
|
||||
}
|
||||
|
||||
func HandleMinerSubmit(miner *coin.MinerObj, id float64, miner_user string, job_id string, nonce2 string, ntime string, nonce string) (bool, bool, bool) {
|
||||
|
||||
accept_ok, submit_ok, handle_ok := handle_submit(miner, id, miner_user, job_id, nonce2, ntime, nonce)
|
||||
return accept_ok, submit_ok, handle_ok
|
||||
}
|
||||
|
||||
func set_difficulty(miner *coin.MinerObj) {
|
||||
miner.TxLock.Lock()
|
||||
var msg stratum.Difficulty_msg
|
||||
msg.ID = nil
|
||||
msg.Method = "mining.set_difficulty"
|
||||
msg.Params[0] = miner.Difficulty
|
||||
body, err := json.Marshal(msg)
|
||||
if err != nil {
|
||||
miner.Server.Logg.Error("[server]", zap.String("Marshal", err.Error()))
|
||||
miner.TxLock.Unlock()
|
||||
return
|
||||
}
|
||||
|
||||
var body_string = string(body) + "\n"
|
||||
err = stratum.Conn_tx(miner.Conn, []byte(body_string))
|
||||
if err != nil {
|
||||
//delete(miner.Server.Miners, miner.MinerId)
|
||||
//miner.Server.Miners.Delete(miner.MinerId)
|
||||
}
|
||||
//miner.Server.Logg.Debug("[server]", zap.String("tx", body_string))
|
||||
miner.TxLock.Unlock()
|
||||
|
||||
if miner.ZlogInit {
|
||||
miner.Zlog.Info().Msg(body_string)
|
||||
}
|
||||
}
|
||||
|
||||
func SetDifficulty(miner *coin.MinerObj) {
|
||||
set_difficulty(miner)
|
||||
}
|
||||
|
||||
func DgbNotify(miner *coin.MinerObj) {
|
||||
stratum.Notify(miner)
|
||||
}
|
||||
|
||||
func Notify(miner *coin.MinerObj) {
|
||||
DgbNotify(miner)
|
||||
}
|
||||
|
||||
func HandleJobMsg(server *coin.ServerContext, Msg []byte) {
|
||||
var result msg.StratumJob
|
||||
server.Logg.Warn("[server]", zap.String("receive", "job"))
|
||||
|
||||
if err := json.Unmarshal(Msg, &result); err != nil {
|
||||
server.Logg.Error("[server]", zap.String("Unmarshal", err.Error()))
|
||||
return
|
||||
}
|
||||
server.SJob = msg.StratumJob(result)
|
||||
logg.Debug("[gbt]", zap.String("Target", server.SJob.Target))
|
||||
|
||||
logg.Debug("[gbt]", zap.Uint32("Height", server.SJob.Height), zap.String("Target", server.SJob.Target) /*, zap.Uint64("Timastamp", server.DgbJob.CurTime)*/)
|
||||
targetb, _ := hex.DecodeString(server.SJob.Target)
|
||||
logg.Debug("[gbt]", zap.Float64("network diff", utility.Target2Diff(utility.Reverse(targetb))))
|
||||
|
||||
server.NetHight = uint64(server.SJob.Height)
|
||||
server.NetTarget = server.SJob.Target
|
||||
|
||||
server.Miners.Range(func(k, v interface{}) bool {
|
||||
m, ok := v.(*(coin.MinerObj))
|
||||
if ok {
|
||||
//server.Logg.Info("[server]", zap.String("lock", "start"))
|
||||
m.TxLock.Lock()
|
||||
status := m.Status
|
||||
cmd := dgb_parse_miner_notify(m, server.SJob)
|
||||
m.TxLock.Unlock()
|
||||
//server.Logg.Info("[server]", zap.String("lock", "end"))
|
||||
var need_notify bool = true
|
||||
if time.Now().Sub(m.ConnSetupTime) >= time.Duration(coin.CONN_EXPIRED_TIME)*time.Second {
|
||||
if (status != coin.MINER_STATUS_RUNNING) && (status != coin.MINER_STATUS_AUTHORIZED) {
|
||||
//m.Conn.Close()
|
||||
need_notify = false
|
||||
}
|
||||
}
|
||||
if need_notify {
|
||||
switch cmd {
|
||||
case 0: //extranonce 1 and extranonce2 size
|
||||
//TODO
|
||||
case 1: //notify
|
||||
DgbNotify(m)
|
||||
}
|
||||
}
|
||||
}
|
||||
return true
|
||||
})
|
||||
}
|
||||
|
||||
func IsMhsLow(miner *coin.MinerObj) bool {
|
||||
return miner.Mhs5M < 1
|
||||
}
|
||||
|
||||
func GetBlockInterval() int {
|
||||
return 90
|
||||
}
|
|
@ -0,0 +1,82 @@
|
|||
// hash_dgb.go
|
||||
package dgb
|
||||
|
||||
/*
|
||||
#cgo CFLAGS : -I../include
|
||||
#cgo LDFLAGS: -L../lib -lsodium -lmultihash -lx1x
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include "skein.h"
|
||||
#include "qubit.h"
|
||||
#include "odocrypt.h"
|
||||
*/
|
||||
import "C"
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
//"encoding/hex"
|
||||
"log"
|
||||
"unsafe"
|
||||
|
||||
"github.com/btcsuite/btcd/chaincfg/chainhash"
|
||||
"github.com/btcsuite/btcd/wire"
|
||||
)
|
||||
|
||||
const DGB_BLOCK_VERSION_ALGO int32 = (7 << 9)
|
||||
|
||||
// DGB
|
||||
func Build_DgbPowHash(h wire.BlockHeader) chainhash.Hash {
|
||||
outputs := make([]byte, 32)
|
||||
var powhash chainhash.Hash
|
||||
buf := bytes.NewBuffer(make([]byte, 0, wire.MaxBlockHeaderPayload))
|
||||
err := h.Serialize(buf)
|
||||
if err != nil {
|
||||
log.Println("[dgb] powhash: Serialize error:", err)
|
||||
return powhash
|
||||
}
|
||||
//test_dgb_pow := "0000002013bea8369753c2a405f4704f698f7322c0a52f3ab89e853a14c3b124cf667d098612a82ce1741ab44ae31b5aeb6a7e622386cc4baeb57a046ed1d0fa676fee6cd0f008678ef70f1a6e9deb7a"
|
||||
//test_dgb_bytes, _ := hex.DecodeString(test_dgb_pow)
|
||||
|
||||
//log.Println("[dgb]in", hex.EncodeToString(buf.Bytes()))
|
||||
in := (*C.char)(C.CBytes(buf.Bytes()))
|
||||
//in := (*C.char)(C.CBytes(test_dgb_bytes))
|
||||
defer C.free(unsafe.Pointer(in))
|
||||
|
||||
output := (*C.char)(C.malloc(32))
|
||||
if output == nil {
|
||||
log.Println("[dgb] powhash: malloc failed")
|
||||
return powhash
|
||||
}
|
||||
defer C.free(unsafe.Pointer(output))
|
||||
|
||||
algo := (h.Version & DGB_BLOCK_VERSION_ALGO) >> 9
|
||||
switch algo {
|
||||
case 3:
|
||||
C.skein_hash(in, output, C.uint(wire.MaxBlockHeaderPayload))
|
||||
case 4:
|
||||
C.qubithash(unsafe.Pointer(output), unsafe.Pointer(in))
|
||||
case 7:
|
||||
var nShapechangeInterval uint32 = 10 * 24 * 60 * 60
|
||||
var t uint32 = uint32(h.Timestamp.Unix())
|
||||
var key uint32 = uint32(t - t%nShapechangeInterval)
|
||||
C.HashOdo(output, in, C.uint(key))
|
||||
}
|
||||
|
||||
//outputs := C.GoBytes((*C.uint8_t)((unsafe.Pointer)(output)), 32)
|
||||
/*p := uintptr(unsafe.Pointer(output))
|
||||
for i := 0; i < 32; i++ {
|
||||
j := *(*byte)(unsafe.Pointer(p))
|
||||
outputs[i] = j
|
||||
p += unsafe.Sizeof(j)
|
||||
}*/
|
||||
outputs = C.GoBytes(unsafe.Pointer(output), 32)
|
||||
//log.Println("[dgb]out", outputs)
|
||||
|
||||
err = powhash.SetBytes(outputs)
|
||||
if err != nil {
|
||||
log.Println("[dgb] powhash: SetBytes error:", err)
|
||||
return powhash
|
||||
}
|
||||
return powhash
|
||||
}
|
|
@ -0,0 +1,170 @@
|
|||
// diff.go
|
||||
package diff
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"math"
|
||||
"strconv"
|
||||
"strings"
|
||||
)
|
||||
|
||||
type KalmanVarDiff struct {
|
||||
Kf *KalmanFilter
|
||||
|
||||
StartDiff float64
|
||||
MinDiff float64
|
||||
MaxDiff float64
|
||||
|
||||
TargetInterval float64
|
||||
|
||||
MhsEst float64
|
||||
DiffEst float64
|
||||
}
|
||||
|
||||
type KalmanFilter struct {
|
||||
X float64 // 估计的状态
|
||||
P float64 // 状态协方差
|
||||
F float64 // 状态转移矩阵
|
||||
H float64 // 观测矩阵
|
||||
Q float64 // 过程噪声协方差
|
||||
R float64 // 观测噪声协方差
|
||||
K float64 // 卡尔曼增益
|
||||
}
|
||||
|
||||
func NewKalmanFilter(init_mhs float64, init_state_p float64) *KalmanFilter {
|
||||
x := init_mhs
|
||||
p := init_state_p
|
||||
f := 1.0
|
||||
h := 1.0
|
||||
q := 0.01
|
||||
r := init_mhs * 3
|
||||
//r := 1.0
|
||||
return &KalmanFilter{
|
||||
X: x,
|
||||
P: p,
|
||||
F: f,
|
||||
H: h,
|
||||
Q: q,
|
||||
R: r,
|
||||
}
|
||||
/*
|
||||
return &KalmanFilter{
|
||||
X: 1.0,
|
||||
P: 1.0,
|
||||
F: 1.0,
|
||||
H: 1.0,
|
||||
Q: 0.1,
|
||||
R: 1.0,
|
||||
}*/
|
||||
}
|
||||
|
||||
func (kf *KalmanFilter) Update(measurement float64) (float64, float64) {
|
||||
kf.R = measurement * 2
|
||||
|
||||
// 预测
|
||||
p := kf.X*kf.Q + kf.P
|
||||
|
||||
// 计算卡尔曼增益
|
||||
kf.K = p / (p + kf.R + 1)
|
||||
|
||||
// 更新状态估计
|
||||
if measurement >= kf.X {
|
||||
kf.X = kf.X + kf.K*(measurement-kf.X)
|
||||
} else {
|
||||
kf.X = kf.X - kf.K*(kf.X-measurement)
|
||||
}
|
||||
|
||||
// 更新协方差矩阵
|
||||
kf.P = (1 - kf.K) * p
|
||||
|
||||
// 自适应调整过程噪声和观测噪声
|
||||
//kf.adapt()
|
||||
|
||||
return kf.X, kf.P
|
||||
}
|
||||
|
||||
func (kf *KalmanFilter) adapt() {
|
||||
// 自适应调整参数
|
||||
if kf.P > 10.0 {
|
||||
kf.Q *= 1.1 // 增加过程噪声
|
||||
} else {
|
||||
kf.Q *= 0.9 // 减少过程噪声
|
||||
}
|
||||
if kf.K > 0.5 {
|
||||
kf.R *= 1.1 // 增加观测噪声
|
||||
} else {
|
||||
kf.R *= 0.9 // 减少观测噪声
|
||||
}
|
||||
}
|
||||
|
||||
func (kd *KalmanVarDiff) Init(startDiff float64, minDiff float64, maxDiff float64, targetTime float64) {
|
||||
kd.StartDiff = startDiff
|
||||
kd.MinDiff = minDiff
|
||||
kd.MaxDiff = maxDiff
|
||||
kd.TargetInterval = targetTime
|
||||
kd.DiffEst = startDiff
|
||||
kd.MhsEst = startDiff / targetTime
|
||||
kd.Kf = NewKalmanFilter(startDiff/targetTime, 1.0)
|
||||
}
|
||||
|
||||
func (kd *KalmanVarDiff) DeInit() {
|
||||
|
||||
}
|
||||
|
||||
// 提取科学计数法有效数字(整数部分和一位小数)及指数,并合并为新的浮点数
|
||||
func extractAndCombine(num float64) float64 {
|
||||
// 将浮点数格式化为科学计数法
|
||||
scientificStr := fmt.Sprintf("%.10e", num)
|
||||
|
||||
// 分离小数部分和指数部分
|
||||
parts := strings.Split(scientificStr, "e")
|
||||
if len(parts) != 2 {
|
||||
fmt.Println("Error: unexpected scientific notation format")
|
||||
return 0
|
||||
}
|
||||
|
||||
// 处理小数部分
|
||||
decimalPart := parts[0]
|
||||
exponentPart := parts[1]
|
||||
|
||||
// 去除小数部分前的 "0."
|
||||
decimalPart = strings.TrimPrefix(decimalPart, "0.")
|
||||
|
||||
// 提取整数部分和一位小数
|
||||
decimalParts := strings.Split(decimalPart, ".")
|
||||
if len(decimalParts) < 2 {
|
||||
decimalPart = decimalParts[0] + ".0" // 没有小数部分时,添加 ".0"
|
||||
} else {
|
||||
decimalPart = decimalParts[0] + "." + decimalParts[1][:1] // 只取一位小数
|
||||
//decimalPart = decimalParts[0]
|
||||
}
|
||||
|
||||
// 将指数部分转换为整数
|
||||
exponent, err := strconv.Atoi(exponentPart)
|
||||
if err != nil {
|
||||
fmt.Println("Error parsing exponent:", err)
|
||||
return 0
|
||||
}
|
||||
|
||||
// 计算新的浮点数
|
||||
newNumber := (func() float64 {
|
||||
digit, err := strconv.ParseFloat(decimalPart, 64)
|
||||
if err != nil {
|
||||
fmt.Println("Error parsing decimal part:", err)
|
||||
return 0
|
||||
}
|
||||
return digit * math.Pow(10, float64(exponent))
|
||||
})()
|
||||
|
||||
return newNumber
|
||||
}
|
||||
|
||||
func (kd *KalmanVarDiff) Handler(diff float64, interval float64) (float64, float64) {
|
||||
//newx, newp := kd.Kf.Update(kd.DiffEst / interval)
|
||||
newx, newp := kd.Kf.Update(diff / interval)
|
||||
kd.MhsEst = newx
|
||||
newdiff := newx * kd.TargetInterval
|
||||
kd.DiffEst = newdiff
|
||||
newdiff2 := extractAndCombine(newdiff)
|
||||
return newdiff2, newp
|
||||
}
|
|
@ -0,0 +1,272 @@
|
|||
package enx
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/binary"
|
||||
"encoding/hex"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"pool/internal/msg"
|
||||
"pool/internal/server/coin"
|
||||
"pool/internal/stratum"
|
||||
"pool/internal/utility"
|
||||
|
||||
"github.com/btcsuite/btcd/wire"
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
const SERVER_ENX_VERSION string = "enx v1.15.2"
|
||||
|
||||
type ServerEnxContext struct {
|
||||
ServerCtx *coin.ServerContext
|
||||
logg *zap.Logger
|
||||
Job msg.StratumJob
|
||||
}
|
||||
|
||||
var logg *zap.Logger
|
||||
var ServerEnxCtx ServerEnxContext
|
||||
|
||||
// headerHash:本身的pow计算结果,收到后根据nonce和timestamp重新计算该值,确保该值正确
|
||||
// headerHash本身可以通过计算得出难度
|
||||
func handle_submit(miner *coin.MinerObj, id float64, miner_user string, job_id string, headerHash string, ntime string, nonce string) (bool, bool, bool) {
|
||||
var submit_item coin.BlockMsg
|
||||
/*var user_blk_item coin.UserBlockMsg*/
|
||||
var pool_blk_item coin.PoolBlkMsg
|
||||
|
||||
var blk_detail_height int64
|
||||
var blk_detail_hash string
|
||||
var blk_detail_success bool
|
||||
var blk_detail_miner_diff float64
|
||||
var blk_detail_pool_diff float64
|
||||
|
||||
if miner.Authorized != true {
|
||||
miner.ErrOthers = miner.ErrOthers + 1
|
||||
stratum.Handle_exception(miner, id, stratum.MINER_ERR_UNAUTH_WORKER)
|
||||
stratum.Send_reconnect_msg(miner)
|
||||
return false, false, false
|
||||
}
|
||||
var new_found bool = false
|
||||
var ack stratum.Submit_ack
|
||||
ack.ID = id
|
||||
ack.Result = true
|
||||
//logg.Warn("[server]", zap.String("user", miner.User), zap.String("miner", miner.Miner))
|
||||
//logg.Debug("[server]", zap.Float64("id", id), zap.String("job_id", job_id))
|
||||
//logg.Debug("[server]", zap.String("nonce2", nonce2), zap.String("ntime", ntime), zap.String("nonce", nonce))
|
||||
//stratum.UpdateJobs(miner)
|
||||
v, ok := miner.Jobs.Load(job_id)
|
||||
if ok {
|
||||
job := v.(msg.StratumJob)
|
||||
if job.Height < miner.CurHeight-1 {
|
||||
ack.Result = false
|
||||
stratum.Handle_exception(miner, id, stratum.MINER_ERR_STALED_JOB)
|
||||
miner.ErrStaleds = miner.ErrStaleds + 1
|
||||
return false, false, false
|
||||
}
|
||||
|
||||
if miner.LastNonce != nonce {
|
||||
miner.LastNonce = nonce
|
||||
if miner.ZlogInit {
|
||||
miner.Zlog.Info().Msg("height " + fmt.Sprintf("%d", job.Height) + " target " + job.Target + " extra1 " + job.Extranonce1 + " size " + fmt.Sprintf("%d", job.Extranonce2_size) + " " + miner.User + "." + miner.Miner)
|
||||
}
|
||||
}
|
||||
vb := make([]byte, 4)
|
||||
binary.LittleEndian.PutUint32(vb, uint32(job.Version))
|
||||
vBuffer := bytes.NewBuffer(vb)
|
||||
binary.Read(vBuffer, binary.BigEndian, &(miner.Version))
|
||||
|
||||
job.Nonce = nonce
|
||||
job.Extranonce2 = headerHash
|
||||
|
||||
var calc_hash []byte
|
||||
var header wire.BlockHeader
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
// 构造提交至节点的区块
|
||||
func Produce_block_submit(miner *coin.MinerObj, header wire.BlockHeader, job *msg.StratumJob, PowHash string, SubIdx int64) {
|
||||
}
|
||||
|
||||
// server-->miner
|
||||
func enx_parse_miner_notify(miner *coin.MinerObj, msg msg.StratumJob) int {}
|
||||
|
||||
func Init(server *coin.ServerContext) {
|
||||
ServerEnxCtx.ServerCtx = server
|
||||
logg = server.Logg
|
||||
logg.Info("[server]", zap.String("server_mona_version", SERVER_ENX_VERSION))
|
||||
coin.Init_diff_db()
|
||||
}
|
||||
|
||||
func Start() {
|
||||
|
||||
}
|
||||
|
||||
func Stop() {
|
||||
coin.DiffStop()
|
||||
}
|
||||
|
||||
func InitMiner(miner *coin.MinerObj) {}
|
||||
|
||||
func Handle_subscribe_enx(miner *coin.MinerObj, id float64, extranonce1 string) {
|
||||
stratum.Handle_subscribe(miner, id, extranonce1)
|
||||
}
|
||||
|
||||
func HandleMinerSubscribe(miner *coin.MinerObj, id float64, extranonce1 string, msg string) {
|
||||
Handle_subscribe_enx(miner, id, extranonce1)
|
||||
}
|
||||
|
||||
func HandleMinerAuth(miner *coin.MinerObj) {
|
||||
|
||||
}
|
||||
|
||||
func HandleMinerSubmit(miner *coin.MinerObj, id float64, miner_user string, job_id string, nonce2 string, ntime string, nonce string) (bool, bool, bool) {
|
||||
|
||||
accept_ok, submit_ok, handle_ok := handle_submit(miner, id, miner_user, job_id, nonce2, ntime, nonce)
|
||||
return accept_ok, submit_ok, handle_ok
|
||||
}
|
||||
|
||||
func set_difficulty(miner *coin.MinerObj) {}
|
||||
|
||||
func SetDifficulty(miner *coin.MinerObj) {
|
||||
set_difficulty(miner)
|
||||
}
|
||||
|
||||
/**
|
||||
id: int, method: string, params:[string(jobid), string(headerHash, 32 byte serialized header, 8 bytes timestamp)]
|
||||
*/
|
||||
func EnxNotify(miner *coin.MinerObj) {
|
||||
miner.TxLock.Lock()
|
||||
if !((miner.Status == coin.MINER_STATUS_AUTHORIZED) || (miner.Status == coin.MINER_STATUS_RUNNING)) {
|
||||
miner.TxLock.Unlock()
|
||||
return
|
||||
}
|
||||
miner.TxLock.Unlock()
|
||||
if miner.DifficultyNext > -1 {
|
||||
ratio := miner.DifficultyNext / miner.Difficulty
|
||||
if ratio > 1.1 || ratio < 0.9 {
|
||||
miner.Difficulty = miner.DifficultyNext
|
||||
miner.DifficultyNext = -1
|
||||
//Set_difficulty(miner)
|
||||
miner.Server.CoinCtx.SetDifficulty(miner)
|
||||
} else {
|
||||
miner.DifficultyNext = -1
|
||||
}
|
||||
}
|
||||
miner.TxLock.Lock()
|
||||
//log.Println("[server]extra1, id", miner.Job.Extranonce1, miner.Job.Job_id, miner.MinerId)
|
||||
var params [9]interface{}
|
||||
var tlist []string = make([]string, 0)
|
||||
idb := make([]byte, 4)
|
||||
binary.BigEndian.PutUint32(idb, miner.JobId)
|
||||
miner.Job.Job_id = hex.EncodeToString(idb)
|
||||
params[0] = miner.Job.Job_id
|
||||
if len(miner.Job.PrevblockS) > 0 {
|
||||
params[1] = miner.Job.PrevblockBig
|
||||
} else {
|
||||
p_big := utility.Convert_big_endian(miner.Job.Prevblock.CloneBytes())
|
||||
params[1] = hex.EncodeToString(p_big)
|
||||
}
|
||||
params[2] = miner.Job.Coinbase1
|
||||
params[3] = miner.Job.Coinbase2
|
||||
params[4] = tlist
|
||||
|
||||
miner.CurHeight = miner.Job.Height
|
||||
|
||||
if miner.Job.Transactions != nil {
|
||||
if len(*miner.Job.Transactions) > 0 {
|
||||
params[4] = miner.Job.Transactions
|
||||
|
||||
/*miner.Server.Logg.Error("[notify]", zap.String("coinbase1", miner.Job.Coinbase1), zap.String("coinbase2", miner.Job.Coinbase2), zap.Uint32("height", miner.Job.Height))
|
||||
for i := 0; i < len(*miner.Job.Transactions); i++ {
|
||||
miner.Server.Logg.Error("[notify]", zap.String("trans", (*miner.Job.Transactions)[i]))
|
||||
}*/
|
||||
|
||||
}
|
||||
}
|
||||
vb := make([]byte, 4)
|
||||
binary.LittleEndian.PutUint32(vb, uint32(miner.Job.Version))
|
||||
params[5] = hex.EncodeToString(vb)
|
||||
bb := make([]byte, 4)
|
||||
binary.LittleEndian.PutUint32(bb, miner.Job.Bits)
|
||||
params[6] = hex.EncodeToString(bb)
|
||||
t := miner.Job.Timestamp.Unix()
|
||||
if t > int64(^uint32(0)) {
|
||||
tb := make([]byte, 8)
|
||||
binary.LittleEndian.PutUint64(tb, uint64(t))
|
||||
params[7] = hex.EncodeToString(tb)
|
||||
} else {
|
||||
tb := make([]byte, 4)
|
||||
binary.LittleEndian.PutUint32(tb, uint32(t))
|
||||
params[7] = hex.EncodeToString(tb)
|
||||
}
|
||||
if miner.Reconnect {
|
||||
params[8] = true
|
||||
miner.Reconnect = false
|
||||
} else {
|
||||
params[8] = miner.Job.IsClean
|
||||
}
|
||||
miner.Job.JobDifficulty = miner.Difficulty
|
||||
|
||||
//miner.Jobs[miner.Job.Job_id] = miner.Job
|
||||
miner.Jobs.LoadOrStore(miner.Job.Job_id, miner.Job)
|
||||
|
||||
/*var entry coin.JobListEntry
|
||||
entry.Job_id = miner.Job.Job_id
|
||||
entry.Ts = time.Now()
|
||||
|
||||
miner.LockForJobs.Lock()
|
||||
miner.JobList.PushFront(entry)
|
||||
var removes string = ""
|
||||
if miner.JobList.Len() > int(coin.LOCAL_JOBS_TOTAL_SIZE) {
|
||||
e := miner.JobList.Back()
|
||||
entry := e.Value.(coin.JobListEntry)
|
||||
removes = entry.Job_id
|
||||
miner.JobList.Remove(e)
|
||||
}
|
||||
miner.LockForJobs.Unlock()
|
||||
if len(removes) > 0 {
|
||||
miner.Jobs.Delete(removes)
|
||||
}*/
|
||||
stratum.AddAndUpdateJob(miner)
|
||||
stratum.UpdateJobs(miner)
|
||||
|
||||
//miner.LastJobId = miner.Job.Job_id
|
||||
miner.JobId++
|
||||
|
||||
var msg stratum.Notify_msg
|
||||
msg.ID = nil
|
||||
msg.Method = "mining.notify"
|
||||
msg.Params = params
|
||||
body, err := json.Marshal(msg)
|
||||
if err != nil {
|
||||
miner.Server.Logg.Error("[server]", zap.String("Marshal", err.Error()))
|
||||
miner.TxLock.Unlock()
|
||||
return
|
||||
}
|
||||
var body_string = string(body) + "\n"
|
||||
err = stratum.Conn_tx(miner.Conn, []byte(body_string))
|
||||
if err != nil {
|
||||
//delete(miner.Server.Miners, miner.MinerId)
|
||||
//miner.Server.Miners.Delete(miner.MinerId)
|
||||
}
|
||||
//miner.Server.Logg.Debug("[server]", zap.String("tx", body_string))
|
||||
miner.TxLock.Unlock()
|
||||
|
||||
if miner.ZlogInit {
|
||||
miner.Zlog.Info().Msg(body_string)
|
||||
}
|
||||
}
|
||||
|
||||
func Notify(miner *coin.MinerObj) {
|
||||
EnxNotify(miner)
|
||||
}
|
||||
|
||||
func HandleJobMsg(server *coin.ServerContext, Msg []byte) {}
|
||||
|
||||
func IsMhsLow(miner *coin.MinerObj) bool {
|
||||
return miner.Mhs5M < 1
|
||||
}
|
||||
|
||||
func GetBlockInterval() int {
|
||||
return 30 // 30秒没获取到任务发送退出信号
|
||||
}
|
|
@ -0,0 +1,35 @@
|
|||
package enx
|
||||
|
||||
/*
|
||||
#cgo CFLAGS: -I../include/heavyHash
|
||||
#cgo LDFLAGS: -L../lib/heavyHash -lheavyhash
|
||||
#include "heavyhash.h"
|
||||
*/
|
||||
import "C"
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
"unsafe"
|
||||
)
|
||||
|
||||
func EnxHash(data []byte) string {
|
||||
// 初始化 CSHA3_256 结构体
|
||||
var sha3 C.CSHA3_256
|
||||
|
||||
// 调用 C 语言的 Write 方法
|
||||
C.CSHA3_256_Write(&sha3, (*C.uchar)(unsafe.Pointer(&data[0])), C.size_t(len(data)))
|
||||
|
||||
// 调用 C 语言的 Finalize 方法来生成哈希
|
||||
var hash [C.OUTPUT_SIZE]C.uchar
|
||||
C.CSHA3_256_Finalize(&sha3, &hash[0])
|
||||
|
||||
// 使用 strings.Builder 来拼接字符串
|
||||
var builder strings.Builder
|
||||
for i := 0; i < C.OUTPUT_SIZE; i++ {
|
||||
// 以十六进制方式格式化每个字节
|
||||
builder.WriteString(fmt.Sprintf("%02x", hash[i]))
|
||||
}
|
||||
|
||||
// 返回最终的哈希值
|
||||
return builder.String()
|
||||
}
|
|
@ -0,0 +1,724 @@
|
|||
// grs.go
|
||||
package grs
|
||||
|
||||
import (
|
||||
//"database/sql"
|
||||
"bytes"
|
||||
"encoding/binary"
|
||||
"encoding/hex"
|
||||
"encoding/json"
|
||||
|
||||
//"log"
|
||||
//"math"
|
||||
"math/big"
|
||||
"strings"
|
||||
|
||||
"fmt"
|
||||
"pool/internal/msg"
|
||||
"pool/internal/server/coin"
|
||||
"pool/internal/server/dbif"
|
||||
"pool/internal/stratum"
|
||||
"pool/internal/utility"
|
||||
"time"
|
||||
|
||||
"github.com/btcsuite/btcd/wire"
|
||||
|
||||
_ "github.com/mattn/go-sqlite3"
|
||||
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
const SERVER_GRS_VERSION string = "grs v3.0f"
|
||||
|
||||
type ServerGrsContext struct {
|
||||
ServerCtx *coin.ServerContext
|
||||
logg *zap.Logger
|
||||
|
||||
Job msg.StratumJob
|
||||
}
|
||||
|
||||
var logg *zap.Logger
|
||||
var ServerGrsCtx ServerGrsContext
|
||||
|
||||
const truediffone float64 = 26959535291011309493156476344723991336010898738574164086137773096960.0
|
||||
const bits192 float64 = 6277101735386680763835789423207666416102355444464034512896.0
|
||||
const bits128 float64 = 340282366920938463463374607431768211456.0
|
||||
const bits64 float64 = 18446744073709551616.0
|
||||
|
||||
func target2float(target []byte) float64 {
|
||||
var b64 float64 = float64(binary.LittleEndian.Uint64(target[24:32])) * bits192
|
||||
b64 += (float64(binary.LittleEndian.Uint64(target[16:24])) * bits128)
|
||||
b64 += (float64(binary.LittleEndian.Uint64(target[8:16])) * bits64)
|
||||
b64 += (float64(binary.LittleEndian.Uint64(target[0:8])))
|
||||
return b64
|
||||
}
|
||||
|
||||
// convert target to difficulty
|
||||
func target2diff(target []byte) float64 {
|
||||
var f64 float64 = truediffone
|
||||
var fcut64 float64 = target2float(target)
|
||||
//log.Println("diff", f64, fcut64, f64/fcut64*65536)
|
||||
return f64 / fcut64
|
||||
}
|
||||
|
||||
func handle_submit(miner *coin.MinerObj, id float64, miner_user string, job_id string, nonce2 string, ntime string, nonce string) (bool, bool, bool) {
|
||||
var submit_item coin.BlockMsg
|
||||
/*var user_blk_item coin.UserBlockMsg*/
|
||||
var pool_blk_item coin.PoolBlkMsg
|
||||
|
||||
var blk_detail_height int64
|
||||
var blk_detail_hash string
|
||||
var blk_detail_success bool
|
||||
var blk_detail_miner_diff float64
|
||||
var blk_detail_pool_diff float64
|
||||
|
||||
if miner.Authorized != true {
|
||||
miner.ErrOthers = miner.ErrOthers + 1
|
||||
stratum.Handle_exception(miner, id, stratum.MINER_ERR_UNAUTH_WORKER)
|
||||
stratum.Send_reconnect_msg(miner)
|
||||
return false, false, false
|
||||
}
|
||||
var new_found bool = false
|
||||
var ack stratum.Submit_ack
|
||||
ack.ID = id
|
||||
ack.Result = true
|
||||
//logg.Warn("[server]", zap.String("user", miner.User), zap.String("miner", miner.Miner))
|
||||
//logg.Debug("[server]", zap.Float64("id", id), zap.String("job_id", job_id))
|
||||
//logg.Debug("[server]", zap.String("nonce2", nonce2), zap.String("ntime", ntime), zap.String("nonce", nonce))
|
||||
//stratum.UpdateJobs(miner)
|
||||
v, ok := miner.Jobs.Load(job_id)
|
||||
if ok {
|
||||
job := v.(msg.StratumJob)
|
||||
|
||||
if job.Height < miner.CurHeight-1 {
|
||||
ack.Result = false
|
||||
stratum.Handle_exception(miner, id, stratum.MINER_ERR_STALED_JOB)
|
||||
miner.ErrStaleds = miner.ErrStaleds + 1
|
||||
return false, false, false
|
||||
}
|
||||
|
||||
//logg.Debug("[server]", zap.Uint64("ntime", nt), zap.Uint64("mintime", uint64(job.Mintime)), zap.Uint64("jobtime", jt_reverse))
|
||||
/*if nt < uint64(job.Mintime) {
|
||||
ack.Result = false
|
||||
util.Handle_exception(miner, id, util.MINER_ERR_TIME_TOO_OLD)
|
||||
} else if nt > jt_reverse+uint64(600) {
|
||||
ack.Result = false
|
||||
util.Handle_exception(miner, id, util.MINER_ERR_TIME_TOO_NEW)
|
||||
} else */{
|
||||
if miner.LastNonce != nonce {
|
||||
|
||||
miner.LastNonce = nonce
|
||||
//job.Nonce = nonce
|
||||
//job.Extranonce2 = nonce2
|
||||
//logg.Debug("[server]", zap.Uint32("height", job.Height), zap.String("target", job.Target))
|
||||
if miner.ZlogInit {
|
||||
miner.Zlog.Info().Msg("height " + fmt.Sprintf("%d", job.Height) + " target " + job.Target + " extra1 " + job.Extranonce1 + " size " + fmt.Sprintf("%d", job.Extranonce2_size) + " " + miner.User + "." + miner.Miner)
|
||||
}
|
||||
|
||||
//job := v.(msg.StratumJob)
|
||||
vb := make([]byte, 4)
|
||||
binary.LittleEndian.PutUint32(vb, uint32(job.Version))
|
||||
vBuffer := bytes.NewBuffer(vb)
|
||||
binary.Read(vBuffer, binary.BigEndian, &(miner.Version))
|
||||
|
||||
job.Nonce = nonce
|
||||
job.Extranonce2 = nonce2
|
||||
//logg.Debug("[server]", zap.Uint32("height", job.Height), zap.String("target", job.Target))
|
||||
var calc_hash []byte
|
||||
var header wire.BlockHeader
|
||||
|
||||
calc_hash, header = coin.BuildBlockHash(&(job), false, Build_GrsPowHash)
|
||||
|
||||
//logg.Debug("[server]", zap.String("hash in", submit_item.Header))
|
||||
//calc_hash, header := util.BuildBlockHash(&(job), true, Build_PowHash)
|
||||
//logg.Debug("[server]", zap.String("calc_hash", hex.EncodeToString(calc_hash)) /*, zap.String("merkle root", hex.EncodeToString(merkle_root))*/)
|
||||
if miner.ZlogInit {
|
||||
printbuf := bytes.NewBuffer(make([]byte, 0, wire.MaxBlockHeaderPayload))
|
||||
header.Serialize(printbuf)
|
||||
miner.Zlog.Info().Msg("hash in " + hex.EncodeToString(printbuf.Bytes()) + " calc_hash " + hex.EncodeToString(calc_hash) + " " + miner.User + "." + miner.Miner)
|
||||
}
|
||||
submit_target := new(big.Int)
|
||||
hashs, _ := utility.ReverseS(hex.EncodeToString(calc_hash))
|
||||
hashb, _ := hex.DecodeString(hashs)
|
||||
submit_target.SetBytes(hashb)
|
||||
calc_diff := target2diff(calc_hash)
|
||||
//log.Printf("diff,calc_diff:%f difficulty:%f ", calc_diff, miner.Difficulty)
|
||||
//logg.Warn("[server]", zap.String("user", miner.User+"."+miner.Miner), zap.Float64("target diff", miner.Difficulty), zap.Float64("submit diff", calc_diff))
|
||||
if miner.ZlogInit {
|
||||
miner.Zlog.Info().Msg(miner.User + "." + miner.Miner + " target diff " + fmt.Sprintf("%f", (job.JobDifficulty)) + " submit diff " + fmt.Sprintf("%f", (calc_diff)))
|
||||
}
|
||||
//logg.Debug("[server]", zap.String("target", miner.Target.String()), zap.Any("bytes", miner.Target.Bytes()))
|
||||
//logg.Info("[server]", zap.Float64("target diff", miner.Difficulty), zap.Float64("submit diff", calc_diff), zap.String("target", hex.EncodeToString(miner.Target.Bytes())))
|
||||
|
||||
//if calc_diff < miner.Difficulty {
|
||||
if calc_diff < job.JobDifficulty {
|
||||
//gpu protocol handler
|
||||
/*for i := 0; i < 8; i++ {
|
||||
temp_nonce := header.Nonce[8+i]
|
||||
header.Nonce[8+i] = header.Nonce[i]
|
||||
header.Nonce[i] = temp_nonce
|
||||
}
|
||||
submit_item.Header = hex.EncodeToString(GrsBlockHeaderToBytes(header))
|
||||
calc_hash = BuildPowHash(header)
|
||||
logg.Debug("[server]", zap.String("hash in", hex.EncodeToString(GrsBlockHeaderToBytes(header))))*/
|
||||
//logg.Debug("[server]", zap.String("calc_hash", hex.EncodeToString(calc_hash)) /*, zap.String("merkle root", hex.EncodeToString(merkle_root))*/)
|
||||
//submit_target = new(big.Int)
|
||||
/*submit_target.SetBytes(calc_hash)
|
||||
calc_diff = utility.Target2Diff(calc_hash)
|
||||
logg.Warn("[server]", zap.String("user", miner.User+"."+miner.Miner), zap.Float64("target diff", miner.Difficulty), zap.Float64("submit diff", calc_diff))
|
||||
if calc_diff < miner.Difficulty {
|
||||
*/
|
||||
ack.Result = false
|
||||
miner.ErrLowDiffs = miner.ErrLowDiffs + 1
|
||||
stratum.Handle_exception(miner, id, stratum.MINER_ERR_LOW_DIF_SHARE)
|
||||
return false, false, false
|
||||
//}
|
||||
|
||||
}
|
||||
//logg.Warn("[server]", zap.String("pow", hex.EncodeToString(submit_target.Bytes())), zap.String("target", hex.EncodeToString(miner.ServerTarget.Bytes())))
|
||||
//submit_target.Text(16)
|
||||
/*if submit_target.Cmp(miner.ServerTarget) <= 0 {*/
|
||||
//log.Println("[server]server_target", miner.ServerTargetS)
|
||||
//stb, _ := hex.DecodeString(miner.ServerTargetS)
|
||||
stb, _ := hex.DecodeString(job.Target)
|
||||
//logg.Info("[server]", zap.String("target", job.Target))
|
||||
//server_diff := Target2Diff(common.Reverse(stb))
|
||||
server_diff := target2diff(utility.Reverse(stb))
|
||||
//log.Printf("[server]server_diff %f", server_diff)
|
||||
//logg.Info("[server]", zap.Float64("calc_diff", calc_diff), zap.Float64("miner.Difficulty", miner.Difficulty), zap.Float64("server_diff", server_diff))
|
||||
//logg.Debug("[server]", zap.String("ServerTargetS", miner.ServerTargetS))
|
||||
network_target := new(big.Int)
|
||||
network_target.SetBytes(stb)
|
||||
//logg.Info("[server]", zap.Float64("calc_diff", calc_diff), zap.Float64("miner.Difficulty", miner.Difficulty), zap.Float64("server_diff", server_diff))
|
||||
//logg.Debug("[server]", zap.String("submit_target", hex.EncodeToString(submit_target.Bytes())), zap.String("network_target", hex.EncodeToString(network_target.Bytes())), zap.String("target", hex.EncodeToString(miner.ServerTarget.Bytes())), zap.Int("cmp", network_target.Cmp(submit_target)))
|
||||
if miner.ZlogInit {
|
||||
miner.Zlog.Info().Msg(miner.User + "." + miner.Miner + " calc_diff " + fmt.Sprintf("%f", (calc_diff)) + " miner.Difficulty " + fmt.Sprintf("%f", (miner.Difficulty)) + " server_diff " + fmt.Sprintf("%f", (server_diff)))
|
||||
miner.Zlog.Info().Msg(miner.User + "." + miner.Miner + " submit_target " + hex.EncodeToString(submit_target.Bytes()) + " network_target " + hex.EncodeToString(network_target.Bytes()) + " target " + hex.EncodeToString(miner.ServerTarget.Bytes()) + " cmp " + fmt.Sprintf("%d", (network_target.Cmp(submit_target))))
|
||||
}
|
||||
|
||||
submit_item.Hash = hex.EncodeToString(calc_hash)
|
||||
submit_item.Target = hex.EncodeToString(miner.Target.Bytes())
|
||||
submit_item.Submit_target = hex.EncodeToString(calc_hash)
|
||||
submit_item.Height = int64(job.Height)
|
||||
submit_item.Pow = hex.EncodeToString(calc_hash)
|
||||
submit_item.Net_target = hex.EncodeToString(network_target.Bytes())
|
||||
|
||||
/*user_blk_item.Height = int64(job.Height)
|
||||
user_blk_item.Hash = hex.EncodeToString(calc_hash)
|
||||
user_blk_item.Pow = hex.EncodeToString(calc_hash)
|
||||
user_blk_item.Net_target = hex.EncodeToString(network_target.Bytes())*/
|
||||
|
||||
pool_blk_item.Height = int64(job.Height)
|
||||
pool_blk_item.Hash = hex.EncodeToString(calc_hash)
|
||||
pool_blk_item.Pow = hex.EncodeToString(calc_hash)
|
||||
pool_blk_item.Net_target = hex.EncodeToString(network_target.Bytes())
|
||||
|
||||
blk_detail_height = int64(job.Height)
|
||||
blk_detail_hash = hex.EncodeToString(calc_hash)
|
||||
blk_detail_success = false
|
||||
blk_detail_miner_diff = miner.Difficulty
|
||||
blk_detail_pool_diff = miner.Server.RefDifficulty
|
||||
|
||||
if ack.Result == true {
|
||||
/*if miner.CurHeight != 0 && miner.CurHeight == job.Height {
|
||||
return
|
||||
}*/
|
||||
|
||||
//if true {
|
||||
if (calc_diff >= server_diff) || (network_target.Cmp(submit_target) >= 0) {
|
||||
miner.Server.SubIdx++
|
||||
|
||||
hdbuf := bytes.NewBuffer(make([]byte, 0, wire.MaxBlockHeaderPayload))
|
||||
err := header.Serialize(hdbuf)
|
||||
if err != nil {
|
||||
logg.Error("[server]", zap.String("header Serialize", err.Error()))
|
||||
} else {
|
||||
//pow := chainhash.DoubleHashB(hdbuf.Bytes())
|
||||
//blk_hash := hex.EncodeToString(pow)
|
||||
Produce_block_submit(miner, header, &job, submit_item.Hash, miner.Server.SubIdx)
|
||||
miner.SubmitIndex++
|
||||
miner.Submits = miner.Submits + 1
|
||||
//miner.CurHeight = job.Height
|
||||
new_found = true
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
||||
miner.LastNonce = nonce
|
||||
ack.Result = false
|
||||
stratum.Handle_exception(miner, id, stratum.MINER_ERR_DUP_SHARE)
|
||||
miner.ErrDuplicates = miner.ErrDuplicates + 1
|
||||
return false, false, false
|
||||
}
|
||||
}
|
||||
} else {
|
||||
ack.Result = false
|
||||
stratum.Handle_exception(miner, id, stratum.MINER_ERR_NOT_FOUND_JOB)
|
||||
miner.ErrStaleds = miner.ErrStaleds + 1
|
||||
return false, false, false
|
||||
}
|
||||
|
||||
miner.LastJobId = job_id
|
||||
|
||||
ack.Error = nil
|
||||
body, err := json.Marshal(ack)
|
||||
if err != nil {
|
||||
//logg.Error("[server]", zap.String("Marshal", err.Error()))
|
||||
if miner.ZlogInit {
|
||||
miner.Zlog.Info().Msg(miner.User + "." + miner.Miner + " handle_submit Marshal " + err.Error())
|
||||
}
|
||||
miner.ErrOthers = miner.ErrOthers + 1
|
||||
stratum.Handle_exception(miner, id, stratum.MINER_ERR_UNKNOWN)
|
||||
return false, false, false
|
||||
}
|
||||
|
||||
var body_string = string(body) + "\n"
|
||||
err = stratum.Conn_tx(miner.Conn, []byte(body_string))
|
||||
if err != nil {
|
||||
//miner.Server.Miners.Delete(miner.MinerId)
|
||||
}
|
||||
if miner.ZlogInit {
|
||||
miner.Zlog.Info().Msg(body_string)
|
||||
}
|
||||
//logg.Debug("[server]", zap.String("tx", body_string))
|
||||
miner.TxLock.Lock()
|
||||
miner.Status = coin.MINER_STATUS_RUNNING
|
||||
miner.TxLock.Unlock()
|
||||
|
||||
if ack.Result {
|
||||
|
||||
miner.Accepts += miner.Difficulty
|
||||
miner.M5Accepts += miner.Difficulty
|
||||
|
||||
miner.VarDiffOpt.SubmitShares += miner.Difficulty
|
||||
|
||||
} else {
|
||||
miner.Rejects += miner.Difficulty
|
||||
|
||||
}
|
||||
now := time.Now()
|
||||
if miner.Server.Config.Diff.Filter == "kalman" {
|
||||
if ack.Result {
|
||||
share_interval := now.Sub(miner.LastSubmitime).Seconds()
|
||||
mhs := miner.Difficulty * share_interval
|
||||
diff_next, kalman_p := miner.DiffHandler.Handler(miner.Difficulty, share_interval)
|
||||
mhs_est := diff_next * miner.Server.Config.Diff.DiffAdjustInterval
|
||||
|
||||
ratio := diff_next / miner.Difficulty
|
||||
if ratio > 0 {
|
||||
if now.Sub(miner.StartSubmitTime).Seconds() > 180 {
|
||||
if ratio >= 2 {
|
||||
//miner.DifficultyNext = math.Ceil(diff_next*100) / 100
|
||||
miner.DifficultyNext = diff_next * 10000000 / 10000000
|
||||
} else if ratio <= 0.5 {
|
||||
//miner.DifficultyNext = math.Ceil(diff_next*100) / 100
|
||||
miner.DifficultyNext = diff_next * 10000000 / 10000000
|
||||
} else {
|
||||
}
|
||||
} else {
|
||||
//miner.DifficultyNext = math.Ceil(diff_next*100) / 100
|
||||
miner.DifficultyNext = diff_next * 10000000 / 10000000
|
||||
/*if ratio >= 1.1 {
|
||||
miner.DifficultyNext = math.Ceil(diff_next*100) / 100
|
||||
} else if ratio <= 0.8 {
|
||||
miner.DifficultyNext = math.Ceil(diff_next*100) / 100
|
||||
} else {
|
||||
}*/
|
||||
}
|
||||
}
|
||||
if miner.DifficultyNext > 0.0 {
|
||||
if miner.DifficultyNext < miner.VarDiffOpt.MinDiff {
|
||||
miner.DifficultyNext = miner.VarDiffOpt.MinDiff
|
||||
} else if miner.DifficultyNext > miner.VarDiffOpt.MaxDiff {
|
||||
miner.DifficultyNext = miner.VarDiffOpt.MaxDiff
|
||||
}
|
||||
}
|
||||
//miner.VarDiffOpt.LastCalcTime = now
|
||||
|
||||
if miner.Server.Config.Diff.Dbg {
|
||||
coin.New_diff_into_db(miner.User, miner.Miner, fmt.Sprint(miner.MinerIndex), miner.Difficulty, diff_next, kalman_p, share_interval, mhs, mhs_est)
|
||||
}
|
||||
|
||||
//log.Println("diff adjust", ratio, diff_next, miner.Difficulty, miner.DifficultyNext)
|
||||
}
|
||||
} else {
|
||||
// submit time < DiffAdjustInterval,then up adjust diff
|
||||
if now.Sub(miner.LastSubmitime).Seconds() < miner.Server.Config.Diff.DiffAdjustInterval {
|
||||
if ack.Result {
|
||||
if miner.VarDiffOpt.Uptimes++; miner.VarDiffOpt.Uptimes >= coin.DIFFICULTY_WAIT_TIMES {
|
||||
coin.VarAdjustDifficulty(miner, coin.UP_DIFF)
|
||||
miner.VarDiffOpt.LastCalcTime = now
|
||||
}
|
||||
}
|
||||
} else {
|
||||
miner.VarDiffOpt.Uptimes = 0
|
||||
}
|
||||
|
||||
// submit time > 2 * DiffAdjustInterval,then down adjust diff
|
||||
if now.Sub(miner.LastSubmitime).Seconds() > miner.Server.Config.Diff.DiffAdjustInterval*2 {
|
||||
if ack.Result {
|
||||
if miner.VarDiffOpt.Downtimes++; miner.VarDiffOpt.Downtimes >= coin.DIFFICULTY_WAIT_TIMES {
|
||||
coin.VarAdjustDifficulty(miner, coin.DOWN_DIFF)
|
||||
miner.VarDiffOpt.LastCalcTime = now
|
||||
}
|
||||
}
|
||||
} else {
|
||||
miner.VarDiffOpt.Downtimes = 0
|
||||
}
|
||||
}
|
||||
if ack.Result {
|
||||
miner.LastSubmitime = now
|
||||
miner.VarDiffOpt.LastSubmitTime = now
|
||||
}
|
||||
var duration float64 = float64(now.Sub(miner.StartSubmitTime)) / 1000000000
|
||||
|
||||
if duration < 1 {
|
||||
duration = 1
|
||||
}
|
||||
diffOneShareHashesAvg := uint64(0x00000000FFFFFFFF)
|
||||
miner.AverageHashrate = miner.Accepts * float64(diffOneShareHashesAvg) / duration / 1000000
|
||||
var m5_duration float64 = float64(now.Sub(miner.M5SubmitTime)) / 1000000000
|
||||
if m5_duration >= float64(time.Minute*5)/1000000000 {
|
||||
miner.M5SubmitTime = now
|
||||
miner.M5Hashrate = miner.M5Accepts * float64(diffOneShareHashesAvg) / m5_duration / 1000000
|
||||
//logg.Info("[server]", zap.Float64("Accepts", miner.Accepts), zap.Float64("M5Accepts", miner.M5Accepts), zap.Float64("M5Hashrate(MH/S)", miner.M5Hashrate))
|
||||
miner.M5Accepts = 0
|
||||
}
|
||||
|
||||
//logg.Warn("[server]", zap.Float64("Accepts", miner.Accepts), zap.Float64("Rejects", miner.Rejects))
|
||||
//logg.Info("[server]", zap.Float64("TargetShares", miner.VarDiffOpt.TargetShares), zap.Float64("MinShares", miner.VarDiffOpt.MinShares), zap.Float64("MaxShares", miner.VarDiffOpt.MaxShares), zap.Float64("SubmitShares", miner.VarDiffOpt.SubmitShares))
|
||||
//logg.Warn("[server]", zap.Float64("reject rate", miner.Rejects/(miner.Accepts+miner.Rejects)), zap.Float64("Hashrate(MH/S)", miner.AverageHashrate))
|
||||
//logg.Warn("[server]", zap.Float64("M5Accepts", miner.M5Accepts), zap.Float64("M5Hashrate(MH/S)", miner.M5Hashrate))
|
||||
if miner.ZlogInit {
|
||||
miner.Zlog.Info().Msg(miner.User + "." + miner.Miner + " handle_submit M5Accepts " + fmt.Sprintf("%f", (miner.M5Accepts)) + " Hashrate(MH/S) " + fmt.Sprintf("%f", miner.AverageHashrate) + " M5Hashrate(MH/S) " + fmt.Sprintf("%f", miner.M5Hashrate))
|
||||
}
|
||||
|
||||
//logg.Info("[server]", zap.Float64("LastCalcTime", float64(now.Sub(miner.VarDiffOpt.LastCalcTime))/1000000000))
|
||||
//calc acutal submit shares period of time, then compare with target shares and adjust diff
|
||||
|
||||
if miner.Server.Config.Diff.Filter == "kalman" {
|
||||
} else {
|
||||
if float64(now.Sub(miner.VarDiffOpt.LastCalcTime))/1000000000 >= miner.VarDiffOpt.AdjustTime {
|
||||
coin.VarAdjustDifficulty(miner, coin.UPDATE_DIFF)
|
||||
miner.VarDiffOpt.LastCalcTime = now
|
||||
}
|
||||
}
|
||||
|
||||
if new_found {
|
||||
//util.StaleAllJobs(miner)
|
||||
|
||||
/*user_blk_item.User = miner.User
|
||||
user_blk_item.Miner = miner.Miner
|
||||
user_blk_item.Index = fmt.Sprint(miner.MinerIndex)
|
||||
|
||||
user_blk_item.Submit = "y"
|
||||
user_blk_item.Success = false
|
||||
user_blk_item.Accepts = miner.Accepts
|
||||
user_blk_item.Rejects = miner.Rejects
|
||||
user_blk_item.Reward = 0
|
||||
user_blk_item.Fee = 0
|
||||
user_blk_item.Nonce = nonce
|
||||
user_blk_item.SubIdx = miner.Server.SubIdx
|
||||
dbif.NotifyUsersBlkStatsDb2(miner, &user_blk_item)*/
|
||||
|
||||
pool_blk_item.Submit = "y"
|
||||
pool_blk_item.Success = false
|
||||
pool_blk_item.Accepts = miner.Accepts
|
||||
pool_blk_item.Rejects = miner.Rejects
|
||||
pool_blk_item.Reward = 0
|
||||
pool_blk_item.Fee = 0
|
||||
pool_blk_item.Nonce = nonce
|
||||
pool_blk_item.SubIdx = miner.Server.SubIdx
|
||||
dbif.NotifyPoolBlkStatsDb2(miner.Server, &pool_blk_item)
|
||||
|
||||
}
|
||||
|
||||
if ack.Result {
|
||||
|
||||
submit_item.Success = false
|
||||
if new_found {
|
||||
submit_item.Submit = "y"
|
||||
submit_item.SubIdx = miner.Server.SubIdx
|
||||
} else {
|
||||
submit_item.Submit = "n"
|
||||
submit_item.SubIdx = -1
|
||||
}
|
||||
|
||||
submit_item.Accepts = miner.Accepts
|
||||
submit_item.Total_accepts = miner.Accepts
|
||||
submit_item.Rejects = miner.Rejects
|
||||
submit_item.Total_rejects = miner.Rejects
|
||||
submit_item.Reward = 0
|
||||
submit_item.Fee = 0
|
||||
submit_item.Nonce = nonce
|
||||
|
||||
//dbif.NotifyMinerDb2(miner, &submit_item)
|
||||
|
||||
dbif.NotifyBlkDetailDb(miner, blk_detail_height, blk_detail_hash, blk_detail_success, blk_detail_miner_diff, blk_detail_pool_diff, nonce, submit_item.SubIdx)
|
||||
return true, new_found, true
|
||||
}
|
||||
return false, false, true
|
||||
}
|
||||
|
||||
func Produce_block_submit(miner *coin.MinerObj, header wire.BlockHeader, job *msg.StratumJob, PowHash string, SubIdx int64) {
|
||||
var nm msg.BlockGrsMsg
|
||||
|
||||
buf := bytes.NewBuffer(make([]byte, 0, wire.MaxBlockHeaderPayload))
|
||||
err := header.Serialize(buf)
|
||||
if err != nil {
|
||||
logg.Error("[server]", zap.String("Bytes", err.Error()))
|
||||
return
|
||||
}
|
||||
blk := hex.EncodeToString(buf.Bytes())
|
||||
txns := len(*job.TransData) + 1
|
||||
var txnss string
|
||||
if txns < 0xfd {
|
||||
//txnss = hex.EncodeToString([]byte(string(txns)))
|
||||
txnsb := make([]byte, 2)
|
||||
binary.LittleEndian.PutUint16(txnsb, uint16(txns))
|
||||
txnss = hex.EncodeToString(txnsb[:1])
|
||||
} else if txns < 0xffff {
|
||||
blk += "fd"
|
||||
txnsb := make([]byte, 2)
|
||||
binary.LittleEndian.PutUint16(txnsb, uint16(txns))
|
||||
txnss = hex.EncodeToString(txnsb)
|
||||
} else {
|
||||
blk += "fe"
|
||||
txnsb := make([]byte, 4)
|
||||
binary.LittleEndian.PutUint32(txnsb, uint32(txns))
|
||||
txnss = hex.EncodeToString(txnsb)
|
||||
}
|
||||
blk += txnss
|
||||
|
||||
//blk += (job.Coinbase1 + job.Extranonce1 + job.Extranonce2 + job.Coinbase2)
|
||||
blk += job.Coinbase1[:8]
|
||||
blk += "0001"
|
||||
c2 := len(job.Coinbase2)
|
||||
blk += (job.Coinbase1[8:] + job.Extranonce1 + job.Extranonce2 + job.Coinbase2[:c2-8])
|
||||
blk += "01200000000000000000000000000000000000000000000000000000000000000000"
|
||||
blk += job.Coinbase2[c2-8:]
|
||||
for i := range *job.TransData {
|
||||
blk += (*job.TransData)[i]
|
||||
}
|
||||
|
||||
bh, _ := hex.DecodeString(blk)
|
||||
nm.Data = bh
|
||||
|
||||
nm.Nonce = job.Nonce
|
||||
nm.Pow = PowHash
|
||||
nm.SubIdx = SubIdx
|
||||
nm.User = miner.User
|
||||
nm.Miner = miner.Miner
|
||||
nm.Index = fmt.Sprint(miner.MinerIndex)
|
||||
body, err := json.Marshal(nm)
|
||||
if err != nil {
|
||||
logg.Error("[server]", zap.String("failed to Marshal job", err.Error()))
|
||||
return
|
||||
}
|
||||
blk2 := string(body)
|
||||
|
||||
//Add Height
|
||||
heightb := utility.Uint32ToByte(job.Height)
|
||||
heights := hex.EncodeToString(heightb)
|
||||
blk2 += heights
|
||||
var Height uint32 = utility.ByteToUint32(heightb)
|
||||
logg.Warn("[server]", zap.Uint32("Height", Height))
|
||||
|
||||
//Add SubmitIndex
|
||||
indexb := utility.Uint32ToByte(miner.SubmitIndex)
|
||||
indexs := hex.EncodeToString(indexb)
|
||||
blk2 += indexs
|
||||
var SubmitIndex uint32 = utility.ByteToUint32(indexb)
|
||||
logg.Info("[server]", zap.Uint32("SubmitIndex", SubmitIndex))
|
||||
logg.Info("[server]", zap.String("blk", blk2))
|
||||
|
||||
if miner.Server.PubCh == nil {
|
||||
miner.Server.PubCh = utility.InitZmqPub(miner.Server.Config.Zmq.Pub)
|
||||
}
|
||||
if miner.Server.PubCh != nil {
|
||||
//miner.Server.PubCh.SendChan <- [][]byte{[]byte("blkgrs"), []byte(blk)}
|
||||
err := miner.Server.PubCh.SendMessage([][]byte{[]byte("blkgrs"), []byte(blk2)})
|
||||
if err != nil {
|
||||
miner.Server.PubCh.Destroy()
|
||||
miner.Server.PubCh = nil
|
||||
logg.Info("[server]", zap.String("blk", err.Error()))
|
||||
} else {
|
||||
logg.Info("[server]", zap.String("blk", "sent"))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// server-->miner
|
||||
func grs_parse_miner_notify(miner *coin.MinerObj, msg msg.StratumJob) int {
|
||||
isJobChanged := miner.Job.Height != msg.Height
|
||||
extrannonce1 := miner.Job.Extranonce1
|
||||
miner.Job = msg
|
||||
if isJobChanged {
|
||||
miner.Job.IsClean = true
|
||||
}
|
||||
miner.Job.Extranonce1 = extrannonce1
|
||||
miner.Job.Extranonce2_size = msg.Extranonce2_size
|
||||
|
||||
//miner.Server.Logg.Info("[server]", zap.Int32("miner.Version", miner.Version), zap.Int32("msg.Version", msg.Version))
|
||||
return 1
|
||||
}
|
||||
|
||||
func Init(server *coin.ServerContext) {
|
||||
ServerGrsCtx.ServerCtx = server
|
||||
logg = server.Logg
|
||||
logg.Info("[server]", zap.String("server_grs_version", SERVER_GRS_VERSION))
|
||||
coin.Init_diff_db()
|
||||
}
|
||||
|
||||
func Start() {
|
||||
|
||||
}
|
||||
|
||||
func Stop() {
|
||||
coin.DiffStop()
|
||||
}
|
||||
|
||||
func InitMiner(miner *coin.MinerObj) {
|
||||
be1 := make([]byte, 4)
|
||||
binary.LittleEndian.PutUint32(be1, (uint32(miner.Server.Extranonce1) + 0x81000000))
|
||||
miner.Job.Extranonce1 = hex.EncodeToString(be1)
|
||||
//miner.NexaJob.Extranonce1 = miner.Job.Extranonce1
|
||||
miner.Server.Extranonce1++
|
||||
|
||||
target, err := utility.DiffToTarget(miner.Difficulty)
|
||||
if err != nil {
|
||||
logg.Error("[server]", zap.String("DiffToTarget", err.Error()))
|
||||
return
|
||||
}
|
||||
miner.Target = target
|
||||
logg.Debug("[target]", zap.String("target", hex.EncodeToString(target.Bytes())), zap.Float64("diff", miner.Difficulty))
|
||||
|
||||
server_target := new(big.Int)
|
||||
t_bytes, err := hex.DecodeString(miner.Job.Target)
|
||||
if err != nil {
|
||||
logg.Error("[server]", zap.String("DecodeString", err.Error()))
|
||||
return
|
||||
}
|
||||
//server_target.SetBytes(common.Reverse(t_bytes))
|
||||
server_target.SetBytes(t_bytes)
|
||||
miner.ServerTarget = server_target
|
||||
miner.ServerTargetS = miner.Server.SJob.Target
|
||||
}
|
||||
|
||||
func Handle_subscribe_grs(miner *coin.MinerObj, id float64, extranonce1 string) {
|
||||
stratum.Handle_subscribe(miner, id, extranonce1)
|
||||
}
|
||||
|
||||
func HandleMinerSubscribe(miner *coin.MinerObj, id float64, extranonce1 string, msg string) {
|
||||
if strings.Contains(msg, "YxMiner") {
|
||||
miner.Protocol = "yxminer"
|
||||
} else {
|
||||
miner.Protocol = "standard"
|
||||
}
|
||||
Handle_subscribe_grs(miner, id, extranonce1)
|
||||
}
|
||||
|
||||
func HandleMinerAuth(miner *coin.MinerObj) {
|
||||
|
||||
}
|
||||
|
||||
func HandleMinerSubmit(miner *coin.MinerObj, id float64, miner_user string, job_id string, nonce2 string, ntime string, nonce string) (bool, bool, bool) {
|
||||
|
||||
accept_ok, submit_ok, handle_ok := handle_submit(miner, id, miner_user, job_id, nonce2, ntime, nonce)
|
||||
return accept_ok, submit_ok, handle_ok
|
||||
}
|
||||
|
||||
func set_difficulty(miner *coin.MinerObj) {
|
||||
miner.TxLock.Lock()
|
||||
var msg stratum.Difficulty_msg
|
||||
msg.ID = nil
|
||||
msg.Method = "mining.set_difficulty"
|
||||
msg.Params[0] = miner.Difficulty * 256
|
||||
body, err := json.Marshal(msg)
|
||||
if err != nil {
|
||||
miner.Server.Logg.Error("[server]", zap.String("Marshal", err.Error()))
|
||||
miner.TxLock.Unlock()
|
||||
return
|
||||
}
|
||||
|
||||
var body_string = string(body) + "\n"
|
||||
err = stratum.Conn_tx(miner.Conn, []byte(body_string))
|
||||
if err != nil {
|
||||
//delete(miner.Server.Miners, miner.MinerId)
|
||||
//miner.Server.Miners.Delete(miner.MinerId)
|
||||
}
|
||||
//miner.Server.Logg.Debug("[server]", zap.String("tx", body_string))
|
||||
miner.TxLock.Unlock()
|
||||
|
||||
if miner.ZlogInit {
|
||||
miner.Zlog.Info().Msg(body_string)
|
||||
}
|
||||
}
|
||||
|
||||
func SetDifficulty(miner *coin.MinerObj) {
|
||||
set_difficulty(miner)
|
||||
}
|
||||
|
||||
func GrsNotify(miner *coin.MinerObj) {
|
||||
stratum.Notify(miner)
|
||||
}
|
||||
|
||||
func Notify(miner *coin.MinerObj) {
|
||||
GrsNotify(miner)
|
||||
}
|
||||
|
||||
func HandleJobMsg(server *coin.ServerContext, Msg []byte) {
|
||||
var result msg.StratumJob
|
||||
server.Logg.Warn("[server]", zap.String("receive", "job"))
|
||||
|
||||
if err := json.Unmarshal(Msg, &result); err != nil {
|
||||
server.Logg.Error("[server]", zap.String("Unmarshal", err.Error()))
|
||||
return
|
||||
}
|
||||
server.SJob = msg.StratumJob(result)
|
||||
logg.Debug("[gbt]", zap.String("Target", server.SJob.Target))
|
||||
|
||||
logg.Debug("[gbt]", zap.Uint32("Height", server.SJob.Height), zap.String("Target", server.SJob.Target) /*, zap.Uint64("Timastamp", server.GrsJob.CurTime)*/)
|
||||
targetb, _ := hex.DecodeString(server.SJob.Target)
|
||||
logg.Debug("[gbt]", zap.Float64("network diff", utility.Target2Diff(utility.Reverse(targetb))))
|
||||
|
||||
server.NetHight = uint64(server.SJob.Height)
|
||||
server.NetTarget = server.SJob.Target
|
||||
|
||||
server.Miners.Range(func(k, v interface{}) bool {
|
||||
m, ok := v.(*(coin.MinerObj))
|
||||
if ok {
|
||||
//server.Logg.Info("[server]", zap.String("lock", "start"))
|
||||
m.TxLock.Lock()
|
||||
status := m.Status
|
||||
cmd := grs_parse_miner_notify(m, server.SJob)
|
||||
m.TxLock.Unlock()
|
||||
//server.Logg.Info("[server]", zap.String("lock", "end"))
|
||||
var need_notify bool = true
|
||||
if time.Now().Sub(m.ConnSetupTime) >= time.Duration(coin.CONN_EXPIRED_TIME)*time.Second {
|
||||
if (status != coin.MINER_STATUS_RUNNING) && (status != coin.MINER_STATUS_AUTHORIZED) {
|
||||
//m.Conn.Close()
|
||||
need_notify = false
|
||||
}
|
||||
}
|
||||
if need_notify {
|
||||
switch cmd {
|
||||
case 0: //extranonce 1 and extranonce2 size
|
||||
//TODO
|
||||
case 1: //notify
|
||||
GrsNotify(m)
|
||||
}
|
||||
}
|
||||
}
|
||||
return true
|
||||
})
|
||||
}
|
||||
|
||||
func IsMhsLow(miner *coin.MinerObj) bool {
|
||||
return miner.Mhs5M < 1
|
||||
}
|
||||
|
||||
func GetBlockInterval() int {
|
||||
return 48
|
||||
}
|
|
@ -0,0 +1,66 @@
|
|||
// hash_grs.go
|
||||
package grs
|
||||
|
||||
/*
|
||||
#cgo CFLAGS : -I../include
|
||||
#cgo LDFLAGS: -L../lib -lx1x
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include "groestlcoin.h"
|
||||
*/
|
||||
import "C"
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
//"encoding/hex"
|
||||
"log"
|
||||
"unsafe"
|
||||
|
||||
"github.com/btcsuite/btcd/chaincfg/chainhash"
|
||||
"github.com/btcsuite/btcd/wire"
|
||||
)
|
||||
|
||||
// GRS
|
||||
func Build_GrsPowHash(h wire.BlockHeader) chainhash.Hash {
|
||||
outputs := make([]byte, 32)
|
||||
var powhash chainhash.Hash
|
||||
buf := bytes.NewBuffer(make([]byte, 0, wire.MaxBlockHeaderPayload))
|
||||
err := h.Serialize(buf)
|
||||
if err != nil {
|
||||
log.Println("[grs] powhash: Serialize error:", err)
|
||||
return powhash
|
||||
}
|
||||
//test_grs_pow := "0000002029c8da051a0f5282d35bbe97ddf4e587cc68175d6bd3c07c620e000000000000335d5efbac0f20cbf4a7c04676857b299b668623df39ac73522e7aa858c63480f8770767907b251ae0b26421"
|
||||
//test_grs_bytes, _ := hex.DecodeString(test_grs_pow)
|
||||
|
||||
//log.Println("[grs]in", hex.EncodeToString(buf.Bytes()))
|
||||
in := (*C.char)(C.CBytes(buf.Bytes()))
|
||||
//in := (*C.char)(C.CBytes(test_grs_bytes))
|
||||
defer C.free(unsafe.Pointer(in))
|
||||
|
||||
output := (*C.char)(C.malloc(32))
|
||||
if output == nil {
|
||||
log.Println("[grs] powhash: malloc failed")
|
||||
return powhash
|
||||
}
|
||||
defer C.free(unsafe.Pointer(output))
|
||||
|
||||
C.GroestlCoinHash(unsafe.Pointer(in), C.int(wire.MaxBlockHeaderPayload), unsafe.Pointer(output))
|
||||
//outputs := C.GoBytes((*C.uint8_t)((unsafe.Pointer)(output)), 32)
|
||||
/*p := uintptr(unsafe.Pointer(output))
|
||||
for i := 0; i < 32; i++ {
|
||||
j := *(*byte)(unsafe.Pointer(p))
|
||||
outputs[i] = j
|
||||
p += unsafe.Sizeof(j)
|
||||
}*/
|
||||
outputs = C.GoBytes(unsafe.Pointer(output), 32)
|
||||
//log.Println("[grs]out", outputs)
|
||||
|
||||
err = powhash.SetBytes(outputs)
|
||||
if err != nil {
|
||||
log.Println("[grs] powhash: SetBytes error:", err)
|
||||
return powhash
|
||||
}
|
||||
return powhash
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
#ifndef LYRA2RE_H
|
||||
#define LYRA2RE_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
void lyra2re2_hash_t14(const char* input, char* output);
|
||||
void lyra2re_hash(const char* input, char* output);
|
||||
void lyra2re2_hash(const char* input, char* output);
|
||||
void lyra2re2_hash_1(const char* input, char* output);
|
||||
|
||||
void lyra2re3_hash(const char* input, char* output);
|
||||
void lyra2re3_hash_1(const char* input, char* output);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
|
@ -0,0 +1,18 @@
|
|||
// alph.h
|
||||
|
||||
#ifndef BLAKE3_H
|
||||
#define BLAKE3_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stddef.h>
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
void alph_hash(unsigned char *output, const unsigned char *input);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif // BLAKE3_H
|
|
@ -0,0 +1,17 @@
|
|||
#ifndef Groestlcoinmodule_H__
|
||||
#define Groestlcoinmodule_H__
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"{
|
||||
#endif
|
||||
|
||||
#include <stddef.h>
|
||||
#include "sph_types.h"
|
||||
|
||||
void GroestlCoinHash(const void *input, int length, void *output);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
|
@ -0,0 +1,192 @@
|
|||
#ifndef _SINGULAR_DIAGONAL_MATRIX_H
|
||||
#define _SINGULAR_DIAGONAL_MATRIX_H
|
||||
|
||||
#include "singular.h"
|
||||
|
||||
|
||||
|
||||
//#define L(M,N) (M < N ? M : N)
|
||||
#define L(M,N) (M*N)
|
||||
#if 1
|
||||
|
||||
typedef struct class_DiagonalMatrix DiagonalMatrix_t;
|
||||
struct class_DiagonalMatrix {
|
||||
double *pBlock;
|
||||
|
||||
double (*operator)(struct class_DiagonalMatrix *p, int i, int j);
|
||||
void (*release)(struct class_DiagonalMatrix *p);
|
||||
};
|
||||
|
||||
#else
|
||||
#include <algorithm>
|
||||
#include <cassert>
|
||||
#include <cstring>
|
||||
|
||||
//namespace singular {
|
||||
|
||||
/**
|
||||
* Diagonal matrix.
|
||||
*/
|
||||
template < int M, int N >
|
||||
class DiagonalMatrix {
|
||||
public:
|
||||
enum {
|
||||
/** Number of diagonal elements. */
|
||||
L = M < N ? M : N
|
||||
};
|
||||
private:
|
||||
/**
|
||||
* Memory block for the diagonal elements.
|
||||
* The ith row and ith column is given by `elements[i]`.
|
||||
*/
|
||||
double* pBlock;
|
||||
public:
|
||||
/** Initializes a diagonal matrix filled with 0. */
|
||||
DiagonalMatrix() {
|
||||
this->pBlock = new double[L];
|
||||
std::fill(this->pBlock, this->pBlock + L, 0.0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Initializes a diagonal matrix with given diagonal values.
|
||||
*
|
||||
* The diagonal matrix will look like,
|
||||
* \f[
|
||||
* \begin{bmatrix}
|
||||
* \text{values[0]} & & \\
|
||||
* & \ddots & \\
|
||||
* & & \text{values[min(M, N)-1]}
|
||||
* \end{bmatrix}
|
||||
* \f]
|
||||
*
|
||||
* The behavior is undefined if `values` has less than `min(M, N)`
|
||||
* elements.
|
||||
*
|
||||
* @param values
|
||||
* Diagonal values of the matrix.
|
||||
*/
|
||||
explicit DiagonalMatrix(const double values[]) {
|
||||
this->pBlock = new double[L];
|
||||
memcpy(this->pBlock, values, sizeof(double) * L);
|
||||
}
|
||||
|
||||
/**
|
||||
* Steals the memory block from a given diagonal matrix.
|
||||
*
|
||||
* @param[in,out] copyee
|
||||
* Diagonal matrix from which the memory block is to be stolen.
|
||||
* No loger valid after this call.
|
||||
*/
|
||||
#if SINGULAR_RVALUE_REFERENCE_SUPPORTED
|
||||
DiagonalMatrix(DiagonalMatrix&& copyee) : pBlock(copyee.pBlock) {
|
||||
copyee.pBlock = nullptr;
|
||||
}
|
||||
#else
|
||||
DiagonalMatrix(const DiagonalMatrix& copyee) : pBlock(copyee.pBlock) {
|
||||
const_cast< DiagonalMatrix& >(copyee).pBlock = nullptr;
|
||||
}
|
||||
#endif
|
||||
|
||||
/** Releases the memory block of this diagonal matrix. */
|
||||
~DiagonalMatrix() {
|
||||
this->release();
|
||||
}
|
||||
|
||||
/**
|
||||
* Steals the memory block from a given diagonal matrix.
|
||||
*
|
||||
* @param[in,out] copyee
|
||||
* Diagonal matrix from which the memory block is to be stolen.
|
||||
* No longer valid after this call.
|
||||
* @return
|
||||
* Reference to this diagonal matrix.
|
||||
*/
|
||||
#if SINGULAR_RVALUE_REFERENCE_SUPPORTED
|
||||
DiagonalMatrix& operator =(DiagonalMatrix&& copyee) {
|
||||
#else
|
||||
DiagonalMatrix& operator =(const DiagonalMatrix& copyee) {
|
||||
#endif
|
||||
this->release();
|
||||
this->pBlock = copyee.pBlock;
|
||||
#if SINGULAR_RVALUE_REFERENCE_SUPPORTED
|
||||
copyee.pBlock = nullptr;
|
||||
#else
|
||||
const_cast< DiagonalMatrix& >(copyee).pBlock = nullptr;
|
||||
#endif
|
||||
return *this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a clone of this matrix.
|
||||
*
|
||||
* @return
|
||||
* Clone of this matrix.
|
||||
*/
|
||||
inline DiagonalMatrix clone() const {
|
||||
return DiagonalMatrix(this->pBlock);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the element at a given row and column.
|
||||
*
|
||||
* The behavior is undefined,
|
||||
* - if `i < 0` or `i >= M`,
|
||||
* - or if `j < 0` or `j >= N`
|
||||
*
|
||||
* @param i
|
||||
* Index of the row to be obtained.
|
||||
* @param j
|
||||
* Index of the column to be obtained.
|
||||
* @return
|
||||
* Element at the ith row and jth column.
|
||||
* 0 if `i != j`.
|
||||
*/
|
||||
double operator ()(int i, int j) const {
|
||||
assert(i >= 0 && i < M);
|
||||
assert(j >= 0 && j < N);
|
||||
if (i == j) {
|
||||
return this->pBlock[i];
|
||||
} else {
|
||||
return 0.0;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Transposes this matrix.
|
||||
*
|
||||
* @return
|
||||
* Transposed matrix.
|
||||
*/
|
||||
DiagonalMatrix< N, M > transpose() const {
|
||||
return DiagonalMatrix< N, M >(this->pBlock);
|
||||
}
|
||||
private:
|
||||
#if SINGULAR_FUNCTION_DELETION_SUPPORTED
|
||||
/** Copy constructor is not allowed. */
|
||||
DiagonalMatrix(const DiagonalMatrix& copyee) = delete;
|
||||
|
||||
/** Copy assignment is not allowed. */
|
||||
DiagonalMatrix& operator =(const DiagonalMatrix& copyee) = delete;
|
||||
#elif SINGULAR_RVALUE_REFERENCE_SUPPORTED
|
||||
/** Copy constructor is not allowed. */
|
||||
DiagonalMatrix(const DiagonalMatrix& copyee) {}
|
||||
|
||||
/** Copy assignment is not allowed. */
|
||||
DiagonalMatrix& operator =(const DiagonalMatrix& copyee) {
|
||||
return *this;
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Releases the memory block of this matrix.
|
||||
* Has no effect if the memory block has already been released.
|
||||
*/
|
||||
inline void release() {
|
||||
delete[] this->pBlock;
|
||||
this->pBlock = nullptr;
|
||||
}
|
||||
};
|
||||
|
||||
//}
|
||||
#endif
|
||||
#endif
|
|
@ -0,0 +1,14 @@
|
|||
SRCS = heavyhash.c obtc.c sha3.c
|
||||
|
||||
OBJS = $(SRCS:.c=.o)
|
||||
CC = gcc
|
||||
CCFLAGS = -Wall
|
||||
|
||||
libkas.a:$(OBJS)
|
||||
ar -rv libkas.a $(OBJS)
|
||||
|
||||
%.o:%.c
|
||||
$(CC) $(CCFLAGS) -c $< -o $@
|
||||
|
||||
clean:
|
||||
rm -rf *.o *.a
|
|
@ -0,0 +1,25 @@
|
|||
#ifndef _SINGULAR_MATRIX_H
|
||||
#define _SINGULAR_MATRIX_H
|
||||
|
||||
#include "singular.h"
|
||||
#include "Vector.h"
|
||||
|
||||
//#include <algorithm>
|
||||
//#include <cstring>
|
||||
//#include <iostream>
|
||||
|
||||
|
||||
typedef struct class_Matrix Matrix_t;
|
||||
struct class_Matrix {
|
||||
double* pBlock;
|
||||
|
||||
Matrix_t (*clone)(struct class_Matrix *p);
|
||||
void (*filledwith)(struct class_Matrix *p,const double values[]);
|
||||
double (*operator)(struct class_Matrix *p, int i, int j);
|
||||
Vector_t (*row)(struct class_Matrix *p, int i);
|
||||
Vector_t (*column)(struct class_Matrix *p, int j);
|
||||
void (*release)(struct class_Matrix *p);
|
||||
};
|
||||
|
||||
|
||||
#endif
|
|
@ -0,0 +1,19 @@
|
|||
#ifndef _SINGULAR_REFLECTOR_H
|
||||
#define _SINGULAR_REFLECTOR_H
|
||||
|
||||
#include "Matrix.h"
|
||||
#include "singular.h"
|
||||
|
||||
|
||||
|
||||
typedef struct class_Reflector Reflector_t;
|
||||
struct class_Reflector {
|
||||
Vector_t u;
|
||||
double gamma;
|
||||
size_t L;
|
||||
|
||||
double* ptr;
|
||||
};
|
||||
|
||||
|
||||
#endif
|
|
@ -0,0 +1,17 @@
|
|||
#ifndef _SINGULAR_ROTATOR_H
|
||||
#define _SINGULAR_ROTATOR_H
|
||||
|
||||
#include "Matrix.h"
|
||||
#include "singular.h"
|
||||
|
||||
|
||||
typedef struct class_Rotator Rotator_t;
|
||||
struct class_Rotator {
|
||||
double elements[4];
|
||||
double (*operator)(struct class_Rotator *p, int i, int j);
|
||||
void (*applyFromLeftTo)(struct class_Rotator *p, Matrix_t rhs, int k);
|
||||
void (*applyFromRightTo)(struct class_Rotator *p, Matrix_t rhs, int k);
|
||||
};
|
||||
|
||||
|
||||
#endif
|
|
@ -0,0 +1,45 @@
|
|||
#ifndef _SINGULAR_SVD_H
|
||||
#define _SINGULAR_SVD_H
|
||||
|
||||
#include "DiagonalMatrix.h"
|
||||
#include "Matrix.h"
|
||||
#include "Reflector.h"
|
||||
#include "Rotator.h"
|
||||
//#include "singular.h"
|
||||
|
||||
//#include <algorithm>
|
||||
//#include <cassert>
|
||||
//#include <tuple>
|
||||
|
||||
typedef struct Svd Svd_t;
|
||||
struct Svd {
|
||||
//USV decomposeUSV(const Matrix< M, N >& m)
|
||||
bool (*isFullRank)(Svd_t *p, DiagonalMatrix_t singularValues, const int size);
|
||||
};
|
||||
|
||||
typedef struct class_BidiagonalMatrix BidiagonalMatrix_t;
|
||||
struct class_BidiagonalMatrix {
|
||||
double* pBlock;
|
||||
double (*operator)(struct class_BidiagonalMatrix *p, int i, int j);
|
||||
double (*applyFirstRotatorFromRight)(struct class_BidiagonalMatrix *p, Rotator_t *r);
|
||||
double (*applyRotatorFromRight)(struct class_BidiagonalMatrix *p, Rotator_t *r, int n, double bulge);
|
||||
double (*applyRotatorFromLeft)(struct class_BidiagonalMatrix *p, Rotator_t *r, int n, double bulge);
|
||||
BidiagonalMatrix_t (*bidiagonalize)(struct class_BidiagonalMatrix *p, Matrix_t m);
|
||||
void (*doFrancis)(struct class_BidiagonalMatrix *m,int n);
|
||||
double (*calculateShift)(struct class_BidiagonalMatrix *m, int n);
|
||||
void (*releases)(struct class_BidiagonalMatrix *p);
|
||||
};
|
||||
|
||||
void BidiagonalMatrix_doFrancis(BidiagonalMatrix_t *m, int n);
|
||||
double BidiagonalMatrix_calculateShift(BidiagonalMatrix_t *m, int n);
|
||||
double BidiagonalMatrix_applyRotatorFromLeft(BidiagonalMatrix_t *ptr, Rotator_t *r, int n, double bulge);
|
||||
double BidiagonalMatrix_applyRotatorFromRight(BidiagonalMatrix_t *ptr, Rotator_t *r, int n, double bulge);
|
||||
double BidiagonalMatrix_applyFirstRotatorFromRight(BidiagonalMatrix_t *p, Rotator_t *r);
|
||||
double BidiagonalMatrix_operator(BidiagonalMatrix_t *p, int i, int j);
|
||||
void BidiagonalMatrix_release(BidiagonalMatrix_t *p);
|
||||
void BidiagonalMatrix_init(BidiagonalMatrix_t *p, Matrix_t *m);
|
||||
void BidiagonalMatrix_def(BidiagonalMatrix_t *p);
|
||||
BidiagonalMatrix_t BidiagonalMatrix_bidiagonalize(BidiagonalMatrix_t *p, Matrix_t m);
|
||||
|
||||
|
||||
#endif
|
|
@ -0,0 +1,22 @@
|
|||
#ifndef _SINGULAR_VECTOR_H
|
||||
#define _SINGULAR_VECTOR_H
|
||||
|
||||
|
||||
#include <stddef.h>
|
||||
#include "singular.h"
|
||||
|
||||
|
||||
typedef struct class_Vector Vector_t;
|
||||
struct class_Vector {
|
||||
double* pBlock;
|
||||
size_t len;
|
||||
ptrdiff_t delta;
|
||||
|
||||
double* ptr;
|
||||
void (*move)(struct class_Vector *p, ptrdiff_t delta);
|
||||
double (*operator)(struct class_Vector *p, size_t idx);
|
||||
Vector_t (*slice)(struct class_Vector *p, size_t start);
|
||||
};
|
||||
|
||||
|
||||
#endif
|
|
@ -0,0 +1,150 @@
|
|||
#include "sha3.h"
|
||||
#include "obtc.h"
|
||||
|
||||
|
||||
|
||||
|
||||
void CSHA3_256_Write(CSHA3_256 *p, const unsigned char* data, size_t len) {
|
||||
sha3_update(&p->context, data, len);
|
||||
//return *this;
|
||||
}
|
||||
|
||||
void CSHA3_256_Finalize(CSHA3_256 *p, unsigned char hash[OUTPUT_SIZE]) {
|
||||
sha3_final(hash, &p->context);
|
||||
}
|
||||
|
||||
/*void CSHA3_256_Reset(Obtc_t *Obtc, CSHA3_256 *p) {
|
||||
sha3_init(Obtc,&p->context, OUTPUT_SIZE);
|
||||
//return *this;
|
||||
}*/
|
||||
|
||||
void CSHA3_256_init(Obtc_t *Obtc, CSHA3_256 *p) {
|
||||
|
||||
sha3_init(Obtc, &p->context, OUTPUT_SIZE);
|
||||
|
||||
p->Write = CSHA3_256_Write;
|
||||
p->Finalize = CSHA3_256_Finalize;
|
||||
//p->Reset = CSHA3_256_Reset;
|
||||
}
|
||||
|
||||
void CSHA3_256_CSHA3_256(Obtc_t *Obtc,CSHA3_256 *p) {
|
||||
sha3_init(Obtc,&p->context, OUTPUT_SIZE);
|
||||
|
||||
}
|
||||
|
||||
|
||||
void CHeavyHash_Write(CHeavyHash *p, const unsigned char* data, size_t len) {
|
||||
p->hasher.Write(&p->hasher,data, len);
|
||||
//sha3_update(&CSHA3_256_p.context, data, len);
|
||||
//CSHA3_256_Write(&CSHA3_256_p, data, OUTPUT_SIZE);
|
||||
}
|
||||
|
||||
void CHeavyHash_Finalize(Obtc_t *Obtc, CHeavyHash *p, unsigned char hash[OUTPUT_SIZE]) {
|
||||
uint256 hash_first;
|
||||
uint8_t a[32];
|
||||
|
||||
p->hasher.Finalize(&p->hasher,&Obtc->g_hash_first.bb.data[0]);
|
||||
memcpy(a,&Obtc->g_hash_first.bb.data[0],32);
|
||||
|
||||
uint256 product = MultiplyUsing4bitPrecision(p->matrix, Obtc->g_hash_first);
|
||||
|
||||
uint256 hash_xored;
|
||||
for (size_t i = 0; i < OUTPUT_SIZE; ++i) {
|
||||
//hash_xored.begin()[i] = hash_first.begin()[i] ^ product.begin()[i];
|
||||
hash_xored.bb.data[i] = Obtc->g_hash_first.bb.data[i] ^ product.bb.data[i];
|
||||
|
||||
|
||||
}
|
||||
|
||||
uint8_t temp[200]={
|
||||
0x16,0x19,0x32,0x7d,0x10,0xb9,0xda,0x35,0x54,0x9a,0xe0,0x31,0x2f,0x9f,0xc6,0x15,0x92,0xbb,0x39,0x9d,
|
||||
0xb5,0x29,0x0c,0x0a,0x47,0xc3,0x9f,0x67,0x51,0x12,0xc2,0x2e,0xc7,0x76,0xc5,0x04,0x84,0x81,0xb9,0x57,
|
||||
0xb9,0x92,0xf2,0xd3,0x7b,0x34,0xca,0x58,0xea,0x8f,0xdb,0x80,0xba,0xc4,0x6d,0x39,0x7e,0x8f,0x1d,0xb1,
|
||||
0x77,0x65,0xcc,0x07,0x87,0xe9,0x61,0xb0,0x36,0xbc,0x94,0x16,0x77,0x4c,0x86,0x83,0x54,0x34,0xf2,0xb0,
|
||||
0x4e,0xf7,0x4b,0x3a,0x99,0xcd,0xb0,0x44,0x2e,0xc6,0x5b,0xd3,0x56,0x24,0x93,0xe4,0x6c,0x6b,0x7d,0x01,
|
||||
0xa7,0x69,0xcc,0x3d,0xd3,0x1f,0x4c,0xc3,0x54,0xc1,0x8c,0x3f,0xf4,0x31,0xc0,0x5d,0xd0,0xa9,0xa2,0x26,
|
||||
0xa0,0xbc,0xaa,0x9f,0x79,0x2a,0x3d,0x0c,0x80,0x39,0xf9,0xa6,0x0d,0xcf,0x6a,0x48,0x5e,0x21,0x90,0x40,
|
||||
0x25,0x0f,0xc4,0x62,0xc1,0x00,0xff,0x2a,0x93,0x89,0x35,0xba,0x72,0xc7,0xd8,0x2e,0x14,0xf3,0x40,0x69,
|
||||
0xe7,0x20,0xe0,0xdf,0x44,0xee,0xce,0xde,0x11,0xa7,0x5f,0x4c,0x80,0x05,0x64,0x98,0x7a,0x14,0xff,0x48,
|
||||
0x16,0xc7,0xf8,0xee,0x79,0x62,0x9b,0x0e,0x2f,0x9f,0x42,0x16,0x3a,0xd7,0x4c,0x52,0xb2,0x24,0x85,0x09,
|
||||
};
|
||||
for(int i = 0 ;i< 200 ;i++)Obtc->const_data[i] = temp[i];
|
||||
|
||||
// CSHA3_256().Write(hash_xored.begin(), OUTPUT_SIZE).Finalize(hash);
|
||||
|
||||
CSHA3_256_CSHA3_256(Obtc, &p->hasher);
|
||||
CSHA3_256_Write(&p->hasher, &hash_xored.bb.data[0], OUTPUT_SIZE);
|
||||
CSHA3_256_Finalize(&p->hasher, hash) ;
|
||||
}
|
||||
|
||||
void CHeavyHash_Reset(CHeavyHash *p, uint64_t matrix_[64*64]) {
|
||||
for (int i = 0; i < 64*64; ++i)
|
||||
p->matrix[i] = matrix_[i];
|
||||
}
|
||||
|
||||
void CHeavyHash_init(Obtc_t *Obtc, CHeavyHash *p, uint64_t matrix_[64*64]){
|
||||
|
||||
p->Write = CHeavyHash_Write;
|
||||
p->Finalize = CHeavyHash_Finalize;
|
||||
p->Reset = CHeavyHash_Reset;
|
||||
|
||||
p->hasher.Write = CSHA3_256_Write;
|
||||
p->hasher.Finalize = CSHA3_256_Finalize;
|
||||
//p->hasher.Reset = CSHA3_256_Reset;
|
||||
|
||||
sha3_init(Obtc, &p->hasher.context, OUTPUT_SIZE);
|
||||
|
||||
for (int i = 0; i < 64*64; ++i)
|
||||
p->matrix[i] = matrix_[i];
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void MultiplyMatrices(uint64_t matrix[64*64], uint64_t vector[64], uint64_t product[64]){
|
||||
for (int i = 0; i < 64; ++i) {
|
||||
for (int j = 0; j < 64; ++j) {
|
||||
product[i] += matrix[64*i + j]*vector[j];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
uint256 MultiplyUsing4bitPrecision(uint64_t matrix[64*64], const uint256 hash) {
|
||||
// conversion to matrix with 4 bit values
|
||||
uint64_t vector[64] = {0};
|
||||
ConvertTo4BitPrecisionVector(hash, vector);
|
||||
|
||||
// perform matrix multiplication
|
||||
uint64_t product[64] = {0};
|
||||
MultiplyMatrices(matrix, vector, product);
|
||||
for (int i = 0; i < 64; ++i) {
|
||||
product[i] >>= 10;
|
||||
}
|
||||
return Convert4bitVectorToUint(product);
|
||||
}
|
||||
|
||||
void ConvertTo4BitPrecisionVector(uint256 bit_sequence, uint64_t vector[64]) {
|
||||
int index = 0;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < WIDTH; i++) {
|
||||
|
||||
vector[index] = bit_sequence.bb.data[i] >> 4;
|
||||
vector[index+1] = bit_sequence.bb.data[i] & 0xF;
|
||||
index += 2;
|
||||
}
|
||||
}
|
||||
|
||||
uint256 Convert4bitVectorToUint(const uint64_t x[64]) {
|
||||
uint256 bit_sequence;
|
||||
int index = 0;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < WIDTH; i++) {
|
||||
bit_sequence.bb.data[i] = ( x[index] << 4) | x[index+1];
|
||||
index += 2;
|
||||
}
|
||||
|
||||
return bit_sequence;
|
||||
}
|
|
@ -0,0 +1,98 @@
|
|||
#ifndef OPOW_CRYPTO_HEAVYHASH_H
|
||||
#define OPOW_CRYPTO_HEAVYHASH_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdlib.h>
|
||||
#include "sha3.h"
|
||||
|
||||
//#include <memory>
|
||||
//#include "obtc.h"
|
||||
|
||||
|
||||
#define OUTPUT_SIZE 32
|
||||
|
||||
typedef struct class_CSHA3_256 CSHA3_256;
|
||||
|
||||
struct class_CSHA3_256
|
||||
{
|
||||
sha3_ctx_t context;
|
||||
|
||||
// static const size_t OUTPUT_SIZE = 32;
|
||||
|
||||
//CSHA3_256& Write(const unsigned char* data, size_t len);
|
||||
void (*Write)(struct class_CSHA3_256 *p, const unsigned char* data, size_t len);
|
||||
void (*Finalize)(struct class_CSHA3_256 *p, unsigned char hash[OUTPUT_SIZE]);
|
||||
//CSHA3_256& Reset();
|
||||
};
|
||||
|
||||
|
||||
typedef struct class_CHeavyHash CHeavyHash;
|
||||
struct class_CHeavyHash
|
||||
{
|
||||
|
||||
uint64_t matrix[64*64];
|
||||
CSHA3_256 hasher;
|
||||
|
||||
//static const size_t OUTPUT_SIZE = 32;
|
||||
//explicit CHeavyHash(uint64_t matrix_[64*64]);
|
||||
//CHeavyHash& Reset(uint64_t matrix_[64*64]);
|
||||
//CHeavyHash& Write(const unsigned char* data, size_t len);
|
||||
//void Finalize(unsigned char hash[OUTPUT_SIZE]);
|
||||
void (*Reset)(struct class_CHeavyHash *p, uint64_t matrix_[64*64]);
|
||||
void (*Write)(struct class_CHeavyHash *p, const unsigned char* data, size_t len);
|
||||
void (*Finalize)(struct class_CHeavyHash *p, unsigned char hash[OUTPUT_SIZE]);
|
||||
};
|
||||
|
||||
#if 0
|
||||
/** A hasher class for SHA3-256. */
|
||||
class CSHA3_256
|
||||
{
|
||||
private:
|
||||
sha3_ctx_t context;
|
||||
|
||||
public:
|
||||
static const size_t OUTPUT_SIZE = 32;
|
||||
|
||||
CSHA3_256();
|
||||
CSHA3_256& Write(const unsigned char* data, size_t len);
|
||||
void Finalize(unsigned char hash[OUTPUT_SIZE]);
|
||||
CSHA3_256& Reset();
|
||||
};
|
||||
|
||||
class CHeavyHash
|
||||
{
|
||||
private:
|
||||
uint64_t matrix[64*64];
|
||||
CSHA3_256 hasher;
|
||||
|
||||
public:
|
||||
static const size_t OUTPUT_SIZE = 32;
|
||||
explicit CHeavyHash(uint64_t matrix_[64*64]);
|
||||
CHeavyHash& Reset(uint64_t matrix_[64*64]);
|
||||
CHeavyHash& Write(const unsigned char* data, size_t len);
|
||||
void Finalize(unsigned char hash[OUTPUT_SIZE]);
|
||||
};
|
||||
#endif
|
||||
uint256 MultiplyUsing4bitPrecision(uint64_t matrix[64*64], const uint256 hash);
|
||||
|
||||
void ConvertTo4BitPrecisionVector(uint256 bit_sequence, uint64_t vector[64]);
|
||||
|
||||
uint256 Convert4bitVectorToUint(const uint64_t x[64]);
|
||||
|
||||
|
||||
//zzj add
|
||||
/*extern void CSHA3_256_init(struct Obtc_opt *Obtc, CSHA3_256 *p);
|
||||
void CSHA3_256_CSHA3_256(struct Obtc_opt *Obtc, CSHA3_256 *p);
|
||||
|
||||
void CSHA3_256_Write(CSHA3_256 *p, const unsigned char* data, size_t len);
|
||||
|
||||
void CSHA3_256_Finalize(CSHA3_256 *p, unsigned char hash[OUTPUT_SIZE]);
|
||||
//
|
||||
|
||||
void CHeavyHash_init(struct Obtc_opt *Obtc, CHeavyHash *p, uint64_t matrix_[64*64]);
|
||||
void CHeavyHash_Write(CHeavyHash *p, const unsigned char* data, size_t len);
|
||||
|
||||
void CHeavyHash_Finalize(struct Obtc_opt *Obtc, CHeavyHash *p, unsigned char hash[OUTPUT_SIZE]);
|
||||
*/
|
||||
|
||||
#endif // OPOW_CRYPTO_HEAVYHASH_H
|
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,907 @@
|
|||
//! heavyhash extracted from optical bitcoin
|
||||
//! 2022 barrystyle
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdlib.h>
|
||||
#include <math.h>
|
||||
#include <search.h>//qsort
|
||||
#include<time.h>
|
||||
|
||||
#include "obtc.h"
|
||||
|
||||
|
||||
#define M 64
|
||||
#define N 64
|
||||
|
||||
bool Is4BitPrecision(const uint64_t matrix[64*64])
|
||||
{
|
||||
for (int i = 0; i < 64; ++i) {
|
||||
for (int j = 0; j < 64; ++j) {
|
||||
if (matrix[ i*64 + j] > 0xF)
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
double DiagonalMatrix_operator(DiagonalMatrix_t *p, int i, int j)
|
||||
{
|
||||
assert(i >= 0 && i < 64);
|
||||
assert(j >= 0 && j < 64);
|
||||
if (i == j) {
|
||||
return p->pBlock[i];
|
||||
} else {
|
||||
return 0.0;
|
||||
}
|
||||
}
|
||||
|
||||
void DiagonalMatrix_release(DiagonalMatrix_t *p)
|
||||
{
|
||||
if (p->pBlock != NULL){
|
||||
free(p->pBlock);
|
||||
p->pBlock = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
void DiagonalMatrix_init(DiagonalMatrix_t *p, const double values[])
|
||||
{
|
||||
p->pBlock = (double *)malloc(sizeof(double)*M);
|
||||
//memset(pBlock, 0.0, sizeof(double)*L(64,64));
|
||||
memcpy(p->pBlock, values, sizeof(double) * M);
|
||||
|
||||
p->operator = DiagonalMatrix_operator;
|
||||
p->release = DiagonalMatrix_release;
|
||||
|
||||
}
|
||||
|
||||
void DiagonalMatrix_DiagonalMatrix(DiagonalMatrix_t *p)
|
||||
{
|
||||
p->operator = DiagonalMatrix_operator;
|
||||
p->release = DiagonalMatrix_release;
|
||||
}
|
||||
|
||||
//-----------------------------vector-------------------------------//
|
||||
|
||||
void vector_move(Vector_t *p, ptrdiff_t delta) {
|
||||
p->ptr += delta;
|
||||
}
|
||||
|
||||
Vector_t vector_slice(Vector_t v, size_t start) {
|
||||
//assert(start >= 0 && start <= p->len);
|
||||
Vector_t v_tmp;
|
||||
v_tmp.pBlock = v.pBlock + start * v.delta;
|
||||
v_tmp.len = v.len - start;
|
||||
v_tmp.delta = v.delta;
|
||||
return v_tmp;
|
||||
}
|
||||
|
||||
double Vector_column_operator(Vector_t *p, size_t idx){
|
||||
return p->pBlock[idx * p->delta];
|
||||
}
|
||||
|
||||
double Vector_row_operator(Vector_t *p, size_t idx){
|
||||
return p->pBlock[idx * p->delta];
|
||||
}
|
||||
|
||||
void Vector_sync(Matrix_t *p, size_t idx, Vector_t vec, int offset){
|
||||
for(int i = 0; i < vec.len; i++){
|
||||
p->pBlock[idx+(offset+i)*N] = vec.pBlock[i];
|
||||
}
|
||||
}
|
||||
|
||||
void Vector_row_sync(Matrix_t *p, size_t idx, Vector_t vec, int offset){
|
||||
for(int i = 0; i < vec.len; i++){
|
||||
p->pBlock[offset+idx*N+i] = vec.pBlock[i];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------Martrix-------------------------------//
|
||||
Matrix_t Matrix_clone(Matrix_t *p)
|
||||
{
|
||||
Matrix_t m;
|
||||
|
||||
m.pBlock = (double *)malloc(sizeof(double)*L(64,64));
|
||||
memcpy(m.pBlock, p->pBlock, sizeof(double)*L(64,64));
|
||||
|
||||
return m;
|
||||
}
|
||||
|
||||
void Matrix_filledwith(Matrix_t *p, const double values[])
|
||||
{
|
||||
//p->pBlock = (double *)malloc(sizeof(double)*L(64,64));
|
||||
//memset(pBlock, 0.0, sizeof(double)*L(64,64));
|
||||
memcpy(p->pBlock, values, sizeof(double) * L(64,64));
|
||||
}
|
||||
|
||||
double Matrix_operator(Matrix_t *p, int i, int j)
|
||||
{
|
||||
assert(i >= 0 && i < N);
|
||||
assert(j >= 0 && j < N);
|
||||
|
||||
return p->pBlock[i*N+j];
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
Vector_t Matrix_row(Matrix_t *p, int i)
|
||||
{
|
||||
Vector_t vec_tmp;
|
||||
vec_tmp.len = N;
|
||||
vec_tmp.delta = 1;
|
||||
vec_tmp.pBlock = p->pBlock + i*N;
|
||||
//return Vector< const double >(this->pBlock + i * N, N, 1);
|
||||
return vec_tmp;
|
||||
|
||||
}
|
||||
|
||||
Vector_t Matrix_column(Matrix_t *p, int j)
|
||||
{
|
||||
Vector_t vec_tmp;
|
||||
vec_tmp.len = M;
|
||||
vec_tmp.delta = N;
|
||||
vec_tmp.pBlock = p->pBlock + j;
|
||||
|
||||
return vec_tmp;
|
||||
//return Vector< double >(this->pBlock + j, M, N);
|
||||
|
||||
}
|
||||
|
||||
void Matrix_release(Matrix_t *p)
|
||||
{
|
||||
if (p->pBlock != NULL){
|
||||
free(p->pBlock);
|
||||
p->pBlock = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
void Matrix_init(Matrix_t *p)
|
||||
{
|
||||
p->pBlock = (double *)malloc(sizeof(double)*L(64,64));
|
||||
memset(p->pBlock, 0.0, sizeof(double)*L(64,64));
|
||||
//memcpy(p->pBlock, values, sizeof(double) * L(64,64));
|
||||
}
|
||||
|
||||
void Matrix_def(Matrix_t *p)
|
||||
{
|
||||
//p->clone = Matrix_clone;
|
||||
p->filledwith = Matrix_filledwith;
|
||||
p->operator = Matrix_operator;
|
||||
p->row = Matrix_row;
|
||||
p->column = Matrix_column;
|
||||
p->release = Matrix_release;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------------------Rotator-------------------------------//
|
||||
|
||||
double max(double a, double b)
|
||||
{
|
||||
return a > b ? a : b;
|
||||
}
|
||||
|
||||
double Rotator_operator(Rotator_t *p, int i, int j){
|
||||
assert(0 <= i && i < 2);
|
||||
assert(0 <= j && j < 2);
|
||||
return p->elements[i * 2 + j];
|
||||
}
|
||||
|
||||
void Rotator_init(Rotator_t *p, double x1, double x2)
|
||||
{
|
||||
// normalizes by the maximum magnitude
|
||||
// to avoid harmful underflow and overflow
|
||||
double mx = max(fabs(x1), fabs(x2));
|
||||
|
||||
x1 /= mx;
|
||||
x2 /= mx;
|
||||
double norm = sqrt(x1 * x1 + x2 * x2);
|
||||
double cs = x1 / norm;
|
||||
double sn = x2 / norm;
|
||||
p->elements[0] = cs;
|
||||
p->elements[1] = -sn;
|
||||
p->elements[2] = sn;
|
||||
p->elements[3] = cs;
|
||||
|
||||
p->operator = Rotator_operator;
|
||||
}
|
||||
|
||||
//-----------------------------Reflector-------------------------------//
|
||||
|
||||
|
||||
void Reflector_transform(Reflector_t *p, double u0, size_t len){
|
||||
int i;
|
||||
for (i = 0; i < len; i++){
|
||||
p->u.pBlock[i] = p->u.pBlock[i] /u0;
|
||||
}
|
||||
}
|
||||
|
||||
void Reflector_transform_left(Reflector_t *src1, Vector_t src2, Vector_t dst, double gUM, size_t len){
|
||||
int i;
|
||||
for (i = 0; i < len; i++){
|
||||
dst.pBlock[i] = src2.pBlock[i] - src1->u.pBlock[i] * gUM;
|
||||
}
|
||||
}
|
||||
|
||||
void Reflector_transform_right(Reflector_t *src1, Vector_t src2, Vector_t dst, double gMU, size_t len){
|
||||
int i;
|
||||
for (i = 0; i < len; i++){
|
||||
dst.pBlock[i] = src2.pBlock[i] - gMU * src1->u.pBlock[i];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
void Reflector_init(Reflector_t *p, Vector_t v) {
|
||||
//assert(v.size() > 0 && v.size() <= L);
|
||||
//const size_t N = v.size();
|
||||
//const size_t p->L = sizeof(v)/sizeof(double);
|
||||
p->L = v.len;
|
||||
|
||||
p->u.pBlock = (double *)malloc(sizeof(double)*v.len);
|
||||
memcpy(p->u.pBlock, v.pBlock, sizeof(double)*v.len);
|
||||
|
||||
// normalizes elements by the maximum amplitude
|
||||
// to avoid harmful underflow and overflow
|
||||
|
||||
double mx = 0.0;
|
||||
|
||||
for (size_t i = 0; i < p->L; ++i) {
|
||||
mx = max(fabs(p->u.pBlock[i]), mx);
|
||||
}
|
||||
|
||||
if (mx > 0.0) {
|
||||
// calculates the normalized norm
|
||||
double tau = 0.0;
|
||||
for (size_t i = 0; i < p->L; ++i) {
|
||||
double x = p->u.pBlock[i] / mx;
|
||||
p->u.pBlock[i] = x;
|
||||
tau += x * x;
|
||||
}
|
||||
tau = sqrt(tau);
|
||||
// tau's sign should be the same as the first element in `u`
|
||||
if (p->u.pBlock[0] < 0.0) {
|
||||
tau = -tau;
|
||||
}
|
||||
double u0 = p->u.pBlock[0] + tau;
|
||||
p->u.pBlock[0] = u0;
|
||||
Reflector_transform(p, u0, p->L);
|
||||
|
||||
p->gamma = u0 / tau;
|
||||
} else {
|
||||
// v is a zero vector
|
||||
p->gamma = 0.0;
|
||||
memset(p->u.pBlock, 0.0, p->L);
|
||||
}
|
||||
}
|
||||
|
||||
void Reflector_release(Reflector_t *p){
|
||||
if (p->u.pBlock != NULL){
|
||||
free(p->u.pBlock);
|
||||
p->u.pBlock = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
double inner_product(double *a,double *b,int n){
|
||||
int i;
|
||||
double sum = 0.0;
|
||||
|
||||
for(i = 0; i < n; i++)
|
||||
{
|
||||
sum += (*(a+i))*(*(b+i));
|
||||
}
|
||||
return sum;
|
||||
}
|
||||
|
||||
Matrix_t Reflector_applyFromLeftTo(Reflector_t *p, Matrix_t m){
|
||||
// H * m = m - gamma * u * u^T * m
|
||||
Matrix_t m2 = Matrix_clone(&m);//m->clone(m);
|
||||
Vector_t vec_m;
|
||||
Vector_t vec_m2;
|
||||
|
||||
int offset = N - p->L;
|
||||
for (int i = 0; i < N; ++i) {
|
||||
// caches gamma * u^T * m
|
||||
vec_m = Matrix_column(&m, i);
|
||||
|
||||
Vector_t srcColumn = vector_slice(vec_m, offset);
|
||||
double v_src_column[srcColumn.len];
|
||||
|
||||
for(size_t i = 0; i < srcColumn.len; i++){
|
||||
v_src_column[i] = Vector_column_operator(&srcColumn, i);
|
||||
}
|
||||
srcColumn.pBlock = v_src_column;
|
||||
|
||||
double gUM = inner_product(p->u.pBlock, srcColumn.pBlock, p->L);
|
||||
//Vector< const double > srcColumn = m->column(m, i).slice(offset);
|
||||
|
||||
gUM *= p->gamma;
|
||||
// H * m = m - u * gUM
|
||||
vec_m2 = Matrix_column(&m2, i);
|
||||
Vector_t dstColumn = vector_slice(vec_m2, offset);
|
||||
double v_dstcolumn[dstColumn.len];
|
||||
|
||||
for(size_t i = 0; i < dstColumn.len; i++){
|
||||
v_dstcolumn[i] = Vector_column_operator(&dstColumn, i);
|
||||
}
|
||||
dstColumn.pBlock = v_dstcolumn;
|
||||
|
||||
Reflector_transform_left(p, srcColumn, dstColumn, gUM, p->L);
|
||||
Vector_sync(&m2, i, dstColumn, offset);
|
||||
}
|
||||
Matrix_release(&m);
|
||||
return m2;
|
||||
}
|
||||
|
||||
Matrix_t Reflector_applyFromRightTo(Reflector_t *p, Matrix_t m){
|
||||
// m * H = m - m * gamma * u * u^T
|
||||
Matrix_t m2 = Matrix_clone(&m);
|
||||
Vector_t vec_m;
|
||||
Vector_t vec_m2;
|
||||
|
||||
int offset = 64 - p->L;
|
||||
|
||||
for (int i = 0; i < M; ++i) {
|
||||
// caches gamma * m * u
|
||||
vec_m = Matrix_row(&m, i);
|
||||
Vector_t srcRow = vector_slice(vec_m, offset);
|
||||
|
||||
double v_src_row[srcRow.len];
|
||||
for(size_t j = 0; j< srcRow.len; j++){
|
||||
v_src_row[j] = Vector_row_operator(&srcRow, j);
|
||||
}
|
||||
srcRow.pBlock = v_src_row;
|
||||
|
||||
double gMU = inner_product(p->u.pBlock, srcRow.pBlock, p->L);
|
||||
|
||||
gMU *= p->gamma;
|
||||
// m * H = m - gMU * u^T
|
||||
vec_m2 = Matrix_row(&m2, i);
|
||||
|
||||
Vector_t dstRow = vector_slice(vec_m2, offset);
|
||||
|
||||
double v_dstrow[dstRow.len];
|
||||
|
||||
for(size_t j = 0; j < dstRow.len; j++){
|
||||
v_dstrow[j] = Vector_row_operator(&dstRow, j);
|
||||
}
|
||||
dstRow.pBlock = v_dstrow;
|
||||
|
||||
Reflector_transform_right(p ,srcRow, dstRow, gMU, p->L);
|
||||
Vector_row_sync(&m2, i, dstRow, offset);
|
||||
}
|
||||
Matrix_release(&m);
|
||||
return m2;
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------Svd-------------------------------//
|
||||
|
||||
int cmp_double(const void* e1, const void* e2)
|
||||
{
|
||||
if ((*(double*)e2 - *(double*)e1) > 0.00000)
|
||||
return 1;
|
||||
else if ((*(double*)e2 - *(double*)e1) == 0.000000)
|
||||
return 0;
|
||||
else
|
||||
return -1;
|
||||
}
|
||||
|
||||
DiagonalMatrix_t Svd_decomposeUSV(BidiagonalMatrix_t *p, Matrix_t *m) {
|
||||
const int MAX_ITERATIONS = N * 10;
|
||||
// allocates matrices
|
||||
Matrix_t m1 = Matrix_clone(m);
|
||||
Matrix_def(&m1);
|
||||
|
||||
|
||||
|
||||
// bidiagonalizes a given matrix
|
||||
BidiagonalMatrix_t m2 = p->bidiagonalize(p, m1);
|
||||
// repeats Francis iteration
|
||||
|
||||
|
||||
int iteration = 0;
|
||||
int n = N;
|
||||
|
||||
while (n >= 2) {
|
||||
// processes the n-1 x n-1 submatrix
|
||||
// if the current n x n submatrix has converged
|
||||
double bn = m2.operator(&m2, n - 1, n - 1);
|
||||
|
||||
if (bn == 0.0 || fabs(m2.operator(&m2, n - 2, n - 1) / bn) < 1.0e-15) {
|
||||
--n;
|
||||
} else {
|
||||
// aborts if too many iterations
|
||||
++iteration;
|
||||
if (iteration > MAX_ITERATIONS) {
|
||||
break;
|
||||
}
|
||||
m2.doFrancis(&m2, n);
|
||||
}
|
||||
}
|
||||
|
||||
// copies the diagonal elements
|
||||
// and makes all singular values positive
|
||||
double ss[N];
|
||||
for (int i = 0; i < N; ++i) {
|
||||
if (m2.operator(&m2, i, i) < 0) {
|
||||
ss[i] = -m2.operator(&m2, i, i);
|
||||
// inverts the sign of the right singular vector
|
||||
//Vector< double > vi = v.column(i);
|
||||
//std::transform(
|
||||
// vi.begin(), vi.end(), vi.begin(),
|
||||
// [](double x) {
|
||||
// return -x;
|
||||
// });
|
||||
} else {
|
||||
ss[i] = m2.operator(&m2, i, i);
|
||||
}
|
||||
}
|
||||
|
||||
// sorts singular values in descending order if necessary
|
||||
int shuffle[M]; // M >= N
|
||||
bool sortNeeded = false;
|
||||
for (int i = 0; i < M; ++i) {
|
||||
shuffle[i] = i;
|
||||
sortNeeded = sortNeeded || (i < N - 1 && ss[i] < ss[i + 1]);
|
||||
}
|
||||
|
||||
m1.release(&m1);
|
||||
BidiagonalMatrix_release(p);
|
||||
|
||||
|
||||
DiagonalMatrix_t dm;
|
||||
if (sortNeeded) {
|
||||
// shuffles the N (<= M) singular values
|
||||
qsort(ss, N,sizeof(double), cmp_double);
|
||||
|
||||
double ss2[M];
|
||||
|
||||
memcpy(ss2, ss, M*sizeof(double));
|
||||
DiagonalMatrix_init(&dm, ss2);
|
||||
|
||||
return dm;
|
||||
} else {
|
||||
DiagonalMatrix_init(&dm, ss);
|
||||
return dm;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
bool Svd_isFullRank(DiagonalMatrix_t *p, const int size) {
|
||||
const double round_off = 1.000009e-12;
|
||||
for (int i = 0; i < size; ++i) {
|
||||
if (fabs( p->operator(p, i, i) ) < round_off){
|
||||
p->release(p);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
p->release(p);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------BidiagonalMatrix_t-------------------------------//
|
||||
BidiagonalMatrix_t BidiagonalMatrix_bidiagonalize(BidiagonalMatrix_t *p, Matrix_t m)
|
||||
{
|
||||
assert(M >= N);
|
||||
|
||||
Vector_t vec_m;
|
||||
Vector_t vec_m2;
|
||||
|
||||
for (int i = 0; i < N; ++i) {
|
||||
Reflector_t rU;
|
||||
|
||||
vec_m = Matrix_column(&m, i);
|
||||
Vector_t column_slice = vector_slice(vec_m, i);
|
||||
// applies a householder transform to the column vector i
|
||||
|
||||
double v_column[column_slice.len];
|
||||
|
||||
for(size_t i = 0; i < column_slice.len; i++){
|
||||
v_column[i] = Vector_column_operator(&column_slice, i);
|
||||
}
|
||||
column_slice.pBlock = v_column;
|
||||
|
||||
Reflector_init(&rU, column_slice);
|
||||
|
||||
m = Reflector_applyFromLeftTo(&rU, m);
|
||||
|
||||
Reflector_release(&rU);
|
||||
//u = rU.applyFromRightTo(u); // U1^T*U0^T = U0*U1
|
||||
if (i < N - 1) {
|
||||
// applies a householder transform to the row vector i + 1
|
||||
//Reflector< N > rV(m.row(i).slice(i + 1));
|
||||
Reflector_t rV;
|
||||
vec_m2 = Matrix_row(&m, i);
|
||||
Vector_t row_slice = vector_slice(vec_m2, i+1);
|
||||
|
||||
double v_row[row_slice.len];
|
||||
|
||||
for(size_t i = 0; i < row_slice.len; i++){
|
||||
v_row[i] = Vector_row_operator(&row_slice, i);
|
||||
}
|
||||
row_slice.pBlock = v_row;
|
||||
Reflector_init(&rV, row_slice);
|
||||
|
||||
m = Reflector_applyFromRightTo(&rV, m);
|
||||
//m = rV.applyFromRightTo(m);
|
||||
//v = rV.applyFromRightTo(v);
|
||||
|
||||
Reflector_release(&rV);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
BidiagonalMatrix_init(p, &m);
|
||||
return *p;
|
||||
}
|
||||
|
||||
void BidiagonalMatrix_release(BidiagonalMatrix_t *p)
|
||||
{
|
||||
if (p->pBlock != NULL){
|
||||
free(p->pBlock);
|
||||
p->pBlock = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
double BidiagonalMatrix_operator(BidiagonalMatrix_t *p, int i, int j)
|
||||
{
|
||||
assert(i >= 0 && i < M);
|
||||
assert(j >= 0 && j < N);
|
||||
if (i == j) {
|
||||
return p->pBlock[2 * i];
|
||||
} else if (i + 1 == j) {
|
||||
return p->pBlock[2 * i + 1];
|
||||
} else {
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
double BidiagonalMatrix_applyFirstRotatorFromRight(BidiagonalMatrix_t *p, Rotator_t *r)
|
||||
{
|
||||
double b1 = p->pBlock[0];
|
||||
double g1 = p->pBlock[1];
|
||||
double b2 = p->pBlock[2];
|
||||
double r11 = Rotator_operator(r, 0, 0);//r->operator(r, 0, 0);
|
||||
double r12 = Rotator_operator(r, 0, 1);//r->operator(r, 0, 1);
|
||||
double r21 = Rotator_operator(r, 1, 0);//r->operator(r, 1, 0);
|
||||
double r22 = Rotator_operator(r, 1, 1);//r->operator(r, 1, 1);
|
||||
//Rotator_operator
|
||||
|
||||
p->pBlock[0] = b1 * r11 + g1 * r21;
|
||||
p->pBlock[1] = b1 * r12 + g1 * r22;
|
||||
p->pBlock[2] = b2 * r22;
|
||||
return b2 * r21;
|
||||
}
|
||||
|
||||
double BidiagonalMatrix_applyRotatorFromRight(BidiagonalMatrix_t *ptr, Rotator_t *r, int n, double bulge)
|
||||
{
|
||||
double* p = ptr->pBlock + n * 2;
|
||||
double g0 = p[-1];
|
||||
double b1 = p[0];
|
||||
double g1 = p[1];
|
||||
double b2 = p[2];
|
||||
double r11 = r->operator(r, 0, 0);
|
||||
double r12 = r->operator(r, 0, 1);
|
||||
double r21 = r->operator(r, 1, 0);
|
||||
double r22 = r->operator(r, 1, 1);
|
||||
p[-1] = g0 * r11 + bulge * r21;
|
||||
p[0] = b1 * r11 + g1 * r21;
|
||||
p[1] = b1 * r12 + g1 * r22;
|
||||
p[2] = b2 * r22;
|
||||
return b2 * r21;
|
||||
}
|
||||
|
||||
double BidiagonalMatrix_applyRotatorFromLeft(BidiagonalMatrix_t *ptr, Rotator_t *r, int n, double bulge)
|
||||
{
|
||||
double* p = ptr->pBlock + n * 2;
|
||||
double b1 = p[0];
|
||||
double g1 = p[1];
|
||||
double b2 = p[2];
|
||||
double r11 = r->operator(r, 0, 0);
|
||||
double r12 = r->operator(r, 0, 1);
|
||||
double r21 = r->operator(r, 1, 0);
|
||||
double r22 = r->operator(r, 1, 1);
|
||||
|
||||
p[0] = r11 * b1 + r21 * bulge;
|
||||
p[1] = r11 * g1 + r21 * b2;
|
||||
p[2] = r12 * g1 + r22 * b2;
|
||||
double newBulge;
|
||||
if (n < N - 2) {
|
||||
double g2 = p[3];
|
||||
newBulge = r21 * g2;
|
||||
p[3] = r22 * g2;
|
||||
} else {
|
||||
newBulge = 0.0;
|
||||
}
|
||||
return newBulge;
|
||||
}
|
||||
|
||||
double BidiagonalMatrix_calculateShift(BidiagonalMatrix_t *m, int n)
|
||||
{
|
||||
assert(M >= N);
|
||||
assert(n >= 2);
|
||||
double b1 = m->operator(m, n - 2, n - 2);
|
||||
double b2 = m->operator(m, n - 1, n - 1);
|
||||
double g1 = m->operator(m, n - 2, n - 1);
|
||||
|
||||
// solves lambda^4 - d*lambda^2 + e = 0
|
||||
// where
|
||||
// d = b1^2 + b2^2 + g1^2
|
||||
// e = b1^2 * b2^2
|
||||
// chooses lambda (rho) closest to b2
|
||||
double rho;
|
||||
double d = b1 * b1 + b2 * b2 + g1 * g1;
|
||||
double e = b1 * b1 * b2 * b2;
|
||||
// lambda^2 = (d +- sqrt(d^2 - 4e)) / 2
|
||||
// so, f = d^2 - 4e must be positive
|
||||
double f = d * d - 4 * e;
|
||||
|
||||
if (f >= 0) {
|
||||
f = sqrt(f);
|
||||
// lambda = +-sqrt(d +- f) (d >= 0, f >= 0)
|
||||
// if d > f, both d+f and d-f have real square roots
|
||||
// otherwise considers only d+f
|
||||
if (d > f) {
|
||||
// lets l1 > l2
|
||||
double l1 = sqrt((d + f) * 0.5);
|
||||
double l2 = sqrt((d - f) * 0.5);
|
||||
// if b2 >= 0, chooses a positive shift
|
||||
// otherwise chooses a negative shift
|
||||
if (b2 >= 0) {
|
||||
if (fabs(b2 - l1) < fabs(b2 - l2)) {
|
||||
rho = l1;
|
||||
} else {
|
||||
rho = l2;
|
||||
}
|
||||
} else {
|
||||
if (fabs(b2 + l1) < fabs(b2 + l2)) {
|
||||
rho = -l1;
|
||||
} else {
|
||||
rho = -l2;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
double l1 = sqrt((d + f) * 0.5);
|
||||
if (fabs(b2 - l1) <= fabs(b2 + l1)) {
|
||||
rho = l1;
|
||||
} else {
|
||||
rho = -l1;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// no solution. chooses b2 as the shift
|
||||
rho = b2;
|
||||
}
|
||||
|
||||
return rho;
|
||||
}
|
||||
|
||||
|
||||
|
||||
void BidiagonalMatrix_doFrancis(BidiagonalMatrix_t *m, int n)
|
||||
{
|
||||
assert(M >= N);
|
||||
assert(n >= 2);
|
||||
// calculates the shift
|
||||
double rho = m->calculateShift(m, n);
|
||||
|
||||
// applies the first right rotator
|
||||
double b1 = m->operator(m, 0, 0);
|
||||
double g1 = m->operator(m, 0, 1);
|
||||
double mx = max(fabs(rho), max(fabs(b1), fabs(g1)));
|
||||
rho /= mx;
|
||||
b1 /= mx;
|
||||
g1 /= mx;
|
||||
//Rotator_t r0(b1 * b1 - rho * rho, b1 * g1);
|
||||
|
||||
Rotator_t r0;
|
||||
Rotator_init(&r0, b1 * b1 - rho * rho, b1 * g1);
|
||||
|
||||
double bulge = m->applyFirstRotatorFromRight(m, &r0);
|
||||
//v = r0.applyFromRightTo(&r0, v, 0);
|
||||
// applies the first left rotator
|
||||
|
||||
Rotator_t r1;
|
||||
Rotator_init(&r1, m->operator(m, 0, 0), bulge);
|
||||
//Rotator_t r1(m(0, 0), bulge);
|
||||
bulge = m->applyRotatorFromLeft(m, &r1, 0, bulge);
|
||||
//u = r1.applyFromRightTo(&r1, u, 0); // U1^T*U0^T = U0*U1
|
||||
|
||||
for (int i = 1; i + 1 < n; ++i) {
|
||||
// calculates (i+1)-th right rotator
|
||||
//Rotator rV(m(i - 1, i), bulge);
|
||||
Rotator_t rV;
|
||||
Rotator_init(&rV, m->operator(m, i - 1, i), bulge);
|
||||
|
||||
bulge = m->applyRotatorFromRight(m, &rV, i, bulge);
|
||||
//v = rV.applyFromRightTo(&rV, v, i);
|
||||
// calculates (i+1)-th left rotator
|
||||
//Rotator rU(m(i, i), bulge);
|
||||
Rotator_t rU;
|
||||
Rotator_init(&rU, m->operator(m, i, i), bulge);
|
||||
|
||||
bulge = m->applyRotatorFromLeft(m, &rU, i, bulge);
|
||||
//u = rU.applyFromRightTo(rU, u, i); // U1^T*U0^T = U0*U1
|
||||
}
|
||||
}
|
||||
|
||||
void BidiagonalMatrix_def(BidiagonalMatrix_t *p)
|
||||
{
|
||||
p->applyFirstRotatorFromRight = BidiagonalMatrix_applyFirstRotatorFromRight;
|
||||
p->applyRotatorFromLeft = BidiagonalMatrix_applyRotatorFromLeft;
|
||||
p->applyRotatorFromRight = BidiagonalMatrix_applyRotatorFromRight;
|
||||
p->bidiagonalize = BidiagonalMatrix_bidiagonalize;
|
||||
p->calculateShift = BidiagonalMatrix_calculateShift;
|
||||
p->doFrancis = BidiagonalMatrix_doFrancis;
|
||||
p->operator = BidiagonalMatrix_operator;
|
||||
p->releases = BidiagonalMatrix_release;
|
||||
|
||||
}
|
||||
|
||||
void BidiagonalMatrix_init(BidiagonalMatrix_t *p, Matrix_t *m)
|
||||
{
|
||||
assert(M >= N);
|
||||
int len;
|
||||
len = 2 * N - 1;
|
||||
|
||||
p->pBlock = (double *)malloc(sizeof(double)*len);
|
||||
memset(p->pBlock, 0.0,sizeof(double)*len);
|
||||
|
||||
for (int i = 0; i < N; ++i) {
|
||||
p->pBlock[i * 2] = Matrix_operator(m, i, i);//m->operator(m, i, i);
|
||||
if (i < N - 1) {
|
||||
p->pBlock[i * 2 + 1] = Matrix_operator(m, i, i + 1);//m->operator(m, i, i + 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
bool IsFullRank(const uint64_t matrix_[64*64])
|
||||
{
|
||||
double matrix__ [64*64];
|
||||
// Matrix<64, 64> matrix;
|
||||
|
||||
|
||||
for (int i = 0; i < 64; ++i) {
|
||||
for (int j = 0; j < 64; ++j) {
|
||||
matrix__[64*i + j] = (double) matrix_[64*i + j];
|
||||
}
|
||||
}
|
||||
|
||||
DiagonalMatrix_t dm;
|
||||
Matrix_t mt;
|
||||
BidiagonalMatrix_t bt;
|
||||
|
||||
DiagonalMatrix_init(&dm, matrix__);
|
||||
//matrix.fill(matrix__);
|
||||
|
||||
Matrix_init(&mt);
|
||||
Matrix_def(&mt);
|
||||
mt.filledwith(&mt, matrix__);
|
||||
|
||||
BidiagonalMatrix_def(&bt);
|
||||
DiagonalMatrix_t usv = Svd_decomposeUSV(&bt, &mt);
|
||||
DiagonalMatrix_t singularValues = usv;
|
||||
mt.release(&mt);
|
||||
dm.release(&dm);
|
||||
//DiagonalMatrix_release(&dm);
|
||||
return Svd_isFullRank(&usv,64);
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
uint64_t GetUint64_t(uint8_t *data, int pos)
|
||||
{
|
||||
const uint8_t* ptr = data + pos * 8;
|
||||
return ((uint64_t)ptr[0]) | \
|
||||
((uint64_t)ptr[1]) << 8 | \
|
||||
((uint64_t)ptr[2]) << 16 | \
|
||||
((uint64_t)ptr[3]) << 24 | \
|
||||
((uint64_t)ptr[4]) << 32 | \
|
||||
((uint64_t)ptr[5]) << 40 | \
|
||||
((uint64_t)ptr[6]) << 48 | \
|
||||
((uint64_t)ptr[7]) << 56;
|
||||
}
|
||||
|
||||
void XoShiRo256PlusPlus_init(Obtc_t *Obtc, uint64_t *s, uint256 seed) {
|
||||
for (int i = 0; i < 4; ++i) {
|
||||
//p->s[i] = seed.GetUint64(i);
|
||||
s[i] = GetUint64_t(Obtc->data_r,i);
|
||||
}
|
||||
}
|
||||
|
||||
uint64_t RotateLeft64(const uint64_t x, int k) {
|
||||
return (x << k) | (x >> (64 - k));
|
||||
}
|
||||
|
||||
|
||||
uint64_t XoShiRo256PlusPlus_operator(uint64_t *s){
|
||||
const uint64_t result = RotateLeft64(s[0] + s[3], 23) + s[0];
|
||||
|
||||
const uint64_t t = s[1] << 17;
|
||||
|
||||
s[2] ^= s[0];
|
||||
s[3] ^= s[1];
|
||||
s[1] ^= s[2];
|
||||
s[0] ^= s[3];
|
||||
|
||||
s[2] ^= t;
|
||||
|
||||
s[3] = RotateLeft64(s[3], 45);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
void GenerateHeavyHashMatrix_t(Obtc_t *Obtc, uint256 matrix_seed, uint64_t matrix[64*64])
|
||||
{
|
||||
XoShiRo256PlusPlus_init(Obtc, Obtc->ss, matrix_seed);
|
||||
|
||||
do {
|
||||
for (int i = 0; i < 64; ++i) {
|
||||
for (int j = 0; j < 64; j += 16) {
|
||||
uint64_t value = XoShiRo256PlusPlus_operator(Obtc->ss);//generator();
|
||||
for (int shift = 0; shift < 16; ++shift) {
|
||||
matrix[64*i + j + shift] = (value >> (4 * shift)) & 0xF;
|
||||
}
|
||||
}
|
||||
}
|
||||
//} while (!Is4BitPrecision(matrix) || !IsFullRank(matrix));
|
||||
}while(!Is4BitPrecision(matrix));
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void serialize_heavyhash(Obtc_t *Obtc, uint64_t matrix[64*64], const char* in, char* out, int len)
|
||||
{
|
||||
uint8_t temp[200]={
|
||||
0x02,0xb9,0x7c,0x78,0x6f,0x82,0x43,0x83,0x5d,0x11,0x29,0xcf,0x82,0xaf,0xa5,0xbc,0xb1,0xfc,0xce,0x9c,
|
||||
0xe7,0x8b,0x52,0x72,0x48,0xb0,0x94,0x27,0xa8,0x74,0x2e,0xdb,0x89,0xca,0x4e,0x84,0x9b,0xce,0xcf,0x4a,
|
||||
0xd1,0x02,0x57,0x41,0x05,0x09,0x5f,0x8d,0xba,0x1d,0xe5,0xe4,0x45,0x16,0x68,0xe4,0xc1,0xa2,0x02,0x1d,
|
||||
0x56,0x3b,0xb1,0x42,0x8f,0x06,0xdd,0x1c,0x7a,0x2f,0x85,0x1a,0x34,0x85,0x54,0x90,0x64,0xa3,0x6a,0x46,
|
||||
0xb2,0x1a,0x60,0x1f,0x85,0xb4,0xb2,0x23,0xe6,0xc8,0x5d,0x8f,0x82,0xe9,0xda,0x89,0xec,0x70,0xf1,0xa4,
|
||||
0x25,0xb1,0x37,0x15,0x44,0xe3,0x67,0x87,0x5b,0x29,0x91,0x52,0x0f,0x96,0x07,0x05,0x40,0xf1,0x4a,0x0e,
|
||||
0x2e,0x65,0x1c,0x3c,0x43,0x28,0x5f,0xf0,0xf8,0xeb,0xf1,0x33,0x88,0x66,0x31,0x40,0x77,0x6b,0xf6,0x0c,
|
||||
0x78,0x9b,0xc2,0x9c,0x18,0x3a,0x98,0x1e,0xad,0x41,0x5b,0x10,0x4a,0xef,0x61,0xd6,0x29,0xdc,0xe2,0x46,
|
||||
0x7b,0x2f,0xaf,0xca,0x87,0x5e,0x2d,0x65,0x1b,0xa5,0xa4,0xa3,0xf5,0x98,0x69,0xa0,0x1e,0x5f,0x2e,0x72,
|
||||
0x0e,0xfb,0x44,0xd2,0x29,0xbf,0x88,0x55,0xb7,0x02,0x7e,0x3c,0x11,0x3c,0xff,0x0d,0xa1,0xf6,0xd8,0x3d
|
||||
};
|
||||
for(int i = 0 ;i< 200 ;i++)Obtc->const_data[i] = temp[i];
|
||||
|
||||
CHeavyHash_init(Obtc, &Obtc->CHeavyHash_p, matrix);
|
||||
CHeavyHash_Write(&Obtc->CHeavyHash_p, (const unsigned char*)in, len);
|
||||
CHeavyHash_Finalize(Obtc, &Obtc->CHeavyHash_p, (unsigned char*)out);
|
||||
}
|
||||
|
||||
|
||||
|
||||
void opticalbtc_hash(const char* in, char* out, int len)
|
||||
{
|
||||
uint8_t *ptr = (uint8_t*) in;
|
||||
uint256 seed, hashprev;
|
||||
uint64_t matrix[64*64];
|
||||
|
||||
Obtc_t Obtc;
|
||||
|
||||
CSHA3_256_init(&Obtc, &Obtc.CSHA3_256_p);
|
||||
memcpy(Obtc.data_r,ptr, 32);
|
||||
GenerateHeavyHashMatrix_t(&Obtc, seed, matrix);
|
||||
serialize_heavyhash(&Obtc, matrix, in, out, len);
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,52 @@
|
|||
#ifndef OBTC_H
|
||||
#define OBTC_H
|
||||
|
||||
|
||||
#include "uint256.h"
|
||||
#include "xoshiro256pp.h"
|
||||
#include "Svd.h"
|
||||
#include "DiagonalMatrix.h"
|
||||
#include "Matrix.h"
|
||||
#include "Rotator.h"
|
||||
#include "heavyhash.h"
|
||||
|
||||
|
||||
typedef struct Obtc_opt Obtc_t;
|
||||
struct Obtc_opt{
|
||||
uint8_t data_r[32];
|
||||
uint64_t ss[4];
|
||||
uint8_t const_data[200];
|
||||
CSHA3_256 CSHA3_256_p;
|
||||
CHeavyHash CHeavyHash_p;
|
||||
uint256 g_hash_first;
|
||||
XoShiRo256PlusPlus_t *xo;
|
||||
DiagonalMatrix_t g_DiagonalMatrix;
|
||||
|
||||
};
|
||||
|
||||
//struct Obtc_opt;
|
||||
|
||||
|
||||
bool Is4BitPrecision(const uint64_t matrix[64*64]);
|
||||
bool IsFullRank(const uint64_t matrix_[64*64]);
|
||||
void GenerateHeavyHashMatrix(uint256 matrix_seed, uint64_t matrix[64*64]);
|
||||
void serialize_heavyhash(Obtc_t *Obtc, uint64_t matrix[64*64], const char* in, char* out, int len);
|
||||
void opticalbtc_hash(const char* in, char* out, int len);
|
||||
|
||||
extern void CSHA3_256_init(Obtc_t *Obtc, CSHA3_256 *p);
|
||||
extern void CSHA3_256_CSHA3_256(Obtc_t *Obtc, CSHA3_256 *p);
|
||||
|
||||
extern void CSHA3_256_Write(CSHA3_256 *p, const unsigned char* data, size_t len);
|
||||
|
||||
extern void CSHA3_256_Finalize(CSHA3_256 *p, unsigned char hash[OUTPUT_SIZE]);
|
||||
//extern void CSHA3_256_Reset(Obtc_t *Obtc, CSHA3_256 *p);
|
||||
|
||||
extern void CHeavyHash_init(Obtc_t *Obtc, CHeavyHash *p, uint64_t matrix_[64*64]);
|
||||
extern void CHeavyHash_Write(CHeavyHash *p, const unsigned char* data, size_t len);
|
||||
|
||||
extern void CHeavyHash_Finalize(Obtc_t *Obtc, CHeavyHash *p, unsigned char hash[OUTPUT_SIZE]);
|
||||
|
||||
extern int sha3_init(Obtc_t *Obtc,sha3_ctx_t *c, int mdlen); // mdlen = hash output in bytes
|
||||
|
||||
|
||||
#endif // OBTC_H
|
Binary file not shown.
|
@ -0,0 +1,199 @@
|
|||
// sha3.c
|
||||
// 19-Nov-11 Markku-Juhani O. Saarinen <mjos@iki.fi>
|
||||
|
||||
// Revised 07-Aug-15 to match with official release of FIPS PUB 202 "SHA3"
|
||||
// Revised 03-Sep-15 for portability + OpenSSL - style API
|
||||
#include <stdio.h>
|
||||
#include "sha3.h"
|
||||
#include "obtc.h"
|
||||
|
||||
|
||||
|
||||
|
||||
// update the state with given number of rounds
|
||||
|
||||
void sha3_keccakf(uint64_t st[25])
|
||||
{
|
||||
// constants
|
||||
const uint64_t keccakf_rndc[24] = {
|
||||
0x0000000000000001, 0x0000000000008082, 0x800000000000808a,
|
||||
0x8000000080008000, 0x000000000000808b, 0x0000000080000001,
|
||||
0x8000000080008081, 0x8000000000008009, 0x000000000000008a,
|
||||
0x0000000000000088, 0x0000000080008009, 0x000000008000000a,
|
||||
0x000000008000808b, 0x800000000000008b, 0x8000000000008089,
|
||||
0x8000000000008003, 0x8000000000008002, 0x8000000000000080,
|
||||
0x000000000000800a, 0x800000008000000a, 0x8000000080008081,
|
||||
0x8000000000008080, 0x0000000080000001, 0x8000000080008008
|
||||
};
|
||||
const int keccakf_rotc[24] = {
|
||||
1, 3, 6, 10, 15, 21, 28, 36, 45, 55, 2, 14,
|
||||
27, 41, 56, 8, 25, 43, 62, 18, 39, 61, 20, 44
|
||||
};
|
||||
const int keccakf_piln[24] = {
|
||||
10, 7, 11, 17, 18, 3, 5, 16, 8, 21, 24, 4,
|
||||
15, 23, 19, 13, 12, 2, 20, 14, 22, 9, 6, 1
|
||||
};
|
||||
|
||||
// variables
|
||||
int i, j, r;
|
||||
uint64_t t, bc[5];
|
||||
|
||||
#if __BYTE_ORDER__ != __ORDER_LITTLE_ENDIAN__
|
||||
uint8_t *v;
|
||||
|
||||
// endianess conversion. this is redundant on little-endian targets
|
||||
for (i = 0; i < 25; i++) {
|
||||
v = (uint8_t *) &st[i];
|
||||
st[i] = ((uint64_t) v[0]) | (((uint64_t) v[1]) << 8) |
|
||||
(((uint64_t) v[2]) << 16) | (((uint64_t) v[3]) << 24) |
|
||||
(((uint64_t) v[4]) << 32) | (((uint64_t) v[5]) << 40) |
|
||||
(((uint64_t) v[6]) << 48) | (((uint64_t) v[7]) << 56);
|
||||
}
|
||||
#endif
|
||||
|
||||
// actual iteration
|
||||
for (r = 0; r < KECCAKF_ROUNDS; r++) {
|
||||
|
||||
// Theta
|
||||
for (i = 0; i < 5; i++)
|
||||
bc[i] = st[i] ^ st[i + 5] ^ st[i + 10] ^ st[i + 15] ^ st[i + 20];
|
||||
|
||||
for (i = 0; i < 5; i++) {
|
||||
t = bc[(i + 4) % 5] ^ ROTL64(bc[(i + 1) % 5], 1);
|
||||
for (j = 0; j < 25; j += 5)
|
||||
st[j + i] ^= t;
|
||||
}
|
||||
|
||||
// Rho Pi
|
||||
t = st[1];
|
||||
for (i = 0; i < 24; i++) {
|
||||
j = keccakf_piln[i];
|
||||
bc[0] = st[j];
|
||||
st[j] = ROTL64(t, keccakf_rotc[i]);
|
||||
t = bc[0];
|
||||
}
|
||||
|
||||
// Chi
|
||||
for (j = 0; j < 25; j += 5) {
|
||||
for (i = 0; i < 5; i++)
|
||||
bc[i] = st[j + i];
|
||||
for (i = 0; i < 5; i++)
|
||||
st[j + i] ^= (~bc[(i + 1) % 5]) & bc[(i + 2) % 5];
|
||||
}
|
||||
|
||||
// Iota
|
||||
st[0] ^= keccakf_rndc[r];
|
||||
}
|
||||
|
||||
#if __BYTE_ORDER__ != __ORDER_LITTLE_ENDIAN__
|
||||
// endianess conversion. this is redundant on little-endian targets
|
||||
for (i = 0; i < 25; i++) {
|
||||
v = (uint8_t *) &st[i];
|
||||
t = st[i];
|
||||
v[0] = t & 0xFF;
|
||||
v[1] = (t >> 8) & 0xFF;
|
||||
v[2] = (t >> 16) & 0xFF;
|
||||
v[3] = (t >> 24) & 0xFF;
|
||||
v[4] = (t >> 32) & 0xFF;
|
||||
v[5] = (t >> 40) & 0xFF;
|
||||
v[6] = (t >> 48) & 0xFF;
|
||||
v[7] = (t >> 56) & 0xFF;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
// Initialize the context for SHA3
|
||||
|
||||
int sha3_init(Obtc_t *Obtc, sha3_ctx_t *c, int mdlen)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < 200; i++){
|
||||
c->st.b[i] = Obtc->const_data[199-i];
|
||||
}
|
||||
|
||||
c->mdlen = mdlen;
|
||||
c->rsiz = 200 - 2 * mdlen;
|
||||
c->pt = 0;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
// update state with more data
|
||||
|
||||
int sha3_update(sha3_ctx_t *c, const void *data, size_t len)
|
||||
{
|
||||
size_t i;
|
||||
int j;
|
||||
|
||||
j = c->pt;
|
||||
|
||||
for (i = 0; i < len; i++) {
|
||||
c->st.b[j++] ^= ((const uint8_t *) data)[i];
|
||||
if (j >= c->rsiz) {
|
||||
sha3_keccakf(c->st.q);
|
||||
j = 0;
|
||||
}
|
||||
}
|
||||
c->pt = j;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
// finalize and output a hash
|
||||
|
||||
int sha3_final(void *md, sha3_ctx_t *c)
|
||||
{
|
||||
int i;
|
||||
|
||||
// c->st.b[c->pt] ^= 0x06;
|
||||
c->st.b[c->pt] ^= 0x04;
|
||||
c->st.b[c->rsiz - 1] ^= 0x80;
|
||||
sha3_keccakf(c->st.q);
|
||||
|
||||
for (i = 0; i < c->mdlen; i++) {
|
||||
((uint8_t *) md)[i] = c->st.b[i];
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
// compute a SHA-3 hash (md) of given byte length from "in"
|
||||
|
||||
/*void *sha3(const void *in, size_t inlen, void *md, int mdlen)
|
||||
{
|
||||
sha3_ctx_t sha3;
|
||||
|
||||
sha3_init(&sha3, mdlen);
|
||||
sha3_update(&sha3, in, inlen);
|
||||
sha3_final(md, &sha3);
|
||||
|
||||
return md;
|
||||
}*/
|
||||
|
||||
// SHAKE128 and SHAKE256 extensible-output functionality
|
||||
|
||||
void shake_xof(sha3_ctx_t *c)
|
||||
{
|
||||
c->st.b[c->pt] ^= 0x1F;
|
||||
c->st.b[c->rsiz - 1] ^= 0x80;
|
||||
sha3_keccakf(c->st.q);
|
||||
c->pt = 0;
|
||||
}
|
||||
|
||||
void shake_out(sha3_ctx_t *c, void *out, size_t len)
|
||||
{
|
||||
size_t i;
|
||||
int j;
|
||||
|
||||
j = c->pt;
|
||||
for (i = 0; i < len; i++) {
|
||||
if (j >= c->rsiz) {
|
||||
sha3_keccakf(c->st.q);
|
||||
j = 0;
|
||||
}
|
||||
((uint8_t *) out)[i] = c->st.b[j++];
|
||||
}
|
||||
c->pt = j;
|
||||
}
|
||||
|
|
@ -0,0 +1,51 @@
|
|||
// sha3.h
|
||||
// 19-Nov-11 Markku-Juhani O. Saarinen <mjos@iki.fi>
|
||||
|
||||
#ifndef SHA3_H
|
||||
#define SHA3_H
|
||||
|
||||
|
||||
#include <stddef.h>
|
||||
#include <stdint.h>
|
||||
|
||||
|
||||
|
||||
|
||||
#ifndef KECCAKF_ROUNDS
|
||||
#define KECCAKF_ROUNDS 24
|
||||
#endif
|
||||
|
||||
#ifndef ROTL64
|
||||
#define ROTL64(x, y) (((x) << (y)) | ((x) >> (64 - (y))))
|
||||
#endif
|
||||
|
||||
// state context
|
||||
typedef struct {
|
||||
union { // state:
|
||||
uint8_t b[200]; // 8-bit bytes
|
||||
uint64_t q[25]; // 64-bit words
|
||||
} st;
|
||||
int pt, rsiz, mdlen; // these don't overflow
|
||||
} sha3_ctx_t;
|
||||
|
||||
// Compression function.
|
||||
void sha3_keccakf(uint64_t st[25]);
|
||||
|
||||
// OpenSSL - like interfece
|
||||
|
||||
int sha3_update(sha3_ctx_t *c, const void *data, size_t len);
|
||||
int sha3_final(void *md, sha3_ctx_t *c); // digest goes to md
|
||||
|
||||
// compute a sha3 hash (md) of given byte length from "in"
|
||||
void *sha3(const void *in, size_t inlen, void *md, int mdlen);
|
||||
|
||||
// SHAKE128 and SHAKE256 extensible-output functions
|
||||
//#define shake128_init(c) sha3_init(c, 16)
|
||||
//#define shake256_init(c) sha3_init(c, 32)
|
||||
//#define shake_update sha3_update
|
||||
|
||||
void shake_xof(sha3_ctx_t *c);
|
||||
void shake_out(sha3_ctx_t *c, void *out, size_t len);
|
||||
|
||||
#endif
|
||||
|
Binary file not shown.
|
@ -0,0 +1,42 @@
|
|||
#ifndef _SINGULAR_SINGULAR_H
|
||||
#define _SINGULAR_SINGULAR_H
|
||||
|
||||
/** The version of the singular library. */
|
||||
#define SINGULAR_VERSION "@PROJECT_VERSION@"
|
||||
|
||||
/**
|
||||
* Whether rvalue references are supported.
|
||||
*
|
||||
* Visual Studio 2010 and lower do not have rvalue references so far.
|
||||
*/
|
||||
#if defined(_MSC_VER) && _MSC_VER < 1700
|
||||
#define SINGULAR_RVALUE_REFERENCE_SUPPORTED 0
|
||||
#else
|
||||
#define SINGULAR_RVALUE_REFERENCE_SUPPORTED 1
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Whether function deletions are supported.
|
||||
*
|
||||
* Visual Studio 2012 and lower do not like "delete" stuff so far.
|
||||
*/
|
||||
#if defined(_MSC_VER) && _MSC_VER < 1800
|
||||
#define SINGULAR_FUNCTION_DELETION_SUPPORTED 0
|
||||
#else
|
||||
#define SINGULAR_FUNCTION_DELETION_SUPPORTED 1
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Whether template friend operator overalodings are supported.
|
||||
*
|
||||
* Visual Studio 2012 and lower do not like overloading a template firend
|
||||
* operators.
|
||||
* Neither does GCC.
|
||||
*/
|
||||
#if (defined(_MSC_VER) && _MSC_VER < 1800) || (defined(__GNUC__) && !defined(__clang__))
|
||||
#define SINGULAR_TEMPLATE_FRIEND_OPERATOR_OVERLOADING_SUPPORTED 0
|
||||
#else
|
||||
#define SINGULAR_TEMPLATE_FRIEND_OPERATOR_OVERLOADING_SUPPORTED 1
|
||||
#endif
|
||||
|
||||
#endif
|
|
@ -0,0 +1,183 @@
|
|||
#include <stdio.h>
|
||||
#include <stdint.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "obtc.h"
|
||||
#include "singular.h"
|
||||
#include<time.h>
|
||||
|
||||
|
||||
//uint8_t const_data[200];
|
||||
|
||||
static const int hex2bin_tbl[256] = {
|
||||
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
||||
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
||||
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
||||
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, -1, -1, -1, -1, -1, -1,
|
||||
-1, 10, 11, 12, 13, 14, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
||||
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
||||
-1, 10, 11, 12, 13, 14, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
||||
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
||||
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
||||
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
||||
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
||||
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
||||
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
||||
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
||||
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
||||
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
||||
};
|
||||
|
||||
bool hex2bin(unsigned char *p, const char *hexstr, size_t len)
|
||||
{
|
||||
int nibble1, nibble2;
|
||||
unsigned char idx;
|
||||
bool ret = false;
|
||||
|
||||
while (*hexstr && len) {
|
||||
if ((!hexstr[1])) {
|
||||
printf("hex2bin str truncated");
|
||||
return ret;
|
||||
}
|
||||
|
||||
idx = *hexstr++;
|
||||
nibble1 = hex2bin_tbl[idx];
|
||||
idx = *hexstr++;
|
||||
nibble2 = hex2bin_tbl[idx];
|
||||
|
||||
if (((nibble1 < 0) || (nibble2 < 0))) {
|
||||
printf("hex2bin scan failed");
|
||||
return ret;
|
||||
}
|
||||
|
||||
*p++ = (((unsigned char)nibble1) << 4) | ((unsigned char)nibble2);
|
||||
--len;
|
||||
}
|
||||
|
||||
if ((len == 0 && *hexstr == 0))
|
||||
ret = true;
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
uint8_t genesis_block[80];
|
||||
uint8_t hash[32];
|
||||
|
||||
uint8_t last_prehash[32];
|
||||
uint8_t last_prehash2[32];
|
||||
uint8_t prehash_tab[32];
|
||||
uint8_t nonce_tab[8];
|
||||
char *prehash_str = "d76ffb1d8e31ec04579b0452b52bde7dbd088e912ab1b11ba924ff309ab44a43";//argv[1];
|
||||
char *nonce_str = "80aa59a7901f2502";//argv[2];
|
||||
//char *last_prehash_str = argv[3];
|
||||
//char *last_prehash_str2 = argv[4];
|
||||
|
||||
hex2bin(prehash_tab, prehash_str, strlen(prehash_str)/2);
|
||||
hex2bin(nonce_tab, nonce_str, strlen(nonce_str)/2);
|
||||
//hex2bin(last_prehash, last_prehash_str, strlen(last_prehash_str)/2);
|
||||
//hex2bin(last_prehash2, last_prehash_str2, strlen(last_prehash_str2)/2);
|
||||
/*for (uint8_t i = 0; i<32;i++){
|
||||
printf("0x%x, ",prehash_tab[i]);
|
||||
}
|
||||
printf("\n");
|
||||
|
||||
for (uint8_t i = 0; i<8;i++){
|
||||
printf("0x%x, ",nonce_tab[i]);
|
||||
}
|
||||
printf("\n");*/
|
||||
|
||||
//uint8_t prehash[32] = {0x81,0x55,0x3a,0x69,0x5a,0x05,0x88,0x99,0x8c,0x41,0x37,0x92,0xe7,0x4c,0xe8,0xb8,0xf8,0xa0,0x96,0xd6,0x4b,0x3e,0xe4,0x73,0x87,0x37,0x24,0x34,0x48,0x5c,0x0b,0x6f};
|
||||
//uint8_t utime[8] = {0x00,0x00,0x01,0x84,0x8c,0xa8,0x7c,0x49};
|
||||
uint8_t pad[32] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
|
||||
//uint8_t nonce[8] = {0x2f,0x84,0x00,0x00,0x0e,0xba,0x16,0x7c};
|
||||
|
||||
#if 0
|
||||
//uint8_t prehash[32] = {0xa4,0x8f,0xae,0x69,0xeb,0x28,0xc7,0xe0,0x14,0x11,0x4f,0x01,0xae,0x60,0xc8,0xc3,0x82,0x73,0xc4,0x60,0x66,0xcf,0x95,0xd6,0x77,0x1a,0x55,0xd6,0x16,0xd7,0xa1,0x9a};//大端
|
||||
//uint8_t utime[8] = {0x00,0x00,0x01,0x87,0x22,0x1e,0xad,0x44};
|
||||
//uint8_t nonce[8] = {0x8e,0xd4,0x00,0x10,0x6b,0xe7,0xe4,0x00};
|
||||
//uint8_t nonce[8] = {0x8e,0xd4,0x00,0x12,0x27,0xc6,0x90,0xa0};
|
||||
//uint8_t nonce[8] = {0x8e,0xd4,0x00,0x32,0x0b,0x6b,0xd6,0xd1};
|
||||
|
||||
|
||||
//3f 9a aa c6 32 af 1a 4e 0e 1f ea 8a f8 e3 d5 32 b7 5a a4 71 b2 e4 ef fe a5 bd cc fa 3b dd b6 61
|
||||
uint8_t prehash[32] = {0x3f,0x9a,0xaa,0xc6,0x32,0xaf,0x1a,0x4e,0x0e,0x1f,0xea,0x8a,0xf8,0xe3,0xd5,0x32,0xb7,0x5a,0xa4,0x71,0xb2,0xe4,0xef,0xfe,0xa5,0xbd,0xcc,0xfa,0x3b,0xdd,0xb6,0x61};//大端
|
||||
uint8_t utime[8] = {0x00,0x00,0x01,0x87,0x21,0xeb,0x73,0x79};
|
||||
uint8_t nonce[8] = {0xa3,0xdd,0x02,0x10,0x1a,0x87,0xb4,0x70};
|
||||
|
||||
|
||||
|
||||
|
||||
#else
|
||||
|
||||
|
||||
/*443e01000000ffff00000000
|
||||
e0af2a3ba173157d3f70c94aad742fdf16d9930fdfc9d6301e869bcef04ced6c
|
||||
e0af2a3ba173157d3f70c94aad742fdf16d9930fdfc9d6301e869bcef04ced6c
|
||||
dbee84288701000000000000901f25020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
|
||||
[2023-03-28 22:00:46.549] 00 cc 01 11 70 83 85 16 90 1f 25 02
|
||||
|
||||
kas_pow_hash: in:e0af2a3ba173157d3f70c94aad742fdf16d9930fdfc9d6301e869bcef04ced6cdbee842887010000000000000000000000000000000000000000000000000000000000000000000070838516901f2502
|
||||
kas_pow_hash: out:dae78f5008d3b66f
|
||||
01a740ce33c812ba
|
||||
772b3f5763da7bc6
|
||||
da24cb6c00000000*/
|
||||
|
||||
uint8_t prehash[32] = {0xe0,0xaf,0x2a,0x3b,0xa1,0x73,0x15,0x7d,0x3f,0x70,0xc9,0x4a,0xad,0x74,0x2f,0xdf,0x16,0xd9,0x93,0x0f,0xdf,0xc9,0xd6,0x30,0x1e,0x86,0x9b,0xce,0xf0,0x4c,0xed,0x6c};
|
||||
//uint8_t utime[8] = {0x00,0x00,0x01,0x87,0x28,0x84,0xee,0xdb};
|
||||
uint8_t nonce[8] = {0x02,0x25,0x1f,0x90,0x16,0x85,0x83,0x70};
|
||||
|
||||
#endif
|
||||
|
||||
/*for (int i = 0; i < 32; ++i) genesis_block[i] = prehash[i];
|
||||
for (int i = 0; i < 8; ++i) genesis_block[i+32] = utime[7-i];
|
||||
for (int i = 0; i < 32; ++i) genesis_block[i+40] = pad[31-i];
|
||||
for (int i = 0; i < 8; ++i) genesis_block[i+72] = nonce[7-i];*/
|
||||
//uint8_t utime[8] = {0x00,0x00,0x01,0x87,0x21,0xeb,0x73,0x79};
|
||||
//dbee8428870100000
|
||||
uint8_t utime[8] = {0x00,0x00,0x01,0x87,0x28,0x84,0xee,0xdb};
|
||||
|
||||
for (int i = 0; i < 32; ++i) genesis_block[i] = prehash_tab[i];
|
||||
for (int i = 0; i < 8; ++i) genesis_block[i+32] = utime[7-i];
|
||||
for (int i = 0; i < 32; ++i) genesis_block[i+40] = pad[31-i];
|
||||
for (int i = 0; i < 8; ++i) genesis_block[i+72] = nonce_tab[i];
|
||||
|
||||
clock_t start, finish;
|
||||
double Total_time;
|
||||
uint32_t cnt = 0;;
|
||||
//while(1)
|
||||
{
|
||||
start = clock();
|
||||
opticalbtc_hash((const char*)&genesis_block, (char*)&hash, sizeof(genesis_block));
|
||||
finish = clock();
|
||||
Total_time = (double)(finish-start) / CLOCKS_PER_SEC;
|
||||
printf( "\n cnt = %d, opticalbtc_hash run times %f seconds\n", cnt++, Total_time);
|
||||
|
||||
for (int i=31; i>-1; i--) {
|
||||
printf("%02hhx", hash[i]);
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
|
||||
//if (hash[31] != 0 || hash[30] != 0){
|
||||
// for (int i = 0; i < 32; ++i) genesis_block[i] = last_prehash[i];
|
||||
// opticalbtc_hash((const char*)&genesis_block, (char*)&hash, sizeof(genesis_block));
|
||||
//}
|
||||
|
||||
//if (hash[31] != 0 || hash[30] != 0){
|
||||
// for (int i = 0; i < 32; ++i) genesis_block[i] = last_prehash2[i];
|
||||
// opticalbtc_hash((const char*)&genesis_block, (char*)&hash, sizeof(genesis_block));
|
||||
//}
|
||||
|
||||
if (hash[31] != 0 && hash[30] != 0){
|
||||
printf("reject\n");
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
//g++ -std=c++11 *.cpp
|
|
@ -0,0 +1,44 @@
|
|||
// Copyright (c) 2009-2010 Satoshi Nakamoto
|
||||
// Copyright (c) 2009-2016 The Bitcoin Core developers
|
||||
// Distributed under the MIT software license, see the accompanying
|
||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
#ifndef BITCOIN_UINT256_H
|
||||
#define BITCOIN_UINT256_H
|
||||
|
||||
#include <assert.h>
|
||||
//#include <cstring>
|
||||
//#include <stdexcept>
|
||||
#include <stdint.h>
|
||||
#include <string.h>
|
||||
//#include <vector>
|
||||
#include <stdbool.h>
|
||||
|
||||
|
||||
|
||||
/** 256-bit opaque blob.
|
||||
* @note This type is called uint256 for historical reasons only. It is an
|
||||
* opaque blob of 256 bits and has no integer operations. Use arith_uint256 if
|
||||
* those are required.
|
||||
*/
|
||||
#define UPPER_P(x) x->elements[0]
|
||||
#define LOWER_P(x) x->elements[1]
|
||||
#define UPPER(x) x.elements[0]
|
||||
#define LOWER(x) x.elements[1]
|
||||
#define WIDTH 32
|
||||
|
||||
typedef struct class_base_blob base_blob_t;
|
||||
struct class_base_blob{
|
||||
uint8_t data[WIDTH];
|
||||
};
|
||||
|
||||
|
||||
typedef struct uint128_t { uint64_t elements[2]; } uint128_t;
|
||||
typedef struct uint256_t {
|
||||
uint128_t elements[2];
|
||||
base_blob_t bb;
|
||||
} uint256;
|
||||
|
||||
|
||||
|
||||
#endif // BITCOIN_UINT256_H
|
|
@ -0,0 +1,15 @@
|
|||
#ifndef OPOW_CRYPTO_XOSHIRO256PP_H
|
||||
#define OPOW_CRYPTO_XOSHIRO256PP_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include "uint256.h"
|
||||
|
||||
|
||||
typedef struct class_XoShiRo256PlusPlus XoShiRo256PlusPlus_t;
|
||||
struct class_XoShiRo256PlusPlus{
|
||||
uint64_t s[4];
|
||||
};
|
||||
|
||||
|
||||
|
||||
#endif //OPOW_CRYPTO_XOSHIRO256PP_H
|
|
@ -0,0 +1,14 @@
|
|||
#ifndef NEXAAPI_H
|
||||
#define NEXAAPI_H
|
||||
#include <stdbool.h>
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
bool nexa_hash( unsigned char *out, unsigned char *in);
|
||||
bool nexa_hash12( unsigned char *out, unsigned char *in);
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
|
@ -0,0 +1,6 @@
|
|||
#ifndef ODO_CRYPT
|
||||
#define ODO_CRYPT
|
||||
#include <stdint.h>
|
||||
//void HashOdo(uint8_t hash[32], const uint8_t* pbegin, const uint8_t* pend, uint32_t key);
|
||||
void HashOdo(char* hash, const char* pbegin, uint32_t key);
|
||||
#endif
|
|
@ -0,0 +1,21 @@
|
|||
|
||||
#ifndef QUBIT_H__
|
||||
#define QUBIT_H__
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"{
|
||||
#endif
|
||||
|
||||
#include <stddef.h>
|
||||
#include "sph_types.h"
|
||||
|
||||
void qubithash(void *output, const void *input);
|
||||
void qubithash_1(void *output, const void *input);
|
||||
void qubithash_2(void *output, const void *input);
|
||||
void qubithash_3(void *output, const void *input);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
|
@ -0,0 +1,16 @@
|
|||
#ifndef SKEIN_H
|
||||
#define SKEIN_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
void skein_hash(const char* input, char* output, uint32_t len);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,67 @@
|
|||
// hash_mona.go
|
||||
package mona
|
||||
|
||||
/*
|
||||
#cgo CFLAGS : -I../include
|
||||
#cgo LDFLAGS: -L../lib -llyra2re
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include "Lyra2RE.h"
|
||||
*/
|
||||
import "C"
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
//"encoding/hex"
|
||||
"log"
|
||||
"unsafe"
|
||||
|
||||
"github.com/btcsuite/btcd/chaincfg/chainhash"
|
||||
"github.com/btcsuite/btcd/wire"
|
||||
)
|
||||
|
||||
// MONA
|
||||
func Build_MonaPowHash(h wire.BlockHeader) chainhash.Hash {
|
||||
outputs := make([]byte, 32)
|
||||
var powhash chainhash.Hash
|
||||
buf := bytes.NewBuffer(make([]byte, 0, wire.MaxBlockHeaderPayload))
|
||||
err := h.Serialize(buf)
|
||||
if err != nil {
|
||||
log.Println("[mona] powhash: Serialize error:", err)
|
||||
return powhash
|
||||
}
|
||||
//test_mona_pow := "0000002013bea8369753c2a405f4704f698f7322c0a52f3ab89e853a14c3b124cf667d098612a82ce1741ab44ae31b5aeb6a7e622386cc4baeb57a046ed1d0fa676fee6cd0f008678ef70f1a6e9deb7a"
|
||||
//test_mona_bytes, _ := hex.DecodeString(test_mona_pow)
|
||||
|
||||
//log.Println("[mona]in", hex.EncodeToString(buf.Bytes()))
|
||||
in := (*C.char)(C.CBytes(buf.Bytes()))
|
||||
//in := (*C.char)(C.CBytes(test_mona_bytes))
|
||||
defer C.free(unsafe.Pointer(in))
|
||||
|
||||
output := (*C.char)(C.malloc(32))
|
||||
if output == nil {
|
||||
log.Println("[mona] powhash: malloc failed")
|
||||
return powhash
|
||||
}
|
||||
defer C.free(unsafe.Pointer(output))
|
||||
|
||||
//C.lyra2re2_hash(unsafe.Pointer(in), unsafe.Pointer(output))
|
||||
C.lyra2re2_hash(in, output)
|
||||
//outputs := C.GoBytes((*C.uint8_t)((unsafe.Pointer)(output)), 32)
|
||||
/*p := uintptr(unsafe.Pointer(output))
|
||||
for i := 0; i < 32; i++ {
|
||||
j := *(*byte)(unsafe.Pointer(p))
|
||||
outputs[i] = j
|
||||
p += unsafe.Sizeof(j)
|
||||
}*/
|
||||
outputs = C.GoBytes(unsafe.Pointer(output), 32)
|
||||
//log.Println("[mona]out", outputs)
|
||||
|
||||
err = powhash.SetBytes(outputs)
|
||||
if err != nil {
|
||||
log.Println("[mona] powhash: SetBytes error:", err)
|
||||
return powhash
|
||||
}
|
||||
return powhash
|
||||
}
|
|
@ -0,0 +1,724 @@
|
|||
// mona.go
|
||||
package mona
|
||||
|
||||
import (
|
||||
//"database/sql"
|
||||
"bytes"
|
||||
"encoding/binary"
|
||||
"encoding/hex"
|
||||
"encoding/json"
|
||||
|
||||
//"log"
|
||||
//"math"
|
||||
"math/big"
|
||||
"strings"
|
||||
|
||||
"fmt"
|
||||
"pool/internal/msg"
|
||||
"pool/internal/server/coin"
|
||||
"pool/internal/server/dbif"
|
||||
"pool/internal/stratum"
|
||||
"pool/internal/utility"
|
||||
"time"
|
||||
|
||||
"github.com/btcsuite/btcd/wire"
|
||||
|
||||
_ "github.com/mattn/go-sqlite3"
|
||||
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
const SERVER_MONA_VERSION string = "mona v3.0f"
|
||||
|
||||
type ServerMonaContext struct {
|
||||
ServerCtx *coin.ServerContext
|
||||
logg *zap.Logger
|
||||
|
||||
Job msg.StratumJob
|
||||
}
|
||||
|
||||
var logg *zap.Logger
|
||||
var ServerMonaCtx ServerMonaContext
|
||||
|
||||
const truediffone float64 = 26959535291011309493156476344723991336010898738574164086137773096960.0
|
||||
const bits192 float64 = 6277101735386680763835789423207666416102355444464034512896.0
|
||||
const bits128 float64 = 340282366920938463463374607431768211456.0
|
||||
const bits64 float64 = 18446744073709551616.0
|
||||
|
||||
func target2float(target []byte) float64 {
|
||||
var b64 float64 = float64(binary.LittleEndian.Uint64(target[24:32])) * bits192
|
||||
b64 += (float64(binary.LittleEndian.Uint64(target[16:24])) * bits128)
|
||||
b64 += (float64(binary.LittleEndian.Uint64(target[8:16])) * bits64)
|
||||
b64 += (float64(binary.LittleEndian.Uint64(target[0:8])))
|
||||
return b64
|
||||
}
|
||||
|
||||
// convert target to difficulty
|
||||
func target2diff(target []byte) float64 {
|
||||
var f64 float64 = truediffone
|
||||
var fcut64 float64 = target2float(target)
|
||||
//log.Println("diff", f64, fcut64, f64/fcut64*65536)
|
||||
return f64 / fcut64
|
||||
}
|
||||
|
||||
func handle_submit(miner *coin.MinerObj, id float64, miner_user string, job_id string, nonce2 string, ntime string, nonce string) (bool, bool, bool) {
|
||||
var submit_item coin.BlockMsg
|
||||
/*var user_blk_item coin.UserBlockMsg*/
|
||||
var pool_blk_item coin.PoolBlkMsg
|
||||
|
||||
var blk_detail_height int64
|
||||
var blk_detail_hash string
|
||||
var blk_detail_success bool
|
||||
var blk_detail_miner_diff float64
|
||||
var blk_detail_pool_diff float64
|
||||
|
||||
if miner.Authorized != true {
|
||||
miner.ErrOthers = miner.ErrOthers + 1
|
||||
stratum.Handle_exception(miner, id, stratum.MINER_ERR_UNAUTH_WORKER)
|
||||
stratum.Send_reconnect_msg(miner)
|
||||
return false, false, false
|
||||
}
|
||||
var new_found bool = false
|
||||
var ack stratum.Submit_ack
|
||||
ack.ID = id
|
||||
ack.Result = true
|
||||
//logg.Warn("[server]", zap.String("user", miner.User), zap.String("miner", miner.Miner))
|
||||
//logg.Debug("[server]", zap.Float64("id", id), zap.String("job_id", job_id))
|
||||
//logg.Debug("[server]", zap.String("nonce2", nonce2), zap.String("ntime", ntime), zap.String("nonce", nonce))
|
||||
//stratum.UpdateJobs(miner)
|
||||
v, ok := miner.Jobs.Load(job_id)
|
||||
if ok {
|
||||
job := v.(msg.StratumJob)
|
||||
|
||||
if job.Height < miner.CurHeight-1 {
|
||||
ack.Result = false
|
||||
stratum.Handle_exception(miner, id, stratum.MINER_ERR_STALED_JOB)
|
||||
miner.ErrStaleds = miner.ErrStaleds + 1
|
||||
return false, false, false
|
||||
}
|
||||
|
||||
//logg.Debug("[server]", zap.Uint64("ntime", nt), zap.Uint64("mintime", uint64(job.Mintime)), zap.Uint64("jobtime", jt_reverse))
|
||||
/*if nt < uint64(job.Mintime) {
|
||||
ack.Result = false
|
||||
util.Handle_exception(miner, id, util.MINER_ERR_TIME_TOO_OLD)
|
||||
} else if nt > jt_reverse+uint64(600) {
|
||||
ack.Result = false
|
||||
util.Handle_exception(miner, id, util.MINER_ERR_TIME_TOO_NEW)
|
||||
} else */{
|
||||
if miner.LastNonce != nonce {
|
||||
|
||||
miner.LastNonce = nonce
|
||||
//job.Nonce = nonce
|
||||
//job.Extranonce2 = nonce2
|
||||
//logg.Debug("[server]", zap.Uint32("height", job.Height), zap.String("target", job.Target))
|
||||
if miner.ZlogInit {
|
||||
miner.Zlog.Info().Msg("height " + fmt.Sprintf("%d", job.Height) + " target " + job.Target + " extra1 " + job.Extranonce1 + " size " + fmt.Sprintf("%d", job.Extranonce2_size) + " " + miner.User + "." + miner.Miner)
|
||||
}
|
||||
|
||||
//job := v.(msg.StratumJob)
|
||||
vb := make([]byte, 4)
|
||||
binary.LittleEndian.PutUint32(vb, uint32(job.Version))
|
||||
vBuffer := bytes.NewBuffer(vb)
|
||||
binary.Read(vBuffer, binary.BigEndian, &(miner.Version))
|
||||
|
||||
job.Nonce = nonce
|
||||
job.Extranonce2 = nonce2
|
||||
//logg.Debug("[server]", zap.Uint32("height", job.Height), zap.String("target", job.Target))
|
||||
var calc_hash []byte
|
||||
var header wire.BlockHeader
|
||||
|
||||
calc_hash, header = coin.BuildBlockHash(&(job), true, Build_MonaPowHash)
|
||||
|
||||
//logg.Debug("[server]", zap.String("hash in", submit_item.Header))
|
||||
//calc_hash, header := util.BuildBlockHash(&(job), true, Build_PowHash)
|
||||
//logg.Debug("[server]", zap.String("calc_hash", hex.EncodeToString(calc_hash)) /*, zap.String("merkle root", hex.EncodeToString(merkle_root))*/)
|
||||
if miner.ZlogInit {
|
||||
printbuf := bytes.NewBuffer(make([]byte, 0, wire.MaxBlockHeaderPayload))
|
||||
header.Serialize(printbuf)
|
||||
miner.Zlog.Info().Msg("hash in " + hex.EncodeToString(printbuf.Bytes()) + " calc_hash " + hex.EncodeToString(calc_hash) + " " + miner.User + "." + miner.Miner)
|
||||
}
|
||||
submit_target := new(big.Int)
|
||||
hashs, _ := utility.ReverseS(hex.EncodeToString(calc_hash))
|
||||
hashb, _ := hex.DecodeString(hashs)
|
||||
submit_target.SetBytes(hashb)
|
||||
calc_diff := target2diff(calc_hash)
|
||||
//log.Printf("diff,calc_diff:%f difficulty:%f ", calc_diff, miner.Difficulty)
|
||||
//logg.Warn("[server]", zap.String("user", miner.User+"."+miner.Miner), zap.Float64("target diff", miner.Difficulty), zap.Float64("submit diff", calc_diff))
|
||||
if miner.ZlogInit {
|
||||
miner.Zlog.Info().Msg(miner.User + "." + miner.Miner + " target diff " + fmt.Sprintf("%f", (job.JobDifficulty)) + " submit diff " + fmt.Sprintf("%f", (calc_diff)))
|
||||
}
|
||||
//logg.Debug("[server]", zap.String("target", miner.Target.String()), zap.Any("bytes", miner.Target.Bytes()))
|
||||
//logg.Info("[server]", zap.Float64("target diff", miner.Difficulty), zap.Float64("submit diff", calc_diff), zap.String("target", hex.EncodeToString(miner.Target.Bytes())))
|
||||
|
||||
//if calc_diff < miner.Difficulty {
|
||||
if calc_diff < job.JobDifficulty {
|
||||
//gpu protocol handler
|
||||
/*for i := 0; i < 8; i++ {
|
||||
temp_nonce := header.Nonce[8+i]
|
||||
header.Nonce[8+i] = header.Nonce[i]
|
||||
header.Nonce[i] = temp_nonce
|
||||
}
|
||||
submit_item.Header = hex.EncodeToString(MonaBlockHeaderToBytes(header))
|
||||
calc_hash = BuildPowHash(header)
|
||||
logg.Debug("[server]", zap.String("hash in", hex.EncodeToString(MonaBlockHeaderToBytes(header))))*/
|
||||
//logg.Debug("[server]", zap.String("calc_hash", hex.EncodeToString(calc_hash)) /*, zap.String("merkle root", hex.EncodeToString(merkle_root))*/)
|
||||
//submit_target = new(big.Int)
|
||||
/*submit_target.SetBytes(calc_hash)
|
||||
calc_diff = utility.Target2Diff(calc_hash)
|
||||
logg.Warn("[server]", zap.String("user", miner.User+"."+miner.Miner), zap.Float64("target diff", miner.Difficulty), zap.Float64("submit diff", calc_diff))
|
||||
if calc_diff < miner.Difficulty {
|
||||
*/
|
||||
ack.Result = false
|
||||
miner.ErrLowDiffs = miner.ErrLowDiffs + 1
|
||||
stratum.Handle_exception(miner, id, stratum.MINER_ERR_LOW_DIF_SHARE)
|
||||
return false, false, false
|
||||
//}
|
||||
|
||||
}
|
||||
//logg.Warn("[server]", zap.String("pow", hex.EncodeToString(submit_target.Bytes())), zap.String("target", hex.EncodeToString(miner.ServerTarget.Bytes())))
|
||||
//submit_target.Text(16)
|
||||
/*if submit_target.Cmp(miner.ServerTarget) <= 0 {*/
|
||||
//log.Println("[server]server_target", miner.ServerTargetS)
|
||||
//stb, _ := hex.DecodeString(miner.ServerTargetS)
|
||||
stb, _ := hex.DecodeString(job.Target)
|
||||
//logg.Info("[server]", zap.String("target", job.Target))
|
||||
//server_diff := Target2Diff(common.Reverse(stb))
|
||||
server_diff := target2diff(utility.Reverse(stb))
|
||||
//log.Printf("[server]server_diff %f", server_diff)
|
||||
//logg.Info("[server]", zap.Float64("calc_diff", calc_diff), zap.Float64("miner.Difficulty", miner.Difficulty), zap.Float64("server_diff", server_diff))
|
||||
//logg.Debug("[server]", zap.String("ServerTargetS", miner.ServerTargetS))
|
||||
network_target := new(big.Int)
|
||||
network_target.SetBytes(stb)
|
||||
//logg.Info("[server]", zap.Float64("calc_diff", calc_diff), zap.Float64("miner.Difficulty", miner.Difficulty), zap.Float64("server_diff", server_diff))
|
||||
//logg.Debug("[server]", zap.String("submit_target", hex.EncodeToString(submit_target.Bytes())), zap.String("network_target", hex.EncodeToString(network_target.Bytes())), zap.String("target", hex.EncodeToString(miner.ServerTarget.Bytes())), zap.Int("cmp", network_target.Cmp(submit_target)))
|
||||
if miner.ZlogInit {
|
||||
miner.Zlog.Info().Msg(miner.User + "." + miner.Miner + " calc_diff " + fmt.Sprintf("%f", (calc_diff)) + " miner.Difficulty " + fmt.Sprintf("%f", (miner.Difficulty)) + " server_diff " + fmt.Sprintf("%f", (server_diff)))
|
||||
miner.Zlog.Info().Msg(miner.User + "." + miner.Miner + " submit_target " + hex.EncodeToString(submit_target.Bytes()) + " network_target " + hex.EncodeToString(network_target.Bytes()) + " target " + hex.EncodeToString(miner.ServerTarget.Bytes()) + " cmp " + fmt.Sprintf("%d", (network_target.Cmp(submit_target))))
|
||||
}
|
||||
|
||||
submit_item.Hash = hex.EncodeToString(calc_hash)
|
||||
submit_item.Target = hex.EncodeToString(miner.Target.Bytes())
|
||||
submit_item.Submit_target = hex.EncodeToString(calc_hash)
|
||||
submit_item.Height = int64(job.Height)
|
||||
submit_item.Pow = hex.EncodeToString(calc_hash)
|
||||
submit_item.Net_target = hex.EncodeToString(network_target.Bytes())
|
||||
|
||||
/*user_blk_item.Height = int64(job.Height)
|
||||
user_blk_item.Hash = hex.EncodeToString(calc_hash)
|
||||
user_blk_item.Pow = hex.EncodeToString(calc_hash)
|
||||
user_blk_item.Net_target = hex.EncodeToString(network_target.Bytes())*/
|
||||
|
||||
pool_blk_item.Height = int64(job.Height)
|
||||
pool_blk_item.Hash = hex.EncodeToString(calc_hash)
|
||||
pool_blk_item.Pow = hex.EncodeToString(calc_hash)
|
||||
pool_blk_item.Net_target = hex.EncodeToString(network_target.Bytes())
|
||||
|
||||
blk_detail_height = int64(job.Height)
|
||||
blk_detail_hash = hex.EncodeToString(calc_hash)
|
||||
blk_detail_success = false
|
||||
blk_detail_miner_diff = miner.Difficulty
|
||||
blk_detail_pool_diff = miner.Server.RefDifficulty
|
||||
|
||||
if ack.Result == true {
|
||||
/*if miner.CurHeight != 0 && miner.CurHeight == job.Height {
|
||||
return
|
||||
}*/
|
||||
|
||||
//if true {
|
||||
if (calc_diff >= server_diff) || (network_target.Cmp(submit_target) >= 0) {
|
||||
miner.Server.SubIdx++
|
||||
|
||||
hdbuf := bytes.NewBuffer(make([]byte, 0, wire.MaxBlockHeaderPayload))
|
||||
err := header.Serialize(hdbuf)
|
||||
if err != nil {
|
||||
logg.Error("[server]", zap.String("header Serialize", err.Error()))
|
||||
} else {
|
||||
//pow := chainhash.DoubleHashB(hdbuf.Bytes())
|
||||
//blk_hash := hex.EncodeToString(pow)
|
||||
Produce_block_submit(miner, header, &job, submit_item.Hash, miner.Server.SubIdx)
|
||||
miner.SubmitIndex++
|
||||
miner.Submits = miner.Submits + 1
|
||||
//miner.CurHeight = job.Height
|
||||
new_found = true
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
||||
miner.LastNonce = nonce
|
||||
ack.Result = false
|
||||
stratum.Handle_exception(miner, id, stratum.MINER_ERR_DUP_SHARE)
|
||||
miner.ErrDuplicates = miner.ErrDuplicates + 1
|
||||
return false, false, false
|
||||
}
|
||||
}
|
||||
} else {
|
||||
ack.Result = false
|
||||
stratum.Handle_exception(miner, id, stratum.MINER_ERR_NOT_FOUND_JOB)
|
||||
miner.ErrStaleds = miner.ErrStaleds + 1
|
||||
return false, false, false
|
||||
}
|
||||
|
||||
miner.LastJobId = job_id
|
||||
|
||||
ack.Error = nil
|
||||
body, err := json.Marshal(ack)
|
||||
if err != nil {
|
||||
//logg.Error("[server]", zap.String("Marshal", err.Error()))
|
||||
if miner.ZlogInit {
|
||||
miner.Zlog.Info().Msg(miner.User + "." + miner.Miner + " handle_submit Marshal " + err.Error())
|
||||
}
|
||||
miner.ErrOthers = miner.ErrOthers + 1
|
||||
stratum.Handle_exception(miner, id, stratum.MINER_ERR_UNKNOWN)
|
||||
return false, false, false
|
||||
}
|
||||
|
||||
var body_string = string(body) + "\n"
|
||||
err = stratum.Conn_tx(miner.Conn, []byte(body_string))
|
||||
if err != nil {
|
||||
//miner.Server.Miners.Delete(miner.MinerId)
|
||||
}
|
||||
if miner.ZlogInit {
|
||||
miner.Zlog.Info().Msg(body_string)
|
||||
}
|
||||
//logg.Debug("[server]", zap.String("tx", body_string))
|
||||
miner.TxLock.Lock()
|
||||
miner.Status = coin.MINER_STATUS_RUNNING
|
||||
miner.TxLock.Unlock()
|
||||
|
||||
if ack.Result {
|
||||
|
||||
miner.Accepts += miner.Difficulty
|
||||
miner.M5Accepts += miner.Difficulty
|
||||
|
||||
miner.VarDiffOpt.SubmitShares += miner.Difficulty
|
||||
|
||||
} else {
|
||||
miner.Rejects += miner.Difficulty
|
||||
|
||||
}
|
||||
now := time.Now()
|
||||
if miner.Server.Config.Diff.Filter == "kalman" {
|
||||
if ack.Result {
|
||||
share_interval := now.Sub(miner.LastSubmitime).Seconds()
|
||||
mhs := miner.Difficulty * share_interval
|
||||
diff_next, kalman_p := miner.DiffHandler.Handler(miner.Difficulty, share_interval)
|
||||
mhs_est := diff_next * miner.Server.Config.Diff.DiffAdjustInterval
|
||||
|
||||
ratio := diff_next / miner.Difficulty
|
||||
if ratio > 0 {
|
||||
if now.Sub(miner.StartSubmitTime).Seconds() > 180 {
|
||||
if ratio >= 2 {
|
||||
//miner.DifficultyNext = math.Ceil(diff_next*100) / 100
|
||||
miner.DifficultyNext = diff_next * 10000000 / 10000000
|
||||
} else if ratio <= 0.5 {
|
||||
//miner.DifficultyNext = math.Ceil(diff_next*100) / 100
|
||||
miner.DifficultyNext = diff_next * 10000000 / 10000000
|
||||
} else {
|
||||
}
|
||||
} else {
|
||||
//miner.DifficultyNext = math.Ceil(diff_next*100) / 100
|
||||
miner.DifficultyNext = diff_next * 10000000 / 10000000
|
||||
/*if ratio >= 1.1 {
|
||||
miner.DifficultyNext = math.Ceil(diff_next*100) / 100
|
||||
} else if ratio <= 0.8 {
|
||||
miner.DifficultyNext = math.Ceil(diff_next*100) / 100
|
||||
} else {
|
||||
}*/
|
||||
}
|
||||
}
|
||||
if miner.DifficultyNext > 0.0 {
|
||||
if miner.DifficultyNext < miner.VarDiffOpt.MinDiff {
|
||||
miner.DifficultyNext = miner.VarDiffOpt.MinDiff
|
||||
} else if miner.DifficultyNext > miner.VarDiffOpt.MaxDiff {
|
||||
miner.DifficultyNext = miner.VarDiffOpt.MaxDiff
|
||||
}
|
||||
}
|
||||
//miner.VarDiffOpt.LastCalcTime = now
|
||||
|
||||
if miner.Server.Config.Diff.Dbg {
|
||||
coin.New_diff_into_db(miner.User, miner.Miner, fmt.Sprint(miner.MinerIndex), miner.Difficulty, diff_next, kalman_p, share_interval, mhs, mhs_est)
|
||||
}
|
||||
|
||||
//log.Println("diff adjust", ratio, diff_next, miner.Difficulty, miner.DifficultyNext)
|
||||
}
|
||||
} else {
|
||||
// submit time < DiffAdjustInterval,then up adjust diff
|
||||
if now.Sub(miner.LastSubmitime).Seconds() < miner.Server.Config.Diff.DiffAdjustInterval {
|
||||
if ack.Result {
|
||||
if miner.VarDiffOpt.Uptimes++; miner.VarDiffOpt.Uptimes >= coin.DIFFICULTY_WAIT_TIMES {
|
||||
coin.VarAdjustDifficulty(miner, coin.UP_DIFF)
|
||||
miner.VarDiffOpt.LastCalcTime = now
|
||||
}
|
||||
}
|
||||
} else {
|
||||
miner.VarDiffOpt.Uptimes = 0
|
||||
}
|
||||
|
||||
// submit time > 2 * DiffAdjustInterval,then down adjust diff
|
||||
if now.Sub(miner.LastSubmitime).Seconds() > miner.Server.Config.Diff.DiffAdjustInterval*2 {
|
||||
if ack.Result {
|
||||
if miner.VarDiffOpt.Downtimes++; miner.VarDiffOpt.Downtimes >= coin.DIFFICULTY_WAIT_TIMES {
|
||||
coin.VarAdjustDifficulty(miner, coin.DOWN_DIFF)
|
||||
miner.VarDiffOpt.LastCalcTime = now
|
||||
}
|
||||
}
|
||||
} else {
|
||||
miner.VarDiffOpt.Downtimes = 0
|
||||
}
|
||||
}
|
||||
if ack.Result {
|
||||
miner.LastSubmitime = now
|
||||
miner.VarDiffOpt.LastSubmitTime = now
|
||||
}
|
||||
var duration float64 = float64(now.Sub(miner.StartSubmitTime)) / 1000000000
|
||||
|
||||
if duration < 1 {
|
||||
duration = 1
|
||||
}
|
||||
diffOneShareHashesAvg := uint64(0x00000000FFFFFFFF)
|
||||
miner.AverageHashrate = miner.Accepts * float64(diffOneShareHashesAvg) / duration / 1000000
|
||||
var m5_duration float64 = float64(now.Sub(miner.M5SubmitTime)) / 1000000000
|
||||
if m5_duration >= float64(time.Minute*5)/1000000000 {
|
||||
miner.M5SubmitTime = now
|
||||
miner.M5Hashrate = miner.M5Accepts * float64(diffOneShareHashesAvg) / m5_duration / 1000000
|
||||
//logg.Info("[server]", zap.Float64("Accepts", miner.Accepts), zap.Float64("M5Accepts", miner.M5Accepts), zap.Float64("M5Hashrate(MH/S)", miner.M5Hashrate))
|
||||
miner.M5Accepts = 0
|
||||
}
|
||||
|
||||
//logg.Warn("[server]", zap.Float64("Accepts", miner.Accepts), zap.Float64("Rejects", miner.Rejects))
|
||||
//logg.Info("[server]", zap.Float64("TargetShares", miner.VarDiffOpt.TargetShares), zap.Float64("MinShares", miner.VarDiffOpt.MinShares), zap.Float64("MaxShares", miner.VarDiffOpt.MaxShares), zap.Float64("SubmitShares", miner.VarDiffOpt.SubmitShares))
|
||||
//logg.Warn("[server]", zap.Float64("reject rate", miner.Rejects/(miner.Accepts+miner.Rejects)), zap.Float64("Hashrate(MH/S)", miner.AverageHashrate))
|
||||
//logg.Warn("[server]", zap.Float64("M5Accepts", miner.M5Accepts), zap.Float64("M5Hashrate(MH/S)", miner.M5Hashrate))
|
||||
if miner.ZlogInit {
|
||||
miner.Zlog.Info().Msg(miner.User + "." + miner.Miner + " handle_submit M5Accepts " + fmt.Sprintf("%f", (miner.M5Accepts)) + " Hashrate(MH/S) " + fmt.Sprintf("%f", miner.AverageHashrate) + " M5Hashrate(MH/S) " + fmt.Sprintf("%f", miner.M5Hashrate))
|
||||
}
|
||||
|
||||
//logg.Info("[server]", zap.Float64("LastCalcTime", float64(now.Sub(miner.VarDiffOpt.LastCalcTime))/1000000000))
|
||||
//calc acutal submit shares period of time, then compare with target shares and adjust diff
|
||||
|
||||
if miner.Server.Config.Diff.Filter == "kalman" {
|
||||
} else {
|
||||
if float64(now.Sub(miner.VarDiffOpt.LastCalcTime))/1000000000 >= miner.VarDiffOpt.AdjustTime {
|
||||
coin.VarAdjustDifficulty(miner, coin.UPDATE_DIFF)
|
||||
miner.VarDiffOpt.LastCalcTime = now
|
||||
}
|
||||
}
|
||||
|
||||
if new_found {
|
||||
//util.StaleAllJobs(miner)
|
||||
|
||||
/*user_blk_item.User = miner.User
|
||||
user_blk_item.Miner = miner.Miner
|
||||
user_blk_item.Index = fmt.Sprint(miner.MinerIndex)
|
||||
|
||||
user_blk_item.Submit = "y"
|
||||
user_blk_item.Success = false
|
||||
user_blk_item.Accepts = miner.Accepts
|
||||
user_blk_item.Rejects = miner.Rejects
|
||||
user_blk_item.Reward = 0
|
||||
user_blk_item.Fee = 0
|
||||
user_blk_item.Nonce = nonce
|
||||
user_blk_item.SubIdx = miner.Server.SubIdx
|
||||
dbif.NotifyUsersBlkStatsDb2(miner, &user_blk_item)*/
|
||||
|
||||
pool_blk_item.Submit = "y"
|
||||
pool_blk_item.Success = false
|
||||
pool_blk_item.Accepts = miner.Accepts
|
||||
pool_blk_item.Rejects = miner.Rejects
|
||||
pool_blk_item.Reward = 0
|
||||
pool_blk_item.Fee = 0
|
||||
pool_blk_item.Nonce = nonce
|
||||
pool_blk_item.SubIdx = miner.Server.SubIdx
|
||||
dbif.NotifyPoolBlkStatsDb2(miner.Server, &pool_blk_item)
|
||||
|
||||
}
|
||||
|
||||
if ack.Result {
|
||||
|
||||
submit_item.Success = false
|
||||
if new_found {
|
||||
submit_item.Submit = "y"
|
||||
submit_item.SubIdx = miner.Server.SubIdx
|
||||
} else {
|
||||
submit_item.Submit = "n"
|
||||
submit_item.SubIdx = -1
|
||||
}
|
||||
|
||||
submit_item.Accepts = miner.Accepts
|
||||
submit_item.Total_accepts = miner.Accepts
|
||||
submit_item.Rejects = miner.Rejects
|
||||
submit_item.Total_rejects = miner.Rejects
|
||||
submit_item.Reward = 0
|
||||
submit_item.Fee = 0
|
||||
submit_item.Nonce = nonce
|
||||
|
||||
//dbif.NotifyMinerDb2(miner, &submit_item)
|
||||
|
||||
dbif.NotifyBlkDetailDb(miner, blk_detail_height, blk_detail_hash, blk_detail_success, blk_detail_miner_diff, blk_detail_pool_diff, nonce, submit_item.SubIdx)
|
||||
return true, new_found, true
|
||||
}
|
||||
return false, false, true
|
||||
}
|
||||
|
||||
func Produce_block_submit(miner *coin.MinerObj, header wire.BlockHeader, job *msg.StratumJob, PowHash string, SubIdx int64) {
|
||||
var nm msg.BlockGrsMsg
|
||||
|
||||
buf := bytes.NewBuffer(make([]byte, 0, wire.MaxBlockHeaderPayload))
|
||||
err := header.Serialize(buf)
|
||||
if err != nil {
|
||||
logg.Error("[server]", zap.String("Bytes", err.Error()))
|
||||
return
|
||||
}
|
||||
blk := hex.EncodeToString(buf.Bytes())
|
||||
txns := len(*job.TransData) + 1
|
||||
var txnss string
|
||||
if txns < 0xfd {
|
||||
//txnss = hex.EncodeToString([]byte(string(txns)))
|
||||
txnsb := make([]byte, 2)
|
||||
binary.LittleEndian.PutUint16(txnsb, uint16(txns))
|
||||
txnss = hex.EncodeToString(txnsb[:1])
|
||||
} else if txns < 0xffff {
|
||||
blk += "fd"
|
||||
txnsb := make([]byte, 2)
|
||||
binary.LittleEndian.PutUint16(txnsb, uint16(txns))
|
||||
txnss = hex.EncodeToString(txnsb)
|
||||
} else {
|
||||
blk += "fe"
|
||||
txnsb := make([]byte, 4)
|
||||
binary.LittleEndian.PutUint32(txnsb, uint32(txns))
|
||||
txnss = hex.EncodeToString(txnsb)
|
||||
}
|
||||
blk += txnss
|
||||
|
||||
//blk += (job.Coinbase1 + job.Extranonce1 + job.Extranonce2 + job.Coinbase2)
|
||||
blk += job.Coinbase1[:8]
|
||||
blk += "0001"
|
||||
c2 := len(job.Coinbase2)
|
||||
blk += (job.Coinbase1[8:] + job.Extranonce1 + job.Extranonce2 + job.Coinbase2[:c2-8])
|
||||
blk += "01200000000000000000000000000000000000000000000000000000000000000000"
|
||||
blk += job.Coinbase2[c2-8:]
|
||||
for i := range *job.TransData {
|
||||
blk += (*job.TransData)[i]
|
||||
}
|
||||
|
||||
bh, _ := hex.DecodeString(blk)
|
||||
nm.Data = bh
|
||||
|
||||
nm.Nonce = job.Nonce
|
||||
nm.Pow = PowHash
|
||||
nm.SubIdx = SubIdx
|
||||
nm.User = miner.User
|
||||
nm.Miner = miner.Miner
|
||||
nm.Index = fmt.Sprint(miner.MinerIndex)
|
||||
body, err := json.Marshal(nm)
|
||||
if err != nil {
|
||||
logg.Error("[server]", zap.String("failed to Marshal job", err.Error()))
|
||||
return
|
||||
}
|
||||
blk2 := string(body)
|
||||
|
||||
//Add Height
|
||||
heightb := utility.Uint32ToByte(job.Height)
|
||||
heights := hex.EncodeToString(heightb)
|
||||
blk2 += heights
|
||||
var Height uint32 = utility.ByteToUint32(heightb)
|
||||
logg.Warn("[server]", zap.Uint32("Height", Height))
|
||||
|
||||
//Add SubmitIndex
|
||||
indexb := utility.Uint32ToByte(miner.SubmitIndex)
|
||||
indexs := hex.EncodeToString(indexb)
|
||||
blk2 += indexs
|
||||
var SubmitIndex uint32 = utility.ByteToUint32(indexb)
|
||||
logg.Info("[server]", zap.Uint32("SubmitIndex", SubmitIndex))
|
||||
logg.Info("[server]", zap.String("blk", blk2))
|
||||
|
||||
if miner.Server.PubCh == nil {
|
||||
miner.Server.PubCh = utility.InitZmqPub(miner.Server.Config.Zmq.Pub)
|
||||
}
|
||||
if miner.Server.PubCh != nil {
|
||||
//miner.Server.PubCh.SendChan <- [][]byte{[]byte("blkmona"), []byte(blk)}
|
||||
err := miner.Server.PubCh.SendMessage([][]byte{[]byte("blkmona"), []byte(blk2)})
|
||||
if err != nil {
|
||||
miner.Server.PubCh.Destroy()
|
||||
miner.Server.PubCh = nil
|
||||
logg.Info("[server]", zap.String("blk", err.Error()))
|
||||
} else {
|
||||
logg.Info("[server]", zap.String("blk", "sent"))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// server-->miner
|
||||
func mona_parse_miner_notify(miner *coin.MinerObj, msg msg.StratumJob) int {
|
||||
isJobChanged := miner.Job.Height != msg.Height
|
||||
extrannonce1 := miner.Job.Extranonce1
|
||||
miner.Job = msg
|
||||
if isJobChanged {
|
||||
miner.Job.IsClean = true
|
||||
}
|
||||
miner.Job.Extranonce1 = extrannonce1
|
||||
miner.Job.Extranonce2_size = msg.Extranonce2_size
|
||||
|
||||
//miner.Server.Logg.Info("[server]", zap.Int32("miner.Version", miner.Version), zap.Int32("msg.Version", msg.Version))
|
||||
return 1
|
||||
}
|
||||
|
||||
func Init(server *coin.ServerContext) {
|
||||
ServerMonaCtx.ServerCtx = server
|
||||
logg = server.Logg
|
||||
logg.Info("[server]", zap.String("server_mona_version", SERVER_MONA_VERSION))
|
||||
coin.Init_diff_db()
|
||||
}
|
||||
|
||||
func Start() {
|
||||
|
||||
}
|
||||
|
||||
func Stop() {
|
||||
coin.DiffStop()
|
||||
}
|
||||
|
||||
func InitMiner(miner *coin.MinerObj) {
|
||||
be1 := make([]byte, 4)
|
||||
binary.LittleEndian.PutUint32(be1, (uint32(miner.Server.Extranonce1) + 0x81000000))
|
||||
miner.Job.Extranonce1 = hex.EncodeToString(be1)
|
||||
//miner.NexaJob.Extranonce1 = miner.Job.Extranonce1
|
||||
miner.Server.Extranonce1++
|
||||
|
||||
target, err := utility.DiffToTarget(miner.Difficulty)
|
||||
if err != nil {
|
||||
logg.Error("[server]", zap.String("DiffToTarget", err.Error()))
|
||||
return
|
||||
}
|
||||
miner.Target = target
|
||||
logg.Debug("[target]", zap.String("target", hex.EncodeToString(target.Bytes())), zap.Float64("diff", miner.Difficulty))
|
||||
|
||||
server_target := new(big.Int)
|
||||
t_bytes, err := hex.DecodeString(miner.Job.Target)
|
||||
if err != nil {
|
||||
logg.Error("[server]", zap.String("DecodeString", err.Error()))
|
||||
return
|
||||
}
|
||||
//server_target.SetBytes(common.Reverse(t_bytes))
|
||||
server_target.SetBytes(t_bytes)
|
||||
miner.ServerTarget = server_target
|
||||
miner.ServerTargetS = miner.Server.SJob.Target
|
||||
}
|
||||
|
||||
func Handle_subscribe_mona(miner *coin.MinerObj, id float64, extranonce1 string) {
|
||||
stratum.Handle_subscribe(miner, id, extranonce1)
|
||||
}
|
||||
|
||||
func HandleMinerSubscribe(miner *coin.MinerObj, id float64, extranonce1 string, msg string) {
|
||||
if strings.Contains(msg, "YxMiner") {
|
||||
miner.Protocol = "yxminer"
|
||||
} else {
|
||||
miner.Protocol = "standard"
|
||||
}
|
||||
Handle_subscribe_mona(miner, id, extranonce1)
|
||||
}
|
||||
|
||||
func HandleMinerAuth(miner *coin.MinerObj) {
|
||||
|
||||
}
|
||||
|
||||
func HandleMinerSubmit(miner *coin.MinerObj, id float64, miner_user string, job_id string, nonce2 string, ntime string, nonce string) (bool, bool, bool) {
|
||||
|
||||
accept_ok, submit_ok, handle_ok := handle_submit(miner, id, miner_user, job_id, nonce2, ntime, nonce)
|
||||
return accept_ok, submit_ok, handle_ok
|
||||
}
|
||||
|
||||
func set_difficulty(miner *coin.MinerObj) {
|
||||
miner.TxLock.Lock()
|
||||
var msg stratum.Difficulty_msg
|
||||
msg.ID = nil
|
||||
msg.Method = "mining.set_difficulty"
|
||||
msg.Params[0] = miner.Difficulty * 256
|
||||
body, err := json.Marshal(msg)
|
||||
if err != nil {
|
||||
miner.Server.Logg.Error("[server]", zap.String("Marshal", err.Error()))
|
||||
miner.TxLock.Unlock()
|
||||
return
|
||||
}
|
||||
|
||||
var body_string = string(body) + "\n"
|
||||
err = stratum.Conn_tx(miner.Conn, []byte(body_string))
|
||||
if err != nil {
|
||||
//delete(miner.Server.Miners, miner.MinerId)
|
||||
//miner.Server.Miners.Delete(miner.MinerId)
|
||||
}
|
||||
//miner.Server.Logg.Debug("[server]", zap.String("tx", body_string))
|
||||
miner.TxLock.Unlock()
|
||||
|
||||
if miner.ZlogInit {
|
||||
miner.Zlog.Info().Msg(body_string)
|
||||
}
|
||||
}
|
||||
|
||||
func SetDifficulty(miner *coin.MinerObj) {
|
||||
set_difficulty(miner)
|
||||
}
|
||||
|
||||
func MonaNotify(miner *coin.MinerObj) {
|
||||
stratum.Notify(miner)
|
||||
}
|
||||
|
||||
func Notify(miner *coin.MinerObj) {
|
||||
MonaNotify(miner)
|
||||
}
|
||||
|
||||
func HandleJobMsg(server *coin.ServerContext, Msg []byte) {
|
||||
var result msg.StratumJob
|
||||
server.Logg.Warn("[server]", zap.String("receive", "job"))
|
||||
|
||||
if err := json.Unmarshal(Msg, &result); err != nil {
|
||||
server.Logg.Error("[server]", zap.String("Unmarshal", err.Error()))
|
||||
return
|
||||
}
|
||||
server.SJob = msg.StratumJob(result)
|
||||
logg.Debug("[gbt]", zap.String("Target", server.SJob.Target))
|
||||
|
||||
logg.Debug("[gbt]", zap.Uint32("Height", server.SJob.Height), zap.String("Target", server.SJob.Target) /*, zap.Uint64("Timastamp", server.MonaJob.CurTime)*/)
|
||||
targetb, _ := hex.DecodeString(server.SJob.Target)
|
||||
logg.Debug("[gbt]", zap.Float64("network diff", utility.Target2Diff(utility.Reverse(targetb))))
|
||||
|
||||
server.NetHight = uint64(server.SJob.Height)
|
||||
server.NetTarget = server.SJob.Target
|
||||
|
||||
server.Miners.Range(func(k, v interface{}) bool {
|
||||
m, ok := v.(*(coin.MinerObj))
|
||||
if ok {
|
||||
//server.Logg.Info("[server]", zap.String("lock", "start"))
|
||||
m.TxLock.Lock()
|
||||
status := m.Status
|
||||
cmd := mona_parse_miner_notify(m, server.SJob)
|
||||
m.TxLock.Unlock()
|
||||
//server.Logg.Info("[server]", zap.String("lock", "end"))
|
||||
var need_notify bool = true
|
||||
if time.Now().Sub(m.ConnSetupTime) >= time.Duration(coin.CONN_EXPIRED_TIME)*time.Second {
|
||||
if (status != coin.MINER_STATUS_RUNNING) && (status != coin.MINER_STATUS_AUTHORIZED) {
|
||||
//m.Conn.Close()
|
||||
need_notify = false
|
||||
}
|
||||
}
|
||||
if need_notify {
|
||||
switch cmd {
|
||||
case 0: //extranonce 1 and extranonce2 size
|
||||
//TODO
|
||||
case 1: //notify
|
||||
MonaNotify(m)
|
||||
}
|
||||
}
|
||||
}
|
||||
return true
|
||||
})
|
||||
}
|
||||
|
||||
func IsMhsLow(miner *coin.MinerObj) bool {
|
||||
return miner.Mhs5M < 1
|
||||
}
|
||||
|
||||
func GetBlockInterval() int {
|
||||
return 75
|
||||
}
|
|
@ -0,0 +1,61 @@
|
|||
// hash_nexa.go
|
||||
package nexa
|
||||
|
||||
/*
|
||||
#cgo CFLAGS : -I../include
|
||||
#cgo LDFLAGS: -L../lib -lnexa
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include "nexaapi.h"
|
||||
*/
|
||||
import "C"
|
||||
import (
|
||||
//"encoding/hex"
|
||||
//"log"
|
||||
"unsafe"
|
||||
)
|
||||
|
||||
func BuildPowHash(h NexaBlockHeader) []byte {
|
||||
outputs := make([]byte, 32)
|
||||
inb := NexaBlockHeaderToBytes(h)
|
||||
//log.Println("[nexa]in", hex.EncodeToString(inb))
|
||||
in := (*C.uchar)(C.CBytes(inb))
|
||||
output := (*C.uchar)(C.malloc(32))
|
||||
C.nexa_hash(output, in)
|
||||
p := uintptr(unsafe.Pointer(output))
|
||||
for i := 0; i < 32; i++ {
|
||||
j := *(*byte)(unsafe.Pointer(p))
|
||||
outputs[i] = j
|
||||
p += unsafe.Sizeof(j)
|
||||
}
|
||||
C.free(unsafe.Pointer(output))
|
||||
C.free(unsafe.Pointer(in))
|
||||
outputs32 := make([]byte, 32)
|
||||
for i := 0; i < 32; i++ {
|
||||
outputs32[i] = outputs[i]
|
||||
}
|
||||
return outputs32
|
||||
}
|
||||
|
||||
func BuildPowHash12(h NexaBlockHeader12) []byte {
|
||||
outputs := make([]byte, 32)
|
||||
inb := NexaBlockHeaderToBytes12(h)
|
||||
//log.Println("[nexa]in", hex.EncodeToString(inb))
|
||||
in := (*C.uchar)(C.CBytes(inb))
|
||||
output := (*C.uchar)(C.malloc(32))
|
||||
C.nexa_hash12(output, in)
|
||||
p := uintptr(unsafe.Pointer(output))
|
||||
for i := 0; i < 32; i++ {
|
||||
j := *(*byte)(unsafe.Pointer(p))
|
||||
outputs[i] = j
|
||||
p += unsafe.Sizeof(j)
|
||||
}
|
||||
C.free(unsafe.Pointer(output))
|
||||
C.free(unsafe.Pointer(in))
|
||||
outputs32 := make([]byte, 32)
|
||||
for i := 0; i < 32; i++ {
|
||||
outputs32[i] = outputs[i]
|
||||
}
|
||||
return outputs32
|
||||
}
|
|
@ -0,0 +1,929 @@
|
|||
// nexa.go
|
||||
package nexa
|
||||
|
||||
import (
|
||||
//"database/sql"
|
||||
"encoding/binary"
|
||||
"encoding/hex"
|
||||
"encoding/json"
|
||||
|
||||
//"log"
|
||||
//"math"
|
||||
"math/big"
|
||||
"strings"
|
||||
|
||||
"fmt"
|
||||
"pool/internal/msg"
|
||||
"pool/internal/server/coin"
|
||||
"pool/internal/server/dbif"
|
||||
"pool/internal/stratum"
|
||||
"pool/internal/utility"
|
||||
"time"
|
||||
|
||||
_ "github.com/mattn/go-sqlite3"
|
||||
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
const SERVER_NEXA_VERSION string = "nexa v2.0i"
|
||||
|
||||
type NexaBlockHeader struct {
|
||||
Header [32]byte
|
||||
Nonce [16]byte
|
||||
}
|
||||
|
||||
func NexaBlockHeaderToBytes(h NexaBlockHeader) []byte {
|
||||
out := make([]byte, 49)
|
||||
for i := 0; i < 32; i++ {
|
||||
out[i] = h.Header[i]
|
||||
}
|
||||
out[32] = 0x10
|
||||
for i := 0; i < 16; i++ {
|
||||
out[33+i] = h.Nonce[i]
|
||||
}
|
||||
return out
|
||||
}
|
||||
|
||||
type NexaBlockHeader12 struct {
|
||||
Header [32]byte
|
||||
Nonce [12]byte
|
||||
}
|
||||
|
||||
func NexaBlockHeaderToBytes12(h NexaBlockHeader12) []byte {
|
||||
out := make([]byte, 45)
|
||||
for i := 0; i < 32; i++ {
|
||||
out[i] = h.Header[i]
|
||||
}
|
||||
out[32] = 0x0c
|
||||
for i := 0; i < 12; i++ {
|
||||
out[33+i] = h.Nonce[i]
|
||||
}
|
||||
return out
|
||||
}
|
||||
|
||||
type ServerNexaContext struct {
|
||||
ServerCtx *coin.ServerContext
|
||||
logg *zap.Logger
|
||||
|
||||
NexaJob msg.NexaStratumJob
|
||||
}
|
||||
|
||||
var logg *zap.Logger
|
||||
var ServerNexaCtx ServerNexaContext
|
||||
|
||||
type Notify_msg_nexa struct {
|
||||
ID interface{} `json:"id"`
|
||||
Method string `json:"method"`
|
||||
Params [5]interface{} `json:"params"`
|
||||
}
|
||||
|
||||
type Notify_msg_nexa_gpu struct {
|
||||
Jsonrpc string `json:"jsonrpc"`
|
||||
ID interface{} `json:"id"`
|
||||
Method string `json:"method"`
|
||||
Params [4]interface{} `json:"params"`
|
||||
}
|
||||
|
||||
func handle_submit(miner *coin.MinerObj, id float64, miner_user string, job_id string, nonce2 string, ntime string, nonce string) (bool, bool, bool) {
|
||||
var submit_item coin.BlockMsg
|
||||
/*var user_blk_item coin.UserBlockMsg*/
|
||||
var pool_blk_item coin.PoolBlkMsg
|
||||
|
||||
var blk_detail_height int64
|
||||
var blk_detail_hash string
|
||||
var blk_detail_success bool
|
||||
var blk_detail_miner_diff float64
|
||||
var blk_detail_pool_diff float64
|
||||
|
||||
if miner.Authorized != true {
|
||||
miner.ErrOthers = miner.ErrOthers + 1
|
||||
stratum.Handle_exception(miner, id, stratum.MINER_ERR_UNAUTH_WORKER)
|
||||
stratum.Send_reconnect_msg(miner)
|
||||
return false, false, false
|
||||
}
|
||||
var new_found bool = false
|
||||
var ack stratum.Submit_ack
|
||||
ack.ID = id
|
||||
ack.Result = true
|
||||
//logg.Warn("[server]", zap.String("user", miner.User), zap.String("miner", miner.Miner))
|
||||
//logg.Debug("[server]", zap.Float64("id", id), zap.String("job_id", job_id))
|
||||
//logg.Debug("[server]", zap.String("nonce2", nonce2), zap.String("ntime", ntime), zap.String("nonce", nonce))
|
||||
//stratum.UpdateJobs(miner)
|
||||
v, ok := miner.Jobs.Load(job_id)
|
||||
if ok {
|
||||
job := v.(msg.NexaStratumJob)
|
||||
|
||||
if job.Height < miner.CurHeight-1 {
|
||||
ack.Result = false
|
||||
stratum.Handle_exception(miner, id, stratum.MINER_ERR_STALED_JOB)
|
||||
miner.ErrStaleds = miner.ErrStaleds + 1
|
||||
return false, false, false
|
||||
}
|
||||
|
||||
//logg.Debug("[server]", zap.Uint64("ntime", nt), zap.Uint64("mintime", uint64(job.Mintime)), zap.Uint64("jobtime", jt_reverse))
|
||||
/*if nt < uint64(job.Mintime) {
|
||||
ack.Result = false
|
||||
util.Handle_exception(miner, id, util.MINER_ERR_TIME_TOO_OLD)
|
||||
} else if nt > jt_reverse+uint64(600) {
|
||||
ack.Result = false
|
||||
util.Handle_exception(miner, id, util.MINER_ERR_TIME_TOO_NEW)
|
||||
} else */{
|
||||
if (miner.LastNonce != nonce) || (miner.LastHeader != job.Header) {
|
||||
miner.LastHeader = job.Header
|
||||
miner.LastNonce = nonce
|
||||
job.Nonce = nonce
|
||||
job.Extranonce2 = nonce2
|
||||
logg.Debug("[server]", zap.Uint32("height", job.Height), zap.String("target", job.Target))
|
||||
|
||||
phb, _ := hex.DecodeString(job.Header) // 区块头 []byte
|
||||
nb, _ := hex.DecodeString(nonce) // nonce []byte
|
||||
|
||||
var calc_hash []byte
|
||||
if miner.Protocol == "yxminer" {
|
||||
var header NexaBlockHeader
|
||||
for i := 0; i < 32; i++ {
|
||||
header.Header[i] = phb[i]
|
||||
}
|
||||
for i := 0; i < 16; i++ {
|
||||
header.Nonce[i] = nb[i]
|
||||
}
|
||||
submit_item.Header = hex.EncodeToString(NexaBlockHeaderToBytes(header))
|
||||
calc_hash = BuildPowHash(header)
|
||||
} else if miner.Protocol == "bzminer" || miner.Protocol == "lolminer" || miner.Protocol == "Rigel" || miner.Protocol == "WildRig" {
|
||||
var header NexaBlockHeader12
|
||||
for i := 0; i < 32; i++ {
|
||||
header.Header[i] = phb[i]
|
||||
}
|
||||
for i := 0; i < 12; i++ {
|
||||
header.Nonce[i] = nb[i]
|
||||
}
|
||||
submit_item.Header = hex.EncodeToString(NexaBlockHeaderToBytes12(header))
|
||||
calc_hash = BuildPowHash12(header)
|
||||
} else {
|
||||
var header NexaBlockHeader
|
||||
for i := 0; i < 32; i++ {
|
||||
header.Header[i] = phb[i]
|
||||
}
|
||||
for i := 0; i < 16; i++ {
|
||||
header.Nonce[i] = nb[i]
|
||||
}
|
||||
submit_item.Header = hex.EncodeToString(NexaBlockHeaderToBytes(header))
|
||||
calc_hash = BuildPowHash(header)
|
||||
}
|
||||
|
||||
logg.Debug("[server]", zap.String("hash in", submit_item.Header))
|
||||
//calc_hash, header := util.BuildBlockHash(&(job), true, Build_PowHash)
|
||||
logg.Debug("[server]", zap.String("calc_hash", hex.EncodeToString(calc_hash)) /*, zap.String("merkle root", hex.EncodeToString(merkle_root))*/)
|
||||
submit_target := new(big.Int)
|
||||
//submit_target.SetBytes(common.Reverse(calc_hash))
|
||||
|
||||
//hashs, _ := utility.ReverseS(hex.EncodeToString(calc_hash))
|
||||
|
||||
//hashb, _ := hex.DecodeString(hashs)
|
||||
//submit_target.SetBytes(hashb)
|
||||
submit_target.SetBytes(calc_hash)
|
||||
/*logg.Debug("[server]", zap.String("pow", hex.EncodeToString(submit_target.Bytes())), zap.String("target", hex.EncodeToString(miner.Target.Bytes())))
|
||||
if submit_target.Cmp(miner.Target) > 0 {*/
|
||||
//calc_diff := Target2Diff(common.Reverse(calc_hash))
|
||||
calc_diff := utility.Target2Diff(calc_hash)
|
||||
//log.Printf("diff,calc_diff:%f difficulty:%f ", calc_diff, miner.Difficulty)
|
||||
logg.Warn("[server]", zap.String("user", miner.User+"."+miner.Miner), zap.Float64("target diff", miner.Difficulty), zap.Float64("submit diff", calc_diff))
|
||||
//logg.Debug("[server]", zap.String("target", miner.Target.String()), zap.Any("bytes", miner.Target.Bytes()))
|
||||
//logg.Info("[server]", zap.Float64("target diff", miner.Difficulty), zap.Float64("submit diff", calc_diff), zap.String("target", hex.EncodeToString(miner.Target.Bytes())))
|
||||
|
||||
//if calc_diff < miner.Difficulty {
|
||||
if calc_diff < job.JobDifficulty {
|
||||
//gpu protocol handler
|
||||
/*for i := 0; i < 8; i++ {
|
||||
temp_nonce := header.Nonce[8+i]
|
||||
header.Nonce[8+i] = header.Nonce[i]
|
||||
header.Nonce[i] = temp_nonce
|
||||
}
|
||||
submit_item.Header = hex.EncodeToString(NexaBlockHeaderToBytes(header))
|
||||
calc_hash = BuildPowHash(header)
|
||||
logg.Debug("[server]", zap.String("hash in", hex.EncodeToString(NexaBlockHeaderToBytes(header))))*/
|
||||
//logg.Debug("[server]", zap.String("calc_hash", hex.EncodeToString(calc_hash)) /*, zap.String("merkle root", hex.EncodeToString(merkle_root))*/)
|
||||
//submit_target = new(big.Int)
|
||||
/*submit_target.SetBytes(calc_hash)
|
||||
calc_diff = utility.Target2Diff(calc_hash)
|
||||
logg.Warn("[server]", zap.String("user", miner.User+"."+miner.Miner), zap.Float64("target diff", miner.Difficulty), zap.Float64("submit diff", calc_diff))
|
||||
if calc_diff < miner.Difficulty {
|
||||
*/
|
||||
ack.Result = false
|
||||
miner.ErrLowDiffs = miner.ErrLowDiffs + 1
|
||||
stratum.Handle_exception(miner, id, stratum.MINER_ERR_LOW_DIF_SHARE)
|
||||
return false, false, false
|
||||
//}
|
||||
|
||||
}
|
||||
//logg.Warn("[server]", zap.String("pow", hex.EncodeToString(submit_target.Bytes())), zap.String("target", hex.EncodeToString(miner.ServerTarget.Bytes())))
|
||||
//submit_target.Text(16)
|
||||
/*if submit_target.Cmp(miner.ServerTarget) <= 0 {*/
|
||||
//log.Println("[server]server_target", miner.ServerTargetS)
|
||||
//stb, _ := hex.DecodeString(miner.ServerTargetS)
|
||||
stb, _ := hex.DecodeString(job.Target)
|
||||
//logg.Info("[server]", zap.String("target", job.Target))
|
||||
//server_diff := Target2Diff(common.Reverse(stb))
|
||||
server_diff := utility.Target2Diff(utility.Reverse(stb))
|
||||
//log.Printf("[server]server_diff %f", server_diff)
|
||||
//logg.Info("[server]", zap.Float64("calc_diff", calc_diff), zap.Float64("miner.Difficulty", miner.Difficulty), zap.Float64("server_diff", server_diff))
|
||||
//logg.Debug("[server]", zap.String("ServerTargetS", miner.ServerTargetS))
|
||||
network_target := new(big.Int)
|
||||
network_target.SetBytes(stb)
|
||||
logg.Info("[server]", zap.Float64("calc_diff", calc_diff), zap.Float64("miner.Difficulty", miner.Difficulty), zap.Float64("server_diff", server_diff))
|
||||
logg.Debug("[server]", zap.String("submit_target", hex.EncodeToString(submit_target.Bytes())), zap.String("network_target", hex.EncodeToString(network_target.Bytes())), zap.String("target", hex.EncodeToString(miner.ServerTarget.Bytes())), zap.Int("cmp", network_target.Cmp(submit_target)))
|
||||
|
||||
submit_item.Hash = hex.EncodeToString(calc_hash)
|
||||
submit_item.Target = hex.EncodeToString(miner.Target.Bytes())
|
||||
submit_item.Submit_target = hex.EncodeToString(calc_hash)
|
||||
submit_item.Height = int64(job.Height)
|
||||
submit_item.Pow = hex.EncodeToString(calc_hash)
|
||||
submit_item.Net_target = hex.EncodeToString(network_target.Bytes())
|
||||
|
||||
/*user_blk_item.Height = int64(job.Height)
|
||||
user_blk_item.Hash = hex.EncodeToString(calc_hash)
|
||||
user_blk_item.Pow = hex.EncodeToString(calc_hash)
|
||||
user_blk_item.Net_target = hex.EncodeToString(network_target.Bytes())*/
|
||||
|
||||
pool_blk_item.Height = int64(job.Height)
|
||||
pool_blk_item.Hash = hex.EncodeToString(calc_hash)
|
||||
pool_blk_item.Pow = hex.EncodeToString(calc_hash)
|
||||
pool_blk_item.Net_target = hex.EncodeToString(network_target.Bytes())
|
||||
|
||||
blk_detail_height = int64(job.Height)
|
||||
blk_detail_hash = hex.EncodeToString(calc_hash)
|
||||
blk_detail_success = false
|
||||
blk_detail_miner_diff = miner.Difficulty
|
||||
blk_detail_pool_diff = miner.Server.RefDifficulty
|
||||
|
||||
if ack.Result == true {
|
||||
/*if miner.CurHeight != 0 && miner.CurHeight == job.Height {
|
||||
return
|
||||
}*/
|
||||
|
||||
//if true {
|
||||
if (calc_diff >= server_diff) || (network_target.Cmp(submit_target) >= 0) {
|
||||
miner.Server.SubIdx++
|
||||
Produce_block_submit(miner /*header,*/, &job, submit_item.Hash, miner.Server.SubIdx)
|
||||
miner.SubmitIndex++
|
||||
miner.Submits = miner.Submits + 1
|
||||
//miner.CurHeight = job.Height
|
||||
new_found = true
|
||||
}
|
||||
}
|
||||
} else {
|
||||
miner.LastHeader = job.Header
|
||||
miner.LastNonce = nonce
|
||||
ack.Result = false
|
||||
stratum.Handle_exception(miner, id, stratum.MINER_ERR_DUP_SHARE)
|
||||
miner.ErrDuplicates = miner.ErrDuplicates + 1
|
||||
return false, false, false
|
||||
}
|
||||
}
|
||||
} else {
|
||||
ack.Result = false
|
||||
stratum.Handle_exception(miner, id, stratum.MINER_ERR_NOT_FOUND_JOB)
|
||||
miner.ErrStaleds = miner.ErrStaleds + 1
|
||||
return false, false, false
|
||||
}
|
||||
|
||||
miner.LastJobId = job_id
|
||||
|
||||
ack.Error = nil
|
||||
body, err := json.Marshal(ack)
|
||||
if err != nil {
|
||||
logg.Error("[server]", zap.String("Marshal", err.Error()))
|
||||
miner.ErrOthers = miner.ErrOthers + 1
|
||||
stratum.Handle_exception(miner, id, stratum.MINER_ERR_UNKNOWN)
|
||||
return false, false, false
|
||||
}
|
||||
|
||||
var body_string = string(body) + "\n"
|
||||
err = stratum.Conn_tx(miner.Conn, []byte(body_string))
|
||||
if err != nil {
|
||||
//miner.Server.Miners.Delete(miner.MinerId)
|
||||
}
|
||||
if miner.ZlogInit {
|
||||
miner.Zlog.Info().Msg(body_string)
|
||||
}
|
||||
logg.Debug("[server]", zap.String("tx", body_string))
|
||||
miner.TxLock.Lock()
|
||||
miner.Status = coin.MINER_STATUS_RUNNING
|
||||
miner.TxLock.Unlock()
|
||||
|
||||
if ack.Result {
|
||||
|
||||
miner.Accepts += miner.Difficulty
|
||||
miner.M5Accepts += miner.Difficulty
|
||||
|
||||
miner.VarDiffOpt.SubmitShares += miner.Difficulty
|
||||
|
||||
} else {
|
||||
miner.Rejects += miner.Difficulty
|
||||
|
||||
}
|
||||
now := time.Now()
|
||||
if miner.Server.Config.Diff.Filter == "kalman" {
|
||||
if ack.Result {
|
||||
share_interval := now.Sub(miner.LastSubmitime).Seconds()
|
||||
mhs := miner.Difficulty * share_interval
|
||||
diff_next, kalman_p := miner.DiffHandler.Handler(miner.Difficulty, share_interval)
|
||||
mhs_est := diff_next * miner.Server.Config.Diff.DiffAdjustInterval
|
||||
|
||||
ratio := diff_next / miner.Difficulty
|
||||
if ratio > 0 {
|
||||
if now.Sub(miner.StartSubmitTime).Seconds() > 180 {
|
||||
if ratio >= 2 {
|
||||
//miner.DifficultyNext = math.Ceil(diff_next*100) / 100
|
||||
miner.DifficultyNext = diff_next * 10000000 / 10000000
|
||||
} else if ratio <= 0.5 {
|
||||
//miner.DifficultyNext = math.Ceil(diff_next*100) / 100
|
||||
miner.DifficultyNext = diff_next * 10000000 / 10000000
|
||||
} else {
|
||||
}
|
||||
} else {
|
||||
//miner.DifficultyNext = math.Ceil(diff_next*100) / 100
|
||||
miner.DifficultyNext = diff_next * 10000000 / 10000000
|
||||
/*if ratio >= 1.1 {
|
||||
miner.DifficultyNext = math.Ceil(diff_next*100) / 100
|
||||
} else if ratio <= 0.8 {
|
||||
miner.DifficultyNext = math.Ceil(diff_next*100) / 100
|
||||
} else {
|
||||
}*/
|
||||
}
|
||||
}
|
||||
if miner.DifficultyNext > 0.0 {
|
||||
if miner.DifficultyNext < miner.VarDiffOpt.MinDiff {
|
||||
miner.DifficultyNext = miner.VarDiffOpt.MinDiff
|
||||
} else if miner.DifficultyNext > miner.VarDiffOpt.MaxDiff {
|
||||
miner.DifficultyNext = miner.VarDiffOpt.MaxDiff
|
||||
}
|
||||
}
|
||||
//miner.VarDiffOpt.LastCalcTime = now
|
||||
|
||||
if miner.Server.Config.Diff.Dbg {
|
||||
coin.New_diff_into_db(miner.User, miner.Miner, fmt.Sprint(miner.MinerIndex), miner.Difficulty, diff_next, kalman_p, share_interval, mhs, mhs_est)
|
||||
}
|
||||
|
||||
//log.Println("diff adjust", ratio, diff_next, miner.Difficulty, miner.DifficultyNext)
|
||||
}
|
||||
} else {
|
||||
// submit time < DiffAdjustInterval,then up adjust diff
|
||||
if now.Sub(miner.LastSubmitime).Seconds() < miner.Server.Config.Diff.DiffAdjustInterval {
|
||||
if ack.Result {
|
||||
if miner.VarDiffOpt.Uptimes++; miner.VarDiffOpt.Uptimes >= coin.DIFFICULTY_WAIT_TIMES {
|
||||
coin.VarAdjustDifficulty(miner, coin.UP_DIFF)
|
||||
miner.VarDiffOpt.LastCalcTime = now
|
||||
}
|
||||
}
|
||||
} else {
|
||||
miner.VarDiffOpt.Uptimes = 0
|
||||
}
|
||||
|
||||
// submit time > 2 * DiffAdjustInterval,then down adjust diff
|
||||
if now.Sub(miner.LastSubmitime).Seconds() > miner.Server.Config.Diff.DiffAdjustInterval*2 {
|
||||
if ack.Result {
|
||||
if miner.VarDiffOpt.Downtimes++; miner.VarDiffOpt.Downtimes >= coin.DIFFICULTY_WAIT_TIMES {
|
||||
coin.VarAdjustDifficulty(miner, coin.DOWN_DIFF)
|
||||
miner.VarDiffOpt.LastCalcTime = now
|
||||
}
|
||||
}
|
||||
} else {
|
||||
miner.VarDiffOpt.Downtimes = 0
|
||||
}
|
||||
}
|
||||
if ack.Result {
|
||||
miner.LastSubmitime = now
|
||||
miner.VarDiffOpt.LastSubmitTime = now
|
||||
}
|
||||
var duration float64 = float64(now.Sub(miner.StartSubmitTime)) / 1000000000
|
||||
|
||||
if duration < 1 {
|
||||
duration = 1
|
||||
}
|
||||
diffOneShareHashesAvg := uint64(0x00000000FFFFFFFF)
|
||||
miner.AverageHashrate = miner.Accepts * float64(diffOneShareHashesAvg) / duration / 1000000
|
||||
var m5_duration float64 = float64(now.Sub(miner.M5SubmitTime)) / 1000000000
|
||||
if m5_duration >= float64(time.Minute*5)/1000000000 {
|
||||
miner.M5SubmitTime = now
|
||||
miner.M5Hashrate = miner.M5Accepts * float64(diffOneShareHashesAvg) / m5_duration / 1000000
|
||||
logg.Info("[server]", zap.Float64("Accepts", miner.Accepts), zap.Float64("M5Accepts", miner.M5Accepts), zap.Float64("M5Hashrate(MH/S)", miner.M5Hashrate))
|
||||
miner.M5Accepts = 0
|
||||
}
|
||||
|
||||
//logg.Warn("[server]", zap.Float64("Accepts", miner.Accepts), zap.Float64("Rejects", miner.Rejects))
|
||||
//logg.Info("[server]", zap.Float64("TargetShares", miner.VarDiffOpt.TargetShares), zap.Float64("MinShares", miner.VarDiffOpt.MinShares), zap.Float64("MaxShares", miner.VarDiffOpt.MaxShares), zap.Float64("SubmitShares", miner.VarDiffOpt.SubmitShares))
|
||||
//logg.Warn("[server]", zap.Float64("reject rate", miner.Rejects/(miner.Accepts+miner.Rejects)), zap.Float64("Hashrate(MH/S)", miner.AverageHashrate))
|
||||
logg.Warn("[server]", zap.Float64("M5Accepts", miner.M5Accepts), zap.Float64("M5Hashrate(MH/S)", miner.M5Hashrate))
|
||||
|
||||
//logg.Info("[server]", zap.Float64("LastCalcTime", float64(now.Sub(miner.VarDiffOpt.LastCalcTime))/1000000000))
|
||||
//calc acutal submit shares period of time, then compare with target shares and adjust diff
|
||||
|
||||
if miner.Server.Config.Diff.Filter == "kalman" {
|
||||
} else {
|
||||
if float64(now.Sub(miner.VarDiffOpt.LastCalcTime))/1000000000 >= miner.VarDiffOpt.AdjustTime {
|
||||
coin.VarAdjustDifficulty(miner, coin.UPDATE_DIFF)
|
||||
miner.VarDiffOpt.LastCalcTime = now
|
||||
}
|
||||
}
|
||||
|
||||
if new_found {
|
||||
//util.StaleAllJobs(miner)
|
||||
|
||||
/*user_blk_item.User = miner.User
|
||||
user_blk_item.Miner = miner.Miner
|
||||
user_blk_item.Index = fmt.Sprint(miner.MinerIndex)
|
||||
|
||||
user_blk_item.Submit = "y"
|
||||
user_blk_item.Success = false
|
||||
user_blk_item.Accepts = miner.Accepts
|
||||
user_blk_item.Rejects = miner.Rejects
|
||||
user_blk_item.Reward = 0
|
||||
user_blk_item.Fee = 0
|
||||
user_blk_item.Nonce = nonce
|
||||
user_blk_item.SubIdx = miner.Server.SubIdx
|
||||
dbif.NotifyUsersBlkStatsDb2(miner, &user_blk_item)*/
|
||||
|
||||
pool_blk_item.Submit = "y"
|
||||
pool_blk_item.Success = false
|
||||
pool_blk_item.Accepts = miner.Accepts
|
||||
pool_blk_item.Rejects = miner.Rejects
|
||||
pool_blk_item.Reward = 0
|
||||
pool_blk_item.Fee = 0
|
||||
pool_blk_item.Nonce = nonce
|
||||
pool_blk_item.SubIdx = miner.Server.SubIdx
|
||||
dbif.NotifyPoolBlkStatsDb2(miner.Server, &pool_blk_item)
|
||||
|
||||
}
|
||||
|
||||
if ack.Result {
|
||||
|
||||
submit_item.Success = false
|
||||
if new_found {
|
||||
submit_item.Submit = "y"
|
||||
submit_item.SubIdx = miner.Server.SubIdx
|
||||
} else {
|
||||
submit_item.Submit = "n"
|
||||
submit_item.SubIdx = -1
|
||||
}
|
||||
|
||||
submit_item.Accepts = miner.Accepts
|
||||
submit_item.Total_accepts = miner.Accepts
|
||||
submit_item.Rejects = miner.Rejects
|
||||
submit_item.Total_rejects = miner.Rejects
|
||||
submit_item.Reward = 0
|
||||
submit_item.Fee = 0
|
||||
submit_item.Nonce = nonce
|
||||
|
||||
//dbif.NotifyMinerDb2(miner, &submit_item)
|
||||
|
||||
dbif.NotifyBlkDetailDb(miner, blk_detail_height, blk_detail_hash, blk_detail_success, blk_detail_miner_diff, blk_detail_pool_diff, nonce, submit_item.SubIdx)
|
||||
return true, new_found, true
|
||||
}
|
||||
return false, false, true
|
||||
}
|
||||
|
||||
func Produce_block_submit(miner *coin.MinerObj /*header NexaBlockHeader,*/, job *msg.NexaStratumJob, PowHash string, SubIdx int64) {
|
||||
var nm msg.BlockNexaMsg
|
||||
nm.Id = job.Id
|
||||
nm.Header = job.Header
|
||||
nm.Nonce = job.Nonce
|
||||
nm.Pow = PowHash
|
||||
nm.SubIdx = SubIdx
|
||||
nm.User = miner.User
|
||||
nm.Miner = miner.Miner
|
||||
nm.Index = fmt.Sprint(miner.MinerIndex)
|
||||
body, err := json.Marshal(nm)
|
||||
if err != nil {
|
||||
logg.Error("[server]", zap.String("failed to Marshal job", err.Error()))
|
||||
return
|
||||
}
|
||||
blk := string(body)
|
||||
//Add Height
|
||||
heightb := utility.Uint32ToByte(job.Height)
|
||||
heights := hex.EncodeToString(heightb)
|
||||
blk += heights
|
||||
var Height uint32 = utility.ByteToUint32(heightb)
|
||||
logg.Warn("[server]", zap.Uint32("Height", Height))
|
||||
|
||||
//Add SubmitIndex
|
||||
indexb := utility.Uint32ToByte(miner.SubmitIndex)
|
||||
indexs := hex.EncodeToString(indexb)
|
||||
blk += indexs
|
||||
var SubmitIndex uint32 = utility.ByteToUint32(indexb)
|
||||
logg.Info("[server]", zap.Uint32("SubmitIndex", SubmitIndex))
|
||||
logg.Info("[server]", zap.String("blk", blk))
|
||||
|
||||
if miner.Server.PubCh == nil {
|
||||
miner.Server.PubCh = utility.InitZmqPub(miner.Server.Config.Zmq.Pub)
|
||||
}
|
||||
if miner.Server.PubCh != nil {
|
||||
//miner.Server.PubCh.SendChan <- [][]byte{[]byte("blknexa"), []byte(blk)}
|
||||
err := miner.Server.PubCh.SendMessage([][]byte{[]byte("blknexa"), []byte(blk)})
|
||||
if err != nil {
|
||||
miner.Server.PubCh.Destroy()
|
||||
miner.Server.PubCh = nil
|
||||
logg.Info("[server]", zap.String("blk", err.Error()))
|
||||
} else {
|
||||
logg.Info("[server]", zap.String("blk", "sent"))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// server-->miner
|
||||
func nexa_parse_miner_notify(miner *coin.MinerObj, msg msg.NexaStratumJob) int {
|
||||
if miner.NexaJob.Height != msg.Height {
|
||||
miner.Job.IsClean = true
|
||||
}
|
||||
miner.NexaJob = msg
|
||||
miner.NexaJob.Extranonce1 = miner.Job.Extranonce1
|
||||
miner.Job.Extranonce2_size = msg.Extranonce2_size
|
||||
|
||||
//miner.Server.Logg.Info("[server]", zap.Int32("miner.Version", miner.Version), zap.Int32("msg.Version", msg.Version))
|
||||
return 1
|
||||
}
|
||||
|
||||
func Init(server *coin.ServerContext) {
|
||||
ServerNexaCtx.ServerCtx = server
|
||||
logg = server.Logg
|
||||
logg.Info("[server]", zap.String("server_nexa_version", SERVER_NEXA_VERSION))
|
||||
coin.Init_diff_db()
|
||||
}
|
||||
|
||||
func Start() {
|
||||
|
||||
}
|
||||
|
||||
func Stop() {
|
||||
coin.DiffStop()
|
||||
}
|
||||
|
||||
func InitMiner(miner *coin.MinerObj) {
|
||||
be1 := make([]byte, 8)
|
||||
binary.LittleEndian.PutUint64(be1, (miner.Server.Extranonce1 /* + 0x81000000*/))
|
||||
miner.Job.Extranonce1 = hex.EncodeToString(be1)
|
||||
miner.NexaJob.Extranonce1 = miner.Job.Extranonce1
|
||||
miner.Server.Extranonce1++
|
||||
|
||||
target, err := utility.DiffToTarget(miner.Difficulty)
|
||||
if err != nil {
|
||||
logg.Error("[server]", zap.String("DiffToTarget", err.Error()))
|
||||
return
|
||||
}
|
||||
miner.Target = target
|
||||
logg.Debug("[target]", zap.String("target", hex.EncodeToString(target.Bytes())), zap.Float64("diff", miner.Difficulty))
|
||||
|
||||
server_target := new(big.Int)
|
||||
t_bytes, err := hex.DecodeString(miner.NexaJob.Target)
|
||||
if err != nil {
|
||||
logg.Error("[server]", zap.String("DecodeString", err.Error()))
|
||||
return
|
||||
}
|
||||
//server_target.SetBytes(common.Reverse(t_bytes))
|
||||
server_target.SetBytes(t_bytes)
|
||||
miner.ServerTarget = server_target
|
||||
miner.ServerTargetS = miner.Server.SJob.Target
|
||||
|
||||
miner.NexaJob = miner.Server.NexaJob
|
||||
}
|
||||
|
||||
func Handle_subscribe_nexa(miner *coin.MinerObj, id float64, extranonce1 string) {
|
||||
miner.TxLock.Lock()
|
||||
|
||||
var result [3]interface{}
|
||||
//result[0] = results
|
||||
result[0] = nil
|
||||
if miner.Protocol == "yxminer" {
|
||||
result[1] = extranonce1
|
||||
} else if miner.Protocol == "bzminer" || miner.Protocol == "lolminer" || miner.Protocol == "Rigel" || miner.Protocol == "WildRig" {
|
||||
var result2 [2]interface{}
|
||||
var result3 [2]interface{}
|
||||
var result4 [2]interface{}
|
||||
result3[0] = "mining.set_difficulty"
|
||||
if miner.Protocol == "WildRig" {
|
||||
result3[1] = extranonce1[:8]
|
||||
} else {
|
||||
result3[1] = miner.Difficulty
|
||||
}
|
||||
result4[0] = "mining.notify"
|
||||
//result4[1] = extranonce1
|
||||
result4[1] = extranonce1[:8]
|
||||
result2[0] = result3
|
||||
result2[1] = result4
|
||||
result[0] = result2
|
||||
|
||||
result[1] = extranonce1[:8]
|
||||
//result[0] = fmt.Sprintf("[[%s,%.2f],[%s,%s]]", "mining.set_difficulty", miner.Difficulty, "mining.notify", extranonce1)
|
||||
} else {
|
||||
result[1] = extranonce1
|
||||
}
|
||||
//result[1] = miner.Job.Extranonce1
|
||||
|
||||
miner.Server.Logg.Debug("[server]", zap.Uint64("extra2", miner.Job.Extranonce2_size))
|
||||
if miner.Job.Extranonce2_size == 0 {
|
||||
result[2] = 4
|
||||
} else {
|
||||
if miner.Protocol == "yxminer" {
|
||||
result[2] = miner.Job.Extranonce2_size
|
||||
} else if miner.Protocol == "bzminer" || miner.Protocol == "lolminer" || miner.Protocol == "Rigel" || miner.Protocol == "WildRig" {
|
||||
result[2] = 4
|
||||
} else {
|
||||
result[2] = miner.Job.Extranonce2_size
|
||||
}
|
||||
}
|
||||
|
||||
if extranonce1 == "" {
|
||||
miner.TxLock.Unlock()
|
||||
stratum.Handle_exception(miner, id, stratum.MINER_ERR_NOT_SUBSCRIBED)
|
||||
return
|
||||
}
|
||||
|
||||
var body []byte
|
||||
var err error
|
||||
if miner.Protocol == "yxminer" {
|
||||
var ack stratum.Subscribe_reply
|
||||
ack.ID = id
|
||||
ack.Result = result
|
||||
ack.Error = nil
|
||||
body, err = json.Marshal(ack)
|
||||
if err != nil {
|
||||
miner.Server.Logg.Error("[server]", zap.String("Marshal", err.Error()))
|
||||
miner.TxLock.Unlock()
|
||||
return
|
||||
}
|
||||
} else if miner.Protocol == "bzminer" || miner.Protocol == "lolminer" || miner.Protocol == "Rigel" || miner.Protocol == "WildRig" {
|
||||
var ack stratum.SubscribeGpu_reply
|
||||
ack.Jsonrpc = "2.0"
|
||||
ack.ID = id
|
||||
ack.Result = result
|
||||
ack.Error = nil
|
||||
body, err = json.Marshal(ack)
|
||||
if err != nil {
|
||||
miner.Server.Logg.Error("[server]", zap.String("Marshal", err.Error()))
|
||||
miner.TxLock.Unlock()
|
||||
return
|
||||
}
|
||||
} else {
|
||||
var ack stratum.Subscribe_reply
|
||||
ack.ID = id
|
||||
ack.Result = result
|
||||
ack.Error = nil
|
||||
body, err = json.Marshal(ack)
|
||||
if err != nil {
|
||||
miner.Server.Logg.Error("[server]", zap.String("Marshal", err.Error()))
|
||||
miner.TxLock.Unlock()
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
var body_string = string(body) + "\n"
|
||||
miner.Server.Logg.Debug("[server]", zap.String("tx", body_string))
|
||||
err = stratum.Conn_tx(miner.Conn, []byte(body_string))
|
||||
if err != nil {
|
||||
//delete(miner.Server.Miners, miner.MinerId)
|
||||
//miner.Server.Miners.Delete(miner.MinerId)
|
||||
}
|
||||
miner.Status = coin.MINER_STATUS_SUBSCRIBED
|
||||
miner.TxLock.Unlock()
|
||||
|
||||
if miner.ZlogInit {
|
||||
miner.Zlog.Info().Msg(body_string)
|
||||
}
|
||||
}
|
||||
|
||||
func HandleMinerSubscribe(miner *coin.MinerObj, id float64, extranonce1 string, msg string) {
|
||||
if strings.Contains(msg, "YxMiner") {
|
||||
miner.Protocol = "yxminer"
|
||||
} else if strings.Contains(msg, "BzMiner") {
|
||||
miner.Protocol = "bzminer"
|
||||
} else if strings.Contains(msg, "lolMiner") {
|
||||
miner.Protocol = "lolminer"
|
||||
} else if strings.Contains(msg, "Rigel") {
|
||||
miner.Protocol = "Rigel"
|
||||
} else if strings.Contains(msg, "WildRig") {
|
||||
miner.Protocol = "WildRig"
|
||||
} else {
|
||||
miner.Protocol = "standard"
|
||||
}
|
||||
Handle_subscribe_nexa(miner, id, extranonce1)
|
||||
}
|
||||
|
||||
func HandleMinerAuth(miner *coin.MinerObj) {
|
||||
|
||||
}
|
||||
|
||||
func HandleMinerSubmit(miner *coin.MinerObj, id float64, miner_user string, job_id string, nonce2 string, ntime string, nonce string) (bool, bool, bool) {
|
||||
if miner.Protocol == "yxminer" {
|
||||
} else if miner.Protocol == "bzminer" || miner.Protocol == "lolminer" || miner.Protocol == "Rigel" || miner.Protocol == "WildRig" {
|
||||
nonce = nonce2 + nonce
|
||||
} else {
|
||||
}
|
||||
accept_ok, submit_ok, handle_ok := handle_submit(miner, id, miner_user, job_id, nonce2, ntime, nonce)
|
||||
return accept_ok, submit_ok, handle_ok
|
||||
}
|
||||
|
||||
func SetDifficulty(miner *coin.MinerObj) {
|
||||
if miner.Protocol == "yxminer" {
|
||||
stratum.Set_difficulty(miner)
|
||||
} else {
|
||||
stratum.Set_difficulty_nexa(miner)
|
||||
}
|
||||
}
|
||||
|
||||
func NexaNotify(miner *coin.MinerObj) {
|
||||
miner.TxLock.Lock()
|
||||
if !((miner.Status == coin.MINER_STATUS_AUTHORIZED) || (miner.Status == coin.MINER_STATUS_RUNNING)) {
|
||||
miner.TxLock.Unlock()
|
||||
return
|
||||
}
|
||||
miner.TxLock.Unlock()
|
||||
if miner.DifficultyNext > -1 {
|
||||
ratio := miner.DifficultyNext / miner.Difficulty
|
||||
if ratio > 1.1 || ratio < 0.9 {
|
||||
miner.Difficulty = miner.DifficultyNext
|
||||
miner.DifficultyNext = -1
|
||||
if miner.Protocol == "yxminer" {
|
||||
stratum.Set_difficulty(miner)
|
||||
} else {
|
||||
stratum.Set_difficulty_nexa(miner)
|
||||
}
|
||||
logg.Info("[gbt]", zap.Float64("update Diff", miner.Difficulty))
|
||||
} else {
|
||||
miner.DifficultyNext = -1
|
||||
}
|
||||
}
|
||||
miner.TxLock.Lock()
|
||||
//log.Println("[server]extra1, id", miner.Job.Extranonce1, miner.Job.Job_id, miner.MinerId)
|
||||
var params [5]interface{}
|
||||
idb := make([]byte, 4)
|
||||
binary.BigEndian.PutUint32(idb, miner.JobId)
|
||||
miner.Job.Job_id = hex.EncodeToString(idb)
|
||||
params[0] = miner.Job.Job_id
|
||||
params[1] = miner.NexaJob.Header
|
||||
//params[3] = miner.NexaJob.Height
|
||||
if miner.Protocol == "yxminer" {
|
||||
params[2] = miner.NexaJob.NBits
|
||||
params[3] = miner.NexaJob.CurTime
|
||||
} else if miner.Protocol == "bzminer" || miner.Protocol == "lolminer" || miner.Protocol == "Rigel" || miner.Protocol == "WildRig" {
|
||||
params[2] = miner.NexaJob.Height
|
||||
params[3] = miner.NexaJob.NBits
|
||||
} else {
|
||||
params[2] = miner.NexaJob.NBits
|
||||
params[3] = miner.NexaJob.CurTime
|
||||
}
|
||||
|
||||
miner.CurHeight = miner.NexaJob.Height
|
||||
|
||||
if miner.Reconnect {
|
||||
params[4] = true
|
||||
miner.Reconnect = false
|
||||
} else {
|
||||
params[4] = miner.Job.IsClean
|
||||
}
|
||||
miner.NexaJob.JobDifficulty = miner.Difficulty
|
||||
|
||||
miner.Jobs.LoadOrStore(miner.Job.Job_id, miner.NexaJob)
|
||||
|
||||
/*var entry coin.JobListEntry
|
||||
entry.Job_id = miner.Job.Job_id
|
||||
entry.Ts = time.Now()
|
||||
|
||||
miner.LockForJobs.Lock()
|
||||
miner.JobList.PushFront(entry)
|
||||
var removes string = ""
|
||||
if miner.JobList.Len() > int(coin.LOCAL_JOBS_TOTAL_SIZE) {
|
||||
e := miner.JobList.Back()
|
||||
entry := e.Value.(coin.JobListEntry)
|
||||
removes = entry.Job_id
|
||||
miner.JobList.Remove(e)
|
||||
}
|
||||
miner.LockForJobs.Unlock()
|
||||
|
||||
if len(removes) > 0 {
|
||||
miner.Jobs.Delete(removes)
|
||||
}*/
|
||||
stratum.AddAndUpdateJob(miner)
|
||||
|
||||
stratum.UpdateJobs(miner)
|
||||
|
||||
//miner.LastJobId = miner.Job.Job_id
|
||||
miner.JobId++
|
||||
|
||||
var body []byte
|
||||
var err error
|
||||
|
||||
if miner.Protocol == "yxminer" {
|
||||
var msg Notify_msg_nexa
|
||||
msg.ID = nil
|
||||
msg.Method = "mining.notify"
|
||||
msg.Params = params
|
||||
body, err = json.Marshal(msg)
|
||||
if err != nil {
|
||||
miner.Server.Logg.Error("[server]", zap.String("Marshal", err.Error()))
|
||||
miner.TxLock.Unlock()
|
||||
return
|
||||
}
|
||||
} else if miner.Protocol == "bzminer" || miner.Protocol == "lolminer" || miner.Protocol == "Rigel" || miner.Protocol == "WildRig" {
|
||||
var msg Notify_msg_nexa_gpu
|
||||
msg.ID = nil
|
||||
msg.Method = "mining.notify"
|
||||
var params4 [4]interface{}
|
||||
params4[0] = params[0]
|
||||
params4[1] = params[1]
|
||||
params4[2] = params[2]
|
||||
params4[3] = params[3]
|
||||
msg.Params = params4
|
||||
msg.Jsonrpc = "2.0"
|
||||
body, err = json.Marshal(msg)
|
||||
if err != nil {
|
||||
miner.Server.Logg.Error("[server]", zap.String("Marshal", err.Error()))
|
||||
miner.TxLock.Unlock()
|
||||
return
|
||||
}
|
||||
} else {
|
||||
var msg Notify_msg_nexa
|
||||
msg.ID = nil
|
||||
msg.Method = "mining.notify"
|
||||
msg.Params = params
|
||||
body, err = json.Marshal(msg)
|
||||
if err != nil {
|
||||
miner.Server.Logg.Error("[server]", zap.String("Marshal", err.Error()))
|
||||
miner.TxLock.Unlock()
|
||||
return
|
||||
}
|
||||
}
|
||||
var body_string = string(body) + "\n"
|
||||
err = stratum.Conn_tx(miner.Conn, []byte(body_string))
|
||||
if err != nil {
|
||||
//delete(miner.Server.Miners, miner.MinerId)
|
||||
//miner.Server.Miners.Delete(miner.MinerId)
|
||||
}
|
||||
miner.Server.Logg.Debug("[server]", zap.String("tx", body_string))
|
||||
miner.TxLock.Unlock()
|
||||
if miner.ZlogInit {
|
||||
miner.Zlog.Info().Msg(body_string)
|
||||
}
|
||||
}
|
||||
|
||||
func Notify(miner *coin.MinerObj) {
|
||||
NexaNotify(miner)
|
||||
}
|
||||
|
||||
func HandleJobMsg(server *coin.ServerContext, Msg []byte) {
|
||||
var result msg.NexaStratumJob
|
||||
server.Logg.Warn("[server]", zap.String("receive", "job"))
|
||||
|
||||
if err := json.Unmarshal(Msg, &result); err != nil {
|
||||
server.Logg.Error("[server]", zap.String("Unmarshal", err.Error()))
|
||||
return
|
||||
}
|
||||
server.NexaJob = msg.NexaStratumJob(result)
|
||||
logg.Debug("[gbt]", zap.String("Target", server.NexaJob.Target))
|
||||
|
||||
server.NexaJob.Extranonce2_size = 8
|
||||
server.SJob.Extranonce2_size = 8
|
||||
logg.Debug("[gbt]", zap.Uint32("Height", server.NexaJob.Height), zap.String("Target", server.NexaJob.Target), zap.String("Header", server.NexaJob.Header) /*, zap.Uint64("Timastamp", server.NexaJob.CurTime)*/)
|
||||
targetb, _ := hex.DecodeString(server.NexaJob.Target)
|
||||
logg.Debug("[gbt]", zap.Uint64("Id", server.NexaJob.Id), zap.Float64("network diff", utility.Target2Diff(utility.Reverse(targetb))))
|
||||
|
||||
server.NetHight = uint64(server.NexaJob.Height)
|
||||
server.NetTarget = server.NexaJob.Target
|
||||
server.Miners.Range(func(k, v interface{}) bool {
|
||||
m, ok := v.(*(coin.MinerObj))
|
||||
if ok {
|
||||
server.Logg.Info("[server]", zap.String("lock", "start"))
|
||||
m.TxLock.Lock()
|
||||
status := m.Status
|
||||
cmd := nexa_parse_miner_notify(m, server.NexaJob)
|
||||
m.TxLock.Unlock()
|
||||
server.Logg.Info("[server]", zap.String("lock", "end"))
|
||||
var need_notify bool = true
|
||||
if time.Now().Sub(m.ConnSetupTime) >= time.Duration(coin.CONN_EXPIRED_TIME)*time.Second {
|
||||
if (status != coin.MINER_STATUS_RUNNING) && (status != coin.MINER_STATUS_AUTHORIZED) {
|
||||
//m.Conn.Close()
|
||||
need_notify = false
|
||||
}
|
||||
}
|
||||
if need_notify {
|
||||
switch cmd {
|
||||
case 0: //extranonce 1 and extranonce2 size
|
||||
//TODO
|
||||
case 1: //notify
|
||||
NexaNotify(m)
|
||||
}
|
||||
}
|
||||
}
|
||||
return true
|
||||
})
|
||||
}
|
||||
|
||||
func IsMhsLow(miner *coin.MinerObj) bool {
|
||||
if miner.Mhs5M < 1 {
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func GetBlockInterval() int {
|
||||
return 180
|
||||
}
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,424 @@
|
|||
// utility.go
|
||||
package utility
|
||||
|
||||
import (
|
||||
"encoding/binary"
|
||||
"encoding/hex"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"strconv"
|
||||
|
||||
"bytes"
|
||||
"log"
|
||||
"math"
|
||||
"math/big"
|
||||
"os"
|
||||
"os/exec"
|
||||
"strings"
|
||||
|
||||
"time"
|
||||
|
||||
"github.com/zeromq/goczmq"
|
||||
"go.uber.org/zap"
|
||||
"go.uber.org/zap/zapcore"
|
||||
"gopkg.in/natefinch/lumberjack.v2"
|
||||
)
|
||||
|
||||
const BITCOIND_ZMQ_HASHBLOCK string = "hashblock"
|
||||
|
||||
type CoinConfig struct {
|
||||
Coin string `json:"coin"`
|
||||
}
|
||||
|
||||
type ZmqConfig struct {
|
||||
Pub string `json:"pub"`
|
||||
Sub string `json:"sub"`
|
||||
}
|
||||
|
||||
type RedisConfig struct {
|
||||
Addr string `json:"addr"`
|
||||
Password string `json:"password"`
|
||||
DB int `json:"db"`
|
||||
}
|
||||
|
||||
type LogRotateConfig struct {
|
||||
MaxSize int `json:"maxsize"`
|
||||
MaxBackups int `json:"maxbackups"`
|
||||
MaxAge int `json:"maxage"`
|
||||
Compress bool `json:"compress"`
|
||||
}
|
||||
|
||||
func InitLogg(zaplog *zap.Config, rotate *LogRotateConfig, coinname string, modulename string) (*zap.Logger, *lumberjack.Logger, error) {
|
||||
os.MkdirAll("logs/"+coinname, os.ModePerm)
|
||||
logfile := "./logs/" + coinname + "/" + modulename + ".log"
|
||||
|
||||
logRotate := &lumberjack.Logger{
|
||||
Filename: logfile,
|
||||
MaxSize: rotate.MaxSize,
|
||||
MaxBackups: rotate.MaxBackups,
|
||||
MaxAge: rotate.MaxAge,
|
||||
Compress: rotate.Compress,
|
||||
}
|
||||
|
||||
zaplog.EncoderConfig = zap.NewProductionEncoderConfig()
|
||||
zaplog.EncoderConfig.EncodeTime = zapcore.ISO8601TimeEncoder
|
||||
|
||||
opath := []string{"", ""}
|
||||
opath[0] = zaplog.OutputPaths[0]
|
||||
opath[1] = logfile
|
||||
zaplog.OutputPaths = opath
|
||||
|
||||
l, err := zaplog.Build(
|
||||
zap.WrapCore(func(core zapcore.Core) zapcore.Core {
|
||||
return zapcore.NewCore(
|
||||
zapcore.NewJSONEncoder(zaplog.EncoderConfig),
|
||||
zapcore.AddSync(logRotate),
|
||||
zaplog.Level,
|
||||
)
|
||||
}),
|
||||
)
|
||||
if err != nil {
|
||||
log.Fatal("[gbt]", err.Error())
|
||||
return nil, nil, err
|
||||
}
|
||||
return l, logRotate, nil
|
||||
}
|
||||
|
||||
func GetCoin(config_file string) string {
|
||||
var config CoinConfig
|
||||
data, err := ioutil.ReadFile(config_file)
|
||||
if err != nil {
|
||||
panic(err.Error())
|
||||
}
|
||||
if err = json.Unmarshal(data, &config); err != nil {
|
||||
panic(err.Error())
|
||||
}
|
||||
|
||||
return config.Coin
|
||||
}
|
||||
|
||||
func confirmXPubSubscriptions(pub *goczmq.Channeler, count int) {
|
||||
for i := 0; i < count; i++ {
|
||||
select {
|
||||
case <-pub.RecvChan:
|
||||
case <-time.After(time.Second * 2):
|
||||
log.Println("confirmXPubSubscriptions, timeout")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func InitZmqPub(pub_host string) *goczmq.Sock {
|
||||
pub_ch, err := goczmq.NewXPub(pub_host)
|
||||
if err != nil {
|
||||
log.Fatal("[server]", zap.String("NewXPub", "zmq pub create failed!"))
|
||||
}
|
||||
//pub_ch.SetMaxmsgsize(1024 * 1024 * 8)
|
||||
return pub_ch
|
||||
}
|
||||
|
||||
func InitZmqSub(sub_to string, topic string) *goczmq.Sock {
|
||||
|
||||
sub_ch, err := goczmq.NewSub(sub_to, topic)
|
||||
if err != nil {
|
||||
log.Fatal("[server]", zap.String("NewSub", "zmq sub connect failed!"))
|
||||
}
|
||||
//sub_ch.SetMaxmsgsize(1024 * 1024 * 8)
|
||||
return sub_ch
|
||||
|
||||
}
|
||||
|
||||
func InitZmqPush(sub_to string) *goczmq.Sock {
|
||||
push_ch, err := goczmq.NewPush(sub_to)
|
||||
if err != nil {
|
||||
log.Fatal("[server]", zap.String("NewPushChanneler", "zmq push connect failed!"))
|
||||
}
|
||||
//push_ch.Bind(sub_to)
|
||||
//push_ch.SetMaxmsgsize(1024 * 1024 * 8)
|
||||
return push_ch
|
||||
}
|
||||
|
||||
func InitZmqPull(sub_to string) *goczmq.Sock {
|
||||
pull_ch, err := goczmq.NewPull(sub_to)
|
||||
if err != nil {
|
||||
log.Fatal("[server]", zap.String("InitZmqPull", "zmq pull connect failed! "+err.Error()))
|
||||
}
|
||||
//pull_ch.SetMaxmsgsize(1024 * 1024 * 8)
|
||||
return pull_ch
|
||||
}
|
||||
|
||||
func Int32ToString(n uint32) string {
|
||||
buf := [11]byte{}
|
||||
pos := len(buf)
|
||||
i := int64(n)
|
||||
signed := i < 0
|
||||
if signed {
|
||||
i = -i
|
||||
}
|
||||
for {
|
||||
pos--
|
||||
buf[pos], i = '0'+byte(i%10), i/10
|
||||
if i == 0 {
|
||||
if signed {
|
||||
pos--
|
||||
buf[pos] = '-'
|
||||
}
|
||||
return string(buf[pos:])
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func ByteToUint32(bytes []byte) uint32 {
|
||||
return binary.LittleEndian.Uint32(bytes)
|
||||
}
|
||||
|
||||
func Reverse_string(instr string) string {
|
||||
var outstr string = ""
|
||||
for i := 0; i < len(instr)/2; i++ {
|
||||
outstr = outstr + instr[len(instr)-i*2-2:len(instr)-i*2]
|
||||
}
|
||||
return outstr
|
||||
}
|
||||
|
||||
// CompactToBig converts a compact representation of a whole number N to an
|
||||
// unsigned 32-bit number. The representation is similar to IEEE754 floating
|
||||
// point numbers.
|
||||
//
|
||||
// Like IEEE754 floating point, there are three basic components: the sign,
|
||||
// the exponent, and the mantissa. They are broken out as follows:
|
||||
//
|
||||
// - the most significant 8 bits represent the unsigned base 256 exponent
|
||||
// - bit 23 (the 24th bit) represents the sign bit
|
||||
// - the least significant 23 bits represent the mantissa
|
||||
//
|
||||
// -------------------------------------------------
|
||||
// | Exponent | Sign | Mantissa |
|
||||
// -------------------------------------------------
|
||||
// | 8 bits [31-24] | 1 bit [23] | 23 bits [22-00] |
|
||||
// -------------------------------------------------
|
||||
//
|
||||
// The formula to calculate N is:
|
||||
//
|
||||
// N = (-1^sign) * mantissa * 256^(exponent-3)
|
||||
//
|
||||
// This compact form is only used in bitcoin to encode unsigned 256-bit numbers
|
||||
// which represent difficulty targets, thus there really is not a need for a
|
||||
// sign bit, but it is implemented here to stay consistent with bitcoind.
|
||||
func CompactToBig(compact uint32) *big.Int {
|
||||
// Extract the mantissa, sign bit, and exponent.
|
||||
mantissa := compact & 0x007fffff
|
||||
isNegative := compact&0x00800000 != 0
|
||||
exponent := uint(compact >> 24)
|
||||
|
||||
// Since the base for the exponent is 256, the exponent can be treated
|
||||
// as the number of bytes to represent the full 256-bit number. So,
|
||||
// treat the exponent as the number of bytes and shift the mantissa
|
||||
// right or left accordingly. This is equivalent to:
|
||||
// N = mantissa * 256^(exponent-3)
|
||||
var bn *big.Int
|
||||
if exponent <= 3 {
|
||||
mantissa >>= 8 * (3 - exponent)
|
||||
bn = big.NewInt(int64(mantissa))
|
||||
} else {
|
||||
bn = big.NewInt(int64(mantissa))
|
||||
bn.Lsh(bn, 8*(exponent-3))
|
||||
}
|
||||
|
||||
// Make it negative if the sign bit is set.
|
||||
if isNegative {
|
||||
bn = bn.Neg(bn)
|
||||
}
|
||||
|
||||
return bn
|
||||
}
|
||||
|
||||
const truediffone float64 = 26959535291011309493156476344723991336010898738574164086137773096960.0
|
||||
const bits192 float64 = 6277101735386680763835789423207666416102355444464034512896.0
|
||||
const bits128 float64 = 340282366920938463463374607431768211456.0
|
||||
const bits64 float64 = 18446744073709551616.0
|
||||
|
||||
func target2float(target []byte) float64 {
|
||||
var b64 float64 = float64(binary.LittleEndian.Uint64(target[24:32])) * bits192
|
||||
b64 += (float64(binary.LittleEndian.Uint64(target[16:24])) * bits128)
|
||||
b64 += (float64(binary.LittleEndian.Uint64(target[8:16])) * bits64)
|
||||
b64 += (float64(binary.LittleEndian.Uint64(target[0:8])))
|
||||
return b64
|
||||
}
|
||||
|
||||
// convert target to difficulty
|
||||
func Target2Diff(target []byte) float64 {
|
||||
//var f64 float64 = truediffone
|
||||
max, _ := new(big.Int).SetString("00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", 16) // 2 ^ 256 -1
|
||||
//max, _ := new(big.Int).SetString("00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", 16)
|
||||
maxf, _ := new(big.Float).SetString(max.String())
|
||||
f64, _ := maxf.Float64()
|
||||
var fcut64 float64 = target2float(target)
|
||||
//log.Println("diff", f64, fcut64, f64/fcut64)
|
||||
return f64 / fcut64
|
||||
}
|
||||
|
||||
func DiffToTarget(diff float64 /*, powLimit *big.Int*/) (*big.Int, error) {
|
||||
if diff <= 0 {
|
||||
return nil, fmt.Errorf("invalid pool difficulty %v (0 or less than "+
|
||||
"zero passed)", diff)
|
||||
}
|
||||
|
||||
// Round down in the case of a non-integer diff since we only support
|
||||
// ints (unless diff < 1 since we don't allow 0)..
|
||||
if diff <= 1 {
|
||||
diff = 1
|
||||
} else {
|
||||
diff = math.Floor(diff)
|
||||
}
|
||||
divisor := new(big.Int).SetInt64(int64(diff))
|
||||
//max, _ := new(big.Int).SetString("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", 16)
|
||||
max, _ := new(big.Int).SetString("00000000FFFF0000000000000000000000000000000000000000000000000000", 16) // BTC -> MAX_TARGET
|
||||
target := new(big.Int)
|
||||
//log.Println("target calc", hex.EncodeToString(max.Bytes()), hex.EncodeToString(divisor.Bytes()))
|
||||
target.Div(max, divisor)
|
||||
|
||||
return target, nil
|
||||
}
|
||||
|
||||
func Convert_big_endian(src []byte) []byte {
|
||||
var dst []byte = make([]byte, 32)
|
||||
for i := 0; i < 8; i++ {
|
||||
dst[0+4*i] = src[3+4*i]
|
||||
dst[1+4*i] = src[2+4*i]
|
||||
dst[2+4*i] = src[1+4*i]
|
||||
dst[3+4*i] = src[0+4*i]
|
||||
}
|
||||
return dst
|
||||
}
|
||||
|
||||
func ReverseS(s string) (string, error) {
|
||||
a := strings.Split(s, "")
|
||||
sRev := ""
|
||||
if len(a)%2 != 0 {
|
||||
return "", fmt.Errorf("Incorrect input length")
|
||||
}
|
||||
for i := 0; i < len(a); i += 2 {
|
||||
tmp := []string{a[i], a[i+1], sRev}
|
||||
sRev = strings.Join(tmp, "")
|
||||
}
|
||||
return sRev, nil
|
||||
}
|
||||
|
||||
func Reverse(src []byte) []byte {
|
||||
dst := make([]byte, len(src))
|
||||
for i := len(src); i > 0; i-- {
|
||||
dst[len(src)-i] = src[i-1]
|
||||
}
|
||||
return dst
|
||||
}
|
||||
|
||||
func Uint32ToByte(targetu uint32) []byte {
|
||||
bytes := make([]byte, 4)
|
||||
binary.LittleEndian.PutUint32(bytes, targetu)
|
||||
return bytes
|
||||
}
|
||||
|
||||
func Uint32ToByteBig(targetu uint32) []byte {
|
||||
bytes := make([]byte, 4)
|
||||
binary.BigEndian.PutUint32(bytes, targetu)
|
||||
return bytes
|
||||
}
|
||||
|
||||
func ExecShellCmd(s string) (string, error) {
|
||||
cmd := exec.Command("/bin/bash", "-c", s)
|
||||
var out bytes.Buffer
|
||||
cmd.Stdout = &out
|
||||
err := cmd.Run()
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
}
|
||||
//fmt.Println(out.String(), s)
|
||||
return out.String(), err
|
||||
}
|
||||
|
||||
func BytesToHexStr(b []byte) string {
|
||||
hexString := hex.EncodeToString(b)
|
||||
return hexString
|
||||
}
|
||||
|
||||
func NormalStrToHexStr(s string) string {
|
||||
hexStr := fmt.Sprintf("%x", s) // 将字符串转换为16进制字符串
|
||||
return hexStr
|
||||
}
|
||||
|
||||
func HexStrToBytes(s string) []byte {
|
||||
// 将16进制字符串转换为[]byte
|
||||
bytes, err := hex.DecodeString(s)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
return bytes
|
||||
}
|
||||
|
||||
func ChainIndexStr(fromGroup uint32, toGroup uint32) string {
|
||||
return fmt.Sprintf("%d -> %d", fromGroup, toGroup)
|
||||
}
|
||||
|
||||
func AlphDiff1Target() *big.Int {
|
||||
// 计算 2^226 - 1
|
||||
result := new(big.Int).Lsh(big.NewInt(1), 226) // 1 << 226
|
||||
result.Sub(result, big.NewInt(1)) // 2^226 - 1
|
||||
return result
|
||||
}
|
||||
|
||||
// fromBuffer: 将字节切片解析为大整数
|
||||
func fromBuffer(buf []byte) *big.Int {
|
||||
return new(big.Int).SetBytes(buf)
|
||||
}
|
||||
|
||||
func AlphShareDiff(hash []byte) float64 {
|
||||
hashBigNum := fromBuffer(hash)
|
||||
diff1Target := AlphDiff1Target()
|
||||
temp := new(big.Int).Mul(diff1Target, big.NewInt(1024))
|
||||
result := new(big.Int).Div(temp, hashBigNum)
|
||||
finalResult := new(big.Float).SetInt(result)
|
||||
finalResult.Quo(finalResult, big.NewFloat(1024.0))
|
||||
diffStr := finalResult.Text('f', 8)
|
||||
diff, err := strconv.ParseFloat(diffStr, 64)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
return 0
|
||||
}
|
||||
return diff
|
||||
}
|
||||
|
||||
func AlphDiffToTarget(diff float64) (*big.Int, error) {
|
||||
if diff <= 0 {
|
||||
return nil, fmt.Errorf("invalid pool difficulty %v (0 or less than "+
|
||||
"zero passed)", diff)
|
||||
}
|
||||
|
||||
// Round down in the case of a non-integer diff since we only support
|
||||
// ints (unless diff < 1 since we don't allow 0)..
|
||||
if diff <= 1 {
|
||||
diff = 1
|
||||
} else {
|
||||
diff = math.Floor(diff)
|
||||
}
|
||||
divisor := new(big.Int).SetInt64(int64(diff))
|
||||
//max, _ := new(big.Int).SetString("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", 16)
|
||||
max, _ := new(big.Int).SetString("000000003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", 16) //
|
||||
target := new(big.Int)
|
||||
//log.Println("target calc", hex.EncodeToString(max.Bytes()), hex.EncodeToString(divisor.Bytes()))
|
||||
target.Div(max, divisor)
|
||||
|
||||
return target, nil
|
||||
}
|
||||
|
||||
// 结果等同于上面的AlphDiffToTarget方法
|
||||
func AlphDiffToTarget2(diff float64) string {
|
||||
alphTarget1Diff := new(big.Int).Lsh(big.NewInt(1), 226)
|
||||
alphTarget1Diff.Sub(alphTarget1Diff, big.NewInt(1)) // 难度1的 target
|
||||
// 直接在原变量上操作,避免不必要的变量创建
|
||||
alphTarget1Diff.Mul(alphTarget1Diff, big.NewInt(1024))
|
||||
// 计算 difficulty * 1024 并转换为 big.Int
|
||||
ceilDifficultyInt := new(big.Int).SetUint64(uint64(math.Ceil(diff * 1024)))
|
||||
// 计算最终 target
|
||||
target := new(big.Int).Div(alphTarget1Diff, ceilDifficultyInt)
|
||||
return target.Text(16)
|
||||
}
|
|
@ -0,0 +1,4 @@
|
|||
cd cmd/server
|
||||
go build -o server
|
||||
cd cmd/gbt
|
||||
go build -o gbt
|
Loading…
Reference in New Issue