Know your Samourai — Ricochet

Ricochet is a feature that allows users to put a form of "distance" between two UTXOs. It is a very simple procedure, developed to respond to a type of equally very simple heuristic that is sometimes used by chain analysis tools.

Ricochet Visualization

ricochet green

The payor (blue and green circle on the left) and the payee (small square far right) are separated by 4 extra transactions than they otherwise would be under a direct payment.

Know your Samourai is a series of articles diving head first into Samourai, a bitcoin wallet focused on privacy. The articles are aimed at chewing through one by one the set of features the wallet offers from a curious user perspective. We do things like following UTXOs through a Ricochet transaction, for example, in order to gain deep intuition as to what is happening every time we use the wallet. Check out the introduction article for an overview of the series' goals and the tools recommended to get the most out of it.

A good example of where a ricochet transaction might be useful is how certain exchanges have been known to refuse accepting a payment made with a utxo that has proximity to a coinjoin. The term proximity here is meant to be interpreted as "the number of transactions done between the payment transaction and the coinjoin transaction". Because going back into UTXO histories is computationally costly, chain analysis tools only go so far back. The goal of ricochet is to put just a few more transactions between the payor and the payee than would be investigated by most chain analysis tools.

Take for example the situation where a chain analysis tool would flag a payment as being troublesome if it was 1 step removed from a known address it considered tainted for whatever reason. If you had recieved payment from that address and send that UTXO to an exchange, the chain analysis tool they use would (1) ensure your UTXO is not tainted, and (2) look at the UTXO it came from and see if that UTXO is tainted. In this case it would be, and your payment would be flagged as non valid.

tainted_utxo -> your_utxo -> exchange

But again, going back into every UTXO history is resource intensive; understanding this, samourai plays on that weakness and allows you to simply send your payment from one address to another a few times in a row, in effect creating hops between your initial utxo and the one that the exchange will recieve.

tainted_utxo -> your_utxo -> hop1 -> hop2 -> hop3 -> hop4 -> exchange

Now a chain analysis tool going back only, say, 3 hops, will not find anything tainted about any of the utxos on the chain leading up to your payment.

Ricochet in Practice

Let us follow a whole ricochet set of transactions (should we call them ricochets?) from top to bottom using blockchain exploration tools. Note that all   blocks  ,   transactions  , and   addresses   are clickable links; use them to follow along.

Our initial UTXO is output 0 of transaction   442a   with address   9t70  .

Initial Transaction

Transaction   8fcd   is the initiating transaction; it spends utxo   9t70  , with final payment target of   3qk9  .

Initial Transaction (8fcd)


The transaction breaks into 3 outputs: (0) change, (1) Samourai Ricochet fee, (2) payment.

We see that the transaction is part of block   625,193  , with 1 input that spends to 3 outputs: the change address   0dd0   , the Samourai fee (0.002 btc) for Ricochet   3lfz   (notice the 386 transactions to that address), and the first hop   lsya   . 1,478 satoshis are paid in miner fees.

Hop 1

We follow the   lsya   utxo to see where it goes. It is unlocked in transaction   7a65  , which is part of the same block (625,193), and has a single output spent to address   pq7h  . 1,114 satoshis are paid in miner fees.

Hop 1: Transaction 7a65

hop 1

This transaction is the simplest type: 1 input to 1 output. Fully deterministic.

Hop 2

Hop 2 follows the same pattern as hop 1. Transaction   c641   unlocks utxo   pq7h   and spends it to utxo   zaky  , always in the same block (625,193). 1,114 satoshis are paid in miner fees.

Hop 3

Hop 3 follows the same pattern as the previous hops. Transaction   bdce   unlocks utxo   zaky   and spends it to utxo   hll0  , always in the same block (625,193). 1,114 satoshis are paid in miner fees.

Hop 4

Hop 4 is the final hop; it will spend to our initial target address (the payee we ultimately wanted to send bitcoin to). Transaction   7d1f   unlocks utxo   hll0   and spends it to utxo   3qk9  , always in the same block (625,193). 1,114 satoshis are paid in miner fees.

Ricochet Visualization

ricochet annotated

Full ricochet transaction series.

UX and Staggered Delivery

Once in your Send screen, use the ricochet toggle button to turn your regular send into a ricochet send.

Send Screen

ricochet screenshot

The ricochet toggle is under the Privacy Addons section of your Send screen.

Notice that the transactions we explored above were all broadcasted at the same time and included in the same block. Samourai offers the option to stagger each transaction into their own block by waiting for the first hop to be mined before broadasting the second hop, and so on. This increases privacy protection one step further by working against tools that would incorporate time correlations in their analysis. It is offered at no extra cost, and should be your default ricochet type unless you are in a time crunch.

02 Apr, 2020