{"id":37327,"date":"2020-05-06T07:00:49","date_gmt":"2020-05-06T04:00:49","guid":{"rendered":"https:\/\/forklog.com\/en\/?p=37327"},"modified":"2025-08-29T15:20:21","modified_gmt":"2025-08-29T12:20:21","slug":"what-is-coinjoin-what-is-zerolink-what-is-stonewall","status":"publish","type":"post","link":"https:\/\/forklog.com\/en\/what-is-coinjoin-what-is-zerolink-what-is-stonewall\/","title":{"rendered":"What is CoinJoin? What is ZeroLink? What is STONEWALL?"},"content":{"rendered":"<div id=\"cards_wrapper\">\n<div class=\"single_card\">\n<p id=\"card_counter_1\" class=\"card_counter\"><span class=\"card_counter_span\">1<\/span><\/p>\n<p><strong>What is CoinJoin?<\/strong><\/p>\n<div class=\"card_description\">CoinJoin is a technique for anonymising bitcoin transactions.<\/div>\n<\/div>\n<div class=\"single_card\">\n<p id=\"card_counter_2\" class=\"card_counter\"><span class=\"card_counter_span\">2<\/span><\/p>\n<p><strong>Who created CoinJoin, and when?<\/strong><\/p>\n<div class=\"card_description\">The CoinJoin protocol was <a href=\"https:\/\/bitcointalk.org\/index.php?topic=279249.0\" target=\"_blank\" rel=\"noopener noreferrer\">introduced<\/a> in 2013 by Gregory Maxwell, a Bitcoin Core and Blockstream developer.<\/div>\n<\/div>\n<div class=\"single_card\">\n<p id=\"card_counter_3\" class=\"card_counter\"><span class=\"card_counter_span\">3<\/span><\/p>\n<p><strong>What problem does CoinJoin solve?<\/strong><\/p>\n<div class=\"card_description\">\n<p>Contrary to a common refrain, bitcoin does not offer full anonymity. Analysis of the public blockchain can link transactions to an individual.<\/p>\n<p>Bitcoin transactions consist of inputs (sending addresses) and outputs (receiving addresses). When a user wants to transact, they select unspent transaction outputs (UTXOs) as inputs, specify outputs and sign the inputs. Each input is signed independently, and users may specify multiple outputs.<\/p>\n<p>Example of a transaction with four inputs and two outputs:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-97254\" src=\"https:\/\/forklog.com\/wp-content\/uploads\/image2-93-e1588697579399.png\" alt=\"\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 CoinJoin? \u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 ZeroLink? \u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 STONEWALL?\" width=\"820\" height=\"461\"><\/p>\n<p>This transaction has four inputs (0.2 BTC each) and two outputs (0.7 BTC and 0.09 BTC). It is obvious to an observer that a payment is being made: the sender pays one output to someone and returns the change to themselves. Because four inputs were used, the larger output is likely the payment to the recipient. A fee of 0.01 BTC is deducted and collected by the miner.<\/p>\n<p>An observer might also infer that the sender is consolidating smaller inputs to create a larger UTXO (0.7 BTC).<\/p>\n<p>Another inference from such a transaction is that each input is signed independently.<\/p>\n<p>CoinJoin addresses the lack of genuine anonymity in bitcoin.<\/p>\n<\/div>\n<\/div>\n<div class=\"single_card\">\n<p id=\"card_counter_4\" class=\"card_counter\"><span class=\"card_counter_span\">4<\/span><\/p>\n<p><strong>How does CoinJoin work?<\/strong><\/p>\n<div class=\"card_description\">\n<p>An analogy for CoinJoin is a group pooling their cash in one wallet before going shopping. Everyone can watch that no one overspends, but purchasers do not necessarily use the very banknotes they contributed.<\/p>\n<p>With CoinJoin, several parties jointly construct a transaction; each provides inputs and desired outputs. Once all inputs are combined, it becomes impossible to say with confidence which output belongs to which user.<\/p>\n<p>Example:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-97255\" src=\"https:\/\/forklog.com\/wp-content\/uploads\/image1-143-e1588697657295.png\" alt=\"\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 CoinJoin? \u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 ZeroLink? \u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 STONEWALL?\" width=\"820\" height=\"461\"><\/p>\n<p>Four participants want to break links between transactions. They coordinate among themselves (or via a dedicated coordinator) and state which inputs and outputs they want included.<\/p>\n<p>The coordinator embeds this information into a transaction, each participant signs it, and the transaction is broadcast. After participants have signed, it cannot be altered; otherwise it becomes invalid. There is therefore no risk of the coordinator stealing funds.<\/p>\n<p>The transaction acts as a black box that mixes coins. The old UTXOs are spent and new ones created. The only connection between the old and new UTXOs is the transaction itself, but its participants cannot be identified. At most, one can know that a participant supplied one of the inputs and may be the new owner of a final output.<\/p>\n<\/div>\n<\/div>\n<div class=\"single_card\">\n<p id=\"card_counter_5\" class=\"card_counter\"><span class=\"card_counter_span\">5<\/span><\/p>\n<p><strong>Are there weaknesses in CoinJoin?<\/strong><\/p>\n<div class=\"card_description\">\n<ul>\n<li>CoinJoin does not provide complete anonymity: senders and recipients appear on the blockchain. Transactions can also be identified using the <a href=\"https:\/\/www.coinjoinsudoku.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">CoinJoin Sudoku<\/a> analysis tool. This can be mitigated by using fixed denominations for outputs (0.1 BTC, 1 BTC, 10 BTC, etc.), but that adds complexity and constraints.<\/li>\n<li>Creating such transactions requires grouping and coordination among participants.<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<div class=\"single_card\">\n<p id=\"card_counter_6\" class=\"card_counter\"><span class=\"card_counter_span\">6<\/span><\/p>\n<p><strong>How is CoinJoin evolving?<\/strong><\/p>\n<div class=\"card_description\">To improve CoinJoin, developers have proposed a number of extensions and refinements: <a href=\"https:\/\/en.bitcoin.it\/wiki\/JoinMarket\" target=\"_blank\" rel=\"noopener noreferrer\">JoinMarket<\/a>, CoinShuffle and Chaumian CoinJoin.<\/div>\n<\/div>\n<div class=\"single_card\">\n<p id=\"card_counter_7\" class=\"card_counter\"><span class=\"card_counter_span\">7<\/span><\/p>\n<p><strong>Where and how is CoinJoin used?<\/strong><\/p>\n<div class=\"card_description\">\n<p>As of April 2020, two wallets support CoinJoin: the mobile Samourai Wallet with its Whirlpool feature, and the desktop Wasabi Wallet.<\/p>\n<p>On April 5, 2020, the presumed birthday of Satoshi Nakamoto, the bitcoin community marked the first CoinJoin Day, a day of transaction mixing. To mark the occasion, the Wasabi developers <a href=\"https:\/\/twitter.com\/wasabiwallet\/status\/1246714943862444032\" target=\"_blank\" rel=\"noopener noreferrer\">released<\/a> a new version.<\/p>\n<p>CoinJoin is also used in <a href=\"https:\/\/forklog.com\/en\/news\/what-is-mimblewimble\">MimbleWimble<\/a>, a PoW protocol offering broad scalability and enhanced privacy.<\/p>\n<\/div>\n<\/div>\n<div class=\"single_card\">\n<p id=\"card_counter_8\" class=\"card_counter\"><span class=\"card_counter_span\">8<\/span><\/p>\n<p><strong>What is ZeroLink?<\/strong><\/p>\n<div class=\"card_description\">ZeroLink is a protocol that enables anonymous use of bitcoin.<\/div>\n<\/div>\n<div class=\"single_card\">\n<p id=\"card_counter_9\" class=\"card_counter\"><span class=\"card_counter_span\">9<\/span><\/p>\n<p><strong>Who created ZeroLink, and when? <\/strong><\/p>\n<div class=\"card_description\">ZeroLink was created and presented in August 2017 by the developers of Samourai Wallet and Hidden Wallet.<\/div>\n<\/div>\n<div class=\"single_card\">\n<p id=\"card_counter_10\" class=\"card_counter\"><span class=\"card_counter_span\">10<\/span><\/p>\n<p><strong>How does ZeroLink work?<\/strong><\/p>\n<div class=\"card_description\">\n<p>ZeroLink addresses a key problem in CoinJoin-style mixing: a third party (an individual, server or wallet) may know the source and destination of each bitcoin, creating a single point of failure.<\/p>\n<p>ZeroLink operates with two types of wallets: pre-mixing and post-mixing. The former holds initial funds; the user sends them to a tumbler, which distributes mixed bitcoins to wallets for subsequent mixing.<\/p>\n<p>ZeroLink users provide inputs and outputs (from and to addresses) from the pre-mix wallet; the outputs are encrypted, so the tumbler does not know the final recipients of the coins it receives. This encryption is known as \u201cblinding\u201d.<\/p>\n<p>The tumbler then cryptographically signs the blinded output using a blind signature. Thus, the transaction data can be verified at each step, confirming that the blinded data correspond to what was sent originally.<\/p>\n<p>Users then connect to the ZeroLink tumbler via Tor or a similar network and provide the tumbler with unblinded outputs. These are signed using the same blind-signature scheme and compared with the initial blinded outputs to confirm their legitimacy.<\/p>\n<p>Once validated, the tumbler adds the outputs to a large CoinJoin transaction and sends it to users, who confirm it with their private keys.<\/p>\n<p>After confirmation, the tumbler publishes the transaction, which miners include in a block. As a result, all bitcoins are \u201ccleaned\u201d and become fungible again.<\/p>\n<\/div>\n<\/div>\n<div class=\"single_card\">\n<p id=\"card_counter_11\" class=\"card_counter\"><span class=\"card_counter_span\">11<\/span><\/p>\n<p><strong>Where is the ZeroLink protocol used?<\/strong><\/p>\n<div class=\"card_description\">ZeroLink is used in the <a href=\"https:\/\/wasabiwallet.io\/\" target=\"_blank\" rel=\"noopener noreferrer\">Wasabi<\/a> and <a href=\"https:\/\/samouraiwallet.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">Samourai<\/a> wallets; it also underpinned the now-closed HiddenWallet project.<\/div>\n<\/div>\n<div class=\"single_card\">\n<p id=\"card_counter_12\" class=\"card_counter\"><span class=\"card_counter_span\">12<\/span><\/p>\n<p><strong>What is Stonewall?<\/strong><\/p>\n<div class=\"card_description\">Stonewall is a technique that protects transaction privacy from cluster analysis.<\/div>\n<\/div>\n<div class=\"single_card\">\n<p id=\"card_counter_13\" class=\"card_counter\"><span class=\"card_counter_span\">13<\/span><\/p>\n<p><strong>Who developed Stonewall, and when?<\/strong><\/p>\n<div class=\"card_description\">Stonewall was introduced by the Samourai Wallet developers in May 2018. It was devised as a replacement for BIP126 in Samourai Wallet\u2019s initial implementation after vulnerabilities were identified that could reduce entropy in transactions.<\/div>\n<\/div>\n<div class=\"single_card\">\n<p id=\"card_counter_14\" class=\"card_counter\"><span class=\"card_counter_span\">14<\/span><\/p>\n<p><strong>What are Stonewall\u2019s features?<\/strong><\/p>\n<div class=\"card_description\">\n<p>Stonewall does not use CoinJoin but creates the appearance that it does. In essence, Stonewall transactions are ordinary payments: one user sends bitcoin to another. The trick is that users combine their transactions into one, adding an arbitrary number of inputs and outputs to a standard bitcoin transaction. To an outside observer, it resembles a CoinJoin transaction, making standard blockchain analysis less effective.<\/p>\n<p>Stonewall transactions exhibit higher entropy than standard bitcoin transactions, raising the cost of automated chain analysis and hindering transaction-graph analysis. They are constructed to receive a Boltzmann score above zero (Boltzmann is a script that returns a transaction\u2019s entropy, providing a system of metrics for input\u2013output linkability via blockchain-analysis mapping techniques).<\/p>\n<p>Stonewall is less effective than other techniques such as Confidential Transactions (CTs), but it reduces the amount of information available to blockchain analysts.<\/p>\n<\/div>\n<\/div>\n<div class=\"single_card\">\n<p id=\"card_counter_15\" class=\"card_counter\"><span class=\"card_counter_span\">15<\/span><\/p>\n<p><strong>Where is Stonewall used?<\/strong><\/p>\n<div class=\"card_description\">Stonewall is built into Samourai Wallet as a default feature, though it is not necessarily enabled for every transaction.<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>1 What is CoinJoin? CoinJoin is a technique for anonymising bitcoin transactions. 2 Who created CoinJoin, and when? The CoinJoin protocol was introduced in 2013 by Gregory Maxwell, a Bitcoin Core and Blockstream developer. 3 What problem does CoinJoin solve? Contrary to a common refrain, bitcoin does not offer full anonymity. Analysis of the public blockchain can link transactions to an individual. [\u2026]<\/p>\n","protected":false},"author":1,"featured_media":37328,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"select":"1","news_style_id":"1","cryptorium_level":"2","_short_excerpt_text":"","creation_source":"human_written","_metatest_mainpost_news_update":false,"footnotes":""},"categories":[2113],"tags":[2120,2116,1544,1256],"class_list":["post-37327","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cryptorium","tag-101-anonymity","tag-101-bitcoin","tag-coinjoin","tag-privacy-and-personal-data"],"aioseo_notices":[],"amp_enabled":true,"views":"95","promo_type":"1","layout_type":"1","short_excerpt":"","is_update":"","_links":{"self":[{"href":"https:\/\/forklog.com\/en\/wp-json\/wp\/v2\/posts\/37327","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/forklog.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/forklog.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/forklog.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/forklog.com\/en\/wp-json\/wp\/v2\/comments?post=37327"}],"version-history":[{"count":1,"href":"https:\/\/forklog.com\/en\/wp-json\/wp\/v2\/posts\/37327\/revisions"}],"predecessor-version":[{"id":37329,"href":"https:\/\/forklog.com\/en\/wp-json\/wp\/v2\/posts\/37327\/revisions\/37329"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/forklog.com\/en\/wp-json\/wp\/v2\/media\/37328"}],"wp:attachment":[{"href":"https:\/\/forklog.com\/en\/wp-json\/wp\/v2\/media?parent=37327"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/forklog.com\/en\/wp-json\/wp\/v2\/categories?post=37327"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/forklog.com\/en\/wp-json\/wp\/v2\/tags?post=37327"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}