Skip to content

[Feature Request]: Enable Transactions with AmountOutputs > AmountInputs, to create PSBTs with Sighash ANYONE_CAN_PAY #1903

@sparrrrr

Description

@sparrrrr

Sparrow has implemented the ability to handle unconventional sighash flags. However, its implementation limits most of the functionalities that the handling of these signatures enables in the protocol. Specifically, it is not possible to construct transactions in which the amount of the outputs is greater than the amount of the inputs selected by the user, since the create transaction button is disabled and the message insufficient funds appears, also making it impossible to select a non-conventional sighash type. This behavior disables the possibility of creating PSBTs, in which more signers can add more signatures to both inputs and outputs depending on the type of sighash selected. It is in the possibility of creating these types of special transactions that the true power for which these signatures were implemented lies, and Sparrow currently disables it.
In #706 (comment) Craig replied:

**> "It is already possible to create PSBTs (and transactions) with different sighash types - from what I understand this issue is actually about creating transactions that would usually not be possible within a wallet (for example, creating an output that is larger than the funds available in the wallet).

I would like to understand the desired use case better. Supporting the crowdfunding use case is more than just allowing the creation of a transaction with such a large output - there must also be support for a funder to load the transaction in a wallet and add inputs to it, before passing it on to the next funder to add more inputs. This process doesn't seem very practical or private to me (over say a standard BIP47 type crowdfunding approach), but possibly I am missing something."**

This change in the software allows funds to be added to a multi-signature wallet in an atomic manner by sharing psbt's between signatories. This opens the door for people who do not trust each other to deposit funds into a multi-signature wallet that serves as a guarantee and incentive to successfully complete an agreement between the parties. Currently, I only know how to build this type of transaction using console command lines.
This makes these capabilities inaccessible to the average user due to their complexity and the possibility of errors.
The best option, in my opinion, would be to eliminate the check that outputs are less than inputs and replace it with warnings. IMHO, the current logic does not provide security or functionality, since a transaction with outputs greater than inputs is invalid in itself and cannot be confirmed, yet it does limit these capabilities.
On the other hand, the possible argument that this introduces complexity into the interface or code maintenance is, in my view, like thinking that all browsers today should have the complexity of a browser from the year 2000.
I like to think of wallet software as browser software that allows users to take advantage of the capabilities implicit in the protocol with increasingly advanced features.

Thanks for your time!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions