litecoin-project / litecoin

Litecoin source tree
http://www.litecoin.org
MIT License
4.35k stars 3.03k forks source link

Feature Request: Support transactions that require signatures of both sender and recipient.. #239

Closed destenson closed 2 years ago

destenson commented 8 years ago

I would like to propose that Litecoin add the concept of multi-signature transactions (in addition to multisig wallets). A multi-signature transaction would be a transaction that requires the valid signature of all parties involved before it is actually committed to the blockchain as a valid transaction. A requester or recipient could be any valid address, not just multi-signature wallets. The transaction can be initiated by either the payer or the payee.

Requests for payment can be initiated by party A with a valid signature (or all required signatures if initiated by a multisig wallet) & when party B also signs the request, the actual transfer of funds from B to A will occur like a normal transaction. This will add invoicing as an intrinsic feature to Litecoin.

Outgoing payments to a third-party can also be multisig. In that case, the request is for acceptance of payment, and the transfer is completed when the recipient signs the transaction. Since the transfer is not valid until all parties sign, this allows the funds for the transaction not to be committed until the recipient accepts the payment. If funds are not available when the transaction is adequately signed, it will be rejected by the blockchain due to insufficient funds. A signatory can also rescind their signature before the transaction is accepted by all parties. This allows a fund transfer to be cancelled before payment is accepted. This is a feature that is missing from all major cryptocurrencies.

losh11 commented 8 years ago

Litecoin Core has multi-sig support, just not outside the console. In the future we may add a UI for this. But for now, I would suggest you use Electrum-LTC for Litecoin multi-sig support.

Just a note, Litecoin multi-sig prefixes are also '3', this will be changed very soon.

destenson commented 8 years ago

"Multi-sig" is not what this issue is about. It's about making the transactions themselves dynamically multisig with the signatures of both the sender and recipient required before a transaction is considered valid. Please read the content of what I wrote & see if the multi-sig support in Litecoin provides the capabilities I describe, particularly, the invoicing & transaction cancellation features. Such a capability would not require a special "3"-prefixed address, as it is the transaction that needs to be multi-signature, not just the sending address. Other people I've discussed this with have suggested that "ring multi-sig" could provide this functionality. Does Litecoin support that yet?

ravibhojwani commented 7 years ago

Multi-sig Brought me here...

charleshsu168 commented 7 years ago

electrum-ltc wallet has built-in support for multi-sig. check out the documentation for bitcoin electrum. same procedures. http://docs.electrum.org/en/latest/multisig.html Sender just needs to have add recipient's master public key in his 2/2 multi-sig wallet. Every time sender sends something to the recipient's address from his multi-sig wallet, it will require both the sender and recipient signatures in order to spend.

destenson commented 7 years ago

Hi, @charleshsu168, what you're describing is a multi-sig wallet, and while effectively you can do what I describe by adding the recipient to your wallet, it's not the same. What if you have 100 people to pay, or a 1000? You'd have to make a different wallet for every recipient, and each recipient would also have to have a walllet that's multi-sig'd with you. That isn't what I'm proposing. I am suggesting having a way to give the qualities of a multi-sig wallet, to an individual transaction, for example, as you suggest, by adding the recipient's public key to the transaction causing it to remain pending and cancellable until the recipient signs, finalizing the transaction and receiving the coin.

See also: https://github.com/peercoin/peercoin/issues/119, https://github.com/dashpay/dash/issues/894, https://github.com/monero-project/monero/issues/881, https://github.com/bitcoin/bitcoin/issues/8267, https://github.com/ethereum/EIPs/issues/123.

charleshsu168 commented 7 years ago

if you have 100 people to pay, you'd write an automated script

destenson commented 6 years ago

@charleshsu168, I think ring-signatures bring us conceptually close to a solution, but wouldn't your suggestion require creating and maintaining a separate wallet for each recipient address? Could there be a more dynamic and temporary way to make this feature possible?

destenson commented 6 years ago

The Simple Schnorr Multisignatures recently described by Blockstream and just published in this paper, sound like exactly the kind of algorithm that would make this proposal feasible as described.

I guess my proposal was just a little too far ahead of the technology available to implement it.

isaacplloyd commented 6 years ago

Isn't this what lightning channels are? Requires both sender and receiver to validate, or transaction gets refunded.

destenson commented 6 years ago

If that's the case, then great. I don't know how lighting channels work except on a high level and it didn't seem to match for me. It's probably obvious I didn't make this suggestion as an authoritative figure, but as an outsider who thought it would open up doors if a transaction could require the recipient to sign too.

losh11 commented 2 years ago

Closing due to inactivity.