Hello ZmnSCPxj,
You say "A taker can be a surveillor as well", as though that's simple
and easy to achieve. In reality there are many defenses against that.
Defending against the attack of a malicious taker aborting at the last
step is the purpose of the podle commitments which joinmarket has
implemented since 2016. This was in response to this attack actually
taking place. Another important point is that this attack cant happen
secretly, it is very obvious to everyone operating a maker that it
happens. The podle defense means that an attacker doing this will
constantly have to spend money on miner fees to create new UTXOs. Here's
a writeup with links to other blog posts about the whole thing:
https://gist.github.com/chris-belcher/00255ecfe1bc4984fcf7c65e25aa8b4b
As well as podle as mitigation, the multiple mixdepths in the joinmarket
wallet also helps a lot because it's not trivial for an attacker to
actually learn all the UTXOs in all 5 mixdepths, which is necessary for
the attack to work.
Mitigation in Teleport works in a slightly different way: takers can
only see UTXOs or transactions belonging to the maker once they have
already gotten their own transaction confirmed. So if they were to abort
the protocol early they would not only have spent miner fees but also
waste their own time waiting for the OP_CSV timeout.
It's worth remembering that the fidelity bond UTXOs are not linked to
any resulting coinjoin or coinswaps on-chain.
Yes linking the two identities (joinmarket maker and teleport maker)
together slightly degrades privacy, but that has to be balanced against
the privacy loss of leaving both systems open to sybil attacks. Without
fidelity bonds the two systems can be sybil attacked just by using about
five-figures USD, and the attack can get these coins back at any time
when they're finished.
Regards
CB
On 13/05/2022 13:44, ZmnSCPxj wrote:
Good morning Chris,
Hello waxwing,
A user sacrifices X amount of time-value-of-money (henceforth TVOM)
by committing in Joinmarket with FB1. He then uses the same FB1 in
Teleport, let's say. If he gets benefit Y from using FB1 in Joinmarket,
and benefit Z in Teleport, then presumably he'll only do it if
(probabilistically) he thinks Y+Z > X.
But as an assessor of FB1 in Joinmarket, I don't know if it's also
being used for Teleport, and more importantly, if it's being used
somewhere else I'm not even aware of. Now I'm not an economist I admit,
so I might not be intuit-ing this situation right, but it fees to me
like the right answer is "It's fine for a closed system, but not an open
one." (i.e. if the set of possible usages is not something that all
participants have fixed in advance, then there is an effective Sybilling
problem, like I'm, as an assessor, thinking that sacrificed value 100 is
there, whereas actually it's only 15, or whatever.)
I don't entirely agree with this. The value of the sacrifice doesn't
change if the fidelity bond owner starts using it for Teleport as well
as Joinmarket. The sacrifice is still 100. Even if the owner doesn't run
any maker at all the sacrifice would still be 100, because it only
depends on the bitcoin value and locktime. In your equation Y+Z > X,
using a fidelity bond for more applications increases the
left-hand-side, while the right-hand-side X remains the same. As
protection from a sybil attack is calculated using only X, it makes no
difference what Y and Z are, the takers can still always calculate that
"to sybil attack the coinjoin I'm about to make, it costs A btc locked
up for B time".
I think another perspective here is that a maker with a single fidelity bond
between both Teleport and Joinmarket has a single identity in both systems.
Recall that not only makers can be secretly surveillors, but takers can also be
secretly surveillors.
Ideally, the maker should not tie its identity in one system to its identity in
another system, as that degrades the privacy of the maker as well.
And the privacy of the maker is the basis of the privacy of its takers.
It is the privacy of the coins the maker offers, that is being purchased by the
takers.
A taker can be a surveillor as well, and because the identity between
JoinMarket and Teleport is tied via the single shared fidelity bond, a taker
can perform partial-protocol attacks (i.e. aborting at the last step) to
identify UTXOs of particular makers.
And it can perform attacks on both systems to identify the ownership of maker
coins in both systems.
Since the coins in one system are tied to that system, this increases the
information available to the surveillor: it is now able to associate coins in
JoinMarket with coins in Teleport, via the shared fidelity bond identity.
It would be acceptable for both systems to share an identity if coins were
shared between the JoinMarket and Teleport maker clients, but at that point
they would arguably be a single system, not two separate systems, and that is
what you should work towards.
Regards,
ZmnSCPxj
_______________________________________________
bitcoin-dev mailing list
bitcoin-dev@lists.linuxfoundation.org
https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev