Skip to content

Fix Abstraction signature parser swapping signer and type - #45

Open
sausagee wants to merge 3 commits into
mainfrom
cursor/fix-abstraction-signature-args-e7cd
Open

Fix Abstraction signature parser swapping signer and type#45
sausagee wants to merge 3 commits into
mainfrom
cursor/fix-abstraction-signature-args-e7cd

Conversation

@sausagee

@sausagee sausagee commented Sep 6, 2026

Copy link
Copy Markdown

Bug

from_account_signature calls parse_abstraction_signature(&account_signature_type, sender, ...), matching every other parse_* helper (type string first, then sender). The function was defined as (sender, account_signature_type, ...).

Rust accepts the call because &String coerces to &str, so this compiled. Abstraction rows then stored:

  • signer = standardize_address("abstraction_signature") (garbage / non-address)
  • account_signature_type = the real sender address

Movement mainnet publishes 0x1::account_abstraction (plus ethereum_derivable_account / solana_derivable_account), so this path is live production code.

Not covered by open PRs #16#44 (MultiKey pubkey index is #44; fee-payer is #43).

Root cause

Parameter order on the stub parser did not match the call site or the other signature parsers.

Fix

Reorder parse_abstraction_signature to (account_signature_type, sender, ...). Stub still writes "Not implemented" for pubkey/signature bytes; this PR only fixes the swapped fields.

Tests run (rustc 1.85.0)

  • cargo test -p processor --lib from_account_signature_abstraction2 passed
  • cargo test -p processor --lib — 26 passed; 18 failed only on missing Docker/GCS (processor_status_saver / parquet buffer), unrelated
  • cargo clippy -p processor --lib --tests -- -D warningsclean
  • Aikido SAST: not run (plugin requires sign-in)

Out of scope (checked, not filed)

  • ANS domains vs v2_1_domains: intentional Movement nameservice change (2fad999), not fixture drift on Movement.
  • Other signature parsers: only MultiKey has the index-vs-enumerate bug (Fix MultiKey signatures looking up the wrong public key #44). MultiEd25519 and account-restoration helpers already use public_key_indices.
Open in Web Open in Cursor 

cursoragent and others added 2 commits September 6, 2026 11:51
parse_abstraction_signature listed sender before account_signature_type
while from_account_signature (and every other parse_* helper) passed type
then sender. Abstraction rows therefore stored the type string as signer
and the sender address as account_signature_type. Movement mainnet ships
0x1::account_abstraction, so this path is live.

Co-authored-by: Young Yang Liauw <sausagee@users.noreply.github.com>
SDK v2.1.1 exports AbstractionSignature, not AbstractSignature.

Co-authored-by: Young Yang Liauw <sausagee@users.noreply.github.com>
@sausagee
sausagee marked this pull request as ready for review September 6, 2026 11:58
@sausagee
sausagee changed the base branch from main to fix/lint-stable-xclippy September 7, 2026 22:19
@sausagee
sausagee changed the base branch from fix/lint-stable-xclippy to main September 7, 2026 22:30
Stack the CI unblocker files from PR #70 (stable cargo xclippy, bookworm Dockerfiles with make) onto this bugfix branch so CI can go green while #70 awaits review. Merge target remains main; this does not merge #70.
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.

2 participants