Skip to content

Conversation

@Stephen-Thomson
Copy link
Collaborator

Description of Changes

  • PushDrop.decode() now accepts an optional lockPosition parameter ('before' | 'after', defaults to 'before')
  • When lockPosition='after', the method correctly finds the public key at the end of the script (before OP_CHECKSIG) instead of assuming it's at the beginning
  • This fixes the "Unknown point format" error that occurred when trying to decode scripts created with lockPosition='after'

Linked Issues / Tickets

Closes Issue #259

Testing Procedure

  • Added test case: "decodes the locking script correctly with lockPosition after"

  • I have added new unit tests

  • All tests pass locally

  • I have tested manually in my local environment

Checklist

  • I have performed a self-review of my own code
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings
  • I have updated CHANGELOG.md with my changes
  • I have run npm run doc and npm run lint one final time before requesting a review
  • I have fixed all linter errors to ensure these changes are compliant with ts-standard
  • I have run npm version patch so that my changes will trigger a new version to be released when they are merged

@codecov
Copy link

codecov bot commented Jan 22, 2026

Codecov Report

❌ Patch coverage is 88.88889% with 2 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
src/script/templates/PushDrop.ts 92.85% 1 Missing ⚠️
src/transaction/broadcasters/ARC.ts 75.00% 1 Missing ⚠️

📢 Thoughts on this report? Let us know!

@github-actions
Copy link

🏁 Benchmark Comparison (Node 22)

Comparing this PR (303c958) against master (fe07829).

✅ No regressions over the 5% threshold detected.

Benchmark Metric PR Branch Master Δ Change
BigNumber Arithmetic mul large numbers 8.89 ms 8.90 ms -0.01 ms -0.11%
BigNumber Arithmetic add large numbers 1.49 ms 1.49 ms +0.00 ms 0.00%
BigNumber Serialization toSm big 3.08 ms 3.07 ms +0.01 ms +0.33%
BigNumber Serialization toSm little 3.15 ms 3.15 ms +0.00 ms 0.00%
BigNumber Serialization fromSm big 3.17 ms 3.15 ms +0.02 ms +0.63%
BigNumber Serialization fromSm little 3.26 ms 3.30 ms -0.04 ms -1.21%
BigNumber Serialization fromScriptNum 3.19 ms 3.22 ms -0.03 ms -0.93%
Script Serialization Big script round trip 4.01 ms 4.02 ms -0.01 ms -0.25%
Transaction Verification deep chain verify 582.21 ms 579.39 ms +2.82 ms +0.49%
Transaction Verification wide transaction verify 594.96 ms 599.64 ms -4.68 ms -0.78%
Transaction Verification large tx verify 292.72 ms 295.69 ms -2.97 ms -1.00%
Transaction Verification nested inputs verify 169.38 ms 164.05 ms +5.33 ms +3.25%
Symmetric Key encrypt large 2MB 1769.18 ms 1752.99 ms +16.19 ms +0.92%
Symmetric Key decrypt large 2MB 1723.34 ms 1714.96 ms +8.38 ms +0.49%
Symmetric Key encrypt 50 small 7.72 ms 7.67 ms +0.05 ms +0.65%
Symmetric Key decrypt 50 small 7.31 ms 7.16 ms +0.15 ms +2.09%
Symmetric Key encrypt 200 medium 185.99 ms 185.97 ms +0.02 ms +0.01%
Symmetric Key decrypt 200 medium 183.22 ms 177.54 ms +5.68 ms +3.20%
Reader & Writer mixed ops 0.23 ms 0.23 ms +0.00 ms 0.00%
Reader & Writer large payloads 31.18 ms 31.15 ms +0.03 ms +0.10%
Reader & Writer 3000 small payloads 1.89 ms 1.89 ms +0.00 ms 0.00%
Reader & Writer 400 medium payloads 17.12 ms 16.93 ms +0.19 ms +1.12%
Atomic BEEF Transaction.toAtomicBEEF 1.59 ms 1.61 ms -0.02 ms -1.24%
Atomic BEEF Transaction.fromAtomicBEEF 3.70 ms 3.73 ms -0.03 ms -0.80%

@github-actions
Copy link

🏁 Benchmark Comparison (Node 22)

Comparing this PR (2a68c5f) against master (fe07829).

⚠️ 1 regression detected (>5% slower).

Regressions

  • ⚠️ Atomic BEEF – Transaction.fromAtomicBEEF is 10.38% slower (4.04 ms vs 3.66 ms).
Benchmark Metric PR Branch Master Δ Change
BigNumber Arithmetic mul large numbers 8.93 ms 8.87 ms +0.06 ms +0.68%
BigNumber Arithmetic add large numbers 1.47 ms 1.48 ms -0.01 ms -0.68%
BigNumber Serialization toSm big 3.01 ms 3.01 ms +0.00 ms 0.00%
BigNumber Serialization toSm little 3.11 ms 3.08 ms +0.03 ms +0.97%
BigNumber Serialization fromSm big 3.08 ms 3.10 ms -0.02 ms -0.65%
BigNumber Serialization fromSm little 3.17 ms 3.14 ms +0.03 ms +0.96%
BigNumber Serialization fromScriptNum 3.22 ms 3.20 ms +0.02 ms +0.63%
Script Serialization Big script round trip 3.92 ms 3.87 ms +0.05 ms +1.29%
Transaction Verification deep chain verify 581.19 ms 577.56 ms +3.63 ms +0.63%
Transaction Verification wide transaction verify 591.26 ms 588.10 ms +3.16 ms +0.54%
Transaction Verification large tx verify 292.42 ms 290.48 ms +1.94 ms +0.67%
Transaction Verification nested inputs verify 162.26 ms 161.75 ms +0.51 ms +0.32%
Symmetric Key encrypt large 2MB 1753.57 ms 1745.77 ms +7.80 ms +0.45%
Symmetric Key decrypt large 2MB 1707.71 ms 1693.72 ms +13.99 ms +0.83%
Symmetric Key encrypt 50 small 7.55 ms 7.53 ms +0.02 ms +0.27%
Symmetric Key decrypt 50 small 7.18 ms 7.14 ms +0.04 ms +0.56%
Symmetric Key encrypt 200 medium 184.49 ms 182.32 ms +2.17 ms +1.19%
Symmetric Key decrypt 200 medium 179.82 ms 177.46 ms +2.36 ms +1.33%
Reader & Writer mixed ops 0.22 ms 0.23 ms -0.01 ms -4.35%
Reader & Writer large payloads 28.94 ms 29.21 ms -0.27 ms -0.92%
Reader & Writer 3000 small payloads 1.76 ms 1.75 ms +0.01 ms +0.57%
Reader & Writer 400 medium payloads 15.45 ms 15.32 ms +0.13 ms +0.85%
Atomic BEEF Transaction.toAtomicBEEF 1.53 ms 1.52 ms +0.01 ms +0.66%
Atomic BEEF Transaction.fromAtomicBEEF 4.04 ms 3.66 ms +0.38 ms +10.38%

@sonarqubecloud
Copy link

@github-actions
Copy link

🏁 Benchmark Comparison (Node 22)

Comparing this PR (55b3a97) against master (fe07829).

✅ No regressions over the 5% threshold detected.

Benchmark Metric PR Branch Master Δ Change
BigNumber Arithmetic mul large numbers 8.80 ms 8.80 ms +0.00 ms 0.00%
BigNumber Arithmetic add large numbers 1.44 ms 1.45 ms -0.01 ms -0.69%
BigNumber Serialization toSm big 2.81 ms 2.81 ms +0.00 ms 0.00%
BigNumber Serialization toSm little 2.91 ms 2.86 ms +0.05 ms +1.75%
BigNumber Serialization fromSm big 2.91 ms 2.93 ms -0.02 ms -0.68%
BigNumber Serialization fromSm little 3.01 ms 3.02 ms -0.01 ms -0.33%
BigNumber Serialization fromScriptNum 3.00 ms 3.01 ms -0.01 ms -0.33%
Script Serialization Big script round trip 3.74 ms 3.77 ms -0.03 ms -0.80%
Transaction Verification deep chain verify 572.22 ms 569.67 ms +2.55 ms +0.45%
Transaction Verification wide transaction verify 581.97 ms 583.63 ms -1.66 ms -0.28%
Transaction Verification large tx verify 289.45 ms 290.30 ms -0.85 ms -0.29%
Transaction Verification nested inputs verify 161.11 ms 161.08 ms +0.03 ms +0.02%
Symmetric Key encrypt large 2MB 1741.82 ms 1752.79 ms -10.97 ms -0.63%
Symmetric Key decrypt large 2MB 1699.05 ms 1702.79 ms -3.74 ms -0.22%
Symmetric Key encrypt 50 small 7.54 ms 7.46 ms +0.08 ms +1.07%
Symmetric Key decrypt 50 small 7.14 ms 7.14 ms +0.00 ms 0.00%
Symmetric Key encrypt 200 medium 182.76 ms 180.84 ms +1.92 ms +1.06%
Symmetric Key decrypt 200 medium 176.54 ms 176.34 ms +0.20 ms +0.11%
Reader & Writer mixed ops 0.21 ms 0.21 ms +0.00 ms 0.00%
Reader & Writer large payloads 27.14 ms 27.45 ms -0.31 ms -1.13%
Reader & Writer 3000 small payloads 1.66 ms 1.69 ms -0.03 ms -1.78%
Reader & Writer 400 medium payloads 13.87 ms 13.89 ms -0.02 ms -0.14%
Atomic BEEF Transaction.toAtomicBEEF 1.47 ms 1.48 ms -0.01 ms -0.68%
Atomic BEEF Transaction.fromAtomicBEEF 3.58 ms 3.61 ms -0.03 ms -0.83%

@ty-everett ty-everett merged commit 167c7d5 into master Jan 26, 2026
11 checks passed
@ty-everett ty-everett deleted the PushdropIssue branch January 26, 2026 20:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants