This commit is contained in:
Ben Wilson 2023-07-16 18:48:53 -04:00
parent bb133a7af4
commit 6a6b2c32bf
4 changed files with 10 additions and 15 deletions

View File

@ -15,24 +15,17 @@ export class MiningJob {
private coinbasePart1: string;
private coinbasePart2: string;
// private merkle_branch: string[]; // List of hashes, will be used for calculation of merkle root. This is not a list of all transactions, it only contains prepared hashes of steps of merkle tree algorithm.
public jobId: string; // ID of the job. Use this ID while submitting share generated from this job.
public jobTemplateId: string;
//public block: bitcoinjs.Block = new bitcoinjs.Block();
public networkDifficulty: number;
constructor(
private network: bitcoinjs.networks.Network,
id: string,
public jobId: string,
payoutInformation: AddressObject[],
jobTemplate: IJobTemplate
) {
this.jobId = id;
this.jobTemplateId = jobTemplate.blockData.id,
this.coinbaseTransaction = this.createCoinbaseTransaction(payoutInformation, jobTemplate.blockData.coinbasevalue);

View File

@ -356,18 +356,18 @@ export class StratumV1Client extends EasyUnsubscribe {
if (submissionDifficulty >= this.sessionDifficulty) {
if (submissionDifficulty >= job.networkDifficulty) {
if (submissionDifficulty >= jobTemplate.blockData.networkDifficulty) {
console.log('!!! BLOCK FOUND !!!');
const blockHex = updatedJobBlock.toHex(false);
const result = await this.bitcoinRpcService.SUBMIT_BLOCK(blockHex);
await this.blocksService.save({
height: jobTemplate.height,
height: jobTemplate.blockData.height,
minerAddress: this.clientAuthorization.address,
worker: this.clientAuthorization.worker,
sessionId: this.extraNonceAndSessionId,
blockData: blockHex
});
await this.notificationService.notifySubscribersBlockFound(this.clientAuthorization.address, jobTemplate.height, updatedJobBlock, result);
await this.notificationService.notifySubscribersBlockFound(this.clientAuthorization.address, jobTemplate.blockData.height, updatedJobBlock, result);
}
try {
await this.statistics.addSubmission(this.entity, submissionHash, this.sessionDifficulty);

View File

@ -17,6 +17,7 @@ export interface IJobTemplate {
littleEndianBlockHeight: Buffer;
coinbasevalue: number;
networkDifficulty: number;
height: number;
clearJobs: boolean;
};
}
@ -75,11 +76,12 @@ export class StratumV1JobsService {
coinbasevalue: blockTemplate.coinbasevalue,
timestamp: Math.floor(new Date().getTime() / 1000),
networkDifficulty: this.calculateNetworkDifficulty(parseInt(blockTemplate.bits, 16)),
clearJobs
clearJobs,
height: blockTemplate.height
};
}),
filter(next => next != null),
map(({ version, bits, prevHash, transactions, timestamp, littleEndianBlockHeight, coinbasevalue, networkDifficulty, clearJobs }) => {
map(({ version, bits, prevHash, transactions, timestamp, littleEndianBlockHeight, coinbasevalue, networkDifficulty, clearJobs, height }) => {
const block = new bitcoinjs.Block();
//create an empty coinbase tx
@ -119,6 +121,7 @@ export class StratumV1JobsService {
littleEndianBlockHeight,
coinbasevalue,
networkDifficulty,
height,
clearJobs
}
}
@ -151,7 +154,7 @@ export class StratumV1JobsService {
return bytes;
}
public getJobTemplateById(jobTemplateId: string) {
public getJobTemplateById(jobTemplateId: string): IJobTemplate {
return this.blocks[jobTemplateId];
}

View File

@ -15,7 +15,6 @@ import { StratumV1JobsService } from './stratum-v1-jobs.service';
@Injectable()
export class StratumV1Service implements OnModuleInit {
private
constructor(
private readonly bitcoinRpcService: BitcoinRpcService,
private readonly clientService: ClientService,