session watchdog

This commit is contained in:
Ben Wilson 2023-07-17 00:55:09 -04:00
parent 73de187cd9
commit 688eb644ba
2 changed files with 24 additions and 2 deletions

View File

@ -39,11 +39,13 @@ export class StratumV1Client extends EasyUnsubscribe {
private statistics: StratumV1ClientStatistics;
private stratumInitialized = false;
private usedSuggestedDifficulty = false;
private sessionDifficulty: number = 32768;
private sessionDifficulty: number = 16384;
private entity: ClientEntity;
public extraNonceAndSessionId: string;
public sessionStart: Date;
constructor(
public readonly promiseSocket: PromiseSocket<Socket>,
private readonly stratumV1JobsService: StratumV1JobsService,
@ -56,6 +58,8 @@ export class StratumV1Client extends EasyUnsubscribe {
) {
super();
this.sessionStart = new Date();
this.statistics = new StratumV1ClientStatistics(this.clientStatisticsService);
this.extraNonceAndSessionId = this.getRandomHexString();
@ -277,11 +281,27 @@ export class StratumV1Client extends EasyUnsubscribe {
await this.sendNewMiningJob(jobTemplate);
await this.checkDifficulty();
await this.watchdog();
})
}
}
private async watchdog() {
let time = await this.statistics.getLastSubmissionTime();
if (time == null) {
time = this.sessionStart;
}
const now = Date.now();
const diffSeconds = (now - time.getTime()) / 1000;
// two minutes
if (diffSeconds > 120) {
console.log('Watchdog ending session');
this.promiseSocket.end();
}
}
private async sendNewMiningJob(jobTemplate: IJobTemplate) {
const hashRate = await this.clientStatisticsService.getHashRateForSession(this.clientAuthorization.address, this.clientAuthorization.worker, this.extraNonceAndSessionId);

View File

@ -33,7 +33,9 @@ export class StratumV1ClientStatistics {
});
}
public getLastSubmissionTime(): Date | null {
return this.submissionCache[0]?.time;
}
public getSuggestedDifficulty(clientDifficulty: number) {
// miner hasn't submitted shares in one minute