Navigera i de olika CoinJoin-implementeringarna

By Bitcoin Magasin - 1 år sedan - Lästid: 12 minuter

Navigera i de olika CoinJoin-implementeringarna

How does one cut through the noise and confusion to find the optimal way to utilize CoinJoins and obscure their bitcoin transaktioner?

This is an opinion editorial by Thibaud Maréchal, a contributor to privacy-focused Bitcoin wallet project Wasabi Wallet.

“Divide and conquer” is a battle-tested military strategy to fracture a group of people by making them disagree and fight each other instead of joining together against a common enemy. Wasabi and Samourai, two popular bitcoin wallets with different CoinJoin implementations have been fighting for many years. JoinMarket, a third CoinJoin implementation, has also been involved in colorful debates with other privacy developers.

Lär sig om bitcoin privacy and CoinJoins has become quite hard with ongoing drama. Who to trust? How can one verify for themselves? It’s all very unclear. What does it bring for precoiners, casual bitcoin and purists alike? Confusion, fear, uncertainty and doubt (FUD). The state of bitcoin privacy is embarrassing with all this perpetual drama scaring away new users. Precious time is wasted by developers, educators and regular users who would probably be better off doing anything but trying to keep up with the drama.

It is obvious that no one agrees on “how to do CoinJoins right,” let alone, how CoinJoins should be implemented to optimize user privacy and block space efficiency on the Bitcoin network? What are the tradeoffs between different implementations? Are some implementations outright flawed? How do CoinJoins “cross the chasm” from early adopters to mainstream users when billions of people will turn to bitcoin in the coming years?

Låt oss nu ta en titt på CoinJoins genom att ställa grundläggande frågor och ta upp några antaganden för att bygga någon form av mentala modeller, som kommer att vara användbara för att utvärdera olika implementeringar i framtida artiklar.

Inte alla CoinJoins görs lika

Blockspace efficiency should be considered to make sure CoinJoin transactions scale as Bitcoin gets used by more people across the world. This is rarely discussed as a top priority. Any CoinJoin design that ignores blockspace scarcity is unnecessarily spamming the block chain while accumulating technical debt, which will be difficult to pay back as more users CoinJoin in the future. Having a minimal footprint on the block chain is one goal that seems very reasonable to aim for: a small number of transactions to get to an acceptable level of anonymity sounds ideal.

What is an acceptable level of anonymity? What does anonymity even mean in the context of bitcoin privacy?How are particular CoinJoin designs dealing with blockspace scarcity?

Återställ din integritet

Anonymitet i bitcoin would mean that there are no outstanding or unusual features that would make a given transaction remarkable from other transactions on the ledger. That, of course, is not by design on the Bitcoin network, which is a pseudonymous system where coins (UTXOs, which stands for Unspent Transaction Output in technical terms) are by default not fungible due to having unique transaction histories.

CoinJoins add a level of anonymity to the bitcoin network by breaking links between transaction inputs and outputs primarily making resulting UTXOs indistinguishable from each other. There are other heuristics that chain analysis companies use to watch the bitcoin network, such as common input ownership, self-spending, round amounts or timing analysis to name a few, which may or may not be obscured by CoinJoins.

CoinJoins help bitcoin reclaim their privacy but are not the solution to everything. If privacy is understood as the choice to share information about oneself, great privacy can be achieved through CoinJoins but picking the right implementation is essential.

What is my privacy goal using CoinJoins? Which heuristics does a CoinJoin implementation protect me against?What are the risks that I want to avoid?

Antal deltagare

Befintliga CoinJoin-implementationer har väldigt olika sätt att förbättra integriteten. Oavsett varje CoinJoin-implementeringsdesign verkar anonymitetsuppsättningen (ett mått på anonymitetsnivån) vara det mest traditionella sättet att utvärdera hur mycket integritet man får av en CoinJoin. Det finns andra sätt som kommer att diskuteras i andra artiklar. Antagandena är att antingen en hög anonymitetsuppsättning uppnås med en stor CoinJoin-transaktion eller att den uppnås över flera mindre CoinJoin-transaktioner. Dessa två parametrar är båda viktiga, men finns det en som är viktigare än den andra?

När det gäller blockspace-effektivitet skulle antagandet vara att det är bättre att uppnå en stor anonymitetsuppsättning med en enda mycket stor transaktion som har många deltagare än flera mycket små transaktioner med ett fåtal deltagare.

Is one single large CoinJoin or multiple small CoinJoins better for privacy?How can that be verified truthfully and rigorously? How small is too small for a CoinJoin? What is the right metric to evaluate how much privacy you can get from a CoinJoin? What is the most blockspace efficient when it comes to the size and number of CoinJoins to reclaim your privacy?Is it realistic to expect coins to participate in multiple CoinJoins over time as more people start using CoinJoins? How many CoinJoin rounds is enough or too much?

In simple terms, CoinJoins allow bitcoin to reclaim their privacy by giving them plausible deniability. Plausibility is a measure of probability. How likely is it that your bitcoins were spent or simply moved to another address you still control? How likely is it that one input is linked to a given output?

Obviously, the smaller the probabilities across many options, the better plausible deniability you get as a hodler. Plausible deniability is hard to preserve because errors are easy to make. Change outputs are often problematic for bitcoin who care about privacy and are often a source of contentious discussions and criticism. Why is change output such a controversial topic in CoinJoins?

Ändra utgång

It’s all about deterministic links. If bitcoin transactions had a spectrum of privacy, on one end would be a transaction with absolute plausible deniability, meaning 0% chance of knowing the link between inputs and outputs. This is also referred to as randomness or entropy in a CoinJoin. The assumption is that the more random or higher the entropy, the better. On the other end would be a transaction with 100% deterministic links between its only input and single output.

Ointuitivt betyder en hög entropi inte nödvändigtvis att en transaktion ger bra sekretess. En transaktion med tre ingångar och tre utgångar med lika stora belopp har tekniskt sett 100 % entropi, vilket betyder att det inte finns något sätt att skilja varje utdata från varandra; och ändå finns det en 33.33 % chans att varje ingång är kopplad till en viss utgång. Hög entropi behöver inte betyda god rimlig förnekelse.

Change har nästan alltid en mycket hög deterministisk koppling till sin tidigare transaktion. Det råder med andra ord föga tvivel om att en förändringsutgång inte är knuten till den tidigare transaktionen som använde den. Det kan vara ett stort sekretessproblem om en given ändringsutdata skulle användas tillsammans med andra anonyma ingångar efter CoinJoins (även om undantag kan gälla i vissa fall). Detta brukar kallas UTXO-konsolidering och kan vara ödesdigert för din integritet om det görs naivt.

Change outputs can de-anonymize outputs that have gained some plausible deniability from CoinJoins if spent together. Errors are commonplace for bitcoin and sometimes the realization comes too late, undoing years of diligent privacy enhancements in one single spend. How to get rid of this change output problem?

Befintliga CoinJoin-implementationer har tre sätt att hantera förändringsutdata: isolera förändringen till en annan plånbok som inte är CoinJoining, inkludera förändringsutdata i samma plånbok som är CoinJoining eller bli av med förändringsutdata genom att inte ha förändringsutdata alls. Det sistnämnda verkar vara det mest tillrådliga när det gäller integritet och blockutrymmeseffektivitet, men ytterligare grävning krävs för att validera eller förkasta detta antagande.

Is a high entropy score enough to qualify a CoinJoin as good for your privacy?Is it better to isolate change outputs in another wallet or should it be removed entirely?Is a change output always bad for your privacy?

Myntvalörer

Getting rid of change outputs in CoinJoins requires that coin denominations be variable in a CoinJoin. In other words, the inputs registered in a given CoinJoin cannot have a fixed size like 0.1 BTC, otherwise it becomes impossible (or at least very hard) to consume inputs without creating change outputs as most UTXOs don’t have round numbers (i.e. 0.19572394 BTC where 0.09572394 BTC would be the change in a 0.1 BTC fixed coin denomination CoinJoin).

Ändringsutgångar kan vara farliga för din integritet, minns du? Att ha flera storlekar för ingångar och utgångar i en CoinJoin verkar vara en dålig idé eftersom det för oss närmare deterministiska länkar mellan ingångar och utgångar, eller hur? Tja, ja och nej. Det beror på. Om en CoinJoin har ett litet antal deltagare (vilket betyder få ingångar och få utgångar), så är olika valörer en dålig idé. Men vad händer om ett stort antal ingångar och utgångar ingår i en given CoinJoin?

I en stor CoinJoin kan flera valörer ge en hög nivå av plausibel förnekelse till varje resulterande utdata utan att skapa förändringsutdata och kräva ytterligare transaktioner, vilket är en mycket effektiv användning av blockutrymme. Det verkar som att många rutor kan vara bockade vid denna tidpunkt.

Is it better to have fixed or variable coin denominations in a CoinJoin?How big should a CoinJoin be for variable denominations to make sense?Are variable coin denominations the best way to get rid of change output in CoinJoins?

Det säger sig självt att sammankoppling av CoinJoin-rundor inte bör vara acceptabel under några omständigheter oavsett om myntvalörerna är olika eller om CoinJoin är en stor eller liten transaktion, eller hur? Tja, här återigen finns det en viktig nyans att förstå.

Coinjoin Rounds Interconnectivity

Det hävdas att registrering av indata från tidigare delade CoinJoins till nya CoinJoins är felaktigt i alla fall. Deltagare från ömsesidigt delade tidigare CoinJoins verkar inte ha nytta av att blanda ihop i andra CoinJoins. Det verkar skadligt för privatlivet och kritiseras ofta.

Vad händer om en CoinJoin är stor och vissa registrerade ingångar kommer från flera andra CoinJoins, som var och en också är nedströms från flera andra CoinJoins? I ett sådant fall förbättrar deltagare som remixar tillsammans fortfarande sin integritet trots att de kommer från ett delat tidigare CoinJoin. Om varje CoinJoin är tillräckligt stor, behöver deltagarna inte remixa flera gånger, även om de kan om de vill öka sina anonymitetsuppsättningar ytterligare.

Om många stora sammanflätade CoinJoins är inblandade, bör den resulterande anonymitetsuppsättningen ge massor av rimlig förnekelse, trots att de delar tidigare CoinJoins som ursprung för medel.

Is CoinJoin rounds interconnectivity, which is sharing mutual past CoinJoins, a bad thing on its own?How large should a CoinJoin be for remixing with other past inputs to be considered safe?

Personlig full nod

Should you run your own bitcoin full node when participating in CoinJoins? On the surface, it seems like a great idea, and it usually is. Some CoinJoin implementations allow that, while others outright require it. Others won’t allow you to even use your own full node. Is that to condemn absolutely? If you’ve read until now, you should know that the answer is nuanced and opens up a deep rabbit hole to be explored later.

Att köra din egen fullständiga nod kommer med användbarhetsavvägningar, och kanske inte tillför mycket integritetsskydd om inte alla användare gör det. Att köra din egen nod kan till och med ge dig en falsk känsla av säkerhet och integritet om få CoinJoin-deltagare gör det, vilket kan vara djupt skadligt. Om Tor används som ett anonymt sätt att CoinJoin (och vi lämnar det så tills vidare), kan det vara bra att använda en betrodd full nod för att sända CoinJoin-transaktionen som standard. Massor av nyanser, och naturligtvis, lita inte på, verifiera.

Det finns några viktiga frågor att ställa för att inte hamna i fällan med signalering om integritetsdygd.

Does the CoinJoin implementation allow to run full nodes, require them by default or don’t allow them? If personal full nodes are not mandatory, what are the privacy shields in place? i.e. Tor, block filters, etc… If I run my own full node, but expect most users to use a default trusted node to CoinJoin, how does that affect my privacy? Can the coordinator de-anonymize me?

With privacy concerns, it is always important to understand what you’re trying to protect, and against whom. Running a full node and using it with your own wallet is the right way to use bitcoin as it allows you to verify your wallet balance and broadcast transactions to the network without trusting anyone. But when it comes to CoinJoins, there is usually a coordinator in charge. What does the coordinator do and how is it selected? Read on.

Koordinator

The CoinJoin coordinator is in charge of having every participant register their inputs and outputs, and sign the collaborative transaction before broadcasting it. Most CoinJoin implementations default on a central coordinator, which is a single point of failure. Up until now, this has been an accepted tradeoff in most bitcoin communities. Can a central CoinJoin coordinator fail? Absolutely. Other implementations allow anyone to be a coordinator for each different CoinJoin, though there are other sets of trade offs here that will be discussed later.

Coinjoins being non-custodial, no loss of funds could occur if any coordinator would fail. The coordinator should never know more than what everyone knows publicly on the bitcoin network. Why? If a coordinator knows more than what is publicly available, a CoinJoin coordinator becomes a honeypot with highly sensitive data that can be exploited against bitcoin trusting the service.

Du ska aldrig lita på en CoinJoin-koordinator. Om en CoinJoin-koordinator inte kan vara ond, bra. Om det kan vara ont så blir det så småningom av fel, försummelser, tvång eller direkt oärlighet.

An example of sensitive user data would be XPUBs, which undeniably leak all the information about a wallet, its addresses, including past, current and future bitcoin transactions. Another example would be the ratio between users running their own full nodes and users trusting the coordinator’s full node to broadcast CoinJoins, as it could de-anonymize users running their own nodes, and therefore deterministically know the links between their inputs and outputs. This is yet another nuanced topic, which would require further investigation and discussion.

Does the coordinator know more than what is publicly available on the bitcoin network? Do users leak sensitive data to the coordinator, such as their XPUB or whether or not they run their own full nodes?Does the coordinator claim that users should trust them using legal defense mechanisms? (i.e. warrant canaries, regulatory arbitrage, etc…)

avgifter

Bottom line, who pays for what in CoinJoins? These bitcoin transactions can be expensive and sometimes fee structures are unclear for bitcoin. It’s hard to know how much good privacy will cost you or even if you are getting any privacy out of it. Some CoinJoin implementations allow a single input to buy its privacy from other inputs who only participate for free to increase their own anonymity set. Getting paid to CoinJoin? With patience, yes.

Vissa modeller förlitar sig på delade avgifter där endast vissa UTXO:er betalar avgifter medan andra inte gör det. Andra modeller förlitar sig på att bjuda in ett ständigt växande antal nya tydliga ingångar (ej blandade ännu) för att finansiera de befintliga CoinJoins för att remixa ingångar som inte har tillräckligt höga anonymitetsnivåer. Vissa modeller verkar ohållbara på lång sikt medan andra är naiva eller alldeles för dyra för de flesta användare.

And what fees are we talking about? Well usually, inputs participating in CoinJoins pay both a coordinator fee or taker fee, (the service fee to get some level of anonymity) and the bitcoin network fees. In particular CoinJoin models, these fees get waived in certain circumstances. The economics of CoinJoins is a deep rabbit hole which requires further investigation for a much deeper understanding.

Who pays for what in a CoinJoin? What are all the fees? What are the incentives of the CoinJoin coordinator? Are all CoinJoin rounds paid for or is there any free remix?

Having read thus far, the hope is that bitcoin shopping around for CoinJoins would not necessarily have all of the answers, but the right questions to ask. A mental model or framework to evaluate different CoinJoin implementations can be quite helpful for anyone who is considering using CoinJoins to reclaim their privacy on bitcoin. Sorting through the noise of social media requires intellectual honesty and the right evaluation system rigorously applied.

Detta är ett gästinlägg av Thibaud Maréchal. Åsikter som uttrycks är helt deras egna och återspeglar inte nödvändigtvis de från BTC Inc Bitcoin magazine

Ursprunglig källa: Bitcoin magazine