From dd3af418662c33ba59fd3693340ac73f9a13c546 Mon Sep 17 00:00:00 2001 From: adambor Date: Sat, 25 Jan 2025 00:03:10 +0100 Subject: [PATCH 1/5] Fix tx version serialization --- ts_src/transaction.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ts_src/transaction.ts b/ts_src/transaction.ts index 95e1194c7..87a0b7d2c 100644 --- a/ts_src/transaction.ts +++ b/ts_src/transaction.ts @@ -652,7 +652,7 @@ export class Transaction { const bufferWriter = new BufferWriter(buffer, initialOffset || 0); - bufferWriter.writeInt32(this.version); + bufferWriter.writeUInt32(this.version); const hasWitnesses = _ALLOW_WITNESS && this.hasWitnesses(); From df4297c4103fdef0bef79a3537375c5d0a75d2cc Mon Sep 17 00:00:00 2001 From: Jonathan Underwood Date: Wed, 5 Mar 2025 18:08:19 +0900 Subject: [PATCH 2/5] fix other uint errors --- ts_src/transaction.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ts_src/transaction.ts b/ts_src/transaction.ts index 87a0b7d2c..8b943d713 100644 --- a/ts_src/transaction.ts +++ b/ts_src/transaction.ts @@ -79,7 +79,7 @@ export class Transaction { const bufferReader = new BufferReader(buffer); const tx = new Transaction(); - tx.version = bufferReader.readInt32(); + tx.version = bufferReader.readUInt32(); const marker = bufferReader.readUInt8(); const flag = bufferReader.readUInt8(); @@ -464,7 +464,7 @@ export class Transaction { sigMsgWriter.writeUInt8(hashType); // Transaction - sigMsgWriter.writeInt32(this.version); + sigMsgWriter.writeUInt32(this.version); sigMsgWriter.writeUInt32(this.locktime); sigMsgWriter.writeSlice(hashPrevouts); sigMsgWriter.writeSlice(hashAmounts); @@ -594,7 +594,7 @@ export class Transaction { bufferWriter = new BufferWriter(tbuffer, 0); const input = this.ins[inIndex]; - bufferWriter.writeInt32(this.version); + bufferWriter.writeUInt32(this.version); bufferWriter.writeSlice(hashPrevouts); bufferWriter.writeSlice(hashSequence); bufferWriter.writeSlice(input.hash); From 35bb39f3201a669cd554eeff233842a81872acd1 Mon Sep 17 00:00:00 2001 From: Jonathan Underwood Date: Wed, 5 Mar 2025 18:11:33 +0900 Subject: [PATCH 3/5] Fix uint32 test --- test/transaction.spec.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/transaction.spec.ts b/test/transaction.spec.ts index 08774f6f6..741c72a59 100644 --- a/test/transaction.spec.ts +++ b/test/transaction.spec.ts @@ -78,10 +78,10 @@ describe('Transaction', () => { }); }); - it('.version should be interpreted as an int32le', () => { + it('.version should be interpreted as an uint32le', () => { const txHex = 'ffffffff0000ffffffff'; const tx = Transaction.fromHex(txHex); - assert.strictEqual(-1, tx.version); + assert.strictEqual(0xffffffff, tx.version); assert.strictEqual(0xffffffff, tx.locktime); }); }); From 3b9b4267d8c98468d958d7f850860d0fab7c4382 Mon Sep 17 00:00:00 2001 From: Jonathan Underwood Date: Wed, 5 Mar 2025 18:14:15 +0900 Subject: [PATCH 4/5] Fix transaction.cjs --- src/cjs/transaction.cjs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/cjs/transaction.cjs b/src/cjs/transaction.cjs index eee05850f..476023b2a 100644 --- a/src/cjs/transaction.cjs +++ b/src/cjs/transaction.cjs @@ -99,7 +99,7 @@ class Transaction { static fromBuffer(buffer, _NO_STRICT) { const bufferReader = new bufferutils_js_1.BufferReader(buffer); const tx = new Transaction(); - tx.version = bufferReader.readInt32(); + tx.version = bufferReader.readUInt32(); const marker = bufferReader.readUInt8(); const flag = bufferReader.readUInt8(); let hasWitnesses = false; @@ -414,7 +414,7 @@ class Transaction { const sigMsgWriter = bufferutils_js_1.BufferWriter.withCapacity(sigMsgSize); sigMsgWriter.writeUInt8(hashType); // Transaction - sigMsgWriter.writeInt32(this.version); + sigMsgWriter.writeUInt32(this.version); sigMsgWriter.writeUInt32(this.locktime); sigMsgWriter.writeSlice(hashPrevouts); sigMsgWriter.writeSlice(hashAmounts); @@ -523,7 +523,7 @@ class Transaction { tbuffer = new Uint8Array(156 + varSliceSize(prevOutScript)); bufferWriter = new bufferutils_js_1.BufferWriter(tbuffer, 0); const input = this.ins[inIndex]; - bufferWriter.writeInt32(this.version); + bufferWriter.writeUInt32(this.version); bufferWriter.writeSlice(hashPrevouts); bufferWriter.writeSlice(hashSequence); bufferWriter.writeSlice(input.hash); @@ -570,7 +570,7 @@ class Transaction { buffer, initialOffset || 0, ); - bufferWriter.writeInt32(this.version); + bufferWriter.writeUInt32(this.version); const hasWitnesses = _ALLOW_WITNESS && this.hasWitnesses(); if (hasWitnesses) { bufferWriter.writeUInt8(Transaction.ADVANCED_TRANSACTION_MARKER); From 55d2e9329280a66397510dc1fb40e8791f7dab8b Mon Sep 17 00:00:00 2001 From: Jonathan Underwood Date: Wed, 5 Mar 2025 18:15:08 +0900 Subject: [PATCH 5/5] Fix transaction.js --- src/esm/transaction.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/esm/transaction.js b/src/esm/transaction.js index d1166a540..dfe233389 100644 --- a/src/esm/transaction.js +++ b/src/esm/transaction.js @@ -57,7 +57,7 @@ export class Transaction { static fromBuffer(buffer, _NO_STRICT) { const bufferReader = new BufferReader(buffer); const tx = new Transaction(); - tx.version = bufferReader.readInt32(); + tx.version = bufferReader.readUInt32(); const marker = bufferReader.readUInt8(); const flag = bufferReader.readUInt8(); let hasWitnesses = false; @@ -365,7 +365,7 @@ export class Transaction { const sigMsgWriter = BufferWriter.withCapacity(sigMsgSize); sigMsgWriter.writeUInt8(hashType); // Transaction - sigMsgWriter.writeInt32(this.version); + sigMsgWriter.writeUInt32(this.version); sigMsgWriter.writeUInt32(this.locktime); sigMsgWriter.writeSlice(hashPrevouts); sigMsgWriter.writeSlice(hashAmounts); @@ -472,7 +472,7 @@ export class Transaction { tbuffer = new Uint8Array(156 + varSliceSize(prevOutScript)); bufferWriter = new BufferWriter(tbuffer, 0); const input = this.ins[inIndex]; - bufferWriter.writeInt32(this.version); + bufferWriter.writeUInt32(this.version); bufferWriter.writeSlice(hashPrevouts); bufferWriter.writeSlice(hashSequence); bufferWriter.writeSlice(input.hash); @@ -514,7 +514,7 @@ export class Transaction { __toBuffer(buffer, initialOffset, _ALLOW_WITNESS = false) { if (!buffer) buffer = new Uint8Array(this.byteLength(_ALLOW_WITNESS)); const bufferWriter = new BufferWriter(buffer, initialOffset || 0); - bufferWriter.writeInt32(this.version); + bufferWriter.writeUInt32(this.version); const hasWitnesses = _ALLOW_WITNESS && this.hasWitnesses(); if (hasWitnesses) { bufferWriter.writeUInt8(Transaction.ADVANCED_TRANSACTION_MARKER);