Skip to content

Multi-Signature Implementation Uses Local-Only JSON — No Real Stellar XDR Envelopes #8

Description

@Nanle-code

Overview

src/utils/multisig.rs and wallet multisig submit work with a local MultiSigTransaction JSON format. Stellar's actual multisig model involves submitting a TransactionEnvelope with multiple DecoratedSignature entries attached. The current implementation does not produce a real Stellar transaction that Horizon can accept.

Resolution

Redesign multisig around real TransactionEnvelope XDR. The multisig create command should set the threshold and signer weights on-chain using a SetOptions operation via a real XDR transaction. The multisig sign command should: deserialize the base64 XDR transaction envelope from a file, derive the signing key for each available local signer wallet, compute the TransactionSignaturePayload (network passphrase hash + transaction hash), sign it, and append DecoratedSignature { hint: pubkey_last_4_bytes, signature } to the envelope's signatures vec. Serialize back to XDR base64. The multisig submit command should submit the fully decorated XDR envelope to Horizon's /transactions endpoint. Add --xdr flag to output the unsigned transaction XDR so it can be signed by external tools (Albedo, Stellar Laboratory). This is the standard Stellar multisig flow that works with every other Stellar tool.

Metadata

Metadata

Assignees

No one assigned

    Labels

    GrantFox OSSIssue tracked in GrantFox OSSMaybe RewardedIssue may be eligible for a GrantFox rewardOfficial CampaignCampaign: Official Campaign

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions