Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

display received payments for unspendable multisig addresses #1928

Closed
freewil opened this issue Oct 13, 2012 · 7 comments
Closed

display received payments for unspendable multisig addresses #1928

freewil opened this issue Oct 13, 2012 · 7 comments

Comments

@freewil
Copy link
Contributor

freewil commented Oct 13, 2012

It seems to me that the usefulness of multisig addresses are severely limited if the current client implementation doesn't support showing received payments to a multisig address unless one has all the keys imported into their wallet.

I understand why it may be considered dangerous to show received payments if they aren't spendable (the wallet doesn't have all the required keys for the multisig address) but at the same time that is exactly the point of using multisig addresses.

It seems any rpc calls dealing with transactions (listsince, listtransactions, etc) should at least have an extra option to show transactions sent to multisig addresses that have been added with addmultisigaddress (ismine: true) even if all the keys haven't been imported into the wallet.

@gmaxwell
Copy link
Contributor

Not all multisig additions are equal. An address you can spend with the help of the computer in your pocket isn't the same as an escrow held by a potentially hostile counterparty. We need some way of distinguishing these cases.

@freewil
Copy link
Contributor Author

freewil commented Oct 16, 2012

it seems the only current way to watch for incoming multisig transactions without having all the keys in the wallet is:

  1. wait for -blocknotify
  2. call getblock
  3. iterate over the transactions array and call getrawtransaction
  4. iterate over the outputs in getrawtransaction to see if it has an address you care about

@gavinandresen
Copy link
Contributor

Yes, that's essentially what the wallet code does for transactions it cares about.

Note that 3) can be done with one "batch" RPC call, so it's not as inefficient as you might think.

What is your use case where you might be getting payments on multisig addresses where you don't control all of the keys and aren't told via some way other than the blockchain the transaction ID of a new, incoming payment? The use cases I can think of all involve negotiation between the people who hold the keys, and I assume that the transaction id would be included in that negotiation (in which case you use getrawtransaction/signrawtransaction to spend).

The multi-device wallet will definitely require a new type of 'ismine' key, where it IS yours, but one of the private keys is on another device that you own (and when that is implemented I assume listtransactions/etc will show those payments).

@freewil
Copy link
Contributor Author

freewil commented Oct 17, 2012

I would like to use multisig addresses for customer deposits. I was planning on having the server that watches for incoming deposits have one key and then there would be at least one other key stored elsewhere that would be needed to process withdrawals. In this type of scenario you control all the keys, but they aren't in one place. What would be the use of multisig addresses if all the keys are in one wallet?

In my scenario you could ask a customer for a transaction id, but it does make it more complicated than just asking them to make a deposit to a bitcoin address as normally is done.

Thanks for pointing out the batch rpc calls, I didn't think of that. I think the best thing to do would be to add a new flag to addmultisigaddress that will set the new ismine flag that you are talking about to true and then listtransactions, listsince, etc will show them

@freewil
Copy link
Contributor Author

freewil commented Nov 15, 2012

Perhaps we could use a multisig issue label? There appears to be much to do in the area of a higher-level API to deal with multisig transactions.

@maciej-trebacz
Copy link

Is there any progress on that?

My use case for this would be, that my service would manage users wallet and make transaction drafts for him, and his job would be signing them with his private key that my server doesn't know. @gavinandresen ?

While at it, it would be very nice to have a RPC command like "sendfrom" which could draft a transaction from given address to given addresses. Right now if the multisig address received several transactions, you have to handle the calculations yourself, and bitcoin client already solved that for plain addresses.

@laanwj
Copy link
Member

laanwj commented May 18, 2015

This can be done using the watch-only functionality in 0.10+: Add the multisig address with importaddress.

@laanwj laanwj closed this as completed May 18, 2015
@bitcoin bitcoin locked as resolved and limited conversation to collaborators Sep 8, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

5 participants