Skip to content

[Feature][Wallet] Allow sendXtoY to create multiple transactions #970

@Zannick

Description

@Zannick

Summary

Currently, attempts to send Veil with these commands can fail if it does not fit in a single transaction or block (and for RingCT, sometimes the user needs to run an additional command to unstick the funds). Instead, we plan to create multiple transactions for sending the requested funds. Spending zerocoin already does this. (We will not cover minting zerocoin here.)

Outline

  • Create MultiTxReceipt wrapper class akin to ZerocoinSpendReceipt.
  • Create new function to pick inputs up to a certain amount.
  • Modify send
    • assign partial values to outputs when the inputs returned aren't enough
    • Like ZerocoinSpend: create multiple transactions, test accepting them to the mempool as they are created, commit them in a batch after all have passed
    • ct and ringct outputs are split not something that I have to edit
  • Add RPC option to use multi-tx. Automatically determine maximum number of inputs (or define a hardcoded fixed maximum) or accept the number as the option.
  • regtest ct sends
  • regtest ringct sends

Optional additions

  • Add config option to default to multi-tx.
  • Can change from one tx can be used in another? Doesn't matter in this case, because only the last tx will even have change left.
  • If a transaction is still rejected for being too large, it could be automatically split further?

Metadata

Metadata

Assignees

Labels

Coin Type: BasecoinSpecifically related to basecoin transactionsCoin Type: CTSpecifically related to CT transactionsCoin Type: RingCTSpecifically related to RingCT transactionsComponent: Core AppRelated to the application itself.Component: RPCRelated to the console commands themselves.Component: WalletRelating to keystore, tx creation, and balance trackingDev Status: In ProgressSomeone is actively working on this issue.Issue Type: Feature RequestAdditional feature that would make Veil better.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions