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.
Overview
src/utils/multisig.rsandwallet multisig submitwork with a localMultiSigTransactionJSON format. Stellar's actual multisig model involves submitting aTransactionEnvelopewith multipleDecoratedSignatureentries attached. The current implementation does not produce a real Stellar transaction that Horizon can accept.Resolution
Redesign
multisigaround realTransactionEnvelopeXDR. Themultisig createcommand should set the threshold and signer weights on-chain using aSetOptionsoperation via a real XDR transaction. Themultisig signcommand should: deserialize the base64 XDR transaction envelope from a file, derive the signing key for each available local signer wallet, compute theTransactionSignaturePayload(network passphrase hash + transaction hash), sign it, and appendDecoratedSignature { hint: pubkey_last_4_bytes, signature }to the envelope'ssignaturesvec. Serialize back to XDR base64. Themultisig submitcommand should submit the fully decorated XDR envelope to Horizon's/transactionsendpoint. Add--xdrflag 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.