Multi-Signing
Multi-signing in the XAG Ledger is a method of authorizing transactions for the XAG Ledger by using a combination of multiple secret keys. You can have any combination of authorization methods enabled for your address, including multi-signing, a master key pair, and a regular key pair. (The only requirement is that at least one method must be enabled.)
Benefits of multi-signing include:
- You can require keys from different devices, so that a malicious actor must compromise multiple machines to send transactions on your behalf.
 - You can share custody of an address between multiple people, each of whom only has one of several keys necessary to send transactions from that address.
 - You can delegate the power to send transactions from your address to a group of people, who can control your address if you are unavailable or unable to sign normally.
 - ... and more.
 
Signer Lists
Before you can multi-sign, you must create a list of which addresses can sign for you.
The SignerListSet transaction defines which addresses can authorize transactions from your address. You can include up to 8 addresses in a SignerList. You can control how many signatures are needed, in which combinations, by using the quorum and weight values of the SignerList.
Sending Multi-Signed Transactions
To successfully submit a multi-signed transaction, you must do all of the following:
- The address sending the transaction (specified in the 
Accountfield) must own aSignerListin the ledger. - The transaction must include the 
SigningPubKeyfield as an empty string. - The transaction must include a 
Signersfield containing an array of signatures. - The signatures present in the 
Signersarray must match signers defined in the SignerList. - For the provided signatures, the total 
weightassociated with those signers must be equal or greater than thequorumfor the SignerList. - The transaction cost (specified in the 
Feefield) must be at least (N+1) times the normal transaction cost, where N is the number of signatures provided. - All fields of the transaction must be defined before collecting signatures. You cannot auto-fill any fields.
 - If presented in binary form, the 
Signersarray must be sorted based on the numeric value of the signer addresses, with the lowest value first. (If submitted as JSON, the submit_multisigned method handles this automatically.)