coinbase working

This commit is contained in:
Ben Wilson
2023-06-17 16:52:28 -04:00
parent 2b9a4f3d85
commit c167fe9517
2 changed files with 7 additions and 8 deletions
+7 -6
View File
@@ -102,19 +102,20 @@ export class MiningJob {
private createCoinbaseTransaction(addresses: AddressObject[], blockHeight: number, reward: number): { coinbasePart1: string, coinbasePart2: string } { private createCoinbaseTransaction(addresses: AddressObject[], blockHeight: number, reward: number): { coinbasePart1: string, coinbasePart2: string } {
// Generate coinbase script // Generate coinbase script
const blockHeightScript = `03${blockHeight.toString(16).padStart(8, '0')}`; const blockHeightScript = `03${blockHeight.toString(16).padStart(8, '0')}`;
const inputScript = `54696d652026204865616c74682021`;
// Create coinbase transaction // Create coinbase transaction
const endOfInput = 'ffffffff'; const outputIndex = 'ffffffff';
const sequence = 'ffffffff';
const lockTime = '00000000'; const lockTime = '00000000';
const version = '01000000'; const version = '01000000';
const inputCount = '01'; const inputCount = '01';
const fakeCoinbaseInput = '0000000000000000000000000000000000000000000000000000000000000000'; const fakeCoinbaseInput = '0000000000000000000000000000000000000000000000000000000000000000';
const inputScriptBytes = ((blockHeightScript.length + inputScript.length + lockTime.length) / 2).toString(16).padStart(2, '0'); const inputScriptBytes = ((blockHeightScript.length + 16) / 2).toString(16).padStart(2, '0');
const inputTransaction = inputCount + fakeCoinbaseInput + endOfInput + inputScriptBytes + blockHeightScript + inputScript + lockTime; const inputTransaction = inputCount + fakeCoinbaseInput + outputIndex + inputScriptBytes + blockHeightScript;
@@ -141,8 +142,8 @@ export class MiningJob {
// Create outputs // Create outputs
const outputCountHex = addresses.length.toString(16).padStart(2, '0'); const outputCountHex = addresses.length.toString(16).padStart(2, '0');
const coinbasePart1 = version + inputTransaction + endOfInput + outputCountHex; const coinbasePart1 = version + inputTransaction;
const coinbasePart2 = outputs + lockTime; const coinbasePart2 = sequence + outputCountHex + outputs + lockTime;
return { coinbasePart1, coinbasePart2 }; return { coinbasePart1, coinbasePart2 };
} }
@@ -89,8 +89,6 @@ export class MiningSubmitMessage extends StratumBaseMessage {
} }
header.writeUInt32LE(version, 0); header.writeUInt32LE(version, 0);
header.write(this.swapEndianWords(job.prevhash), 4, 'hex') header.write(this.swapEndianWords(job.prevhash), 4, 'hex')