Skip to content
This repository has been archived by the owner on May 13, 2022. It is now read-only.

Protocol extention where maker sends address and value of UTXOs in !ioauth #682

Open
chris-belcher opened this issue Dec 4, 2016 · 1 comment

Comments

@chris-belcher
Copy link
Collaborator

chris-belcher commented Dec 4, 2016

This is required to be sorted out before better blockchaininterfaces can be made like #653 and #470

Creating an issue for this problem: #470 (comment)

Nonverifying wallets are not able to query the utxo set like a full node can. After discussing it a little on IRC it seems probably the best way forward now is to have the maker send the value and address for each UTXO it sends. It's possible they could simply lie about it, but full node takers will still check, the worst that could happen is the transaction will be invalid (so this is a DOS) and makers have an incentive not to do this.

Right now the !ioauth command looks like this (see https://github.com/JoinMarket-Org/JoinMarket-Docs/blob/master/Joinmarket-messaging-protocol.md#private-conversation-in-detail)

!ioauth ulist maker_auth_pub coinjoinA changeA B(mencpubkey) (NS)

We can code a backward-compatible change that adds a list of addresses and values (I haven't tested the backward-compatability but from reading the code it should work)

!ioauth ulist maker_auth_pub coinjoinA changeA B(mencpubkey) addressvaluelist (NS)

Then after we see that almost all makers have updated, we can write new blockchain interfaces like #653 and #470

@chris-belcher
Copy link
Collaborator Author

chris-belcher commented Feb 10, 2017

This opens a DOS where lots of makers announce cheap offers and then send invalid UTXOs to nonverifying-takers who can't tell that the UTXOs are fake, and therefore can't ban the makers.

Two ways for the taker to detect invalid UTXOs:

  1. pushtx() will fail, then the taker could maybe ban all makers. This allows one bad maker to get other makers banned, so this is a DOS because it amplifies the effect.
  2. The other makers will all be running full nodes and could check whether the UTXOs are real. They could send an error message back to the taker with the invalid UTXOs. Trouble is the taker can no more trust them either, they could simply lie and that would be a DOS.

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

1 participant