mirror of
https://github.com/benjamin-wilson/public-pool.git
synced 2026-09-29 17:15:03 -07:00
block copy
This commit is contained in:
@@ -58,9 +58,11 @@ export class MiningJob {
|
||||
|
||||
}
|
||||
|
||||
public copyAndUpdateBlock(jobTemplate: { data: IJobTemplate, blockBuffer: Buffer }, versionMask: number, nonce: number, extraNonce: string, extraNonce2: string, timestamp: number): bitcoinjs.Block {
|
||||
public copyAndUpdateBlock(jobTemplate: IJobTemplate, versionMask: number, nonce: number, extraNonce: string, extraNonce2: string, timestamp: number): bitcoinjs.Block {
|
||||
|
||||
const testBlock = Object.assign(new bitcoinjs.Block(), jobTemplate.block);
|
||||
|
||||
|
||||
const testBlock = bitcoinjs.Block.fromBuffer(jobTemplate.blockBuffer);
|
||||
|
||||
testBlock.transactions[0] = this.coinbaseTransaction;
|
||||
|
||||
@@ -77,12 +79,12 @@ export class MiningJob {
|
||||
testBlock.transactions[0].ins[0].script = Buffer.from(`${nonceScript.substring(0, nonceScript.length - 16)}${extraNonce}${extraNonce2}`, 'hex');
|
||||
|
||||
//recompute the root since we updated the coinbase script with the nonces
|
||||
testBlock.merkleRoot = this.calculateMerkleRootHash(testBlock.transactions[0].getHash(false), jobTemplate.data.merkle_branch);
|
||||
testBlock.merkleRoot = this.calculateMerkleRootHash(testBlock.transactions[0].getHash(false), jobTemplate.merkle_branch);
|
||||
|
||||
|
||||
testBlock.timestamp = timestamp;
|
||||
|
||||
return testBlock;
|
||||
return testBlock as any;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -255,7 +255,7 @@ describe('StratumV1Client', () => {
|
||||
socketEmitter(Buffer.from(MockRecording1.MINING_SUBMIT));
|
||||
|
||||
jest.useRealTimers();
|
||||
await new Promise((r) => setTimeout(r, 100));
|
||||
await new Promise((r) => setTimeout(r, 1000));
|
||||
|
||||
expect(promiseSocket.write).lastCalledWith(`{\"id\":5,\"error\":null,\"result\":true}\n`);
|
||||
|
||||
|
||||
@@ -382,19 +382,19 @@ export class StratumV1Client extends EasyUnsubscribe {
|
||||
|
||||
if (submissionDifficulty >= this.sessionDifficulty) {
|
||||
|
||||
if (submissionDifficulty >= jobTemplate.data.blockData.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.data.blockData.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.data.blockData.height, updatedJobBlock, result);
|
||||
await this.notificationService.notifySubscribersBlockFound(this.clientAuthorization.address, jobTemplate.blockData.height, updatedJobBlock, result);
|
||||
//success
|
||||
if (result == null) {
|
||||
await this.addressSettingsService.resetBestDifficultyAndShares();
|
||||
|
||||
Reference in New Issue
Block a user