Class SignatureComposer
Composes a fully signed transaction from partially signed blobs (#43). Devices sign with whatever keys they hold — single main signature, sponsor or counterparty co-signature, or portable multisig Signer entries — and the composer routes everything into the right sections. Which section an entry belongs to is still decided here, by account, but it is no longer only the composer's business: since rippled's fixCleanup3_4_0 an entry in SponsorSignature.Signers or CounterpartySignature.Signers covers different bytes than one in tx.Signers, so the signer had to know its side already. It works that out from the transaction in every shape but one - see SignatureRole - and routing an entry into a section its signer did not sign for now produces a signature the node rejects rather than a portable one.
Inheritance
Namespace: Xrpl.Wallet
Assembly: Xrpl.dll
Syntax
public static class SignatureComposer
Methods
| Edit this page View SourceComposeSignatures(IEnumerable<string>, IReadOnlyCollection<string>?)
The two-argument form, for sponsor-side routing only.
Declaration
public static SignatureResult ComposeSignatures(IEnumerable<string> partBlobs, IReadOnlyCollection<string>? sponsorSignerAccounts)
Parameters
| Type | Name | Description |
|---|---|---|
| IEnumerable<string> | partBlobs | Partially signed blobs of the same transaction. |
| IReadOnlyCollection<string> | sponsorSignerAccounts | Accounts whose Signer entries belong to the sponsor's SignerList. |
Returns
| Type | Description |
|---|---|
| SignatureResult |
Remarks
Kept as its own overload rather than folded into the three-argument method above. Adding a parameter with a default is source-compatible but not binary-compatible: an assembly compiled against the two-argument signature emits a call to a method that would no longer exist, and fails at run time rather than at build.
ComposeSignatures(IEnumerable<string>, IReadOnlyCollection<string>?, IReadOnlyCollection<string>?)
Offline composition. Signer entries from accounts listed in
sponsorSignerAccounts go into
SponsorSignature.Signers, entries from
counterpartySignerAccounts into
CounterpartySignature.Signers (XLS-66 LoanSet borrower with a
SignerList); all other entries go into tx.Signers. For
ledger-driven routing use the IXrplClient.ComposeSignatures
extension instead.
Declaration
public static SignatureResult ComposeSignatures(IEnumerable<string> partBlobs, IReadOnlyCollection<string>? sponsorSignerAccounts = null, IReadOnlyCollection<string>? counterpartySignerAccounts = null)
Parameters
| Type | Name | Description |
|---|---|---|
| IEnumerable<string> | partBlobs | Partially signed blobs of the same transaction. |
| IReadOnlyCollection<string> | sponsorSignerAccounts | Accounts whose Signer entries belong to the sponsor's SignerList. |
| IReadOnlyCollection<string> | counterpartySignerAccounts | Accounts whose Signer entries belong to the LoanSet counterparty's SignerList. |
Returns
| Type | Description |
|---|---|
| SignatureResult |